傅 偉
(江蘇財(cái)經(jīng)職業(yè)技術(shù)學(xué)院智能工程技術(shù)學(xué)院, 江蘇淮安 223003)
動(dòng)態(tài)路由協(xié)議主要分為距離矢量和鏈路狀態(tài)兩大類(lèi)[1]。 距離矢量路由協(xié)議主要以RIP(Routing Information Protocol)為典型代表[2],其是完全以路由器的跳數(shù)作為計(jì)算源到目的地的度量值,在中小型網(wǎng)絡(luò)中能夠發(fā)揮一定作用。 隨著網(wǎng)絡(luò)規(guī)模擴(kuò)大,RIP 路由協(xié)議主要問(wèn)題比較突出。 其一,RIP 最大網(wǎng)絡(luò)距離為15 跳,16 跳時(shí)認(rèn)為不可到達(dá),限制了網(wǎng)絡(luò)范圍;其二,RIP 路由協(xié)議工作中需要不斷地發(fā)送更新報(bào)文,因此會(huì)占用一定的網(wǎng)絡(luò)帶寬,增加網(wǎng)絡(luò)開(kāi)銷(xiāo),影響網(wǎng)絡(luò)性能;其三,RIP 路由協(xié)議收斂速度比較慢,當(dāng)網(wǎng)絡(luò)發(fā)生故障,要經(jīng)過(guò)較長(zhǎng)時(shí)間才能通知到所有路由器,因此在工程組網(wǎng)中RIP 協(xié)議應(yīng)用較少。 鏈路狀態(tài)路由協(xié)議主要以開(kāi)放最短路徑優(yōu)先(Open Shortest Path First,OSPF)為典型代表[3],該路由協(xié)議克服了RIP協(xié)議存在的一系列問(wèn)題,對(duì)網(wǎng)絡(luò)發(fā)生的變化能夠快速響應(yīng),及時(shí)產(chǎn)生觸發(fā)式更新,網(wǎng)絡(luò)收斂速度快,因此在工程組網(wǎng)中應(yīng)用得比較普遍。
OSPF 路由協(xié)議是內(nèi)部網(wǎng)關(guān)協(xié)議[4],工作在一個(gè)自治系統(tǒng)中,用于自治系統(tǒng)內(nèi)部路由信息交換,OSPF 形成路由表主要經(jīng)歷了鄰居發(fā)現(xiàn)、DR/BDR選舉、路由通告、路由計(jì)算等階段。
以圖1 中兩臺(tái)路由器為例,啟動(dòng)OSPF 進(jìn)程后,兩臺(tái)路由器分別從自己直連接口以224.0.0.5 為目的地址發(fā)送Hello 數(shù)據(jù)包;鄰居R2 收到來(lái)自R1 的Hello 數(shù)據(jù)包會(huì)將包中的R1 的Router-id 放入自己的鄰居表中,并將自身狀態(tài)標(biāo)記為Init 狀態(tài),然后將R1 的Router-id 放入Hello 包中,同樣以224.0.0.5為目的地址向鄰居R1 發(fā)送Hello 數(shù)據(jù)包;R1 在收到R2 發(fā)送過(guò)來(lái)的Hello 數(shù)據(jù)包,發(fā)現(xiàn)包中含有自己的Router-id,然后將自身狀態(tài)標(biāo)記為T(mén)wo-way 狀態(tài),標(biāo)志著鄰居關(guān)系已經(jīng)建立,形成鄰居表。
圖1 鄰居發(fā)現(xiàn)拓?fù)鋱DFig. 1 Neighbor discovery topology
在廣播或非廣播- 多路訪問(wèn)網(wǎng)絡(luò)(Non -Broadcast Multiple Access,NBMA)中,還需要完成DR/BDR 選舉。 DR 為指定路由器,負(fù)責(zé)將鏈路狀態(tài)變化信息通知到除BDR 以外的其它所有OSPF路由器;BDR 為備用路由器,負(fù)責(zé)監(jiān)控DR 的狀態(tài),當(dāng)DR 發(fā)生故障時(shí)接替其工作。 DR/BDR 選舉原則為優(yōu)先級(jí)高的為DR、優(yōu)先級(jí)次高的為BDR;如果優(yōu)先級(jí)相同,則Router-id 大的為DR,其次為BDR;如果未指定Router-id,則將路由器所有接口中IP 地址最大的作為Router-id。 如圖2 所示,交換機(jī)連接4 臺(tái)路由器,構(gòu)成一個(gè)OSPF 區(qū)域,4 臺(tái)路由器優(yōu)先級(jí)相同,IP 地址分別如圖2 中所示。 4 臺(tái)路由器都進(jìn)行相應(yīng)的配置,開(kāi)啟OSPF 進(jìn)程,待網(wǎng)絡(luò)穩(wěn)定后,通過(guò)show ip ospf neighbor 查詢鄰居關(guān)系,發(fā)現(xiàn)R4作為DR、R3 作為BDR、R1 和R2 作為DROther。 4臺(tái)路由器優(yōu)先級(jí)相同,在未配置Router-id 的情況下,將IP 地址作Router-id,R4 的IP 地址最大,因此選為DR;R3 的IP 地址排第二,因此被選作BDR;R1 和R2 作為DROther。 在網(wǎng)絡(luò)發(fā)生變化時(shí),DROther 只向DR 和BDR 通告,再由DR 向其它的DROther 發(fā)出通告,這樣大大減少了網(wǎng)絡(luò)的廣播報(bào)文,提升了網(wǎng)絡(luò)性能。
圖2 DR/BDR 選舉拓?fù)鋱DFig. 2 DR/BDR election topology
運(yùn)行OSPF 路由協(xié)議的路由器形成鄰接關(guān)系后,進(jìn)入準(zhǔn)啟動(dòng)狀態(tài)發(fā)送鏈路狀態(tài)通告(Link-State Advertisement,LSA),主要將路由器接口、鏈路、鄰居的狀態(tài)等通過(guò)DBD 數(shù)據(jù)包,以224.0.0.5 通告給鄰居,形成鏈路狀態(tài)數(shù)據(jù)庫(kù)(Link State DataBase,LSDB);對(duì)鏈路狀態(tài)數(shù)據(jù)庫(kù)和收到的DBD 的LSA 頭部進(jìn)行比較,若自身數(shù)據(jù)庫(kù)中沒(méi)有LSA 就發(fā)送LSR(Link-State Request),鄰居收到LSR 后,回應(yīng)LSU(Link-State Update);收到鄰居發(fā)送的LSU 后,將新LSA 存儲(chǔ)到自己的鏈路狀態(tài)數(shù)據(jù)庫(kù)中,并發(fā)送鏈路狀態(tài)確認(rèn)報(bào)文LSAck(Link-State Ack);鄰居雙方都進(jìn)入FULL 狀態(tài),所有的OSPF 路由器都擁有相同鏈路狀態(tài)數(shù)據(jù)庫(kù),形成網(wǎng)絡(luò)拓?fù)浔怼?/p>
LSDB 同步后,同一區(qū)域的OSPF 路由器都擁有相同鏈路狀態(tài)數(shù)據(jù)庫(kù),每臺(tái)路由器都以自己為根,利用最短路徑(Shortest Path First,SPF)算法生成一棵SPF 樹(shù),然后把到達(dá)每個(gè)目的地址的最佳路由信息放進(jìn)路由表中,完成路由計(jì)算。
Packet Tracer 是思科公司推出的一款網(wǎng)絡(luò)仿真軟件[5],能夠?qū)崿F(xiàn)網(wǎng)絡(luò)拓?fù)浯罱ㄒ约熬W(wǎng)絡(luò)設(shè)備的相關(guān)配置,并且能夠進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)包分析,了解網(wǎng)絡(luò)運(yùn)行機(jī)制。 本文利用Packet Tracer 進(jìn)行了OSPF 多區(qū)域互聯(lián)仿真實(shí)驗(yàn)。
實(shí)驗(yàn)拓?fù)淙鐖D3 所示,骨干區(qū)域由R1、R2、R3這3 臺(tái)路由器兩兩相連,另外兩個(gè)標(biāo)準(zhǔn)區(qū)域Area1、Area2 分別通過(guò)R2 和R3 與骨干區(qū)域相連。 Area1中由R4、R5、R6 和R2 的Gig0/1 接口組成;Area2 由路由器R3 的Gig0/1 接口構(gòu)成,PC1 通過(guò)R3 的Gig0/1 接口與整個(gè)網(wǎng)絡(luò)互聯(lián)。
圖3 多區(qū)域OSPF 路由實(shí)驗(yàn)拓?fù)鋱DFig. 3 Topology diagram of multi area OSPF routing experiment
根據(jù)圖3 的實(shí)驗(yàn)拓?fù)鋱D,網(wǎng)絡(luò)中各設(shè)備的物理連接見(jiàn)表1。 對(duì)3 個(gè)區(qū)域的網(wǎng)段和IP 地址進(jìn)行規(guī)劃,具體分配情況見(jiàn)表2。
表1 網(wǎng)絡(luò)設(shè)備物理連接表Tab. 1 Physical connection table of network equipment
表2 IPv4 地址規(guī)劃表Tab. 2 IPv4 address planning table
在IP 地址規(guī)劃完成后,需要在設(shè)備上完成接口IP 地址配置。 下面以路由器R1 為例進(jìn)行配置,其它設(shè)備可按相應(yīng)步驟配置即可。
2.3.1 路由器接口IP 地址配置
R1#configure terminal ! 進(jìn)入全局模式
R1(config)#interface gigabitEthernet0/0! 進(jìn)入端口Gig0/0
R1(config-if)#ip address 10.1.1.1 255.255.255.0 ! 配置IP 地址
R1(config-if)#no shutdown! 開(kāi)啟該端口
R1(config-if)#exit! 返回全局模式
R1(config)#interface gigabitEthernet0/1! 進(jìn)入端口Gig0/1
R1(config-if)#ip address 10.1.3.1 255.255.255.0 ! 配置IP 地址
R1(config-if)#no shutdown! 開(kāi)啟該端口
R1(config-if)#exit! 返回全局模式
R1(config)#interface Loopback 0! 進(jìn)入端口Loopback 0
R1(config-if)#ip address 10.1.0.1 255.255.255.255 ! 配置IP 地址
R1(config-if)#end! 返回特權(quán)模式
上述配置完成后,可通過(guò)show ip interface brief命令查看R1 端口的IP 地址配置,此時(shí)可見(jiàn)Gig0/0、Gig0/1、Loopback 0 端口狀態(tài)均已處于up 狀態(tài)。
2.3.2 骨干路由器OSPF 路由協(xié)議配置
骨干路由器是指至少有一個(gè)接口屬于Area 0區(qū)域,從拓?fù)鋱D中可以看出,R1、R2、R3 屬于骨干路由器,R1 的Gig0/0、Gig0/1 和Loopback 0 均屬于骨干區(qū)域;因?yàn)镽2 的Gig0/1 和R3 的Gig0/1 屬于非骨干區(qū)域,所以R2、R3 也是邊界路由器,兩者同時(shí)維護(hù)著骨干區(qū)域鏈路狀態(tài)和各自所在非骨干區(qū)域的鏈路狀態(tài)。 下面以路由器R2 為例,配置OSPF 路由協(xié)議,路由器R1 和R3 用相似的步驟開(kāi)啟路由協(xié)議。
R2#configure terminal ! 進(jìn)入全局模式
R2(config)#route ospf 100! 開(kāi)啟路由進(jìn)程O(píng)SPF100
R2(config-router)#router-id 10.1.0.3! 配置Router-id
R2(config-router)#network 10.1.3.0 0.0.0.255 area 0 ! 通告10.1.3.0/24
R2(config-router)#network 10.1.2.0 0.0.0.255 area 0 ! 通告10.1.2.0/24
R2(config-router)#network 10.1.0.3 0.0.0.0 area 0! 通告10.1.0.3/32
R2(config-router)#network 172.16.1.0 0.0.0.255 area 1 ! 通告172.16.1.0/24
下面依次在R2、R3 上開(kāi)啟路由進(jìn)程,通過(guò)Packet Tracer 提供的仿真功能可以詳細(xì)查看OSPF路由形成的各個(gè)階段。 首先,R1、R2、R3 都以組播地址224.0.0.5 為目的地址,向鄰居發(fā)送Hello 報(bào)文。在相互交換Hello 報(bào)文后形成鄰居關(guān)系,在R1 可以通過(guò)show ip ospf neighbor 查看鄰居關(guān)系見(jiàn)表3。 由于是廣播式網(wǎng)絡(luò),鄰居關(guān)系確定后需再進(jìn)行DR/BDR 選取,待網(wǎng)絡(luò)穩(wěn)定后,用show ip ospf neighbor查看R1 的鄰居關(guān)系,可以看出已選出DR/BDR,接口狀態(tài)也變成了FULL。 見(jiàn)表4,由于R1、R2、R3 的Router-id 都是用各自的Loopback 0 的IP 地址,R1的Router-id(10.1.0.1)最小,所以在各自的網(wǎng)絡(luò)中,R2、R3 分別被選舉為DR;在R2 的鄰居關(guān)系中,由于R2 的Router-id(10.1.0.3)最大,R1、R3 分別被選舉為BDR;在R3 的鄰居關(guān)系中,R1 被選舉為BDR、R2 被選舉為DR。
表3 R1 中鄰居關(guān)系狀態(tài)Tab.3 Neighbor relationship status in R1
表4 R1 中DR/BDR 選舉結(jié)果Tab. 4 DR/BDR election results in R1
DR/BDR 選舉完成后,可以在R1、R2、R3 設(shè)備上通過(guò)show ip ospf database 查看鏈路狀態(tài)數(shù)據(jù)庫(kù),發(fā)現(xiàn)Area 0 的LSA 在3 臺(tái)路由器上一致,區(qū)域內(nèi)的路由表也已經(jīng)形成,在R1 上通過(guò)show ip route 查看路由過(guò)程如下:
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted,9 subnets,2 masks
C 10.1.0.1/32 is directly connected, Loopback0
O 10.1.0.2/32 [110/2] via 10.1.1.2, 00:02:45, GigabitEthernet0/0
O 10.1.0.3/32 [110/2] via 10.1.3.2, 00:02:45, GigabitEthernet0/1
C 10. 1. 1. 0/24 is directly connected,GigabitEthernet0/0
L 10. 1. 1. 1/32 is directly connected,GigabitEthernet0/0
O 10.1.2.0/24 [110/2] via 10.1.1.2, 00:02:45, GigabitEthernet0/0
[110/2 ] via 10. 1. 3. 2, 00: 02: 45,GigabitEthernet0/1
C 10. 1. 3. 0/24 is directly connected,GigabitEthernet0/1
L 10. 1. 3. 1/32 is directly connected,GigabitEthernet0/1
O IA 10.1.4.0/24 [110/2] via 10.1.1.2,00:02:45, GigabitEthernet0/0
172.16.0.0/24 is subnetted, 1 subnets
O IA 172.16.1.0/24 [110/2] via 10.1.3.2, 00:02:45, GigabitEthernet0/1
從顯示結(jié)果可見(jiàn),區(qū)域內(nèi)的路由已經(jīng)全部形成,Area 0 區(qū)域能夠?qū)崿F(xiàn)全部互通。
2.3.3 非骨干路由器OSPF 路由協(xié)議配置
非骨干路由器是指沒(méi)有接口在Area 0 區(qū)域。在圖3 拓?fù)鋱D中,非骨干路由器主要包括R4、R5、R6。 在R4、R5、R6 上開(kāi)啟OSPF 路由協(xié)議,下面以R4 設(shè)備上的配置為例進(jìn)行說(shuō)明。 R5、R6 配置與之類(lèi)似,不再贅述。
R4#configure terminal ! 進(jìn)入全局模式
R4(config)#router ospf 100! 開(kāi)啟路由進(jìn)程O(píng)SPF 100
R4(config-router)#router-id 172.16.0.2! 配置Router-id
R4(config-router)#network 172.16.1.0 0.0.0.255 area 1 ! 通告172.16.1.0/24
R4(config-router)#network 172.16.2.0 0.0.0.255 area 1 ! 通告172.16.2.0/24
R4(config-router)#network 172.16.3.0 0.0.0.255 area1 ! 通告172.16.3.0/24
R4(config-router)#network 172.16.0.2 0.0.0.0 area 1! 通告172.16.0.2/32
通過(guò)show ip ospf neighbor 在設(shè)備R6 上查看鄰居關(guān)系,發(fā)現(xiàn)R4 變成了DR。 按照Router-id 越大越優(yōu)先的原則,R6 應(yīng)被選舉為DR,造成這種情況的主要原因是:R6 啟動(dòng)OSPF 路由進(jìn)程時(shí)已經(jīng)超過(guò)了R4 的等待時(shí)間,因此首先啟動(dòng)的路由器R4 成為DR。 通過(guò)clear ip ospf process 命令重啟R4、R6 的OSPF 路由進(jìn)程,R6 被重新選取為DR。
在區(qū)域邊界路由器(ABR)R2 上,通過(guò)show ip ospf database 命令查看LSA 數(shù)據(jù)庫(kù)信息。 可以看到,Area 0 中的1 類(lèi)LSA 路由器鏈狀態(tài)、2 類(lèi)LSA 網(wǎng)絡(luò)鏈路狀態(tài)、3 類(lèi)LSA 匯總網(wǎng)絡(luò)鏈路狀態(tài),如圖4 所示;同樣在Area 1 中也能看到上述3 種鏈路狀態(tài);從此可以看出,區(qū)域邊界路由器是分別維護(hù)各自區(qū)域的鏈路狀態(tài)數(shù)據(jù)庫(kù)。 在R2 上通過(guò)show ip route命令查看路由表,顯示了Area 0 和Area 1 兩區(qū)域的明細(xì)路由信息。 在R2 中進(jìn)入OSPF 進(jìn)程通過(guò)area 1 range 172.16.0.0 255.255.0.0 對(duì)Area 1 進(jìn)行鏈路狀態(tài)匯總(如圖5 所示),只保留了172.16.0.0 這一條總的鏈路,減少了鏈路狀態(tài)數(shù)目,提升了區(qū)域邊界路由器性能。 在Area2 區(qū)域中測(cè)試PC1 與Area1 區(qū)域中R5 的連通性。 如圖6 所示,從PC1 到R5,可以看出已實(shí)現(xiàn)了互通。
圖4 R2 設(shè)備中Area 0 區(qū)域鏈路狀態(tài)庫(kù)Fig. 4 Area 0 link state library in R2 device
圖5 匯總后R2 設(shè)備中Area 0 區(qū)域鏈路狀態(tài)庫(kù)Fig. 5 Link state library of area 0 in R2 equipment after summary
圖6 PC1 至R5 連通性測(cè)試Fig. 6 PC1 to R5 connectivity test
OSPF 路由協(xié)議通過(guò)鄰居發(fā)現(xiàn)、鏈路狀態(tài)通告、路由計(jì)算等幾個(gè)環(huán)節(jié)形成路由表,通過(guò)Packet Tracer 軟件仿真能夠觀察到OSPF 協(xié)議工作的每個(gè)環(huán)節(jié),通過(guò)仿真實(shí)驗(yàn)對(duì)OSPF 協(xié)議原理有更深入的理解。 利用多區(qū)域OSPF 協(xié)議組網(wǎng),將大型網(wǎng)絡(luò)分隔為多個(gè)較小網(wǎng)絡(luò),能夠把拓?fù)渥兓刂圃趨^(qū)域內(nèi),有效控制LSA 洪泛的范圍;在區(qū)域邊界做路由匯總,減小了路由表,提高了網(wǎng)絡(luò)的穩(wěn)定性和擴(kuò)展性,有利于組建大規(guī)模的網(wǎng)絡(luò)。