diff options
author | John DeNisco <jdenisco@cisco.com> | 2019-11-06 10:58:28 -0800 |
---|---|---|
committer | Dave Barach <dave@barachs.net> | 2019-11-06 16:15:49 -0500 |
commit | c96d618a5dd96e3a40d59860d2cdb9d5c6b71d11 (patch) | |
tree | 74a19b9b8364bf56dceced8ec982c6fbb7ddb8e4 /docs/whatisvpp/extensible.rst | |
parent | 340c15c6ed34ce60c821b5260fec3eb11d65dcb7 (diff) |
docs: Rewrite the what is VPP (first) section, also fix the build
Signed-off-by: John DeNisco <jdenisco@cisco.com>
Change-Id: Ifb558171f8976a721703e74afea997d006273b5f
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'docs/whatisvpp/extensible.rst')
-rw-r--r-- | docs/whatisvpp/extensible.rst | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/docs/whatisvpp/extensible.rst b/docs/whatisvpp/extensible.rst new file mode 100644 index 00000000000..1df3b9fbd2f --- /dev/null +++ b/docs/whatisvpp/extensible.rst @@ -0,0 +1,43 @@ +.. _extensible: + +=========================== +The Packet Processing Graph +=========================== + +At the core of the FD.io VPP design is the **Packet Procerssing Graph** + +This makes the software: + +* Pluggable, easy to understand & extend +* Mature graph node architecture +* Full control to reorganize the pipeline +* Fast, plugins are equal citizens + +The FD.io VPP packet processing pipeline is decomposed into a ‘packet processing +graph’. This modular approach means that anyone can ‘plugin’ new graph +nodes. This makes VPP easily extensible and means that plugins can be +customized for specific purposes. VPP is also configurable through it's +Low-Level API. + +.. figure:: /_images/VPP_custom_application_packet_processing_graph.280.jpg + :alt: Extensible, modular graph node architecture? + + Extensible and modular graph node architecture. + +At runtime, the FD.io VPP platform assembles a vector of packets from RX rings, +typically up to 256 packets in a single vector. The packet processing graph is +then applied, node by node (including plugins) to the entire packet vector. The +received packets typically traverse the packet processing graph nodes in the +vector, when the network processing represented by each graph node is applied to +each packet in turn. Graph nodes are small and modular, and loosely +coupled. This makes it easy to introduce new graph nodes and rewire existing +graph nodes. + +Plugins are `shared libraries <https://en.wikipedia.org/wiki/Library_(computing)>`_ +and are loaded at runtime by VPP. VPP find plugins by searching the plugin path +for libraries, and then dynamically loads each one in turn on startup. +A plugin can introduce new graph nodes or rearrange the packet processing graph. +You can build a plugin completely independently of the FD.io VPP source tree, +which means you can treat it as an independent component. + +For more on the network stack press next. |