gvisor/pkg/tcpip/transport/tcp
Kevin Krakauer e1b21f3c8c Use PacketBuffers, rather than VectorisedViews, in netstack.
PacketBuffers are analogous to Linux's sk_buff. They hold all information about
a packet, headers, and payload. This is important for:

* iptables to access various headers of packets
* Preventing the clutter of passing different net and link headers along with
  VectorisedViews to packet handling functions.

This change only affects the incoming packet path, and a future change will
change the outgoing path.

Benchmark               Regular         PacketBufferPtr  PacketBufferConcrete
--------------------------------------------------------------------------------
BM_Recvmsg             400.715MB/s      373.676MB/s      396.276MB/s
BM_Sendmsg             361.832MB/s      333.003MB/s      335.571MB/s
BM_Recvfrom            453.336MB/s      393.321MB/s      381.650MB/s
BM_Sendto              378.052MB/s      372.134MB/s      341.342MB/s
BM_SendmsgTCP/0/1k     353.711MB/s      316.216MB/s      322.747MB/s
BM_SendmsgTCP/0/2k     600.681MB/s      588.776MB/s      565.050MB/s
BM_SendmsgTCP/0/4k     995.301MB/s      888.808MB/s      941.888MB/s
BM_SendmsgTCP/0/8k     1.517GB/s        1.274GB/s        1.345GB/s
BM_SendmsgTCP/0/16k    1.872GB/s        1.586GB/s        1.698GB/s
BM_SendmsgTCP/0/32k    1.017GB/s        1.020GB/s        1.133GB/s
BM_SendmsgTCP/0/64k    475.626MB/s      584.587MB/s      627.027MB/s
BM_SendmsgTCP/0/128k   416.371MB/s      503.434MB/s      409.850MB/s
BM_SendmsgTCP/0/256k   323.449MB/s      449.599MB/s      388.852MB/s
BM_SendmsgTCP/0/512k   243.992MB/s      267.676MB/s      314.474MB/s
BM_SendmsgTCP/0/1M     95.138MB/s       95.874MB/s       95.417MB/s
BM_SendmsgTCP/0/2M     96.261MB/s       94.977MB/s       96.005MB/s
BM_SendmsgTCP/0/4M     96.512MB/s       95.978MB/s       95.370MB/s
BM_SendmsgTCP/0/8M     95.603MB/s       95.541MB/s       94.935MB/s
BM_SendmsgTCP/0/16M    94.598MB/s       94.696MB/s       94.521MB/s
BM_SendmsgTCP/0/32M    94.006MB/s       94.671MB/s       94.768MB/s
BM_SendmsgTCP/0/64M    94.133MB/s       94.333MB/s       94.746MB/s
BM_SendmsgTCP/0/128M   93.615MB/s       93.497MB/s       93.573MB/s
BM_SendmsgTCP/0/256M   93.241MB/s       95.100MB/s       93.272MB/s
BM_SendmsgTCP/1/1k     303.644MB/s      316.074MB/s      308.430MB/s
BM_SendmsgTCP/1/2k     537.093MB/s      584.962MB/s      529.020MB/s
BM_SendmsgTCP/1/4k     882.362MB/s      939.087MB/s      892.285MB/s
BM_SendmsgTCP/1/8k     1.272GB/s        1.394GB/s        1.296GB/s
BM_SendmsgTCP/1/16k    1.802GB/s        2.019GB/s        1.830GB/s
BM_SendmsgTCP/1/32k    2.084GB/s        2.173GB/s        2.156GB/s
BM_SendmsgTCP/1/64k    2.515GB/s        2.463GB/s        2.473GB/s
BM_SendmsgTCP/1/128k   2.811GB/s        3.004GB/s        2.946GB/s
BM_SendmsgTCP/1/256k   3.008GB/s        3.159GB/s        3.171GB/s
BM_SendmsgTCP/1/512k   2.980GB/s        3.150GB/s        3.126GB/s
BM_SendmsgTCP/1/1M     2.165GB/s        2.233GB/s        2.163GB/s
BM_SendmsgTCP/1/2M     2.370GB/s        2.219GB/s        2.453GB/s
BM_SendmsgTCP/1/4M     2.005GB/s        2.091GB/s        2.214GB/s
BM_SendmsgTCP/1/8M     2.111GB/s        2.013GB/s        2.109GB/s
BM_SendmsgTCP/1/16M    1.902GB/s        1.868GB/s        1.897GB/s
BM_SendmsgTCP/1/32M    1.655GB/s        1.665GB/s        1.635GB/s
BM_SendmsgTCP/1/64M    1.575GB/s        1.547GB/s        1.575GB/s
BM_SendmsgTCP/1/128M   1.524GB/s        1.584GB/s        1.580GB/s
BM_SendmsgTCP/1/256M   1.579GB/s        1.607GB/s        1.593GB/s

