同前綴的路由在Radix樹中的存儲方法

我們都知道路由表通常使用Radix樹來存儲,可是你又沒有想過如下路由怎麼處理呢:

(這裡拿127.0.0.0作為前綴只是個例子,無實際意義)

Destination/Mask    Proto  Pre  Cost     Flags NextHop         Interface

       127.0.0.0/8    Static 60   0          RD  10.0.0.2        Ethernet0/0/0
       127.0.0.0/16  Static 60   0          RD  10.0.0.3        Ethernet0/0/0
       127.0.0.0/24  Static 60   0          RD  10.0.0.4        Ethernet0/0/0

這三條路由前綴都是127.0.0.0,但粒度不同。根據最長匹配原則,如果要去127.0.0.1,第一條路由最優,第二條次之,第三條是“無奈之舉”。

路由在Radix樹中大略像下圖那樣組織。

我們可以看到前綴127.0.0.0的路由在紅框處,上圖只有一條該前綴的路由,我們的疑問是三條怎麼辦?

翻閱了那本該死的《TCP/IP協議詳解卷二:實現》,裏面洋洋灑灑地說了一大堆,無非就是說單純用Radix樹也搞不定,只有在這個前綴下做個鏈錶,把所有同前綴的路由掛上去,順序從掩碼最精確到最不精確。教授我想了半天也沒什麼好方法。見下圖:

 

Radix樹來存儲路由有很多細節,如果不動手做一把,大概不會體味到。教授大人生來厭惡Linux、BSD等等,從看它們的實現,看也看不懂。中國人的編程習慣是與洋人不同的。有那功夫自己都搞成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值