Linux策略性路由应用及深入分析(2)
IP层路由适配(IP route)
路由表以及规则组成的系统,可以完成路由的管理以及查找的工作,但是为了使得IP层的路由工作更加的高效,linux的路由体系里,route.c里完成大多数IP层与RPDB的适配工作,以及路由缓冲(route cache)的功能。
调用接口
IP层的路由接口分为发送路由接口以及接收路由接口:
发送路由接口
IP层在发送数据时如果需要进行路由工作的时候,就会调用ip_route_out函数。这个函数在完成一些键值的简单转换以后,就会调用 ip_route_output_key函数,这个函数首先在缓存里寻找路由,如果失败就会调用 ip_route_output_slow,ip_route_output_slow里调用fib_lookup在路由表里寻找路由,如果命中,首先在 缓存里添加这个路由,然后返回结果。
ip_route_out route.h
ip_route_output_key route.c 1984;
ip_route_output_slow route.c 1690;"
接收路由接口
IP层接到一个数据包以后,如果需要进行路由,就调用函数ip_route_input,ip_route_input现在缓存里寻找,如果失败则 ip_route_inpu调用ip_route_input_slow, ip_route_input_slow里调用fib_lookup在路由表里寻找路由,如果命中,首先在缓存里添加这个路由,然后返回结果。
ip_route_input_slow route.c 1312;" f
ip_route_input route.c 1622;" f
cache
路由缓存保存的是最近使用的路由。当IP在路由表进行路由以后,如果命中就会在路由缓存里增加该路由。同时系统还会定时检查路由缓存里的项目是否失效,如果失效则清除。
顶(0)
踩(0)
- 最新评论