VRRP協議簡介

VRRP協議是什麼網絡

     VRRP是一種容錯協議,它經過把幾臺路由設備聯合組成一臺虛擬的路由設備,並經過必定的機制來保證當主機的下一跳設備出現故障時,能夠及時將業務切換到其它設備,從而保持通信的連續性和可靠性。ide

     VRRP將局域網內的一組路由器劃分在一塊兒,稱爲一個備份組。備份組由一個Master路由器和多個Backup路由器組成,功能上至關於一臺虛擬路由器。局域網內的主機只須要知道這個虛擬路由器的IP地址,並不需知道具體某臺設備的IP地址,將網絡內主機的缺省網關設置爲該虛擬路由器的IP地址,主機就能夠利用該虛擬網關與外部網絡進行通訊。性能

     VRRP將該虛擬路由器動態關聯到承擔傳輸業務的物理路由器上,當該物理路由器出現故障時,再次選擇新路由器來接替業務傳輸工做,整個過程對用戶徹底透明,實現了內部網絡和外部網絡不間斷通訊。spa

image.png


VRRP基本概念接口

概念進程

解釋事件

VRRP路由器(VRRP Router) 運行VRRP的設備,它可能屬於一個或多個虛擬路由器。
虛擬路由器(Virtual Router) 由VRRP管理的抽象設備,又稱爲VRRP備份組,被看成一個共享局域網內主機的缺省網關。 
它包括了一個虛擬路由器標識符和一組虛擬IP地址。
虛擬IP地址(Virtual IP Address) 虛擬路由器的IP地址,一個虛擬路由器能夠有一個或多個IP地址,由用戶配置。
IP地址擁有者(IP Address Owner) 若是一個VRRP路由器將虛擬路由器的IP地址做爲真實的接口地址,則該設備是IP地址擁有者。 
當這臺設備正常工做時,它會響應目的地址是虛擬IP地址的報文,如ping、TCP鏈接等。
虛擬MAC地址 是虛擬路由器根據虛擬路由器ID生成的MAC地址。 
一個虛擬路由器擁有一個虛擬MAC地址,格式爲:00-00-5E-00-01-{VRID}。 
當虛擬路由器迴應ARP請求時,使用虛擬MAC地址,而不是接口的真實MAC地址。
主IP地址(Primary IP Address) 從接口的真實IP地址中選出來的一個主用IP地址,一般選擇配置的第一個IP地址。 
VRRP廣播報文使用主IP地址做爲IP報文的源地址。
Master路由器(Virtual Router Master) 是承擔轉發報文或者應答ARP請求的VRRP路由器,轉發報文都是發送到虛擬IP地址的。 
若是IP地址擁有者是可用的,一般它將成爲Master。
Backup路由器(Virtual Router Backup) 一組沒有承擔轉發任務的VRRP路由器,當Master設備出現故障時,它們將經過競選成爲新的Master。
搶佔模式

在搶佔模式下,若是Backup的優先級比當前Master的優先級高,將主動將本身升級成Master。內存


VRRP報文路由

VRRP控制報文只有一種:VRRP通告(advertisement)。它使用IP多播數據包進行封裝,組地址爲224.0.0.18,發佈範圍只限於同一局域網內。這保證了VRID在不一樣網絡中能夠重複使用。
由於這份筆記的主要目的是理解keepalived的原理,因此只介紹部分相關字段。it

Virtual Rtr ID(VRID):虛擬路由器ID,取值範圍是1~255。

Priority:發送報文的VRRP路由器在虛擬路由器中的優先級。取值範圍是0~255,其中可用的範圍是1~254。0表示設備中止參與VRRP,用來使備份路由器儘快成爲主路由器,而沒必要等到計時器超時;255則保留給IP地址擁有者。缺省值是100。


Count IP Addrs:VRRP廣播中包含的虛擬IP地址個數。


IP Address(es):虛擬路由器IP地址,地址個數是Count IP Addrs的值。


Master路由的選舉

備份組中路由器的優先級:

  • VRRP根據優先級來肯定備份組中每臺路由器的角色(Master路由器或Backup路由器)。優先級越高,則越有可能成爲Master路由器。

  • 當兩臺優先級相同的路由器同時競爭Master時,比較接口IP地址大小。接口地址大者當選爲Master。

VRRP優先級的取值範圍爲0到255(數值越大代表優先級越高),可配置的範圍是1到254,優先級0爲系統保留給路由器主動放棄Master位置時候使用,255則是系統保留給IP地址擁有者使用。若VRRP路由器的IP地址和虛擬路由器的接口IP地址相同,則該VRRP路由器被稱爲該IP地址的全部者;IP地址全部者自動具備最高優先級:255。所以,當備份組內存在IP地址擁有者時,只要其工做正常,則爲Master路由器。

