虛擬路由冗餘協議VRRP——雙機熱備份基礎

一、概述

產生背景

隨着Internet的發展,人們對網絡可靠性的要求越來越高。特別是對於終端用戶來說,能夠實時與網絡其他部分保持聯繫是非常重要的。一般來說,主機通過設置默認網關來與外部網絡聯繫。

主機將發送給外部網絡的報文發送給網關,由網關傳遞給外部網絡,從而實現主機與外部網絡的通信。正常的情況下,主機可以完全信賴網關的工作,但是當網關壞掉時,主機與外部的通信就會中斷。要解決網絡中斷的問題,可以依靠再添加網關的方式解決,不過由於大多數主機只允許配置一個默認網關,此時需要網絡管理員進行手工干預網絡配置,才能使得主機使用新的網關進行通信;有時,人們運用動態路由協議的方法來解決網絡出現故障這一問題,如運行RIP、OSPF等,或者使用IRDP。然而,這些協議由於配置過於複雜,或者安全性能不好等原因都不能滿足用戶的需求。

爲了更好地解決網絡中斷的問題,網絡開發者提出了VRRP,它既不需要改變組網情況,也不需要在主機上做任何配置,只需要在相關路由器上配置極少的幾條命令,就能實現下一跳網關的備份,並且不會給主機帶來任何負擔。和其他方法比較起來,VRRP更加能夠滿足用戶的需求。

VRRP簡介

VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)是一種容錯協議。通常,一個網絡內的所有主機都設置一條缺省路由。它可以把一個虛擬路由器的責任動態分配到局域網上的 VRRP 路由器中的一臺。控制虛擬路由器 IP 地址的 VRRP 路由器稱爲主路由器,它負責轉發數據包到這些虛擬 IP 地址。一旦主路由器不可用,這種選擇過程就提供了動態的故障轉移機制,這就允許虛擬路由器的 IP 地址可以作爲終端主機的默認第一跳路由器。使用 VRRP 的好處是有更高的默認路徑的可用性而無需在每個終端主機上配置動態路由或路由發現協議。 VRRP 包封裝在 IP 包中發送(底層基於IP協議),支持各種上層協議。

相關概念

  • VRID:虛擬路由器的標識。有相同VRID的一組路由器構成一個虛擬路由器。

  • 虛擬路由器:由一個Master路由器和多個Backup路由器組成。主機將虛擬路由器當作默認網關。

  • Master(主)路由器:虛擬路由器中承擔報文轉發任務的路由器。

  • Backup(備份)路由器:Master路由器出現故障時,能夠代替Master路由器工作的路由器。

  • 虛擬IP地址:虛擬路由器的IP地址。一個虛擬路由器可以擁有一個或多個IP地址。

  • IP地址擁有者:接口IP地址與虛擬IP地址相同的路由器被稱爲IP地址擁有者。

  • 虛擬MAC地址:一個虛擬路由器擁有一個虛擬MAC地址。虛擬MAC地址的格式爲00-00-5E-00-01-{VRID}。通常情況下,虛擬路由器迴應ARP請求使用的是虛擬MAC地址,只有虛擬路由器做特殊配置的時候,纔回應接口的真實MAC地址。

  • 優先級:VRRP根據優先級來確定虛擬路由器中每臺路由器的地位。

  • 非搶佔方式:如果Backup路由器工作在非搶佔方式下,則只要Master路由器沒有出現故障,Backup路由器即使隨後被配置了更高的優先級也不會成爲Master路由器。

  • 搶佔方式:如果Backup路由器工作在搶佔方式下,當它收到VRRP報文後,會將自己的優先級與通告報文中的優先級進行比較。如果自己的優先級比當前的Master路由器的優先級高,就會主動搶佔成爲Master路由器;否則,將保持Backup狀態。

二、VRRP的報文結構

