深入探索Linux網絡棧的規則引擎,揭秘策略路由如何通過多級路由表實現復雜流量控制
在Linux網絡棧中,路由決策遠不止簡單的目的地址匹配。策略路由(Policy Routing)允許根據源地址、TOS值、端口等復雜條件選擇不同的路由路徑。本文將深入剖析實現這一功能的核心源碼——net/ipv4/fib_rules.c
,揭示策略路由的運作機制。
一、策略路由基礎概念
策略路由打破了傳統路由基于單一目的地址的限制,支持:
-
多路由表并行存在(最多255張)
-
基于源/目的地址、TOS、端口等條件的路由選擇
-
靈活的路由優先級控制
-
流量分類(tclassid)支持
通過ip rule
命令可查看當前規則:
$ ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
二、核心數據結構剖析
1. fib4_rule:IPv4路由規則實體
struct fib4_rul