備份組中路由器的工做方式:

  • 非搶佔方式:若是備份組中的路由器工做在非搶佔方式下,則只要Master路由器沒有出現故障,Backup路由器即便隨後被配置了更高的優先級也不會成爲Master路由器。

  • 搶佔方式:若是備份組中的路由器工做在搶佔方式下,它一旦發現本身的優先級比當前的Master路由器的優先級高,就會對外發送VRRP通告報文。致使備份組內路由器從新選舉Master路由器,並最終取代原有的Master路由器。相應地,原來的Master路由器將會變成Backup路由器。Backup路由器接收到VRRP通告報文後,只會將本身的優先級與通告報文中的優先級進行比較,不會比較IP地址,只有本身的優先級大於通告報文中的優先級時,纔會搶佔成爲Master。

初始建立的路由器工做在Backup狀態,經過VRRP報文的交互獲知虛擬路由器中其餘成員的優先級:

  • 若是VRRP報文中Master路由器的優先級高於本身的優先級,則路由器保持在Backup狀態;

  • 若是VRRP報文中Master路由器的優先級低於本身的優先級,採用搶佔工做方式的路由器將搶佔成爲Master狀態,週期性地發送VRRP報文,採用非搶佔工做方式的路由器仍保持Backup狀態;

  • 若是在必定時間內沒有收到VRRP報文,則路由器切換爲Master狀態。

     因爲路由器上備份組的配置不一致、網絡故障等緣由形成備份組中存在多個Master路由器時,這些Master路由器會根據優先級和IP地址選舉出一個Master:優先級高的路由器成爲Master;優先級低的成爲Backup;若是優先級相同,則IP地址大的成爲Master。


VRRP定時器
VRRP定時器分爲兩種:VRRP通告報文間隔時間定時器和VRRP搶佔延遲時間定時器。
1)VRRP通告報文時間間隔定時器
VRRP備份組中的Master路由器會定時發送VRRP通告報文,通知備份組內的路由器本身工做正常。
用戶能夠經過設置VRRP定時器來調整Master路由器發送VRRP通告報文的時間間隔。若是Backup路由器在等待了3個間隔時間後,依然沒有收到VRRP通告報文,則認爲本身是Master路由器,並對外發送VRRP通告報文,從新進行Master路由器的選舉。


2)VRRP搶佔延遲時間定時器
爲了不備份組內的成員頻繁進行主備狀態轉換,讓Backup路由器有足夠的時間蒐集必要的信息(如路由信息),Backup路由器接收到優先級低於本地優先級的通告報文後,不會當即搶佔成爲Master,而是等待必定時間——搶佔延遲時間後,纔會對外發送VRRP通告報文取代原來的Master路由器。


Master路由器狀態的通告
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路由器的位置,將經過優先級來選舉Master路由器。Backup路由器默認等待的時間稱爲Master_Down_Interval,取值爲:(3×VRRP報文的發送時間間隔)+Skew time,單位爲秒。
     在性能不夠穩定的網絡中,Backup路由器可能由於網絡堵塞而在Master_Down_Interval期間沒有收到Master路由器的報文,而主動搶佔爲Master位置,若是此時原Master路由器的報文又到達了,就會出現虛擬路由器的成員頻繁的進行Master搶佔現象。爲了緩解這種現象的發生,特制定了延遲等待定時器。它可使得Backup路由器在等待了Master_Down_Interval後,再等待延遲等待時間。如在此期間仍然沒有收到VRRP報文,則此Backup路由器纔會切換爲Master路由器,對外發送VRRP報文。

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


VRRP工做原理
參與虛擬路由器的每一臺VRRP路由器,都只有3種VRRP狀態:初始狀態(Initialize)、主控狀態(Master)、備份狀態(Backup)。

VRRP的工做過程爲:

1)路由器使能VRRP功能後,會根據優先級肯定本身在備份組中的角色。優先級高的路由器成爲Master路由器,優先級低的成爲Backup路由器。Master路由器按期發送VRRP通告報文,通知備份組內的其餘路由器本身工做正常;Backup路由器則啓動定時器等待通告報文的到來。
2)在搶佔方式下,當Backup路由器收到VRRP通告報文後,會將本身的優先級與通告報文中的優先級進行比較。若是大於通告報文中的優先級,則成爲Master路由器;不然將保持Backup狀態。
3)在非搶佔方式下,只要Master路由器沒有出現故障,備份組中的路由器始終保持Master或Backup狀態,Backup路由器即便隨後被配置了更高的優先級也不會成爲Master路由器。
4)若是Backup路由器的定時器超時後仍未收到Master路由器發送來的VRRP通告報文,則認爲Master路由器已經沒法正常工做,此時Backup路由器會認爲本身是Master路由器,並對外發送VRRP通告報文。備份組內的路由器根據優先級選舉出Master路由器,承擔報文的轉發功能。