PiperOrigin-RevId: 278940079
2019-11-06 14:25:59 -08:00
..
testing/context Use PacketBuffers, rather than VectorisedViews, in netstack. 2019-11-06 14:25:59 -08:00
BUILD netstack/tcp: software segmentation offload 2019-10-22 11:55:56 -07:00
accept.go Send a TCP RST in response to a TCP SYN-ACK on a listening endpoint 2019-11-06 10:44:20 -08:00
connect.go Use the user supplied TCP MSS when creating a new active socket 2019-10-28 18:20:36 -07:00
cubic.go Add support for TCP_CONGESTION socket option. 2019-06-12 13:35:50 -07:00
cubic_state.go Add support for TCP_CONGESTION socket option. 2019-06-12 13:35:50 -07:00
dual_stack_test.go Internal change. 2019-10-14 17:46:52 -07:00
endpoint.go Use PacketBuffers, rather than VectorisedViews, in netstack. 2019-11-06 14:25:59 -08:00
endpoint_state.go Add endpoint tracking to the stack. 2019-10-29 16:14:51 -07:00
forwarder.go Use PacketBuffers, rather than VectorisedViews, in netstack. 2019-11-06 14:25:59 -08:00
protocol.go Use PacketBuffers, rather than VectorisedViews, in netstack. 2019-11-06 14:25:59 -08:00
rcv.go Automated rollback of changelist 261191548 2019-08-02 12:52:40 -07:00
reno.go Change copyright notice to "The gVisor Authors" 2019-04-29 14:26:23 -07:00
sack.go Add support for TCP receive buffer auto tuning. 2019-06-13 22:28:01 -07:00
sack_scoreboard.go Automated rollback of changelist 261191548 2019-08-02 12:52:40 -07:00
sack_scoreboard_test.go Update canonical repository. 2019-06-13 16:50:15 -07:00
segment.go Use PacketBuffers, rather than VectorisedViews, in netstack. 2019-11-06 14:25:59 -08:00
segment_heap.go Change copyright notice to "The gVisor Authors" 2019-04-29 14:26:23 -07:00
segment_queue.go Change segment queue limit to be of fixed size. 2019-05-31 16:17:33 -07:00
segment_state.go Update canonical repository. 2019-06-13 16:50:15 -07:00
snd.go netstack: add counters for tcp CurrEstab and EstabResets 2019-10-15 16:38:40 +00:00
snd_state.go Change copyright notice to "The gVisor Authors" 2019-04-29 14:26:23 -07:00
tcp_noracedetector_test.go Internal change. 2019-10-09 17:56:05 -07:00
tcp_sack_test.go Internal change. 2019-10-09 17:56:05 -07:00
tcp_test.go Send a TCP RST in response to a TCP SYN-ACK on a listening endpoint 2019-11-06 10:44:20 -08:00
tcp_timestamp_test.go Add support for TCP receive buffer auto tuning. 2019-06-13 22:28:01 -07:00
timer.go Update canonical repository. 2019-06-13 16:50:15 -07:00