EPON系統三層路由及接口設計
路由可以分為靜態路由和動態路由兩大類。靜態路由由網絡管理者直接配置產生,動態路由由路由協議學習生成。為了實現軟件路由表和交換芯片路由表的同步和路由擇優等功能,需要進行路由信息收集、過濾、優選等操作,因此系統中需要路由管理模塊維護不同的路由表項。路由管理模塊(RTM)位于各軟硬件平臺驅動層之上,三層功能協議層及管理層之下,是三層功能實現的核心模塊。根據設計,它在系統中需要完成的工作如下:
?、?管理員配置添加三層接口,包括添加SUPER-VLAN、SUB-VLAN以及IP;
② 接口管理模塊向路由管理模塊通告接口事件,如接口的UP/DOWN事件;
③ 協議模塊學習到動態路由,進行動態路由的添加/刪除;
?、?路由管理模塊處理接口變化事件,并通知各三層功能協議模塊;同時管理來自協議模塊的動態路由的寫入與刪除;
?、?OS IP協議棧ARP功能提供主機路由表的維護,并向路由管理模塊提供路由條目中下一跳Gate-way相關的ARP功能;
⑥ 交換芯片驅動為路由管理模塊提供硬件FIB表的刪除與寫入功能。
?、?OS IP協議棧向路由管理模塊提供硬件FIB表的刪除與寫入功能。
對應上述功能,設計將路由管理模塊劃分成更小的模塊來分別實現。如圖2所示,路由管理模塊(RTM)由路由表控制模塊(RTM_CTRL)、主機路由控制模塊、管理與配置模塊、動態路由消息處理模塊、接口消息處理模塊、操作系統適配層以及驅動適配層組成。
路由表(RIB table)由節點鏈表組成,每個節點表示到達一個目的網段的所有路由。如圖3所示,每一個node中都記錄3張RIB表,分別是RIB-active表、RIB-standby表和RIB-pend表,每一個表的子項都是到達該目的網段的路由信息,即RIB路由條目、RIB里面記錄路由類型(RIP/OSPF/靜態等)、下一跳網關、距離、metric和生成時間等。

RIB-active中的RIB路由表示當前激活的路由,該路由會被寫入到硬件FIB和OS FIB中去,實現業務流的三層轉發功能。通常一個目的網段只有一個active路由。
RIB-standby中的路由條目是可到達但不是最優路徑的路由,當active路由不可用時,路由管理模塊會在standby RIB找一個最優路由升級為active路由。
RIB-pend路由表中的路由是由于該路由的下一跳網關不可達(查ARP表)而暫時掛起的路由路徑,當下一跳網關可達后,該路由會升級為standby路由或者是active路由。
2.2 OSPF路由原理
OSPF是一種鏈路狀態路由協議,被設計用于單一的自制系統(AS)中。每個OSPF路由器都維持著同樣的數據庫以描述AS的拓撲結構,并以此數據庫來創建最短路徑樹和計算路由表。OSPF提供等值多路徑。在發現拓撲改變后,OSPF僅利用很少的路由流量就可以快速地重新計算出路徑。通過提供區域路徑,來提供額外的路徑保護并可以減少協議所需要的流量。有關路由表的計算是OSPF的核心內容,它是動態生成路由器內核路由表的基礎。這里將復雜的OSPF計算過程總結為以下四點:
① 當路由器初始化或當網絡結構發生變化(例如增減路由器,鏈路狀態發生變化等)時,路由器會產生鏈路狀態廣播數據包LSA(Link-State Advertisement),該數據包里包含路由器上所有相連鏈路,也即為所有端口的狀態信息。
?、?所有路由器會通過一種被稱為刷新(Flooding)的方法來交換鏈路狀態數據。Flooding是指路由器將其LSA數據包傳送給所有與其相鄰的OSPF路由器,相鄰路由器根據其接收到的鏈路狀態信息更新自己的數據庫,并將該鏈路狀態信息轉送給與其相鄰的路由器,直至穩定的一個過程。
?、?當網絡重新穩定下來,即OSPF路由協議收斂下來時,所有的路由器會根據其各自的鏈路狀態信息數據庫計算出各自的路由表。該路由表中包含路由器到每一個可到達目的地的Cost以及到達該目的地所要轉發的下一個路由器(next-hop)。
?、?當網絡狀態比較穩定時,網絡中傳遞的鏈路狀態信息是比較少的。這也正是鏈路狀態路由協議區別于距離矢量路由協議的一大特點。
通過以上步驟,OSPF動態監視網絡狀態,一旦發生變化則迅速擴散,達到對網絡拓撲的快速聚合,從而確定出新的網絡路由表。這里的路由表不同于實現路由轉發功能時用到的內核路由表,它只是OSPF本身的內部路由表。因此,完成上述工作后,往往還要通過路由管理模塊與內核路由表交互,實現三層轉發。
評論