1 .. This work is licensed under a Creative Commons Attribution 4.0 International
3 .. http://creativecommons.org/licenses/by/4.0
4 .. (c) OPNFV, Ericsson AB and others.
6 *************************************
7 Yardstick Test Case Description TC037
8 *************************************
10 .. _cirros-image: https://download.cirros-cloud.net
11 .. _Ping: https://linux.die.net/man/8/ping
12 .. _pktgen: https://www.kernel.org/doc/Documentation/networking/pktgen.txt
13 .. _mpstat: http://www.linuxcommand.org/man_pages/mpstat1.html
15 +-----------------------------------------------------------------------------+
16 |Latency, CPU Load, Throughput, Packet Loss |
18 +--------------+--------------------------------------------------------------+
19 |test case id | OPNFV_YARDSTICK_TC037_LATENCY,CPU LOAD,THROUGHPUT, |
22 +--------------+--------------------------------------------------------------+
23 |metric | Number of flows, latency, throughput, packet loss |
24 | | CPU utilization percentage, CPU interrupt per second |
26 +--------------+--------------------------------------------------------------+
27 |test purpose | The purpose of TC037 is to evaluate the IaaS compute |
28 | | capacity and network performance with regards to CPU |
29 | | utilization, packet flows and network throughput, such as if |
30 | | and how different amounts of flows matter for the throughput |
31 | | between hosts on different compute blades, and the CPU load |
34 | | Typically e.g. the performance of a vSwitch depends on the |
35 | | number of flows running through it. Also performance of |
36 | | other equipment or entities can depend on the number of |
37 | | flows or the packet sizes used |
39 | | The purpose is also to be able to spot the trends. |
40 | | Test results, graphs and similar shall be stored for |
41 | | comparison reasons and product evolution understanding |
42 | | between different OPNFV versions and/or configurations. |
44 +--------------+--------------------------------------------------------------+
45 |test tool | Ping, Pktgen, mpstat |
47 | | Ping is a computer network administration software utility |
48 | | used to test the reachability of a host on an Internet |
49 | | Protocol (IP) network. It measures the round-trip time for |
50 | | packet sent from the originating host to a destination |
51 | | computer that are echoed back to the source. |
53 | | Linux packet generator is a tool to generate packets at very |
54 | | high speed in the kernel. pktgen is mainly used to drive and |
55 | | LAN equipment test network. pktgen supports multi threading. |
56 | | To generate random MAC address, IP address, port number UDP |
57 | | packets, pktgen uses multiple CPU processors in the |
58 | | different PCI bus (PCI, PCIe bus) with Gigabit Ethernet |
59 | | tested (pktgen performance depends on the CPU processing |
60 | | speed, memory delay, PCI bus speed hardware parameters), |
61 | | Transmit data rate can be even larger than 10GBit/s. Visible |
62 | | can satisfy most card test requirements. |
64 | | The mpstat command writes to standard output activities for |
65 | | each available processor, processor 0 being the first one. |
66 | | Global average activities among all processors are also |
67 | | reported. The mpstat command can be used both on SMP and UP |
68 | | machines, but in the latter, only global average activities |
69 | | will be printed. |
71 | | (Ping is normally part of any Linux distribution, hence it |
72 | | doesn't need to be installed. It is also part of the |
73 | | Yardstick Docker image. |
74 | | For example also a Cirros image can be downloaded from |
75 | | cirros-image_, it includes ping. |
77 | | Pktgen and mpstat are not always part of a Linux |
78 | | distribution, hence it needs to be installed. It is part of |
79 | | the Yardstick Docker image. |
80 | | As an example see the /yardstick/tools/ directory for how |
81 | | to generate a Linux image with pktgen and mpstat included.) |
83 +--------------+--------------------------------------------------------------+
84 |test | This test case uses Pktgen to generate packet flow between |
85 |description | two hosts for simulating network workloads on the SUT. |
86 | | Ping packets (ICMP protocol's mandatory ECHO_REQUEST |
87 | | datagram) are sent from a host VM to the target VM(s) to |
88 | | elicit ICMP ECHO_RESPONSE, meanwhile CPU activities are |
89 | | monitored by mpstat. |
91 +--------------+--------------------------------------------------------------+
92 |configuration | file: opnfv_yardstick_tc037.yaml |
94 | | Packet size is set to 64 bytes. |
95 | | Number of ports: 1, 10, 50, 100, 300, 500, 750 and 1000. |
96 | | The amount configured ports map from 2 up to 1001000 flows, |
97 | | respectively. Each port amount is run two times, for 20 |
98 | | seconds each. Then the next port_amount is run, and so on. |
99 | | During the test CPU load on both client and server, and the |
100 | | network latency between the client and server are measured. |
101 | | The client and server are distributed on different hardware. |
102 | | mpstat monitoring interval is set to 1 second. |
103 | | ping packet size is set to 100 bytes. |
104 | | For SLA max_ppm is set to 1000. |
106 +--------------+--------------------------------------------------------------+
107 |applicability | Test can be configured with different: |
109 | | * pktgen packet sizes; |
110 | | * amount of flows; |
111 | | * test duration; |
112 | | * ping packet size; |
113 | | * mpstat monitor interval. |
115 | | Default values exist. |
117 | | SLA (optional): max_ppm: The number of packets per million |
118 | | packets sent that are acceptable to loose, not received. |
120 +--------------+--------------------------------------------------------------+
121 |references | Ping_ |
127 | | ETSI-NFV-TST001 |
129 +--------------+--------------------------------------------------------------+
130 |pre-test | The test case image needs to be installed into Glance |
131 |conditions | with pktgen, mpstat included in it. |
133 | | No POD specific requirements have been identified. |
135 +--------------+--------------------------------------------------------------+
136 |test sequence | description and expected result |
138 +--------------+--------------------------------------------------------------+
139 |step 1 | Two host VMs are booted, as server and client. |
141 +--------------+--------------------------------------------------------------+
142 |step 2 | Yardstick is connected with the server VM by using ssh. |
143 | | 'pktgen_benchmark', "ping_benchmark" bash script are copyied |
144 | | from Jump Host to the server VM via the ssh tunnel. |
146 +--------------+--------------------------------------------------------------+
147 |step 3 | An IP table is setup on server to monitor for received |
150 +--------------+--------------------------------------------------------------+
151 |step 4 | pktgen is invoked to generate packet flow between two server |
152 | | and client for simulating network workloads on the SUT. Ping |
153 | | is invoked. Ping packets are sent from server VM to client |
154 | | VM. mpstat is invoked, recording activities for each |
155 | | available processor. Results are processed and checked |
156 | | against the SLA. Logs are produced and stored. |
158 | | Result: Logs are stored. |
160 +--------------+--------------------------------------------------------------+
161 |step 5 | Two host VMs are deleted. |
163 +--------------+--------------------------------------------------------------+
164 |test verdict | Fails only if SLA is not passed, or if there is a test case |
165 | | execution problem. |
167 +--------------+--------------------------------------------------------------+