Subject: [homenet] IPv4 source-specific routing in the Linux kernel

From: Juliusz Chroboczek <[email-masked]>
Date: Thu, 20 Apr 2017 23:16:48 +0200

« Finally, Martin Kafai Lau asked if work should be done to merge the IPv4
  and IPv6 FIB (forwarding information base) trees. The FIB tree is the
  data structure that represents routing tables in the Linux
  kernel. Miller explained that the two trees are not semantically
  equivalent: while IPv6 does source-address lookup and routing, IPv4 does
  not. We can't remove the source lookups from IPv6, because "people
  probably use that". According to Alexander Duyck, adding source tables
  to IPv4 would degrade performance to the level of IPv6 performance,
  which was jokingly referred to as an incentive to switch to IPv6.

« More seriously, Sowa argued that using the same compressed tree IPv4
  uses in IPv6 could make sense. People may want to have source routing in
  IPv4 as well. Miller argued that the kernel is optimized for 32-bit
  addresses in IPv4, and conceded that it could be scaled to 64-bit
  subnets, but 128-bit addresses would be much harder. Sowa suggested that
  they could be limited to 64 bits, as global routes that are announced
  over BGP usually have such a limit, and more specific routes are usually
  at discrete prefixes like /65, /127 (for interconnect links) or /128 for
  (for point-to-point links). He expressed concerns over the reliability
  of such an implementation so, at this point, it is unlikely that the
  data structures could be merged. What is more likely is that the code
  path could be merged and simplified, while keeping the data structures
  separate. »

https://lwn.net/Articles/719297/