.\" mk slides.show .de IT .if !"\\$1"" .ds BX \\$1 .if "\\$1"" .ds BX \(bu .IP \\*(BX .. .de SS .ds CH \s+2\f3\\$1\fP\s-2 .bp .LP .na .. .nr PO 0.5i .nr HM 1i .nr PS 12 .nr VS 14p .nr PD 6p .nr LL 6.5i .ds CH " .pl 15c .ds RF " .TL The 9P Distributed file system .AU Uriel .AI uriel (at) cat-v.org .PP .SS "9P Designed to make access to all kinds of distributed resources transparent over the network by using a simple and well defined protocol based on the traditional Unix file operatoins: open/read/write/... .IT Derived from the first Unix network filesystem in Research Unix 8th Edition released in 1985 (not related to Sun NFS!) .IT Fundamental part of Plan 9, started by Ken Thompson and Rob Pike in 1985 .IT Used in Inferno .IT Latest version codename 9P2000 released (2003) .IT Spread to other systems: v9fs in the Linux kernel, Plan 9 from User Space ported to most Unix systems, Python and java implementations released. .SS "Design Extremely simple and easy to implement, only 14 basic operations. Flexible support for any authentication and encryption mechanism transparently for both the client and server. Can run over any transport that provides reliable in-order delivery: TCP/IP, IL/IP, RUDP, PPP, PCI Bus, serial port, shared memory, others... Multiple implementations in various languages for most existing operating systems. .SS "9P in Plan 9 and Inferno .IT All resources, from the window system to the Ip stack have file system interfaces .IT Allows transparent access to all those resources over the network .IT Well deffined and well understood semantics and security mechanisms .IT Only ~30 syscalls. .IT No ioctl! .IT No root 'superuser'(and no suid!) .IT No need for NAT or port forwarding, just import /net from your gateway to your private namespace! .IT Remote debugging by importing /proc and running the debugger as usual. .IT Some 9P servers are only 'filters', eg., iostats wraps a namespace while gathering IO statistics. .IT Private namespaces provide simple and very reliable sandboxing. .SS "Other Uses .IT xcpu .IT Inferno Grid .IT Wikifs .IT others... .SS "Numerous implementations .IT Plan 9 from Bell Labs http://plan9.bell-labs.com/plan9/ .IT Plan 9 from User Space, for most Unix systems http://www.plan9.us .IT Inferno (under the name Styx) http://www.vitanuova.com/inferno/ .IT Java: Jstyx http://jsyx.sf.net .IT v9fs, part of the Linux kernel http://v9fs.sf.net .IT libixp2, part of the WMII project http://www.wmii.de/index.php/WMII/libixp .IT Python: py9p .IT Styx-on-a-Brick (Lego Mindstorms) .IT others...