Skip to content

Benchmarks

Ivan Koveshnikov edited this page Oct 27, 2022 · 6 revisions

System under test

CPU: 2x Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz
NIC: 2x Intel(R) E810-2cqda2 (100G 2 ports)
PCIe: 4th gen
Total network bandwidth: 400 Gbps
Distro: Ubuntu 20.04 LTS
Kernel: 5.17
Driver: ice-1.9.11

Traffic generators

CPU: 2x Intel(R) Xeon(R) Gold 6242R CPU @ 3.10GHz
NIC: 2x Intel(R) E810 (100G 1 of 2 ports connected)
PCIe: 3rd gen
Total network bandwidth: 200 Gbps
Distro: Ubuntu 20.04 LTS
Kernel: 5.17
Generator: Cisco T-Rex

We use 2 servers for the generation.

Traffic patterns

  • Line rate - maximum practical throughput
  • Base - base performance of XDP action, no regular expressions attached
  • Literal - lookup for a constant sub-string inside of payload. Regex: /private/s; Corpus: printable characters
  • Full payload scan - search with access to the whole payload. Regex /pri.*ate/sH; Corpus: printable characters
  • Real-life - Our real-life regular expressions. 10 regexes in parallel, backtracking, search from the payload beginning.

We have evaluated XDP_DROP and XDP_TX actions as primerally used in our network.

Results

XDP_DROP

Line rate

pkt size mpps gbps cpu usage
1500 32.0 384.0 n/a
1000 48.0 379.0 n/a
512 88.0 368.0 n/a
256 176.0 356.0 n/a
128 328.0 346.0 n/a
64 568.0 304.0 n/a

Base

pkt size mpps gbps cpu usage
1500 32.0 384.0 6%
1000 48.0 379.0 8%
512 88.0 349.5 16%
256 162.0 340.0 28%
128 307.0 314.0 51%
64 430.0 221.0 75%

Literal

pkt size mpps gbps cpu usage
1500 32.0 384.0 14%
1000 48.0 379.0 20%
512 88.0 349.5 34%
256 165.0 338.0 68%
128 244.0 250.0 98%
64 257.0 128.0 98%

Full payload scan

pkt size mpps gbps cpu usage
1500 32.0 384.0 33%
1000 48.0 379.0 48%
512 88.0 349.5 80%
384 100.0 305.0 96%
256 108.0 220.0 98%
128 108.0 110.0 98%
64 211.0 108.0 98%

Real-life

pkt size mpps gbps cpu usage
1500 32.0 384.0 15%
1000 48.0 379.0 22%
512 88.0 349.5 38%
256 161.0 330.0 74%
128 208.0 213.0 98%
64 220.0 112.0 99%
Clone this wiki locally