龐國莉,王小英
(防災(zāi)科技學(xué)院,河北三河)
BFD 的全稱為雙向轉(zhuǎn)發(fā)檢測,它提供了一個通用的標(biāo)準(zhǔn)化的、與介質(zhì)和協(xié)議無關(guān)的快速故障檢測機(jī)制。其主要作用有兩點(diǎn):一是用于快速檢測、監(jiān)控網(wǎng)絡(luò)中鏈路或IP 路由的轉(zhuǎn)發(fā)連通狀況;二是提升現(xiàn)有網(wǎng)絡(luò)性能,鄰居之間必須能快速檢測到通信故障,從而建立備用通道恢復(fù)通信。BFD 是以UDP 作為傳輸層協(xié)議的一種輕量級的hello 協(xié)議。在檢測通信故障之前,BFD 對等體之間需要首先建立會話,為了建立會話,BFD 對等體之間首先需要完成3 次握手,3 次握手的會話建立過程同時也是參數(shù)協(xié)商過程,然后再通過會話來周期性發(fā)送故障檢測消息[1]。以O(shè)SPF 進(jìn)程下啟用BFD 為例,查看BFD 會話的建立過程,如圖1 所示。OSPF 先建立鄰居關(guān)系,接著將鄰居關(guān)系通告給BFD,BFD 則利用這些信息建立會話并周期性地相互發(fā)送消息來檢測故障。如果一臺BFD 設(shè)備在指定時間內(nèi)沒有接收到對端BFD 設(shè)備發(fā)送過來的檢測消息,那么它就會認(rèn)為自己與對端之間通信出現(xiàn)了故障。以圖2 為例展示了BFD 向OSPF 通告鏈路故障的過程。BFD 因在指定時間內(nèi)沒有接收到對端的BFD 消息而迅速檢測出了設(shè)備之間的通信故障,同時BFD 也由UP 變?yōu)榱薉OWN,BFD 向OSPF 通告鄰居已經(jīng)不可達(dá)的信息,OSPF 斷開鄰居關(guān)系,OSPF 網(wǎng)絡(luò)也會開始重新收斂。
圖1 BFD 會話建立
圖2 BFD 通告鏈路故障
對于局域網(wǎng)而言,網(wǎng)關(guān)設(shè)備是連接局域網(wǎng)和外部網(wǎng)絡(luò)的橋梁。當(dāng)局域網(wǎng)與網(wǎng)關(guān)設(shè)備之間的通信斷開也就意味著局域網(wǎng)中所有終端斷開了與外部網(wǎng)絡(luò)的通信。為了避免網(wǎng)關(guān)單點(diǎn)故障的隱患,需要增加冗余網(wǎng)關(guān)并引入一種機(jī)制能夠讓冗余網(wǎng)關(guān)工作起來像一臺網(wǎng)關(guān)設(shè)備,而VRRP 就提供了這種機(jī)制。
VRRP 的全稱為虛擬路由器冗余協(xié)議,屬于一種虛擬化技術(shù),也是一種容錯協(xié)議。VRRP 主要功能是將多臺路由器虛擬成一臺路由器,為終端設(shè)備提供網(wǎng)關(guān)冗余,從而保持通信的連續(xù)性和可靠性。VRRP 路由器分為主用(Master)和備用(Backup)兩種,只有主用路由器才會為局域網(wǎng)和外網(wǎng)之間的流量執(zhí)行轉(zhuǎn)發(fā),而備用路由器通過主用路由器發(fā)送的通告來監(jiān)聽主用路由器的工作狀態(tài)。當(dāng)備用路由器在指定時間內(nèi)沒有收到來自主用路由器發(fā)來的通告,那么備用路由器會認(rèn)為主用路由器發(fā)生故障,它會重新選舉出新的主用路由器繼續(xù)為終端進(jìn)行流量轉(zhuǎn)發(fā)[2]。圖3 為使用VRRP協(xié)議環(huán)境的邏輯拓?fù)洌谕負(fù)渲新酚善鰽 和路由器B與交換機(jī)連接的接口可配置成一個VRRP 組,兩臺路由器的接口對外使用相同的虛擬IP 地址和虛擬MAC進(jìn)行通信。在所有終端設(shè)備上將這個虛擬IP 地址設(shè)置為默認(rèn)網(wǎng)關(guān),就可以實(shí)現(xiàn)網(wǎng)關(guān)設(shè)備的冗余[3]。
圖3 VRRP 協(xié)議環(huán)境的邏輯拓?fù)?/p>
VRRP 在選舉主用路由器時,會首先比較優(yōu)先級(默認(rèn)優(yōu)先級為100),優(yōu)先級值最高的接口被選舉為主用路由器。如果多個VRRP 路由器接口的優(yōu)先級相同,則會繼續(xù)對比接口IP 地址,IP 地址最高的接口成為主用路由器。
VRRP 配置需要在路由器接口上進(jìn)行,在圖3 中,為了使路由器A 為主用路由器,路由器B 為備用路由器,可在路由器A 與交換機(jī)連接的接口g0/0/1 上配置兩條命令vrrp vrid 10 virtual-ip 10.1.1.254 和vrrp vrid 10 priority 150,命令指定VRID 組為10,虛擬IP地址為10.1.1.254,優(yōu)先級為150,使其大于默認(rèn)值。而在路由器B 與交換機(jī)連接的接口上只需要配置一條命令vrrp vrid 10 virtual-ip 10.1.1.254 即可,保留VRRP 優(yōu)先級100 的默認(rèn)設(shè)置。VRRP 通過比較優(yōu)先級從而確定路由器A 為VRID 10 的主用路由器,負(fù)責(zé)傳輸內(nèi)網(wǎng)與外網(wǎng)的數(shù)據(jù)流量。當(dāng)路由器A 到外網(wǎng)的上行鏈路出現(xiàn)故障導(dǎo)致通信中斷,VRRP 是無法感知的,數(shù)據(jù)流量仍由路由器A 進(jìn)行轉(zhuǎn)發(fā),但由于上行鏈路中斷,所有的終端是無法通過路由器A 訪問外網(wǎng)的。為此,VRRP 需要根據(jù)上行鏈路的狀態(tài)相應(yīng)地進(jìn)行切換,即需要在路由器A 的g0/0/1 接口上相應(yīng)地配置上行鏈路追蹤功能的命令vrrp vrid 10 track int g0/0/2 reduced 100,命令實(shí)現(xiàn)了當(dāng)g0/0/2 狀態(tài)Down時,優(yōu)先級會減少100,這樣主用路由器A 的優(yōu)先級就會低于備用路由器B 對應(yīng)接口的優(yōu)先級100,備用路由器就可以通過優(yōu)先級搶占主用路由器的角色進(jìn)而進(jìn)行流量傳輸。
如圖4 所示VRRP 三層邏輯直連環(huán)境中,AR1 為外網(wǎng)的路由器,AR2 和AR3 為局域網(wǎng)的網(wǎng)關(guān),通過VRRP 向企業(yè)內(nèi)部網(wǎng)絡(luò)提供冗余網(wǎng)關(guān)服務(wù)。在AR2 和AR3 上需要配置默認(rèn)路由通往外網(wǎng),并在AR2 和AR3 的上聯(lián)出接口上配置NAT easy ip 服務(wù),為局域網(wǎng)提供地址轉(zhuǎn)換服務(wù)。通過配置AR2 的G0/0/1 接口優(yōu)先級設(shè)置為150 將其設(shè)為Master 角色,并設(shè)置追蹤接口G0/0/0 狀態(tài)。但由于AR2 與AR1 之間有二層設(shè)備LSW2,且LSW2 與AR1 之間有鏈路故障時,AR2是無法感知到鏈路故障的,因此,它不會降低優(yōu)先級,而是繼續(xù)轉(zhuǎn)發(fā)終端的數(shù)據(jù),顯而易見,轉(zhuǎn)發(fā)的數(shù)據(jù)會被丟棄,造成終端與外網(wǎng)的通信中斷[3],如圖5 所示。
圖4 VRRP 三層邏輯直連環(huán)境
圖5 終端與外網(wǎng)的通信中斷
針對以上VRRP 三層邏輯直連環(huán)境中無法感知上行鏈路故障造成通信中斷的情況,提出了在VRRP中結(jié)合BFD 提供的快速檢測故障機(jī)制,以快速確定邏輯直連中存在的鏈路故障現(xiàn)象,再通過BFD 通告給VRRP,VRRP 通過降低主用路由器AR2 的優(yōu)先級,使得備用路由器AR3 根據(jù)優(yōu)先級搶占主用角色,最終實(shí)現(xiàn)終端數(shù)據(jù)的轉(zhuǎn)發(fā)[4]。
啟用BFD 的快速檢測功能需要先建立BFD 會話,建立BFD 會話有兩種方式:動態(tài)和靜態(tài)。本案例采用BFD 動態(tài)方式在AR2 和AR1 上進(jìn)行配置。需要在AR2 和AR1 上先使能BFD 功能,接著配置BFD 會話名稱及遠(yuǎn)端IP 和本地IP,最后在AR2 的G0/0/1 接口的VRRP 上調(diào)用BFD 會話,具體命令如下。
AR1 上BFD 配置命令:
[AR1]bfd
[AR1]bfd aa bind peer-ip 200.0.0.2 source-ip 200.0.0.1 auto
AR2 上BFD 配置命令:
[AR2]bfd
[AR2]bfd aa bind peer-ip 200.0.0.1 source-ip 200.0.0.2 auto
[AR2]int g0/0/1
[AR2-GigabitEthernet0/0/1]vrrp vrid 10 track bfd-session session-name aa reduced 100
配置完成后,在終端用-t 參數(shù)不間斷ping 外網(wǎng),并將AR1 的G0/0/0 設(shè)置為Down,模擬LSW2 與AR1之間有鏈路故障,結(jié)果發(fā)現(xiàn)終端與外網(wǎng)的ping 包有兩個超時提示后又正常進(jìn)行轉(zhuǎn)發(fā),如圖6 所示。說明BFD 檢測到故障后通知了VRRP,VRRP 主用路由器AR2 接口G0/0/1 優(yōu)先級降低了100,備用路由器AR3根據(jù)優(yōu)先級切換為Master 角色并進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。在AR3 上通過使用命令display vrrp brief 可以查看到AR3 已切換為Master 角色,如圖7 所示。由此可見,在VRRP 環(huán)境中調(diào)用BFD 提供快速檢測功能是非常重要和高效的[5]。
圖6 終端與外網(wǎng)調(diào)用BFD 后的通信情況
圖7 調(diào)用BFD 后查看AR3 角色
由于很多網(wǎng)絡(luò)技術(shù)自帶的檢錯機(jī)制效率很低,而BFD 是一項(xiàng)毫秒級且支持多協(xié)議的快速檢測故障的技術(shù)而被廣泛應(yīng)用。本文通過介紹BFD 與OSPF 路由協(xié)議聯(lián)動過程闡述了BFD 的工作原理,為了避免網(wǎng)關(guān)的單點(diǎn)故障而引入了VRRP 在網(wǎng)絡(luò)中的應(yīng)用場景,最后結(jié)合VRRP 網(wǎng)絡(luò)中可能出現(xiàn)的故障而無法快速檢測到而導(dǎo)致傳輸中斷的場景,提出了將VRRP 與BFD聯(lián)動設(shè)計的快速復(fù)原解決方案。該方案通過ENSP 平臺模擬演示,通過VRRP 沒有與BFD 聯(lián)動出現(xiàn)的故障效果和與BFD 聯(lián)動故障效果進(jìn)行了比較,從而驗(yàn)證BFD 在VRRP 網(wǎng)絡(luò)出現(xiàn)故障時具備快速復(fù)原能力的應(yīng)用效果。