因為這1秒,這個月的工資差點打水漂.....
隨著網絡技術的發展,人們對網絡的依賴已經越來越深,我們的工作,生活,娛樂方方面都離開不網絡的支持。伴隨著網絡人們對網絡的需求越加強力的同時人們對網絡的可靠性的需求也更高了。游戲斷網一秒我們可以重來,大不了重開一局;視頻斷網一秒我們可以重新連接;試想經融股市斷網一秒將造成何等嚴重的經濟損失。
我們常用的動態路由協議,如RIP當網絡出現故障或者變更收斂時間在數秒到百秒之上(RIP也支持觸發更新,但是這依然不能避免在一些特殊情況下依賴RIP自身計時器實現網絡的重收斂);我們常用的OSPF協議雖然收斂速度控制在秒級,但在一些特殊情況下也需要依賴自身計時器(這時又會陷入數十秒的等待)實現網絡的重收斂;至于靜態路由就更沒有監測對端是否正常的功能,而靜態默認路由(我們基本靠這個路由實現對廣域網的訪問)又是我們工作和生活中使用最多的。
一、 BFD&NQA簡介
1. BFD
BFD(Bidirectional Forwarding Detection,雙向轉發檢測)用于快速檢測系統發送和接收兩個方向的通信故障,并在出現故障時通知上層應用。
BFD是一種通用的,標準化的與介質和協議無關的快速鏈路故障檢測機制;BFD可以快速監控網絡中鏈路或者IP路由的發送狀況;BFD支持毫秒級的快速檢測與監控,當感知到監測鏈路故障會立刻通知上層協議(如路由協議,VRRP等)做出響應動作。
2. NQA
NQA(Network Quality Analysis,網絡質量分析)是網絡系統提供的一個特性,位于鏈路層之上,覆蓋網絡,傳輸層和應用層,獨立于底層硬件,課實現監視網絡性能狀況,在網絡發生故障時進行故障診斷和定位,并將按照策略告知應用執行應對動作。
二、BFD&NQA與靜態路聯動
需求:
1. 通過策略路由實現靜態路由的熱備
2. 通過BFD&NQA實現鏈路在故障時的快速主動切換
(1) 當12.1.1.0網段正常。去往2.2.2.2數據通過12.1.1.0網段轉發;同時備份一條同樣去往2.2.2.2的路由
(2) 這里有2個問題:
- 指定路線:訪問2.2.2.2數據優選12.1.1.0鏈路
- 自動切換:12.1.1.0網段故障,訪問2.2.2.2數據自動切換到備份線路
(3) 解決思路
- 指定路線:我們修改2.2.2.2通過12.1.1.0網段的優先級小于常規的60(越小越有效,)這時路由表會優先和加表此條路由
- 自動切換:我們通過BFD聯動第一條靜態,如果BFD失效,也代表第一條路由失效,這時路由就重新啟用之前落選的24.1.1.0線路
三、靜態路由配合BFD實現主備自動切換
注意BFD需要在本端和對端都做,是一個雙向的連接,BFD通過互相檢測,感知到對端故障告知相關應用(這里的應用就是靜態路由)
1. 在GW端制定BFD策略
- [GW]
- [GW]bfd--------------------------------------------------開啟BFD功能
- [GW-bfd]quit
- [GW]bfd gw bind peer-ip 12.1.1.2------------------------創建名稱為gw的BFD檢測組,此檢測組監控對端12.1.1.2地址的網絡通暢性
- [GW-bfd-session-gw]discriminator local 1---------------配置本BFD組本端標識ID為1
- [GW-bfd-session-gw]discriminator remote 2------------配置本BFD組對端標識ID為2
- [GW-bfd-session-gw]min-rx-interval 1000---------------配置本BFD發送BFD檢測報文的間隔時間為1000ms(毫秒)這個需要和對端一致,越小,切換速度越快(默認1000毫秒,修改范圍10--2000毫秒)
- [GW-bfd-session-gw]min-tx-interval 1000---------------配置本BFD接收BFD檢測報文的間隔時間為1000ms(毫秒)在此時間沒有收到對端發送BFD報文,判斷對方掛了(默認1000毫秒,修改范圍10--2000毫秒)
- [GW-bfd-session-gw]commit-----------------------------使得上述BFD策略生效
- [GW-bfd-session-gw]quit
- [GW]
- [GW]dis bfd session all------------------------------------查看BFD狀態,UP顯示對端BFD對端鄰居存活,down表示對方掛了或者和對端BFD協商失敗
2. 在ISP端制定BFD策略,與GW的BFD相對應
- [ISP]bfd
- [ISP-bfd]quit
- [ISP]
- [ISP]bfd isp bind peer-ip 12.1.1.1
- [ISP-bfd-session-isp]discriminator local 2
- [ISP-bfd-session-isp]discriminator remote 1
- [ISP-bfd-session-isp]min-rx-interval 1000
- [ISP-bfd-session-isp]min-tx-interval 1000
- [ISP-bfd-session-isp]commit
- [ISP-bfd-session-isp]quit
- [ISP]
3. 在GW將BFD聯動(調用至)靜態路由
[GW]ip route-static 2.2.2.2 32 12.1.1.2 preference 55 track bfd-session gw----當名稱為“gw”BFD檢測組工作正常,則此條優先級為55的靜態路由生效,如果BFD掛了,則這條靜態路由失效
- [GW]
- [GW]ip route-static 2.2.2.2 32 24.1.1.4 preference 60---------------------------配置正常靜態路由,優先級為60
- [GW]
四、靜態路由配合NQA實現主備自動切換
1. 制定對對端的NQA檢測策略
- [GW]
- [GW]nqa test-instance gw isp----------------------------創建名稱為gw isp的NQA事件
- [GW-nqa-gw-isp]test-type icmp-------------------------采用發送ping包的方式檢測對端
- [GW-nqa-gw-isp]destination-address ipv4 24.1.1.4-----檢測對端為IPv4地址的24.1.1.4
- [GW-nqa-gw-isp]frequency 2----------------------------發送檢測包的間隔時間為2秒(范圍1-604800秒)越小觸發切換速度越快
- [GW-nqa-gw-isp]timeout 2------------------------------接收本檢測包的超時時間為2秒,2秒內沒有收到本端發出的ping包,判斷對方掛了
- [GW-nqa-gw-isp]probe-count 1-------------------------發送檢測包的數量,每次一個
- [GW-nqa-gw-isp]start now-------------------------------本檢測策略立刻生效
- [GW-nqa-gw-isp]quit
- [GW]
2. 在靜態路由調用檢測策略,實現靜態路由的自動切換
- [GW]
- [GW]ip route-static 20.20.20.20 32 24.1.1.4 preference 55 track nqa gw isp-----此路由的優先級為55,此路由生效條件為NQA追蹤策略正常(當NQA發現對方掛了,會告訴路由表立刻剔除這條故障路由)
- [GW]
- [GW]ip route-static 20.20.20.20 32 12.1.1.2
- [GW]