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>
pull/12491/head
Brad Fitzpatrick 5 months ago committed by Brad Fitzpatrick
parent 10e8a2a05c
commit d4220a76da

@ -988,11 +988,31 @@ func BenchmarkFilterMatch(b *testing.B) {
b.Run("no-match-v6", func(b *testing.B) {
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 {
v4 bool
validLocalDst bool
tcpNotSYN bool
noLogs bool
wantAccept bool
}
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
}
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 {
got := f.RunIn(&pkt, 0)
if got != Drop {
b.Fatalf("got %v; want Drop", got)
got := f.RunIn(&pkt, runFlags)
if got != want {
b.Fatalf("got %v; want %v", got, want)
}
}
}

Loading…
Cancel
Save