VRRP的產生
如圖1所示,區域網中只有一個路由器RTA,所有PC使用RTA做為閘道器,此時如果RTA故障,所有PC將不能和外網通訊。
圖1 單閘道器場景
透過部署多閘道器的方式實現閘道器的備份,但多閘道器可能會出現一些問題:閘道器間IP地址衝突;主機會頻繁切換網路出口。
圖2 多閘道器場景
VRRP的出現很好的解決了這個問題,它在不改變組網的情況下,將多臺路由裝置組成一個虛擬路由器,透過配置虛擬路由器的IP地址為預設閘道器,實現預設閘道器的備份。
圖3 VRRP多閘道器場景邏輯圖
VRRP基本概念
如圖4所示,HostA雙歸到RouterA和RouterB。在RouterA和RouterB上配置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所示。
圖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(備狀態)。
圖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,搶佔方式為立即搶佔。
圖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與頻寬資源的消耗。
圖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,承擔轉發任務。
圖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裝置調整自身優先順序,觸發主備切換,確保流量正常轉發。
圖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協議來破除環路)。
圖11 VRRP心跳線示意圖