龐國莉,王小英
(防災科技學院,河北三河)
BFD 的全稱為雙向轉發檢測,它提供了一個通用的標準化的、與介質和協議無關的快速故障檢測機制。其主要作用有兩點:一是用于快速檢測、監控網絡中鏈路或IP 路由的轉發連通狀況;二是提升現有網絡性能,鄰居之間必須能快速檢測到通信故障,從而建立備用通道恢復通信。BFD 是以UDP 作為傳輸層協議的一種輕量級的hello 協議。在檢測通信故障之前,BFD 對等體之間需要首先建立會話,為了建立會話,BFD 對等體之間首先需要完成3 次握手,3 次握手的會話建立過程同時也是參數協商過程,然后再通過會話來周期性發送故障檢測消息[1]。以OSPF 進程下啟用BFD 為例,查看BFD 會話的建立過程,如圖1 所示。OSPF 先建立鄰居關系,接著將鄰居關系通告給BFD,BFD 則利用這些信息建立會話并周期性地相互發送消息來檢測故障。如果一臺BFD 設備在指定時間內沒有接收到對端BFD 設備發送過來的檢測消息,那么它就會認為自己與對端之間通信出現了故障。以圖2 為例展示了BFD 向OSPF 通告鏈路故障的過程。BFD 因在指定時間內沒有接收到對端的BFD 消息而迅速檢測出了設備之間的通信故障,同時BFD 也由UP 變為了DOWN,BFD 向OSPF 通告鄰居已經不可達的信息,OSPF 斷開鄰居關系,OSPF 網絡也會開始重新收斂。

圖1 BFD 會話建立

圖2 BFD 通告鏈路故障
對于局域網而言,網關設備是連接局域網和外部網絡的橋梁。當局域網與網關設備之間的通信斷開也就意味著局域網中所有終端斷開了與外部網絡的通信。為了避免網關單點故障的隱患,需要增加冗余網關并引入一種機制能夠讓冗余網關工作起來像一臺網關設備,而VRRP 就提供了這種機制。
VRRP 的全稱為虛擬路由器冗余協議,屬于一種虛擬化技術,也是一種容錯協議。VRRP 主要功能是將多臺路由器虛擬成一臺路由器,為終端設備提供網關冗余,從而保持通信的連續性和可靠性。VRRP 路由器分為主用(Master)和備用(Backup)兩種,只有主用路由器才會為局域網和外網之間的流量執行轉發,而備用路由器通過主用路由器發送的通告來監聽主用路由器的工作狀態。當備用路由器在指定時間內沒有收到來自主用路由器發來的通告,那么備用路由器會認為主用路由器發生故障,它會重新選舉出新的主用路由器繼續為終端進行流量轉發[2]。圖3 為使用VRRP協議環境的邏輯拓撲,在拓撲中路由器A 和路由器B與交換機連接的接口可配置成一個VRRP 組,兩臺路由器的接口對外使用相同的虛擬IP 地址和虛擬MAC進行通信。在所有終端設備上將這個虛擬IP 地址設置為默認網關,就可以實現網關設備的冗余[3]。