VRRP協議只有一種報文,即VRRP報文(Advertisement通告報文)。VRRP報文用來將Master設備的優先級和狀態通告給同一虛擬路由器的所有VRRP路由器。

VRRP報文封裝在IP報文中,發送到分配給VRRP的IPv4組播地址。在IP報文頭中,源地址爲發送報文的主接口地址(不是虛擬地址或輔助地址),目的地址是224.0.0.18,TTL是255,協議號是112。VRRP報文的結構如圖1所示。

VRRP報文被封裝在IP包中。使用專門的VRRP IPv4組播地址(協議號112,組播地址 224.0.0.18

IANA分配給VRRP的IP協議號爲112(十進制)。

IANA給VRRP分配的IP組播地址爲224.0.0.18。這是一個本地範圍的多播地址。不論TTL的值是多少,路由器都被禁止轉發以此地址爲目標地址的報文。

VRRP報文的IP頭中,TTL必須爲255。當VRRP路由器收到TTL不等於255的VRRP協議報文後,必須丟棄

在這裏插入圖片描述

  • Version:4比特,協議版本號,現在的VRRP爲版本2。

  • Type:4比特,定義了VRRP報文的類型。本版本的協議僅定義了一個報文類型,字段值爲1:ADVERTISEMENT。帶有未知類型的報文必須被丟棄。

  • Virtual Rtr ID:8比特,虛擬路由器標識(VRID)字段標識了此報文所報告狀態的虛擬路由器。可配置的範圍是1~255。沒有缺省值。

  • Priority:8比特,Priority字段申明瞭發送此報文的VRRP路由器的優先級。值越高優先級越高。該字段爲8位無符號整型。

    如果VRRP路由器是虛擬路由器地址的IP地址所有者,那麼其優先級自動變爲最大值255。起備用作用的VRRP路由器的優先級必須在1–254之間,0表示設備停止參與VRRP,用來使備份路由器儘快成爲主路由器,而不必等到計時器超時。缺省的VRRP路由器優先級爲100。

  • Count IP Addrs:8比特,在此VRRP廣播通告中包含的IP地址的數量。

  • Auth Type:8比特,認證類型字段用於標識要用到的認證方法。在一個虛擬路由器組內認證類型是唯一的。認證類型字段是一個8位無符號整型。如果報文攜帶未知的認證類型或者該認證類型和本地配置的認證方法不匹配,那麼該報文必須被丟棄。

    目前定義的認證方法有:

    • 0 ——No Authentication 不認證

      該認證類型表明VRRP協議報文的交換不需要認證。在發送VRRP協議報文時,Authentication Data 字段將被置爲0;而在接收協議報文時,Authentication Data 字段被忽略。

    • 1 - Reserved 保留

    • 2 - Reserved 保留

    解釋:
    VRRP的早期版本 定義了一些認證類型[RFC2338]。這些認證類型的定義已經在本文檔中被刪除,因爲根據實際經驗表明,這些認證方法並不能提供任何真正的安全保障,並且僅會導致在一個VRRP組內出現多個Master的情況。

  • Adver Int:8比特,VRRP通告間隔時間,單位爲秒。缺省爲1秒。這個字段主要用於錯誤配置路由器時的故障定位和解決。

  • Checksum:16比特,校驗和字段用於檢測VRRP消息的數據是否出錯。

    校驗和是從version字段開始的整個VRRP消息的1的16位補碼和。(RFC1071 描述了校驗和的計算細節)。

  • IP Address:32比特,IP地址字段爲虛擬路由器的一個或者多個IP地址。IP地址的數量在"Count IP Addrs"字段中說明。IP地址字段用於錯誤配置路由器時的故障定位和解決。

  • Authentication Data:32比特,認證字符串僅僅用於對RFC2338的向後兼容。在發送VRRP報文時該字段應該被置爲0,而在接收VRRP報文時該字段應該被忽略。

三、VRRP的狀態機

VRRP協議中定義了三種狀態機:初始狀態(Initialize)、活動狀態(Master)、備份狀態(Backup)。其中,只有處於活動狀態的設備纔可以轉發那些發送到虛擬IP地址的報文。

在這裏插入圖片描述

  • Initialize

Initialize狀態是VRRP的初始狀態,在接口配置VRRP後,如果該接口是Down的(例如接口被關閉,或者沒有連接任何的線纜),那麼該接口的VRRP狀態將會停滯在Initialize。

當接口Up之後,到Startup的消息,如果其VRRP優先級爲255(這種情況發生在該接口的實際IP地址是VRRP虛擬IP地址的情況),那麼接口的VRRP狀態將由Initialize切換到Master,而如果接口的VRRP優先級不是255,則進入Backup狀態。

  • Master,當路由器處於Master狀態時,它將會做下列工作:

    • 週期性的發送VRRP報文,時間間隔缺省值爲1s。

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

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

    • 如果它是這個虛擬IP地址的擁有者,則接收目的IP地址爲這個虛擬IP地址的IP報文。否則,丟棄這個IP報文。

    • 如果收到比自己優先級大的報文則轉爲Backup狀態(VRRP默認開啓搶佔模式)。

    • 如果收到優先級和自己相同的報文,並且發送端的主IP地址比自己的主IP地址大,則轉爲Backup狀態。

    • 當接收到接口的Shutdown事件時,轉爲Initialize。

  • Backup,當路由器處於Backup狀態時,它將會做下列工作:

    • 接收Master發送的VRRP報文,判斷Master的狀態是否正常。

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

    • 丟棄目的MAC地址爲虛擬MAC地址的IP報文。

    • 丟棄目的IP地址爲虛擬IP地址的IP報文。

    • Backup狀態下如果收到比自己優先級小的報文時,丟棄報文,不重置定時器;如果收到優先級和自己相同的報文,則重置定時器,不進一步比較IP地址。

    • 當Backup接收到MASTER_DOWN_TIMER定時器超時的事件時,纔會轉爲Master。

    • 當接收到接口的Shutdown事件時,轉爲Initialize。

四、VRRP中Master的選舉和工作過程

Master路由器的選舉

在一個VRRP組中,正常情況下只能存在一臺Master路由器。VRRP根據優先級和IP地址來決定哪臺路由器充當Master。優先級的範圍時0-255,優先級越大越優,則路由器就越有可能成爲Master。其中0和255是兩個特殊的優先級,不能被直接配置。

  • 優先級爲255:當路由器的接口IP地址與VRRP虛擬IP地址相同時,它的優先級將自動會變成最大值255,此時該路由器被稱爲IP地址的擁有者(IP Address Owner)。

  • 優先級爲0:它出現在Master路由器主動放棄Master角色時,例如當接口的VRRP配置被手工刪除時,該Master路由器會立即發送一個優先級爲0的VRRP報文,用來通知網絡中的Backup路由器。

當一個激活了VRRP的接口Up之後,如果接口的VRRP優先級爲255,那麼其VRRP狀態將直接從Initialize(初始狀態)切換到Master(主狀態),而如果接口的VRRP優先級不爲255,那麼首先切換到Backup(備份狀態),然後再看競爭結果決定是否切換到Master。

如果在同一個廣播域的同一個VRRP組內出現兩臺Master路由器,那麼它們將比較自己與對方的優先級,優先級的值更大的設備勝出,繼續保持Master狀態,而競爭失敗的路由器則切換到Backup狀態。如果這兩臺Master路由器的優先級相等,那麼接口IP地址更大的路由器接口將會保持Master狀態,而另一臺設備則切換到Backup狀態。當然,一個網絡在穩定運行時,同一個VRRP組內不應該同時出現兩臺Master路由器。

處於Master狀態的路由器會週期性的發送VRRP報文,並在報文中描述自己的優先級,IP地址等等信息。同一個廣播域中,同一個VRRP組的Backup路由器會偵聽這些報文。如果此時網絡中新出現一臺Backup路由器(其優先級高於當前的Master路由器),激活了搶佔功能,那麼它會忽略收到VRRP報文,並且切換到Master偵聽,同時發送自己的VRRP報文並在報文中描述其優先級等信息,而此前的Master路由器在收到了該VRRP報文後,則切換到Backup狀態。

工作過程

正常工作

路由器使能VRRP功能後,會根據優先級確定自己在備份組中的角色。優先級高的路由器成爲Master路由器,優先級低的成爲Backup路由器。Master路由器定期發送VRRP通告報文,通知備份組內的其他路由器自己工作正常;Backup路由器則啓動定時器等待通告報文的到來。

  • 在搶佔方式下,當Backup路由器收到VRRP通告報文後,會將自己的優先級與通告報文中的優先級進行比較。如果大於通告報文中的優先級,則成爲Master路由器;否則將保持Backup狀態。

  • 在非搶佔方式下,只要Master路由器沒有出現故障,備份組中的路由器始終保持Master或Backup狀態,Backup路由器即使隨後被配置了更高的優先級也不會成爲Master路由器。

如果Backup路由器的定時器超時後仍未收到Master路由器發送來的VRRP通告報文,則認爲Master路由器已經無法正常工作,此時Backup路由器會認爲自己是Master路由器,並對外發送VRRP通告報文。備份組內的路由器根據優先級選舉出Master路由器,承擔報文的轉發功能。

VRRP的故障切換

Master路由器週期性地發送VRRP報文,在虛擬路由器中公佈其配置信息(優先級等)和工作狀況。Backup路由器通過接收到VRRP報文的情況來判斷Master路由器是否工作正常。

  • Master路由器主動放棄Master地位(如Master路由器退出虛擬路由器)時,會發送優先級爲0的VRRP報文,致使Backup路由器快速切換變成Master路由器。這個切換的時間稱爲Skew time(傾斜時間),計算方式爲:(256-Backup路由器的優先級)/256,單位爲秒(備份路由器優先級越高,時間越短)。

  • 當Master路由器發生網絡故障而不能發送VRRP報文的時候,Backup路由器並不能立即知道其工作狀況。Backup路由器等待一段時間之後,如果還沒有接收到VRRP報文,那麼會認爲Master路由器無法正常工作,而把自己升級爲Master路由器,週期性發送VRRP報文。Backup路由器默認等待的時間稱爲Master_Down_Interval,取值爲:(3×VRRP報文的發送時間間隔)+Skew time,單位爲秒。如果此時多個Backup路由器競爭Master路由器的位置,將通過優先級來選舉Master路由器。

在性能不夠穩定的網絡中,Backup路由器可能因爲網絡堵塞而在Master_Down_Interval期間沒有收到Master路由器的報文,而主動搶佔爲Master位置,如果此時原Master路由器的報文又到達了,就會出現虛擬路由器的成員頻繁的進行Master搶佔現象。爲了緩解這種現象的發生,特制定了延遲等待定時器。它可以使得Backup路由器在等待了Master_Down_Interval後,再等待延遲等待時間。如在此期間仍然沒有收到VRRP報文,則此Backup路由器纔會切換爲Master路由器,對外發送VRRP報文。

VRRP認證方式

VRRP提供了三種認證方式:

  • 無認證:不進行任何VRRP報文的合法性認證,不提供安全性保障。

  • 簡單字符認證:在一個有可能受到安全威脅的網絡中,可以將認證方式設置爲簡單字符認證。發送VRRP報文的路由器將認證字填入到VRRP報文中,而收到VRRP報文的路由器會將收到的VRRP報文中的認證字和本地配置的認證字進行比較。如果認證字相同,則認爲接收到的報文是合法的VRRP報文;否則認爲接收到的報文是一個非法報文。

  • MD5認證:在一個非常不安全的網絡中,可以將認證方式設置爲MD5認證。發送VRRP報文的路由器利用認證字和MD5算法對VRRP報文進行加密,加密後的報文保存在AuthenticationHeader(認證頭)中。收到VRRP報文的路由器會利用認證字解密報文,檢查該報文的合法性。

五、VRRP提供的功能

主備備份

這是VRRP提供IP地址備份功能的基本方式。主備備份方式需要建立一個虛擬路由器,該虛擬路由器包括一個Master和若干Backup設備。

  • 正常情況下,業務全部由Master承擔。
  • Master出現故障時,Backup設備接替工作。

負載分擔

現在允許一臺路由器爲多個作備份。通過多虛擬路由器設置可以實現負載分擔。

負載分擔方式是指多臺路由器同時承擔業務,因此需要建立兩個或更多的備份組。

負載分擔方式具有以下特點。

- 每個備份組都包括一個Master設備和若干Backup設備。
  • 各備份組的Master可以不同。

  • 同一臺路由器可以加入多個備份組,在不同備份組中有不同的優先級。
    在這裏插入圖片描述

如圖所示,配置兩個備份組:組1和組2:

  • RouterA在備份組1中作爲Master,在備份組2中作爲Backup;

  • RouterB在備份組1和2中都作爲Backup;

  • RouterC在備份組2中作爲Master,在備份組1中作爲Backup。

  • 一部分主機使用備份組1作網關,另一部分主機使用備份組2作爲網關。

這樣,以達到分擔數據流,而又相互備份的目的。

監視功能

在這裏插入圖片描述

監視上行鏈路

VRRP網絡傳輸功能有時需要額外的技術來完善其工作。例如,Master路由器到達某網絡的上行鏈路突然斷掉時,主機無法通過此Master路由器遠程訪問該網絡。此時,可以通過監視指定接口上行鏈路功能,解決這個問題。當Master路由器發現上行鏈路出現故障後,主動降低自己的優先級(使Master路由器的優先級低於Backup路由器),並立即發送VRRP報文。Backup路由器接收到優先級比自己低的VRRP報文後,等待Skew_Time切換爲新的Master路由器。從而,使得能夠到達此網絡的Backup路由器充當VRRP新的Master路由器,協助主機完成網絡通訊。

  • VRRP可以直接監視連接上行鏈路的接口狀態。當連接上行鏈路的接口down時,將Master路由器降低指定的優先級。VRRP優先級最低可以降低到1。

  • VRRP可以利用NQA技術(Network Quality Analyzer網絡質量分析,是一種實時的網絡性能探測和統計技術,可以對響應時間、網絡抖動、丟包率等網絡信息進行統計。)監視上行鏈路連接的遠端主機或者網絡狀況。例如,Master設備上啓動NQA的ICMP-echo探測功能,探測遠端主機的可達性。當ICMP-echo探測失敗時,它可以通知本設備探測結果,達到降低VRRP優先級的目的。

  • VRRP也可以利用BFD技術(Bidirectional Forwarding Detection雙向轉發檢測,它是一個用於檢測兩個轉發點之間故障的網絡協議,可以提供毫秒級的檢測,可以實現鏈路的快速檢測,BFD通過與上層路由協議聯動,可以實現路由的快速收斂,確保業務的永續性。)監視上行鏈路連接的遠端主機或者網絡狀況。由於BFD的精度可以到達10ms,通過BFD能夠快速檢測到鏈路狀態的變化,達到快速搶佔的目的。例如,可以在Master路由器上使用BFD技術監視上行設備的物理狀態,在上行設備壞掉之後,快速檢測到該變化,並降低Master路由器的優先級,致使Backup路由器等待Skew time後,搶佔成爲新的Master路由器。

Backup監視Master工作狀態

Backup路由器在Master路由器壞掉之後,正常情況下需要等待Master_Down_Interval才能切換爲新的Master的位置,這段時間內主機將無法正常通信,因爲此時沒有Master設備替它轉發報文。爲了解決這個網絡故障,Backup設備提供了一個監聽Master工作狀態的功能,使得Master路由器壞掉之後Backup能夠立即切換成爲新的Master路由器,維持網絡通訊。

Backup路由器監視Master路由器採用的是具有快速檢測功能的BFD技術。在Backup設備上使用該技術監視Master路由器的狀態,一旦Master路由器發生故障,Backup就可以自動切換成爲新的Master路由器,將切換時間縮短到毫秒級。

對於以下情況,BFD都能夠將檢測到的故障通知接口板,從而加快VRRP主備倒換的速度。

  • 備份組包含的接口出現故障。

  • Master和Backup不直接相連。

  • Master和Backup直接相連,但在中間鏈路上存在傳輸設備。

BFD對Backup和Master之間的實際地址通信情況進行檢測,如果通信不正常,Backup就認爲Master已經不可用,升級成Master。在以下兩種情況下Backup轉換爲Master:

  • 當兩臺路由器之間的直連全部斷開時,Backup主動升級成Master,承載上行流量。

  • 當Master重新啓動、或Master與交換機之間的鏈路斷開、或與Master相連的交換機重新啓動時,Backup主動升級成Master,承載上行流量。

VRRP快速切換的環境要求:

  • 在Backup上,BFD Session檢測的接口必須和Master設備相連。

  • 在Master不可用時,Backup的優先級增加並大於原來Master的優先級,促使自己快速切換爲Master。

虛擬IP地址Ping開關

RFC3768並沒有規定虛擬IP地址應不應該Ping通。不能Ping通虛擬IP地址,會給監控虛擬路由器的工作情況帶來一定的麻煩,能夠Ping通虛擬IP地址可以比較方便的監控虛擬路由器的工作情況,但是帶來可能遭到ICMP攻擊的隱患。控制Ping通虛擬IP地址的開關命令,用戶可以選擇是否打開。

PS:
ICMP Flood(即ICMP 洪水攻擊):當 ICMP ping 產生的大量回應請求超出了系統的最大限度,以至於系統耗費所有資源來進行響應直至再也無法處理有效的網絡信息流,這就是 ICMP 洪水攻擊。簡單說攻擊者向一個子網的廣播地址發送多個ICMP Echo請求數據包。並將源地址僞裝成想要攻擊的目標主機的地址。然後該子網上的所有主機均會對此ICMP Echo請求包作出答覆,向被攻擊的目標主機發送數據包,使此主機受到攻擊,導致網絡阻塞。ICMP Flood攻擊主要的目的使網絡癱瘓,這也是最常見和最常用的網絡攻擊行爲之一。

VGMP和mVRRP將在其他博文中詳解

HSRP和VRRP的區別:

  • 名字不同。HSRP裏是Active,Standby。VRRP是Master,Backup。且HSRP只能有一個Active,一個Standby,其餘都是監聽狀態。VRRP只能有一個Master,其餘都是Backup。

  • HSRP的虛擬路由器的IP地址不能和真實路由器的IP地址衝突,但VRRP可以。VRRP中可以將虛擬路由器的IP地址設成真實路由器的IP地址。因爲對虛擬路由器來說IP並不重要,最終轉發數據是基於虛擬路由器的Mac地址來轉發的

  • HSRP的Hello時間默認是3s,Hold時間是10s。VRRP中Hello包收斂更快是1s,Hold時間是3s

  • HSRP組播地址是224.0.0.2。VRRP組播地址是224.0.0.18

  • HSRP默認是關閉搶佔的。VRRP默認是開啓搶佔的。

  • HSRP可以直接track端口。VRRP不可以直接track端口,但可以track對象。

  • HSRP的Active和Standby都發Hello包。VRRP只有Master發Hello包。

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