c96d618a5d
Signed-off-by: John DeNisco <jdenisco@cisco.com> Change-Id: Ifb558171f8976a721703e74afea997d006273b5f Signed-off-by: Dave Barach <dave@barachs.net>
44 lines
1.9 KiB
ReStructuredText
44 lines
1.9 KiB
ReStructuredText
.. _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.
|