The [[Plan 9]] remote file protocol. Modern implementations include 9p2000.L, which is a [[Linux]]-specific extension on the base 9p2000 version of the protocol. Previous versions include 9p2000.u extension for [[UNIX]] systems, 9p2000 from [[Plan 9]] 4th Edition, and the original 9p protocol from earlier editions of Plan9. On [[Inferno]], it is called "Styx", but is **not** substantially different from 9p2000. [Wikipedia](https://en.wikipedia.org/wiki/9P_(protocol)) # Implementations The current 9p2000.L implementation is maintained [here](https://github.com/chaos/diod) by LLNL. It is primarily written in [[C]]. The protocol itself is describe [here](https://github.com/chaos/diod/blob/master/protocol.md). Messages are binary and represented in [[Endian|Little Endian]] order on the wire. [Rust Crate: ninep](https://crates.io/crates/ninep). ![[Related.base]] # Performance Characteristics 9P is a pretty chatty protocol with a maximum of 4GB message sizes (in practices, 64kb is more common), no pipelining, and semantics that are unfavorable to performant systems. This makes 9P a poor choice for systems that need high throughput. Some comments on [9p performance can be found here.](https://github.com/Harvey-OS/harvey/issues/18)