Engineering Hub · NFV on x86

Why Network Functions Run on Commodity x86 — and How Fast They Actually Go

Updated Oct 29, 2026 By NFWare Engineering Team 1 guide

14.88 Mpps
line rate of one 10 GbE port at 64-byte frames
IEEE 802.3 framing
148.81 Mpps
the same for 100 GbE: about 6.7 ns per packet
IEEE 802.3 framing
AVX2
CPU instruction set NFWare vCGNAT requires: Intel Xeon from Haswell (v3) on
vCGNAT 6.4 documentation
RFC 2544
standard methodology for benchmarking network devices
IETF
On this page
  1. Why x86
  2. Performance
  3. Deployment and operations
  4. All guides
  5. FAQ

Functions such as CGNAT, load balancing and firewalls now run as software on standard x86 servers. Whether that works for an operator depends on packet rate rather than bandwidth, on the datapath the software uses, and on how the function is deployed and upgraded.

A vendor datasheet quotes gigabits per second at large packet sizes. Your network sends a mix that includes small packets, and every packet costs CPU time regardless of its size. This section explains how to size servers for real traffic, which datapath technologies make software fast enough, and how to run network functions virtualization without turning upgrades into outages.

BackgroundWhy operators moved network functions to x86

In 2012 a group of operators published the ETSI paper that started network functions virtualization: replace dedicated appliances with software on standard servers. The argument was cost and speed: standard servers promised a lower price per unit of capacity, they could be reused for other workloads, and new capacity would arrive as a licence key rather than a hardware delivery.

The early worry was performance. That changed once user-space datapaths and modern CPUs made it possible to process tens of millions of packets per second on a single server. Operators now run carrier-grade NAT at terabit scale on x86 servers, as the Tier-1 deployment below shows, so the open questions are about sizing and operations rather than feasibility.

PerformancePerformance: packets, datapaths, benchmarks

Software network functions hit packet-rate limits long before bandwidth limits. Small packets are where they fail.

Line rate on one 100 GbE port, by frame size
64 B
148.81 Mpps · 14.88 at 10 GbE
128 B
84.46 Mpps · 8.45 at 10 GbE
512 B
23.50 Mpps · 2.35 at 10 GbE
1518 B
8.13 Mpps · 0.81 at 10 GbE
04080120160 Mpps
Bars show line rate on 100 GbE; labels add the 10 GbE figure for the same frame size.

Each Ethernet frame also carries 20 bytes of preamble and inter-frame gap on the wire. At 64 bytes a 100 GbE port therefore carries 148.81 million packets per second, which leaves about 6.7 nanoseconds per packet. At 1,518 bytes the same port carries only 8.1 million. A server that is comfortable with large packets can fall over when the traffic mix shifts towards small ones.

Packets per second, not bits: sizing network functions

Why the average packet size of your traffic, not the port speed, decides how many servers you need, and how to measure it before you buy.

Coming soon

Datapaths for software networking: DPDK, VPP, XDP and eBPF

DPDK moves packet processing into user space, VPP processes packets in batches to keep CPU caches warm, and XDP runs eBPF programs in the kernel before the network stack. Where each one takes the packet away from the kernel and what that means for throughput, observability and day-to-day operations.

Coming soon

Benchmarking a virtual network function: RFC 2544 and independent tests

Test profiles that reflect real traffic rather than best-case packets, the numbers vendors tend to leave out, and how to read a third-party report such as EANTC's.

Coming soon

DeploymentDeployment and operations

The same function can run on bare metal, in a virtual machine or in a container. The choice changes performance, upgrade procedures and how failures are handled.

Converged or dedicated: the performance cost of all-in-one platforms

What happens to CGNAT throughput when it shares a router or BNG with other functions, and when a dedicated function pays off.

Read the guide

Bare metal, VM or Kubernetes for network functions

SR-IOV, CPU pinning, NUMA placement and huge pages, and which platform suits which traffic level.

Coming soon

Upgrading stateful network functions without downtime

Active/standby pairs with session synchronisation, rolling upgrades in active/active clusters, and how to rehearse a failover before you need it.

Coming soon
Key terms in the glossary

All guides in NFV on x86

One guide moves here from the NFWare blog at launch; the rest follow in the NFV content wave.

GuidePackets per second, not bitsSizing by packet rate and packet size.PerformanceComing soon
GuideDPDK, VPP, XDP and eBPFHow each datapath bypasses the kernel.PerformanceComing soon
GuideBenchmarking a virtual network functionRFC 2544 profiles and reading reports.PerformanceComing soon
GuideConverged or dedicated platformsThe cost of running CGNAT on shared hardware.DeploymentRead →
GuideBare metal, VM or KubernetesPlatforms for network functions compared.DeploymentComing soon
GuideUpgrades without downtimeSession sync and rolling upgrades.DeploymentComing soon

Moving network functions to x86?Our engineers will help you size servers for your packet rates.

FAQ

How many packets per second does a 100 GbE port carry?

Up to 148.81 million at 64-byte frames and about 8.1 million at 1,518-byte frames. Real traffic mixes sizes, so size servers for your measured average packet size.

Do software network functions need DPDK?

Not always. Kernel networking handles modest rates. At tens of millions of packets per second per server, user-space datapaths such as DPDK or VPP, or XDP in the kernel, remove the per-packet overhead.

What hardware does NFWare vCGNAT need?

A CPU with AVX2, such as Intel Xeon from the Haswell (v3) generation on, a KVM-based hypervisor and server-grade 10–200 GbE network cards, according to the vCGNAT 6.4 documentation.

Can a stateful network function be upgraded without dropping sessions?

Yes, with an active/standby pair that synchronises session state: upgrade the standby, switch traffic to it, then upgrade the former active node.