d4d61787d1bbfb92055469283550a35fb8f0bfe6
[vswitchperf.git] / docs / to-be-reorganized / vswitchperf_ltd.rst
1 CHARACTERIZE VSWITCH PERFORMANCE FOR TELCO NFV USE CASES LEVEL TEST DESIGN
2 ==========================================================================
3
4 .. contents:: Table of Contents
5
6 1. Introduction
7 ===============
8
9 The objective of the OPNFV project titled
10 **“Characterize vSwitch Performance for Telco NFV Use Cases”**, is to
11 evaluate a virtual switch to identify its suitability for a Telco
12 Network Function Virtualization (NFV) environment. The intention of this
13 Level Test Design (LTD) document is to specify the set of tests to carry
14 out in order to objectively measure the current characteristics of a
15 virtual switch in the Network Function Virtualization Infrastructure
16 (NFVI) as well as the test pass criteria. The detailed test cases will
17 be defined in `Section 2 <#DetailsOfTheLevelTestDesign>`__, preceded by
18 the `Document identifier <#DocId>`__ and the `Scope <#Scope>`__.
19
20 This document is currently in draft form.
21
22 1.1. Document identifier
23 ------------------------
24
25 The document id will be used to uniquely
26 identify versions of the LTD. The format for the document id will be:
27 OPNFV\_vswitchperf\_LTD\_ver\_NUM\_MONTH\_YEAR\_STATUS, where by the
28 status is one of: draft, reviewed, corrected or final. The document id
29 for this version of the LTD is:
30 OPNFV\_vswitchperf\_LTD\_ver\_1.6\_Jan\_15\_DRAFT.
31
32 1.2. Scope
33 ----------
34
35 The main purpose of this project is to specify a suite of
36 performance tests in order to objectively measure the current packet
37 transfer characteristics of a virtual switch in the NFVI. The intent of
38 the project is to facilitate testing of any virtual switch. Thus, a
39 generic suite of tests shall be developed, with no hard dependencies to
40 a single implementation. In addition, the test case suite shall be
41 architecture independent.
42
43 The test cases developed in this project shall not form part of a
44 separate test framework, all of these tests may be inserted into the
45 Continuous Integration Test Framework and/or the Platform Functionality
46 Test Framework - if a vSwitch becomes a standard component of an OPNFV
47 release.
48
49 1.3. References
50 ---------------
51
52 *  `RFC 1242 Benchmarking Terminology for Network Interconnection
53    Devices <http://www.ietf.org/rfc/rfc1242.txt>`__
54 *  `RFC 2544 Benchmarking Methodology for Network Interconnect
55    Devices <http://www.ietf.org/rfc/rfc2544.txt>`__
56 *  `RFC 2285 Benchmarking Terminology for LAN Switching
57    Devices <http://www.ietf.org/rfc/rfc2285.txt>`__
58 *  `RFC 2889 Benchmarking Methodology for LAN Switching
59    Devices <http://www.ietf.org/rfc/rfc2889.txt>`__
60 *  `RFC 3918 Methodology for IP Multicast
61    Benchmarking <http://www.ietf.org/rfc/rfc3918.txt>`__
62 *  `RFC 4737 Packet Reordering
63    Metrics <http://www.ietf.org/rfc/rfc4737.txt>`__
64 *  `RFC 5481 Packet Delay Variation Applicability
65    Statement <http://www.ietf.org/rfc/rfc5481.txt>`__
66 *  `RFC 6201 Device Reset
67    Characterization <http://tools.ietf.org/html/rfc6201>`__
68
69 2. Details of the Level Test Design
70 ===================================
71
72 This section describes the features to be tested (`cf. 2.1
73 <#FeaturesToBeTested>`__), the test approach (`cf. 2.2 <#Approach>`__);
74 it also identifies the sets of test cases or scenarios (`cf. 2.3
75 <#TestIdentification>`__) along with the pass/fail criteria (`cf. 2.4
76 <#PassFail>`__) and the test deliverables (`cf. 2.5 <#TestDeliverables>`__).
77
78 2.1. Features to be tested
79 --------------------------
80
81 Characterizing virtual switches (i.e. Device Under Test (DUT) in this document)
82 includes measuring the following performance metrics:
83
84 - **Throughput** as defined by `RFC1242
85   <https://www.rfc-editor.org/rfc/rfc1242.txt>`__: The maximum rate at which
86   **none** of the offered frames are dropped by the DUT. The maximum frame
87   rate and bit rate that can be transmitted by the DUT without any error
88   should be recorded. Note there is an equivalent bit rate and a specific
89   layer at which the payloads contribute to the bits. Errors and
90   improperly formed frames or packets are dropped.
91 - **Packet delay** introduced by the DUT and its cumulative effect on
92   E2E networks. Frame delay can be measured equivalently.
93 - **Packet delay variation**: measured from the perspective of the
94   VNF/application. Packet delay variation is sometimes called "jitter".
95   However, we will avoid the term "jitter" as the term holds different
96   meaning to different groups of people. In this document we will
97   simply use the term packet delay variation. The preferred form for this
98   metric is the PDV form of delay variation defined in `RFC5481
99   <https://www.rfc-editor.org/rfc/rfc5481.txt>`__. The most relevant 
100   measurement of PDV considers the delay variation of a single user flow,
101   as this will be relevant to the size of end-system buffers to compensate
102   for delay variation. The measurement system's ability to store the 
103   delays of individual packets in the flow of interest is a key factor 
104   that determines the specific measurement method. At the outset, it is 
105   ideal to view the complete PDV distribution. Systems that can capture
106   and store packets and their delays have the freedom to calculate the 
107   reference minimum delay and to determine various quantiles of the PDV
108   distribution accurately (in post-measurement processing routines). 
109   Systems without storage must apply algorithms to calculate delay and
110   statistical measurements on the fly. For example, a system may store 
111   temporary estimates of the mimimum delay and the set of (100) packets 
112   with the longest delays during measurement (to calculate a high quantile,
113   and update these sets with new values periodically. 
114   In some cases, a limited number of delay histogram bins will be 
115   available, and the bin limits will need to be set using results from
116   repeated experiments. See section 8 of `RFC5481
117   <https://www.rfc-editor.org/rfc/rfc5481.txt>`__.
118 - **Packet loss** (within a configured waiting time at the receiver): All
119   packets sent to the DUT should be accounted for.
120 - **Burst behaviour**: measures the ability of the DUT to buffer packets.
121 - **Packet re-ordering**: measures the ability of the device under test to
122   maintain sending order throughout transfer to the destination.
123 - **Packet correctness**: packets or Frames must be well-formed, in that
124   they include all required fields, conform to length requirements, pass
125   integrity checks, etc.
126 - **Availability and capacity** of the DUT i.e. when the DUT is fully “up”
127   and connected:
128
129   - Includes power consumption of the CPU (in various power states) and
130     system.
131   - Includes CPU utilization.
132   - Includes the number of NIC interfaces supported.
133   - Includes headroom of VM workload processing cores (i.e. available
134     for applications).
135
136
137 2.2. Approach
138 ==============
139
140 In order to determine the packet transfer characteristics of a virtual
141 switch, the tests will be broken down into the following categories:
142
143 2.2.1 Test Categories
144 ----------------------
145 - **Throughput Tests** to measure the maximum forwarding rate (in
146   frames per second or fps) and bit rate (in Mbps) for a constant load
147   (as defined by `RFC1242 <https://www.rfc-editor.org/rfc/rfc1242.txt>`__)
148   without traffic loss.
149 - **Packet and Frame Delay Tests** to measure average, min and max
150   packet and frame delay for constant loads.
151 - **Stream Performance Tests** (TCP, UDP) to measure bulk data transfer
152   performance, i.e. how fast systems can send and receive data through
153   the switch.
154 - **Request/Response Performance** Tests (TCP, UDP) the measure the
155   transaction rate through the switch.
156 - **Packet Delay Tests** to understand latency distribution for
157   different packet sizes and over an extended test run to uncover
158   outliers.
159 - **Scalability Tests** to understand how the virtual switch performs
160   as the number of flows, active ports, complexity of the forwarding
161   logic's configuration... it has to deal with increases.
162 - **Control Path and Datapath Coupling** Tests, to understand how
163   closely coupled the datapath and the control path are as well as the
164   effect of this coupling on the performance of the DUT.
165 - **CPU and Memory Consumption Tests** to understand the virtual
166   switch’s footprint on the system, this includes:
167
168   * CPU utilization
169   * Cache utilization
170   * Memory footprint
171   * Time To Establish Flows Tests.
172
173 - **Noisy Neighbour Tests**, to understand the effects of resource
174   sharing on the performance of a virtual switch.
175
176 **Note:** some of the tests above can be conducted simultaneously where
177 the combined results would be insightful, for example Packet/Frame Delay
178 and Scalability.
179
180 2.2.2 Deployment Scenarios
181 --------------------------
182 The following represents possible deployments which can help to
183 determine the performance of both the virtual switch and the datapath
184 into the VNF:
185
186 Physical port → vSwitch → physical port
187 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188   .. code-block:: console
189
190                                                             _
191        +--------------------------------------------------+  |
192        |              +--------------------+              |  |
193        |              |                    |              |  |
194        |              |                    v              |  |  Host
195        |   +--------------+            +--------------+   |  |
196        |   |   phy port   |  vSwitch   |   phy port   |   |  |
197        +---+--------------+------------+--------------+---+ _|
198                   ^                           :
199                   |                           |
200                   :                           v
201        +--------------------------------------------------+
202        |                                                  |
203        |                traffic generator                 |
204        |                                                  |
205        +--------------------------------------------------+
206
207
208 Physical port → vSwitch → VNF → vSwitch → physical port
209 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
210   .. code-block:: console
211
212                                                              _
213        +---------------------------------------------------+  |
214        |                                                   |  |
215        |   +-------------------------------------------+   |  |
216        |   |                 Application               |   |  |
217        |   +-------------------------------------------+   |  |
218        |       ^                                  :        |  |
219        |       |                                  |        |  |  Guest
220        |       :                                  v        |  |
221        |   +---------------+           +---------------+   |  |
222        |   | logical port 0|           | logical port 1|   |  |
223        +---+---------------+-----------+---------------+---+ _|
224                ^                                  :
225                |                                  |
226                :                                  v         _
227        +---+---------------+----------+---------------+---+  |
228        |   | logical port 0|          | logical port 1|   |  |
229        |   +---------------+          +---------------+   |  |
230        |       ^                                  :       |  |
231        |       |                                  |       |  |  Host
232        |       :                                  v       |  |
233        |   +--------------+            +--------------+   |  |
234        |   |   phy port   |  vSwitch   |   phy port   |   |  |
235        +---+--------------+------------+--------------+---+ _|
236                   ^                           :
237                   |                           |
238                   :                           v
239        +--------------------------------------------------+
240        |                                                  |
241        |                traffic generator                 |
242        |                                                  |
243        +--------------------------------------------------+
244
245
246 Physical port → vSwitch → VNF → vSwitch → VNF → vSwitch → physical port
247 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
248
249   .. code-block:: console
250
251                                                        _
252     +----------------------+  +----------------------+  |
253     |   Guest 1            |  |   Guest 2            |  |
254     |   +---------------+  |  |   +---------------+  |  |
255     |   |  Application  |  |  |   |  Application  |  |  |
256     |   +---------------+  |  |   +---------------+  |  |
257     |       ^       |      |  |       ^       |      |  |
258     |       |       v      |  |       |       v      |  |  Guests
259     |   +---------------+  |  |   +---------------+  |  |
260     |   | logical ports |  |  |   | logical ports |  |  |
261     |   |   0       1   |  |  |   |   0       1   |  |  |
262     +---+---------------+--+  +---+---------------+--+ _|
263             ^       :                 ^       :
264             |       |                 |       |
265             :       v                 :       v        _
266     +---+---------------+---------+---------------+--+  |
267     |   |   0       1   |         |   3       4   |  |  |
268     |   | logical ports |         | logical ports |  |  |
269     |   +---------------+         +---------------+  |  |
270     |       ^       |                 ^       |      |  |  Host
271     |       |       L-----------------+       v      |  |
272     |   +--------------+          +--------------+   |  |
273     |   |   phy ports  | vSwitch  |   phy ports  |   |  |
274     +---+--------------+----------+--------------+---+ _|
275             ^       ^                 :       :
276             |       |                 |       |
277             :       :                 v       v
278     +--------------------------------------------------+
279     |                                                  |
280     |                traffic generator                 |
281     |                                                  |
282     +--------------------------------------------------+
283
284
285 Physical port → vSwitch → VNF
286 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
287
288   .. code-block:: console
289
290                                                           _
291     +---------------------------------------------------+  |
292     |                                                   |  |
293     |   +-------------------------------------------+   |  |
294     |   |                 Application               |   |  |
295     |   +-------------------------------------------+   |  |
296     |       ^                                           |  |
297     |       |                                           |  |  Guest
298     |       :                                           |  |
299     |   +---------------+                               |  |
300     |   | logical port 0|                               |  |
301     +---+---------------+-------------------------------+ _|
302             ^
303             |
304             :                                            _
305     +---+---------------+------------------------------+  |
306     |   | logical port 0|                              |  |
307     |   +---------------+                              |  |
308     |       ^                                          |  |
309     |       |                                          |  |  Host
310     |       :                                          |  |
311     |   +--------------+                               |  |
312     |   |   phy port   |  vSwitch                      |  |
313     +---+--------------+------------ -------------- ---+ _|
314                ^
315                |
316                :
317     +--------------------------------------------------+
318     |                                                  |
319     |                traffic generator                 |
320     |                                                  |
321     +--------------------------------------------------+
322
323 VNF → vSwitch → physical port
324 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
325
326   .. code-block:: console
327
328                                                           _
329     +---------------------------------------------------+  |
330     |                                                   |  |
331     |   +-------------------------------------------+   |  |
332     |   |                 Application               |   |  |
333     |   +-------------------------------------------+   |  |
334     |                                          :        |  |
335     |                                          |        |  |  Guest
336     |                                          v        |  |
337     |                               +---------------+   |  |
338     |                               | logical port  |   |  |
339     +-------------------------------+---------------+---+ _|
340                                                :
341                                                |
342                                                v         _
343     +------------------------------+---------------+---+  |
344     |                              | logical port  |   |  |
345     |                              +---------------+   |  |
346     |                                          :       |  |
347     |                                          |       |  |  Host
348     |                                          v       |  |
349     |                               +--------------+   |  |
350     |                     vSwitch   |   phy port   |   |  |
351     +-------------------------------+--------------+---+ _|
352                                            :
353                                            |
354                                            v
355     +--------------------------------------------------+
356     |                                                  |
357     |                traffic generator                 |
358     |                                                  |
359     +--------------------------------------------------+
360
361 VNF → vSwitch → VNF → vSwitch
362 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363
364   .. code-block:: console
365
366                                                              _
367     +-------------------------+  +-------------------------+  |
368     |   Guest 1               |  |   Guest 2               |  |
369     |   +-----------------+   |  |   +-----------------+   |  |
370     |   |   Application   |   |  |   |   Application   |   |  |
371     |   +-----------------+   |  |   +-----------------+   |  |
372     |                :        |  |       ^                 |  |
373     |                |        |  |       |                 |  |  Guest
374     |                v        |  |       :                 |  |
375     |     +---------------+   |  |   +---------------+     |  |
376     |     | logical port 0|   |  |   | logical port 0|     |  |
377     +-----+---------------+---+  +---+---------------+-----+ _|
378                     :                    ^
379                     |                    |
380                     v                    :                    _
381     +----+---------------+------------+---------------+-----+  |
382     |    |     port 0    |            |     port 1    |     |  |
383     |    +---------------+            +---------------+     |  |
384     |              :                    ^                   |  |
385     |              |                    |                   |  |  Host
386     |              +--------------------+                   |  |
387     |                                                       |  |
388     |                     vswitch                           |  |
389     +-------------------------------------------------------+ _|
390
391 HOST 1(Physical port → virtual switch → VNF → virtual switch →
392 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
393 Physical port) → HOST 2(Physical port → virtual switch → VNF →
394 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
395 virtual switch → Physical port)
396 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
397
398   .. code-block:: console
399
400                                                        _
401     +----------------------+  +----------------------+  |
402     |   Guest 1            |  |   Guest 2            |  |
403     |   +---------------+  |  |   +---------------+  |  |
404     |   |  Application  |  |  |   |  Application  |  |  |
405     |   +---------------+  |  |   +---------------+  |  |
406     |       ^       |      |  |       ^       |      |  |
407     |       |       v      |  |       |       v      |  |  Guests
408     |   +---------------+  |  |   +---------------+  |  |
409     |   | logical ports |  |  |   | logical ports |  |  |
410     |   |   0       1   |  |  |   |   0       1   |  |  |
411     +---+---------------+--+  +---+---------------+--+ _|
412             ^       :                 ^       :
413             |       |                 |       |
414             :       v                 :       v        _
415     +---+---------------+--+  +---+---------------+--+  |
416     |   |   0       1   |  |  |   |   3       4   |  |  |
417     |   | logical ports |  |  |   | logical ports |  |  |
418     |   +---------------+  |  |   +---------------+  |  |
419     |       ^       |      |  |       ^       |      |  |  Hosts
420     |       |       v      |  |       |       v      |  |
421     |   +--------------+   |  |   +--------------+   |  |
422     |   |   phy ports  |   |  |   |   phy ports  |   |  |
423     +---+--------------+---+  +---+--------------+---+ _|
424             ^       :                 :       :
425             |       +-----------------+       |
426             :                                 v
427     +--------------------------------------------------+
428     |                                                  |
429     |                traffic generator                 |
430     |                                                  |
431     +--------------------------------------------------+
432
433
434
435 **Note:** For tests where the traffic generator and/or measurement
436 receiver are implemented on VM and connected to the virtual switch
437 through vNIC, the issues of shared resources and interactions between
438 the measurement devices and the device under test must be considered.
439
440 **Note:** Some RFC 2889 tests require a full-mesh sending and receiving
441 pattern involving more than two ports. This possibility is illustrated in the
442 Physical port → vSwitch → VNF → vSwitch → VNF → vSwitch → physical port
443 diagram above (with 2 sending and 2 receiving ports, though all ports
444 could be used bi-directionally).
445
446 2.2.3 General Methodology:
447 --------------------------
448 To establish the baseline performance of the virtual switch, tests would
449 initially be run with a simple workload in the VNF (the recommended
450 simple workload VNF would be `DPDK <http://www.dpdk.org/>`__'s testpmd
451 application forwarding packets in a VM or vloop\_vnf a simple kernel
452 module that forwards traffic between two network interfaces inside the
453 virtualized environment while bypassing the networking stack).
454 Subsequently, the tests would also be executed with a real Telco
455 workload running in the VNF, which would exercise the virtual switch in
456 the context of higher level Telco NFV use cases, and prove that its
457 underlying characteristics and behaviour can be measured and validated.
458 Suitable real Telco workload VNFs are yet to be identified.
459
460 2.2.3.1 Default Test Parameters
461 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
462
463 The following list identifies the default parameters for suite of
464 tests:
465
466 -  Reference application: Simple forwarding or Open Source VNF.
467 -  Frame size (bytes): 64, 128, 256, 512, 1024, 1280, 1518, 2K, 4k OR
468    Packet size based on use-case (e.g. RTP 64B, 256B) OR Mix of packet sizes as
469    maintained by the Functest project <https://wiki.opnfv.org/traffic_profile_management>.
470 -  Reordering check: Tests should confirm that packets within a flow are
471    not reordered.
472 -  Duplex: Unidirectional / Bidirectional. Default: Full duplex with
473    traffic transmitting in both directions, as network traffic generally
474    does not flow in a single direction. By default the data rate of
475    transmitted traffic should be the same in both directions, please
476    note that asymmetric traffic (e.g. downlink-heavy) tests will be
477    mentioned explicitly for the relevant test cases.
478 -  Number of Flows: Default for non scalability tests is a single flow.
479    For scalability tests the goal is to test with maximum supported
480    flows but where possible will test up to 10 Million flows. Start with
481    a single flow and scale up. By default flows should be added
482    sequentially, tests that add flows simultaneously will explicitly
483    call out their flow addition behaviour. Packets are generated across
484    the flows uniformly with no burstiness.
485 -  Traffic Types: UDP, SCTP, RTP, GTP and UDP traffic.
486 -  Deployment scenarios are:
487 -  Physical → virtual switch → physical.
488 -  Physical → virtual switch → VNF → virtual switch → physical.
489 -  Physical → virtual switch → VNF → virtual switch → VNF → virtual
490    switch → physical.
491 -  Physical → virtual switch → VNF.
492 -  VNF → virtual switch → Physical.
493 -  VNF → virtual switch → VNF.
494
495 Tests MUST have these parameters unless otherwise stated. **Test cases
496 with non default parameters will be stated explicitly**.
497
498 **Note**: For throughput tests unless stated otherwise, test
499 configurations should ensure that traffic traverses the installed flows
500 through the switch, i.e. flows are installed and have an appropriate
501 time out that doesn't expire before packet transmission starts.
502
503 2.2.3.2 Flow Classification
504 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
505
506 Virtual switches classify packets into flows by processing and matching
507 particular header fields in the packet/frame and/or the input port where
508 the packets/frames arrived. The vSwitch then carries out an action on
509 the group of packets that match the classification parameters. Thus a
510 flow is considered to be a sequence of packets that have a shared set of
511 header field values or have arrived on the same port and have the same
512 action applied to them. Performance results can vary based on the
513 parameters the vSwitch uses to match for a flow. The recommended flow
514 classification parameters for L3 vSwitch performance tests are: the
515 input port, the source IP address, the destination IP address and the
516 Ethernet protocol type field. It is essential to increase the flow
517 time-out time on a vSwitch before conducting any performance tests that
518 do not measure the flow set-up time. Normally the first packet of a
519 particular flow will install the flow in the vSwitch which adds an
520 additional latency, subsequent packets of the same flow are not subject
521 to this latency if the flow is already installed on the vSwitch.
522
523 2.2.3.3 Test Priority
524 ~~~~~~~~~~~~~~~~~~~~~
525
526 Tests will be assigned a priority in order to determine which tests
527 should be implemented immediately and which tests implementations
528 can be deferred.
529
530 Priority can be of following types: - Urgent: Must be implemented
531 immediately. - High: Must be implemented in the next release. - Medium:
532 May be implemented after the release. - Low: May or may not be
533 implemented at all.
534
535 2.2.3.4 SUT Setup
536 ~~~~~~~~~~~~~~~~~
537
538 The SUT should be configured to its "default" state. The
539 SUT's configuration or set-up must not change between tests in any way
540 other than what is required to do the test. All supported protocols must
541 be configured and enabled for each test set up.
542
543 2.2.3.4.1 Port Configuration
544 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
545
546 The DUT should be configured with n ports where
547 n is a multiple of 2. Half of the ports on the DUT should be used as
548 ingress ports and the other half of the ports on the DUT should be used
549 as egress ports. Where a DUT has more than 2 ports, the ingress data
550 streams should be set-up so that they transmit packets to the egress
551 ports in sequence so that there is an even distribution of traffic
552 across ports. For example, if a DUT has 4 ports 0(ingress), 1(ingress),
553 2(egress) and 3(egress), the traffic stream directed at port 0 should
554 output a packet to port 2 followed by a packet to port 3. The traffic
555 stream directed at port 1 should also output a packet to port 2 followed
556 by a packet to port 3.
557
558 2.2.3.4.2 Frame Formats
559 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
560
561 Frame formats Layer 2 (data link layer) protocols
562 ++++++++++++++++++++++++++++++++++++++++++++++++++
563 -  Ethernet II
564
565   .. code-block:: console
566
567      +---------------------+--------------------+-----------+
568      |   Ethernet Header   |       Payload      | Check Sum |
569      +---------------------+--------------------+-----------+
570      |_____________________|____________________|___________|
571            14 Bytes            46 - 1500 Bytes      4 Bytes
572
573 Layer 3 (network layer) protocols
574 ++++++++++++++++++++++++++++++++++
575
576 -  IPv4
577
578   .. code-block:: console
579
580      +---------------------+--------------------+--------------------+-----------+
581      |   Ethernet Header   |      IP Header     |       Payload      | Check Sum |
582      +---------------------+--------------------+--------------------+-----------+
583      |_____________________|____________________|____________________|___________|
584            14 Bytes            20 bytes             26 - 1480 Bytes      4 Bytes
585
586 -  IPv6
587
588   .. code-block:: console
589
590      +---------------------+--------------------+--------------------+-----------+
591      |   Ethernet Header   |      IP Header     |       Payload      | Check Sum |
592      +---------------------+--------------------+--------------------+-----------+
593      |_____________________|____________________|____________________|___________|
594            14 Bytes            40 bytes             26 - 1460 Bytes      4 Bytes
595
596 Layer 4 (transport layer) protocols
597 ++++++++++++++++++++++++++++++++++++
598   - TCP
599   - UDP
600   - SCTP
601
602   .. code-block:: console
603
604      +---------------------+--------------------+-----------------+--------------------+-----------+
605      |   Ethernet Header   |      IP Header     | Layer 4 Header  |       Payload      | Check Sum |
606      +---------------------+--------------------+-----------------+--------------------+-----------+
607      |_____________________|____________________|_________________|____________________|___________|
608            14 Bytes            40 bytes               20 Bytes       6 - 1460 Bytes      4 Bytes
609
610 Layer 5 (application layer) protocols
611 +++++++++++++++++++++++++++++++++++++
612   - RTP
613   - GTP
614
615   .. code-block:: console
616
617      +---------------------+--------------------+-----------------+--------------------+-----------+
618      |   Ethernet Header   |      IP Header     | Layer 4 Header  |       Payload      | Check Sum |
619      +---------------------+--------------------+-----------------+--------------------+-----------+
620      |_____________________|____________________|_________________|____________________|___________|
621            14 Bytes            20 bytes               20 Bytes         Min 6 Bytes       4 Bytes
622
623
624 2.2.3.4.3 Packet Throughput
625 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
626 There is a difference between an Ethernet frame,
627 an IP packet, and a UDP datagram. In the seven-layer OSI model of
628 computer networking, packet refers to a data unit at layer 3 (network
629 layer). The correct term for a data unit at layer 2 (data link layer) is
630 a frame, and at layer 4 (transport layer) is a segment or datagram.
631
632 Important concepts related to 10GbE performance are frame rate and
633 throughput. The MAC bit rate of 10GbE, defined in the IEEE standard 802
634 .3ae, is 10 billion bits per second. Frame rate is based on the bit rate
635 and frame format definitions. Throughput, defined in IETF RFC 1242, is
636 the highest rate at which the system under test can forward the offered
637 load, without loss.
638
639 The frame rate for 10GbE is determined by a formula that divides the 10
640 billion bits per second by the preamble + frame length + inter-frame
641 gap.
642
643 The maximum frame rate is calculated using the minimum values of the
644 following parameters, as described in the IEEE 802 .3ae standard:
645
646 -  Preamble: 8 bytes \* 8 = 64 bits
647 -  Frame Length: 64 bytes (minimum) \* 8 = 512 bits
648 -  Inter-frame Gap: 12 bytes (minimum) \* 8 = 96 bits
649
650 Therefore, Maximum Frame Rate (64B Frames)
651 = MAC Transmit Bit Rate / (Preamble + Frame Length + Inter-frame Gap)
652 = 10,000,000,000 / (64 + 512 + 96)
653 = 10,000,000,000 / 672
654 = 14,880,952.38 frame per second (fps)
655
656 2.2.3.4.4 System isolation and validation
657 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
658
659 A key consideration when conducting any sort of benchmark is trying to
660 ensure the consistency and repeatability of test results between runs.
661 When benchmarking the performance of a virtual switch there are many
662 factors that can affect the consistency of results. This section
663 describes these factors and the measures that can be taken to limit
664 their effects. In addition, this section will outline some system tests
665 to validate the platform and the VNF before conducting any vSwitch
666 benchmarking tests.
667
668 System Isolation
669 ++++++++++++++++
670 When conducting a benchmarking test on any SUT, it is essential to limit
671 (and if reasonable, eliminate) any noise that may interfere with the
672 accuracy of the metrics collected by the test. This noise may be
673 introduced by other hardware or software (OS, other applications), and
674 can result in significantly varying performance metrics being collected
675 between consecutive runs of the same test. In the case of characterizing
676 the performance of a virtual switch, there are a number of configuration
677 parameters that can help increase the repeatability and stability of
678 test results, including:
679
680 -  OS/GRUB configuration:
681
682    -  maxcpus = n where n >= 0; limits the kernel to using 'n'
683       processors. Only use exactly what you need.
684    -  isolcpus: Isolate CPUs from the general scheduler. Isolate all
685       CPUs bar one which will be used by the OS.
686    -  use taskset to affinitize the forwarding application and the VNFs
687       onto isolated cores. VNFs and the vSwitch should be allocated
688       their own cores, i.e. must not share the same cores. vCPUs for the
689       VNF should be affinitized to individual cores also.
690    -  Limit the amount of background applications that are running and
691       set OS to boot to runlevel 3. Make sure to kill any unnecessary
692       system processes/daemons.
693    -  Only enable hardware that you need to use for your test – to
694       ensure there are no other interrupts on the system.
695    -  Configure NIC interrupts to only use the cores that are not
696       allocated to any other process (VNF/vSwitch).
697
698 -  NUMA configuration: Any unused sockets in a multi-socket system
699    should be disabled.
700 -  CPU pinning: The vSwitch and the VNF should each be affinitized to
701    separate logical cores using a combination of maxcpus, isolcpus and
702    taskset.
703 -  BIOS configuration: BIOS should be configured for performance where
704    an explicit option exists, sleep states should be disabled, any
705    virtualization optimization technologies should be enabled, and
706    hyperthreading should also be enabled.
707
708 System Validation
709 +++++++++++++++++
710 System validation is broken down into two sub-categories: Platform
711 validation and VNF validation. The validation test itself involves
712 verifying the forwarding capability and stability for the sub-system
713 under test. The rationale behind system validation is two fold. Firstly
714 to give a tester confidence in the stability of the platform or VNF that
715 is being tested; and secondly to provide base performance comparison
716 points to understand the overhead introduced by the virtual switch.
717
718 * Benchmark platform forwarding capability: This is an OPTIONAL test
719   used to verify the platform and measure the base performance (maximum
720   forwarding rate in fps and latency) that can be achieved by the
721   platform without a vSwitch or a VNF. The following diagram outlines
722   the set-up for benchmarking Platform forwarding capability:
723
724   .. code-block:: console
725
726                                                             __
727        +--------------------------------------------------+   |
728        |   +------------------------------------------+   |   |
729        |   |                                          |   |   |
730        |   |          l2fw or DPDK L2FWD app          |   |  Host
731        |   |                                          |   |   |
732        |   +------------------------------------------+   |   |
733        |   |                 NIC                      |   |   |
734        +---+------------------------------------------+---+ __|
735                   ^                           :
736                   |                           |
737                   :                           v
738        +--------------------------------------------------+
739        |                                                  |
740        |                traffic generator                 |
741        |                                                  |
742        +--------------------------------------------------+
743
744 * Benchmark VNF forwarding capability: This test is used to verify
745   the VNF and measure the base performance (maximum forwarding rate in
746   fps and latency) that can be achieved by the VNF without a vSwitch.
747   The performance metrics collected by this test will serve as a key
748   comparison point for NIC passthrough technologies and vSwitches. VNF
749   in this context refers to the hypervisor and the VM. The following
750   diagram outlines the set-up for benchmarking VNF forwarding
751   capability:
752
753   .. code-block:: console
754
755                                                             __
756        +--------------------------------------------------+   |
757        |   +------------------------------------------+   |   |
758        |   |                                          |   |   |
759        |   |                 VNF                      |   |   |
760        |   |                                          |   |   |
761        |   +------------------------------------------+   |   |
762        |   |          Passthrough/SR-IOV              |   |  Host
763        |   +------------------------------------------+   |   |
764        |   |                 NIC                      |   |   |
765        +---+------------------------------------------+---+ __|
766                   ^                           :
767                   |                           |
768                   :                           v
769        +--------------------------------------------------+
770        |                                                  |
771        |                traffic generator                 |
772        |                                                  |
773        +--------------------------------------------------+
774
775
776 Methodology to benchmark Platform/VNF forwarding capability
777 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
778
779 The recommended methodology for the platform/VNF validation and
780 benchmark is: - Run `RFC2889 <https://www.rfc-editor.org/rfc/rfc2289.txt>`__
781 Maximum Forwarding Rate test, this test will produce maximum
782 forwarding rate and latency results that will serve as the
783 expected values. These expected values can be used in
784 subsequent steps or compared with in subsequent validation tests. -
785 Transmit bidirectional traffic at line rate/max forwarding rate
786 (whichever is higher) for at least 72 hours, measure throughput (fps)
787 and latency. - Note: Traffic should be bidirectional. - Establish a
788 baseline forwarding rate for what the platform can achieve. - Additional
789 validation: After the test has completed for 72 hours run bidirectional
790 traffic at the maximum forwarding rate once more to see if the system is
791 still functional and measure throughput (fps) and latency. Compare the
792 measure the new obtained values with the expected values.
793
794 **NOTE 1**: How the Platform is configured for its forwarding capability
795 test (BIOS settings, GRUB configuration, runlevel...) is how the
796 platform should be configured for every test after this
797
798 **NOTE 2**: How the VNF is configured for its forwarding capability test
799 (# of vCPUs, vNICs, Memory, affinitization…) is how it should be
800 configured for every test that uses a VNF after this.
801
802 2.2.4 RFCs for testing switch performance
803 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
804
805 The starting point for defining the suite of tests for benchmarking the
806 performance of a virtual switch is to take existing RFCs and standards
807 that were designed to test their physical counterparts and adapting them
808 for testing virtual switches. The rationale behind this is to establish
809 a fair comparison between the performance of virtual and physical
810 switches. This section outlines the RFCs that are used by this
811 specification.
812
813 RFC 1242 Benchmarking Terminology for Network Interconnection
814 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
815 Devices RFC 1242 defines the terminology that is used in describing
816 performance benchmarking tests and their results. Definitions and
817 discussions covered include: Back-to-back, bridge, bridge/router,
818 constant load, data link frame size, frame loss rate, inter frame gap,
819 latency, and many more.
820
821 RFC 2544 Benchmarking Methodology for Network Interconnect Devices
822 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
823 RFC 2544 outlines a benchmarking methodology for network Interconnect
824 Devices. The methodology results in performance metrics such as latency,
825 frame loss percentage, and maximum data throughput.
826
827 In this document network “throughput” (measured in millions of frames
828 per second) is based on RFC 2544, unless otherwise noted. Frame size
829 refers to Ethernet frames ranging from smallest frames of 64 bytes to
830 largest frames of 4K bytes.
831
832 Types of tests are:
833
834 1. Throughput test defines the maximum number of frames per second
835    that can be transmitted without any error.
836
837 2. Latency test measures the time required for a frame to travel from
838    the originating device through the network to the destination device.
839    Please note that RFC2544 Latency measurement will be superseded with
840    a measurement of average latency over all successfully transferred
841    packets or frames.
842
843 3. Frame loss test measures the network’s
844    response in overload conditions - a critical indicator of the
845    network’s ability to support real-time applications in which a
846    large amount of frame loss will rapidly degrade service quality.
847
848 4. Burst test assesses the buffering capability of a switch. It
849    measures the maximum number of frames received at full line rate
850    before a frame is lost. In carrier Ethernet networks, this
851    measurement validates the excess information rate (EIR) as defined in
852    many SLAs.
853
854 5. System recovery to characterize speed of recovery from an overload
855    condition.
856
857 6. Reset to characterize speed of recovery from device or software
858    reset. This type of test has been updated by `RFC6201 <https://www.rfc-editor.org/rfc/rfc6201.txt>`__ as such,
859    the methodology defined by this specification will be that of RFC 6201.
860
861 Although not included in the defined RFC 2544 standard, another crucial
862 measurement in Ethernet networking is packet delay variation. The
863 definition set out by this specification comes from
864 `RFC5481 <https://www.rfc-editor.org/rfc/rfc5481.txt>`__.
865
866 RFC 2285 Benchmarking Terminology for LAN Switching Devices
867 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
868 RFC 2285 defines the terminology that is used to describe the
869 terminology for benchmarking a LAN switching device. It extends RFC
870 1242 and defines: DUTs, SUTs, Traffic orientation and distribution,
871 bursts, loads, forwarding rates, etc.
872
873 RFC 2889 Benchmarking Methodology for LAN Switching
874 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
875 RFC 2889 outlines a benchmarking methodology for LAN switching, it
876 extends RFC 2544. The outlined methodology gathers performance
877 metrics for forwarding, congestion control, latency, address handling
878 and finally filtering.
879
880 RFC 3918 Methodology for IP Multicast Benchmarking
881 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
882 RFC 3918 outlines a methodology for IP Multicast benchmarking.
883
884 RFC 4737 Packet Reordering Metrics
885 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
886 RFC 4737 describes metrics for identifying and counting re-ordered
887 packets within a stream, and metrics to measure the extent each
888 packet has been re-ordered.
889
890 RFC 5481 Packet Delay Variation Applicability Statement
891 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
892 RFC 5481 defined two common, but different forms of delay variation
893 metrics, and compares the metrics over a range of networking
894 circumstances and tasks. The most suitable form for vSwitch
895 benchmarking is the "PDV" form.
896
897 RFC 6201 Device Reset Characterization
898 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
899 RFC 6201 extends the methodology for characterizing the speed of
900 recovery of the DUT from device or software reset described in RFC
901 2544.
902
903 2.2.5 Details of the Test Report
904 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
905
906 There are a number of parameters related to the system, DUT and tests
907 that can affect the repeatability of a test results and should be
908 recorded. In order to minimise the variation in the results of a test,
909 it is recommended that the test report includes the following information:
910
911 -  Hardware details including:
912
913    -  Platform details.
914    -  Processor details.
915    -  Memory information (see below)
916    -  Number of enabled cores.
917    -  Number of cores used for the test.
918    -  Number of physical NICs, as well as their details (manufacturer,
919       versions, type and the PCI slot they are plugged into).
920    -  NIC interrupt configuration.
921    -  BIOS version, release date and any configurations that were
922       modified.
923
924 -  Software details including:
925
926    -  OS version (for host and VNF)
927    -  Kernel version (for host and VNF)
928    -  GRUB boot parameters (for host and VNF).
929    -  Hypervisor details (Type and version).
930    -  Selected vSwitch, version number or commit id used.
931    -  vSwitch launch command line if it has been parameterised.
932    -  Memory allocation to the vSwitch – which NUMA node it is using,
933       and how many memory channels.
934    -  Where the vswitch is built from source: compiler details including
935       versions and the flags that were used to compile the vSwitch.
936    -  DPDK or any other SW dependency version number or commit id used.
937    -  Memory allocation to a VM - if it's from Hugpages/elsewhere.
938    -  VM storage type: snapshot/independent persistent/independent
939       non-persistent.
940    -  Number of VMs.
941    -  Number of Virtual NICs (vNICs), versions, type and driver.
942    -  Number of virtual CPUs and their core affinity on the host.
943    -  Number vNIC interrupt configuration.
944    -  Thread affinitization for the applications (including the vSwitch
945       itself) on the host.
946    -  Details of Resource isolation, such as CPUs designated for
947       Host/Kernel (isolcpu) and CPUs designated for specific processes
948       (taskset).
949
950 -  Memory Details
951
952    -  Total memory
953    -  Type of memory
954    -  Used memory
955    -  Active memory
956    -  Inactive memory
957    -  Free memory
958    -  Buffer memory
959    -  Swap cache
960    -  Total swap
961    -  Used swap
962    -  Free swap
963
964 -  Test duration.
965 -  Number of flows.
966 -  Traffic Information:
967
968    -  Traffic type - UDP, TCP, IMIX / Other.
969    -  Packet Sizes.
970
971 -  Deployment Scenario.
972
973 **Note**: Tests that require additional parameters to be recorded will
974 explicitly specify this.
975
976 2.3. Test identification
977 ------------------------
978 2.3.1 Throughput tests
979 ~~~~~~~~~~~~~~~~~~~~~~
980 The following tests aim to determine the maximum forwarding rate that
981 can be achieved with a virtual switch. The list is not exhaustive but
982 should indicate the type of tests that should be required. It is
983 expected that more will be added.
984
985 Test ID: LTD.Throughput.RFC2544.PacketLossRatio
986 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
987     **Title**: RFC 2544 X% packet loss ratio Throughput and Latency Test
988
989     **Prerequisite Test**: N/A
990
991     **Priority**:
992
993     **Description**:
994
995     This test determines the DUT's maximum forwarding rate with X% traffic
996     loss for a constant load (fixed length frames at a fixed interval time).
997     The default loss percentages to be tested are: - X = 0% - X = 10^-7%
998
999     Note: Other values can be tested if required by the user.
1000
1001     The selected frame sizes are those previously defined under `Default
1002     Test Parameters <#DefaultParams>`__. The test can also be used to
1003     determine the average latency of the traffic.
1004
1005     Under the `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__
1006     test methodology, the test duration will
1007     include a number of trials; each trial should run for a minimum period
1008     of 60 seconds. A binary search methodology must be applied for each
1009     trial to obtain the final result.
1010
1011     **Expected Result**: At the end of each trial, the presence or absence
1012     of loss determines the modification of offered load for the next trial,
1013     converging on a maximum rate, or
1014     `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__ Throughput with X% loss.
1015     The Throughput load is re-used in related
1016     `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__ tests and other
1017     tests.
1018
1019     **Metrics Collected**:
1020
1021     The following are the metrics collected for this test:
1022
1023     -  The maximum forwarding rate in Frames Per Second (FPS) and Mbps of
1024        the DUT for each frame size with X% packet loss.
1025     -  The average latency of the traffic flow when passing through the DUT
1026        (if testing for latency, note that this average is different from the
1027        test specified in Section 26.3 of
1028        `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__).
1029     -  CPU and memory utilization may also be collected as part of this
1030        test, to determine the vSwitch's performance footprint on the system.
1031
1032 Test ID: LTD.Throughput.RFC2544.PacketLossRatioFrameModification
1033 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1034     **Title**: RFC 2544 X% packet loss Throughput and Latency Test with
1035     packet modification
1036
1037     **Prerequisite Test**: N/A
1038
1039     **Priority**:
1040
1041     **Description**:
1042
1043     This test determines the DUT's maximum forwarding rate with X% traffic
1044     loss for a constant load (fixed length frames at a fixed interval time).
1045     The default loss percentages to be tested are: - X = 0% - X = 10^-7%
1046
1047     Note: Other values can be tested if required by the user.
1048
1049     The selected frame sizes are those previously defined under `Default
1050     Test Parameters <#DefaultParams>`__. The test can also be used to
1051     determine the average latency of the traffic.
1052
1053     Under the `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__
1054     test methodology, the test duration will
1055     include a number of trials; each trial should run for a minimum period
1056     of 60 seconds. A binary search methodology must be applied for each
1057     trial to obtain the final result.
1058
1059     During this test, the DUT must perform the following operations on the
1060     traffic flow:
1061
1062     -  Perform packet parsing on the DUT's ingress port.
1063     -  Perform any relevant address look-ups on the DUT's ingress ports.
1064     -  Modify the packet header before forwarding the packet to the DUT's
1065        egress port. Packet modifications include:
1066
1067        -  Modifying the Ethernet source or destination MAC address.
1068        -  Modifying/adding a VLAN tag. (**Recommended**).
1069        -  Modifying/adding a MPLS tag.
1070        -  Modifying the source or destination ip address.
1071        -  Modifying the TOS/DSCP field.
1072        -  Modifying the source or destination ports for UDP/TCP/SCTP.
1073        -  Modifying the TTL.
1074
1075     **Expected Result**: The Packet parsing/modifications require some
1076     additional degree of processing resource, therefore the
1077     `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__
1078     Throughput is expected to be somewhat lower than the Throughput level
1079     measured without additional steps. The reduction is expected to be
1080     greatest on tests with the smallest packet sizes (greatest header
1081     processing rates).
1082
1083     **Metrics Collected**:
1084
1085     The following are the metrics collected for this test:
1086
1087     -  The maximum forwarding rate in Frames Per Second (FPS) and Mbps of
1088        the DUT for each frame size with X% packet loss and packet
1089        modification operations being performed by the DUT.
1090     -  The average latency of the traffic flow when passing through the DUT
1091        (if testing for latency, note that this average is different from the
1092        test specified in Section 26.3 of
1093        `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__).
1094     -  The `RFC5481 <https://www.rfc-editor.org/rfc/rfc5481.txt>`__
1095        PDV form of delay variation on the traffic flow,
1096        using the 99th percentile.
1097     -  CPU and memory utilization may also be collected as part of this
1098        test, to determine the vSwitch's performance footprint on the system.
1099
1100 Test ID: LTD.Throughput.RFC2544.Profile
1101 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1102     **Title**: RFC 2544 Throughput and Latency Profile
1103
1104     **Prerequisite Test**: N/A
1105
1106     **Priority**:
1107
1108     **Description**:
1109
1110     This test reveals how throughput and latency degrades as the offered
1111     rate varies in the region of the DUT's maximum forwarding rate as
1112     determined by LTD.Throughput.RFC2544.PacketLossRatio (0% Packet Loss).
1113     For example it can be used to determine if the degradation of throughput
1114     and latency as the offered rate increases is slow and graceful or sudden
1115     and severe.
1116
1117     The selected frame sizes are those previously defined under `Default
1118     Test Parameters <#DefaultParams>`__.
1119
1120     The offered traffic rate is described as a percentage delta with respect
1121     to the DUT's maximum forwarding rate as determined by
1122     LTD.Throughput.RFC2544.PacketLoss Ratio (0% Packet Loss case). A delta
1123     of 0% is equivalent to an offered traffic rate equal to the maximum
1124     forwarding rate; A delta of +50% indicates an offered rate half-way
1125     between the maximum forwarding rate and line-rate, whereas a delta of
1126     -50% indicates an offered rate of half the maximum rate. Therefore the
1127     range of the delta figure is natuarlly bounded at -100% (zero offered
1128     traffic) and +100% (traffic offered at line rate).
1129
1130     The following deltas to the maximum forwarding rate should be applied:
1131
1132     -  -50%, -10%, 0%, +10% & +50%
1133
1134     **Expected Result**: For each packet size a profile should be produced
1135     of how throughput and latency vary with offered rate.
1136
1137     **Metrics Collected**:
1138
1139     The following are the metrics collected for this test:
1140
1141     -  The forwarding rate in Frames Per Second (FPS) and Mbps of the DUT
1142        for each delta to the maximum forwarding rate and for each frame
1143        size.
1144     -  The average latency for each delta to the maximum forwarding rate and
1145        for each frame size.
1146     -  CPU and memory utilization may also be collected as part of this
1147        test, to determine the vSwitch's performance footprint on the system.
1148     -  Any failures experienced (for example if the vSwitch crashes, stops
1149        processing packets, restarts or becomes unresponsive to commands)
1150        when the offered load is above Maximum Throughput MUST be recorded
1151        and reported with the results.
1152
1153 Test ID: LTD.Throughput.RFC2544.SystemRecoveryTime
1154 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1155     **Title**: RFC 2544 System Recovery Time Test
1156
1157     **Prerequisite Test** LTD.Throughput.RFC2544.PacketLossRatio
1158
1159     **Priority**:
1160
1161     **Description**:
1162
1163     The aim of this test is to determine the length of time it takes the DUT
1164     to recover from an overload condition for a constant load (fixed length
1165     frames at a fixed interval time). The selected frame sizes are those
1166     previously defined under `Default Test Parameters <#DefaultParams>`__,
1167     traffic should be sent to the DUT under normal conditions. During the
1168     duration of the test and while the traffic flows are passing though the
1169     DUT, at least one situation leading to an overload condition for the DUT
1170     should occur. The time from the end of the overload condition to when
1171     the DUT returns to normal operations should be measured to determine
1172     recovery time. Prior to overloading the DUT, one should record the
1173     average latency for 10,000 packets forwarded through the DUT.
1174
1175     The overload condition SHOULD be to transmit traffic at a very high
1176     frame rate to the DUT (150% of the maximum 0% packet loss rate as
1177     determined by LTD.Throughput.RFC2544.PacketLossRatio or line-rate
1178     whichever is lower), for at least 60 seconds, then reduce the frame rate
1179     to 75% of the maximum 0% packet loss rate. A number of time-stamps
1180     should be recorded: - Record the time-stamp at which the frame rate was
1181     reduced and record a second time-stamp at the time of the last frame
1182     lost. The recovery time is the difference between the two timestamps. -
1183     Record the average latency for 10,000 frames after the last frame loss
1184     and continue to record average latency measurements for every 10,000
1185     frames, when latency returns to within 10% of pre-overload levels record
1186     the time-stamp.
1187
1188     **Expected Result**:
1189
1190     **Metrics collected**
1191
1192     The following are the metrics collected for this test:
1193
1194     -  The length of time it takes the DUT to recover from an overload
1195        condition.
1196     -  The length of time it takes the DUT to recover the average latency to
1197        pre-overload conditions.
1198
1199     **Deployment scenario**:
1200
1201     -  Physical → virtual switch → physical.
1202
1203 Test ID: LTD.Throughput.RFC2544.BackToBackFrames
1204 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1205     **Title**: RFC2544 Back To Back Frames Test
1206
1207     **Prerequisite Test**: N
1208
1209     **Priority**:
1210
1211     **Description**:
1212
1213     The aim of this test is to characterize the ability of the DUT to
1214     process back-to-back frames. For each frame size previously defined
1215     under `Default Test Parameters <#DefaultParams>`__, a burst of traffic
1216     is sent to the DUT with the minimum inter-frame gap between each frame.
1217     If the number of received frames equals the number of frames that were
1218     transmitted, the burst size should be increased and traffic is sent to
1219     the DUT again. The value measured is the back-to-back value, that is the
1220     maximum burst size the DUT can handle without any frame loss.
1221
1222     **Expected Result**:
1223
1224     Tests of back-to-back frames with physical devices have produced
1225     unstable results in some cases. All tests should be repeated in multiple
1226     test sessions and results stability should be examined.
1227
1228     **Metrics collected**
1229
1230     The following are the metrics collected for this test:
1231
1232     -  The back-to-back value, which is the the number of frames in the
1233        longest burst that the DUT will handle without the loss of any
1234        frames.
1235     -  CPU and memory utilization may also be collected as part of this
1236        test, to determine the vSwitch's performance footprint on the system.
1237
1238     **Deployment scenario**:
1239
1240     -  Physical → virtual switch → physical.
1241
1242 Test ID: LTD.Throughput.RFC2889.Soak
1243 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1244     **Title**: RFC 2889 X% packet loss Throughput Soak Test
1245
1246     **Prerequisite Test** LTD.Throughput.RFC2544.PacketLossRatio
1247
1248     **Priority**:
1249
1250     **Description**:
1251
1252     The aim of this test is to understand the Throughput stability over an
1253     extended test duration in order to uncover any outliers. To allow for an
1254     extended test duration, the test should ideally run for 24 hours or, if
1255     this is not possible, for at least 6 hours. For this test, each frame
1256     size must be sent at the highest Throughput with X% packet loss, as
1257     determined in the prerequisite test. The default loss percentages to be
1258     tested are: - X = 0% - X = 10^-7%
1259
1260     Note: Other values can be tested if required by the user.
1261
1262     **Expected Result**:
1263
1264     **Metrics Collected**:
1265
1266     The following are the metrics collected for this test:
1267
1268     -  Throughput stability of the DUT.
1269
1270        -  This means reporting the number of packets lost per time interval
1271           and reporting any time intervals with packet loss. The
1272           `RFC2889 <https://www.rfc-editor.org/rfc/rfc2289.txt>`__
1273           Forwarding Rate shall be measured in each interval.
1274           An interval of 60s is suggested.
1275
1276     -  CPU and memory utilization may also be collected as part of this
1277        test, to determine the vSwitch's performance footprint on the system.
1278     -  The `RFC5481 <https://www.rfc-editor.org/rfc/rfc5481.txt>`__
1279        PDV form of delay variation on the traffic flow,
1280        using the 99th percentile.
1281
1282 Test ID: LTD.Throughput.RFC2889.SoakFrameModification
1283 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1284     **Title**: RFC 2889 Throughput Soak Test with Frame Modification
1285
1286     **Prerequisite Test**: LTD.Throughput.RFC2544.PacketLossRatioFrameModification (0% Packet Loss)
1287
1288     **Priority**:
1289
1290     **Description**:
1291
1292     The aim of this test is to understand the throughput stability over an
1293     extended test duration in order to uncover any outliers. To allow for an
1294     extended test duration, the test should ideally run for 24 hours or, if
1295     this is not possible, for at least 6 hour. For this test, each frame
1296     size must be sent at the highest Throughput with 0% packet loss, as
1297     determined in the prerequisite test.
1298
1299     During this test, the DUT must perform the following operations on the
1300     traffic flow:
1301
1302     -  Perform packet parsing on the DUT's ingress port.
1303     -  Perform any relevant address look-ups on the DUT's ingress ports.
1304     -  Modify the packet header before forwarding the packet to the DUT's
1305        egress port. Packet modifications include:
1306
1307        -  Modifying the Ethernet source or destination MAC address.
1308        -  Modifying/adding a VLAN tag (**Recommended**).
1309        -  Modifying/adding a MPLS tag.
1310        -  Modifying the source or destination ip address.
1311        -  Modifying the TOS/DSCP field.
1312        -  Modifying the source or destination ports for UDP/TCP/SCTP.
1313        -  Modifying the TTL.
1314
1315     **Expected Result**:
1316
1317     **Metrics Collected**:
1318
1319     The following are the metrics collected for this test:
1320
1321     -  Throughput stability of the DUT.
1322
1323        -  This means reporting the number of packets lost per time interval
1324           and reporting any time intervals with packet loss. The
1325           `RFC2889 <https://www.rfc-editor.org/rfc/rfc2289.txt>`__
1326           Forwarding Rate shall be measured in each interval.
1327           An interval of 60s is suggested.
1328
1329     -  CPU and memory utilization may also be collected as part of this
1330        test, to determine the vSwitch's performance footprint on the system.
1331     -  The `RFC5481 <https://www.rfc-editor.org/rfc/rfc5481.txt>`__ PDV form of delay variation on the traffic flow,
1332        using the 99th percentile.
1333
1334 Test ID: LTD.Throughput.RFC6201.ResetTime
1335 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1336     **Title**: RFC 6201 Reset Time Test
1337
1338     **Prerequisite Test**: N/A
1339
1340     **Priority**:
1341
1342     **Description**:
1343
1344     The aim of this test is to determine the length of time it takes the DUT
1345     to recover from a reset.
1346
1347     Two reset methods are defined - planned and unplanned. A planned reset
1348     requires stopping and restarting the virtual switch by the usual
1349     'graceful' method defined by it's documentation. An unplanned reset
1350     requires simulating a fatal internal fault in the virtual switch - for
1351     example by using kill -SIGKILL on a Linux environment.
1352
1353     Both reset methods SHOULD be exercised.
1354
1355     For each frame size previously defined under `Default Test
1356     Parameters <#DefaultParams>`__, traffic should be sent to the DUT under
1357     normal conditions. During the duration of the test and while the traffic
1358     flows are passing through the DUT, the DUT should be reset and the Reset
1359     time measured. The Reset time is the total time that a device is
1360     determined to be out of operation and includes the time to perform the
1361     reset and the time to recover from it (cf. `RFC6201 <https://www.rfc-editor.org/rfc/rfc6201.txt>`__).
1362
1363     `RFC6201 <https://www.rfc-editor.org/rfc/rfc6201.txt>`__ defines two methods to measure the Reset time:
1364       - Frame-Loss Method: which requires the monitoring of the number of
1365         lost frames and calculates the Reset time based on the number of
1366         frames lost and the offered rate according to the following
1367         formula:
1368
1369         .. code-block:: console
1370
1371                                     Frames_lost (packets)
1372                  Reset_time = -------------------------------------
1373                                 Offered_rate (packets per second)
1374
1375       - Timestamp Method: which measures the time from which the last frame
1376         is forwarded from the DUT to the time the first frame is forwarded
1377         after the reset. This involves time-stamping all transmitted frames
1378         and recording the timestamp of the last frame that was received prior
1379         to the reset and also measuring the timestamp of the first frame that
1380         is received after the reset. The Reset time is the difference between
1381         these two timestamps.
1382
1383     According to `RFC6201 <https://www.rfc-editor.org/rfc/rfc6201.txt>`__ the choice of method depends on the test
1384     tool's capability; the Frame-Loss method SHOULD be used if the test tool
1385     supports: - Counting the number of lost frames per stream. -
1386     Transmitting test frame despite the physical link status.
1387
1388     whereas the Timestamp method SHOULD be used if the test tool supports: -
1389     Timestamping each frame. - Monitoring received frame's timestamp. -
1390     Transmitting frames only if the physical link status is up.
1391
1392     **Expected Result**:
1393
1394     **Metrics collected**
1395
1396     The following are the metrics collected for this test: - Average Reset
1397     Time over the number of trials performed.
1398
1399     Results of this test should include the following information: - The
1400     reset method used. - Throughput in Fps and Mbps. - Average Frame Loss
1401     over the number of trials performed. - Average Reset Time in
1402     milliseconds over the number of trials performed. - Number of trials
1403     performed. - Protocol: IPv4, IPv6, MPLS, etc. - Frame Size in Octets -
1404     Port Media: Ethernet, Gigabit Ethernet (GbE), etc. - Port Speed: 10
1405     Gbps, 40 Gbps etc. - Interface Encapsulation: Ethernet, Ethernet VLAN,
1406     etc.
1407
1408     **Deployment scenario**:
1409
1410     -  Physical → virtual switch → physical.
1411
1412 Test ID: LTD.Throughput.RFC2889.MaxForwardingRate
1413 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1414     **Title**: RFC2889 Forwarding Rate Test
1415
1416     **Prerequisite Test**: LTD.Throughput.RFC2544.PacketLossRatio
1417
1418     **Priority**:
1419
1420     **Description**:
1421
1422     This test measures the DUT's Max Forwarding Rate when the Offered Load
1423     is varied between the throughput and the Maximum Offered Load for fixed
1424     length frames at a fixed time interval. The selected frame sizes are
1425     those previously defined under `Default Test
1426     Parameters <#DefaultParams>`__. The throughput is the maximum offered
1427     load with 0% frame loss (measured by the prerequisite test), and the
1428     Maximum Offered Load (as defined by
1429     `RFC2285 <https://www.rfc-editor.org/rfc/rfc2285.txt>`__) is *"the highest
1430     number of frames per second that an external source can transmit to a
1431     DUT/SUT for forwarding to a specified output interface or interfaces"*.
1432
1433     Traffic should be sent to the DUT at a particular rate (TX rate)
1434     starting with TX rate equal to the throughput rate. The rate of
1435     successfully received frames at the destination counted (in FPS). If the
1436     RX rate is equal to the TX rate, the TX rate should be increased by a
1437     fixed step size and the RX rate measured again until the Max Forwarding
1438     Rate is found.
1439
1440     The trial duration for each iteration should last for the period of time
1441     needed for the system to reach steady state for the frame size being
1442     tested. Under `RFC2889 <https://www.rfc-editor.org/rfc/rfc2289.txt>`__
1443     (Sec. 5.6.3.1) test methodology, the test
1444     duration should run for a minimum period of 30 seconds, regardless
1445     whether the system reaches steady state before the minimum duration
1446     ends.
1447
1448     **Expected Result**: According to
1449     `RFC2889 <https://www.rfc-editor.org/rfc/rfc2289.txt>`__ The Max Forwarding Rate
1450     is the highest forwarding rate of a DUT taken from an iterative set of
1451     forwarding rate measurements. The iterative set of forwarding rate
1452     measurements are made by setting the intended load transmitted from an
1453     external source and measuring the offered load (i.e what the DUT is
1454     capable of forwarding). If the Throughput == the Maximum Offered Load,
1455     it follows that Max Forwarding Rate is equal to the Maximum Offered
1456     Load.
1457
1458     **Metrics Collected**:
1459
1460     The following are the metrics collected for this test:
1461
1462     -  The Max Forwarding Rate for the DUT for each packet size.
1463     -  CPU and memory utilization may also be collected as part of this
1464        test, to determine the vSwitch's performance footprint on the system.
1465
1466 Test ID: LTD.Throughput.RFC2889.ForwardPressure
1467 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1468     **Title**: RFC2889 Forward Pressure Test
1469
1470     **Prerequisite Test**: LTD.Throughput.RFC2889.MaxForwardingRate
1471
1472     **Priority**:
1473
1474     **Description**:
1475
1476     The aim of this test is to determine if the DUT transmits frames with an
1477     inter-frame gap that is less than 12 bytes. This test overloads the DUT
1478     and measures the output for forward pressure. Traffic should be
1479     transmitted to the DUT with an inter-frame gap of 11 bytes, this will
1480     overload the DUT by 1 byte per frame. The forwarding rate of the DUT
1481     should be measured.
1482
1483     **Expected Result**: The forwarding rate should not exceed the maximum
1484     forwarding rate of the DUT collected by
1485     LTD.Throughput.RFC2889.MaxForwardingRate.
1486
1487     **Metrics collected**
1488
1489     The following are the metrics collected for this test:
1490
1491     -  Forwarding rate of the DUT in FPS or Mbps.
1492     -  CPU and memory utilization may also be collected as part of this
1493        test, to determine the vSwitch's performance footprint on the system.
1494
1495     **Deployment scenario**:
1496
1497     -  Physical → virtual switch → physical.
1498
1499 Test ID: LTD.Throughput.RFC2889.AddressCachingCapacity
1500 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1501     **Title**: RFC2889 Address Caching Capacity Test
1502
1503     **Prerequisite Test**: N/A
1504
1505     **Priority**:
1506
1507     **Description**:
1508
1509     Please note this test is only applicable to switches that are capable of
1510     MAC learning. The aim of this test is to determine the address caching
1511     capacity of the DUT for a constant load (fixed length frames at a fixed
1512     interval time). The selected frame sizes are those previously defined
1513     under `Default Test Parameters <#DefaultParams>`__.
1514
1515     In order to run this test the aging time, that is the maximum time the
1516     DUT will keep a learned address in its flow table, and a set of initial
1517     addresses, whose value should be >= 1 and <= the max number supported by
1518     the implementation must be known. Please note that if the aging time is
1519     configurable it must be longer than the time necessary to produce frames
1520     from the external source at the specified rate. If the aging time is
1521     fixed the frame rate must be brought down to a value that the external
1522     source can produce in a time that is less than the aging time.
1523
1524     Learning Frames should be sent from an external source to the DUT to
1525     install a number of flows. The Learning Frames must have a fixed
1526     destination address and must vary the source address of the frames. The
1527     DUT should install flows in its flow table based on the varying source
1528     addresses. Frames should then be transmitted from an external source at
1529     a suitable frame rate to see if the DUT has properly learned all of the
1530     addresses. If there is no frame loss and no flooding, the number of
1531     addresses sent to the DUT should be increased and the test is repeated
1532     until the max number of cached addresses supported by the DUT
1533     determined.
1534
1535     **Expected Result**:
1536
1537     **Metrics collected**:
1538
1539     The following are the metrics collected for this test:
1540
1541     -  Number of cached addresses supported by the DUT.
1542     -  CPU and memory utilization may also be collected as part of this
1543        test, to determine the vSwitch's performance footprint on the system.
1544
1545     **Deployment scenario**:
1546
1547     -  Physical → virtual switch → physical.
1548
1549 Test ID: LTD.Throughput.RFC2889.AddressLearningRate
1550 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1551     **Title**: RFC2889 Address Learning Rate Test
1552
1553     **Prerequisite Test**: LTD.Memory.RFC2889.AddressCachingCapacity
1554
1555     **Priority**:
1556
1557     **Description**:
1558
1559     Please note this test is only applicable to switches that are capable of
1560     MAC learning. The aim of this test is to determine the rate of address
1561     learning of the DUT for a constant load (fixed length frames at a fixed
1562     interval time). The selected frame sizes are those previously defined
1563     under `Default Test Parameters <#DefaultParams>`__, traffic should be
1564     sent with each IPv4/IPv6 address incremented by one. The rate at which
1565     the DUT learns a new address should be measured. The maximum caching
1566     capacity from LTD.Memory.RFC2889.AddressCachingCapacity should be taken
1567     into consideration as the maximum number of addresses for which the
1568     learning rate can be obtained.
1569
1570     **Expected Result**: It may be worthwhile to report the behaviour when
1571     operating beyond address capacity - some DUTS may be more friendly to
1572     new addresses than others.
1573
1574     **Metrics collected**:
1575
1576     The following are the metrics collected for this test:
1577
1578     -  The address learning rate of the DUT.
1579
1580     **Deployment scenario**:
1581
1582     -  Physical → virtual switch → physical.
1583
1584 Test ID: LTD.Throughput.RFC2889.ErrorFramesFiltering
1585 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1586     **Title**: RFC2889 Error Frames Filtering Test
1587
1588     **Prerequisite Test**: N/A
1589
1590     **Priority**:
1591
1592     **Description**:
1593
1594     The aim of this test is to determine whether the DUT will propagate any
1595     erroneous frames it receives or whether it is capable of filtering out
1596     the erroneous frames. Traffic should be sent with erroneous frames
1597     included within the flow at random intervals. Illegal frames that must
1598     be tested include: - Oversize Frames. - Undersize Frames. - CRC Errored
1599     Frames. - Dribble Bit Errored Frames - Alignment Errored Frames
1600
1601     The traffic flow exiting the DUT should be recorded and checked to
1602     determine if the erroneous frames where passed through the DUT.
1603
1604     **Expected Result**: Broken frames are not passed!
1605
1606     **Metrics collected**
1607
1608     No Metrics are collected in this test, instead it determines:
1609
1610     -  Whether the DUT will propagate erroneous frames.
1611     -  Or whether the DUT will correctly filter out any erroneous frames
1612        from traffic flow with out removing correct frames.
1613
1614     **Deployment scenario**:
1615
1616     -  Physical → virtual switch → physical.
1617
1618 Test ID: LTD.Throughput.RFC2889.BroadcastFrameForwarding
1619 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1620     **Title**: RFC2889 Broadcast Frame Forwarding Test
1621
1622     **Prerequisite Test**: N
1623
1624     **Priority**:
1625
1626     **Description**:
1627
1628     The aim of this test is to determine the maximum forwarding rate of the
1629     DUT when forwarding broadcast traffic. For each frame previously defined
1630     under `Default Test Parameters <#DefaultParams>`__, the traffic should
1631     be set up as broadcast traffic. The traffic throughput of the DUT should
1632     be measured.
1633
1634     The test should be conducted with at least 4 physical ports on the DUT.
1635     The number of ports used MUST be recorded.
1636
1637     As broadcast involves forwarding a single incoming packet to several
1638     destinations, the latency of a single packet is defined as the average
1639     of the latencies for each of the broadcast destinations.
1640
1641     The incoming packet is transmitted on each of the other physical ports,
1642     it is not transmitted on the port on which it was received. The test MAY
1643     be conducted using different broadcasting ports to uncover any
1644     performance differences.
1645
1646     **Expected Result**:
1647
1648     **Metrics collected**:
1649
1650     The following are the metrics collected for this test:
1651
1652     -  The forwarding rate of the DUT when forwarding broadcast traffic.
1653     -  The minimum, average & maximum packets latencies observed.
1654
1655     **Deployment scenario**:
1656
1657     -  Physical → virtual switch 3x physical.
1658
1659 2.3.2 Packet Latency tests
1660 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1661 These tests will measure the store and forward latency as well as the packet
1662 delay variation for various packet types through the virtual switch. The
1663 following list is not exhaustive but should indicate the type of tests
1664 that should be required. It is expected that more will be added.
1665
1666 Test ID: LTD.PacketLatency.InitialPacketProcessingLatency
1667 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1668     **Title**: Initial Packet Processing Latency
1669
1670     **Prerequisite Test**: N/A
1671
1672     **Priority**:
1673
1674     **Description**:
1675
1676     In some virtual switch architectures, the first packets of a flow will
1677     take the system longer to process than subsequent packets in the flow.
1678     This test determines the latency for these packets. The test will
1679     measure the latency of the packets as they are processed by the
1680     flow-setup-path of the DUT. There are two methods for this test, a
1681     recommended method and a nalternative method that can be used if it is
1682     possible to disable the fastpath of the virtual switch.
1683
1684     Recommended method: This test will send 64,000 packets to the DUT, each
1685     belonging to a different flow. Average packet latency will be determined
1686     over the 64,000 packets.
1687
1688     Alternative method: This test will send a single packet to the DUT after
1689     a fixed interval of time. The time interval will be equivalent to the
1690     amount of time it takes for a flow to time out in the virtual switch
1691     plus 10%. Average packet latency will be determined over 1,000,000
1692     packets.
1693
1694     This test is intended only for non-learning switches; For learning
1695     switches use RFC2889.
1696
1697     For this test, only unidirectional traffic is required.
1698
1699     **Expected Result**: The average latency for the initial packet of all
1700     flows should be greater than the latency of subsequent traffic.
1701
1702     **Metrics Collected**:
1703
1704     The following are the metrics collected for this test:
1705
1706     -  Average latency of the initial packets of all flows that are
1707        processed by the DUT.
1708
1709     **Deployment scenario**:
1710
1711     -  Physical → Virtual Switch → Physical.
1712
1713 Test ID: LTD.PacketDelayVariation.RFC3393.Soak
1714 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1715     **Title**: Packet Delay Variation Soak Test
1716
1717     **Prerequisite Tests**: LTD.Throughput.RFC2544.PacketLossRatio (0% Packet Loss)
1718
1719     **Priority**:
1720
1721     **Description**:
1722
1723     The aim of this test is to understand the distribution of packet delay
1724     variation for different frame sizes over an extended test duration and
1725     to determine if there are any outliers. To allow for an extended test
1726     duration, the test should ideally run for 24 hours or, if this is not
1727     possible, for at least 6 hour. For this test, each frame size must be
1728     sent at the highest possible throughput with 0% packet loss, as
1729     determined in the prerequisite test.
1730
1731     **Expected Result**:
1732
1733     **Metrics Collected**:
1734
1735     The following are the metrics collected for this test:
1736
1737     -  The packet delay variation value for traffic passing through the DUT.
1738     -  The `RFC5481 <https://www.rfc-editor.org/rfc/rfc5481.txt>`__
1739        PDV form of delay variation on the traffic flow,
1740        using the 99th percentile, for each 60s interval during the test.
1741     -  CPU and memory utilization may also be collected as part of this
1742        test, to determine the vSwitch's performance footprint on the system.
1743
1744 2.3.3 Scalability tests
1745 ~~~~~~~~~~~~~~~~~~~~~~~~
1746 The general aim of these tests is to understand the impact of large flow
1747 table size and flow lookups on throughput. The following list is not
1748 exhaustive but should indicate the type of tests that should be required.
1749 It is expected that more will be added.
1750
1751 Test ID: LTD.Scalability.RFC2544.0PacketLoss
1752 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1753     **Title**: RFC 2544 0% loss Scalability throughput test
1754
1755     **Prerequisite Test**:
1756
1757     **Priority**:
1758
1759     **Description**:
1760
1761     The aim of this test is to measure how throughput changes as the number
1762     of flows in the DUT increases. The test will measure the throughput
1763     through the fastpath, as such the flows need to be installed on the DUT
1764     before passing traffic.
1765
1766     For each frame size previously defined under `Default Test
1767     Parameters <#DefaultParams>`__ and for each of the following number of
1768     flows:
1769
1770     -  1,000
1771     -  2,000
1772     -  4,000
1773     -  8,000
1774     -  16,000
1775     -  32,000
1776     -  64,000
1777     -  Max supported number of flows.
1778
1779     The maximum 0% packet loss throughput should be determined in a manner
1780     identical to LTD.Throughput.RFC2544.PacketLossRatio.
1781
1782     **Expected Result**:
1783
1784     **Metrics Collected**:
1785
1786     The following are the metrics collected for this test:
1787
1788     -  The maximum number of frames per second that can be forwarded at the
1789        specified number of flows and the specified frame size, with zero
1790        packet loss.
1791
1792 Test ID: LTD.MemoryBandwidth.RFC2544.0PacketLoss.Scalability
1793 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1794     **Title**: RFC 2544 0% loss Memory Bandwidth Scalability test
1795
1796     **Prerequisite Tests**:
1797
1798     **Priority**:
1799
1800     **Description**:
1801
1802     The aim of this test is to understand how the DUT's performance is
1803     affected by cache sharing and memory bandwidth between processes.
1804
1805     During the test all cores not used by the vSwitch should be running a
1806     memory intensive application. This application should read and write
1807     random data to random addresses in unused physical memory. The random
1808     nature of the data and addresses is intended to consume cache, exercise
1809     main memory access (as opposed to cache) and exercise all memory buses
1810     equally. Furthermore: - the ratio of reads to writes should be recorded.
1811     A ratio of 1:1 SHOULD be used. - the reads and writes MUST be of
1812     cache-line size and be cache-line aligned. - in NUMA architectures
1813     memory access SHOULD be local to the core's node. Whether only local
1814     memory or a mix of local and remote memory is used MUST be recorded. -
1815     the memory bandwidth (reads plus writes) used per-core MUST be recorded;
1816     the test MUST be run with a per-core memory bandwidth equal to half the
1817     maximum system memory bandwidth divided by the number of cores. The test
1818     MAY be run with other values for the per-core memory bandwidth. - the
1819     test MAY also be run with the memory intensive application running on
1820     all cores.
1821
1822     Under these conditions the DUT's 0% packet loss throughput is determined
1823     as per LTD.Throughput.RFC2544.PacketLossRatio.
1824
1825     **Expected Result**:
1826
1827     **Metrics Collected**:
1828
1829     The following are the metrics collected for this test:
1830
1831     -  The DUT's 0% packet loss throughput in the presence of cache sharing and memory bandwidth between processes.
1832
1833 2.3.5 Coupling between control path and datapath Tests
1834 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1835 The following tests aim to determine how tightly coupled the datapath
1836 and the control path are within a virtual switch. The following list
1837 is not exhaustive but should indicate the type of tests that should be
1838 required. It is expected that more will be added.
1839
1840 Test ID: LTD.CPDPCouplingFlowAddition
1841 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1842     **Title**: Control Path and Datapath Coupling
1843
1844     **Prerequisite Test**:
1845
1846     **Priority**:
1847
1848     **Description**:
1849
1850     The aim of this test is to understand how exercising the DUT's control
1851     path affects datapath performance.
1852
1853     Initially a certain number of flow table entries are installed in the
1854     vSwitch. Then over the duration of an RFC2544 throughput test
1855     flow-entries are added and removed at the rates specified below. No
1856     traffic is 'hitting' these flow-entries, they are simply added and
1857     removed.
1858
1859     The test MUST be repeated with the following initial number of
1860     flow-entries installed: - < 10 - 1000 - 100,000 - 10,000,000 (or the
1861     maximum supported number of flow-entries)
1862
1863     The test MUST be repeated with the following rates of flow-entry
1864     addition and deletion per second: - 0 - 1 (i.e. 1 addition plus 1
1865     deletion) - 100 - 10,000
1866
1867     **Expected Result**:
1868
1869     **Metrics Collected**:
1870
1871     The following are the metrics collected for this test:
1872
1873     -  The maximum forwarding rate in Frames Per Second (FPS) and Mbps of
1874        the DUT.
1875     -  The average latency of the traffic flow when passing through the DUT
1876        (if testing for latency, note that this average is different from the
1877        test specified in Section 26.3 of
1878        `RFC2544 <https://www.rfc-editor.org/rfc/rfc2544.txt>`__).
1879     -  CPU and memory utilization may also be collected as part of this
1880        test, to determine the vSwitch's performance footprint on the system.
1881
1882     **Deployment scenario**:
1883
1884     -  Physical → virtual switch → physical.
1885
1886 2.3.4 CPU and memory consumption
1887 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1888 The following tests will profile a virtual switch's CPU and memory
1889 utilization under various loads and circumstances. The following
1890 list is not exhaustive but should indicate the type of tests that
1891 should be required. It is expected that more will be added.
1892
1893 Test ID: LTD.CPU.RFC2544.0PacketLoss
1894 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1895     **Title**: RFC 2544 0% Loss Compute Test
1896
1897     **Prerequisite Test**:
1898
1899     **Priority**:
1900
1901     **Description**:
1902
1903     The aim of this test is to understand the overall performance of the
1904     system when a CPU intensive application is run on the same DUT as the
1905     Virtual Switch. For each frame size, an
1906     LTD.Throughput.RFC2544.PacketLossRatio (0% Packet Loss) test should be
1907     performed. Throughout the entire test a CPU intensive application should
1908     be run on all cores on the system not in use by the Virtual Switch. For
1909     NUMA system only cores on the same NUMA node are loaded.
1910
1911     It is recommended that stress-ng be used for loading the non-Virtual
1912     Switch cores but any stress tool MAY be used.
1913
1914     **Expected Result**:
1915
1916     **Metrics Collected**:
1917
1918     The following are the metrics collected for this test:
1919
1920     -  CPU utilization of the cores running the Virtual Switch.
1921     -  The number of identity of the cores allocated to the Virtual Switch.
1922     -  The configuration of the stress tool (for example the command line
1923        parameters used to start it.)
1924
1925 2.3.9 Summary List of Tests
1926 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1927 1. Throughput tests
1928
1929   - Test ID: LTD.Throughput.RFC2544.PacketLossRatio
1930   - Test ID: LTD.Throughput.RFC2544.PacketLossRatioFrameModification
1931   - Test ID: LTD.Throughput.RFC2544.Profile
1932   - Test ID: LTD.Throughput.RFC2544.SystemRecoveryTime
1933   - Test ID: LTD.Throughput.RFC2544.BackToBackFrames
1934   - Test ID: LTD.Throughput.RFC2889.Soak
1935   - Test ID: LTD.Throughput.RFC2889.SoakFrameModification
1936   - Test ID: LTD.Throughput.RFC6201.ResetTime
1937   - Test ID: LTD.Throughput.RFC2889.MaxForwardingRate
1938   - Test ID: LTD.Throughput.RFC2889.ForwardPressure
1939   - Test ID: LTD.Throughput.RFC2889.AddressCachingCapacity
1940   - Test ID: LTD.Throughput.RFC2889.AddressLearningRate
1941   - Test ID: LTD.Throughput.RFC2889.ErrorFramesFiltering
1942   - Test ID: LTD.Throughput.RFC2889.BroadcastFrameForwarding
1943
1944 2. Packet Latency tests
1945
1946   - Test ID: LTD.PacketLatency.InitialPacketProcessingLatency
1947   - Test ID: LTD.PacketDelayVariation.RFC3393.Soak
1948
1949 3. Scalability tests
1950
1951   - Test ID: LTD.Scalability.RFC2544.0PacketLoss
1952   - Test ID: LTD.MemoryBandwidth.RFC2544.0PacketLoss.Scalability
1953
1954 4. Coupling between control path and datapath Tests
1955
1956   - Test ID: LTD.CPDPCouplingFlowAddition
1957
1958 5. CPU and memory consumption
1959
1960   - Test ID: LTD.CPU.RFC2544.0PacketLoss