如何使用二叉線索查找路由表

2016-07-06 3246 1 編輯:深色多郎 來源:互聯網書籍

使用CIDR后,由于要尋找最長前綴匹配,使路由表的查找過程變得更加復雜了。當路由表的項目數很大時,怎樣設法減小路由表的查找時間就成為一個非常重要的問題。例如,連接路由器的線路的速率為10Gb/s,而分組的平均長度為2000 bit,那么路由器就應當平均每秒鐘能夠處理500萬個分組(常記為5 Mpps)。或者說,路由器處理一個分組的平均時間只有200ns。因此,查找每一個路由所需的時間應當是非常短的。可見在路由表中必須使用很好的數據結構和使用先進的快速查找算法,這一直是人們積極研究的熱門課題。

對無分類編址的路由表的最簡單的查找算法就是對所有可能的前綴進行循環查找。例如,給定一個目的地址D。對每一個可能的網絡前綴長度M,路由器從D中提取前M個位成一個網絡前綴,然后查找路由表中的網絡前綴。所找到的最長匹配就對應于要查找的路由。

這種最簡單的算法的明顯缺點就是查找的次數太多。最壞的情況是路由表中沒有這個路由。在這種情況下,算法仍要進行32次(具有32位的網絡前綴是一個特定主機路由)。就是要找到一個傳統的B類地址(即/16),也要查找16次。對于經常使用的默認路由,這種算法都要經歷31次的不必要的查找。

為了進行更加有效的查找,通常是把無分類編址的路由表存放在一種層次的數據結構中,然后自上而下地按層次進行查找。這里最常用的就是二叉線索,它是一種特殊結構的樹。IP地址中從左到右的比特值決定了從根節點逐層向下層延伸的路徑,而二叉線索中的各個路徑就代表路由表中存放的各個地址。


本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
我們猜你喜歡
七星彩头尾