Every figure measured

Performance

Our software is built to optimise CPU cycles and minimise memory wastage without adding latency. Every number below comes from a dated benchmark. We have also included results that went against us, because a benchmark page that only contains wins is an advertisement rather than evidence.

QuicN on a constrained instance

iperf3 tested on Linux peers. This is the comparison that matters: userspace tunnel against userspace tunnel. Kernel WireGuard is included because it is the reference people are familiar with, even though it is not always available.

ImplementationThroughputUp / downReceiver memory
QuicN11.6 Gbit/s11.6 / 11.696 MB RSS
wireguard-go9.37 Gbit/s9.33 / 9.41431 MB RSS
WireGuard (kernel)9.55 Gbit/s9.54 / 9.57~0.45 MB kernel slab

QuicN is ahead of wireguard-go by 24% and of kernel WireGuard by 22%. QuicN sustains the same rate whether the box is encrypting or decrypting, and it holds across parallel streams (12.1 Gbit/s at two and four). The bare network link with no tunnel does more than 35 Gbit/s single-flow, so it is nowhere near the limiter here, which indicates that this is an algorithmic result. When it comes to memory, the gap among userspace tunnels is 4.5x. QuicN's memory rises for about fifteen seconds at the start of a transfer and then stays flat.

4 vCPU Alpine guests (kernel 6.18.39-0-lts) on one AMD Ryzen 9 5900X ESXi host, each given a Mellanox ConnectX-5 SR-IOV virtual function, VF-to-VF via the NIC's embedded eSwitch, iperf3 single TCP stream, 20s per run with 3s discarded; ran on 12 August 2026. Reproduces an earlier vmxnet3 (fully virtual NIC) run at the same ordering and similar margins (QuicN 11.23, wireguard-go 9.39, kernel WireGuard 8.65 Gbit/s; kernel WireGuard's performance changed with the use of a real NIC). Memory usage follows the same pattern.

QuicN with both endpoints on one 6-core box

The harshest topology available: the same CPU pays for encrypting and decrypting every byte to demonstrate the case that uses containers as workloads. It is also where the in-kernel module turns out to be the slow one.

ImplementationThroughputMemory under loadQuantum-safe identity
QuicN12.3 Gbit/s70–80 MB RSSML-DSA-44
wireguard-go12.1 – 12.4 Gbit/s363–445 MB RSSNone
WireGuard (kernel)2.28 Gbit/sn/a, in kernelNone

Both of the fastest tunnels on the box are userspace ones. Kernel WireGuard lands at 2.28 Gbit/s here, which is not what people expect, because it processes packet by packet with no batching, while both userspace implementations move dozens of packets per system call. QuicN reaches its figure with nothing switched off: ACLs, source validation and telemetry all enabled.

One 6-core/12-thread x86 host, both endpoints in dedicated containers on it, single iperf3 TCP flow, unmodified Linux 6.12 host, QuicN 1372-byte/WireGuard 1420-byte inner MTU (the QuicN MTU is kept at its default so it supports IPv6, VLAN, PPPoE and QUIC header framing). 4 July 2026.

PPPoE eXpress Path against the Linux kernel

On a real 2.5 Gbps line, the physical ceiling for TCP payload under PPPoE is about 2.36 Gbit/s.

CaseStock LinuxeXpress PathChange
Upload, single flow1.55 Gbit/s2.23 Gbit/s+44%
Upload, four flows1.49 Gbit/s2.23 Gbit/s+50%
Download, single flow1.76 Gbit/s2.34 Gbit/s+33%
Download, four flows2.14 Gbit/s2.33 Gbit/slevel

The most telling number is 1.49. Stock Linux gets worse as concurrency rises, while the eXpress Path has little jitter. At 2.23 Gbit/s it is delivering 94–97% of what the physical network provides, whereas the kernel path plateaus at 66%. PPPoE-XP uses 2.3 out of 8 CPU cores on this hardware.

NanoPi R6S on a live 2.5 Gbps PPPoE line, a 2.5 GbE NIC with no offloads support so the fastpath ran in generic mode. Parameters: 1492 MTU, iperf3 TCP CUBIC, 20s runs, median of three - zero errors across roughly 18 million frames. 27 July 2026.

PPPoE on real silicon NIC

The hardware test above is bounded by a 2.5 Gbps line, so it cannot show what PPPoE-XP itself can deliver. This one puts real NIC hardware in the path with no line-rate ceiling, between two Linux VMs on ESXi, each given a Mellanox ConnectX-5 SR-IOVvirtual function. The tests are between kernel-PPPoE and PPPoE-XP peers.

ConfigurationKernel, both endsCosinium PPPoE-XP, both endsUploadDownload
Single flow12 Aug 20269.1 / 9.1 Gbit/s19.5 / 18.9 Gbit/s2.1x2.1x
Two flows13 Aug 2026, paired A/B10.1 / 10.2 Gbit/s25.3 / 33.9 Gbit/s2.5x3.3x

With no kernel PPPoE anywhere, the eXpress Path transfers up to 33.9 Gbit/s download, more than 3x what the kernel stack manages on identical real NIC hardware. The kernel path shows the same top-end behaviour under concurrency as it does on the 2.5 GbE line: extra flows just queue behind its one serialised channel.

Two 4 vCPU Alpine guests (kernel 6.18.39-0-lts) on one AMD Ryzen 9 5900X ESXi host, each given a Mellanox ConnectX-5 SR-IOV virtual function, VF-to-VF via the NIC's embedded eSwitch. Single flow: kernel-both-ends used rp-pppoe in kernel mode, 20s iperf3 runs, 12 August 2026. Two flows: medians of 8 alternating paired A/B runs with variant order; each run is 30s of iperf. 13 August 2026.

Note that these are endpoint-contended comparisons on one host, not two boxes across a wire forwarding traffic generated elsewhere: iperf3 shares the same vCPUs as the data-plane threads. An earlier fully virtual vmxnet3 NIC run showed the same shape at lower resolution: kernel-to-kernel 10.4 Gbit/s against both-ends-Cosinium 15.5 (a 1.49x gap).

Methodology

  • Runs are interleaved between implementations rather than done in blocks so that thermal drift cannot favour whichever went first.
  • A warm-up window is discarded from every run, and results are based on the mean of the observed range rather than the best-of.
  • Comparison targets run in their stock configuration. For wireguard-go that is already its tuned configuration, which uses batched I/O and a thread pool.
  • Security features stay on in QuicN runs. Turning off ACLs or telemetry does produce a larger number, but that is not the default behaviour, so we do not quote it.
  • Both ends run identical kernels and the same datapath network interface.
Where we lose

Results that do not favour us

PPPoE-XP uses a bit more CPU power

On the NanoPi R6S ARM-based SBC, at line rate PPPoE-XP uses about 2.6 of eight cores against roughly 1.3 for the slower kernel path, so it is less efficient per bit. The trade-off is worth it, because those cores were sitting idle while the upload stayed below two thirds of the connection's capacity.