VRRP協議

1. 前言

VRRP(Virtual Router Redundancy Protocol)協議是用於實現路由器冗餘的協議,最新協議在RFC3768中定
算法

義,原來的定義RFC2338被廢除,新協議相對還簡化了一些功能。

2. 協議說明

2.1 協議

VRRP協議是爲消除在靜態缺省路由環境下的缺省路由器單點故障引發的網絡失效而設計的主備模式的協議,使
網絡

得在發生故障而進行設備功能切換時能夠不影響內外數據通訊,不須要再修改內部網絡的網絡參數。VRRP協議併發

須要具備IP地址備份,優先路由選擇,減小沒必要要的路由器間通訊等功能。

VRRP協議將兩臺或多臺路由器設備虛擬成一個設備,對外提供虛擬路由器IP(一個或多個),而在路由器組內部,
spa

若是實際擁有這個對外IP的路由器若是工做正常的話就是MASTER,或者是經過算法選舉產生,MASTER實現針設計

對虛擬路由器IP的各類網絡功能,如ARP請求,ICMP,以及數據的轉發等;其餘設備不擁有該IP,狀態是代理

BACKUP,除了接收MASTER的VRRP狀態通告信息外,不執行對外的網絡功能。當主機失效時,BACKUP將接router

管原先MASTER的網絡功能。

配置VRRP協議時須要配置每一個路由器的虛擬路由器ID(VRID)和優先權值,使用VRID將路由器進行分組,具備相
事件

同VRID值的路由器爲同一個組,VRID是一個0~255的正整數;同一組中的路由器經過使用優先權值來選舉路由

MASTER,優先權大者爲MASTER,優先權也是一個0~255的正整數。

VRRP協議使用多播數據來傳輸VRRP數據,VRRP數據使用特殊的虛擬源MAC地址發送數據而不是自身網卡的
it

MAC地址,VRRP運行時只有MASTER路由器定時發送VRRP通告信息,表示MASTER工做正常以及虛擬路由器

IP(組),BACKUP只接收VRRP數據,不發送數據,若是必定時間內沒有接收到MASTER的通告信息,各BACKUP

將宣告本身成爲MASTER,發送通告信息,從新進行MASTER選舉狀態。

2.2 MASTER選舉
若是對外的虛擬路由器IP就是路由器自己配置的IP地址的話,該路由器始終都是MASTER;

不然若是不具有虛擬IP的話,將進行MASTER選舉,各路由器都宣告本身是MASTER,發送VRRP通告信息;

若是收到其餘機器的發來的通告信息的優先級比本身高,將轉回BACKUP狀態;

若是優先級相等的話,將比較路由器的實際IP,IP值較大的優先權高

不過若是對外的虛擬路由器IP就是路由器自己的IP的話,該路由器始終將是MASTER,這時的優先級值爲255。

2.3 協議狀態機

VRRP協議狀態比較簡單,就三種狀態,初始化,主機,備份機。

  1.                       +---------------+

  2.            +--------->|               |<-------------+

  3.            |          |  Initialize   |              |

  4.            |   +------|               |----------+   |

  5.            |   |      +---------------+          |   |

  6.            |   |                                 |   |

  7.            |   V                                 V   |

  8.    +---------------+                       +---------------+

  9.    |               |---------------------->|               |

  10.    |    Master     |                       |    Backup     |

  11.    |               |<----------------------|               |

  12.    +---------------+                       +---------------+


初始化:
路由器啓動時,若是路由器的優先級是255(最高優先級,路由器擁有路由器地址),要發

送VRRP通告信息,併發送廣播ARP信息通告路由器IP地址對應的MAC地址爲路由虛擬

MAC,設置通告信息定時器準備定時發送VRRP通告信息,轉爲MASTER狀態;

不然進入BACKUP狀態,設置定時器檢查定時檢查是否收到MASTER的通告信息。

主機:
主機狀態下的路由器要完成以下功能:

設置定時通告定時器;

用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;

轉發目的MAC是VRRP虛擬MAC的數據包;

若是是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數據包,不然丟棄;

當收到shutdown的事件時刪除定時通告定時器,發送優先權級爲0的通告包,轉初始化狀態;

若是定時通告定時器超時時,發送VRRP通告信息;

收到VRRP通告信息時,若是優先權爲0,發送VRRP通告信息;不然判斷數據的優先級是否高於本機,或相等而

且實際IP地址大於本地實際IP,設置定時通告定時器,復位主機超時定時器,轉BACKUP狀態;不然的話,丟棄

該通告包;

備機:

備機狀態下的路由器要實現如下功能:

設置主機超時定時器;

不能響應針對虛擬路由器IP的ARP請求信息;

丟棄全部目的MAC地址是虛擬路由器MAC地址的數據包;

不接受目的是虛擬路由器IP的全部數據包;

當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;

主機超時定時器超時的時候,發送VRRP通告信息,廣播ARP地址信息,轉MASTER狀態;

收到VRRP通告信息時,若是優先權爲0,表示進入MASTER選舉;不然判斷數據的優先級是否高於本機,若是高

的話認可MASTER有效,復位主機超時定時器;不然的話,丟棄該通告包;

2.4 ARP查詢處理

