4 Tested Virtual Topologies
5 -------------------------
7 CSIT Honeycomb functional tests are executed on virtualized topologies created
8 using :abbr:`VIRL (Virtual Internet Routing Lab)` simulation platform
9 contributed by Cisco. VIRL runs on physical baremetal servers hosted by LF FD.io
10 project. All tests are executed in two node logical test topology - Traffic
11 Generator (TG) node and Systems Under Test (SUT1) node connected in a loop.
12 Logical test topology is shown in the figure below.::
14 +------------------------+
16 | +------------------+ |
17 +---------------> <--------------+
19 | |------------> DUT1 <-----------+ |
20 | | | +------------------+ | | |
23 | | +------------------------+ | |
27 | +---------------> <---------------+ |
29 +------------------> <------------------+
32 SUT1 is a VM (Ubuntu or Centos, depending on the test suite), TG is a Traffic
33 Generator (TG, another Ubuntu VM). SUTs run Honeycomb and VPP SW applications
34 in Linux user-mode as a Device Under Test (DUT) within the VM. TG runs Scapy
35 SW application as a packet Traffic Generator. Logical connectivity between
36 SUTs and to TG is provided using virtual NICs using VMs' virtio driver.
38 Virtual testbeds are created on-demand whenever a verification job is started
39 (e.g. triggered by the gerrit patch submission) and destroyed upon completion
40 of all functional tests. Each node is a Virtual Machine and each connection
41 that is drawn on the diagram is available for use in any test case. During the
42 test execution, all nodes are reachable thru the Management network connected
43 to every node via dedicated virtual NICs and virtual links (not shown above
46 Functional Tests Coverage
47 -------------------------
49 The following Honeycomb functional test areas are included in the CSIT |release|
50 with results listed in this report:
52 - **Basic interface management** - CRUD for interface state,
53 - ipv4/ipv6 address, ipv4 neighbor, MTU value.
55 - **L2BD** - CRUD for L2 Bridge-Domain, interface assignment.
56 - Create up to two bridge domains with all implemented functions turned on.
57 - (flooding, unknown-unicast flooding, forwarding, learning, arp-termination)
58 - Assign up to two physical interfaces to a single bridge domain.
59 - Remove interface assignments, remove bridge domains.
61 - **L2FIB** - CRD for L2-FIB entries.
62 - Create 4 FIB entries
63 - (one of each for filter/forward, static/dynamic combinations).
66 - **VxLAN** - CRD for VxLAN tunnels.
67 - Create VxLAN interface.
68 - Disable VxLAN interface.
69 - Re-create a disabled VxLAN interface.
71 - **VxLAN-GPE** - CRD for VxLAN GPE tunnels.
72 - Create VxLAN GPE interface.
73 - Disable VxLAN interface.
74 - Re-create a disabled VxLAN interface.
76 - **Vhost-user** - CRUD for Vhost-user interfaces.
77 - Create, modify and delete Vhost-user interface, as client and server.
79 - **TAP** - CRUD for Tap interface management.
80 - Create, modify and delete TAP interface.
82 - **VLAN** - CRUD for VLAN sub-interface management.
83 - Create VLAN sub-interface over a physical interface.
84 - Toggle interface state separately for super-interface and sub-interface.
85 - Configure IP address and bridge domain assignment on sub-interface.
86 - Configure VLAN tag rewrite on sub-interface.
88 - **ACL** - CRD for low-level classifiers: table and session management,
89 - interface assignment.
90 - Configure up to 2 classify tables.
91 - Configure up to 2 classify sessions on one table.
92 - Assign classify session to a physical interface.
93 - Remove tables, sessions, interface assignments.
95 - **PBB** - CRD for provider backbone bridge sub-interface.
96 - Configure, modify and remove a PBB sub-interface over a physical interface.
98 - **NSH_SFC** - CRD for NSH maps and entries, using NSH_SFC plugin.
99 - Configure up to 2 NSH entries.
100 - Configure up to 2 NSH maps.
101 - Modify and delete NSH maps and entries.
103 - **LISP** - CRD for Lisp: mapping, locator set, adjacency, map resolver.
104 - Toggle Lisp feature status.
105 - Configure and delete Lisp mapping as local and remote.
106 - Configure and delete Lisp adjacency mapping
107 - Configure and delete Lisp map resolver, proxy ITR.
108 - Test case count: 18
109 - **LISP GPE** - CRUD for LISP GPE mappings.
110 - Toggle Lisp GPE feature status.
111 - Configure Lisp GPE mappings.
112 - Traffic test verifying encapsulation.
113 - Test case count: 12
114 - **NAT** - CRD for NAT entries, interface assignment.
115 - Configure and delete up to two NAT entries.
116 - Assign NAT entries to a physical interface.
118 - **Port mirroring** - CRD for SPAN port mirroring, interface assignment.
119 - Configure SPAN port mirroring on a physical interface, mirroring
120 - up to 2 interfaces.
121 - Remove SPAN configuration from interfaces.
122 - Test case count: 14
123 - **ACL-PLUGIN** - CRD for high-level classifier
124 - MAC + IP address classification.
125 - IPv4, IPv6 address classification.
126 - TCP, UDP, ICMP, ICMPv6 protocol/next-header classification.
127 - port number classification.
128 - ICMP, ICMPv6 code and type classification.
129 - Test case count: 15
130 - **ProxyARP** - CRD for proxyARP feature.
131 - Configure proxyARP.
132 - Assign to interface.
134 - **ProxyND6** - CRD for Neighbor Discovery Proxy.
135 - Configure ProxyND6 feature on interface.
137 - **DHCP Relay** - CRD for DHCP relay feature.
138 - Configure DHCP Relays.
139 - IPv4 and IPv6 variants.
141 - **SLAAC** - CRD for Stateless Address AutoConfiguration.
142 - Configure SLAAC feature on interfaces.
144 - **Routing** - CRD for routing.
145 - Configure single-hop route.
146 - Configure multi-hop routes.
147 - Configure blackhole route.
148 - IPv4 and IPv6 variants.
150 - **Policer** - CRD for traffic policing feature.
151 - Configure Policing rules.
152 - Assign to interface.
154 - **Border Gateway Protocol** - CRUD and functional tests for BGP.
155 - Configure peers and routes
156 - Check interactions with another BGP peer.
158 - **Honeycomb Infractructure** - configuration persistence,
159 - Netconf notifications for interface events,
160 - Netconf negative tests aimed at specific issues
161 - Netconf/Restconf northbound over IPv6
163 Total 217 Honeycomb functional tests in the CSIT |release|.
165 Operational data in Honeycomb should mirror configuration data at all times.
166 Because of this, test cases follow this general pattern:
168 #. read operational data of the feature using restconf.
169 #. read status of the feature using VPP API dump.
170 #. modify configuration of the feature using restconf.
171 #. verify changes to operational data using restconf.
172 #. verify changes using VPP API dump, OR
173 #. send a packet to VPP node and observe behaviour to verify configuration.
175 Test cases involving network interfaces utilize the first two interfaces on
178 Functional Tests Naming
179 -----------------------
181 CSIT |release| introduced a common structured naming convention for all
182 performance and functional tests. This change was driven by substantially
183 growing number and type of CSIT test cases. Firstly, the original practice did
184 not always follow any strict naming convention. Secondly test names did not
185 always clearly capture tested packet encapsulations, and the actual type or
186 content of the tests. Thirdly HW configurations in terms of NICs, ports and
187 their locality were not captured either. These were but few reasons that drove
188 the decision to change and define a new more complete and stricter test naming
189 convention, and to apply this to all existing and new test cases.
191 The new naming should be intuitive for majority of the tests. The complete
192 description of CSIT test naming convention is provided on `CSIT test naming
193 page <https://wiki.fd.io/view/CSIT/csit-test-naming>`_.
195 Here few illustrative examples of the new naming usage for functional test
198 #. **Physical port to physical port - a.k.a. NIC-to-NIC, Phy-to-Phy, P2P**
200 - *eth2p-ethip4-ip4base-func.robot* => 2 ports of Ethernet, IPv4 baseline
201 routed forwarding, functional tests.
203 #. **Physical port to VM (or VM chain) to physical port - a.k.a. NIC2VM2NIC,
204 P2V2P, NIC2VMchain2NIC, P2V2V2P**
206 - *eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot* => 2 ports of
207 Ethernet, IPv4 VXLAN Ethernet, L2 bridge-domain switching to/from two vhost
208 interfaces and one VM, functional tests.