You are on page 1of 28


com aVs997 techfamily


Distributed Programming With ® Inferno
Larry Rau Member of Technical Staff Inferno Network Software Solutions Lucent Technologies, Inc


The Inferno OS

• Lightweight OS for networked devices
– portable -- StrongARM, PowerPC, x86, MIPS, SPARC. – Integrated DIS™ VM -- supports portable machine independent code modules. – Provides “distributed computing” capability through Namespace and Styx™ Technologies – Authentication and Encryption between nodes.

Distributed Computing Capabilities Inferno® • The Inferno OS is built around a unique method of distributed computing – All resources represented as files – A dynamically adjustable namespace – The Styx™ file access protocol 3 .

4 .Inferno File Systems Inferno® • Inferno views virtually everything as a file system – network interface: /dev/tcp. /dev/random. /dev/time. – process information: /prog – window system: /dev/draw – information: /dev/user. /dev/udp.. /dev/sysname...….

Example: TCP Interface Inferno® Access a TCP/IP network by manipulating the following files: puck$ ls /net/tcp/0 /net/tcp/0/ctl /net/tcp/0/data /net/tcp/0/listen /net/tcp/0/local /net/tcp/0/remote /net/tcp/0/status 5 .

Example: /dev/draw Inferno® Access to the Inferno windowing system is via another file system: puck$ ls /dev/draw/2 /dev/draw/2/ctl /dev/draw/2/data /dev/draw/2/refresh 6 .

Other existing file systems Inferno® • telfs: interface to telephony device • Mfs: message store file system • asr: interface to speech recognition 7 .

Why file systems? Inferno® • Simple concept – familiar access methods: open. write. • language neutral access • Easy to distribute 8 . read. etc.

resources).The Inferno Namespace Inferno® •The Inferno Namespace is a hierarchical collection of files (I.e. 9 . •Every process accesses its resources via its own namespace – can inherit from parent – share with other processes •Local and remote resources are bound into the namespace.

Primary Namespace Operations Inferno® • BIND • MOUNT • EXPORT 10 .

The BIND Namespace Operation Inferno® • Attaches local resources to the namespace • Moves a resource within the namespace • Can hide resources by binding over • Binding a directory can result in a Union Directory 11 .

• When binding you have the option of adding before or after the current contents 12 .Union Directories Inferno® • A directory whose contents are a combination of the source and destination • Directories can be stacked where the contents of one hide the contents of others.

. . .. 13 .. ... Y F1 F2 F3 Z F2 A1 B1 ..Union Directories Inferno® / tmp A F1 A1 A2 .....

.Union Directories Inferno® / A F1 A1 A2 Z F2 A1 B1 bind -b /tmp/Y /A bind -a /tmp/Z /A ... .. .. A F1 A1 F2 A2 F3 Y 14 ..

The MOUNT Namespace Operation Inferno® • Attaches a remote file system to the namespace • Equivalent to a remote attach to obtain the remote file system’s root followed by a BIND operation • Mount initiates a Styx connection over an established network connection • Net connection can be authenticated 15 .

Mounting A Remote Node Inferno® • Establish a network connection: TCP. Serial. etc. • [optional] Mutually authenticate the connection and establish session keys for encryption of all communication • Establish a Styx session: this obtains the root of the remote file system Node1 Node2 16 . ATM.

The EXPORT Namespace Operation Inferno® • Present the current namespace to remote clients • Listens on a network connection for a Styx session request • Accepts the mount by providing access to the root of the namespace • Continually responds to client file requests via the Styx protocol 17 .

etc • [optional] Perform mutual authentication and encryption key setup • Wait for Styx session request Node1 Node2 18 .Exporting a Namespace Inferno® • Obtain a network connection: TCP Listen.

e.Mini-Summary Inferno® • Represent all local resources as file systems • Namespace provides a single. hierarchical view of all resources (I. file systems) • Remote resources attached to the namespace 19 . dynamically configured.

local.Writing Applications Inferno® • Applications access resources by accessing files within the namespace • Use familiar file access functions • Access is independent of how the files got in the namespace -. who cares! 20 .remote.

e.Writing File Systems Inferno® • Inferno drivers: C modules linked with the kernel • Limbo programs using the file2chan() system call – makes use of srv device (I. file system) • Limbo written Synthetic File Systems • InfernoSpaces – Java class library – C library 21 .

e.Application Advantages Inferno® • Applications can assume location of resources: open(“/x/y”. an administrative chore) • No explicit networking code required • Allows for network independent distributed computing 22 .…) • Resources can be configured prior to running the applications -.(I.

The Styx™ Protocol Inferno® • A simple file access protocol • Message passing: transmit-reply (a Styx Transaction) • Synchronous • 13 message pairs + 1 error reply • Assumes a reliable transport • Allows overlapped transactions • Mostly fixed length messages 23 .

Styx Message Structure Inferno® Indicates message type: initial transmission (T-message) or reply message (R-message) Unique identifier used to track commands Unsigned integer that represents “current” file Message specific data type tag fid Contents 24 .

Styx Transactions Inferno® • • • • • • • NOP FLUSH CLONE WALK OPEN CREATE READ • • • • • • WRITE CLUNK REMOVE STAT WSTAT ATTACH 25 .

Summary Inferno® Everything is a file + A method to organize files + A remote file access protocol = A Distributed Programming Model 26 .

How is it being used Inferno® • Telephony – Call setup – Device control • Text to Speech • Network Gateways 27 .

Questions Inferno® ??? 28 .