虛擬路由冗餘協議—VRRP

VRRP的產生

如圖1所示,區域網中只有一個路由器RTA,所有PC使用RTA做為閘道器,此時如果RTA故障,所有PC將不能和外網通訊。

虛擬路由冗餘協議—VRRP

圖1 單閘道器場景

透過部署多閘道器的方式實現閘道器的備份,但多閘道器可能會出現一些問題:閘道器間IP地址衝突;主機會頻繁切換網路出口。

虛擬路由冗餘協議—VRRP

圖2 多閘道器場景

VRRP的出現很好的解決了這個問題,它在不改變組網的情況下,將多臺路由裝置組成一個虛擬路由器,透過配置虛擬路由器的IP地址為預設閘道器,實現預設閘道器的備份。

虛擬路由冗餘協議—VRRP

圖3 VRRP多閘道器場景邏輯圖

VRRP基本概念

如圖4所示,HostA雙歸到RouterA和RouterB。在RouterA和RouterB上配置VRRP備份組,對外體現為一臺虛擬路由器,實現冗餘備份。

虛擬路由冗餘協議—VRRP

圖4 VRRP備份組示意圖

在圖4所示的網路中部署VRRP協議,下面結合該圖介紹VRRP協議的基本概念:

VRRP路由器

(VRRP Router):執行VRRP協議的裝置,如RouterA和RouterB。

虛擬路由器

(Virtual Router):又稱VRRP備份組,由一個Master裝置和多個Backup裝置組成,被當作一個共享區域網內主機的預設閘道器。如RouterA和RouterB共同組成了一個虛擬路由器。

Master路由器

(Virtual Router Master):承擔轉發報文任務的VRRP裝置,如RouterA。

Backup路由器

(Virtual Router Backup):一組沒有承擔轉發任務的VRRP裝置,當Master裝置出現故障時,它們將透過競選成為新的Master裝置,如RouterB。

vrid

:虛擬路由器的標識,如圖中RouterA和RouterB組成的虛擬路由器的vrid為1,需手工指定,範圍1-255。

虛擬IP地址

(Virtual IP Address):虛擬路由器的IP地址,一個虛擬路由器可以有一個或多個IP地址,由使用者配置。如RouterA和RouterB組成的虛擬路由器的虛擬IP地址為10。1。1。254/24。

IP地址擁有者

(IP Address Owner):如果一個VRRP裝置將真實的介面IP地址配置為虛擬路由器IP地址,則該裝置被稱為IP地址擁有者。如果IP地址擁有者是可用的,則它將一直成為Master。

虛擬MAC地址

(Virtual MAC Address):虛擬路由器根據vrid生成的MAC地址。一個虛擬路由器擁有一個虛擬MAC地址,

格式為:00-00-5E-00-01-{vrid}

。當虛擬路由器迴應ARP請求時,使用虛擬MAC地址,而不是介面的真實MAC地址。如RouterA和RouterB組成的虛擬路由器的vrid為1,因此這個VRRP備份組的MAC地址為00-00-5E-00-01-01。

VRRP協議報文

VRRP協議只有一種報文型別-VRRP通告(ADVERTISEMENT),只有Master才能傳送VRRP通告。VRRP協議報文封裝在IP報文中,在IP報文頭中,源地址為傳送報文介面的主IP地址(不是虛擬IP地址),目的地址是224。0。0。18,TTL是255,協議號是112。

目前,VRRP協議包括兩個版本:VRRPv2和VRRPv3。VRRPv2僅適用於IPv4網路,VRRPv3適用於IPv4和IPv6兩種網路。

VRRPv2的報文結構分別如圖5所示。

虛擬路由冗餘協議—VRRP

圖5 VRRPv2報文結構

各欄位的含義如下表所示:

報文欄位

含義

Version

VRRP協議版本號,取值為2。

Type

VRRP通告報文的型別,取值為1,表示Advertisement。

Virtual Rtr ID

(VRID)

虛擬路由器ID,取值範圍是1~255。

Priority

Master裝置在備份組中的優先順序,取值範圍是0~255。0表示裝置停止參與VRRP備份組,用來使Backup裝置儘快成為Master裝置,而不必等到計時器超時;255則保留給IP地址擁有者。預設值是100。

Count IP Addrs

/Count IPvX Addr

備份組中虛擬IPv4地址的個數。

Auth Type

VRRP報文的認證型別。協議中指定了3種類型:

0:Non-authentication,表示無認證。

1:Simple authentication,表示明文認證方式。

2:IP Authentication Header(MD5 authentication),表示MD5認證方式。

Adver Int

/Max Adver Int

VRRP通告報文的傳送時間間隔,單位是秒,預設值為1秒。

Checksum

16位校驗和,用於檢測VRRP報文中的資料破壞情況。

IP Address

/IPvX Address(es)

VRRP備份組的虛擬IPv4地址,所包含的地址數定義在Count IP Addrs欄位。

Authentication Data

VRRP報文的認證字。目前只有明文認證和MD5認證才用到該部分,對於其它認證方式,一律填0。

