亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5842 | 回復: 3
打印 上一主題 下一主題

linux route table數(shù)據(jù)結(jié)構(gòu)圖 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-07-17 13:06 |只看該作者 |倒序瀏覽
本帖最后由 mtloveft 于 2010-07-17 13:11 編輯

提示:本文是關于linux實現(xiàn)路由的數(shù)據(jù)結(jié)構(gòu)!
linux version : 2.6.33.1
blog:               http://oldtown.cublog.cn/
URL:                http://blog.chinaunix.net/u3/114767/showart_2270140.html


結(jié)構(gòu)圖如下:

http://blog.chinaunix.net/photo/114767_100711204319.jpg


關于路由表的相關解釋如下:
所有的路由表fib_table都被組織到一個Hash標net->ipv4.fib_table_hash里。
在沒有多路徑路由時,這個Hash表里就只有兩項,Hash值分別為RT_TABLE_LOCAL和
RT_TABLE_MAIN。路由查找時先從LOCAL表里查,沒查到的話,然后MAIN里查。
而fib_table里有一個按照網(wǎng)絡掩碼長度組織的Hash表fn_hash。fib_table里雖然
沒有定義fn_hash,但初始化申請內(nèi)存時,多申請了Hash表fn_hash大小的內(nèi)存了。
也就是tb_data直接指向這個Hash表。這個結(jié)構(gòu)定義的很有技巧,其實內(nèi)核里有
很多結(jié)構(gòu)定義的都很有技巧,以后還會在這方面單獨介紹些。這樣數(shù)據(jù)結(jié)構(gòu)之間就可以
直接進行轉(zhuǎn)換了,效果就有了OO的isA和hasA了。fn_hash里只有33項。為什么有33
項?因為IPv4的長度只有32Bit位,所以網(wǎng)絡掩碼長度就有32個,例如:172.21.10.1/1
掩碼長度就為1, 172.21.10.1/24 掩碼長度為24,等等,在加上/0一項就是33個。
/0就是缺省路由,即default route。

論壇徽章:
0
2 [報告]
發(fā)表于 2010-07-17 13:46 |只看該作者
這段時間正好在看這兒~~ 多謝lz了

論壇徽章:
0
3 [報告]
發(fā)表于 2010-07-17 18:16 |只看該作者
我發(fā)現(xiàn)個問題 假如我自定義個表 table 1000

并且我將報文打MARK, 通過IP RULE規(guī)則讓報文查1000的表。

結(jié)果是:
如果1000表中存在路由則一切正常, 報文按照1000定義的路由規(guī)則走。
如果1000表是空的, 那么報文則查找默認路由。按照我的理解既然我強制MARK的報文走1000表。 如果表空則停止查找。

沒來得急看代碼, 暫時留個記號。

論壇徽章:
0
4 [報告]
發(fā)表于 2014-05-26 19:47 |只看該作者
樓主,這個圖是用什么工具畫的?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP