diff --git a/docs/imgs/stellar-high-level-design.png b/docs/imgs/stellar-high-level-design.png new file mode 100644 index 0000000..b9815d9 Binary files /dev/null and b/docs/imgs/stellar-high-level-design.png differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..49278c0 --- /dev/null +++ b/readme.md @@ -0,0 +1,16 @@ +# Stellar: A stateful network functions development platform + +A stateful network function could be a firewall, a load balancer, or an IDS. + +## Architecture + +The stellar components are: + +- **Packet IO** built an abstraction of network IO devices. +- **Session Manager** has a hash table for tracking sessions. The caller feeds packets to the session manager and may return triggered session events. +- **Plugin Manager** loads C/Lua plugins and manages per-plugin, per-session context. When the caller feeds an event to the plugin manager, it invokes plugin callbacks. +- **Protocol Decoders** are libraries that parse and extract information from the packet payload. +- **Active Queue Management** is queue management algorithm libraries that schedule packets by buffering, forwarding, marking, or dropping. A plugin creates a queue instance and enqueues packets as its needs. + - Question: Who consumes the dequeue events? + +![stellar-high-level-design](./docs/imgs/stellar-high-level-design.png) \ No newline at end of file