Interactions with Other Subsystems
The section "Interactions with Other Subsystems" in Chapter 31 anticipated the main interactions that the routing subsystem has with other ones, such as Traffic Control and Firewall. In the following subsections, we will see some more details. The interaction with the routing table based classifier is deferred until Chapter 35 because it requires some background on the routing table structure and on how lookups are implemented.
Netlink Notifications
When a
route is added or removed, a notification is sent to the Netlink group RTMGRP_IPV4_ROUTE using the routine rtmsg_fib. Notifications for creation and deletions are respectively
generated in fn_hash_insert and fn_hash_delete, two important routines that we will see in
Chapter 34. See also the section "Change Notifications" in Chapter 36.
Policy Routing and Firewall-Based Classifier
As anticipated in the section "Interactions with Other Kernel Subsystems" in Chapter 31, policy routing can use a tag
initialized by the firewall code as a discriminator to decide which routing table to use
for both ingress and egress traffic. Routing based on firewall tagging requires special
support to be compiled into the kernel. When available, the firewall tag is part of the
cache and routing table lookup keys (represented by flowi structures). The firewall subsystem copies the tag into the skb->nfmark buffer field, where it can be used as a discriminator by Policy Routing to decide which routing table to use to route ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access