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)