HSRP

簡介

HSRP(Hot Standby Router Protocol 熱備份路由器協議)是Cisco的專有協議。HSRP把多臺路由器組成一個“熱備份組”,形成一個虛擬路由器。這個組內只有一個路由器是Active(活動)的,並由它來轉發數據包,如果活動路由器發生了故障,備份路由器將成爲活動路由器。從網絡內的主機來看,網關並沒有改變。

HSRP的工作過程:

HSRP路由器利用Hello包來互相監聽各自的存在。當路由器長時間沒有接收到Hello包時,就認爲活動路由器故障,備份路由器就會成爲活動路由器。HSRP協議利用優先級決定哪個路由器成爲活動路由器。如果一個路由器的優先級比其它路由器的優先級高,則該路由器成爲活動路由器。路由器的默認優先級是100。在一個組中,最多有一個活動路由器和一個備份路由器。HSRP路由器發送的組播(224.0.0.2)消息有以下三種:

Hello:通知其它路由器發送者的HSRP優先級和狀態信息,HSRP路由器默認每3秒發送一個Hello消息。

Coup:當一個備用路由器變爲一個活動路由器時發送一個Coup消息。

Resign:當活動路由器要當機或者當有優先級更高的路由器發送Hello消息時,主動發送一個Resign消息。

HSRP的報文格式:

[轉載]HSRP
①版本:指示HSRP的版本信息。

②操作碼:用來描述數據包中報文的類型,可能的值爲0、1和2,分別表示是Hello、Coup和Resign消息。

③狀態:描述發出該報文的路由器的當前狀態。有0、1、2、4、8、16六種狀態,分別表示爲Initial、Learn、

  Listen、Speak、Standby和Active狀態。

④呼叫時間(Hellotime):只在呼叫報文中有意義,表示路由器定時發送呼叫報文的間隔時間,以秒爲單位。如

  果該參數沒有在路由器上配置,它可能要從活動路由器上學習獲得。默認值爲3秒。

⑤保持時間(Holdtime):只在呼叫報文中有意義,被接收路由器用來判斷該呼叫報文是否合法,單位爲秒,其值

  至少是呼叫時間的3倍。如果該參數沒有配置,也同樣可以從活動路由器上學習。活動路由器不能從等待路由

  器學習呼叫時間和保持時間,它只能繼續使用從先前的活動路由器學習來的該值。默認值爲10秒。

⑥優先級:該參數用來選擇活動和等待路由器,兩個具有不同優先級的路由器,優先級高的將成爲活動路由器。

  兩個具有相同優先級的路由器,IP地址大的將成爲活動路由器。默認優先級爲100。

⑦組:用來標記路由器所在的熱等待組。對令牌環類型的網絡,合法的值是0、1和2,對於其它類型的網絡,合

  法值是0-255。

⑧認證碼:包括8個明文的字符作爲密碼,如果沒有配置,默認值爲cisco。

⑨虛擬IP地址:用來指定本熱等待組的虛擬IP地址,它可以從活動路由器的呼叫報文中學習到。如果沒有配置該

  地址,並且呼叫報文是需要認識的,那麼只能通過活動路由器學習。
HSRP路由器的6中狀態:

1.Initial:HSRP啓動時的狀態,HSRP還沒有運行,一般是在改變配置或端口剛剛啓動時進入該狀態。

2.Learn:在該狀態下,路由器還沒有決定虛擬IP地址,也沒有看到認證的、來自活動路由器的Hello報文。路由

  器仍在等待活動路由器發來的Hello報文。

3.Listen:路由器已經得到了虛擬IP地址,但是它既不是活動路由器也不是等待路由器。它一直監聽從活動路由

  器和等待路由器發來的Hello報文。

4.Speak:在該狀態下,路由器定期發送Hello報文,並且積極參加活動路由器或等待路由器的競選。如果選出活

  動路由和等待路由,則變成監聽狀態(Listen)。而此時只有活動路由器和等待路由處於說話狀態。

5.Standby:處於該狀態的路由器是下一個候選的活動路由器,它定時發送Hello報文。

6.Active:處於活動狀態的路由器承擔轉發數據包的任務,這些數據包是發給該組的虛擬MAC地址的。它定時發

  出Hello報文。

HSRP的2個定時器:

