gvisor/pkg/tcpip/header
Andrei Vagin 8720bd643e netstack/tcp: software segmentation offload
Right now, we send each tcp packet separately, we call one system
call per-packet. This patch allows to generate multiple tcp packets
and send them by sendmmsg.

The arguable part of this CL is a way how to handle multiple headers.
This CL adds the next field to the Prepandable buffer.

Nginx test results:

Server Software:        nginx/1.15.9
Server Hostname:        10.138.0.2
Server Port:            8080

Document Path:          /10m.txt
Document Length:        10485760 bytes

w/o gso:
Concurrency Level:      5
Time taken for tests:   5.491 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      1048600200 bytes
HTML transferred:       1048576000 bytes
Requests per second:    18.21 [#/sec] (mean)
Time per request:       274.525 [ms] (mean)
Time per request:       54.905 [ms] (mean, across all concurrent requests)
Transfer rate:          186508.03 [Kbytes/sec] received

sw-gso:

Concurrency Level:      5
Time taken for tests:   3.852 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      1048600200 bytes
HTML transferred:       1048576000 bytes
Requests per second:    25.96 [#/sec] (mean)
Time per request:       192.576 [ms] (mean)
Time per request:       38.515 [ms] (mean, across all concurrent requests)
Transfer rate:          265874.92 [Kbytes/sec] received

w/o gso:
$ ./tcp_benchmark --client --duration 15  --ideal
[SUM]  0.0-15.1 sec  2.20 GBytes  1.25 Gbits/sec

software gso:
$ tcp_benchmark --client --duration 15  --ideal --gso $((1<<16)) --swgso
[SUM]  0.0-15.1 sec  3.99 GBytes  2.26 Gbits/sec

PiperOrigin-RevId: 276112677
2019-10-22 11:55:56 -07:00
..
BUILD
arp.go
checksum.go
checksum_test.go
eth.go Auto-generate an IPv6 link-local address based on the NIC's MAC Address. 2019-10-22 07:26:54 -07:00
eth_test.go
gue.go
icmpv4.go Make UDP traceroute work. 2019-09-03 16:01:17 -07:00
icmpv6.go NDP Neighbor Solicitations sent during DAD must have an IP hop limit of 255 2019-10-17 13:06:15 -07:00
interfaces.go Update canonical repository. 2019-06-13 16:50:15 -07:00
ipv4.go
ipv6.go
ipv6_fragment.go Update canonical repository. 2019-06-13 16:50:15 -07:00
ipversion_test.go
ndp_neighbor_advert.go Do Duplicate Address Detection on permanent IPv6 addresses. 2019-10-16 22:54:45 -07:00
ndp_neighbor_solicit.go Do Duplicate Address Detection on permanent IPv6 addresses. 2019-10-16 22:54:45 -07:00
ndp_options.go Do Duplicate Address Detection on permanent IPv6 addresses. 2019-10-16 22:54:45 -07:00
ndp_test.go
tcp.go
tcp_test.go Update canonical repository. 2019-06-13 16:50:15 -07:00
udp.go Implement splice methods for pipes and sockets. 2019-09-12 17:43:27 -07:00