HSRP
保護第一跳路由器不出故障的技術
熱備份路由器協議(HSRP)的設計目標是支持特定情況下IP流量失敗轉移不會引起混亂、並允許主機使用單路由器,以及即使在實際第一跳路由器使用失敗的情形下仍能維護路由器間的連通性。實現HSRP的條件是系統中有多台路由器,它們組成一個“熱備份組”,這個組形成一個虛擬路由器。換句話說,當源主機不能動態知道第一跳路由器的IP地址時,HSRP協議能夠保護第一跳路由器不出故障。
該協議中含有多台路由器,對應一個HSRP組。該組中只有一個路由器承擔轉發用戶流量的職責,這就是活動路由器。當活動路由器失效后,備份路由器將承擔該職責,成為新的活動路由器。這就是熱備份的原理。
實現HSRP的條件是系統中有多台路由器,它們組成一個“熱備份組”,這個組形成一個虛擬路由器。在任一時刻,一個組內只有一個路由器是活動的,並由它來轉發數據包,如果活動路由器發生了故障,將選擇一個備份路由器來替代活動路由器,但是在本網路內的主機看來,虛擬路由器沒有改變。所以主機仍然保持連接,沒有受到故障的影響,這樣就較好地解決了路由器切換的問題。
為了減少網路的數據流量,在設置完活動路由器和備份路由器之後,只有活動路由器和備份路由器定時發送HSRP報文。如果活動路由器失效,備份路由器將接管成為活動路由器。如果備份路由器失效或者變成了活躍路由器,將由另外的路由器被選為備份路由器。
在實際的一個特定的區域網中,可能有多個熱備份組並存或重疊。每個熱備份組模仿一個虛擬路由器工作,它有一個Well-known-MAC地址和一個IP地址。該IP地址、組內路由器的介面地址、主機在同一個子網內,但是不能一樣。當在一個區域網上有多個熱備份組存在時,把主機分佈到不同的熱備份組,可以使負載得到分擔。
負責轉發數據包的路由器稱之為活動路由器(Active Router)。一旦主動路由器出現故障,HSRP將激活備份路由器(Standby Routers)取代主動路由器。HSRP協議提供了一種決定使用主動路由器還是備份路由器的機制,並指定一個虛擬的IP地址作為網路系統的預設網關地址。如果主動路由器出現故障,備份路由器(Standby Routers)承接主動路由器的所有任務,並且不會導致主機連通中斷現象。
HSRP運行在UDP上,採用埠號1985。路由器轉發協議數據包的源地址使用的是實際IP地址,而並非虛擬地址,正是基於這一點,HSRP路由器間能相互識別。
HSRP協議利用一個優先順序方案來決定哪個配置了HSRP協議的路由器成為默認的主動路由器。如果一個路由器的優先順序設置的比所有其他路由器的優先順序高,則該路由器成為主動路由器。路由器的預設優先順序是100,所以如果只設置一個路由器的優先順序高於100,則該路由器將成為主動路由器。
通過在設置了HSRP協議的路由器之間發組播(地址224.0.0.2)來得知各自的HSRP優先順序,HSRP協議選出當前的主動路由器。當在預先設定的一段時間內主動路由器不能發送hello消息時,優先順序最高的備用路由器變為主動路由器。路由器之間的包傳輸對網路上的所有主機來說都是透明的。
配置了HSRP協議的路由器交換以下三種多點組播消息:
Hello———hello消息通知其他路由器發送路由器的HSRP優先順序和狀態信息,HSRP路由器默認為每3秒鐘發送一個hello消息;
Coup———當一個備用路由器變為一個主動路由器時發送一個coup消息;
Resign———當主動路由器要宕機或者當有優先順序更高的路由器發送hello消息時,主動路由器發送一個resign消息。在任一時刻,配置了HSRP協議的路由器都將處於以下六種狀態之一:
Initial———HSRP啟動時的狀態,HSRP還沒有運行,一般是在改變配置或埠剛剛啟動時進入該狀態。
Learn———學習狀態,不知道虛擬IP,未看到活躍路由器發hello。等待活躍路由器發hello。
Listen———路由器已經得到了虛擬IP地址,但是它既不是活動路由器也不是等待路由器。它一直監聽從活動路由器和等待路由器發來的HELLO報文。
Speak———在該狀態下,路由器定期發送HELLO報文,並且積極參加活動路由器或等待路由器的競選。
Standby———當主動路由器失效時路由器準備接管包傳輸功能。
Active———路由器執行包傳輸功能。
1.在功能上,VRRP和HSRP非常相似,但是就安全而言,VRRP對HSRP的一個主要優勢:它允許參與VRRP組的設備間建立認證機制。並且,不像HSRP那樣要求虛擬路由器不能是其中一個路由器的ip地址,但是VRRP允許這種情況發生(如果”擁有”虛擬路由器地址的路由器被建立並且正在運行,那麼應該總是由這個虛擬路由器管理—等價於HSRP中的活動路由器),但是為了確保萬一失效發生的時候終端主機不必重新學習MAC地址,它指定使用的MAC地址00-00-5e-00-01-VRID,這裡的VRID是虛擬路由器的ID(等價於一個HSRP的組標識符)。
2.另外一個不同是VRRP不使用HSRP中的政變或者一個等價消息,VRRP的狀態機比HSRP的要簡單,HSRP有6個狀態(初始(Initial)狀態,學習(Learn)狀態,監聽(Listen)狀態,對話(Speak)狀態,備份(Standby)狀態,活動(Active)狀態)和8個事件,VRRP只有3個狀態(初始狀態(Initialize)、主狀態(Master)、備份狀態(Backup))和5個事件。
3.HSRP有三種報文,而且有三種狀態可以發送報文呼叫(Hello)報文告辭(Resign)報文突變(Coup)報文。
VRRP有一種報文。
VRRP廣播報文:由主路由器定時發出來通告它的存在,使用這些報文可以檢測虛擬路由器各種參數,還可以用於主路由器的選舉。
4.HSRP將報文承載在UDP報文上,而VRRP承載在IP報文上(HSRP 使用UDP1985埠,向組播地址224.0.0.2發送hello消息,HSRP版本2向224.0.0.102發送hello消息)。
強認證方法使用IP認證頭(AH)協議.AH是與用在IPSEC中相同的協議,AH為認證VRRP分組中的內容和分組頭提供了一個方法.MD5 HMAC的使用表明使用一個共享的密鑰用於產生hash值。路由器發送一個VRRP分組產生MD5 hash值,並將它置於要發送的通告中,在接收時,接受方使用相同的密鑰和MD5值,重新計算分組內容和分組頭的hash值,如果結果相同,這個消息就是真正來自於一個可信賴的主機,如果不相同,它必須丟棄,這可以防止攻擊者通過訪問LAN而發出能影響選擇過程的通告消息或者其他一些方法中斷網路。
另外,VRRP包括一個保護VRRP分組不會被另外一個遠程網路添加內容的機制(設置TTL值=255,並在接受時檢查),這限制了可以進行本地攻擊的大部分缺陷。而另一方面,HSRP在它的消息中使用的TTL值是1.
6.VRRP的崩潰間隔時間:3*通告間隔+時滯時間(skew-time)。
隨著Internet的日益普及,人們對網路的依賴性也越來越強。這同時對網路的穩定性提出了更高的要求,人們自然想到了基於設備的備份結構,就像在伺服器中為提高數據的安全性而採用雙硬碟結構一樣。路由器是整個網路的核心和心臟,如果路由器發生致命性的故障,將導致本地網路的癱瘓,如果是骨幹路由器,影響的範圍將更大,所造成的損失也是難以估計的。因此,對路由器採用熱備份是提高網路可靠性的必然選擇。在一個路由器完全不能工作的情況下,它的全部功能便被系統中的另一個備份路由器完全接管,直至出現問題的路由器恢復正常,這就是熱備份路由協議(HotStandbyRouterProtocol),HSRP-RFC2281技術要解決的問題。
1.高度的可靠性,兩台路由器之間採用HSRP(熱備份冗餘協議)協議,來保證兩台路由器中的任意一台down掉,或路由器的廣域網口down,都會迅速切換到另外一台。
2.有效的實現了負載均衡,在STAR-S1924F+上劃分出各自的VLAN,儲蓄子網VLAN在左側路由器上的HSRP的優先順序較高,默認使用網通的FR線路;郵政系統(辦公、報刊、EMS、VOIP等等)子網VLAN在右側路由器上的HSRP的優先順序較高,默認使用聯通的FR線路。充分利用了帶寬資源,而且實現了負載均衡。
3.充分利用了多以太口路由器在劃分多業務網段上的功能,也只有多以太口路由器在HSRP應用中才能實現兩個路由器間的負載分擔,這是具有四個以太口路由器的極大的優點。
6.不存在單點故障問題。
HSRP實例圖
在配置之前,連接的埠必須是trunk模式。
如右圖
CK2:
(config)# int e0
(config-if)# ip add 10.16.6.6 255.255.255.0
(config-if)# standby 1 ip 10.16.6.100
(config-if)# standby 1 preempt
(config-if)# standby 1 track s0 30
(config-if)# standby 1 priority 120
(config-if)# standby 2 ip 10.16.6.200
(config-if)# standby 2 preempt
(config-if)# standby 2 track s0
(config-if)# standby 2 priority 100
CK1:
(config)# int e0
(config-if)# ip add 10.16.6.5 255.255.255.0
(config-if)# standby 1 ip 10.16.6.100
(config-if)# standby 1 preempt
(config-if)# standby 1 track s0
(config-if)# standby 1 priority 100
(config-if)# standby 2 ip 10.16.6.200
(config-if)# standby 2 track s0 30
(config-if)# standby 2 priority 120
(config-if)# standby 2 preempt
IOS中的默認HSRP版本是HSRPv1,它允許配置最多255個組號碼。由於一台設備可以支持4095個VLAN,因此如果需要的話,管理員要在多個介面上重複使用相同的HSRP組號碼。儘管這會引起管理員的困惑,但這種配置方法是可行的。HSRPv1使用虛擬MAC地址是0000.0C07.ACXX,XX表示HSRP組;並向組播地址224.0.0.2發送Hello數據包。
HSRPv2使用的數據包格式與HSRPv1不同。管理員要確保在同一HSRP組中的所有路由器上配置了相同的HSRP版本。因為不同版本的設備之間無法識別Hello消息。設備默認的版本為版本1,管理員可以使用以下命令來改變HSRP版本。
Switch(config-if)# standby< hsrp group number> version 2
HSRP認證可以防止網路中的惡意路由器加入到HSRP組中。
管理員可以通過在HSRP組中所有成員設備上,配置認證字元串來啟用HSRP認證。認證字元串的最大長度為8位元組,默認關鍵字為cisco。實例如下:
RouterA(config)# interface vlan 10
RouterA(config-if)# ip address 10.1.1.2 255.255.255.0
RouterA(config-if)# standby 10 ip 10.1.1.1
RouterA(config-if)# standby 10 priority 110
RouterA(config-if)# standby 10 preempt
RouterA(config-if)# standby 10 authentication xyz123
管理員可以使用一系列show standby 命令來檢查HSRP的狀態,其中有多個參數可供使用。比如命令 show standby brief 可以簡單顯示出HSRP的匯總配置。管理員可以確認每個備用組中的本地路由器鄰居。
HSRP還通過IOS的調試(debug)工具提供了更詳細的檢測功能。用於調試HSRP的命令如下:
Swtich# debug standby [errors][events][packets]顯示出HSRP的所有狀態變化;
Switch# debug standby terse顯示出所有HSRP錯誤、事件和數據包,但不包括Hello和公告數據包。