HSRP使用2個定時器:Hello間隔和Hold時間。默認Hello間隔是3秒,默認的Hold間隔是10秒。Hello間隔定義了兩組路由器之間交換信息的頻率。Hlod間隔定義了經過多長時間後,沒有收到其它路由器的信息,則活動路由器或者備用路由器就會被宣告爲失敗。配置計時器並不是越小越好,雖然計時器越小則切換時間越短。計時器的配置需要和STP等的切換時間相一致。另外,Hold間隔最少應該是Hello間隔的3倍。

 

實驗

在路由器和三層交換機上都可以配置HSRP,這裏是在路由器R1和R3上配置。

命令:
R1(config-if)#standby 1 ip 192.168.13.254 //啓用HSRP功能,創建standby組1,並設置虛擬網關IP地址
R1(config-if)#standby priority 120  //設置HSRP的優先級,該值大的會搶佔成Active路由器,默認爲100

R1(config-if)#standby 1 preempt        //設置允許在該路由器優先級是最高時搶佔爲活動路由器
R1(config-if)#standby 1 timers 3 10        //設置Hellotime爲3秒,Holdtime爲10秒,默認即爲該值
R1(config-if)#standby 1 authentication md5 key-string cisco        //配置認證密碼

R1(config-if)#standby 1 track s0/0 30        //配置端口跟蹤

[轉載]HSRP

說明:

①相同組號的路由器屬於同一個HSRP組,所有屬於同一個HSRP組的路由器的虛擬IP地址必須一致。

②“standby 1 preempt”命令:

  1>如果不配置該命令,即使該路由器優先級再高,也不會成爲Active路由;

  2>如果再配置“standby 1 preempt delay minimum 1000”命令,則會延時1000毫秒才進行搶佔。

③Hellotime:路由器每間隔多長時間發送Hello信息;Holdtime:在多長時間內同組的其它路由器沒有收到活動路

  由器的信息,則認爲活動路由器發生故障;如果要更改默認值,所有同HSRP組的路由器該項設置必須一致。
④配置認證密碼爲了防止非法設備加入到HSRP組,並且同HSRP組的密碼必須一致。

⑤端口跟蹤:如果試驗中沒有配置s0/0的端口跟蹤,當R1的s0/0接口出現問題,R1將沒有到達R2的Loopback0接

  口所在網段的路由。然而R1和R3之間的以太網仍然沒有問題,HSRP的Hello包正常發送和接收。因此R1仍然是

  虛擬網關192.168.13.254的活動路由器,Server的數據仍會發送給R1,這樣會造成Server無法ping通R2的

  Loopback接口。當配置路由跟蹤後,端口跟蹤使得R1發現s0/0上的鏈路出現問題後,把自己的優先級(我們設

  置的爲120)減去一個數字(我們設置的爲30),成爲了90。由於R3的優先級爲默認值100,這樣R3就成爲了活動

  路由器,Server的數據包將發往R3。降低的值應該選取合適的值,使得其他路由器能成爲活動路由器。

⑥可以使用“standby 1 mac-address”命令修改虛擬MAC地址,系統默認的MAC地址爲“0000.0c07.acXX”,

  “XX”爲HSRP的組號。

⑦可以使用“standby 1 name”命令設置HSRP組1的名字,如果沒有設置,系統將自動生成。

⑧由於HSRP的兩個版本version1和version2不兼容,可以使用“standby version”命令設置HSRP的版本。

配置IP地址及路由:

R1(config)#int f1/0

R1(config-if)#ip add 192.168.13.1 255.255.255.0

R1(config-if)#no sh

R1(config)#int s0/0

R1(config-if)#ip add 192.168.12.1 255.255.255.0

R1(config-if)#no sh

R1(config)#router rip
R1(config-router)#network 192.168.12.0
R1(config-router)#network 192.168.13.0
R1(config-router)#passive-interface f1/0        //防止從該接口發送RIP信息給R3

R2(config)#int lo0
R2(config-if)#ip add 192.168.2.2 255.255.255.0
R2(config)#int s0/0
R2(config-if)#ip add 192.168.12.2 255.255.255.0
R2(config-if)#clock rate 128000
R2(config-if)#no sh
R2(config)#int s0/1
R2(config-if)#ip add 192.168.23.2 255.255.255.0
R2(config-if)#clock rate 128000
R2(config-if)#no sh
R2(config)#router rip

