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