Update 2.0 doc
[nfvbench.git] / docs / testing / user / userguide / readme.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. (c) Cisco Systems, Inc
4
5 Features
6 ********
7
8 Data Plane Performance Measurement Features
9 -------------------------------------------
10
11 NFVbench supports the following main measurement capabilities:
12
13 - supports 2 measurement modes:
14     - *fixed rate* mode to generate traffic at a fixed rate for a fixed duration
15     - NDR (No Drop Rate) and PDR (Partial Drop Rate) measurement mode
16 - configurable frame sizes (any list of fixed sizes or 'IMIX')
17 - built-in packet paths (PVP, PVVP)
18 - built-in loopback VNFs based on fast L2 or L3 forwarders running in VMs
19 - configurable number of flows and service chains
20 - configurable traffic direction (single or bi-directional)
21
22
23 NDR is the highest throughput achieved without dropping packets.
24 PDR is the highest throughput achieved without dropping more than a pre-set limit (called PDR threshold or allowance, expressed in %).
25
26 Results of each run include the following data:
27
28 - Aggregated achieved throughput in bps
29 - Aggregated achieved packet rate in pps (or fps)
30 - Actual drop rate in %
31 - Latency in usec (min, max, average in the current version)
32
33 Built-in OpenStack support
34 --------------------------
35 NFVbench can stage OpenStack resources to build 1 or more service chains using direct OpenStack APIs. Each service chain is composed of:
36
37 - 1 or 2 loopback VM instances per service chain
38 - 2 Neutron networks per loopback VM
39
40 OpenStack resources are staged before traffic is measured using OpenStack APIs (Nova and Neutron) then disposed after completion of measurements.
41
42 The loopback VM flavor to use can be configured in the NFVbench configuration file.
43
44 Note that NFVbench does not use OpenStack Heat nor any higher level service (VNFM or NFVO) to create the service chains because its
45 main purpose is to measure the performance of the NFVi infrastructure which is mainly focused on L2 forwarding performance.
46
47 External Chains
48 ---------------
49 NFVbench supports settings that involve externally staged packet paths with or without OpenStack:
50
51 - run benchmarks on existing service chains at the L3 level that are staged externally by any other tool (e.g. any VNF capable of L3 routing)
52 - run benchmarks on existing L2 chains that are configured externally (e.g. pure L2 forwarder such as DPDK testpmd)
53
54 Direct L2 Loopback (Switch or wire loopback)
55 --------------------------------------------
56 NFVbench supports benchmarking of pure L2 loopbacks (see "--l2-loopback vlan" option)
57
58 - Switch level loopback
59 - Port to port wire loopback
60
61 In this mode, NFVbench will take a vlan ID and send packets from each port to the other port
62 (dest MAC set to the other port MAC) using the same VLAN ID on both ports.
63 This can be useful for example to verify that the connectivity to the switch is working properly.
64
65 Traffic Generation
66 ------------------
67
68 NFVbench currently integrates with the open source TRex traffic generator:
69
70 - `TRex <https://trex-tgn.cisco.com>`_ (pre-built into the NFVbench container)
71
72
73 Supported Packet Paths
74 ----------------------
75 Packet paths describe where packets are flowing in the NFVi platform. The most commonly used paths are identified by 3 or 4 letter abbreviations.
76 A packet path can generally describe the flow of packets associated to one or more service chains, with each service chain composed of 1 or more VNFs.
77
78 The following packet paths are currently supported by NFVbench:
79
80 - PVP (Physical interface to VM to Physical interface)
81 - PVVP (Physical interface to VM to VM to Physical interface)
82 - N*PVP (N concurrent PVP packet paths)
83 - N*PVVP (N concurrent PVVP packet paths)
84
85 The traffic is made of 1 or more flows of L3 frames (UDP packets) with different payload sizes. Each flow is identified by a unique source and destination MAC/IP tuple.
86
87
88 Loopback VM
89 ^^^^^^^^^^^
90
91 NFVbench provides a loopback VM image that runs CentOS with 2 pre-installed forwarders:
92
93 - DPDK testpmd configured to do L2 cross connect between 2 virtual interfaces
94 - FD.io VPP configured to perform L3 routing between 2 virtual interfaces
95
96 Frames are just forwarded from one interface to the other.
97 In the case of testpmd, the source and destination MAC are rewritten, which corresponds to the mac forwarding mode (--forward-mode=mac).
98 In the case of VPP, VPP will act as a real L3 router, and the packets are routed from one port to the other using static routes.
99
100 Which forwarder and what Nova flavor to use can be selected in the NFVbench configuration. Be default the DPDK testpmd forwarder is used with 2 vCPU per VM.
101 The configuration of these forwarders (such as MAC rewrite configuration or static route configuration) is managed by NFVbench.
102
103
104 PVP Packet Path
105 ^^^^^^^^^^^^^^^
106
107 This packet path represents a single service chain with 1 loopback VNF and 2 Neutron networks:
108
109 .. image:: images/nfvbench-pvp.png
110
111
112 PVVP Packet Path
113 ^^^^^^^^^^^^^^^^
114
115 This packet path represents a single service chain with 2 loopback VNFs in sequence and 3 Neutron networks.
116 The 2 VNFs will only run on the same compute node (PVVP intra-node):
117
118 .. image:: images/nfvbench-pvvp.png
119
120
121 Multi-Chaining (N*PVP or N*PVVP)
122 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
123
124 Multiple service chains can be setup by NFVbench without any limit on the concurrency (other than limits imposed by available resources on compute nodes).
125 In the case of multiple service chains, NFVbench will instruct the traffic generator to use multiple L3 packet streams (frames directed to each path will
126 have a unique destination MAC address).
127
128 Example of multi-chaining with 2 concurrent PVP service chains:
129
130 .. image:: images/nfvbench-npvp.png
131
132 This innovative feature will allow to measure easily the performance of a fully loaded compute node running multiple service chains.
133
134 Multi-chaining is currently limited to 1 compute node (VMs run on the same compute node).
135 The 2 edge interfaces for all service chains can either share the same 2 networks or can use
136 dedicated networks (based on a configuration option).
137 The total traffic will be split equally across all chains.
138
139
140 SR-IOV
141 ^^^^^^
142
143 By default, service chains will be based on virtual switch interfaces.
144
145 NFVbench provides an option to select SR-IOV based virtual interfaces instead (thus bypassing any virtual switch) for those OpenStack system that include and support SR-IOV capable NICs on compute nodes.
146
147 The PVP packet path will bypass the virtual switch completely when the SR-IOV option is selected:
148
149 .. image:: images/nfvbench-sriov-pvp.png
150
151 The PVVP packet path will use SR-IOV for the left and right networks and the virtual switch for the middle network by default:
152
153 .. image:: images/nfvbench-sriov-pvvp.png
154
155 Or in the case of inter-node:
156
157 .. image:: images/nfvbench-sriov-pvvp2.png
158
159 This packet path is a good way to approximate VM to VM (V2V) performance (middle network) given the high efficiency of the left and right networks. The V2V throughput will likely be very close to the PVVP throughput while its latency will be very close to the difference between the SR-IOV PVVP latency and the SR-IOV PVP latency.
160
161 It is possible to also force the middle network to use SR-IOV (in this version, the middle network is limited to use the same SR-IOV phys net):
162
163 .. image:: images/nfvbench-all-sriov-pvvp.png
164
165 The chain can also span across 2 nodes with the use of 2 SR-IOV ports in each node:
166
167 .. image:: images/nfvbench-all-sriov-pvvp2.png
168
169
170 Other Misc Packet Paths
171 ^^^^^^^^^^^^^^^^^^^^^^^
172
173 P2P (Physical interface to Physical interface - no VM) can be supported using the external chain/L2 forwarding mode.
174
175 V2V (VM to VM) is not supported but PVVP provides a more complete (and more realistic) alternative.
176
177
178 Supported Neutron Network Plugins and vswitches
179 -----------------------------------------------
180
181 Any Virtual Switch, Any Encapsulation
182 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
183
184 NFVbench is agnostic of the virtual switch implementation and has been tested with the following virtual switches:
185
186 - ML2/VPP/VLAN (networking-vpp)
187 - OVS/VLAN and OVS-DPDK/VLAN
188 - ML2/ODL/VPP (OPNFV Fast Data Stack)
189
190
191
192 Limitations
193 ***********
194 NFVbench only supports VLAN with OpenStack.
195 VxLAN overlays is planned for a coming release.