blob: 1df3b9fbd2faeec7b6e947a05676f2e9de8253bc [file] [log] [blame]
John DeNisco06dcd452018-07-26 12:45:10 -04001.. _extensible:
2
John DeNiscoc96d6182019-11-06 10:58:28 -08003===========================
4The Packet Processing Graph
5===========================
6
7At the core of the FD.io VPP design is the **Packet Procerssing Graph**
8
9This makes the software:
John DeNisco06dcd452018-07-26 12:45:10 -040010
11* Pluggable, easy to understand & extend
12* Mature graph node architecture
13* Full control to reorganize the pipeline
14* Fast, plugins are equal citizens
15
John DeNisco06dcd452018-07-26 12:45:10 -040016The FD.io VPP packet processing pipeline is decomposed into a packet processing
17graph’. This modular approach means that anyone can plugin new graph
Paul Vinciguerra7fa3dd22019-10-27 17:28:10 -040018nodes. This makes VPP easily extensible and means that plugins can be
John DeNisco06dcd452018-07-26 12:45:10 -040019customized for specific purposes. VPP is also configurable through it's
20Low-Level API.
21
22.. figure:: /_images/VPP_custom_application_packet_processing_graph.280.jpg
23 :alt: Extensible, modular graph node architecture?
24
25 Extensible and modular graph node architecture.
26
27At runtime, the FD.io VPP platform assembles a vector of packets from RX rings,
28typically up to 256 packets in a single vector. The packet processing graph is
29then applied, node by node (including plugins) to the entire packet vector. The
30received packets typically traverse the packet processing graph nodes in the
31vector, when the network processing represented by each graph node is applied to
32each packet in turn. Graph nodes are small and modular, and loosely
33coupled. This makes it easy to introduce new graph nodes and rewire existing
34graph nodes.
35
36Plugins are `shared libraries <https://en.wikipedia.org/wiki/Library_(computing)>`_
37and are loaded at runtime by VPP. VPP find plugins by searching the plugin path
38for libraries, and then dynamically loads each one in turn on startup.
39A plugin can introduce new graph nodes or rearrange the packet processing graph.
40You can build a plugin completely independently of the FD.io VPP source tree,
41which means you can treat it as an independent component.
John DeNiscoc96d6182019-11-06 10:58:28 -080042
43For more on the network stack press next.