You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/net/packet
David Anderson 2d604b3791 net/packet: represent IP6 as two uint64s.
For the operations we perform on these types (mostly net6.Contains),
this encoding is much faster.

Part of #19.

name                   old time/op    new time/op    delta
Filter/icmp4-8           27.5ns ± 1%    28.0ns ± 2%   +1.89%  (p=0.016 n=5+5)
Filter/tcp4_syn_in-8     38.8ns ± 2%    38.3ns ± 1%   -1.24%  (p=0.024 n=5+5)
Filter/tcp4_syn_out-8    27.6ns ±12%    24.6ns ± 1%     ~     (p=0.063 n=5+5)
Filter/udp4_in-8         71.5ns ± 5%    65.9ns ± 1%   -7.94%  (p=0.008 n=5+5)
Filter/udp4_out-8         132ns ±13%     119ns ± 1%  -10.29%  (p=0.008 n=5+5)
Filter/icmp6-8            169ns ±10%      54ns ± 1%  -68.35%  (p=0.008 n=5+5)
Filter/tcp6_syn_in-8      149ns ± 6%      43ns ± 1%  -71.11%  (p=0.008 n=5+5)
Filter/tcp6_syn_out-8    37.7ns ± 4%    24.3ns ± 3%  -35.51%  (p=0.008 n=5+5)
Filter/udp6_in-8          179ns ± 5%     103ns ± 1%  -42.75%  (p=0.008 n=5+5)
Filter/udp6_out-8         156ns ± 3%     191ns ± 1%  +22.54%  (p=0.008 n=5+5)

Signed-off-by: David Anderson <danderson@tailscale.com>
4 years ago
..
doc.go net/packet: s/ParsedPacket/Parsed/ to avoid package stuttering. 4 years ago
header.go net/packet: documentation cleanups. 4 years ago
icmp4.go net/packet: documentation pass. 4 years ago
icmp6.go net/packet: documentation pass. 4 years ago
ip.go net/packet: support full IPv6 decoding. 4 years ago
ip4.go net/packet: documentation pass. 4 years ago
ip6.go net/packet: represent IP6 as two uint64s. 4 years ago
packet.go net/packet: represent IP6 as two uint64s. 4 years ago
packet_test.go wgengine/filter: add full IPv6 support. 4 years ago
udp4.go net/packet: documentation pass. 4 years ago
udp6.go wgengine/filter: add full IPv6 support. 4 years ago