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>
This commit is contained in:

committed by
Dave Barach

parent
340c15c6ed
commit
c96d618a5d
@ -41,6 +41,7 @@ ifeq ($(OS_ID),ubuntu)
|
||||
else ifneq ("$(wildcard /etc/redhat-release)","")
|
||||
@sudo yum install $(CONFIRM) $(DOC_RPM_DEPENDS)
|
||||
endif
|
||||
@python3 -m pip install sphinxcontrib-spelling
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" -W -b spelling $(O)
|
||||
# Disable spell checking for now
|
||||
# @python3 -m pip install sphinxcontrib-spelling
|
||||
# @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" -W -b spelling $(O)
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
@ -4,6 +4,6 @@
|
||||
About
|
||||
=====
|
||||
|
||||
**VPP Version:** 20.01-rc0~171-g1146ff4
|
||||
**VPP Version:** 20.01-rc0~594-g340c15c6e
|
||||
|
||||
**Built on:** Wed Sep 11 12:59:45 GMT 2019
|
||||
**Built on:** Wed Nov 6 18:47:36 GMT 2019
|
||||
|
@ -18,14 +18,14 @@
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = u'Vector Packet Processor'
|
||||
project = u'The Vector Packet Processor'
|
||||
copyright = u'2018, Linux Foundation'
|
||||
author = u'John DeNisco'
|
||||
|
||||
# The short X.Y version
|
||||
version = u'master'
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = u'01'
|
||||
release = u'20.01'
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
@ -3,25 +3,35 @@
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
#########
|
||||
FD.io VPP
|
||||
#########
|
||||
#########################################
|
||||
What is the Vector Packet Processor (VPP)
|
||||
#########################################
|
||||
|
||||
FD.io Vector Packet Processing (VPP) is a fast, scalable layer 2-4
|
||||
multi-platform network stack. VPP supports integration with OpenStack
|
||||
and Kubernetes. Network management features include configuration,
|
||||
counters and sampling. Development tools include plugin extensibility,
|
||||
high-performance event-logging, multiple kinds of packet tracing;
|
||||
debug images include extensive consistency checking.
|
||||
FD.io's Vector Packet Processor (VPP) is a fast, scalable layer 2-4
|
||||
multi-platform network stack. It runs in `Linux Userspace <https://en.wikipedia.org/wiki/User_space>`_
|
||||
on multiple architectures including x86, ARM, and Power architectures.
|
||||
VPP is built using the `Dataplane Development Kit (DPDK) <https://en.wikipedia.org/wiki/Data_Plane_Development_Kit>`_.
|
||||
|
||||
Use-cases include vSwitch, vRouter, Gateways, Firewalls and Load
|
||||
Balancers, to name several. Out of the box, VPP works as a software
|
||||
development kit or an appliance.
|
||||
VPP benefits include high performance, proven technology, modularity,
|
||||
and a rich feature set.
|
||||
|
||||
VPP supports integration with OpenStack and Kubernetes. Network
|
||||
management features include configuration, counters, sampling and
|
||||
more. For developers, VPP includes plugin extensibility,
|
||||
high-performance event-logging, and multiple kinds of packet
|
||||
tracing. Development debug images include complete symbol tables, and
|
||||
extensive consistency checking.
|
||||
|
||||
Some VPP Use-cases include vSwitches, vRouters, Gateways, Firewalls
|
||||
and Load Balancers, to name a few. Out of the box, VPP can work as a
|
||||
software development kit or an appliance.
|
||||
|
||||
For more details click on the links below or press next.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
overview/index
|
||||
whatisvpp/index.rst
|
||||
gettingstarted/index
|
||||
links/index
|
||||
usecases/index
|
||||
|
@ -1,12 +0,0 @@
|
||||
.. _cp:
|
||||
|
||||
=============
|
||||
Control Plane
|
||||
=============
|
||||
|
||||
This section identifies the features associated with Control Plane:
|
||||
|
||||
* DHCP client/proxy
|
||||
|
||||
* DHCPv6 Proxy
|
||||
|
@ -1,33 +0,0 @@
|
||||
.. _dev:
|
||||
|
||||
=======
|
||||
Devices
|
||||
=======
|
||||
|
||||
Hardware
|
||||
--------
|
||||
* `DPDK <https://www.dpdk.org/>`_
|
||||
|
||||
* `Network Interfaces <https://doc.dpdk.org/guides/nics/>`_
|
||||
* `Cryptographic Devices <https://doc.dpdk.org/guides/cryptodevs/>`_
|
||||
|
||||
* `Open Data Plane <https://github.com/FDio/odp4vpp>`_
|
||||
* `Intel Ethernet Adaptive Virtual Function <https://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/ethernet-adaptive-virtual-function-hardware-spec.pdf>`_
|
||||
|
||||
Operating System
|
||||
----------------
|
||||
* `Netmap <http://info.iet.unipi.it/~luigi/netmap/>`_
|
||||
* `af_packet <http://man7.org/linux/man-pages/man7/packet.7.html>`_
|
||||
* Tap V2 (FastTap)
|
||||
|
||||
Virtualization:
|
||||
---------------
|
||||
* SSVM
|
||||
* Vhost / VirtIO
|
||||
|
||||
Containers
|
||||
----------
|
||||
|
||||
* Vhost-user
|
||||
* MemIF
|
||||
|
@ -1,34 +0,0 @@
|
||||
.. _features:
|
||||
|
||||
========
|
||||
Features
|
||||
========
|
||||
|
||||
The table below identifies different features that are associated to VPP. To see more details about a specific feature, just click the hyperlink associated to the feature noted in the table below.
|
||||
|
||||
.. rst-class:: center-align-table
|
||||
|
||||
+-------------------------+-----------+-----------+
|
||||
| :ref:`sdn` | | |
|
||||
+------------+------------+ :ref:`cp` | |
|
||||
| | :ref:`l4` | | |
|
||||
| +------------+-----------+ :ref:`pg` |
|
||||
| :ref:`tun` | :ref:`l3` | | |
|
||||
| +------------+ :ref:`tm` | |
|
||||
| | :ref:`l2` | | |
|
||||
+------------+------------+-----------+-----------+
|
||||
| :ref:`dev` |
|
||||
+-------------------------------------------------+
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
devices.rst
|
||||
integrations.rst
|
||||
trafficmanagement.rst
|
||||
l2.rst
|
||||
l3.rst
|
||||
l4.rst
|
||||
tunnels.rst
|
||||
controlplane.rst
|
||||
plugins.rst
|
@ -1,5 +0,0 @@
|
||||
.. _sdn:
|
||||
|
||||
========================
|
||||
SDN & Cloud Integrations
|
||||
========================
|
@ -1,58 +0,0 @@
|
||||
.. _l2:
|
||||
|
||||
=======
|
||||
Layer 2
|
||||
=======
|
||||
|
||||
This section identifies the features associated with Layer 2:
|
||||
|
||||
MAC Layer
|
||||
---------
|
||||
* Ethernet
|
||||
|
||||
Discovery
|
||||
---------
|
||||
* Cisco Discovery Protocol v2 (CDP)
|
||||
* Link Layer Discovery Protocol (LLDP)
|
||||
|
||||
Link Layer Control Protocol
|
||||
---------------------------
|
||||
* Bit Index Explicit Replication – Link Layer Multi-cast forwarding.
|
||||
* Link Layer Control (LLC) - multiplex protocols over the MAC layer.
|
||||
* Spatial Reuse Protocol (SRP)
|
||||
* High-Level Data Link Control (HDLC)
|
||||
* Logical link control (LLC)
|
||||
* Link Agg Control Protocol (Active/Active, Active/Passive) – 18.04
|
||||
|
||||
Virtual Private Networks
|
||||
------------------------
|
||||
* MPLS
|
||||
|
||||
* MPLS-o-Ethernet – Deep label stacks supported
|
||||
|
||||
* Virtual Private LAN Service (VPLS)
|
||||
* VLAN
|
||||
* Q-in-Q
|
||||
* Tag-rewrite (VTR) - push/pop/Translate (1:1,1:2, 2:1,2:2)
|
||||
* Ethernet flow point Filtering
|
||||
* Layer 2 Cross Connect
|
||||
|
||||
Bridging
|
||||
---------
|
||||
* Bridge Domains
|
||||
* MAC Learning (50k addresses)
|
||||
* Split-horizon group support
|
||||
* Flooding
|
||||
|
||||
ARP
|
||||
---
|
||||
* Proxy
|
||||
* Termination
|
||||
* Bidirectional Forwarding Detection
|
||||
|
||||
Integrated Routing and Bridging (IRB)
|
||||
-------------------------------------
|
||||
* Flexibility to both route and switch between groups of ports.
|
||||
* Bridged Virtual Interface (BVI) Support, allows traffic switched traffic to be routed.
|
||||
|
||||
|
@ -1,57 +0,0 @@
|
||||
.. _l3:
|
||||
|
||||
=======
|
||||
Layer 3
|
||||
=======
|
||||
|
||||
This section identifies the features associated with Layer 3:
|
||||
|
||||
IP Layer
|
||||
--------
|
||||
* ICMP
|
||||
* IPv4
|
||||
* IPv6
|
||||
* IPSEC
|
||||
* Link Local Addressing
|
||||
|
||||
MultiCast
|
||||
---------
|
||||
* Multicast FiB
|
||||
* IGMP
|
||||
|
||||
Virtual Routing and forwarding (VRF)
|
||||
------------------------------------
|
||||
* VRF scaling, thousands of tables.
|
||||
* Controlled cross-VRF lookups
|
||||
|
||||
Multi-path
|
||||
----------
|
||||
* Equal Cost Multi Path (ECMP)
|
||||
* Unequal Cost Multi Path (UCMP)
|
||||
|
||||
IPv4
|
||||
----
|
||||
* ARP
|
||||
* ARP Proxy
|
||||
* ARP Snooping
|
||||
|
||||
IPv6
|
||||
----
|
||||
* Neighbour discovery (ND)
|
||||
* ND Proxy
|
||||
* Router Advertisement
|
||||
* Segment Routing
|
||||
* Distributed Virtual Routing Resolution
|
||||
|
||||
Forwarding Information Base (FIB)
|
||||
---------------------------------
|
||||
|
||||
* Hierarchical FIB
|
||||
* Memory efficient
|
||||
* Multi-million entry scalable
|
||||
* Lockless/concurrent updates
|
||||
* Recursive lookups
|
||||
* Next hop failure detection
|
||||
* Shared FIB adjacencies
|
||||
* Multicast support
|
||||
* MPLS support
|
@ -1,14 +0,0 @@
|
||||
.. _l4:
|
||||
|
||||
=======
|
||||
Layer 4
|
||||
=======
|
||||
|
||||
This section identifies the features associated with Layer 4:
|
||||
|
||||
* Session:
|
||||
- connectionless transports
|
||||
- datagram reception and transmission
|
||||
* TCP: congestion control
|
||||
* UDP: datagram mode
|
||||
* TLS async support
|
@ -1,9 +0,0 @@
|
||||
.. _pg:
|
||||
|
||||
=======
|
||||
Plugins
|
||||
=======
|
||||
|
||||
This section identifies the features associated with Plugins:
|
||||
|
||||
* iOAM
|
@ -1,57 +0,0 @@
|
||||
.. _tm:
|
||||
|
||||
==================
|
||||
Traffic Management
|
||||
==================
|
||||
|
||||
This section identifies the features associated with Traffic Management:
|
||||
|
||||
IP Layer Input Checks
|
||||
---------------------
|
||||
* Source Reverse Path Forwarding
|
||||
* Time To Live expiration
|
||||
* IP header checksum
|
||||
* Layer 2 Length < IP Length
|
||||
|
||||
Classifiers
|
||||
-----------
|
||||
* Multiple million Classifiers - Arbitrary N-tuple
|
||||
|
||||
Policers
|
||||
--------
|
||||
* Colour Aware & Token Bucket
|
||||
* Rounding Closest/Up/Down
|
||||
* Limits in PPS/KBPS
|
||||
* Types:
|
||||
|
||||
* Single Rate Two Colour
|
||||
* Single Rate Three Colour
|
||||
* Dual Rate Three Colour
|
||||
|
||||
* Action Triggers
|
||||
|
||||
* Conform
|
||||
* Exceed
|
||||
* Violate
|
||||
|
||||
* Actions Type
|
||||
|
||||
* Drop
|
||||
* Transmit
|
||||
* Mark-and-transmit
|
||||
|
||||
Switched Port Analyzer (SPAN)
|
||||
* mirror traffic to another switch port
|
||||
|
||||
ACLs
|
||||
----
|
||||
* Stateful
|
||||
* Stateless
|
||||
|
||||
COP
|
||||
---
|
||||
|
||||
MAC/IP Pairing
|
||||
--------------
|
||||
Security feature
|
||||
|
@ -1,34 +0,0 @@
|
||||
.. _tun:
|
||||
|
||||
=======
|
||||
Tunnels
|
||||
=======
|
||||
|
||||
This section identifies the features associated with Tunnels:
|
||||
|
||||
Layer 2
|
||||
-------
|
||||
* L2TP
|
||||
* PPP
|
||||
* VLAN
|
||||
|
||||
Layer 3
|
||||
-------
|
||||
* Mapping of Address and Port with Encapsulation (MAP-E)
|
||||
* Lightweight IPv4 over IPv6
|
||||
|
||||
* An Extension to the Dual-Stack Lite Architecture
|
||||
|
||||
* GENEVE
|
||||
* VXLAN
|
||||
|
||||
Segment Routing
|
||||
---------------
|
||||
* IPv6
|
||||
* MPLS
|
||||
|
||||
Generic Routing Encapsulation (GRE)
|
||||
* GRE over IPSEC
|
||||
* GRE over IP
|
||||
* MPLS
|
||||
* NSH
|
@ -1,19 +0,0 @@
|
||||
.. _overview:
|
||||
|
||||
==========
|
||||
Overview
|
||||
==========
|
||||
|
||||
This section discusses the following information:
|
||||
|
||||
* What VPP is, what packet processing provides and the benefits VPP provides
|
||||
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
whatisvpp/index.rst
|
||||
features/index.rst
|
||||
performance/index.rst
|
||||
supported.rst
|
@ -1,12 +0,0 @@
|
||||
.. _current_ipv4_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
IPv4 Routed-Forwarding Performance Tests
|
||||
****************************************
|
||||
|
||||
VPP NDR 64B packet throughput in 1t1c setup (1thread, 1core) is presented in the graph below.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/rls1804/report/_static/vpp/64B-1t1c-ethip4-ip4-ndrdisc.html" width="1200" height="1000" frameborder="0">
|
@ -1,16 +0,0 @@
|
||||
.. _current_ipv6_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
IPv6 Routed-Forwarding Performance Tests
|
||||
****************************************
|
||||
|
||||
VPP NDR 78B packet throughput in 1t1c setup (1 thread, 1 core) is presented in the graph below.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/rls1801/report/_static/vpp/78B-1t1c-ethip6-ip6-ndrdisc.html" width="1200" height="1000" frameborder="0">
|
||||
|
||||
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
.. _current_l2_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
L2 Ethernet Switching Throughput Tests
|
||||
***************************************
|
||||
|
||||
VPP NDR 64B packet throughput in 1 Core, 1 Thread setup, is presented in the graph below.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/rls1801/report/_static/vpp/64B-1t1c-l2-sel2-ndrdisc.html" width="1200" height="1000" frameborder="0">
|
@ -1,13 +0,0 @@
|
||||
.. _current_ndr_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
NDR Performance Tests
|
||||
*********************
|
||||
|
||||
This is a VPP NDR 64B packet throughput in 1 Core, 1 Thread setup, live graph of the NDR (No Drop Rate) L2 Performance Tests.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/rls1804/report/_static/vpp/64B-1t1c-l2-sel1-ndrdisc.html" width="800" height="1000" frameborder="0">
|
||||
|
@ -1,14 +0,0 @@
|
||||
.. _trending_ipv4_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
IPv4 Routed-Forwarding Performance Tests
|
||||
****************************************
|
||||
|
||||
This is a live graph of the IPv4 Routed Forwarding Switching Performance Tests.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/master/trending/_static/vpp/cpta-ip4-1t1c-x520.html" width="1200" height="1000" frameborder="0">
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
.. _trending_ipv6_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
IPv6 Routed-Forwarding Performance Tests
|
||||
****************************************
|
||||
|
||||
VPP NDR 78B packet throughput in 1t1c setup (1 thread, 1 core) is presented in the trending graph below.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/master/trending/_static/vpp/cpta-ip6-1t1c-x520-1.html" width="1200" height="1000" frameborder="0">
|
||||
|
||||
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
.. _trending_l2_throughput:
|
||||
|
||||
.. toctree::
|
||||
|
||||
L2 Ethernet Switching Performance Tests
|
||||
***************************************
|
||||
|
||||
This is a live graph of the 1 Core, 1 Thread, L2 Ethernet Switching Performance Tests Test on the x520 NIC.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="https://docs.fd.io/csit/master/trending/_static/vpp/cpta-l2-1t1c-x520.html" width="1200" height="1000" frameborder="0">
|
||||
|
||||
|
@ -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.
|
@ -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
|
@ -1,10 +1,11 @@
|
||||
.. _developer-friendly:
|
||||
|
||||
==================
|
||||
Developer Friendly
|
||||
==================
|
||||
=======================
|
||||
Features for Developers
|
||||
=======================
|
||||
|
||||
This section describes the different ways VPP is friendly to developers:
|
||||
This section describes a little about the VPP environment and some of the features
|
||||
that can be used by developers.
|
||||
|
||||
* Extensive runtime counters; throughput, `intructions per cycle <https://en.wikipedia.org/wiki/Instructions_per_cycle>`_, errors, events etc.
|
||||
* Integrated pipeline tracing facilities
|
||||
@ -24,3 +25,5 @@ This section describes the different ways VPP is friendly to developers:
|
||||
* Shared-memory segment base address randomization
|
||||
* Stack bounds checking
|
||||
* Static analysis with `Coverity <https://en.wikipedia.org/wiki/Coverity>`_
|
||||
|
||||
For the supported architectures click next.
|
@ -1,16 +1,18 @@
|
||||
.. _extensible:
|
||||
|
||||
=============================
|
||||
Extensible and Modular Design
|
||||
=============================
|
||||
===========================
|
||||
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
|
||||
|
||||
**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
|
||||
@ -37,3 +39,5 @@ 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.
|
26
docs/whatisvpp/hoststack.rst
Normal file
26
docs/whatisvpp/hoststack.rst
Normal file
@ -0,0 +1,26 @@
|
||||
.. _hoststack:
|
||||
|
||||
==============
|
||||
TCP Host Stack
|
||||
==============
|
||||
|
||||
VPP’s host stack leverages VPP’s graph based forwarding model and vectorized packet
|
||||
processing to ensure high throughput and scale transport protocol termination. It
|
||||
exposes apis that apart from allowing for efficient user-space app consumption and
|
||||
generation of data, also enables highly efficient local inter-app communication.
|
||||
|
||||
At a high level VPP’s host stack consists of 3 major components:
|
||||
|
||||
* A session layer that facilitates interaction between transport protocols and applications
|
||||
* Pluggable transport protocols, including TCP, QUIC, TLS, UDP
|
||||
* VCL (VPPComs library) a set of libraries meant to ease the consumability of the stack from application perspective
|
||||
|
||||
All of these components were custom built to fit within VPP’s architecture and to
|
||||
leverage its speed. As a result, a significant amount of effort was invested into:
|
||||
|
||||
* building a transport pluggable session layer that abstracts the interaction between applications and transports using a custom-built shared memory infrastructure. Notably, this also allows for transport protocols that are typically implemented in applications, like QUIC and TLS, to be implemented within VPP.
|
||||
* a clean slate TCP implementation that supports vectorized packet processing and follows VPP’s highly scalable threading model. The implementation is RFC compliant, supports a high number of high-speed TCP protocol features and it was validated using Defensic’s Codenomicon 1M+ tests suite.
|
||||
* VCL, a library that emulates traditional asynchronous communication functions in user-space, all while allowing for new patterns to be developed, if needed.
|
||||
* implementing a high performance “cut-through” communication mode that enables applications attached to vpp to transparently exchange data over shared memory without incurring the extra cost of a traditional transport protocol. Testing has shown this to be much more efficient than traditional inter-container networking.
|
||||
|
||||
For developer features press next.
|
37
docs/whatisvpp/index.rst
Normal file
37
docs/whatisvpp/index.rst
Normal file
@ -0,0 +1,37 @@
|
||||
.. _whatisvpp:
|
||||
|
||||
=================================
|
||||
The Vector Packet Processor (VPP)
|
||||
=================================
|
||||
|
||||
This section describes some of the core concepts and features of FD.io VPP.
|
||||
|
||||
To start with FD.io VPP uses a technique called Vector Packet Processing.
|
||||
This gives FD.io VPP a siginficant performance improvement over packet
|
||||
processing applications that use scalar processing.
|
||||
|
||||
Also, At the heart of Fd.io VPP's modular design is a 'Packet Processing Graph'.
|
||||
This makes FD.io VPP scalable and easily extensible.
|
||||
|
||||
The FD.io software also includes a feature rich network stack. This includes
|
||||
a TCP host stack that utilizes VPP’s graph based forwarding model and vectorized
|
||||
packet processing.
|
||||
|
||||
FD.io VPP is tested nightly for functionality and performance with the
|
||||
CSIT project.
|
||||
|
||||
For more information on any of these features click on the links below or
|
||||
press next.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
scalar-vs-vector-packet-processing.rst
|
||||
extensible.rst
|
||||
networkstack.rst
|
||||
hoststack.rst
|
||||
developer.rst
|
||||
supported.rst
|
||||
performance.rst
|
||||
|
||||
Press next for more about Scalar/Vector Packet processing.
|
@ -1,28 +1,30 @@
|
||||
.. _packet-processing:
|
||||
.. _network-stack:
|
||||
|
||||
===================
|
||||
Packet Processing
|
||||
===================
|
||||
=============
|
||||
Network Stack
|
||||
=============
|
||||
|
||||
This section identifies different components of packet processing and describes their benefits:
|
||||
This section describes a little about the FD.io network stack and describes some 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.
|
||||
* 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/>`_.
|
||||
* 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
|
||||
|
||||
* Host Stack
|
||||
* 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>`_.
|
||||
@ -32,5 +34,6 @@ This section identifies different components of packet processing and describes
|
||||
|
||||
* 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.
|
||||
For more information, please see :ref:`featuresbyrelease` for the complete list.
|
||||
|
||||
For more on the TCP Host Stack press next.
|
@ -3,10 +3,8 @@
|
||||
Performance
|
||||
===========
|
||||
|
||||
Overview
|
||||
^^^^^^^^
|
||||
|
||||
One of the benefits of FD.io VPP is high performance on relatively low-power computing, this performance is based on the following features:
|
||||
One of the benefits of FD.io VPP is it's high performance on relatively low-power computing.
|
||||
Included are the following.
|
||||
|
||||
* A high-performance user-space network stack designed for commodity hardware:
|
||||
|
||||
@ -30,43 +28,43 @@ These features have been designed to take full advantage of common micro-process
|
||||
* Cache-lined aligned buffers for cache and memory efficiency
|
||||
|
||||
|
||||
Packet Throughput Graphs
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Continuous System Integration and Testing (CSIT)
|
||||
------------------------------------------------
|
||||
|
||||
These are some of the packet throughput graphs for FD.io VPP 18.04 from the CSIT `18.04 benchmarking report <https://docs.fd.io/csit/rls1804/report/>`_:
|
||||
The Continuous System Integration and Testing (CSIT) project provides functional and performance
|
||||
testing for FD.io VPP. This testing is focused on functional and performance regresssions. The results
|
||||
are posted to `CSIT Test Report <https://docs.fd.io/csit/master/report/>`_.
|
||||
|
||||
.. toctree::
|
||||
For more about CSIT checkout the following links:
|
||||
|
||||
* `CSIT Code Documentation <https://docs.fd.io/csit/master/doc/overview.html>`_
|
||||
* `CSIT Test Overview <https://docs.fd.io/csit/master/report/introduction/overview.html>`_
|
||||
* `VPP Performance Dashboard <https://docs.fd.io/csit/master/trending/introduction/index.html>`_
|
||||
|
||||
|
||||
CSIT Packet Throughput examples
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Following are pointers to a few of the CSIT test reports. The test's titles read like this:
|
||||
|
||||
<packet size>-<number of threads><number of cores>-<test>-<interface type>
|
||||
|
||||
For example the test with the title 64b-2t1c-l2switching-base-i40e is the
|
||||
test that does l2 switching using 64 byte packets, 2 threads, 1 core using an i40e
|
||||
interface.
|
||||
|
||||
Here are a few examples:
|
||||
|
||||
* `L2 Ethernet switching <https://docs.fd.io/csit/master/report/vpp_performance_tests/packet_throughput_graphs/l2.html>`_
|
||||
* `IPv4 Routing <https://docs.fd.io/csit/master/report/vpp_performance_tests/packet_throughput_graphs/ip4.html>`_
|
||||
* `IPv6 Routing <https://docs.fd.io/csit/master/report/vpp_performance_tests/packet_throughput_graphs/ip6.html>`_
|
||||
|
||||
current_l2_throughput.rst
|
||||
current_ndr_throughput.rst
|
||||
current_ipv4_throughput.rst
|
||||
current_ipv6_throughput.rst
|
||||
|
||||
Trending Throughput Graphs
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
These are some of the trending packet throughput graphs from the CSIT `trending dashboard <https://docs.fd.io/csit/master/trending/introduction/index.html>`_. **Please note that**, performance in the trending graphs will change on a nightly basis in line with the software development cycle:
|
||||
|
||||
.. toctree::
|
||||
|
||||
trending_l2_throughput.rst
|
||||
trending_ipv4_throughput.rst
|
||||
trending_ipv6_throughput.rst
|
||||
|
||||
For More information on CSIT
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The FD.io CSIT is implemented with below platforms:
|
||||
|
||||
* x86/64
|
||||
* ARM-AArch64
|
||||
|
||||
* Huawei TaiShan 2280
|
||||
* Marvell MACCHIATObin
|
||||
|
||||
|
||||
These are FD.io Continuous System Integration and Testing (CSIT)'s documentation links:
|
||||
|
||||
* `CSIT Code Documentation <https://docs.fd.io/csit/master/doc/overview.html>`_
|
||||
* `CSIT Test Overview <https://docs.fd.io/csit/rls1804/report/introduction/overview.html>`_
|
||||
* `VPP Performance Dashboard <https://docs.fd.io/csit/master/trending/introduction/index.html>`_
|
||||
* `L2 Ethernet Switching Trending <https://docs.fd.io/csit/master/trending/trending/l2.html>`_
|
||||
* `IPv4 Routing Trending <https://docs.fd.io/csit/master/trending/trending/ip4.html>`_
|
||||
* `IPv6 Routing Trending <https://docs.fd.io/csit/master/trending/trending/ip6.html>`_
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user