狀態機

如圖6 所示,VRRP協議狀態機有三種狀態:Initialize(初始狀態)、Master(活動狀態)、Backup(備狀態)。

虛擬路由冗餘協議—VRRP

圖6 VRRP狀態的轉換

狀態

說明

Initialize

該狀態為VRRP不可用狀態,在此狀態時裝置不會對VRRP報文做任何處理。

通常剛配置VRRP時或裝置檢測到故障時會進入Initialize狀態。

收到介面Up的訊息後,如果裝置的優先順序為255,則直接成為Master裝置;如果裝置的優先順序小於255,則會先切換至Backup狀態。

Master

當VRRP裝置處於Master狀態時,它將會做下列工作:

定時(Advertisement Interval)傳送VRRP通告報文。

以虛擬MAC地址響應對虛擬IP地址的ARP請求。

轉發目的MAC地址為虛擬MAC地址的IP報文。

如果收到比自己優先順序大的報文,立即成為Backup。

如果收到與自己優先順序相等的VRRP報文且本地介面IP地址小於對端介面IP,立即成為Backup。

當接收到介面的Shutdown事件時,轉為Initialize狀態。

Backup

當VRRP裝置處於Backup狀態時,它將會做下列工作:

接收Master傳送的VRRP通告報文,判斷Master的狀態是否正常。

如果收到比自己優先順序高的報文時,重置定時器。

如果收到優先順序和自己相同的報文,則重置定時器。

如果收到比自己優先順序小的報文時,預設立刻升主,如果配置了不搶佔,則重置定時器;如果配置了搶佔延遲,則重置定時器,待搶佔延遲到期再升主。

如果收到報文優先順序是0,立刻從Backup狀態轉為Master狀態。

對虛擬IP地址的ARP請求,不做響應。

收到目的IP地址為虛擬IP地址的IP報文時按照正常二層轉發流程進行處理。

Master_Down_Interval定時器:Backup裝置在該定時器超時後仍未收到通告報文,則會轉換為Master狀態。計算公式如下:

Master_Down_Interval=(3 * Advertisement_Interval) + Skew_time(偏移時間)

Skew_Time=(256–Priority)/256

當接收到介面的Shutdown訊息時,轉為Initialize狀態。

VRRP工作過程

VRRP的工作過程如下:

VRRP備份組中的裝置根據優先順序選舉出Master。Master裝置透過傳送免費ARP報文,將虛擬MAC地址通知給與它連線的裝置或者主機,從而承擔報文轉發任務。

Master裝置週期性向備份組內所有Backup裝置傳送VRRP通告報文,以公佈其配置資訊(優先順序等)和工作狀況。

如果Master裝置出現故障,VRRP備份組中的Backup裝置將根據優先順序重新選舉新的Master。

VRRP備份組狀態切換時,Master裝置由一臺裝置切換為另外一臺裝置,新的Master裝置會立即傳送攜帶虛擬路由器的虛擬MAC地址和虛擬IP地址資訊的免費ARP報文,重新整理與它連線的主機或裝置中的MAC表項,從而把使用者流量引到新的Master裝置上來,整個過程對使用者完全透明。

原Master裝置故障恢復時,若該裝置為IP地址擁有者(優先順序為255),將直接切換至Master狀態。若該裝置優先順序小於255,將首先切換至Backup狀態,且其優先順序恢復為故障前配置的優先順序。

下面以圖7 VRRP冗餘備份的基本過程為例進行簡要說明

SwitchA為Master裝置,優先順序設定為120,搶佔方式為延遲搶佔。

SwitchB為Backup裝置,優先順序為預設值100,搶佔方式為立即搶佔。

SwitchC為Backup裝置,優先順序設定為110,搶佔方式為立即搶佔。

虛擬路由冗餘協議—VRRP

圖7 VRRP冗餘備份示意圖

正常情況下,SwitchA為Master裝置並承擔業務轉發任務,SwitchB和SwitchC為Backup裝置且不承擔業務轉發。使用者側的上行流量路徑為:Switch1->SwitchA->Router。此時,SwitchA定期傳送VRRP報文通知SwitchB和SwitchC自己工作正常。

當SwitchA發生故障時,SwitchA上的VRRP會處於不可用狀態。由於SwitchC優先順序高於SwitchB,因此SwitchC變為Master裝置,並開始傳送VRRP報文和免費ARP報文,SwitchB繼續保持為Backup裝置。使用者側的上行流量路徑為:Switch1->SwitchC->Router。

當SwitchA故障恢復時,VRRP的優先順序為120,狀態變為Backup。此時SwitchC繼續定期傳送VRRP報文,當SwitchA收到VRRP報文後,會比較優先順序,發現自己的優先順序更高,等待搶佔延遲後搶佔為Master裝置,並開始傳送VRRP報文和免費ARP報文。使用者側的上行流量路徑恢復為:Switch1->SwitchA->Router。

管理VRRP

