summaryrefslogtreecommitdiffstats
path: root/docs/whatisvpp/extensible.rst
diff options
context:
space:
mode:
authorJohn DeNisco <jdenisco@cisco.com>2019-11-06 10:58:28 -0800
committerDave Barach <dave@barachs.net>2019-11-06 16:15:49 -0500
commitc96d618a5dd96e3a40d59860d2cdb9d5c6b71d11 (patch)
tree74a19b9b8364bf56dceced8ec982c6fbb7ddb8e4 /docs/whatisvpp/extensible.rst
parent340c15c6ed34ce60c821b5260fec3eb11d65dcb7 (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.rst43
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.