IPv4 route lookup on Linux
TL;DR: With its implementation of IPv4 routing tables using LPC-tries, Linux offers good lookup performance (50 ns for a full view) and low memory usage (64 MiB for a full view).
During the lifetime of an IPv4 datagram inside the Linux kernel, one
important step is the route lookup for the destination address
through the fib_lookup() function. From essential
information about the datagram (source and destination IP addresses,
interfaces, firewall mark, …), this function should quickly provide
a decision. Some possible options are:
- local delivery (
RTN_LOCAL), - forwarding to a supplied next hop (
RTN_UNICAST), - silent discard (
RTN_BLACKHOLE).
Since 2.6.39, Linux stores routes into a compressed prefix tree (commit 3630b7c050d9). In the past, a route cache was maintained but it has been removed1 in Linux 3.6.
Route lookup in a trie
Looking up a route in a routing table is to find the most specific prefix matching the requested destination. Let’s assume the following routing table:
Cisco claims it can detect malware threats in encrypted traffic.
CENX recently snagged an NFV assurance deal with Verizon and joined ETSI's OSM project.
Updates target growing demand on metro networks.
New revenue streams from services like video are behind the 5G push.