summaryrefslogtreecommitdiffstats
path: root/docs/overview/whatisvpp
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/overview/whatisvpp
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/overview/whatisvpp')
-rw-r--r--docs/overview/whatisvpp/dataplane.rst36
-rw-r--r--docs/overview/whatisvpp/developer.rst26
-rw-r--r--docs/overview/whatisvpp/extensible.rst39
-rw-r--r--docs/overview/whatisvpp/fast.rst18
-rw-r--r--docs/overview/whatisvpp/index.rst27
-rw-r--r--docs/overview/whatisvpp/what-is-vector-packet-processing.rst73
6 files changed, 0 insertions, 219 deletions
diff --git a/docs/overview/whatisvpp/dataplane.rst b/docs/overview/whatisvpp/dataplane.rst
deleted file mode 100644
index daf2124158d..00000000000
--- a/docs/overview/whatisvpp/dataplane.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-.. _packet-processing:
-
-===================
-Packet Processing
-===================
-
-This section identifies different components of packet processing and describes their benefits:
-
-* Layer 2 - 4 Network Stack
-
- * Fast lookup tables for routes, bridge entries
- * Arbitrary n-tuple classifiers
- * Control Plane, Traffic Management and Overlays
-
-* `Linux <https://en.wikipedia.org/wiki/Linux>`_ and `FreeBSD <https://en.wikipedia.org/wiki/FreeBSD>`_ support
-
- * Wide support for standard Operating System Interfaces such as AF_Packet, Tun/Tap & Netmap.
-
-* Wide network and cryptographic hardware support with `DPDK <https://www.dpdk.org/>`_.
-* Container and Virtualization support
-
- * Para-virtualized interfaces; Vhost and Virtio
- * Network Adapters over PCI passthrough
- * Native container interfaces; MemIF
-
-* Universal Data Plane: one code base, for many use cases
-
- * Discrete appliances; such as `Routers <https://en.wikipedia.org/wiki/Router_(computing)>`_ and `Switches <https://en.wikipedia.org/wiki/Network_switch>`_.
- * `Cloud Infrastructure and Virtual Network Functions <https://en.wikipedia.org/wiki/Network_function_virtualization>`_
- * `Cloud Native Infrastructure <https://www.cncf.io/>`_
- * The same binary package for all use cases.
-
-* Out of the box production quality, with thanks to `CSIT <https://wiki.fd.io/view/CSIT#Start_Here>`_.
-
-For more information, please see :ref:`features` for the complete list.
-
diff --git a/docs/overview/whatisvpp/developer.rst b/docs/overview/whatisvpp/developer.rst
deleted file mode 100644
index 040762b01ba..00000000000
--- a/docs/overview/whatisvpp/developer.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-.. _developer-friendly:
-
-==================
-Developer Friendly
-==================
-
-This section describes the different ways VPP is friendly to developers:
-
-* Extensive runtime counters; throughput, `intructions per cycle <https://en.wikipedia.org/wiki/Instructions_per_cycle>`_, errors, events etc.
-* Integrated pipeline tracing facilities
-* Multi-language API bindings
-* Integrated command line for debugging
-* Fault-tolerant and upgradable
-
- * Runs as a standard user-space process for fault tolerance, software crashes seldom require more than a process restart.
- * Improved fault-tolerance and upgradability when compared to running similar packet processing in the kernel, software updates never require system reboots.
- * Development experience is easier compared to similar kernel code
- * Hardware isolation and protection (`iommu <https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit>`_)
-
-* Built for security
-
- * Extensive white-box testing
- * Image segment base address randomization
- * Shared-memory segment base address randomization
- * Stack bounds checking
- * Static analysis with `Coverity <https://en.wikipedia.org/wiki/Coverity>`_
diff --git a/docs/overview/whatisvpp/extensible.rst b/docs/overview/whatisvpp/extensible.rst
deleted file mode 100644
index e7762d71312..00000000000
--- a/docs/overview/whatisvpp/extensible.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-.. _extensible:
-
-=============================
-Extensible and Modular Design
-=============================
-
-* Pluggable, easy to understand & extend
-* Mature graph node architecture
-* Full control to reorganize the pipeline
-* Fast, plugins are equal citizens
-
-**Modular, Flexible, and Extensible**
-
-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.
diff --git a/docs/overview/whatisvpp/fast.rst b/docs/overview/whatisvpp/fast.rst
deleted file mode 100644
index 9e9e314809c..00000000000
--- a/docs/overview/whatisvpp/fast.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-.. _fast:
-
-================================
-Fast, Scalable and Deterministic
-================================
-
-This section describes the ways that VPP is fast, scalable and deterministic:
-
-* `Continuous integration and system testing (CSIT) <https://wiki.fd.io/view/CSIT#Start_Here>`_
-
- * Including continuous & extensive, latency and throughput testing
-
-* Layer 2 Cross Connect (L2XC), typically achieve 15+ Mpps per core.
-* Tested to achieve **zero** packet drops and ~15µs latency.
-* Performance scales linearly with core/thread count
-* Supporting millions of concurrent lookup tables entries
-
-Please see :ref:`performance` for more information.
diff --git a/docs/overview/whatisvpp/index.rst b/docs/overview/whatisvpp/index.rst
deleted file mode 100644
index f8cb25dfd1e..00000000000
--- a/docs/overview/whatisvpp/index.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-.. _whatisvpp:
-
-=========================================
-What is VPP?
-=========================================
-
-FD.io's Vector Packet Processing (VPP) technology is a :ref:`fast`,
-:ref:`packet-processing` stack that runs on commodity CPUs. It provides
-out-of-the-box production quality switch/router functionality and much, much
-more. FD.io VPP is at the same time, an :ref:`extensible` and
-:ref:`developer-friendly` framework, capable of boot-strapping the development
-of packet-processing applications. The benefits of FD.io VPP are its high
-performance, proven technology, its modularity and flexibility, integrations and
-rich feature set.
-
-FD.io VPP is vector packet processing software, to learn more about what that
-means, see the :ref:`what-is-vector-packet-processing` section.
-
-For more detailed information on FD.io features, see the following sections:
-
-.. toctree::
- :maxdepth: 1
-
- dataplane.rst
- fast.rst
- developer.rst
- extensible.rst
diff --git a/docs/overview/whatisvpp/what-is-vector-packet-processing.rst b/docs/overview/whatisvpp/what-is-vector-packet-processing.rst
deleted file mode 100644
index 50a5bab8af1..00000000000
--- a/docs/overview/whatisvpp/what-is-vector-packet-processing.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-:orphan:
-
-.. _what-is-vector-packet-processing:
-
-=================================
-What is vector packet processing?
-=================================
-
-FD.io VPP is developed using vector packet processing concepts, as opposed to
-scalar packet processing, these concepts are explained in the following sections.
-
-Vector packet processing is a common approach among high performance `Userspace
-<https://en.wikipedia.org/wiki/User_space>`_ packet processing applications such
-as developed with FD.io VPP and `DPDK
-<https://en.wikipedia.org/wiki/Data_Plane_Development_Kit>`_. The scalar based
-approach tends to be favoured by Operating System `Kernel
-<https://en.wikipedia.org/wiki/Kernel_(operating_system)>`_ Network Stacks and
-Userspace stacks that don't have strict performance requirements.
-
-**Scalar Packet Processing**
-
-A scalar packet processing network stack typically processes one packet at a
-time: an interrupt handling function takes a single packet from a Network
-Interface, and processes it through a set of functions: fooA calls fooB calls
-fooC and so on.
-
-.. code-block:: none
-
- +---> fooA(packet1) +---> fooB(packet1) +---> fooC(packet1)
- +---> fooA(packet2) +---> fooB(packet2) +---> fooC(packet2)
- ...
- +---> fooA(packet3) +---> fooB(packet3) +---> fooC(packet3)
-
-
-Scalar packet processing is simple, but inefficient in these ways:
-
-* When the code path length exceeds the size of the Microprocessor's instruction
- cache (I-cache), `thrashing
- <https://en.wikipedia.org/wiki/Thrashing_(computer_science)>`_ occurs as the
- Microprocessor is continually loading new instructions. In this model, each
- packet incurs an identical set of I-cache misses.
-* The associated deep call stack will also add load-store-unit pressure as
- stack-locals fall out of the Microprocessor's Layer 1 Data Cache (D-cache).
-
-**Vector Packet Processing**
-
-In contrast, a vector packet processing network stack processes multiple packets
-at a time, called 'vectors of packets' or simply a 'vector'. An interrupt
-handling function takes the vector of packets from a Network Interface, and
-processes the vector through a set of functions: fooA calls fooB calls fooC and
-so on.
-
-.. code-block:: none
-
- +---> fooA([packet1, +---> fooB([packet1, +---> fooC([packet1, +--->
- packet2, packet2, packet2,
- ... ... ...
- packet256]) packet256]) packet256])
-
-This approach fixes:
-
-* The I-cache thrashing problem described above, by amortizing the cost of
- I-cache loads across multiple packets.
-
-* The inefficiencies associated with the deep call stack by receiving vectors
- of up to 256 packets at a time from the Network Interface, and processes them
- using a directed graph of node. The graph scheduler invokes one node dispatch
- function at a time, restricting stack depth to a few stack frames.
-
-The further optimizations that this approaches enables are pipelining and
-prefetching to minimize read latency on table data and parallelize packet loads
-needed to process packets.
-