VRRP協議狀態機-初始狀態(Initialize)
若是本地優先級爲255,也就是說本身是IP擁有者路由器,那麼接下來它會:
1)發送VRRP通告報文
2)廣播免費ARP請求報文,內部封裝是虛擬MAC和虛擬IP的對應,有幾個虛擬IP地址,那麼就發送幾個免費ARP請求報文。
3)啓動一個Adver_Timer計時器,初始值爲Advertisement_Interval(缺省是1秒),當該計時器超時後,會發送下一個VRRP通告報文
4)本地VRRP進程將本身切換爲Master路由器

若是本地優先級不是255,,那麼接下來它會:

1)設置Master_Down_Timer計時器等於Master_Down_Interval,也就是主路由器死亡時間間隔,若是此計時器超時,那麼Backup路由器就會宣佈主路由器死亡。其中Master_Down_Interval = (3*Advertisement_Interval)+ Skew_time舉例來講,一個VRRP實例(也就是一個VRRP虛擬器)的優先級是100,報文發送間隔是1秒,那麼Master_Down_Interval = 3*1s + (256-100)/256s = 3.609秒。

2)本地VRRP進程將本身切換爲Backup路由器。


VRRP協議狀態機-備份狀態(Backup)
備份路由器是爲了監控Master路由器的狀態,若是一個VRRP路由器處於此狀態,那麼它會:
1)不響應對虛擬IP地址的ARP請求報文。
2)丟棄幀頭目的MAC地址是虛擬MAC的幀。
3)丟棄IP頭中目的IP地址是虛擬IP的IP包。

若是此時該VRRP路由器收到了一個shutdown事件,那麼它會:
1)取消Master_Down_Timer。
2)轉換爲初始狀態(Initialize state)。

若是Master_Down_Timer超時,那麼該VRRP路由器會執行:
1)發送一個VRRP通告報文。
2)廣播免費ARP請求報文,內部封裝是虛擬MAC和虛擬IP的對應,有幾個虛擬IP地址,那麼就發送幾個免費ARP請求報文。
3)設置Adver_Timer計時器爲Advertisement_Interval(缺省爲1秒)。
4)切換到Master狀態。

若是該Backup狀態的VRRP路由器收到了一個VRRP通告報文:

  • 當該VRRP通告報文的優先級字段爲0時,那麼路由器會將當前的Master_Down_Timer 設置爲Skew_Time。

  • 若是優先級不爲0,而且大於或等於本地優先級,那麼本地路由器會重置Master_Down_Timer計時器並保持Backup狀態。

  • 若是優先級不爲0,而且小於本地優先級,若是開啓了搶佔模式(Preempt mode),那麼該Backup路由器等待指定的搶佔延遲時間後將本身切換爲Master路由器;並執行Master路由器的全部動做;例如:vrrp 1 preempt delay minimum 10,表示等待10秒後切換本身爲Master。

  • 若是優先級不爲0,而且小於本地優先級,若是沒有開啓搶佔模式(Preempt mode),那麼本地路由器保持Backup狀態。


VRRP協議狀態機-主控狀態(Master)

當路由器處於Master狀態時,會進行下面的動做:

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

  • 轉發目的MAC地址是虛擬MAC的數據幀。

  • 拒絕目的IP地址是虛擬IP的數據包,除非它是IP地址擁有者(也就是優先級是255的那個路由器)。

若是處於Master狀態的VRRP進程收到了一個shutdown事件,那麼它會:
1)取消Adver_Timer計時器。
2)發送一個優先級字段置零的VRRP通告報文。
3)切換爲初始狀態(Intialize state)。

若是Adver_Timer計時器超時,那麼:
1)發送一個VRRP通告報文。
2)重置Adver_Timer計時器。

若是收到了一個VRRP報文且其優先級爲0,那麼:
1)發送一個VRRP通告報文。
2)重置Adver_Timer計時器。

若是收到了一個VRRP報文且其優先級高於本地優先級,或者收到的VRRP報文優先級等於本地優先級可是主IP地址高於本地的主IP地址,那麼:
1)取消Adver_Timer計時器。
2)設置Master_Down_Timer計時器爲Master_Down_Interval。
3)切換爲Backup狀態。

相關文章
相關標籤/搜索