李春平,葉裴雷,許碧雅,朱婷婷
(廣東白云學(xué)院大數(shù)據(jù)與計算機學(xué)院,廣州 510000)
隨著互聯(lián)網(wǎng)的迅速發(fā)展,互聯(lián)網(wǎng)終端用戶呈現(xiàn)爆發(fā)式增長,導(dǎo)致傳統(tǒng)的標(biāo)識互聯(lián)網(wǎng)主機的IPv4地址資源緊張[1]。這是由于IPv4網(wǎng)絡(luò)協(xié)議采用的是32位IP地址結(jié)構(gòu)。一方面,IPv4協(xié)議結(jié)構(gòu)中沒有設(shè)計專門進行安全性驗證的字段,只有簡單的頭部校驗和驗證,因此IP數(shù)據(jù)包在傳輸過程中存在安全隱患,容易被截獲和篡改,導(dǎo)致數(shù)據(jù)完整性失效。解決這些問題的最終辦法是使用新的128位地址結(jié)構(gòu)的IPv6協(xié)議替代傳統(tǒng)的IPv4協(xié)議[2]。
另一方面,數(shù)據(jù)包在網(wǎng)絡(luò)傳輸過程中,需要尋找最佳途徑將數(shù)據(jù)包轉(zhuǎn)發(fā)到目的地,擔(dān)任轉(zhuǎn)發(fā)任務(wù)的通常是路由器或三層交換機之類的三層設(shè)備。為了找到最佳路由,在路由器上需要執(zhí)行路由算法,例如RIP、OSPF、BGP等不同的路由協(xié)議[3]。RIP是基于距離矢量的路由協(xié)議,由于跳數(shù)限制,通常應(yīng)用在中小規(guī)模的網(wǎng)絡(luò)中,BGP是一種邊界網(wǎng)關(guān)協(xié)議[4],通常運行在自治系統(tǒng)邊界路由器上。而OSPF是另一種內(nèi)部網(wǎng)關(guān)協(xié)議,它基于鏈路狀態(tài),采用最短路徑優(yōu)先算法,實現(xiàn)快速收斂,能在大型網(wǎng)絡(luò)中部署。目前有兩個常用的版本OSPFv2(OSPF版本2)和OSPFv3(OSPF版本3)。OSPFv2是用來支持IPv4網(wǎng)絡(luò),OSPFv3用來支持IPv6網(wǎng)絡(luò)[5]。因為IPv6將在未來代替IPv4協(xié)議,因此本文討論基于IPv6的OSPF路由協(xié)議。
OSPF有3個主要組件:數(shù)據(jù)結(jié)構(gòu)、路由協(xié)議消息和算法。
(1)數(shù)據(jù)結(jié)構(gòu)。OSPF路由器數(shù)據(jù)結(jié)構(gòu)包括鄰接數(shù)據(jù)庫、鏈路狀態(tài)數(shù)據(jù)庫(LSDB)、轉(zhuǎn)發(fā)數(shù)據(jù)庫,對應(yīng)著鄰居表、拓撲表和路由表等3張表。
(2)路由協(xié)議消息。OSPF消息通常封裝在IP數(shù)據(jù)包中,OSPF數(shù)據(jù)包類型主要由Hello、數(shù)據(jù)庫描述(DBD)、鏈路狀態(tài)請求(LSR)、鏈路狀態(tài)更新(LSU)、鏈路狀態(tài)確認(LSACK)組成[6]。
(3)算法。OSPF采用SPF(Shortest Path First)算法即最短路徑優(yōu)先算法計算路由,以達到路由快速收斂的目的。
當(dāng)路由器運行OSPF路由進程時,它會依次進行以下操作:發(fā)現(xiàn)鄰居并與之建立建立鄰接關(guān)系;交換路由信息;計算最佳路由;實現(xiàn)收斂。
OSPF在嘗試實現(xiàn)收斂時會進入幾種狀態(tài):Down狀態(tài)、Init狀態(tài)、Two-Way狀態(tài)、ExStart狀態(tài)、Exchange狀態(tài)、Loading狀態(tài)和Full狀態(tài)。
(1)建立鄰接關(guān)系。當(dāng)運行了OSPF的相鄰路由器收到一個Hello數(shù)據(jù)包,路由器會對照自己的鄰居表,檢查這個Hello數(shù)據(jù)包中的路由器ID,如果鄰居表中沒有存儲這個ID信息,接收路由器將把這個源路由器ID作為鄰居添加到鄰居表中,以此建立鄰接關(guān)系。
(2)交換路由信息。在多接入網(wǎng)絡(luò)中,OSPF會選擇出一個DR作為所收發(fā)LSA的收集與分發(fā)點。如果DR發(fā)生故障,則會選擇BDR。在Two-Way狀態(tài)之后,路由器轉(zhuǎn)變?yōu)閿?shù)據(jù)庫同步狀態(tài)。
(3)計算最佳路由。OSPF根據(jù)鏈路狀態(tài)數(shù)據(jù)庫里面的內(nèi)容,利用SPF算法,計算到每一個目的網(wǎng)絡(luò)度量值,從中選取最小值作為首選路由,添加到路由表中。
(4)實現(xiàn)收斂。當(dāng)整個OSPF區(qū)域中的所有路由器都對網(wǎng)絡(luò)拓撲有了統(tǒng)一的認識,既沒有新的路由器增加,也沒有路由器從中刪除,路由器中所有路由條目都彼此交換完成的過程,這個時候鄰居表、鏈路狀態(tài)數(shù)據(jù)庫和路由表達到穩(wěn)定,這個過程叫收斂。OSPF能夠?qū)崿F(xiàn)快速收斂,在小型網(wǎng)絡(luò)中,收斂時間一般在5秒內(nèi)。
OSPF可以使用單區(qū)域OSPF或多區(qū)域OSPF兩種方式之一進行實施。
如前所述,OSPF路由協(xié)議從發(fā)現(xiàn)鄰居到交換鏈路狀態(tài)信息直至建立路由表,最后達到收斂,是一個完整的過程。OSPF在執(zhí)行SPF算法和存儲鄰居表、拓撲表、路由表這3張表是以占用路由器CPU和內(nèi)存資源為代價,這種機制是無法規(guī)避的,當(dāng)網(wǎng)絡(luò)規(guī)模變得龐大時,路由表也會變大,同時路由器計算量也會增加,路由器資源消耗會越來越大。這將會導(dǎo)致網(wǎng)絡(luò)可用性降低,穩(wěn)定性變差。因此,為了提高網(wǎng)絡(luò)的可用性,增強網(wǎng)絡(luò)穩(wěn)定性,在中大型網(wǎng)絡(luò)中部署OSPF路由協(xié)議時要將路由優(yōu)化的技術(shù)和方法考慮進來[7]。
單區(qū)域OSPF如果沒有匯總路由,每臺路由器必須保留關(guān)于路由域中的每個網(wǎng)絡(luò)的詳細信息,因此路由表會變得非常大。采用多區(qū)域OSPF的好處是:路由表減小、鏈路狀態(tài)更新開銷降低、SPF計算次數(shù)減少,從而帶來路由綜合性能的提升[8]。
路由器ID采用32位結(jié)構(gòu),格式與IPv4地址相同,它所顯示的形式是x.x.x.x。啟用了OSPF路由進程的路由器使用路由器ID來唯一標(biāo)識路由器和參與DR的選擇。路由器ID基于以下3個標(biāo)準(zhǔn)之一確定:①使用OSPF router-id rid配置命令明確定義;②如果沒有明確定義router-id,路由器將選擇所有已配置環(huán)回接口的最高IPv4地址;③如果未配置環(huán)回接口,則路由器會選擇其所有物理接口的最高活動IPv4地址。
為了正確選舉每個區(qū)域中的DR,防止在同等優(yōu)先級的情況下?lián)屨糄R權(quán)利,導(dǎo)致路由信息在網(wǎng)絡(luò)中過多傳播,可自定義路由器ID。
同樣的,在IPv6接口上啟用OSPF之前,OSPFv3需要分配一個32位路由器ID。使用router-id rid命令可以在OSPFv3中定義路由器ID。
在LAN環(huán)境中,末節(jié)網(wǎng)絡(luò)通常不需要接收路由器發(fā)來的路由更新通知,以免造成不必要的帶寬資源浪費和安全隱患。為了防止OSPF路由更新通過指定路由器端口發(fā)送,向不必要的網(wǎng)絡(luò)擴散,可以配置OSPF被動接口來完成指定路由更新通知,以減少LAN的流量。
使用passive-interface路由器配置模式命令防止通過路由器接口傳輸路由消息,但是仍允許通過該接口接收路由信息,并通告給其他路由器。在被動接口上無法建立鄰居鄰接關(guān)系。因此,路由器接口一旦配置為被動接口,則該接口通常連接到末節(jié)網(wǎng)絡(luò)[9]。
包括更改路由器參考帶寬、更改接口帶寬、更改路由開銷,以適應(yīng)具體的網(wǎng)絡(luò),使路由器與網(wǎng)絡(luò)匹配,從而改善網(wǎng)絡(luò)綜合性能[10]。
路由重分布的作用是在路由器上轉(zhuǎn)換路由協(xié)議類型和格式,以實現(xiàn)不同的路由協(xié)議之間的路由信息交換。例如,在一個運行RIP和OSPF兩種不同路由協(xié)議的網(wǎng)絡(luò)中,可以將RIP重分布到OSPF協(xié)議中。在同時配置有直連路由、默認路由、動態(tài)路由的網(wǎng)絡(luò)中,可以通過重分布,將直連路由和默認路由傳播到整個網(wǎng)絡(luò)中,提高配置效率。
如圖1所示,建立OSPFv3多區(qū)域網(wǎng)絡(luò),由area0、area1、area2共3個區(qū)域組成內(nèi)部網(wǎng)絡(luò),其中area0為骨干區(qū)域。區(qū)域area1、area2分別與骨干區(qū)域area0相連。多區(qū)域網(wǎng)絡(luò)中共有R1、R2、R3、R4共4臺路由器,用ISP路由器模擬外部網(wǎng)絡(luò)路由器。內(nèi)部網(wǎng)絡(luò)路由器上運行OSPFv3路由協(xié)議,內(nèi)網(wǎng)與外網(wǎng)之間部署靜態(tài)默認路由。
圖1 IPv6多區(qū)域網(wǎng)絡(luò)拓撲圖
設(shè)備地址分配如表1所示。
表1 IPv6地址規(guī)劃
R2 R3 R4 ISP PC0 PC1 PC2 PC3 SERVER0 G0/0 G0/1 S0/0/0 G0/0 G0/1 G0/0 G0/1 G0/2 S0/0/0 G0/0 NIC NIC NIC NIC NIC 2021:1212::2/64 EUI-64 2021:2323::1/64 EUI-64 2019:2525::1/64 2021:3434::1/64 2021:2323::2/64 2021:3434::2/64 2020:2222::1/64 2020:3333::1/64 2019:2525::2/64 2018:1111::1/64 SLAAC SLAAC SLAAC SLAAC SLAAC N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A SLAAC SLAAC SLAAC SLAAC SLAAC
3.3.1 R1配置
Router(config)#hostname R1
R1(config)#interface g0/0
R1(config-if)#ipv6 address 2021:1212::1/64
R1(config-if)#no shutdown
R1(config-if)#interface t g0/1
R1(config-if)#ipv6 address 2017:1111::1/64
R1(config-if)#no shutdown
R1(config-if)#interface g0/2
R1(config-if)#ipv6 address 2017:1122::1/64
R1(config-if)#no shutdown
3.3.2 R2配置
Router(config)#hostname R2
R2(config)#interface g0/0
R2(config-if)#ipv6 address 2021:1212::2/64
R2(config-if)#no shutdown
R2(config-if)#interface g0/1
R2(config-if)#ipv6 address 2021:2323::1/64
R2(config-if)#no shutdown
R2(config-if)#interface s0/0/0
R2(config-if)#ipv6 address 2019:2525::1/64
R2(config-if)#no shutdown
3.3.3 R3配置
Router(config)#hostname R3
R3(config)#interface g0/0
R3(config-if)#ipv6 address 2021:3434::1/64
R3(config-if)#no shutdown
R3(config-if)#interface g0/1
R3(config-if)#ipv6 address 2021:2323::2/64
R3(config-if)#no shutdown
3.3.4 R4配置
Router(config)#hostname R4
R4(config)#interface g0/0
R4(config-if)#ipv6 address 2021:3434::2/64
R4(config-if)#no shutdown
R4(config-if)#interface g0/1
R4(config-if)#ipv6 address 2020:2222::1/64
R4(config-if)#no shutdown
R4(config-if)#interface g0/2
R4(config-if)#ipv6 address 2020:3333::1/64
R4(config-if)#no shutdown
3.3.5 ISP配置
Router(config)#hostname ISP
ISP(config)#interface g0/0
ISP(config-if)#ipv6 address 2018:1111::1/64
ISP(config-if)#no shutdown
ISP(config-if)#interface s0/0/0
ISP(config-if)#ipv6 address 2019:2525::2/64
ISP(config-if)#no shutdown
3.4.1 規(guī)劃OSPF多區(qū)域
本實例中,由area0、area1、area2共3個區(qū)域組成內(nèi)部網(wǎng)絡(luò),其中area0為骨干區(qū)域。每個常規(guī)區(qū)域均與骨干區(qū)域相連。通過在路由器上執(zhí)行ipv6 ospf process-id area area-id命令配置路由器所在區(qū)域。
3.4.2 重新定義路由器ID
以R1路由器配置為例,多區(qū)域網(wǎng)絡(luò)中其它路由器可參照R1配置。
R1(config)#ipv6 unicast-routing
R1(config)#ipv6 router ospf 1
R1(config-rtr)#router-id 1.1.1.1
3.4.3 配置被動接口
在路由器連接末節(jié)網(wǎng)路的接口上執(zhí)行passive-interface interface-id,配置被動接口。
R1路由器上的末節(jié)網(wǎng)絡(luò)配置被動接口:
R1(config-rtr)#passive-interface g0/1
R1(config-rtr)#passive-interface g0/2
R4路由器上的末節(jié)網(wǎng)絡(luò)配置被動接口:
R4(config-rtr)#passive-interface g0/1
R4(config-rtr)#passive-interface g0/2
3.4.4 更改OSPF度量
以R1路由器配置為例,多區(qū)域網(wǎng)絡(luò)中其它路由器可參照R1配置。
(1)修改參考帶寬值。
R1(config-rtr)#auto-cost reference-bandwidth 1000
R1(config-rtr)#exit
(2)修改開銷值。
R1(config)#int g0/0
R1(config-if)#ipv6 ospf 1 area 1
R1(config-if)#ipv6 ospf cost 500
(3)修改hello-interval與dead-interval值。
R1(config-if)#ipv6 ospf hello-interval 4
R1(config-if)#ipv6 ospf dead-interval 24
3.4.5 執(zhí)行路由重分布
(1)配置訪問外網(wǎng)的靜態(tài)默認路由。與外網(wǎng)的通信是通過R2路由器連接的,因此在R2上配置靜態(tài)路由。
R2(config)#ipv6 unicast-routing
R2(config)#ipv6 route::/0 Serial0/0/0//配置訪問外網(wǎng)的靜態(tài)默認路由
(2)傳播靜態(tài)默認路由。為了將R2上部署的靜態(tài)路由傳播到內(nèi)網(wǎng)其它路由器上,減少在其它路由器上的重復(fù)配置,在R2上執(zhí)行重分布路由命令。
R2(config)#ipv6 router ospf 2
R2(config-rtr)#router-id 2.2.2.2
R2(config-rtr)#auto-cost reference-bandwidth 1000
R2(config-rtr)#default-information originate//傳播默認路由
(3)重分布直連路由??稍赗4上執(zhí)行重分布直連路由,將area2外的直連路由傳播到其它區(qū)域路由器的路由表上。
R4(config)#ipv6 unicast-routing
R4(config)#ipv6 router ospf 4
R4(config-rtr)#router-id 4.4.4.4
R4(config-rtr)#redistribute connected//重 分 布 直 連路由
3.5.1 在R2上查看鄰居建立情況
可以看到R2的鄰居ID分別為1.1.1.1與3.3.3.3,這兩個ID分別是R1、R3路由器的,說明R2與R1、R3相鄰。
圖2 R2鄰居表信息
3.5.2 查看鏈路狀態(tài)數(shù)據(jù)庫
在R2上執(zhí)行show ipv6 ospf database時,會顯示出鏈路狀態(tài)數(shù)據(jù)庫即拓撲情況。該信息與實際網(wǎng)絡(luò)拓撲相關(guān),信息可能會比較長。本實驗截取部分顯示。
圖3 R2拓撲表信息
3.5.3 查看路由表
通過執(zhí)行show ipv6 route命令,可以查看路由表情況,IPv6路由表已經(jīng)建立起來。
圖4 R2路由表信息
3.5.4 連通性測試
在配置了OSPFv3路由協(xié)議并進行優(yōu)化之后,對全網(wǎng)連通性進行測試。在終端PC及服務(wù)器上設(shè)置好IPv6參數(shù),主機之間通過命令來測試連通性。
PC0 ping PC2,回顯結(jié)果如下:
C:>ping 2020:2222::20d:bdff:fe77:64d2
Pinging 2020:2222::20d:bdff:fe77:64d2 with 32 bytes of data:
Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time=1ms TTL=124
Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time<1ms TTL=124
Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time<1ms TTL=124
Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time=13ms TTL=124
Ping statistics for 2020:2222::20D:BDFF:FE77:64D2:
Packets:Sent=4,Received=4,Lost=0(0%loss),
Approximate round trip times in milli-seconds:
Minimum=0 ms,Maximum=13 ms,Average=3 ms
由上可見,內(nèi)網(wǎng)是連通的。再測試內(nèi)網(wǎng)和外網(wǎng)的連通性。
PC0 ping SERVER0,回顯結(jié)果如下:
C:>ping 2018:1111::209:7cff:fe49:79c
Pinging 2018:1111::209:7cff:fe49:79c with 32 bytes of data:
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=12ms TTL=125
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=125
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=125
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=125
Ping statistics for 2018:1111::209:7CFF:FE49:79C:
Packets:Sent=4,Received=4,Lost=0(0%loss),
Approximate round trip times in milli-seconds:
Minimum=1 ms,Maximum=12 ms,Average=3 ms
PC2 ping SERVER0,回顯結(jié)果如下:
C:>ping 2018:1111::209:7cff:fe49:79c
Pinging 2018:1111::209:7cff:fe49:79c with 32 bytes of data:
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=61ms TTL=124
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=3ms TTL=124
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=124
Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=2ms TTL=124
Ping statistics for 2018:1111::209:7CFF:FE49:79C:
Packets:Sent=4,Received=4,Lost=0(0%loss),
Approximate round trip times in milli-seconds:
Minimum=1 ms,Maximum=61 ms,Average=16 ms
通過從不同區(qū)域內(nèi)的主機發(fā)送ping包到服務(wù)器,均能收到服務(wù)器的響應(yīng),說明全網(wǎng)已連通。
通過分析當(dāng)前多區(qū)域網(wǎng)絡(luò)中運行OSPF協(xié)議存在的問題,給出了在IPv6多區(qū)域網(wǎng)絡(luò)環(huán)境下部署OSPF路由協(xié)議優(yōu)化的技術(shù)與方法,該方法可解決大規(guī)模網(wǎng)絡(luò)中部署OSPF存在路由性能降低的問題。給出了一個完整的案例,按文中提出的優(yōu)化方法進行了實踐部署,并進行了驗證,取得了較好的效果,具有一定的應(yīng)用和借鑒意義。