Trisha Shetty (Editor)

9P (protocol)

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit

9P (or the Plan 9 Filesystem Protocol or Styx) is a network protocol developed for the Plan 9 from Bell Labs distributed operating system as the means of connecting the components of a Plan 9 system. Files are key objects in Plan 9. They represent windows, network connections, processes, and almost anything else available in the operating system.

Contents

9P was revised for the 4th edition of Plan 9 under the name 9P2000 that contained various fundamental improvements. The latest version of the Inferno operating system also uses 9P2000. The Inferno file protocol was originally called Styx, but technically it has always been a variant of 9P.

A server implementation of 9P for Unix, called u9fs, is included in the Plan 9 distribution. A 9P OS X client kernel extension is provided by Mac9P. A kernel client driver for Linux is part of the v9fs project. 9P and its derivatives have also found application in embedded environments, such as the Styx on a Brick project.

Server applications

Many of Plan 9's applications take the form of 9P file servers. Examples include:

  • acme: a text editor/development environment
  • rio: the Plan 9 windowing system
  • plumber: interprocess communication
  • ftpfs: an FTP client which presents the files and directories on a remote FTP server in the local namespace
  • wikifs: a wiki editing tool which presents a remote wiki as files in the local namespace
  • webfs: a file server that retrieves data from URLs and presents the contents and details of responses as files in the local namespace
  • Implementation

    9P sends the following messages between clients and servers. These messages correspond to the entry points in the Plan 9 vfs layer that any 9P server must implement.

    version
    Negotiate protocol version
    error
    Return an error
    flush
    Abort a message
    auth, attach
    Establish a connection
    walk
    Descend a directory hierarchy
    create, open
    Prepare a fid for I/O on an existing or new file
    read, write
    Transfer data from and to a file
    clunk
    Forget about a fid
    remove
    Remove a file from a server
    stat, wstat
    Inquire or change file attributes

    References

    9P (protocol) Wikipedia