vpp/docs/aboutvpp/extensible.rst
Nathan Skrzypczak 9ad39c026c docs: better docs, mv doxygen to sphinx
This patch refactors the VPP sphinx docs
in order to make it easier to consume
for external readers as well as VPP developers.

It also makes sphinx the single source
of documentation, which simplifies maintenance
and operation.

Most important updates are:

- reformat the existing documentation as rst
- split RELEASE.md and move it into separate rst files
- remove section 'events'
- remove section 'archive'
- remove section 'related projects'
- remove section 'feature by release'
- remove section 'Various links'
- make (Configuration reference, CLI docs,
  developer docs) top level items in the list
- move 'Use Cases' as part of 'About VPP'
- move 'Troubleshooting' as part of 'Getting Started'
- move test framework docs into 'Developer Documentation'
- add a 'Contributing' section for gerrit,
  docs and other contributer related infos
- deprecate doxygen and test-docs targets
- redirect the "make doxygen" target to "make docs"

Type: refactor

Change-Id: I552a5645d5b7964d547f99b1336e2ac24e7c209f
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2021-10-13 23:22:32 +00:00

44 lines
1.9 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _extensible:
===========================
The Packet Processing Graph
===========================
At the core of the FD.io VPP design is the **Packet Processing 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.