對于IP網絡來說,Cisco的熱備份路由協議(HSRP, Hot Standby Routing Protocol)允許網絡在一個路由器失效不能工作時,網絡中的另一個路由器自動接管失效路由器,從而實現IP路由容錯。HSRP協議還允許兩個或多個配置HSRP協議的路由器使用一個虛擬路由器的MAC地址和IP地址。
虛擬路由器物理上并不存在,它表示一個能為它們提供備份容錯的公共路由器對象。圖1顯示了配置HSRP協議的廣域網中的北京網段。其中,每個物理路由器都配置了虛擬路由器的MAC地址和IP地址。
在圖1中,虛擬路由器的MAC地址是0000.0c07.ac01。當配置HSRP協議時,路由器自動地在Cisco IOS軟件的地址池中選擇一個虛擬MAC地址,該虛擬MAC地址在Cisco 公司的MAC地址塊范圍內。以太網和FDDI局域網使用預先指定的MAC地址作為虛擬MAC地址,令牌環局域網使用一個功能地址作為虛擬MAC地址。
在圖1中,網絡192.1.1.0中的主機的缺省路由器沒有設置為路由器A,而設置為虛擬路由器的IP地址。當用戶A的工作站給位于廣州網段的用戶B的工作站發送數據包時,它將數據包發送到虛擬路由器的MAC地址。
在圖1中,路由器A設置為主動路由器。它被配置為虛擬路由器的IP地址和MAC地址,所有發往虛擬路由器的數據包都經由接口發送到廣州網段。作為備份路由器,路由器B也被配置為虛擬路由器的IP地址和MAC地址。如果由于某種原因路由器A停止轉發數據包,路由協議發生收斂,路由器B接管路由器A變為主動路由器。也就是說,路由器B對虛擬MAC地址和虛擬IP地址進行反應。用戶A的工作站繼續使用虛擬路由器的IP地址將數據包發往用戶B的工作站,路由器B接受這些數據包,并通過上海網段將其發送到廣州網段。直到路由器A重新工作,HSRP允許路由器B為北京網段的用戶提供不間斷的與廣州網段的用戶進行通信服務。當路由器B是主動路由器時,路由器B執行正常功能:轉發北京網段和上海網段之間的數據包。
HSRP的工作原理
HSRP協議利用一個優先級方案來決定哪個配置了HSRP協議的路由器成為默認的主動路由器。如果一個路由器的優先級設置得比所有其他路由器的優先級高,則該路由器成為主動路由器。路由器的缺省優先級是100,所以如果只設置一個路由器的優先級高于100,則該路由器將成為主動路由器。
通過在設置了HSRP協議的路由器之間廣播HSRP優先級,HSRP協議選出當前的主動路由器。當在預先設定的一段時間內主動路由器不能發送hello消息時,優先級最高的備用路由器變為主動路由器。路由器之間的包傳輸對網絡上的所有主機來說都是透明的。
配置了HSRP協議的路由器交換以下三種多點廣播消息:
● Hello──hello消息通知其他路由器發送路由器的HSRP優先級和狀態信息,HSRP路由器默認為每3秒鐘發送一個hello消息;
● Coup──當一個備用路由器變為一個主動路由器時發送一個coup消息;
● Resign──當主動路由器要宕機或者當有優先級更高的路由器發送hello消息時,主動路由器發送一個resign消息。
在任一時刻,配置了HSRP協議的路由器處于以下四種狀態之一:
● Active──路由器執行包傳輸功能;
● Standby──當主動路由器失效時路由器準備接管包傳輸功能;
● Speaking and listening──路由器正在發送和監聽hello消息;
● Listening──路由器正在監聽hello消息。
配置HSRP
圖2給出了一個IP網絡的拓撲結構圖,其中兩個路由器配置了HSRP協議。
網絡上的所有主機都將虛擬路由器的IP地址(本文中為1.0.0.3)配置為缺省的網關。配置缺省網關的命令與主機的操作系統、TCP/IP實現和配置有關。
以下是路由器A的配置:
hostname RouterA
!
interface ethernet 0
ip address 1.0.0.1 255.0.0.0
standby 1 ip 1.0.0.3
standby 1 preempt
standby 1 priority 110
standby 1 authentication example
standby 1 timers 5 15
!
interface ethernet 1
ip address 3.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 3.0.0.0
以下是路由器B的配置:
hostname RouterB
!
interface ethernet 0
ip address 1.0.0.2 255.0.0.0
standby 1 ip 1.0.0.3
standby 1 preempt
standby 1 authentication example
standby 1 timers 5 15
!
interface ethernet 1
ip address 2.0.0.2 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 2.0.0.0
其中的standby ip接口設置命令啟動HSRP協議并設置1.0.0.3作為虛擬路由器的IP地址。兩個路由器的配置中均包含了這個命令,這樣兩個路由器共享同一個虛擬IP地址。1建立備用組1(如果不指定一個組號,則缺省組號為0)。在建立的備用組中必須有一個路由器指定虛擬路由器的IP地址,備用組中的其他路由器指定虛擬路由器的IP地址則是可選的。
其中的standby preempt接口設置命令允許當該路由器的優先級比組中的其他的路由器的優先級高時,該路由器成為主路由器。在本文的配置中,兩個路由器都包含該命令,這樣其中的任何一個路由器都可以成為另一個路由器的備份路由器。其中的1表示此命令適用于備用組1。如果其中的一個路由器配置中不包含此命令,則該路由器不能成主動路由器。
其中的standby priority接口設置命令設置路由器的HSRP優先級為110,這比缺省的100優先級高。在本文的配置中只有路由器A包含這個命令,這使路由器A成為缺省的主動路由器。1表示該命令適用于備用組1。
其中的standby authentication接口設置命令建立一個8字符的明文認證字符串,此認證字符串包含在每個HSRP多點廣播消息中。
該命令是可選的,如果使用,則組中的每個配置HSRP協議的路由器必須使用相同的認證字符串,以保證每個路由器能確認接收到的HSRP消息的來源。1表示此命令應用于備用組1。
其中,standby timers接口設置命令設置hello消息之間的間隔,稱為hello時間,此時間間隔為5秒; 路由器在等待8秒鐘保持時間之后宣布主動路由器宕機(缺省的hello時間和保持時間分別為3秒和10秒)。如果修改此參數,則各路由器必須使用相同的hello時間和保持時間。1表示此命令應用于備用組1。
配置多個HSRP組
多組HSRP協議(MHSRP)是HSRP協議的擴展,它允許路由器的一個端口隸屬于多個熱備份組。MHSRP協議需要Cisco IOS 10.3或以上的版本支持,并且路由器硬件允許一個以太網端口綁定多個單點廣播MAC地址,如AGS、AGS+以及Cisco 7000系列路由器。如圖3所示,這些特殊路由器硬件允許配置路由器中的一個端口,使得該路由器成為多個備份組的備份路由器。
在圖3中,路由器A的以太網端口0屬于組1,路由器B的以太網端口0屬于組1、2和3,路由器C的以太網端口0屬于組2,路由器D的以太網端口0屬于組3??梢园凑詹块T組織結構來建立各組。在這中情況下,組1可能表示工程部門,組2表示制造部門,組3表示財務部門。
路由器B配置為組1和組2的主動路由器,組3的備份路由器。路由器D配置為組3的主動路由器。如果路由器D因為某種原因失效,路由器B將執行路由器D的數據轉發功能,從而允許財務部門的用戶可以繼續訪問其他子網的數據。
以下是路由器A的配置:
hostname RouterA
!
interface ethernet 0
ip address 1.0.0.1 255.0.0.0
standby 1 ip 1.0.0.5
standby authentication sclara
!
interface serial 0
ip address 2.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 2.0.0.0
以下是路由器B的配置,要求路由器B必須是AGS、AGS+或者Cisco 7000系列路由器:
hostname RouterB
!
interface ethernet 0
ip address 1.0.0.2 255.0 0.0
standby 1 ip 1.0.0.5
standby 1 priority 110
standby 1 preempt
standby 1 authentication sclara
standby 2 ip 1.0.0.6
standby 2 priority 110
standby 2 preempt
standby 2 authentication mtview
standby 3 ip 1.0.0.7
standby 3 preempt
standby 3 authentication svale
!
interface serial 0
ip address 3.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 3.0.0.0
以下是路由器C的配置:
hostname RouterC
!
interface ethernet 0
ip address 1.0.0.3 255.0 0.0
standby 2 ip 1.0.0.6
standby 2 authentication mtview
!
interface serial 0
ip address 4.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 4.0.0.0
以下是路由器D的配置:
hostname RouterD
!
interface ethernet 0
ip address 1.0.0.4 255.0 0.0
standby 3 ip 1.0.0.7
standby 1 priority 110
standby 1 preempt
standby 3 authentication svale
!
interface serial 0
ip address 4.0.0.1 255.0.0.0
!
router eigrp 1