基于路徑標識的多路徑域間路由的開發(fā)與實現(xiàn)
2.2 轉發(fā)層的設計
目前的路由器基本都運行在Linux系統(tǒng)中。因為Linux內核提供了完善的網絡功能,本方案也是基于Linux內核協(xié)議棧。Linux內核協(xié)議棧是指網絡中各層協(xié)議的總和,從上到下依次為應用層、傳輸層、網絡層和網絡接口層。其中網絡層負責處理網絡中的數(shù)據包,包括數(shù)據包路徑的查找、轉發(fā)、接收等工作。多路徑域問路由方案的數(shù)據包頭主要由傳統(tǒng)數(shù)據包頭和PID、AS號和Local Identifier組成。其中PID和AS號字段用于域間路由使用,Local Iclentifier用于域內路由使用。
多路徑域間路由數(shù)據包轉發(fā)的示意圖如圖2所示。本文引用地址:http://m.butianyuan.cn/article/190503.htm
收到數(shù)據包需要按如下步驟進行轉發(fā):
(1)檢查PID字段是否為空,如果為空,則匹配AS號,根據匹配項填充PID字段,根據查詢到的PID進行平面查找內核路由表,并將數(shù)據包轉發(fā)到相應的端口上。
(2)如果PID字段不為空,則用平面查找方式匹配PID,如果有匹配項,路由器根據匹配項轉發(fā)到對應端口;如果沒有匹配的PID,再根據標志位,置位的路由器可以按匹配目的AS號的方法對數(shù)據包進行轉發(fā),沒有置位的則將數(shù)據包丟棄。
(3)當數(shù)據包跨出本AS域轉發(fā)到下一個AS域時,PID字段需替換成路由條目中NEXT_PID;當PID為本地AS的哈希值時,表明數(shù)據包此時已經到達目的AS,此時需交由域內路由協(xié)議用Destination Local Identier進行轉發(fā)。
3 基于路徑標識的多路徑域間路由方案的實現(xiàn)
多路徑域間路由方案實現(xiàn)模塊圖如圖3所示,其中控制層模塊主要實現(xiàn)UPDATE消息的產生、交互和處理,并且提供了一些配置和顯示命令。在多路徑域間路由方案中只需要修改NLRI模塊、UPDATE消息處理模塊、平面路由表模塊和配置、顯示命令模塊,其他部分可以沿用BGP的設計。RTM模塊主要實現(xiàn)控制層和轉發(fā)層之間的交互,原始數(shù)據包的提交和路由信息的下發(fā)。轉發(fā)層模塊實現(xiàn)平面轉發(fā)表的構建、數(shù)據包的封裝和解封,以及具體的數(shù)據包轉發(fā)流程。
3.1 NRLI模塊
該模塊主要實現(xiàn)在AS之間傳遞路由可達消息。在BGP中被設計成(長度,前綴)二元組,為了兼容多路徑域間路由方案,需要修改成長度,前綴,PID,AS>四元組,使之既可以滿足多路徑域間路由的需要,也可以兼容現(xiàn)有的路由方式。
評論