Report: vpp-device release notes
[csit.git] / docs / report / vpp_device_tests / overview.rst
1 Overview
2 ========
3
4 Virtual Topologies
5 ------------------
6
7 CSIT VPP Device tests are executed in Physical containerized topologies
8 created on demand using set of scripts hosted and developed under CSIT
9 repository. It runs on physical baremetal servers hosted by LF FD.io project.
10 Based on the packet path thru SUT Containers, three distinct logical topology
11 types are used for VPP DUT data plane testing:
12
13 #. vfNIC-to-vfNIC switching topologies.
14 #. vfNIC-to-vhost-user switching topologies.
15 #. vfNIC-to-memif switching topologies.
16
17 vfNIC-to-vfNIC Switching
18 ~~~~~~~~~~~~~~~~~~~~~~~~
19
20 The simplest physical topology for software data plane application like
21 VPP is vfNIC-to-vfNIC switching. Tested virtual topologies for 2-Node testbeds
22 are shown in figures below.
23
24 .. only:: latex
25
26     .. raw:: latex
27
28         \begin{figure}[H]
29             \centering
30                 \graphicspath{{../_tmp/src/vpp_device_tests/}}
31                 \includegraphics[width=0.90\textwidth]{vf-2n-nic2nic}
32                 \label{fig:vf-2n-nic2nic}
33         \end{figure}
34
35 .. only:: html
36
37     .. figure:: ../vpp_device_tests/vf-2n-nic2nic.svg
38         :alt: vf-2n-nic2nic
39         :align: center
40
41 SUT1 is Docker Container (running Ubuntu, depending on the test suite), TG is
42 a Traffic Generator (running Ubuntu Container). SUTs run VPP
43 SW application in Linux user-mode as a Device Under Test (DUT) within
44 the container. TG runs Scapy SW application as a packet Traffic Generator.
45 Network connectivity between SUTs and to TG is provided using virtual function
46 of physical NICs.
47
48 Virtual topologies are created on-demand whenever a verification job is
49 started (e.g. triggered by the gerrit patch submission) and destroyed
50 upon completion of all functional tests. Each node is a container running on
51 physical server. During the test execution, all nodes are reachable thru
52 the Management (not shown above for clarity).
53
54 vfNIC-to-vhost-user Switching
55 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56
57 vfNIC-to-vhost-user switching topology test cases require VPP DUT to communicate
58 with Virtual Machine (VM) over Vhost-user virtual interfaces. VM is created on
59 SUT1 for the duration of these particular test cases only. Virtual test topology
60 with VM is shown in the figure below.
61
62 .. only:: latex
63
64     .. raw:: latex
65
66         \begin{figure}[H]
67             \centering
68                 \graphicspath{{../_tmp/src/vpp_device_tests/}}
69                 \includegraphics[width=0.90\textwidth]{vf-2n-nic2vhost}
70                 \label{fig:vf-2n-nic2vhost}
71         \end{figure}
72
73 .. only:: html
74
75     .. figure:: ../vpp_device_tests/vf-2n-nic2vhost.svg
76         :alt: vf-2n-nic2vhost
77         :align: center
78
79 vfNIC-to-memif Switching
80 ~~~~~~~~~~~~~~~~~~~~~~~~
81
82 vfNIC-to-memif switching topology test cases require VPP DUT to communicate
83 with another Docker Container over memif interfaces. Container is created for
84 the duration of these particular test cases only and it is running the same VPP
85 version as running on DUT. Virtual test topology with Memif is shown in
86 the figure below.
87
88 .. only:: latex
89
90     .. raw:: latex
91
92         \begin{figure}[H]
93             \centering
94                 \graphicspath{{../_tmp/src/vpp_device_tests/}}
95                 \includegraphics[width=0.90\textwidth]{vf-2n-nic2memif}
96                 \label{fig:vf-2n-nic2memif}
97         \end{figure}
98
99 .. only:: html
100
101     .. figure:: ../vpp_device_tests/vf-2n-nic2memif.svg
102         :alt: vf-2n-nic2memif
103         :align: center
104
105 Functional Tests Coverage
106 -------------------------
107
108 |csit-release| includes following VPP functionality tested in VPP Device
109 environment:
110
111 +-----------------------+----------------------------------------------+
112 | Functionality         |  Description                                 |
113 +=======================+==============================================+
114 | ACL (classify)        | Ingress Access Control List security for L2  |
115 |                       | Bridge-Domain MAC switching, IPv4 routing,   |
116 |                       | IPv6 routing.                                |
117 +-----------------------+----------------------------------------------+
118 | ACL (acl_plugin)      | Ingress and Egress Access Control List       |
119 |                       | security in stateless and stateful mode for  |
120 |                       | L2 Bridge-Domain MAC switching, IPv4         |
121 |                       | routing, IPv6 routing.                       |
122 +-----------------------+----------------------------------------------+
123 | ADL                   | ADL address allow-list and block-list        |
124 |                       | filtering for IPv4 and IPv6 routing.         |
125 +-----------------------+----------------------------------------------+
126 | GENEVE                | GENEVE tunnels for IPv4 routing.             |
127 +-----------------------+----------------------------------------------+
128 | IPSec                 | IPSec tunnel and transport modes.            |
129 +-----------------------+----------------------------------------------+
130 | IPv4                  | IPv4 routing, ICMPv4.                        |
131 +-----------------------+----------------------------------------------+
132 | IPv6                  | IPv4 routing, ICMPv6.                        |
133 +-----------------------+----------------------------------------------+
134 | L2BD                  | L2 Bridge-Domain switching for untagged      |
135 |                       | Ethernet.                                    |
136 +-----------------------+----------------------------------------------+
137 | L2XC                  | L2 Cross-Connect switching for untagged      |
138 |                       | Ethernet.                                    |
139 +-----------------------+----------------------------------------------+
140 | MACIP (acl_plugin)    | Ingress Access Control List security for L2  |
141 |                       | Bridge-Domain MAC switching based on mix     |
142 |                       | of MAC and IP address matches.               |
143 +-----------------------+----------------------------------------------+
144 | Memif Interface       | Baseline VPP memif interface tests.          |
145 +-----------------------+----------------------------------------------+
146 | NAT44                 | Network Address and Port Translation         |
147 |                       | deterministic mode and endpoint-dependent    |
148 |                       | mode tests for IPv4.                         |
149 +-----------------------+----------------------------------------------+
150 | QoS Policer Metering  | Ingress packet rate metering and marking for |
151 |                       | IPv4, IPv6.                                  |
152 +-----------------------+----------------------------------------------+
153 | SRv6                  | Segment routing over IPv6, base and proxy.   |
154 +-----------------------+----------------------------------------------+
155 | Tap Interface         | Baseline Linux tap interface tests.          |
156 +-----------------------+----------------------------------------------+
157 | VLAN Tag              | L2 VLAN subinterfaces.                       |
158 +-----------------------+----------------------------------------------+
159 | Vhost-user Interface  | Baseline VPP vhost-user interface tests.     |
160 +-----------------------+----------------------------------------------+
161 | VXLAN                 | VXLAN overlay tunneling for L2-over-IPv4 and |
162 |                       | -over-IPv6.                                  |
163 +-----------------------+----------------------------------------------+
164
165 Tests Naming
166 ------------
167
168 |csit-release| follows a common structured naming convention for all
169 performance and system functional tests, introduced in CSIT-17.01.
170
171 The naming should be intuitive for majority of the tests. Complete
172 description of CSIT test naming convention is provided on
173 :ref:`csit_test_naming`.