最近看linux源代码的IP路由部分,遇到一些疑惑:
路由转发过程中先用ip_route_input()查路由缓存,不中了再在ip_route_input_slow()中调用fib_lookup()查询路由表(FIB),路由规则、路由表和路由缓存相关的一些数据结构和函数都看了大概,比较复杂,但发现对路由的查询都以套接字缓冲区指针、源和目的地址、TOS值以及net_device指针为参数。
在linux下route -C,发现路由缓存格式为Source Destination Gateway Flags Metric Ref Use Iface,与参数基本一致,但路由表格式为Destination Gateway Genmask Flags Metric Ref Use Iface,两者有些差别,难道时将在路由表中查到的条目与源地址一起组成了路由缓存?这是由数据结构决定的么,以前我觉得源地址是没用的,后来才知到需要用来做逆向路径过滤,即源地址检验,不知我的理解是否有偏差,敬请指教!
谢谢!
[ 本帖最后由 njngypp 于 2008-4-24 07:57 编辑 ]
--------------------next---------------------
阅读(542) | 评论(0) | 转发(0) |