lab: update Arm lab docs
[csit.git] / docs / report / introduction / methodology_gso.rst
1 .. _gso_methodology:
2
3 Generic Segmentation Offload Tests
4 ----------------------------------
5
6 Overview
7 ~~~~~~~~
8
9 Generic Segmentation Offload (GSO) reduces per-packet processing
10 overhead by enabling applications  to pass a multi-packet buffer to
11 (v)NIC and process a smaller number of large packets (e.g. frame size of
12 64 KB), instead of processing higher numbers of small packets (e.g.
13 frame size of 1500 B), thus reducing per-packet overhead.
14
15 |csit-release| introduced GSO tests for VPP vhostuser and tapv2
16 interfaces. All tests cases use iPerf3 client and server applications
17 running TCP/IP as a traffic generator. For performance comparison the
18 same tests are run without GSO enabled.
19
20 GSO Test Topologies
21 ~~~~~~~~~~~~~~~~~~~
22
23 Two VPP GSO test topologies are implemented in |csit-release|:
24
25 1. iPerfC_GSOvirtio_LinuxVM --- GSOvhost_VPP_GSOvhost --- iPerfS_GSOvirtio_LinuxVM
26
27    - Tests VPP GSO on vhostuser interfaces and interaction with Linux
28      virtio with GSO enabled.
29
30 1. iPerfC_GSOtap_LinuxNspace --- GSOtapv2_VPP_GSOtapv2 --- iPerfS_GSOtap_LinuxNspace
31
32    - Tests VPP GSO on tapv2 interfaces and interaction with Linux tap
33      with GSO enabled.
34
35 Common configuration:
36
37 - iPerfC (client) and iPerfS (server) run in TCP/IP mode without upper
38   bandwidth limit.
39 - Trial duration is set to 30 sec.
40 - iPerfC, iPerfS and VPP run in the single SUT node.
41
42
43 VPP GSOtap Topology
44 ~~~~~~~~~~~~~~~~~~~
45
46 VPP Configuration
47 _________________
48
49 VPP GSOtap tests in |csit-release| are executed without using
50 hyperthreading. VPP worker runs on a single core. Multi-core tests are
51 not executed. Each interface belongs to separate namespace. Following core
52 pinning scheme is used:
53
54 - 1t1c (rxq=1, rx_qsz=4096, tx_qsz=4096)
55
56   - system isolated: 0,28,56,84
57   - vpp mt:  1
58   - vpp wt:  2
59   - vhost:   3-5
60   - iperf-s: 6
61   - iperf-c: 7
62
63
64 iPerf3 Server Configuration
65 ___________________________
66
67 iPerf3 version used 3.7
68
69 ::
70
71   $ sudo -E -S ip netns exec tap1_namespace iperf3 \
72       --server --daemon --pidfile /tmp/iperf3_server.pid --logfile /tmp/iperf3.log --port 5201 --affinity <X>
73
74 For the full iPerf3 reference please see:
75 `iPerf3 docs <https://github.com/esnet/iperf/blob/master/docs/invoking.rst>`_.
76
77
78 iPerf3 Client Configuration
79 ___________________________
80
81 iPerf3 version used 3.7
82
83 ::
84
85   $ sudo -E -S ip netns exec tap1_namespace iperf3 \
86       --client 2.2.2.2 --bind 1.1.1.1 --port 5201 --parallel <Y> --time 30.0 --affinity <X> --zerocopy
87
88 For the full iPerf3 reference please see:
89 `iPerf3 docs <https://github.com/esnet/iperf/blob/master/docs/invoking.rst>`_.
90
91
92 VPP GSOvhost Topology
93 ~~~~~~~~~~~~~~~~~~~~~
94
95 VPP Configuration
96 _________________
97
98 VPP GSOvhost tests in |csit-release| are executed without using
99 hyperthreading. VPP worker runs on a single core. Multi-core tests are
100 not executed. Following core pinning scheme is used:
101
102 - 1t1c (rxq=1, rx_qsz=1024, tx_qsz=1024)
103   - system isolated: 0,28,56,84
104   - vpp mt:  1
105   - vpp wt:  2
106   - vm-iperf-s: 3,4,5,6,7
107   - vm-iperf-c: 8,9,10,11,12
108   - iperf-s: 1
109   - iperf-c: 1
110
111 iPerf3 Server Configuration
112 ___________________________
113
114 iPerf3 version used 3.7
115
116 ::
117
118   $ sudo iperf3 \
119       --server --daemon --pidfile /tmp/iperf3_server.pid --logfile /tmp/iperf3.log --port 5201 --affinity X
120
121 For the full iPerf3 reference please see:
122 `iPerf3 docs <https://github.com/esnet/iperf/blob/master/docs/invoking.rst>`_.
123
124
125 iPerf3 Client Configuration
126 ___________________________
127
128 iPerf3 version used 3.7
129
130 ::
131
132   $ sudo iperf3 \
133       --client 2.2.2.2 --bind 1.1.1.1 --port 5201 --parallel <Y> --time 30.0 --affinity X --zerocopy
134
135 For the full iPerf3 reference please see:
136 `iPerf3 docs <https://github.com/esnet/iperf/blob/master/docs/invoking.rst>`_.