mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-21 06:01:42 +00:00
wgengine/filter: add TCP non-SYN benchmarks
To show performance during heavy flows on established connections. BenchmarkFilterMatch/tcp-not-syn-v4-8 52125848 21.46 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-8 52388781 21.43 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-8 52916954 21.32 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-8 52590730 21.43 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-8 53015923 21.32 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-no-logs-8 122795029 9.783 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-no-logs-8 100000000 10.09 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-no-logs-8 120090948 9.747 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-no-logs-8 122350448 10.55 ns/op BenchmarkFilterMatch/tcp-not-syn-v4-no-logs-8 122943025 9.813 ns/op Updates #12486 Change-Id: I8e7c9380bf969ad646851d53f8a4c287717694ea Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
10e8a2a05c
commit
d4220a76da
@ -988,11 +988,31 @@ func BenchmarkFilterMatch(b *testing.B) {
|
|||||||
b.Run("no-match-v6", func(b *testing.B) {
|
b.Run("no-match-v6", func(b *testing.B) {
|
||||||
benchmarkFile(b, "testdata/matches-1.json", benchOpt{v4: false, validLocalDst: true})
|
benchmarkFile(b, "testdata/matches-1.json", benchOpt{v4: false, validLocalDst: true})
|
||||||
})
|
})
|
||||||
|
b.Run("tcp-not-syn-v4", func(b *testing.B) {
|
||||||
|
benchmarkFile(b, "testdata/matches-1.json", benchOpt{
|
||||||
|
v4: true,
|
||||||
|
validLocalDst: true,
|
||||||
|
tcpNotSYN: true,
|
||||||
|
wantAccept: true,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
b.Run("tcp-not-syn-v4-no-logs", func(b *testing.B) {
|
||||||
|
benchmarkFile(b, "testdata/matches-1.json", benchOpt{
|
||||||
|
v4: true,
|
||||||
|
validLocalDst: true,
|
||||||
|
tcpNotSYN: true,
|
||||||
|
wantAccept: true,
|
||||||
|
noLogs: true,
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
type benchOpt struct {
|
type benchOpt struct {
|
||||||
v4 bool
|
v4 bool
|
||||||
validLocalDst bool
|
validLocalDst bool
|
||||||
|
tcpNotSYN bool
|
||||||
|
noLogs bool
|
||||||
|
wantAccept bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func benchmarkFile(b *testing.B, file string, opt benchOpt) {
|
func benchmarkFile(b *testing.B, file string, opt benchOpt) {
|
||||||
@ -1032,11 +1052,23 @@ func benchmarkFile(b *testing.B, file string, opt benchOpt) {
|
|||||||
dstIP = dstIP.Next() // to make it not in localNets
|
dstIP = dstIP.Next() // to make it not in localNets
|
||||||
}
|
}
|
||||||
pkt := parsed(ipproto.TCP, srcIP, dstIP.String(), 33123, 443)
|
pkt := parsed(ipproto.TCP, srcIP, dstIP.String(), 33123, 443)
|
||||||
|
if opt.tcpNotSYN {
|
||||||
|
pkt.TCPFlags = packet.TCPPsh // anything that's not SYN
|
||||||
|
}
|
||||||
|
|
||||||
|
want := Drop
|
||||||
|
if opt.wantAccept {
|
||||||
|
want = Accept
|
||||||
|
}
|
||||||
|
runFlags := LogDrops | LogAccepts
|
||||||
|
if opt.noLogs {
|
||||||
|
runFlags = 0
|
||||||
|
}
|
||||||
|
|
||||||
for range b.N {
|
for range b.N {
|
||||||
got := f.RunIn(&pkt, 0)
|
got := f.RunIn(&pkt, runFlags)
|
||||||
if got != Drop {
|
if got != want {
|
||||||
b.Fatalf("got %v; want Drop", got)
|
b.Fatalf("got %v; want %v", got, want)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user