圖3 VRRP 協議環境的邏輯拓撲
VRRP 在選舉主用路由器時,會首先比較優先級(默認優先級為100),優先級值最高的接口被選舉為主用路由器。如果多個VRRP 路由器接口的優先級相同,則會繼續對比接口IP 地址,IP 地址最高的接口成為主用路由器。
VRRP 配置需要在路由器接口上進行,在圖3 中,為了使路由器A 為主用路由器,路由器B 為備用路由器,可在路由器A 與交換機連接的接口g0/0/1 上配置兩條命令vrrp vrid 10 virtual-ip 10.1.1.254 和vrrp vrid 10 priority 150,命令指定VRID 組為10,虛擬IP地址為10.1.1.254,優先級為150,使其大于默認值。而在路由器B 與交換機連接的接口上只需要配置一條命令vrrp vrid 10 virtual-ip 10.1.1.254 即可,保留VRRP 優先級100 的默認設置。VRRP 通過比較優先級從而確定路由器A 為VRID 10 的主用路由器,負責傳輸內網與外網的數據流量。當路由器A 到外網的上行鏈路出現故障導致通信中斷,VRRP 是無法感知的,數據流量仍由路由器A 進行轉發,但由于上行鏈路中斷,所有的終端是無法通過路由器A 訪問外網的。為此,VRRP 需要根據上行鏈路的狀態相應地進行切換,即需要在路由器A 的g0/0/1 接口上相應地配置上行鏈路追蹤功能的命令vrrp vrid 10 track int g0/0/2 reduced 100,命令實現了當g0/0/2 狀態Down時,優先級會減少100,這樣主用路由器A 的優先級就會低于備用路由器B 對應接口的優先級100,備用路由器就可以通過優先級搶占主用路由器的角色進而進行流量傳輸。
如圖4 所示VRRP 三層邏輯直連環境中,AR1 為外網的路由器,AR2 和AR3 為局域網的網關,通過VRRP 向企業內部網絡提供冗余網關服務。在AR2 和AR3 上需要配置默認路由通往外網,并在AR2 和AR3 的上聯出接口上配置NAT easy ip 服務,為局域網提供地址轉換服務。通過配置AR2 的G0/0/1 接口優先級設置為150 將其設為Master 角色,并設置追蹤接口G0/0/0 狀態。但由于AR2 與AR1 之間有二層設備LSW2,且LSW2 與AR1 之間有鏈路故障時,AR2是無法感知到鏈路故障的,因此,它不會降低優先級,而是繼續轉發終端的數據,顯而易見,轉發的數據會被丟棄,造成終端與外網的通信中斷[3],如圖5 所示。

圖4 VRRP 三層邏輯直連環境

圖5 終端與外網的通信中斷
針對以上VRRP 三層邏輯直連環境中無法感知上行鏈路故障造成通信中斷的情況,提出了在VRRP中結合BFD 提供的快速檢測故障機制,以快速確定邏輯直連中存在的鏈路故障現象,再通過BFD 通告給VRRP,VRRP 通過降低主用路由器AR2 的優先級,使得備用路由器AR3 根據優先級搶占主用角色,最終實現終端數據的轉發[4]。
啟用BFD 的快速檢測功能需要先建立BFD 會話,建立BFD 會話有兩種方式:動態和靜態。本案例采用BFD 動態方式在AR2 和AR1 上進行配置。需要在AR2 和AR1 上先使能BFD 功能,接著配置BFD 會話名稱及遠端IP 和本地IP,最后在AR2 的G0/0/1 接口的VRRP 上調用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 參數不間斷ping 外網,并將AR1 的G0/0/0 設置為Down,模擬LSW2 與AR1之間有鏈路故障,結果發現終端與外網的ping 包有兩個超時提示后又正常進行轉發,如圖6 所示。說明BFD 檢測到故障后通知了VRRP,VRRP 主用路由器AR2 接口G0/0/1 優先級降低了100,備用路由器AR3根據優先級切換為Master 角色并進行數據的轉發。在AR3 上通過使用命令display vrrp brief 可以查看到AR3 已切換為Master 角色,如圖7 所示。由此可見,在VRRP 環境中調用BFD 提供快速檢測功能是非常重要和高效的[5]。

圖6 終端與外網調用BFD 后的通信情況

圖7 調用BFD 后查看AR3 角色
由于很多網絡技術自帶的檢錯機制效率很低,而BFD 是一項毫秒級且支持多協議的快速檢測故障的技術而被廣泛應用。本文通過介紹BFD 與OSPF 路由協議聯動過程闡述了BFD 的工作原理,為了避免網關的單點故障而引入了VRRP 在網絡中的應用場景,最后結合VRRP 網絡中可能出現的故障而無法快速檢測到而導致傳輸中斷的場景,提出了將VRRP 與BFD聯動設計的快速復原解決方案。該方案通過ENSP 平臺模擬演示,通過VRRP 沒有與BFD 聯動出現的故障效果和與BFD 聯動故障效果進行了比較,從而驗證BFD 在VRRP 網絡出現故障時具備快速復原能力的應用效果。