EPON系統(tǒng)三層路由及接口設計
路由可以分為靜態(tài)路由和動態(tài)路由兩大類。靜態(tài)路由由網(wǎng)絡管理者直接配置產(chǎn)生,動態(tài)路由由路由協(xié)議學習生成。為了實現(xiàn)軟件路由表和交換芯片路由表的同步和路由擇優(yōu)等功能,需要進行路由信息收集、過濾、優(yōu)選等操作,因此系統(tǒng)中需要路由管理模塊維護不同的路由表項。路由管理模塊(RTM)位于各軟硬件平臺驅(qū)動層之上,三層功能協(xié)議層及管理層之下,是三層功能實現(xiàn)的核心模塊。根據(jù)設計,它在系統(tǒng)中需要完成的工作如下:
?、?管理員配置添加三層接口,包括添加SUPER-VLAN、SUB-VLAN以及IP;
?、?接口管理模塊向路由管理模塊通告接口事件,如接口的UP/DOWN事件;
?、?協(xié)議模塊學習到動態(tài)路由,進行動態(tài)路由的添加/刪除;
④ 路由管理模塊處理接口變化事件,并通知各三層功能協(xié)議模塊;同時管理來自協(xié)議模塊的動態(tài)路由的寫入與刪除;
?、?OS IP協(xié)議棧ARP功能提供主機路由表的維護,并向路由管理模塊提供路由條目中下一跳Gate-way相關(guān)的ARP功能;
?、?交換芯片驅(qū)動為路由管理模塊提供硬件FIB表的刪除與寫入功能。
?、?OS IP協(xié)議棧向路由管理模塊提供硬件FIB表的刪除與寫入功能。
對應上述功能,設計將路由管理模塊劃分成更小的模塊來分別實現(xiàn)。如圖2所示,路由管理模塊(RTM)由路由表控制模塊(RTM_CTRL)、主機路由控制模塊、管理與配置模塊、動態(tài)路由消息處理模塊、接口消息處理模塊、操作系統(tǒng)適配層以及驅(qū)動適配層組成。
路由表(RIB table)由節(jié)點鏈表組成,每個節(jié)點表示到達一個目的網(wǎng)段的所有路由。如圖3所示,每一個node中都記錄3張RIB表,分別是RIB-active表、RIB-standby表和RIB-pend表,每一個表的子項都是到達該目的網(wǎng)段的路由信息,即RIB路由條目、RIB里面記錄路由類型(RIP/OSPF/靜態(tài)等)、下一跳網(wǎng)關(guān)、距離、metric和生成時間等。
RIB-active中的RIB路由表示當前激活的路由,該路由會被寫入到硬件FIB和OS FIB中去,實現(xiàn)業(yè)務流的三層轉(zhuǎn)發(fā)功能。通常一個目的網(wǎng)段只有一個active路由。
RIB-standby中的路由條目是可到達但不是最優(yōu)路徑的路由,當active路由不可用時,路由管理模塊會在standby RIB找一個最優(yōu)路由升級為active路由。
RIB-pend路由表中的路由是由于該路由的下一跳網(wǎng)關(guān)不可達(查ARP表)而暫時掛起的路由路徑,當下一跳網(wǎng)關(guān)可達后,該路由會升級為standby路由或者是active路由。
2.2 OSPF路由原理
OSPF是一種鏈路狀態(tài)路由協(xié)議,被設計用于單一的自制系統(tǒng)(AS)中。每個OSPF路由器都維持著同樣的數(shù)據(jù)庫以描述AS的拓撲結(jié)構(gòu),并以此數(shù)據(jù)庫來創(chuàng)建最短路徑樹和計算路由表。OSPF提供等值多路徑。在發(fā)現(xiàn)拓撲改變后,OSPF僅利用很少的路由流量就可以快速地重新計算出路徑。通過提供區(qū)域路徑,來提供額外的路徑保護并可以減少協(xié)議所需要的流量。有關(guān)路由表的計算是OSPF的核心內(nèi)容,它是動態(tài)生成路由器內(nèi)核路由表的基礎。這里將復雜的OSPF計算過程總結(jié)為以下四點:
?、?當路由器初始化或當網(wǎng)絡結(jié)構(gòu)發(fā)生變化(例如增減路由器,鏈路狀態(tài)發(fā)生變化等)時,路由器會產(chǎn)生鏈路狀態(tài)廣播數(shù)據(jù)包LSA(Link-State Advertisement),該數(shù)據(jù)包里包含路由器上所有相連鏈路,也即為所有端口的狀態(tài)信息。
?、?所有路由器會通過一種被稱為刷新(Flooding)的方法來交換鏈路狀態(tài)數(shù)據(jù)。Flooding是指路由器將其LSA數(shù)據(jù)包傳送給所有與其相鄰的OSPF路由器,相鄰路由器根據(jù)其接收到的鏈路狀態(tài)信息更新自己的數(shù)據(jù)庫,并將該鏈路狀態(tài)信息轉(zhuǎn)送給與其相鄰的路由器,直至穩(wěn)定的一個過程。
③ 當網(wǎng)絡重新穩(wěn)定下來,即OSPF路由協(xié)議收斂下來時,所有的路由器會根據(jù)其各自的鏈路狀態(tài)信息數(shù)據(jù)庫計算出各自的路由表。該路由表中包含路由器到每一個可到達目的地的Cost以及到達該目的地所要轉(zhuǎn)發(fā)的下一個路由器(next-hop)。
?、?當網(wǎng)絡狀態(tài)比較穩(wěn)定時,網(wǎng)絡中傳遞的鏈路狀態(tài)信息是比較少的。這也正是鏈路狀態(tài)路由協(xié)議區(qū)別于距離矢量路由協(xié)議的一大特點。
通過以上步驟,OSPF動態(tài)監(jiān)視網(wǎng)絡狀態(tài),一旦發(fā)生變化則迅速擴散,達到對網(wǎng)絡拓撲的快速聚合,從而確定出新的網(wǎng)絡路由表。這里的路由表不同于實現(xiàn)路由轉(zhuǎn)發(fā)功能時用到的內(nèi)核路由表,它只是OSPF本身的內(nèi)部路由表。因此,完成上述工作后,往往還要通過路由管理模塊與內(nèi)核路由表交互,實現(xiàn)三層轉(zhuǎn)發(fā)。
評論