隨著Internet的日益普及,人們對網絡的依靠性也越來越強。這同時對網絡的穩定性提出了更高的要求,人們自然想到了基于設備的備份結構,就像在服務器中為提高數據的安全性而采用雙硬盤結構一樣。路由器是整個網絡的核心和心臟,假如路由器發生致命性的故障,將導致本地網絡的癱瘓,假如是骨干路由器,影響的范圍將更大,所造成的損失也是難以估計的。因此,對路由器采用熱備份是提高網絡健壯性(robust)的必然選擇。在一個路由器完全不能工作的情況下,它的全部功能便被系統中的另一個備份路由器完全接管,直至出現問題的路由器恢復正常,這就是Cisco公司的熱等待路由協議(Hot Standby Router PRotocal,HSRP)要解決的問題。
一、 HSRP協議概述
---- 實現HSRP的條件是系統中有多臺路由器,它們組成一個“熱等待組”,這個組形成一個虛擬路由器。在任一時刻,一個組內只有一個路由器是活動的,并由它來轉發數據包,假如活動路由器發生了故障,將選擇一個等待路由器來替代活動路由器,但是在本網絡內的主機看來,虛擬路由器沒有改變。所以主機仍然保持連接,沒有受到故障的影響,這樣就較好地解決了路由器切換的問題。
---- 為了減少網絡的數據流量,在設置完活動路由器和等待路由器之后,只有活動路由器和等待路由器定時發送HSRP報文。假如活動路由器失效,等待路由器將接管成為活動路由器。假如等待路由器失效或者變成了活動路由器,將由另外的路由器被選為等待路由器。
---- 在實際的一個特定的局域網中,可能有多個熱等待組并存或重疊。每個熱等待組模擬一個虛擬路由器工作,它有一個Well-known-MAC地址和一個ip地址。該IP地址、組內路由器的接口地址、主機在同一個子網內,但是不能一樣。當在一個局域網上有多個熱等待組存在時,把主機分布到不同的熱等待組,可以使負載得到分擔。
二、HSRP協議數據包格式
---- 在熱等待組內,路由器定時以不同類型的數據報文廣播狀態信息。該協議運行在UDP之上,端口號為1985,目的地址為多播地址224.0.0.2,TTL標記為1。數據包的源地址為發送方路由器的實際IP地址,而不是虛擬地址,這樣可以用來標記不同的路由器。UDP的格式如圖1所示。


在每一個虛擬局域網內都有一個HSRP組,從邏輯上講,Cisco 7010和Cisco 5509的RSM在每個虛擬局域網上都有局域網接口,并且都配置有IP地址,同時配置一個虛擬地址,該地址作為在該虛擬局域網內所有主機的網關。下面以VLAN 9為例,RSM中VLAN 9的配置如下:
---- interface Vlan9
---- description surportcenter
---- ip address 202.120.95.66 255.255.255.224
該路由器在該VLAN9上的接口的IP地址以及掩碼
no ip redirects
no ip directed-broadcast
no ip route-cache cef
standby 9 timers 3 250
定義熱等待組號為9,每3秒交換一次hello信息,250沒有收到hello信息就開切換
standby?150?priority?110
定義路由器的權值,值越大,成為活動路由器的希望越大
standby 9 preempt
Enable該組的HSRP搶占功能,誰的權值大就可以立即成為活動路由器
standby 9 ip 202.120.95.65
該組的虛擬IP地址,作為該VLAN中主機的網關地址
Cisco 7010路由器中接口的配置如下:
interface FastEthernet0/0.9
description surportcenter
ip address 202.120.95.67 255.255.255.224
cisco7010在VLAN9上的接口的IP地址以及掩碼,該地址和RSM中的地址必須屬于同一個子網,并且不同
no ip redirects
encapsulation is l 9
所使用的虛擬局域網協議
standby 9 timers 3 250
和在RSM中的含義一樣,并且必須相同
standby 9 priority 100
比在RSM中的值小,所以RSM在該VLAN中為活動的
standby 9 preempt
和在RSM中含義一樣
standby 9 ip 202.120.95.65
該組的虛擬IP地址,必須和RSM中一樣
---- 為了達到負載均衡的目的,應該使Cisco 5509 RSM和Cisco 7010承擔大致相同的負載,我們的方法是,在RSM中,VLAN 1到VLAN 30的權值為110,VLAN 31到VLAN 60的權值為100; 相反,在Cisco 7010中,VLAN 1到VLAN 30的權值為100,VLAN 31到VLAN 60的權值為100。這樣,在正常情況下,Cisco 5509的RSM負責VLAN 1到VLAN 30的路由,Cisco 7010負責VLAN 31到VLAN 60的路由。假如有一方出現了故障,將由另一個來負載全部的路由工作。
五、HSRP存在的問題
---- 對于在HSRP協議,最大的問題是沒有提供安全防護,在一個局域網內部,通過發送虛假的UDP多播數據包很輕易對局域網中的路由器實施攻擊,導致數據包黑洞(Packet Black Hole)和拒絕服務攻擊(Denial-of-Service Attack)。一般無法從一個局域網的外部實施攻擊,因為大多數路由器都不轉發目的地址為所有路由器的多播地址(224.0.0.2)。
---- HSRP只是實現了路由器的平滑切換,使用戶感覺不到這種切換,保證了網絡的穩定性。但是,一個HSRP組內的路由器不能互通它們的其他網絡配置信息,例如訪問控制列表等。所以在治理實施治理時,為了保證一致性,必須對它們進行相同的修改,增加了治理的復雜性,這也許是為了提高性能而付出的代價吧。
---- 操作碼: 用來描述數據包中報文的類型,可能的值為0、1和2,如表1所示。
---- 版本: 指示HSPR的版本信息。

狀態: 描述發出該報文的路由器的當前狀態。在一個熱等待組內的所有路由器都運行著這樣的狀態機,有以下6種狀態,見表2。
---- 呼叫時間: 只在呼叫報文中有意義,表示路由器定時發送呼叫報文的間隔時間,以秒為單位。假如該參數沒有在路由器上配置,它可能要從活動路由器上學習獲得。假如沒有配置也沒有學習,那么建議使用缺省值3。
---- 保持時間: 只在呼叫報文中有意義,被接收路由器用來判定該呼叫報文是否合法,單位為秒,其值至少是呼叫時間的3倍。假如該參數沒有配置,也同樣可以從活動路由器上學習。活動路由器不能從等待路由器學習呼叫時間和保持時間,它只能繼續使用從先前的活動路由器學習來的該值。建議的缺省值為10。
---- 優先級: 該參數用來選擇活動和等待路由器,2個具有不同優先級的路由器,優先級高的將成為活動路由器。2個具有相同優先級的路由器,IP地址高的將成為活動路由器。
---- 組: 用來標記路由器所在的熱等待組。對令牌環類型的網絡,合法的值是0、1和2,對于其他類型的網絡,合法值是0~255。
---- 認證碼: 包括8個明文的字符作為密碼,假如沒有配置,缺省值為0×63 0×69 0×73 0×63 0×6F 0×00 0×00 0×00。
---- 虛擬IP地址: 4個8位組,用來指定本熱等待組的虛擬IP地址,它可以是從活動路由器的呼叫報文中學習來的。假如沒有配置該地址,并且呼叫報文是需要熟悉的,那么只能通過活動路由器學習。
---- 在配置路由器或路由交換模塊(Route Switch Module,RSM)時需要為上述字段賦值。
注: (作者地址: 上海中山北路3663號老圖書館一樓華東師范大學網絡信息中心,200062)
新聞熱點
疑難解答