使用OSPF協議實現企業內部網路所有網段的互連互通
摘 要
隨著網路技術的發展,網際網路正影響著各個領域的企業。企業區域網的建設的企業走向資訊化發展的必經之路。模擬搭建大型企業區域網可以在條件有限的環境下研究這一意義重大的課題。企業區域網的要求概括起來可歸納為四點:高效、穩定、安全、可擴充套件。基於以上四點的企業區域網需求,本次課程設計決定採用基於三層網路構架的拓撲結構。利用思科模擬器來呈現整個企業區域網的環境。本次設計採用了OSPF(開放最短路徑優先)協議作為主要的路由協議,使企業區域網互通。
一、關於OSPF
OSPF是Open Shortest Path First(即―開放最短路由優先協議‖)的縮寫。它是IETF(Internet Engineering Task Force)組織開發的一個基於鏈路狀態的自治系統內部路由協議(IGP),用於在單一自治系統(Autonomous system,AS)內決策路由。在IP網路上,它通過收集和傳遞自治系統的鏈路狀態來動態地發現並傳播路由。OSPF
本協議使用Dijkstra演算法計算出到達每一網路的最短路徑,並在檢測鏈路的變化情況(如鏈路失效)時執行該演算法快速收斂到新的無環路拓撲。
本協議可以通過調整路由介面的開銷值來管控資料包的流向(也就是說,OSPF通過開銷值來落實管理員鎖制定的路由策略)。開銷值是RTT、鏈路吞吐量、鏈路可用(可靠)性等衡量因素的
一個OSPF網路可以劃分成多個與骨幹區域(BackboneArea,區域號為0)相連的區域,各區域的區域號可以使用正整數(如0)或點分十進位制記法(如0.0.0.0)表達。0號(或0.0.0.0號)區域分配給該網路的核心,稱為骨幹區域,其他區域必須與骨幹區域通過區域邊界路由器(Area Border Router)直接或間接(通過OSPF虛連結)相連。同時,ABR負責維護全網的聚合路由,併為每個區域保留一份單獨的鏈路狀態資料庫(Link-State Database)。
與大多數路由協議不同(參考BGP和RIP的工作過程),本協議不依賴於傳輸層協議(如TCP、UDP)提供資料傳輸、錯誤檢測與恢復服務,資料包直接封裝在
本協議使用多播(Multicast)技術提供鄰居發現(NeighborDiscovery)服務,對於不支援多播(廣播)功能的鏈路,協議提供了相應的配置選項以便正常工作。預設情況下,協議監聽224.0.0.5(IPv4)、FF02::5(IPv6)組播地址(別名:AllSPFRouters)。對於DR與BDR,協議會額外監聽224.0.0.6(IPv4)、FF02::6(IPv6)組播地址(別名:AllDRRouters)。本協議資料包只傳輸一跳(TTL或Hop Count等於且僅等於1),不能跨越廣播域。
在一個廣播性、多路訪問的網路(例如Ethernet、TokenRing及FDDI環境)中,如果每個路由器都獨立地與其他路由器進行LSU(Link State Update Packet,鏈路狀態更新包)交換,以同步各自的LSDB,將導致一個巨大的流量增長。為了防止出現這種現象,同時使路由器儲存的鏈路狀態資訊最少,OSPF在這類網路上選舉出一個DR(DesignatedRouter,指定路由器)和BDR(BackupDesignated Router,備份指定路由器)。區域內那些既不是DR,也不是BDR的路由器稱之為DR Other。
二、DR和BDR的主要作用
DR就是集中負責一個區域內各路由器間的LSU交換和鄰接關係建立,相當於這個區域的負責人一樣。由於OSPF路由器之間是通過建立鄰接關係,及以後的泛洪來進行鏈路狀態資料庫是同步的,所以DR必須與所有同一區域的OSPF路由器建立鄰接關係(其他路由器間不必建立鄰接關係),負責集中管理、維護和組播下發區域內各路由器發來的鏈路狀態資訊。DR或者BDR通常是處於一個區域的中心地位,使其他路由器與它建立鄰接關係的難易程度相當。BDR是用於在DR失效後接替DR的工作(也可不選舉BDR),在DR正常工作時,它不擔當DR的職責。在同一個OSPF區域中,每個路由器都和DR,BDR相連。
就像一個團體,其中必須要指定一個負責人。這個負責人負責其他成員的資訊反饋、轉發和廣播(他儲存有所有成員之間的聯絡資訊),其他每個成員也都與這個負責人建立單線聯絡,而其他成員之間彼此不建立聯絡。這樣就不需要每個成員都儲存整個團體會員的聯絡資訊,也不必每個成員都與其他成員建立聯絡,管理更加簡單。這個團體的負責人就相當於這裡所說的DR了。
當區域中的路由器有路由更新時,DR Other路由器不會向其他DR Other路由器傳送自己的LSU,而只會向224.0.0.6這個組播地址傳送,然後由224.0.0.6這個地址會把DR Other發上來的LSU組播給DR/BDR,之後DR/BDR都會收到這個DR Other的路由更新。在DR/BDR收到從224.0.0.6發過來的LSU後又會把這些LSU發給224.0.0.5這個組播地址,這時224.0.0.5會把LSU泛洪到區域內的所有DR Other路由器上。這樣,區域網路上的所有DR Other路由器都會知道最這個起源的DR Other路由器的路由更新,而不用每個DR Other路由器進行SPF計算。
在如圖9-3所示的示例中,假設一開始沒有選舉DR和BDR,則在其中的任何一臺路由器的路由發生了改變時,區域內的其他路由器都得重新進行SPF計算,生成新的LSDB表項。但如果選舉了R3作為DR,R4和R5均為DR Other,則當R4所連線的網路發生了變化時,R4只會把自己LSU傳送到224.0.0.6這個組播地址,然後224.0.0.6會把這個LSU組播傳送給R3。R3在收到R4的LSU後會對比自己的LSDB,發現LSDB裡面只有關於R4的條目是需要更新,於是便把一個關於R4的LSU傳送到224.0.0.5組播地址,這時224.0.0.5就會整個區域中組播R4的這一個LSU包。R5收到224.0.0.5發過來LSU之後直接更新自己LSDB,不需要重新進行SPF計算。
通過這樣一種LSU傳送方式規則,就變原來的"多點對多點"資訊傳送為"單點到多點"的資訊傳送,一方面可更有效地利用網路頻寬資源,二則可以提高LSU資訊傳送效率。
DR Other僅與DR和BDR之間建立鄰接關係,DR Other之間不交換任何路由資訊。這樣就減少了廣播網和NBMA網路上各路由器之間鄰接關係的數量,同時減少網路流量,節約了頻寬資源。如圖9-4所示,用實線代表乙太網物理連線,虛線代表建立的鄰接關係。可以看到,採用DR/BDR機制後,5臺路由器之間只需要建立7個鄰接關係就可以了,如果不選舉DR和BDR的話,大家畫一下,看有多少條鄰接關係。
三、DR和BDR的選舉
DR和BDR也不是隨便擔當的,是需要選舉產生,就像我們在學校選正、副班長一樣,也是要投票選舉的。DR是通過介面優先順序(Interface Priority)進行選舉,最高優先順序的路由器被選為DR,次高者被選為BDR;如果介面優先順序相同,就按router-id進行選舉,由最大到次大選舉DR、BDR。
這裡所說的介面優先順序是由OSPF協議定義的(如Cisco路由器配置介面優先順序命令是ip ospf priority),可以配置的優先順序值在0~255之間(預設值為1,值越大,優先順序越高)。但DR、BDR的選舉不支援搶佔(Preemption),也就是一旦選舉完成,即使新加一個優先順序更高的裝置也不會進行重新的選擇,相反只有在DR或者BDR出問題的時候才會發生重選。就像一個班上已選舉了正、副班長,當新插入了一個學生後,也不會重新選舉班委,即使新來的學生各方面能力比原班長、副班長強,除非原來的正、副班長出了問題。
本課程設計是為了讓我們瞭解學習計算機網路的作用和意義。通過課程設計,掌握IP地址的配置以及OSPF協議的配置。培養我們在網路實踐中的能力。
網路發展離不開路由協議,OSPF路由協議是典型的鏈路狀態的路由協議,一般用於同一個路由區域內。在這裡,路由域是指一個自治系統,它是指一組通過統一的路由政策或路由協議互相交換路由資訊的網路。在這個自治系統中,所有的OSPF路由器都維護一個相同的描述這個自治系統結構的資料庫,該資料庫中存放的是路由域中相應鏈路的狀態資訊,OSPF路由器正是通過這個資料庫計算出其OSPF路由表的。
四、課程設計主要內容
利用OSPF 協議互連4個公司,具體包括:
(1) 企業總部包含3臺路由器和8臺交換機;
(2) 企業部分1包含3臺路由器和6臺交換機;
(3) 企業部分2包含2臺路由器和4臺交換機;
(4) 企業部分3包含2臺路由器和4臺交換機。
OSPF的區域及區域路由彙總規劃設計如表1所示:
區域ID | 區域型別 | 區域包含的路由器介面 | 區域彙總後的網路字首 |
0 | 骨幹區域 | 路由器R1的G0/0,G0/1,G0/2,G0/3,G4/0 G5/0和路由器R2的G0/0,G1/0,G2/0,G3/0,G4/0,G5/0 | 10.1.0.0/21 |
1 | 標準區域 | 路由器R1-1、路由器R1-2、路由器R1-3的所埠,路由器R1的G6/0、路由器R2的6/0 | 10.2.0.0/22和 10.2.4.0/23 |
2 | 完全末節區域 | 路由器R2-1和路由器R2-2的所有埠 | 10.3.0.0/22 |
3 | 次末端區域 | 路由器R3-1的所有埠,路由器R3-2的G0/0,G1/0,G2/0和路由器R2的G7/0 | 10.4.0.0/22 |
表1
OSPF路由規劃表如表2所示:
裝置 | 路由器型別 | 路由器ID | 被動介面 |
R1 | ABR和BR | 1.1.1.1 | G1/0,G2/0,G3/0,G4/0 |
R2 | ABR和BR | 2.2.2.2 | G2/0,G3/0,G4/0,G5/0 |
R3 | ASBR和BR | 3.3.3.3 | |
R1-1 | IR | 11.11.11.11 | G3/0,G4/0 |
R1-2 | IR | 12.12.12.12 | G3/0,G4/0 |
R1-3 | IR | 13.13.13.13 | G2/0,G3/0 |
R2-1 | IR | 21.21.21.21 | Fa1/0,fa4/0 |
R2-2 | IR | 22.22.22.22 | Fa1/0,fa4/0 |
R3-1 | IR | 31.31.31.31 | G2/0,G3/0 |
R3-2 | ASBR | 32.32.32.32 | G1/0,G2/0 |
表2
DR和BDR規劃如表3所示:
表3
配置每一個路由器埠的IP 地址(以R1為例):
R1:
Router>enable
Router#config t
Enter configuration commands, one perline. End with CNTL/Z.
Router(config)#interface Gig1/0
Router(config-if)#ip address 10.1.4.1255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet1/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol onInterface GigabitEthernet1/0, changed state to up
Router(config-if)#exit
Router(config)#interface Gig2/0
Router(config-if)#ip address 10.1.5.1255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet2/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol onInterface GigabitEthernet2/0, changed state to up
Router(config-if)#exit
Router(config)#interface Gig3/0
Router(config-if)#ip address 10.1.6.1255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet3/0,changed state to up
%LINEPROTO-5-UPDOWN: Line protocol onInterface GigabitEthernet3/0, changed state to up
Router(config-if)#exit
Router(config)#interface Gig4/0
Router(config-if)#ip address 10.1.7.1255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet4/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol onInterface GigabitEthernet4/0, changed state to up
Router(config-if)#exit
Router(config)#
Router>enable
Router#config t
Enter configuration commands, one perline. End with CNTL/Z.
Router(config)#interface Gig0/0
Router(config-if)#ip address 10.0.0.1255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet0/0, changed state to up
Router(config-if)#exit
Router(config)#
Router#
Router>enable
Router#config t
Enter configuration commands, one perline. End with CNTL/Z.
Router(config)#interface Gig5/0
Router(config-if)#ip address 10.0.0.5255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet5/0, changed state to up
Router(config-if)#exit
Router(config)#
%LINEPROTO-5-UPDOWN: Line protocol onInterface GigabitEthernet5/0, changed state to up
Router(config)#interface gig 6/0
Router(config-if)#ip address 10.0.0.13255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet6/0, changed state to up
exit
Router(config)#interface gig7/0
Router(config-if)#ip address 10.0.0.21 255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: InterfaceGigabitEthernet7/0, changed state to up
Router(config-if)#exit
Router(config)#exit
Router#
劃分OSPF區域(以R1為例):
Router>enable
Router#config t
Enter configuration commands, one perline. End with CNTL/Z.
Router(config)#router ospf 1
Router(config-router)#router-id 1.1.1.1
Router(config-router)#network 10.1.4.0255.255.255.0 area 0
Router(config-router)#network 10.1.5.0255.255.255.0 area 0
Router(config-router)#network 10.1.6.0255.255.255.0 area 0
Router(config-router)#network 10.1.7.0255.255.255.0 area 0
Router(config-router)#network 10.0.0.0255.255.255.252 area 0
Router(config-router)#network 10.0.0.4255.255.255.252 area 0
Router(config-router)#end
Router#
設定被動埠(以R1為例):
Router>enable
Router#config t
Enter configuration commands, one perline. End with CNTL/Z.
Router(config)#router ospf 1
Router(config-router)#passive-interfacegig1/0
Router(config-router)#passive-interfacegig2/0
Router(config-router)#passive-interfacegig3/0
Router(config-router)#passive-interfacegig4/0
Router(config-router)#end
Router#
設定路由器的優先順序(以R1為例):
R1:
Router>enable
Router#config t
Enter configuration commands, one perline. End with CNTL/Z.
Router(config)#interface gig6/0
Router(config-if)#ip ospf priority 100
Router(config-if)#exit
Router(config)#interface gig 7/0
Router(config-if)#ip ospf priority 100
Router(config-if)#exit
Router(config)#interface gig5/0
Router(config-if)#ip ospf priority 100
Router(config-if)#exit
Router(config)#interface gig0/0
Router(config-if)#ip ospf priority 100
Router(config-if)#end
Router#
這裡根據表3的DR和BDR規劃可以得出路由器的優先順序關係如下:
R1>R2>R3
R1>R1-1>R1-2>R1-3
R2>R1-2
R1>R2-1>R2-2
R2>R3-1>R3-2
因此其他路由器可以根據此優先順序關係得出其他路由器的優先順序,而這裡我們是通過設定每一個埠的優先順序來設定整個路由器的優先順序。
配置R3-2的G3/0的靜態路由:
Router>enable
Router#config t
Router(config)#interface gig3/0
Router(config-if)#ip address 172.16.1.1255.255.0.0
Router(config-if)#no shutdown
圖2為區域0內R1鍵入ip showospf interface和ipshow ospf neighbor後的結果:
圖2
圖3為區域1的R1-1鍵入show ip ospfinterface和show ip ospf neighbor後的結果:
圖3
圖4為區域2的R2-1鍵入show ip ospf interface和show ip ospf neighbor後的結果:
圖4
圖5為區域3的R3-1鍵入show ip ospfinterface和show ip ospf neighbor後的結果:
圖5