close
FW-http://tavi.debian.org.tw/index.php?page=VRRP
VRRP的全名為Virtual Router Redundancy Protocol,中文名稱可以翻為"虛擬路由器備援協定"。
功能
- 主要的功用是用來作為備援路由器,以避免單點故障,因而造成網路不通的現象,但實際也可以應用在防火牆的備援上...等,在看完下面所描述其基本原理後,要如何運用就看你了!
其他相似的協定
- 相對應的協定為:
- Cisco Systems, Inc.的Hot Standby Router Protocol (HSRP)
- Digital Equipment Corporation, Inc. 的 IP Standby Protocol (IPSTB)
- 不過這兩套都他們公司的專利權,因此未經他們的許可是禁止使用的,但是 VRRP version 2 則是定義在 RFC 2338 裡,屬於公開的協定,因此又以VRRP的相容性最好。
優缺點
- 優點
- 前端使用者不需要作任何設定,不需要開啟任何通訊協定。
- 當主要的路由器發生故障時,可以在極短的時間內,備援路由器便可以接手運作。
- 一般的 TCP 不會因此而斷線,因此前端 user 不會有任何感覺。
- 相容性高。
- 設定相當容易。
- 缺點
- 不具有負載平衡的功用,,在一個 Virtual Router 裡,同一時間內僅有一台 Router 負責運作。
- 當同時使用 VRRP 與 Dynamic Routing Protocol 於同一台 Router 上,可能會造成 Routing Table 混亂的現象。
- 綜合上述的優缺點,VRRP 多半使用作為前端使用者的 Gateway,而在 Router 與 Router 多半採用 Dynamic Routing Protocol 較為適合。
與各個 Dynamic Routing Protocol 的比較
ICMP router discovery | RIP | OSPF | VRRP | |
前端使用者設定 | x | v | v | x |
網路規模的影響 | + | + | - | x |
管理成本 | - | + | + | - |
Fail-Over速度 | -(與網路規模成正比) | + | - | -- |
符號解釋,"v"-有影響,"+"-大,"-"-小,"x"-無影響 |
基本原理
- 依據 RFC 2338 所定義的 VRRP version 2,VRRP 其實只是一種選舉 Virtual Router 的通訊協定,而 Virtual Router 又是由各個跑 VRRP 通訊協定的 Router 組成的,這些 Router 必須要有相同的 VRID(Virtual Router ID) 即相同的 Virtual IP,VRRP 才會把他們視為在同一個群組!
- 換句話說,一個 Virtual Router 是由擁有相同的VRID及相同的 Virtual IP 的 Router 組成的,一旦有一台 Router 同樣也有跑VRRP,但 VID 或 Virtual IP 不同,就會被當作另一個 Virtual Router 群組。
- VRRP 是 從Virtual Router 選出一台擁有最高優先權的 Router 作為 Virtual Router Master,其餘的則為 Virtual Router Backup,而 Virtual Router Master 負責對外宣稱他擁有 Virtual IP,並處理任何要到達 Virtual IP 的封包,一旦 Virtual Router Master 掛了,VRRP 就會再從 Backup 中選出一台作為 Master,繼續接手處理要到達 Virtual IP 的封包。
- 成為 Virtual Router Master 的 Router 固定時間(Advertisement Interval) 會發出 Multicast(Advertisement),告訴其他的Virtual Router "我還活著" 及一些相關訊息,而成為 Virtual Router Backup 的 Router 只負責聽 Master 所發出來的 Multicast(Advertisement),萬一超過了時間(3 倍的 Advertisement time + 偏移時間)還沒聽到 Master 的 Multicast(Advertisement),具有比較高 Priority 的 Router,會具有比較小的偏移時間,優先發出 Multicast 封包,持續成為 Master,而其他的 Router 則持續為 Backup Router。
- 由於 VRRP 有明定標準的 MAC Address,所以要切換成 Master 除了必須要對外宣告他有這個 ip 外,還需要改變自己的 MAC Address 成為標準的 VRRP MAC Address,因此這對於其他的機器而言,完全沒有任何感覺,這也是為什麼 VRRP 的 Fail-over 速度能如此快的理由。
安裝
- apt-get install vrrpd
- debian 建議安裝目前在 testing 及 unstable 裡的0.7-2,bug 比較較少,另外下面也有一個我針對這個版本所寫的一個 patch去,修正在處理 routing table 的問題。
使用方式
下面所列的為 vrrpd 最基本的設定
vrrpd -i [Interface] -v [VRID] -p [Priority] [Virtual IP]
- Interface 為 VRRPD 所要發出 Advertisement 的介面,ex. eth0,eth1...etc。
- VRID 為 Virtual Router ID,如前所述,同一個 ID 的 VRRP Router 才會被視為同一個 Virtual Router。
- Priority 為各個 VRRP Router 的優先權,由最高的負責擔任 Virtual Router Master,預設為 100。
- Virtual IP 為 Virtual Router Master 負責持有的IP。
- 其餘相關的安全機制,及監控相關 interface,以減少 priority 的功能,不再詳述,請參造 man vrrpd 和 vrrpd-h。
範例
- 範例一-這是從 RFC 2338 裡所舉的範例,我再去作了些修改,我不確定這會不會有版權問題,如果有的話,煩請告知我!
+-----+ +-----+ | MR1 | | BR1 | | | | | | | | | VRID=1 +-----+ +-----+ IP C ---------->* eth0 eth1 *<--------- IP C | IP A IP B | | | | | ------------------+------------+-----+--------+--------+--------+-- ^ ^ ^ ^ | | | | (IP A) (IP A) (IP A) (IP A) | | | | +--+--+ +--+--+ +--+--+ +--+--+ | H1 | | H2 | | H3 | | H4 | +-----+ +-----+ +--+--+ +--+--+ Legend: ---+---+---+-- = Ethernet, Token Ring, or FDDI H = Host computer MR = Master Router BR = Backup Router * = IP Address (IP) = default router for hosts
- MR1 的 Router 設定如下
vrrpd -i eth0 -v 1 -p 150 IP-A
- BR1 的 Router 設定如下
vrrpd -i eth1 -v 1 -p 50 IP-A
- 範例二-同樣是由 RFC 2338 裡所提供的,但在不同網段有做到負載平衡的功能。
+-----+ +-----+ | MR1 | | MR2 | | & | | & | | BR2 | | BR1 | VRID=1 +-----+ +-----+ VRID=2 IP A ---------->* *<---------- IP B | | | | | | ------------------+------------+-----+--------+--------+--------+-- ^ ^ ^ ^ | | | | (IP A) (IP A) (IP B) (IP B) | | | | +--+--+ +--+--+ +--+--+ +--+--+ | H1 | | H2 | | H3 | | H4 | +-----+ +-----+ +--+--+ +--+--+ Legend: ---+---+---+-- = Ethernet, Token Ring, or FDDI H = Host computer MR = Master Router BR = Backup Router * = IP Address (IP) = default router for hosts
- MR1&BR1 的 Router 設定如下
# 設定 MR1 vrrpd -i eth0 -v 1 -p 150 IP-A # 設定 BR1 vrrpd -i eth1 -v 2 -p 50 IP-B
- MR2&BR2 的 Router 設定如下
# 設定 MR2 vrrpd -i eth0 -v 2 -p 150 IP-B # 設定 BR2 vrrpd -i eth1 -v 1 -p 50 IP-A
- 注意事項
- 在 Linux 裡,不允許同一個 Interface,綁一個以上的 MAC Address,所以要做到這件事,必須要兩張網卡,或利用切 VLAN 的方式去作。
- BR1 是備援 MR1 本身 Interface 的 IP,這在 RFC 2338 裡是有規範的,但在 VRRPD 0.7 版裡,這項功能則還未完成,因此建議以範例一的方式去作。