一、概述
? ? ? ? 眾所周知,IGP當中鏈路狀態路由協議(OSPF、ISIS)之所以可以代替我們的矢量路由協議(RIP),就是因為鏈路狀態路由協議可以根據某些特性快速的感知到路由的變化從而改變路徑。
? ? ? ? 前面我們已經介紹過了OSPF的其中一個快速收斂的機制,SPF算法,本章節將介紹另一個快速收斂機制,FRR(鏈路保護)
? ? ? ? 在我們OSPF網絡環境當中,當沒有配置BFD的情況下鏈路發生了故障時,設備是有一段空窗期無法快速感知到鏈路故障的,在這個空窗期內數據將會丟包,假如說沒有備份路徑則一直丟包,那么這個空窗期是多久呢?又是怎么計算得出的呢?
舉個例子:
在這個拓撲當中假設AR1與AR4之間的鏈路發生了故障
AR1在Hello報文的老化時間(40s)倒計時之后沒有收到對方的Hello報文,AR1就認為鄰居down了,這里就需要40s
AR1在感知到鄰居down之后拓撲發生了改變,AR1會產生LSA來通知其他鄰居,收到該LSA加入到LSDB當中之后,重新進行SPF(SPT、PRC)算法。
經過以上一系列的操作之后重新計算出了新的拓撲和路由信息之后數據才會通過AR3去訪問AR5,在此期間所有想要通過AR1去訪問AR5的數據都將丟包。
在一些特定場景當中,客戶不希望長時間的丟包,保證網絡的穩定性和可靠性,那么在OSPF當中有沒有什么技術可以加快收斂時間呢?
有的兄弟有的
其中就包括我們接下來要介紹的技術FRR
二、FRR
? ? ? OSPF(fast reroute,快速重路由)通過LFA算法來預先計算出網絡目的的備份路徑,保存在轉發表當中,當主路徑發生故障時,可以及時將數據快速的切換到備份路徑上,保證數據不中斷,可將故障恢復時間降低到(50ms)之內,通常我們也會使用BFD來監測主路徑,當主路徑發生故障時,通過FRR計算的備份路徑快速的切換到備份路徑上,這樣大大減少了我們收斂的時間,保證了數據不中斷。
? ? ? ?不是所有的路徑都可以被當作備份路徑保存在轉發路由表當中的,需要滿足一定的條件:N D < N S + S D
?舉個例子:
在這張拓撲當中,AR3作為AR1去往AR5的備份路徑
AR3通過AR4去訪問AR5的COST為2
AR3通過AR1去訪問AR5的COST為3
AR1通過AR4去訪問AR5的COST為2
此時N D=2 < N S(1) + S D(2)=3
AR1可以通過LFA算法來計算出備份路徑放入自己的轉發路由表當中,但如果此時我們將AR3與AR4之間的鏈路COST改成2那么條件就無法打成。
AR3通過AR4去訪問AR5的COST為3
AR3通過AR1去訪問AR5的COST為3
AR1通過AR4去訪問AR5的COST為2
此時N D=3 ≮? N S(1) + S D(2) =3
條件無法達成則AR1無法將AR3的備份路徑加入到轉發路由表當中
三、實驗
拓撲
1、基礎配置
AR1
system
sysname AR1
interface g0/0/0
ip add 10.0.14.1 24
interface g0/0/1
ip add 10.0.13.1 24
interface loopback 1
ip add 1.1.1.1 32AR3
system
sysname AR3
interface g0/0/0
ip add 10.0.13.3 24
interface g0/0/1
ip add 10.0.34.3 24AR4
system
sysname AR4
interface g0/0/0
ip add 10.0.14.4 24
interface g0/0/1
ip add 10.0.34.4 24
interface g0/0/2
ip add 10.0.45.4 24AR5
system
sysname AR5
interface g0/0/0
ip add 10.0.45.5 24
interface loopback 1
ip add 5.5.5.5 32
2、路由配置
AR1
ospf 1 router-id 1.1.1.1
area 0
netw 0.0.0.0 0.0.0.0AR3
ospf 1 router-id 3.3.3.3
area 0
netw 0.0.0.0 0.0.0.0AR4
ospf 1 router-id 4.4.4.4
area 0
netw 0.0.0.0 0.0.0.0AR5
ospf 1 router-id 5.5.5.5
area 0
netw 0.0.0.0 0.0.0.0
查看OSPF鄰居表和LSDB
[AR1]dis ospf peer briefOSPF Process 1 with Router ID 1.1.1.1Peer Statistic Information----------------------------------------------------------------------------Area Id Interface Neighbor id State 0.0.0.0 GigabitEthernet0/0/0 4.4.4.4 Full 0.0.0.0 GigabitEthernet0/0/1 3.3.3.3 Full ----------------------------------------------------------------------------
[AR1]display ospf lsdb OSPF Process 1 with Router ID 1.1.1.1Link State Database Area: 0.0.0.0Type LinkState ID AdvRouter Age Len Sequence MetricRouter 4.4.4.4 4.4.4.4 77 60 80000007 1Router 1.1.1.1 1.1.1.1 88 60 80000007 1Router 5.5.5.5 5.5.5.5 80 48 80000004 1Router 3.3.3.3 3.3.3.3 85 48 80000007 1Network 10.0.14.4 4.4.4.4 79 32 80000002 0Network 10.0.13.3 3.3.3.3 91 32 80000002 0Network 10.0.34.4 4.4.4.4 85 32 80000002 0Network 10.0.45.5 5.5.5.5 80 32 80000002 0
查看AR1去往AR5的路由
[AR1]display ip routing-table 5.5.5.5 32 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1Destination: 5.5.5.5/32Protocol: OSPF Process ID: 1Preference: 10 Cost: 2NextHop: 10.0.14.4 Neighbour: 0.0.0.0State: Active Adv Age: 00h01m38sTag: 0 Priority: mediumLabel: NULL QoSInfo: 0x0IndirectID: 0x0 RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0TunnelID: 0x0 Flags: D
可以看到此時AR1去往AR5的路由當中并沒有備份路徑,如果此時AR1的主路徑發生的故障則需要較長的一段時間來重新計算出新的鏈路來轉發數據,那我們的客戶肯定是不能接受的,所以接下來我們就來配置FRR(快速重路由)技術來加快我們收斂的速度。
AR1
ospf 1
frr
loop-free-alternate
?配置完后我們來重新查看AR1去往AR5的路由信息
[AR1]display ip routing-table 5.5.5.5 32 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1Destination: 5.5.5.5/32Protocol: OSPF Process ID: 1Preference: 10 Cost: 2NextHop: 10.0.14.4 Neighbour: 0.0.0.0State: Active Adv Age: 00h00m17sTag: 0 Priority: mediumLabel: NULL QoSInfo: 0x0IndirectID: 0x0 RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0TunnelID: 0x0 Flags: DBkNextHop: 10.0.13.3 BkInterface: GigabitEthernet0/0/1BkLabel: NULL SecTunnelID: 0x0 BkPETunnelID: 0x0 BkPESecTunnelID: 0x0 BkIndirectID: 0x0
可以看到此時AR1的路由表當中已經有了下一跳為10.0.13.3的備份路徑,當AR1感知到主路徑發生故障時,就會快速的將去往AR5的路徑切換到備份路徑,從而減少了丟包時間。
如果此時我們將AR3與AR4之間的鏈路COST改為2,看看AR1的路由會不會發生變化
AR3
interface g0/0/1
ospf cost 2
[AR1]display ip routing-table 5.5.5.5 32 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1Destination: 5.5.5.5/32Protocol: OSPF Process ID: 1Preference: 10 Cost: 2NextHop: 10.0.14.4 Neighbour: 0.0.0.0State: Active Adv Age: 00h00m01sTag: 0 Priority: mediumLabel: NULL QoSInfo: 0x0IndirectID: 0x0 RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0TunnelID: 0x0 Flags: D
可以看到我們將AR3與AR4之間的鏈路COST改大之后AR1的路由表當中就沒有了AR3的備份路徑了。
這是為什么呢?
其實很簡單,就是我們上面提到的條件:N D < N S + S D
?想要AR1計算出AR3的備份路徑,那么AR3到達AR5的COST就必須小于AR3到達AR1+AR1到達AR5的COST。
通過FRR計算出備份路徑,在鏈路發生故障時我們可以將故障時間降低致大約50s左右,但這還是很久如果想要進一步加快收斂速度,我們可以在AR1的主路徑上配置BFD快速檢測,不需要等待40s的hello老化時間
以上就是本章的全部內容了,感謝大家的瀏覽觀看!文章若有錯誤或疑問可聯系博主刪除更改。