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