1807 report: updated virtual topologies for all functional tests.
[csit.git] / docs / report / vpp_functional_tests / overview.rst
1 Overview
2 ========
3
4 Virtual Topologies
5 ------------------
6
7 CSIT VPP functional tests are executed in VM-based virtual topologies
8 created on demand using :abbr:`VIRL (Virtual Internet Routing Lab)`
9 simulation platform contributed by Cisco. VIRL runs on physical
10 baremetal servers hosted by LF FD.io project.
11
12 Based on the packet path thru SUT VMs, two distinct logical topology
13 types are used for VPP DUT data plane testing:
14
15 #. vNIC-to-vNIC switching topologies.
16 #. Nested-VM service switching topologies.
17
18 vNIC-to-vNIC Switching
19 ~~~~~~~~~~~~~~~~~~~~~~
20
21 The simplest virtual topology for software data plane application like
22 VPP is vNIC-to-vNIC switching. Tested virtual topologies for 2-Node and
23 3-Node testbeds are shown in figures below.
24
25 .. only:: latex
26
27     .. raw:: latex
28
29         \begin{figure}[H]
30             \centering
31                 \graphicspath{{../_tmp/src/vpp_functional_tests/}}
32                 \includegraphics[width=0.90\textwidth]{virtual-2n-nic2nic}
33                 \label{fig:virtual-2n-nic2nic}
34         \end{figure}
35
36 .. only:: html
37
38     .. figure:: ../vpp_functional_tests/virtual-2n-nic2nic.svg
39         :alt: virtual-2n-nic2nic
40         :align: center
41
42
43 .. only:: latex
44
45     .. raw:: latex
46
47         \begin{figure}[H]
48             \centering
49                 \graphicspath{{../_tmp/src/vpp_functional_tests/}}
50                 \includegraphics[width=0.90\textwidth]{virtual-3n-nic2nic}
51                 \label{fig:virtual-3n-nic2nic}
52         \end{figure}
53
54 .. only:: html
55
56     .. figure:: ../vpp_functional_tests/virtual-3n-nic2nic.svg
57         :alt: virtual-3n-nic2nic
58         :align: center
59
60 SUT1 and SUT2 are two VMs (running Ubuntu or Centos, depending on the test
61 suite), TG is a Traffic Generator (running Ubuntu VM). SUTs run VPP
62 SW application in Linux user-mode as a Device Under Test (DUT) within
63 the VM. TG runs Scapy SW application as a packet Traffic Generator.
64 Network connectivity between SUTs and to TG is provided using virtual
65 NICs and VMs' virtio drivers.
66
67 Virtual testbeds are created on-demand whenever a verification job is
68 started (e.g. triggered by the gerrit patch submission) and destroyed
69 upon completion of all functional tests. Each node is a Virtual Machine
70 and each connection that is drawn on the diagram is available for use in
71 any test case. During the test execution, all nodes are reachable thru
72 the Management network connected to every node via dedicated virtual
73 NICs and virtual links (not shown above for clarity).
74
75 Nested-VM Service Switching
76 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
77
78 Nested-VM (Virtual Machine) service switching topology test cases
79 require VPP DUT to communicate with nested-VM(s) over vhost-user virtual
80 interfaces. Nested-VM(s) is(are) created on SUT1 and/or SUT2 for the
81 duration of these particular test cases only. Virtual test topology with
82 nested-VM(s) is shown in the figure below.
83
84 .. only:: latex
85
86     .. raw:: latex
87
88         \begin{figure}[H]
89             \centering
90                 \graphicspath{{../_tmp/src/vpp_functional_tests/}}
91                 \includegraphics[width=0.90\textwidth]{virtual-3n-vm-vhost}
92                 \label{fig:virtual-3n-vm-vhost}
93         \end{figure}
94
95 .. only:: html
96
97     .. figure:: ../vpp_functional_tests/virtual-3n-vm-vhost.svg
98         :alt: virtual-3n-vm-vhost
99         :align: center
100
101 Functional Tests Coverage
102 -------------------------
103
104 |csit-release| includes following VPP functionality tested in virtual VM
105 environment:
106
107 +-----------------------+----------------------------------------------+
108 | Functionality         |  Description                                 |
109 +=======================+==============================================+
110 | ACL                   | Ingress Access Control List security for L2  |
111 |                       | Bridge-Domain MAC switching, IPv4 routing,   |
112 |                       | IPv6 routing.                                |
113 +-----------------------+----------------------------------------------+
114 | COP                   | COP address white-list and black-list        |
115 |                       | filtering for IPv4 and IPv6 routing.         |
116 +-----------------------+----------------------------------------------+
117 | DHCP                  | Dynamic Host Control Protocol Client and     |
118 |                       | Proxy for IPv4 and IPv6 routing.             |
119 +-----------------------+----------------------------------------------+
120 | GRE                   | Generic Routing Encapsulation Overlay        |
121 |                       | Tunnels for IPv4.                            |
122 +-----------------------+----------------------------------------------+
123 | IPSec                 | IPSec tunnel and transport modes.            |
124 +-----------------------+----------------------------------------------+
125 | IPv4                  | IPv4 routing, RPF, ARP, Proxy ARP, ICMPv4.   |
126 +-----------------------+----------------------------------------------+
127 | IPv6                  | IPv6 routing, NS/ND, RA, ICMPv6.             |
128 +-----------------------+----------------------------------------------+
129 | L2BD                  | L2 Bridge-Domain switching for untagged      |
130 |                       | Ethernet, dot1q and dot1ad tagged.           |
131 +-----------------------+----------------------------------------------+
132 | L2XC                  | L2 Cross-Connect switching for untagged      |
133 |                       | Ethernet, dot1q and dot1ad tagged.           |
134 +-----------------------+----------------------------------------------+
135 | LISP                  | Locator/ID Separation Protocol overlay       |
136 |                       | tunnels and locator/id mapping control.      |
137 +-----------------------+----------------------------------------------+
138 | QoS Policer Metering  | Ingress packet rate metering and marking for |
139 |                       | IPv4, IPv6.                                  |
140 +-----------------------+----------------------------------------------+
141 | Softwire Tunnels      | IPv4-in-IPv6 softwire tunnels.               |
142 +-----------------------+----------------------------------------------+
143 | Tap Interface         | Baseline Linux tap interface tests.          |
144 +-----------------------+----------------------------------------------+
145 | IPFIX and SPAN        | Telemetry IPFIX netflow statistics and SPAN  |
146 |                       | port mirroring.                              |
147 +-----------------------+----------------------------------------------+
148 | uRPF Source Security  | Unicast Reverse Path Forwarding security for |
149 |                       | IPv4 and IPv6 routing.                       |
150 +-----------------------+----------------------------------------------+
151 | VLAN Tag Translation  | L2 VLAN tag translation 2to2, 2to1, 1to2,    |
152 |                       | 1to1.                                        |
153 +-----------------------+----------------------------------------------+
154 | VRF Routing           | Multi-context VRF IPVPN routing for IPv4 and |
155 |                       | IPv6.                                        |
156 +-----------------------+----------------------------------------------+
157 | VXLAN                 | VXLAN overlay tunneling for L2-over-IPv4 and |
158 |                       | -over-IPv6.                                  |
159 +-----------------------+----------------------------------------------+
160
161 Functional Tests Naming
162 -----------------------
163
164 |csit-release| follows a common structured naming convention for all
165 performance and system functional tests, introduced in CSIT-17.01.
166
167 The naming should be intuitive for majority of the tests. Complete
168 description of CSIT test naming convention is provided on
169 :ref:`csit_test_naming`.