概念
HSRP 是 Hot Standby Routing Protocol(
熱備份路由協定)的縮寫。它的作用是能夠把一台或多台
路由器用來做
備份,所謂
熱備份是指當使用的路由器不能正常工作時,候補的路由器能夠實現平滑的替換,儘量不被察覺。 通常,我們的網路上
主機設定一條
預設路由,指向主機所在
網段內的一個路由器 R,這樣,主機發出的目的地址不在本網段的
報文將被通過預設路由發往路由器 R,從而實現了主機與外部網路的通信。在這種情況下,當路由器 R 壞掉時,本網段內所有以
路由器 R 為預設路由
下一跳的主機將斷掉與外部的通信。HSRP 實現容錯備份功能,可以有效解決上述可靠性問題。
HSRP 解決的問題
主機 Pat 設定預設
網關 Router A,這樣訪問主機 Marceau 需要通過 Router A 來進行。一旦 Router A 出現故障,主機 Pat 將失去與主機 Marceau 的聯繫,除非主機 Pat 重新指定其它的
預設網關,如 Router B。
引入
讓我們看一下引入 HSRP 是如何解決問題的。通過在 Router A 和Router B上配置 HSRP,使它們共同組
成一個
備份組,可以把這個組抽象成一個虛擬
路由器,它有自己的 IP 地址和 MAC 地址,分別稱作虛擬
IP 地址和虛擬
MAC 地址。這樣主機 Pat 可以把自己的
預設網關設定成虛擬 IP 地址,訪問主機
Marceau 就可以通過
虛擬路由器來進行。當然,虛擬路由器是一個抽象的概念,實際的
網關工作是由
Router A 和Router B中的一個來完成的,我們稱完成實際網關工作的
路由器為活動路由器,另外一個路
由器為
備份路由器。如果活動路由器出現
故障,就像前面提到的 Router A 發生故障,備份路由器(如
Router B)會接替成為活動路由器,因此,
主機 Pat 在不察覺情況下,仍然可以通過 Router B來訪問主
機 Marceau。
用途
HSRP 用於廣播或
多播區域網路上的
路由器熱
備份,並適於靜態的路由配置,實際上 HSRP 正是解決設備不
能動態適應
路由改變的問題。 HSRP 主要用途: 1、
主機設定
預設網關 假設主機 A 是區域網路中一台需要
訪問遠程數據的伺服器,要求
遠程訪問能力可靠。由於主機 A 中靜態設定預設網關,一旦想更換網關,
必須在主機中重新
配置。 通過使用 HSRP,主機中設定
虛擬路由器為預設網關,具體由虛擬路由器中的哪
台路由器完成
網關的實際工作,主機並不關心,這就為套用提供了較好的可靠性和靈活性。 2、設定靜態
工作原理
當採用 HSRP, 用戶看到的是一台
虛擬路由器,該虛擬
路由器有自己的虛擬 IP 地址和虛擬 MAC 地址,
該虛擬路由器是由一組路由器組成的,這組路由器稱為
備份組。備份組內由一台活動路由器、一台備份路
由器,以及民眾路由器構成。一般情況下,一旦活動路由器壞掉,該備份路由器成為活動路由器,然後備
份組內選舉組內的另一台路由器為備份路由器。 組內路由器通過接受來自活動路由器的周期性 Hello 報
文來判斷活動路由器是否工作正常。如果組內備份路由器 R 在一定時間間隔未收到活動路由器 Hello 報
文,就認為活動
路由器壞掉了,優先權高的
備份路由器最終成為活動路由器。備份路由器也是通過類似過
程產生的。這樣總能保證備份組中有一台活動路由器,一台備份路由器。
狀態
備份組內的
路由器處於各自的狀態,根據相互間傳送 HSRP
報文來調整新的狀態。 HSRP 狀態:
(1)init:所有備份組內組員的初始狀態為 INIT,當組員配置屬性或連線埠 UP 時,進入 INIT 狀態。
(2)learn:該組員未設定虛擬 IP 地址,並等待從本組活動路由器發出的認證的 Hello 報文中學習得到自己的虛擬 IP 地址。
(3)listen :該組員已得知或設定了虛擬 IP 地址,通過監聽 Hello 報文監視活動/備份路由器,一旦發現活動/備份路由器長時間未傳送 Hello 報文,則進入 SPEAK 狀態,開始競選。
(4)speak: 參加競選活動/
備份路由器的組員所處的狀態,通過傳送 Hello 報文使競選者間相互比較、競
爭。
(5)standby: 組內備份路由器所處的狀態,備份組員監視活動路由器,準備隨時在活動路由器壞掉時接替活動路由器。備份路由器也周期性傳送 Hello 報文告訴其他組員自己沒有壞掉。
(6)ACTIVE:組內活動路由器即負責
虛擬路由器實際路由工作的組員所處的狀態。活動路由器周期性傳送 Hello 報文告訴其他組員自己沒有壞掉。
狀態轉換
HSRP 協定中定義了一個自動
狀態機,不同的觸發事件會產生相應的狀態變化和動作。
報文
Version :1 Byte HSRP 報文的版本號。本文檔的 HSRP 報文版本為 0 。 Oper Code :1 Byte
描述了 HSRP
報文的類型,共有3 種報文類型: (1)0 —— Hello Hello 類型報文說明傳送者處在運
行狀態,有能力成為活動/
備份路由器。 (2)1 —— COUP COUP 類型報文說明傳送者希望成為活動路由
器。 (3)2 —— RESIGN COUP 類型報文說明傳送者不再是活動
路由器。 State :1 Byte 描述傳送
者傳送報文時所處的狀態。 Hello Time :1 Byte 該域只在 Hello
報文中有意義。它包含傳送者發
送 Hello 報文的時間間隔,以秒計; 如果路由器上未配置 Hello Time 值,它可以從組中活動路由器發
送的 Hello 報文中學習到,但須本
路由器認證該 Hello 報文; 如果路由器上既未配置 Hello Time,也
Hold Time :1 Byte 該域只在 Hello 報文中有意義。它包含傳送者傳送 Hello
報文的持有時間,以
秒計; Hold Time 必須大於 Hello Time ,而且最好大於三倍 Hello Time ;
如果路由器上未配置 Hold Time ,它可以從組中活動路由器傳送的 Hello 報文中學習到,但須本路由器
認證該 Hello 報文; 如果路由器上既未配置 Hello Time ,也未學習到,則賦予
預設值10 。
Priority :1 Byte 該域用來選舉活動/
備份路由器。當選舉過程中出現競爭(多個
路由器都想成為活動/
備份路由器)時,
優先權最高的競爭者勝,對於優先權相等的競爭者,IP 地址最大的競爭者勝。
Group :1 Byte 此域中記錄傳送者所在的備份組號。對於
乙太網,Group 取值範圍為0-255 。
Authentication Data :8 Byte 8 字元長的的口令,用於組內成員相互鑑別。 Vritual IP Address
:4 Byte
備份組的虛擬
IP位址,備份組模擬的
虛擬路由器的 IP 地址。虛擬路由器還有一 MAC 地址,它
由組號直接映射而成:0X00 00 0C 07 AC ** ,其中“**”為備份組號。 組內各成員須至少有如下信息
: (1)備份組號(Group); (2)虛擬 MAC 地址(Virtual MAC Address); (3)優先權
(Priority); (4)Authentication Data; (5)Hello Time; (6)Hold Time; 至少一位組員有
如下信息: (1)虛擬 IP 地址(Virtual IP Address); 每位組員可選擇配置如下信息:
(1)搶占標誌(Preempt); 如果某位組員的 Preempt 置位,又收到活動
路由器的 Hello 報文,發現
自己的優先權比活動路由器高,則該組員可強行取代成為活動路由器。
多備份組
(MHSRP)
在一
網段內,多個
備份組可以共存。每個備份組模擬成一
虛擬路由器,每個這樣的虛擬路由器配置一虛擬
MAC 地址和一虛擬 IP 地址。該虛擬
IP位址應屬於本網段,而且不與網段內的任何
路由器和
主機的IP位址
相同,也不與網段內的其他虛擬路由器的虛擬IP位址相同。 一台路由器也可以參加多個備份組,為多個
組作備份。 路由器的 HSRP 配置是針對具體接口的,因此需要在接口模式下配置。在一台路由器上,備
份組由(接口,組號)唯一確定。每個備份組都有屬於自己的數據和狀態。 如果一台路由器有兩個以太
網口,可以分別在兩個接口上配置兩個 HSRP
備份組,為不同
網段使用。
配置方法
# [no] standby [group-number] ip [virtual ip address]
說明: 使
路由器在指定局域
網段加入或退出一個
備份組。需要指定備份組號和虛擬 IP 地址。備份組號範圍從 0 到 255,如 group-number 不指定,備份組號預設為 0,virtual ip address 如果不指定,路由器不會參與備份,直到從備份組中的活動路由器獲得虛擬 IP 地址。注意虛擬 IP 地址應該是接口所在網段的地址。一旦退出 HSRP 備份組,則
路由器在該
備份組上設定的所有 HSRP 特性不再有效(如
優先權,授權字等)。
# standby [group-number] priority [priority-value]
說明: HSRP 中根據優先權來確定參與備份組的每台路由器的地位,備份組中優先權最大並且已獲得虛擬 IP 地址的路由器將成為活動路由器,優先權其次的路由器將成為備份路由器。優先權
預設值是 100,可設定範圍從 0 到 255。
# standby [group-number] preempt
說明: 一旦
備份組中的某台
路由器成為活動路由器,只要它沒有出現故障,其它路由器即使隨後被配置更高的
優先權,也不會成為活動路由器,除非被設定
搶占方式。路由器如果設定搶占方式,它一旦發現自己的優先權比當前的活動路由器的優先權高,就會成為活動路由器。相應地,原活動路由器會退出活動態,成為備份路由器或其它。預設方式是不搶占。
# standby [group-number] authentication string
說明: HSRP 授權字確認同備份組間其它路由器的有效性。授權字 string 的長度不超過 8 個位元組。注意:同一
備份組要設定相同的授權字。
# standby [group-number] timers [hello_time] [hold_time]
說明: HSRP 備份組
路由器之間通過定時傳送 Hello
報文確認相互的狀態,超過一定時間(hold time)沒有收到某台路由器的 Hello 報文,則認為它已關機或出現故障。用戶可以調整傳送 Hello 報文的間隔時間(hello time)和逾時時間(hold time)。預設值分別是 3 秒和 10 秒。時間單位是秒。注意:同一
備份組要設定相同的 hello time 和 hold time。
# standby [group-number] trackinterface_name [priority-reduced]
說明: HSRP 監視接口功能,更好地擴充了備份功能,即不僅在路由器出現故障時提供備份功能,而且在某
網路接口不可用時,也可以使用備份功能。命令作用是監視接口interface_name,如果接口變為不可用,則將
優先權減少 priority-reduced (priority-reduced 預設值為 10) 。
分析
每次HSRP Active變更時,都會導致交換MAC表的虛擬MAC接口的改變。
例,當一個
路由器 (A) 宣告是Active時,所傳送的Hello, Coup, ARP Reply包用的MAC源地址是HSRP虛擬MAC. 如果另一個路由器 (B) 稍前才宣告自己是Active, 交換機MAC表的虛擬MAC條目會指向B。 在收到A傳送的Hello, Coup, ARP Reply時,交換機會把其MAC表的虛擬MAC條目的接口從指向B改為指向A。
區域網路中,主機和網關間可能若有好幾個交換機。那么,如何能讓所有的交換機都把其(虛擬MAC,接口)指向當前的
路由器呢?
HSRP用了一個簡單巧妙的方法:把ARP Reply設為
廣播包,並配置其目的MAC地址為虛擬MAC,目的IP設為虛擬IP。其作用有二:
1。 所有的
交換機都會收到這個ARP Reply, 並更新MAC表,把 (虛擬MAC,接口)指向Active路由器。
2。主機收到 ARP Reply時,看到報文里的target ip不是自己的IP,就會丟棄,所以ARP Reply沒有副作用。
3) HSRP
路由器傳送Hello 所使用的MAC源地址
這得根據路由器的狀態而定。如果是Active, Hello 的souce MAC是虛擬MAC。
如果是Standby或Speak,Hello 的souce MAC是路由器接口的MAC。