VRRP

VRRP(Virtual Router Redundancy Protocol)即和可靠,它是一種容錯協議,它保證當用戶設備的下一跳路由器失效時,可以及時的由另一臺路由器來替代,從而保持通訊的連續和可靠。跟TCP的協議號爲6,UDP的協議號爲17,ICMP的協議號爲1一樣,VRRP協議一樣需要協議號,爲112。

VRRP通過交互報文的方法將多臺路由器模擬成一臺虛擬路由器(該虛擬路由器可以有多個虛擬IP地址),網絡上的主機與虛擬路由器進行通訊。一旦VRRP組中的某臺物理路由器失效,其它路由器自動接替工作。

1、VRRP相關概念
(1) VRRP路由器
運行VRRP協議的路由器
(2) VRRP組(VRID)
由多個VRRP路由器組成,屬於同一VRRP組的VRRP路由器相互交換信息
(3) 虛擬路由器
對於每一個VRRP組,抽象出來的一個邏輯路由器,該路由器充當網絡用戶的網關(下一跳)
(4) 虛擬IP地址、MAC地址
用於標識虛擬的路由器,該地址實際上就是用戶的默認網關
(5) Master、Backup路由器
Master路由器就是在VRRP組實際轉發數據包的路由器,Backup路由器就是在VRRP組中處於監聽狀態的路由器。一旦Master路由器出現故障,Backup路由器就開始接替工作

2、VRRP的3種狀態
(1) 初始化狀態
路由器剛剛啓動時進入此狀態,通過VRRP報文交換數據後進入其它狀態
(2) 活動狀態(Master)
VRRP組中的路由器通過VRRP報文交換後確定的當前轉發數據包的一種狀態
(3) 備份狀態(Backup)
VRRP組中的路由器通過VRRP報文交換後確定處於監聽的一種狀態

3、VRRP報文

VRRP報文是一種多播報文,由Master路由器發出來通告它的存在,使用VRRP報文可以檢測虛擬路由器的各種參數,用於主路由器的選擇。VRRP報文是封裝在IP報文中,通過組播的方式傳送。也就是說VRRP協議跟ICMP協議一樣,工作在第三層(路由層),它是不具有端口的說法的。
(1) Version:VRRP協議版本號
(2) Type:指明VRRP報文類型,RFC3768只定義了一種VRRP報文,即VRRP通告報文,所以該字段總爲1(若收到的VPPR通告報文的該字段的類型爲非1則會被丟棄)
(3) Virtual Rtr ID:即上面講的大VRID。一個VRID唯一標識了一個虛擬路由器,取值範圍爲[1,255]。(所以一臺路由器的接口最多可以運行255個VRRP組)
(4) Priority:優先級。虛擬路由器中用該字段來決定Master路由器和Backup路由器,值越大表明優先級越高,取值爲[1,255],缺省值爲100。假設虛擬路由器的IP地址跟VRRP組中某臺路由器IP地址相同,那麼該路由器的發出的VRRP報文的該字段總爲255,即使人爲指定爲其他值也不受影響。若此字段爲0表示這是Master路由器出現故障發送的VRRP通告報文,當Backup路由器收到此通告報文後,會等待Skew time時間,然後將自己切換爲Master路由器。
(5) Count IP Addrs:VRRP通告報文中包含的IP數目,即被一個VRRP虛擬路由器所分配的IP地址的數量。
(6) Auth Type:認證類型字段,一個虛擬路由器只能使用一種認證類型,若Backup路由器收到的通告報文段中認證類型字段是未知或者和本地配置不匹配,則將該數據包丟棄。
認證類型字段的定義:

0表示無認證
1表示保留,向前一個版本的RFC2338提供兼容性
2表示保留,向前一個版本的RFC2338提供兼容性

(7) Adver Int:Mater路由器向外發送VRRP通告報文的時間間隔,以秒爲單位,取值範圍是[1,255],缺省爲1
(8)Checksum:整個VRRP報文的校驗和
(9) IP Address:VRRP虛擬路由器的虛擬IP地址(可配置多個)
(10) Authentication Data:爲了向RFC2338兼容,在實際的封裝時,全置爲0.,接收方會忽略此字段

