Course contentsShow
← Linux
Lesson 1148 of 1,81910. Network Administration and Kernel StacksFree lesson

The Xtables and NFTables Architecture

Compare and transition between legacy and modern kernel firewall backends.

In this lesson, you will learn how the Linux kernel evolved from the legacy Xtables framework to the modern, high-performance nftables architecture for packet filtering.

The Legacy: Xtables

For years, the Linux firewall relied on Xtables, the infrastructure behind iptables. In Xtables, the kernel provided several hard-coded hooks (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING). When you added a rule, the kernel had to traverse a massive, monolithic structure.

The biggest challenge with Xtables is that it requires separate binaries for different protocols (e.g., iptables for IPv4, ip6tables for IPv6, arptables for ARP). This creates code duplication and inefficiencies, as the kernel cannot easily "see" across these different stacks.

The Modern Shift: NFTables

NFTables was introduced to replace Xtables by providing a more flexible, abstract interface. Instead of hard-coded structures, nftables uses a Virtual Machine (VM) approach.

  1. The VM Bytecode: When you write a rule in nftables, the user-space utility compiles that rule into bytecode. The kernel then executes this bytecode using its own internal virtual machine.
  2. Unified Data Structures: Unlike the fragmented Xtables, nftables uses a unified data structure for all protocols. You can match IPv4 and IPv6 addresses in the same rule set without needing separate tools.
  3. Efficiency: Xtables required the kernel to parse every rule sequentially. NFTables uses "maps" and "sets," allowing the kernel to perform lookups using high-speed data structures (like hashes or trees) rather than linear scans.

Practical Comparison

In iptables, if you want to block two different IPs, you write two rules:

iptables -A INPUT -s 192.168.1.5 -j DROP
iptables -A INPUT -s 192.168.1.10 -j DROP

In nftables, you define a set, which is much faster for the kernel to process:

nft add element inet filter blocklist { 192.168.1.5, 192.168.1.10 }

By moving the logic from rigid kernel hooks into a programmable VM, nftables drastically reduces the time the kernel spends processing packets while minimizing the memory overhead of your firewall rules.

Key Takeaway: While Xtables relies on rigid, protocol-specific hooks, NFTables utilizes a unified virtual machine and efficient data structures to handle firewall rules across all protocol families with significantly higher performance.