為了提高網路可靠性,通常部署主備雙歸屬。為了滿足不同的業務需要,裝置之間可以執行多個VRRP備份組。此時每個VRRP備份組都需要維護自己的狀態機,這樣裝置之間就會存在大量的VRRP協議報文。

如圖8所示,為了減少協議報文對頻寬的佔用及CPU資源的消耗,可以將其中一個VRRP備份組配置為管理VRRP備份組(mVRRP),其餘的業務VRRP備份組與管理VRRP備份組進行繫結。此時,管理VRRP負責傳送協議報文來協商裝置的主備狀態;業務VRRP不傳送協議報文,其主備狀態與管理VRRP的主備保持一致,以此減少協議報文對CPU與頻寬資源的消耗。

虛擬路由冗餘協議—VRRP

圖8 管理VRRP示意圖

管理VRRP備份組

管理VRRP備份組與普通VRRP備份組一樣,會透過VRRP協議報文來協商VRRP裝置的主備狀態。管理VRRP可以部署在網路中的以下位置:

管理VRRP與業務VRRP部署在同一側。此時管理VRRP備份組作為閘道器使用(如圖8中的mVRRP1),管理VRRP既負責協商裝置的主備狀態,也承擔業務流量。此時在配置管理VRRP之前必須先建立普通VRRP備份組並配置虛擬IP地址,該虛擬IP地址即為使用者設定的閘道器地址。

管理VRRP部署在SwitchA和SwitchB之間的直連鏈路上。此時管理VRRP備份組不作為閘道器使用時(如圖8中的mVRRP2),管理VRRP只負責協商裝置的主備狀態,不承擔業務流量。因此管理VRRP不需要具有虛擬IP地址,使用者可以直接在介面上建立管理VRRP備份組。該配置在一定程度上降低了使用者維護的複雜度。

業務VRRP備份組

普通VRRP備份組與管理VRRP備份組繫結後成為業務VRRP備份組(也叫成員VRRP備份組)。業務VRRP備份組不再發送VRRP協議報文,它的狀態由所在介面狀態及與其繫結的管理VRRP備份組的狀態共同決定。

VRRP與鏈路狀態聯動

VRRP冗餘備份功能有時需要額外的技術來完善其工作。例如,Master裝置到達某網路的鏈路突然斷掉時,VRRP無法感知故障進行切換,此時主機無法透過Master裝置遠端訪問該網路。此時,可以透過VRRP監視鏈路狀態,解決這個問題。

VRRP直接監視連線上行鏈路的介面狀態

當連線上行鏈路的介面Down時,Master裝置透過降低自身的優先順序,使得Backup裝置搶佔成為Master,承擔轉發任務。

虛擬路由冗餘協議—VRRP

圖9 VRRP監視上行介面的典型組網圖

如圖9所示,SwitchA和SwitchB之間配置VRRP備份組,其中SwitchA為Master裝置,SwitchB為Backup裝置,SwitchA和SwitchB皆工作在搶佔方式下。在SwitchA上配置VRRP監視上行介面Interface1,當Interface1故障時,SwitchA降低自身優先順序,透過報文協商,SwitchB搶佔成為Master,確保使用者流量正常轉發。

VRRP利用BFD/NQA/路由技術監視上行鏈路連線的遠端主機或者網路狀況

BFD/NQA/路由用於檢測Master裝置上行鏈路的連通狀況,當Master裝置的上行鏈路發生故障時,BFD/NQA/路由可以檢測故障並通知Master裝置調整自身優先順序,觸發主備切換,確保流量正常轉發。

虛擬路由冗餘協議—VRRP

圖10 VRRP與BFD/NQA/路由聯動監視上行鏈路典型組網圖

如圖10所示,SwitchA和SwitchB之間配置VRRP備份組,其中SwitchA為Master裝置,SwitchB為Backup裝置,SwitchA和SwitchB皆工作在搶佔方式下。配置BFD/NQA/路由監測SwitchA到SwitchE之間的鏈路,並在SwitchA上配置VRRP與BFD/NQA/路由聯動。當BFD/NQA/路由檢測到SwitchA到SwitchE之間的鏈路故障時,通知SwitchA降低自身優先順序,透過VRRP報文協商,SwitchB搶佔成為Master,確保使用者流量正常轉發。

VRRP心跳線

如圖11所示,在VRRP+STP場景中,SwitchA和SwitchB上配置VRRP備份組。若與使用者相連的Switch1不能轉發VRRP協議報文(如配置了未知組播丟棄),或者為了防止VRRP協議報文(心跳報文)所經過的鏈路不通或不穩定,可以在SwitchA和SwitchB之間部署一條心跳線,用於傳遞VRRP協議報文。

由於配置了心跳線之後,需要將Interface1和Interface2加入與VRRP備份組相對應的VLAN(例如,VRRP備份組配置在VLANIF100介面下,則需要配置Interface1和Interface2加入VLAN100),SwitchA、SwitchB和Switch1之間會存在環路,因此還需要配置破環協議來破除環路(例如,可以配置STP協議來破除環路)。

虛擬路由冗餘協議—VRRP

圖11 VRRP心跳線示意圖