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