R2(config-router)#network 192.168.2.0
R2(config-router)#network 192.168.12.0
R2(config-router)#network 192.168.23.0
R3(config)#int f1/0
R3(config-if)#ip add 192.168.13.3 255.255.255.0
R3(config-if)#no sh
R3(config)#int s0/1
R3(config-if)#ip add 192.168.23.3 255.255.255.0
R3(config-if)#no sh
R3(config)#router rip
R3(config-router)#network 192.168.23.0
R3(config-router)#network 192.168.13.0
R3(config-router)#passive-interface f1/0

配置HSRP:

R1(config)#int f1/0
R1(config-if)#standby 1 ip 192.168.13.254
R1(config-if)#standby priority 120

R1(config-if)#standby 1 preempt
R1(config-if)#standby 1 timers 3 10
R1(config-if)#standby 1 authentication md5 key-string cisco

R1(config-if)#standby 1 track s0/0 30

R3(config)#int f1/0
R3(config-if)#standby 1 ip 192.168.13.254
R3(config-if)#standby 1 preempt
R3(config-if)#standby 1 timers 3 10
R3(config-if)#standby 1 authentication md5 key-string cisco

R1(config-if)#standby 1 track s0/0 30
實驗調試

R1#show standby brief        //查看HSRP簡要信息

[轉載]HSRP
R1#show standby        //查看HSRP詳細信息
[轉載]HSRP
Server:ping 192.168.2.2 -t

R1(config)#int f1/0

R1(config)#sh
[轉載]HSRP
在Server上連續ping路由器R2的Loopback接口的IP地址(192.168.2.2),在R1上關閉F1/0接口,可以發現:當R1故障時,R3很快就替代了R1,計算機的通信幾乎沒有受到什麼影響。

說明:如果重新打開R1的F1/0接口,由於再R1上配置了搶佔(Preempt),因此R1又會成爲活動路由器。

R3#debug standby        //以下是當R1的F1/0接口關閉後,R3成爲活動路由器過程中的debug信息
[轉載]HSRP配置多個HSRP組

之前的步驟已經虛擬了192.168.13.254網關,對於這個網關只能有一個活動路由器,於是這個路由器將承擔全部的數據流量。我們可以再創建一個HSRP組,虛擬出另一個網關192.168.13.253,這時R3是活動路由器,讓一部分計算機指向這個網關,這樣就能做到負載平衡。

R1(config)#int f1/0

R1(config-if)#standby 1 ip 192.168.13.254

R1(config-if)#standby 1 priority 120

R1(config-if)#standby 1 preempt

R1(config-if)#standby 1 authentication md5 key-string cisco

R1(config-if)#standby 1 track s0/0 30

R1(config-if)#standby 2 ip 192.168.13.253

R1(config-if)#standby 2 preempt

R1(config-if)#standby 2 authentication md5 key-string cisco

R3(config)#int f1/0

R3(config-if)#standby 1 ip 192.168.13.254

R3(config-if)#standby 1 preempt

R3(config-if)#standby 1 authentication md5 key-string cisco

R3(config-if)#standby 2 ip 192.168.13.253

R3(config-if)#standby 2 priority 120

R3(config-if)#standby 2 preempt

R3(config-if)#standby 2 authentication md5 key-string cisco

R3(config-if)#standby 2 track s0/1 30

說明:我們這裏創建了兩個HSRP組,組1的IP爲192.168.13.254,活動路由器爲R1,一部分計算機的網關指向

  192.168.13.254。組2的IP爲192.168.13.253,活動路由器爲R2,其餘計算機的網關指向192.168.13.253。這

  樣,當網絡全部正常時,一部分數據是由R1轉發的,其餘數據是由R2轉發的,實現了負載平衡。當一個路由器

  出現問題時,則另一個路由器就成爲兩個HSRP組的活動路由器,承擔全部的數據轉發。通過這種方式實現負載

  平衡,要求不同的計算機在設置網關時有所不同,如果計算機的IP是DHCP分配的,那這種方法就不太方便了。

注意:HSRP實際上在局域網用的較多,由於局域網內大多使用三層交換機,所以這時HSRP是在交換機上配置的。

  另外,HSRP有Version1和Version2,兩者不兼容,因此所有路由器或者交換機要使用相同的HSRP版本,可以使

  用“standby version”命令設置版本。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章