當內部主機經過ARP查詢虛擬路由器IP地址對應的MAC地址時,MASTER路由器回覆的MAC地址爲虛擬的VRRP

的MAC地址,而不是實際網卡的MAC地址,這樣在路由器切換時讓內網機器覺察不到;而在路由器從新啓動

時,不能主動發送本機網卡的實際MAC地址。若是虛擬路由器開啓的ARP代理(proxy_arp)功能,代理的ARP回

應也迴應VRRP虛擬MAC地址;

2.5 VRRP應用舉例

  1.             +-----------+      +-----------+

  2.             |   Rtr1    |      |   Rtr2    |

  3.             |(MR VRID=1)|      |(BR VRID=1)|

  4.             |(BR VRID=2)|      |(MR VRID=2)|

  5.     VRID=1  +-----------+      +-----------+  VRID=2

  6.     IP A ---------->*            *<---------- IP B

  7.                     |            |

  8.                     |            |

  9.   ------------------+------------+-----+--------+--------+--------+--

  10.                                        ^        ^        ^        ^

  11.                                        |        |        |        |

  12.                                      (IP A)   (IP A)   (IP B)   (IP B)

  13.                                        |        |        |        |

  14.                                     +--+--+  +--+--+  +--+--+  +--+--+

  15.                                     |  H1 |  |  H2 |  |  H3 |  |  H4 |

  16.                                     +-----+  +-----+  +--+--+  +--+--+

  17.      Legend:

  18.               ---+---+---+--  =  Ethernet, Token Ring, or FDDI

  19.                            H  =  Host computer

  20.                           MR  =  Master Router

  21.                           BR  =  Backup Router

  22.                            *  =  IP Address

  23.                         (IP)  =  default router for hosts


這是一般VRRP使用拓撲,兩臺路由器運行VRRP互爲備份,路由器1做爲VRID組1的MASTER,IP地址A,VRID

組2的BACKUP,路由器2做爲VRID組2的MASTER,IP地址B,VRID組1的BACKUP,內部網絡中一部分機器的

缺省網關地址是IP地址A,一部分是IP地址B,正常狀況下以A爲網關的數據將走路由器1,以B爲網關的數據將走

路由器2,若是一臺路由器發生故障,全部數據將走另外一臺路由器。

3. 協議定義

3.1 以太頭

源MAC地址必須爲虛擬MAC地址:00-00-5E-00-01-{VRID},VRID爲虛擬路由器ID值,16進制格式,因此同一網段中最

多有255個VRRP路由器;目的MAC爲多播類型的MAC。

這裏能夠看出VRID很是重要


3.2 IP頭參數

VRRP包的源地址是本機地址,目的地址必須爲224.0.0.18,爲一多播地址;IP協議號爲112;IP包的TTL值必須爲255。

3.3 VRRP協議數據格式

  1.     0                   1                   2                   3

  2.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

  3.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  4.    |Version| Type  | Virtual Rtr ID|   Priority    | Count IP Addrs|

  5.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  6.    |   Auth Type   |   Adver Int   |          Checksum             |

  7.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  8.    |                         IP Address (1)                        |

  9.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  10.    |                            .                                  |

  11.    |                            .                                  |

  12.    |                            .                                  |

  13.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  14.    |                         IP Address (n)                        |

  15.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  16.    |                     Authentication Data (1)                   |

  17.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  18.    |                     Authentication Data (2)                   |

  19.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




其中:
version:版本,4位,在RFC3768中定義爲2;

Type:類型,4位,目前只定義一種類類型:通告數據,取值爲1;

Virtual Rtr ID:虛擬路由器ID,8位

Priority:優先級,8位,具有冗餘IP地址的設備的優先級爲255;

Count IP Addrs:VRRP包中的IP地址數量,8位;

Auth Type:認證類型,8位,RFC3768中認證功能已經取消,此字段值定義0(不認證),爲1,2只做爲對老版本

的兼容;

Adver Int:通告包的發送間隔時間,8位,單位是秒,缺省是1秒;

Checksum:校驗和,16位,校驗數據範圍只是VRRP數據,即從VRRP的版本字段開始的數據,不包括IP頭;

IP Address(es):和虛擬路由器相關的IP地址,數量由Count IP Addrs決定

Authentication Data:RFC3768中定義該字段只是爲了和老版本兼容,必須置0。


3.4 接收數據時的必須檢查

收到VRRP數據包時要進行如下驗證,不知足的數據包將被丟棄:
 

    -  TTL必須爲255;

   -  VRRP版本號必須爲2;

   -  一個包中數據字段必須完整;

   -  校驗和必須正確;

   -  必須驗證在接收的網卡上配置了VRID值,並且本地路由器不是路由IP地址的擁有者

   -  必須驗證VVRP認證類型和配置的一致;


4. 結論

VRRP實現了對路由器IP地址的冗餘功能,防止了單點故障形成的網絡失效,VRRP自己是熱備形式的,但能夠通

過互相熱備實現路由器的均衡處理,新版的VRRP較老版簡化了認證處理,實際再也不進行數據的認證,這是由於

在實際應用中常常出現認證成爲形成多個MASTER同時使用的異常狀況。

相關文章
相關標籤/搜索