4、工作原理

如圖,三臺物理路由設備使用VRRP通告報文發現對方,並生成虛擬路由器6.6.6.6,比較各自的優先級和IP地址,它們只有一臺成爲主機路由,另外兩臺爲備用路由器。用戶的網關爲虛擬出來的路由器,在VRRP組中主機路由器出現故障後,根據優先級,主機路由由到另外兩臺物理路由設備之一。
下面結合VRRP路由器的三種狀態機分析VRRP組的工作流程:
(1) 初始狀態(Initialize)
配置好VRRP後,VRRP等待一個開始事件,即爲初始狀態。初始狀態會依次執行:
a. 若本地優先級爲255,即自身是IP擁有者路由器,它爲主路由器,那麼:

發送VRRP通告報文
廣播免費ARP請求報文,內部封裝的請求IP地址是虛擬IP地址(可以多個,對應發多個免費ARP請求報文),普通ARP請求報文的MAC地址用於存放目標機器返回的MAC地址,因爲是免費ARP報文,所以該字段是本地的MAC地址。(免費ARP請求的目的是:①廣播,告訴整個廣播域,目前這個IP對應的MAC地址是什麼;②查看廣播域內有沒有別的主機使用自己的IP,如果有,則提示IP衝突)
3)啓動Advertisement定時器,產生Advertisement_Interval時間間隔,本路由器按照該參數定義的時間間隔來發送VRRP通告報文,默認爲1S。
4)本地VRRP進程將自身切換爲Master路由器。
b. 若本地優先級不是255,那麼:
啓動Master Down定時器產生Master_Down_Timer時間間隔(計時器超時Backup路由器會宣佈主路由器宕機)
2)本地VRRP進程將自己切換爲Backup路由器
(2) 備份路由器狀態(Backup)
備份路由器是爲了監控Master路由器的狀態:
1)不響應對虛擬IP地址的ARP免費請求報文、丟棄幀頭目的MAC地址是虛擬Mac地址的幀、丟棄IP頭中目的IP地址是虛擬IP地址的包
2)在Master_Down_Timer時間間隔內若接收到Master路由器發出的VRRP通告報文:
① 該VRRP通告報文的priority字段爲0時證明主路由器出現故障,那麼本Backup路由器將Master_Down_Timer置爲Skew_Time,Skew_Time後將自己置爲Master操作;
② 該VRRP通告報文不爲0且大於或等於本地優先級,那麼本地重置Master_Down_Timer
③ 該VRRP通告報文不爲0且小於本地優先級,若開啓搶佔模式,那麼該Backup路由器等待指定的搶佔延遲時間後將自己切換爲Master路由器,執行Master路由器的所有動作;若沒有開啓搶佔模式,本地路由器保持Backup狀態。
若超時沒有接收Master路由器發出的VRRP通告報文證明主機路由宕機,那麼需要將本地切換爲Master路由器等操作。
3)VRRP進程收到了一個shutdown事件,取消Adver_Timer計時器,切換爲初始狀態

(3) 主路由器狀態狀態(Master)
當路由器處於Master狀態時,進行:

響應對虛擬IP地址的ARP請求
轉發目的MAC地址是虛擬MAC地址的數據幀
拒絕目的IP地址是虛擬IP地址的數據包,若Master路由器是虛擬IP地址擁有者則除外
若Adver_Timer計時器超時或收到了一個VRRP報文且其優先級爲0,發送一個VRRP通告報文和重置Adver_Timer計時器
開啓搶佔模式後,如果收到了一個VRRP報文且其優先級高於本地優先級,或者收到的VRRP報文優先級等於本地優先級但是主IP地址高於本地的主IP地址,取消Adver_Timer計時器和 設置Master_Down_Timer計時器爲Master_Down_Interval,切換爲Backup狀態
VRRP進程收到了一個shutdown事件,取消Adver_Timer計時器,發送一個優先級字段置零的VRRP通告報文,切換爲初始狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章