gvisor/pkg/tcpip/stack
Bhasker Hariharan 61f6fbd0ce Fix bugs in PickEphemeralPort for TCP.
Netstack always picks a random start point everytime PickEphemeralPort
is called. While this is required for UDP so that DNS requests go
out through a randomized set of ports it is not required for TCP. Infact
Linux explicitly hashes the (srcip, dstip, dstport) and a one time secret
initialized at start of the application to get a random offset. But to
ensure it doesn't start from the same point on every scan it uses a static
hint that is incremented by 2 in every call to pick ephemeral ports.

The reason for 2 is Linux seems to split the port ranges where active connects
seem to use even ones while odd ones are used by listening sockets.

This CL implements a similar strategy where we use a hash + hint to generate
the offset to start the search for a free Ephemeral port.

This ensures that we cycle through the available port space in order for
repeated connects to the same destination and significantly reduces the
chance of picking a recently released port.

PiperOrigin-RevId: 272058370
2019-09-30 13:55:22 -07:00
..
BUILD Fix bugs in PickEphemeralPort for TCP. 2019-09-30 13:55:22 -07:00
icmp_rate_limit.go Simplify ICMPRateLimiter 2019-09-24 09:50:51 -07:00
linkaddrcache.go Populate link address cache at dispatch 2019-08-27 18:54:56 -07:00
linkaddrcache_test.go Populate link address cache at dispatch 2019-08-27 18:54:56 -07:00
nic.go Implement SO_BINDTODEVICE sockopt 2019-09-27 14:14:04 -07:00
registration.go Remove centralized registration of protocols. 2019-09-25 12:57:05 -07:00
route.go Make UDP traceroute work. 2019-09-03 16:01:17 -07:00
stack.go Fix bugs in PickEphemeralPort for TCP. 2019-09-30 13:55:22 -07:00
stack_global_state.go Change copyright notice to "The gVisor Authors" 2019-04-29 14:26:23 -07:00
stack_test.go Remove centralized registration of protocols. 2019-09-25 12:57:05 -07:00
transport_demuxer.go Implement SO_BINDTODEVICE sockopt 2019-09-27 14:14:04 -07:00
transport_demuxer_test.go Implement SO_BINDTODEVICE sockopt 2019-09-27 14:14:04 -07:00
transport_test.go Implement SO_BINDTODEVICE sockopt 2019-09-27 14:14:04 -07:00