Linux内核路由表介绍及相关函数
?
內(nèi)核對(duì)路由表的操作
-
更新
-
插入
-
刪除
-
查找
?
路由表種類
-
網(wǎng)絡(luò)路由表:ip_fib_main_table
-
本地路由表:ip_fib_local_table
-
路由緩存:rt_hash_table
-
策略路由:根據(jù)策略支持多張路由表
?
表項(xiàng)
-
路由緩存表項(xiàng):rtable, 一般使用dst_entry,rtable是對(duì)dst_entry的包裹,另外rtable中還有協(xié)議相關(guān)的信息。
-
dst_entry:對(duì)一條路由緩存存儲(chǔ)協(xié)議無關(guān)的信息
?
更新:
1. 路由緩存
rt_cache_flush()? ? 安排刷新路由緩存
2. 路由表
fib_sync_down()? ? ?當(dāng)一個(gè)設(shè)備被關(guān)閉或刪除一個(gè)本地地址時(shí)更新路由表
fib_flush()?? ?? ? ?掃描路由表,刪除路由項(xiàng)
?
?
插入:
1. 路由緩存
rt_intern_hash()? ? 向路由緩存添加一條表項(xiàng)
2. 路由表,分為用戶空間插入方法和內(nèi)核方法,用戶空間最終是通過調(diào)用內(nèi)核方法實(shí)現(xiàn)。
?
?
刪除:
1. 路由緩存
rt_free()?? ??? ?? ?刪除路由緩存中的一條表項(xiàng)
dst_free()?? ??? ?? 刪除dst_entry
2. 路由表,分為用戶空間插入方法和內(nèi)核方法,用戶空間最終是通過調(diào)用內(nèi)核方法實(shí)現(xiàn)。
fib_del_ifaddr()? ? 標(biāo)記一個(gè)需要?jiǎng)h除的路由項(xiàng),然后調(diào)用fib_sync_down()或fib_flush()來清理路由表
?
?
查找:
1. 路由緩存
入口流量:ip_route_input()
出口流量:ip_route_output_key()
2. 路由表
入口流量:ip_route_input_slow()
出口流量:ip_route_output_slow()
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Linux内核路由表介绍及相关函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 婴儿睡袋品牌前十名(25款婴幼儿睡袋测评
- 下一篇: linux TCP/IP L2层数据包接