OSPF在企業網路中的應用
一、OSPF協議原理
OSPF (Open Shortest Path First開放式最短路徑優先)協議【協議號89】。ospf協議是一種鏈路狀態路由協議(ps:IS -IS協議也為鏈路狀態路由協議 ),採用觸發更新的方式來向鏈路中其他路由器通告鏈路增量變化的狀態,同時ospf也是一個內部閘道器協議(IGP Interior Gateway Protocal),它工作在一個自制系統內,用於自制系統內部的路由選擇和資訊交換。在廣播多路網路中(例如乙太網),執行ospf協議的路由器會選舉出DR 和BDR ,區域中的路由器會將鏈路狀態資訊傳送以組播的方式傳送給DR(地址為224.0.0.6),DR 再通過組播的方式將鏈路狀態通告給區域內的其他路由器(地址為224.0.0.5)。
OSPF的特點:
1.觸發更新
2.傳送的鏈路狀態資訊
3.以組播方式通告狀態
4.metric 頻寬
5.網路規模無限制
6.等代價負載均衡(cost值相同時才實現負載分擔)
7.收斂速度快
8.無路由環
9.三張表
鄰居表:或稱鄰接資料庫(AD)儲存鄰居路由器的資訊
鏈路狀態資料庫:通過LSA(鏈路狀態通告)學習到的網路狀態資訊
路由表:或稱轉發資料庫(FD),包含到達目標網路的最優路徑
10.支援可變長子網掩碼(vlsm)
11.支援子網不連續
12.體系化管理(分割槽域)
OSPF的泛洪機制
當鏈路狀態發生變化時,,檢測到路由變化的ospf路由器生成併發送LSA(鏈路狀態通告) ,並通過組播地址224.0.0.5傳送給其所有的鄰居路由器。接收到LSA的每個路由器都會複製一份LSA,更新它自己的鏈路狀態資料庫LSDB,並將LSA轉發給其它的鄰居。保證了在更新自己的路由表之前更新自己的LSDB,稱作泛洪
通過對LSDB執行SPF演算法,來計算到達目標網路的最佳路徑,建立一個SPF樹,然後從SPF樹立選擇最佳路徑放到路由表裡。
OSPF的網路型別
1.廣播多路訪問網路(DR/BDR選舉)
2. 非廣播多路訪問 (DR/BDR選舉)
3.點到點網路
4.點到多點網路
DR/BDR選舉
1.比較hello報文的優先順序,預設為1,優先順序高的為DR ,次高的為BDR。當把優先順序設定為0,該路由器將不能成為DR/BDR
2.優先順序相同的情況下,比較RID,高的為DR ,次高的為BDR。
二、案例
案例一 :ospf rip 路由重發布
案例說明:
如圖所示,防火牆F2、R4 以及R11的s0 介面在rip 區域內,R11的E0介面、三層交換機SW3在OSPF區域內。要求rip區域和ospf區域都可以互相學到對方路由資訊。
實驗裝置:華為 quidway 2621 路由器兩臺
華為 s3526 交換機一臺
H3C secpath f100-c 防火牆一臺(充當路由器角色)
案例思路:
在路由器R11上做路由重發布。在華為裝置上還要重發布rip和ospf區域內的直連路由到對方區域。
實驗拓撲:
配置步驟:
SW3配置
[Quidway]vlan 10 ###為了為三層交換機配置ip地址,需將介面加入vlan,並配置vlan ip
[Quidway-vlan10]port Ethernet 0/24
[Quidway]interface Vlan-interface 10
[Quidway-Vlan-interface10]ip add 192.168.3.2 255.255.255.0
[Quidway]vlan 20 ###為了為三層交換機配置ip地址,需將介面加入vlan,並配置vlan ip
[Quidway-vlan20]port Ethernet 0/23
[Quidway]interface Vlan-interface 20
[Quidway-Vlan-interface20]ip add 192.168.5.1 255.255.255.0
[Quidway]ospf ###在三層交換機上啟動ospf協議
[Quidway-ospf]area 0 ###區域編號為0 ,骨幹區域
[Quidway-ospf-area-0.0.0.0]network 192.168.3.0 0.0.0.255
[Quidway-ospf-area-0.0.0.0]network 192.168.5.0 0.0.0.255
R11:
[r11]int se 0
[r11-Serial0]ip add 192.168.2.2 255.255.255.0
[r11-Serial0]rip ver 2
[r11-Serial0]int e 0
[r11-Ethernet0]ip add 192.168.3.1 255.255.255.0
[r11]rip ###在自治系統邊界路由器上啟動 rip協議
[r11-rip]network 192.168.2.0
[r11]ospf enable ###在自治系統邊界路由器上啟動ospf協議
[r11-ospf]int e 0 ###將ospf協議應用在介面上
[r11-Ethernet0]ospf enable area 0 ###指出介面所在區域
[r11]rip
[r11-rip]import-route ospf cost 2 ###將ospf協議重發布到rip區域中
[r11-rip]impor direct cost 2 ###將直連路由也重發布到rip區域中
[r11]ospf enable
[r11-ospf]import rip ###將rip協議重發布到ospf區域中,cost預設為20
[r11-ospf]impor direct cost 20 ###將直連路由也重發布到ospf區域中
R4:
[R4]int se 0
[R4-Serial0]ip add 192.168.2.1 255.255.255.0
[R4-Serial0]rip ver 2 ###在介面上配置rip版本為v2
[R4-Serial0]int e 1
[R4-Ethernet1]ip add 192.168.1.2 255.255.255.0
[R4-Ethernet1]rip ver 2 ###在介面上配置rip版本為v2
[R4]rip ###在該路由器上啟動rip
waiting...
RIP is running
[R4-rip]network 192.168.1.0
[R4-rip]network 192.168.2.0
fw2
[fw-2]firewall zone untrust
[fw-2-zone-untrust]add interface Ethernet 0/1 ###將介面加入到區域中,否則無法連通
[fw-2-zone-untrust]add interface Ethernet 0/2 ###將介面加入到區域中,否則無法連通
[fw-2]interface Ethernet 0/1
[fw-2-Ethernet0/1]ip add 192.168.1.1 255.255.255.0
[fw-2-Ethernet0/1]rip ver 2
[fw-2]interface Ethernet 0/2
[fw-2-Ethernet0/2]ip add 192.168.4.1 255.255.255.0
[fw-2-Ethernet0/2]rip ver 2 ###在介面上配置rip版本為v2
[fw-2]rip ###配置rip
[fw-2-rip]network 192.168.4.0
[fw-2-rip]network 192.168.1.0
配置完成後交換機sw3所學到的路由資訊:
配置完成後邊界路由器R11所學到的路由資訊:
配置完成後路由器R4所學到的路由資訊:
配置完成後防火牆F2所學到的路由資訊:
案例二:ospf虛鏈路&&EIGRP
案例說明:
有ospf區域和eigrp區域。ospf區域有area0、area1、area2,並且area2與骨幹區域area0未直接相連(虛鏈路)。現要求將ospf區域路由重發布到eigrp中,將預設路由重發布到ospf區域中。
實驗裝置:
8臺cisco 3620路由器
案例思路:
由於ospf的三個區域中的area2未和area0骨幹區域直接相連,所以要在area1 區域的兩臺邊界路由器上配置虛鏈路,使area2區域”直接“ 和area0 相連。
將預設路由釋出到ospf區域時,要加上關鍵字”always “
實驗拓撲
配置步驟:
R1配置
R1>en
R1#config t
R1(config)#line con 0
R1(config-line)#logging Synchronized ###開啟日誌同步
R1(config-line)#no exec-timeout
R1(config-line)#exit
R1(config)#int fa 0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#loopback ###設定該埠為loopback 口
R1(config-if)#int ser 1/0
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#no shut
R1(config)#router ospf 10 ###開啟ospf協議,程序號為10
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0 ###192.168.1.0在區域0
R1(config-router)#network 192.168.2.0 0.0.0.255 area 0###192.168.2.0區域0
R2配置
R2#config t
R2(config)#line console 0
R2(config-line)#logg sy
R2(config-line)#no exec
R2(config-line)#exit
R2(config)#int ser 1/0
R2(config-if)#ip add 192.168.2.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int ser 1/1
R2(config-if)#ip add 192.168.3.1 255.255.255.0
R2(config-if)#no shut
R2(config)#int fa 0/0
R2(config-if)#ip add 192.168.7.1 255.255.255.0
R2(config-if)#no shut
R2(config)#router ospf 10
R2(config-router)#network 192.168.2.0 0.0.0.255 area 0 ###192.168.2.0在區域0
R2(config-router)#network 192.168.3.0 0.0.0.255 area 1 ###192.168.3.0
R2(config-router)#area 1 virtual-link 192.168.5.1 ###在區域1中做虛鏈路,192.168.5.1 為R4的RID
R2(config)#router eigrp 10 ###開啟EIGRP,自制域號為10,同一區域要相同
R2(config-router)#network 192.168.7.0
R2(config)#router eigrp 10
R2(config-router)#redistribute ospf 10 metric 1000 1000 200 29 1000 ###將ospf重發布到eigrp中
R2(config)#router ospf 10 ###預設路由重發布到ospf中
R2(config-router)#default-information originate always ###關鍵字:預設路由重發布到ospf中時使用
R2(config-router)#
R3配置
R3(config)#line con 0
R3(config-line)#logg sy ###開啟日誌同步
R3(config-line)#no exec
R3(config-line)#exit
R3(config)#int ser 1/1
R3(config-if)#ip add 192.168.3.2 255.255.255.0
R3(config-if)#no shut
R3(config-if)#int ser 1/0
R3(config-if)#ip add 192.168.4.1 255.255.255.0
R3(config-if)#no shut
R3(config)#router ospf 10 ###開啟ospf程序10
R3(config-router)#network 192.168.3.0 0.0.0.255 area 1
R3(config-router)#network 192.168.4.0 0.0.0.255 area 1
R4配置
Router>en
Router#config t
Router(config)#host R4
R4(config)#line con 0
R4(config-line)#logg sy ###開啟日誌同步
R4(config-line)#no exec
R4(config-line)#exit
R4(config)#int ser 1/0
R4(config-if)#ip add 192.168.4.2 255.255.255.0
R4(config-if)#no shut
R4(config)#int ser 1/1
R4(config-if)#ip add 192.168.5.1 255.255.255.0
R4(config-if)#no shut
R4(config-if)#
R4(config)#router ospf 10
R4(config-router)#network 192.168.4.0 0.0.0.255 area 1
R4(config-router)#network 192.168.5.0 0.0.0.255 area 2
Router(config-router)#area 1 virtual-link 192.168.7.1(R2的Rid) ###在區域1中做虛鏈路,192.168.7.1 為R2的RID
R5配置
Router>en
Router#config t
Router(config)#hostname R5
R5(config)#line con 0
R5(config-line)#logg sy ###開啟日誌同步
R5(config-line)#no exec
R5(config-line)#exit
R5(config)#int ser 1/1
R5(config-if)#ip add 192.168.5.2 255.255.255.0
R5(config-if)#no shut
R5(config-if)#int fa 0/0
R5(config-if)#ip add 192.168.6.1 255.255.255.0
R5(config-if)#no shut
R5(config-if)#loop
R5(config-if)#
R5(config)#router ospf 10 ###開啟ospf程序10
R5(config-router)#network 192.168.5.0 0.0.0.255 area 2 ###192.168.5.0在區域2中
R5(config-router)#network 192.168.6.0 0.0.0.255 area 2
R5(config-router)#
R6配置
R6(config)#int fa 0/0
R6(config-if)#ip add 192.168.7.2 255.255.255.0
R6(config-if)#no shut
R6(config-if)#int ser 1/0
R6(config-if)#ip add 192.168.8.1 255.255.255.0
R6(config-if)#no shut
R6(config)#router eigrp 10 ###在R6上配置eigrp協議
R6(config-router)#network 192.168.7.0
R6(config-router)#network 192.168.8.0
R7配置
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#host R7
R7(config)#line con 0
R7(config-line)#logg sy
R7(config-line)#no exec
R7(config-line)#exit
R7(config)#int ser 1/0
R7(config-if)#ip add 192.168.8.2 255.255.255.0
R7(config-if)#no shut
R7(config-if)#int ser 1/1
R7(config-if)#ip add 192.168.9.1 255.255.255.0
R7(config-if)#no shut
R7(config)#router eigrp 10 ###在R7上配置eigrp協議
R7(config-router)#network 192.168.8.0
R7(config-router)#network 192.168.9.0
R7(config-router)#
R8配置
Router(config)#host R8
R8(config)#line con 0
R8(config-line)#logg sy
R8(config-line)#no exec
R8(config-line)#exit
R8(config)#int fa 0/0
R8(config-if)#ip add 192.168.10.1 255.255.255.0
R8(config-if)#no shut
R8(config-if)#int ser 1/1
R8(config-if)#ip add 192.168.9.2 255.255.255.0
R8(config-if)#no shut
R8(config)router eigrp 10 ###在R8上配置eigrp協議
R8(config-router)#network 192.168.9.0
R8(config-router)#network 192.168.10.0
配置截圖:
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
R5未匯入預設路由之前路由表:
R5匯入預設路由之後路由表:多了一條預設路由,出口指向5.1
R8路由表:
案例三:ospf末節區域、完全末節區域
案例說明:
如圖所示,ospf區域有area0 、area1、area2,rip區域內有兩臺路由器,要求將rip區域內的路由資訊傳送到ospf區域中,ospf向rip中釋出預設路由。將area2區域配置為末節區域,使area2 區域不能學習rip區域內的路由資訊;再將area2配置為完全末節區域,使area2區域路由器不能學習域間路由和rip區域的路由資訊。
案例裝置:8臺思科3620路由器
案例思路:
本案例要將area2配置為末節區域和完全末節區域。
末節區域:配置後該區域內的路由器可以學到域間路由和域內路由(area0 和area1和area2),還有一條預設路由。但是將學不到非ospf區域路由(rip區域)。需要在area2區域內的每臺路由器上都要進行配置,包括該區域的邊界路由器R5。關鍵字為”stub “。
完全末節區域:配置後該區域內的路由器將只有area2內的路由和一條預設路由。要成為完全末節區域,只需在末節區域的基礎上在R5路由器上新增關鍵字no-summary。
案例拓撲:
配置步驟:
R1:
R1>en
R1#config t
R1(config)#int fa 0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#loopback ####設定為loopback口
R1(config-if)#
R1(config-if)#int ser 1/0
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 10 ###配置ospf ,程序號為10 。區域為area1
R1(config-router)#network 192.168.1.0 0.0.0.255 area 1
R1(config-router)#network 192.168.2.0 0.0.0.255 area 1
R2
Router>en
Router#config t
Router(config)#int ser 1/0
Router(config-if)#ip add 192.168.2.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#int ser 1/1
Router(config-if)#ip add 192.168.3.1 2552.55.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#router ospf 10 ###開啟ospf程序10
Router(config-router)#network 192.168.2.0 0.0.0.255 area 1
Router(config-router)#network 192.168.3.0 0.0.0.255 area 1
Router(config-router)#exit
R2#show ip route
O E2 192.168.8.0/24 [110/20] via 192.168.3.2, 00:17:02, Serial1/1
O E2 192.168.9.0/24 [110/20] via 192.168.3.2, 00:11:51, Serial1/1
O E2 192.168.10.0/24 [110/20] via 192.168.3.2, 00:11:51, Serial1/1
O IA 192.168.4.0/24 [110/128] via 192.168.3.2, 00:23:03, Serial1/1
O IA 192.168.5.0/24 [110/192] via 192.168.3.2, 00:22:53, Serial1/1
O IA 192.168.6.0/24 [110/256] via 192.168.3.2, 00:22:53, Serial1/1
O IA 192.168.7.0/24 [110/257] via 192.168.3.2, 00:19:18, Serial1/1
O 192.168.1.0/24 [110/65] via 192.168.2.1, 00:23:08, Serial1/0
C 192.168.2.0/24 is directly connected, Serial1/0
C 192.168.3.0/24 is directly connected, Serial1/1
R3
Router>en
Router#config t
Router(config)#int s 1/1
Router(config-if)#ip add 192.168.3.2 255.255.255.0
Router(config-if)#no shut
Router(config)#int ser 1/0
Router(config-if)#ip add 192.168.4.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#router ospf 10 ###R3為區域邊界路由器,兩個埠在兩個區域內
Router(config-router)#network 192.168.3.0 0.0.0.255 area 1
Router(config-router)#network 192.168.4.0 0.0.0.255 area 0
Router(config-router)#ex
Router(config)#
Router>en
R4
Router>en
Router#config t
Router(config)#int ser 1/0
Router(config-if)#ip add 192.168.4.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#int ser 1/1
Router(config-if)#ip add 192.168.5.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#router ospf 10###骨幹區域
Router(config-router)#network 192.168.4.0 0.0.0.255 area 0
Router(config-router)#network 192.168.5.0 0.0.0.255 area 0
R5
Router>en
Router#config t
Router(config)#int ser 1/1
Router(config-if)#ip add 192.168.5.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#int ser 1/0
Router(config-if)#ip add 192.168.6.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#int fa 0/0
Router(config-if)#ip add 192.168.8.1 255.255.255.0
Router(config-if)#no shut
Router(config)#router ospf 10 ###有兩個區域0和2
Router(config-router)#network 192.168.5.0 0.0.0.255 area 0
Router(config-router)#network 192.168.6.0 0.0.0.255 area 2
Router(config)#router rip ###配置rip版本2
Router(config-router)#network 192.168.8.0
Router(config-router)#ver 2
Router(config-router)#ex
Router(config)#router ospf 10
Router(config-router)#redistribute rip subnets##將rip釋出到ospf中,cost預設為20
Router(config-router)#end
Router(config)#router rip
Router(config-router)#default-information originate ####向rip區域中釋出預設路由
Router(config)#router ospf 10
Router(config-router)#area 2 stub ####在末節區域內的所有路由器上配置stub
Router(config-router)#area 2 stub no-summary###配置完全末節區域,在區域的邊界路由器上配置
Router(config-router)#
R6
Router>en
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#int s 1/0
Router(config-if)#ip add 192.168.6.2 255.255.255.0
Router(config-if)#no shut
Router(config)#int fa 0/0
Router(config-if)#ip add 192.168.7.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#loop
Router(config)#router ospf 10 ###開啟 ospf10程序
Router(config-router)#network 192.168.6.0 0.0.0.255 area 2
Router(config-router)#network 192.168.7.0 0.0.0.255 area 2
Router(config-router)#area 2 stub #####設定末節區域
R7
Router>en
Router#config t
Router(config)#int fa 0/0
Router(config-if)#ip add 192.168.8.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#int s 1/0
Router(config-if)#ip add 192.168.9.1 255.255.255.0
Router(config-if)#no shut
Router(config)#router rip ###配置ripv2
Router(config-router)#ver 2
Router(config-router)#network 192.168.8.0
Router(config-router)#network 192.168.9.0
Router(config-router)#ex
R8
Router>en
Router#config t
Router(config)#int ser 1/0
Router(config-if)#ip add 192.168.9.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
Router(config-if)#int fa 0/0
Router(config-if)#ip add 192.168.10.1 255.255.255.0
Router(config-if)#loop
Router(config)#router rip
Router(config-router)#ver 2
Router(config-router)#network 192.168.10.0
Router(config-router)#network 192.168.9.0
R1上路由表:
R5上向rip中重分發預設路由default-information originate後,rip區域的路由表
在路由器R5、R6 上配置末節區域後,R6的路由表:
在路由器R5上配置完全末節區域後,R6的路由表:
轉載於:https://blog.51cto.com/jialiang10086/949926