aboutsummaryrefslogtreecommitdiffstats
path: root/docs/report/vpp_functional_tests/overview.rst
blob: 8ce516cf3d0289c1564402e1a2bab5d3f9cd6b81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Overview
========

Virtual Topologies
------------------

CSIT VPP functional tests are executed in VM-based virtual topologies
created on demand using :abbr:`VIRL (Virtual Internet Routing Lab)`
simulation platform contributed by Cisco. VIRL runs on physical
baremetal servers hosted by LF FD.io project.

Based on the packet path thru SUT VMs, two distinct logical topology
types are used for VPP DUT data plane testing:

#. vNIC-to-vNIC switching topologies.
#. Nested-VM service switching topologies.

vNIC-to-vNIC Switching
~~~~~~~~~~~~~~~~~~~~~~

The simplest virtual topology for software data plane application like
VPP is vNIC-to-vNIC switching. Tested virtual topologies for 2-Node and
3-Node testbeds are shown in figures below.

.. only:: latex

    .. raw:: latex

        \begin{figure}[H]
            \centering
                \graphicspath{{../_tmp/src/vpp_functional_tests/}}
                \includegraphics[width=0.90\textwidth]{virtual-2n-nic2nic}
                \label{fig:virtual-2n-nic2nic}
        \end{figure}

.. only:: html

    .. figure:: ../vpp_functional_tests/virtual-2n-nic2nic.svg
        :alt: virtual-2n-nic2nic
        :align: center


.. only:: latex

    .. raw:: latex

        \begin{figure}[H]
            \centering
                \graphicspath{{../_tmp/src/vpp_functional_tests/}}
                \includegraphics[width=0.90\textwidth]{virtual-3n-nic2nic}
                \label{fig:virtual-3n-nic2nic}
        \end{figure}

.. only:: html

    .. figure:: ../vpp_functional_tests/virtual-3n-nic2nic.svg
        :alt: virtual-3n-nic2nic
        :align: center

SUT1 and SUT2 are two VMs (running Ubuntu or Centos, depending on the test
suite), TG is a Traffic Generator (running Ubuntu VM). SUTs run VPP
SW application in Linux user-mode as a Device Under Test (DUT) within
the VM. TG runs Scapy SW application as a packet Traffic Generator.
Network connectivity between SUTs and to TG is provided using virtual
NICs and VMs' virtio drivers.

Virtual testbeds are created on-demand whenever a verification job is
started (e.g. triggered by the gerrit patch submission) and destroyed
upon completion of all functional tests. Each node is a Virtual Machine
and each connection that is drawn on the diagram is available for use in
any test case. During the test execution, all nodes are reachable thru
the Management network connected to every node via dedicated virtual
NICs and virtual links (not shown above for clarity).

Nested-VM Service Switching
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Nested-VM (Virtual Machine) service switching topology test cases
require VPP DUT to communicate with nested-VM(s) over vhost-user virtual
interfaces. Nested-VM(s) is(are) created on SUT1 and/or SUT2 for the
duration of these particular test cases only. Virtual test topology with
nested-VM(s) is shown in the figure below.

.. only:: latex

    .. raw:: latex

        \begin{figure}[H]
            \centering
                \graphicspath{{../_tmp/src/vpp_functional_tests/}}
                \includegraphics[width=0.90\textwidth]{virtual-3n-vm-vhost}
                \label{fig:virtual-3n-vm-vhost}
        \end{figure}

.. only:: html

    .. figure:: ../vpp_functional_tests/virtual-3n-vm-vhost.svg
        :alt: virtual-3n-vm-vhost
        :align: center

Functional Tests Coverage
-------------------------

|csit-release| includes following VPP functionality tested in virtual VM
environment:

+-----------------------+----------------------------------------------+
| Functionality         |  Description                                 |
+=======================+==============================================+
| ACL                   | Ingress Access Control List security for L2  |
|                       | Bridge-Domain MAC switching, IPv4 routing,   |
|                       | IPv6 routing.                                |
+-----------------------+----------------------------------------------+
| COP                   | COP address white-list and black-list        |
|                       | filtering for IPv4 and IPv6 routing.         |
+-----------------------+----------------------------------------------+
| DHCP                  | Dynamic Host Control Protocol Client and     |
|                       | Proxy for IPv4 and IPv6 routing.             |
+-----------------------+----------------------------------------------+
| GRE                   | Generic Routing Encapsulation Overlay        |
|                       | Tunnels for IPv4.                            |
+-----------------------+----------------------------------------------+
| IPSec                 | IPSec tunnel and transport modes.            |
+-----------------------+----------------------------------------------+
| IPv4                  | IPv4 routing, RPF, ARP, Proxy ARP, ICMPv4.   |
+-----------------------+----------------------------------------------+
| IPv6                  | IPv6 routing, NS/ND, RA, ICMPv6.             |
+-----------------------+----------------------------------------------+
| L2BD                  | L2 Bridge-Domain switching for untagged      |
|                       | Ethernet, dot1q and dot1ad tagged.           |
+-----------------------+----------------------------------------------+
| L2XC                  | L2 Cross-Connect switching for untagged      |
|                       | Ethernet, dot1q and dot1ad tagged.           |
+-----------------------+----------------------------------------------+
| LISP                  | Locator/ID Separation Protocol overlay       |
|                       | tunnels and locator/id mapping control.      |
+-----------------------+----------------------------------------------+
| QoS Policer Metering  | Ingress packet rate metering and marking for |
|                       | IPv4, IPv6.                                  |
+-----------------------+----------------------------------------------+
| Softwire Tunnels      | IPv4-in-IPv6 softwire tunnels.               |
+-----------------------+----------------------------------------------+
| Tap Interface         | Baseline Linux tap interface tests.          |
+-----------------------+----------------------------------------------+
| IPFIX and SPAN        | Telemetry IPFIX netflow statistics and SPAN  |
|                       | port mirroring.                              |
+-----------------------+----------------------------------------------+
| uRPF Source Security  | Unicast Reverse Path Forwarding security for |
|                       | IPv4 and IPv6 routing.                       |
+-----------------------+----------------------------------------------+
| VLAN Tag Translation  | L2 VLAN tag translation 2to2, 2to1, 1to2,    |
|                       | 1to1.                                        |
+-----------------------+----------------------------------------------+
| VRF Routing           | Multi-context VRF IPVPN routing for IPv4 and |
|                       | IPv6.                                        |
+-----------------------+----------------------------------------------+
| VXLAN                 | VXLAN overlay tunneling for L2-over-IPv4 and |
|                       | -over-IPv6.                                  |
+-----------------------+----------------------------------------------+

Functional Tests Naming
-----------------------

|csit-release| follows a common structured naming convention for all
performance and system functional tests, introduced in CSIT-17.01.

The naming should be intuitive for majority of the tests. Complete
description of CSIT test naming convention is provided on
:ref:`csit_test_naming`.