提高网络的可用性(二)-HSRP协议及其配置

本文详细介绍HSRP(热备份路由器协议)的概念、工作原理、报文格式及路由器状态等内容,并通过具体实验演示如何配置HSRP,实现路由器的冗余与负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  注:该文大部分内容来自文章《Cisco-路由器HSRP 热备份路由器协议-配置终结篇》,http://blog.51cto.com/allen686/1661752。在此之上,本文作者添加了自己的一些理解和实验过程。本文无任何商用目的,仅供大家学习,交流讨论之用。若有侵犯上述文章知识产权,请联系本文作者删除,谢谢。

一、简介

  HSRP(Hot Standby Router Protocol,热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内有一个路由器是Active的,称为活动路由器;有一个路由器是standby的,称为备份路由器。活动路由器负责所在的热备份组转发数据包的工作,如果活动路由器发生了故障,备份路由器将成为活动路由器。从网络内的主机来看,网关并没有改变。(因为同一组内的所有路由器共用同一个虚拟ip地址作为网关)。

二、HSRP的工作过程

  HSRP路由器利用Hello包来互相监听各自的存在。当路由器长时间没有接收到Hello包时,就认为活动路由器故障,备份路由器就会成为活动路由器。

  HSRP协议利用优先级决定哪个路由器成为活动路由器。如果一个路由器的优先级比其它路由器的优先级高,则该路由器成为活动路由器。路由器的默认优先级是100。在一个组中,最多有一个活动路由器和一个备份路由器。HSRP路由器发送的组播(224.0.0.2)消息有以下三种:

  Hello:通知其它路由器发送者的HSRP优先级和状态信息,HSRP路由器默认每3秒发送一个Hello消息。

  Coup:当一个备用路由器变为一个活动路由器时发送一个Coup消息。

  Resign:当活动路由器要宕机或者当接收到优先级更高的路由器发送的Hello消息时,主动发送一个Resign消息。

三、HSRP的报文格式

  

  HSRP的数据包具有32位,包含的信息如上图。

  ①Version:指示HSRP的版本信息。

  ②Opcode:操作码。用来描述数据包中报文的类型,可能的值为0、1和2,分别表示是Hello、Coup和Resign消息。

  ③State:描述发出该报文的路由器的当前状态。有0、1、2、4、8、16六种状态,分别表示为Initial、Learn、Listen、Speak、Standby和Active状态。

  ④Hellotime:只在Hello消息报文中有意义,表示路由器定时发送Hello消息的间隔时间,以秒为单位。如果该参数没有在路由器上配置,它可能要从活动路由器上学习获得。默认值为3秒。

  ⑤Holdtime:只在Hello消息报文中有意义,被接收路由器用来判断该Hello消息报文是否合法,单位为秒,其值 至少是Hellotime的3倍。如果该参数没有配置,也同样可以从活动路由器上学习。活动路由器不能从备份路由器学习Hellotime和Holdtime,它只能继续使用从先前的活动路由器学习来的该值。默认值为10秒。

  ⑥Priority:优先级。该参数用来选择活动和备份路由器,两个具有不同优先级的路由器,优先级高的将成为活动路由器。两个具有相同优先级的路由器,IP地址值大的将成为活动路由器。路由器的默认优先级为100。

  ⑦Group:用来标记路由器所在的热备份组。对令牌环类型的网络,合法的值是0、1和2,对于其它类型的网络,合法值是0-255。

  ⑧Authentication Data:认证码。包括8个明文的字符作为密码,如果没有配置,默认值为cisco。

  ⑨Vitual IP Address:虚拟ip地址。用来指定本热备份组的虚拟IP地址,它可以从活动路由器的Hello消息报文中学习到。如果没有配置该地址,并且Hello消息报文是需要认识的,那么只能通过活动路由器学习。

四、HSRP路由器的6中状态

  1.Initial:HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或端口刚刚启动时进入该状态。

  2.Learn:在该状态下,路由器还没有决定虚拟IP地址,也没有看到认证的、来自活动路由器的Hello报文。路由器仍在等待活动路由器发来的Hello报文。

  3.Listen:路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是等待路由器。它一直监听从活动路由器和等待路由器发来的Hello报文。

  4.Speak:在该状态下,路由器定期发送Hello报文,并且积极参加活动路由器或等待路由器的竞选。如果选出活动路由器和备份路由器,则变成监听状态(Listen)。而此时只有活动路由器和备份路由处于Speak状态。

  5.Standby:处于该状态的路由器是下一个候选的活动路由器,它定时发送Hello报文。

  6.Active:处于活动状态的路由器承担转发数据包的任务,这些数据包是发给该组的虚拟MAC地址的。它定时发出Hello报文。

五、HSRP的2个定时器

  HSRP使用2个定时器:Hello间隔和Hold时间。默认Hello间隔是3秒,默认的Hold间隔是10秒。Hello间隔定义了两组路由器之间交换信息的频率。Hlod间隔定义了经过多长时间后,没有收到其它路由器的信息,则活动路由器或者备用路由器就会被宣告为失败。配置计时器并不是越小越好,虽然计时器越小则切换时间越短。计时器的配置需要和STP等的切换时间相一致。另外,Hold间隔最少应该是Hello间隔的3倍。

六、实验

   实验拓扑如下:

                    

  将各路由器的IP地址配置如上,所有的路由器均使用255.255.255.0的子网掩码。即前24位作为网络位,后8位作为主机位。

  R1,R2,R3上需要启动动态路由协议,使得全网连通,ospf或者rip都可以,这里我们使用的是ospf;因为我们要将用R4模拟主机,所以在R4中用no ip routing命令禁用路由功能。

  接下来配置HSRP,在路由器和三层交换机上都可以配置HSRP,这里是在路由器R2和R3上配置。

  命令:

  R2(config)#int f0/0                 //进入f0/0端口

  R2(config-if)#standby 1 ip 192.168.100.23     //启用HSRP功能,创建standby组1,并设置虚拟网关IP地址192.168.100.23

  R2(config-if)#standby 1 priority 200        //设置HSRP的优先级,该值大的会抢占成Active路由器,默认为100

  R2(config-if)#standby1 preempt                //设置允许在该路由器优先级是最高时抢占为活动路由器

  R2(config-if)#standby1 timers 3 10              //设置Hellotime为3秒,Holdtime为10秒,默认即为该值

  R2(config-if)#standby1 authentication md5 key-string cisco       //配置认证密码

  R2(config-if)#standby1 track s0/0 30             //配置端口跟踪

 

  R3(config)#int f0/0

  R3(config-if)#standby 1 ip 192.168.100.23      //注意同一个热备份组中路由器的虚拟网关IP地址相同

  R3(config-if)#standby 1 preempt

  R3(config-if)#standby 1 timers 3 10

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

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

  

  备注:

  ①相同组号的路由器属于同一个HSRP组,所有属于同一个HSRP组的路由器的虚拟IP地址必须一致。

  ②“standby 1 preempt”命令:

      1>如果不配置该命令,即使该路由器优先级再高,也不会成为Active路由;

      2>如果再配置“standby 1 preempt delayminimum 1000”命令,则会延时1000毫秒才进行抢占。

  ③Hellotime:路由器每间隔多长时间发送Hello信息;Holdtime:在多长时间内同组的其它路由器没有收到活动路由器的信息,则认为活动路由器发生故障;如果要更改默认值,所有同HSRP组的路由器该项设置必须一致。

  ④配置认证密码为了防止非法设备加入到HSRP组,并且同HSRP组的密码必须一致。

  ⑤可以使用“standby 1 mac-address”命令修改虚拟MAC地址,系统默认的MAC地址为“0000.0c07.acXX”,XX”为HSRP的组号

  ⑥可以使用“standby 1 name”命令设置HSRP组1的名字,如果没有设置,系统将自动生成。

  ⑦由于HSRP的两个版本version1和version2不兼容,可以使用“standby version”命令设置HSRP的版本。

 

  使用show standby brief命令查看HSRP简要信息。(如果要查看详细信息,请用show standby命令),可以看到,当前的Active路由器是R2,而Standby路由器为R3.

  

  在R4上连续ping路由器R1的s1/0端口的IP地址(192.168.12.1),在R2上关闭f0/0端口,可以发现:当R2故障时,R3很快就替代了R2,计算机的通信几乎没有受到什么影响。

  说明:如果重新打开R2的f0/0端口,由于在R2上配置了抢占(Preempt),因此R2又会成为活动路由器。

  

  

  R3#debug standby        //以下是当R2的f0/0端口关闭后,R3成为活动路由器过程中的debug信息

  

 

七、配置多个HSRP组

  之前的步骤已经虚拟了192.168.100.23网关,对于这个网关只能有一个活动路由器,于是这个路由器将承担全部的数据流量。我们可以再创建一个HSRP组,虚拟出另一个网关192.168.100.32,这时R3是活动路由器,让一部分计算机指向这个网关,这样就能做到负载平衡。

  R2(config)#int f0/0

  R2(config-if)#standby 2 ip 192.168.100.32

  R2(config-if)#standby 2 preempt

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

  R3(config)#int f0/0

  R3(config-if)#standby 2 ip 192.168.100.32

  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的配置,我们已经创建了两个HSRP组,组1的IP为192.168.100.23,活动路由器为R2,一部分计算机的网关指向192.168.100.23。组2的IP为192.168.100.32,活动路由器为R3,其余计算机的网关指向192.168.100.32。这样,当网络全部正常时,一部分数据是由R2转发的,其余数据是由R3转发的,实现了负载平衡。当一个路由器出现问题时,则另一个路由器就成为两个HSRP组的活动路由器,承担全部的数据转发。通过这种方式实现负载平衡,要求不同的计算机在设置网关时有所不同,如果计算机的IP是DHCP分配的,那这种方法就不太方便了。

  注意:HSRP实际上在局域网用的较多,由于局域网内大多使用三层交换机,所以这时HSRP是在交换机上配置的。另外,HSRP有Version1和Version2,两者不兼容,因此所有路由器或者交换机要使用相同的HSRP版本,可以使用“standby version”命令设置版本。

 

---恢复内容结束---

 

HSRP协议及其配置

 

  注:该文大部分内容来自文章《Cisco-路由器HSRP 热备份路由器协议-配置终结篇》,http://blog.51cto.com/allen686/1661752。在此之上,本文作者添加了自己的一些理解和实验过程。本文无任何商用目的,仅供大家学习,交流讨论之用。若有侵犯上述文章知识产权,请联系本文作者删除,谢谢。

 

一、简介

  HSRP(Hot Standby Router Protocol,热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内有一个路由器是Active的,称为活动路由器;有一个路由器是standby的,称为备份路由器。活动路由器负责所在的热备份组转发数据包的工作,如果活动路由器发生了故障,备份路由器将成为活动路由器。从网络内的主机来看,网关并没有改变。(因为同一组内的所有路由器共用同一个虚拟ip地址作为网关)。

二、HSRP的工作过程

  HSRP路由器利用Hello包来互相监听各自的存在。当路由器长时间没有接收到Hello包时,就认为活动路由器故障,备份路由器就会成为活动路由器。

  HSRP协议利用优先级决定哪个路由器成为活动路由器。如果一个路由器的优先级比其它路由器的优先级高,则该路由器成为活动路由器。路由器的默认优先级是100。在一个组中,最多有一个活动路由器和一个备份路由器。HSRP路由器发送的组播(224.0.0.2)消息有以下三种:

  Hello:通知其它路由器发送者的HSRP优先级和状态信息,HSRP路由器默认每3秒发送一个Hello消息。

  Coup:当一个备用路由器变为一个活动路由器时发送一个Coup消息。

  Resign:当活动路由器要宕机或者当接收到优先级更高的路由器发送的Hello消息时,主动发送一个Resign消息。

三、HSRP的报文格式

  

  HSRP的数据包具有32位,包含的信息如上图。

  ①Version:指示HSRP的版本信息。

  ②Opcode:操作码。用来描述数据包中报文的类型,可能的值为0、1和2,分别表示是Hello、Coup和Resign消息。

  ③State:描述发出该报文的路由器的当前状态。有0、1、2、4、8、16六种状态,分别表示为Initial、Learn、Listen、Speak、Standby和Active状态。

  ④Hellotime:只在Hello消息报文中有意义,表示路由器定时发送Hello消息的间隔时间,以秒为单位。如果该参数没有在路由器上配置,它可能要从活动路由器上学习获得。默认值为3秒。

  ⑤Holdtime:只在Hello消息报文中有意义,被接收路由器用来判断该Hello消息报文是否合法,单位为秒,其值 至少是Hellotime的3倍。如果该参数没有配置,也同样可以从活动路由器上学习。活动路由器不能从备份路由器学习Hellotime和Holdtime,它只能继续使用从先前的活动路由器学习来的该值。默认值为10秒。

  ⑥Priority:优先级。该参数用来选择活动和备份路由器,两个具有不同优先级的路由器,优先级高的将成为活动路由器。两个具有相同优先级的路由器,IP地址值大的将成为活动路由器。路由器的默认优先级为100。

  ⑦Group:用来标记路由器所在的热备份组。对令牌环类型的网络,合法的值是0、1和2,对于其它类型的网络,合法值是0-255。

  ⑧Authentication Data:认证码。包括8个明文的字符作为密码,如果没有配置,默认值为cisco。

  ⑨Vitual IP Address:虚拟ip地址。用来指定本热备份组的虚拟IP地址,它可以从活动路由器的Hello消息报文中学习到。如果没有配置该地址,并且Hello消息报文是需要认识的,那么只能通过活动路由器学习。

四、HSRP路由器的6中状态

  1.Initial:HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或端口刚刚启动时进入该状态。

  2.Learn:在该状态下,路由器还没有决定虚拟IP地址,也没有看到认证的、来自活动路由器的Hello报文。路由器仍在等待活动路由器发来的Hello报文。

  3.Listen:路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是等待路由器。它一直监听从活动路由器和等待路由器发来的Hello报文。

  4.Speak:在该状态下,路由器定期发送Hello报文,并且积极参加活动路由器或等待路由器的竞选。如果选出活动路由器和备份路由器,则变成监听状态(Listen)。而此时只有活动路由器和备份路由处于Speak状态。

  5.Standby:处于该状态的路由器是下一个候选的活动路由器,它定时发送Hello报文。

  6.Active:处于活动状态的路由器承担转发数据包的任务,这些数据包是发给该组的虚拟MAC地址的。它定时发出Hello报文。

五、HSRP的2个定时器

  HSRP使用2个定时器:Hello间隔和Hold时间。默认Hello间隔是3秒,默认的Hold间隔是10秒。Hello间隔定义了两组路由器之间交换信息的频率。Hlod间隔定义了经过多长时间后,没有收到其它路由器的信息,则活动路由器或者备用路由器就会被宣告为失败。配置计时器并不是越小越好,虽然计时器越小则切换时间越短。计时器的配置需要和STP等的切换时间相一致。另外,Hold间隔最少应该是Hello间隔的3倍。

六、实验

   实验拓扑如下:

                    

  将各路由器的IP地址配置如上,所有的路由器均使用255.255.255.0的子网掩码。即前24位作为网络位,后8位作为主机位。

  R1,R2,R3上需要启动动态路由协议,使得全网连通,ospf或者rip都可以,这里我们使用的是ospf;因为我们要将用R4模拟主机,所以在R4中用no ip routing命令禁用路由功能。

  接下来配置HSRP,在路由器和三层交换机上都可以配置HSRP,这里是在路由器R2和R3上配置。

  命令:

  R2(config)#int f0/0                 //进入f0/0端口

  R2(config-if)#standby 1 ip 192.168.100.23     //启用HSRP功能,创建standby组1,并设置虚拟网关IP地址192.168.100.23

  R2(config-if)#standby 1 priority 200        //设置HSRP的优先级,该值大的会抢占成Active路由器,默认为100

  R2(config-if)#standby1 preempt                //设置允许在该路由器优先级是最高时抢占为活动路由器

  R2(config-if)#standby1 timers 3 10              //设置Hellotime为3秒,Holdtime为10秒,默认即为该值

  R2(config-if)#standby1 authentication md5 key-string cisco       //配置认证密码

  R2(config-if)#standby1 track s0/0 30             //配置端口跟踪

 

  R3(config)#int f0/0

  R3(config-if)#standby 1 ip 192.168.100.23      //注意同一个热备份组中路由器的虚拟网关IP地址相同

  R3(config-if)#standby 1 preempt

  R3(config-if)#standby 1 timers 3 10

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

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

  

  备注:

  ①相同组号的路由器属于同一个HSRP组,所有属于同一个HSRP组的路由器的虚拟IP地址必须一致。

  ②“standby 1 preempt”命令:

      1>如果不配置该命令,即使该路由器优先级再高,也不会成为Active路由;

      2>如果再配置“standby 1 preempt delayminimum 1000”命令,则会延时1000毫秒才进行抢占。

  ③Hellotime:路由器每间隔多长时间发送Hello信息;Holdtime:在多长时间内同组的其它路由器没有收到活动路由器的信息,则认为活动路由器发生故障;如果要更改默认值,所有同HSRP组的路由器该项设置必须一致。

  ④配置认证密码为了防止非法设备加入到HSRP组,并且同HSRP组的密码必须一致。

  ⑤可以使用“standby 1 mac-address”命令修改虚拟MAC地址,系统默认的MAC地址为“0000.0c07.acXX”,XX”为HSRP的组号

  ⑥可以使用“standby 1 name”命令设置HSRP组1的名字,如果没有设置,系统将自动生成。

  ⑦由于HSRP的两个版本version1和version2不兼容,可以使用“standby version”命令设置HSRP的版本。

 

  使用show standby brief命令查看HSRP简要信息。(如果要查看详细信息,请用show standby命令),可以看到,当前的Active路由器是R2,而Standby路由器为R3.

  

  在R4上连续ping路由器R1的s1/0端口的IP地址(192.168.12.1),在R2上关闭f0/0端口,可以发现:当R2故障时,R3很快就替代了R2,计算机的通信几乎没有受到什么影响。

  说明:如果重新打开R2的f0/0端口,由于在R2上配置了抢占(Preempt),因此R2又会成为活动路由器。

  

  

  R3#debug standby        //以下是当R2的f0/0端口关闭后,R3成为活动路由器过程中的debug信息

  

 

七、配置多个HSRP组

  之前的步骤已经虚拟了192.168.100.23网关,对于这个网关只能有一个活动路由器,于是这个路由器将承担全部的数据流量。我们可以再创建一个HSRP组,虚拟出另一个网关192.168.100.32,这时R3是活动路由器,让一部分计算机指向这个网关,这样就能做到负载平衡。

  R2(config)#int f0/0

  R2(config-if)#standby 2 ip 192.168.100.32

  R2(config-if)#standby 2 preempt

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

  R3(config)#int f0/0

  R3(config-if)#standby 2 ip 192.168.100.32

  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的配置,我们已经创建了两个HSRP组,组1的IP为192.168.100.23,活动路由器为R2,一部分计算机的网关指向192.168.100.23。组2的IP为192.168.100.32,活动路由器为R3,其余计算机的网关指向192.168.100.32。这样,当网络全部正常时,一部分数据是由R2转发的,其余数据是由R3转发的,实现了负载平衡。当一个路由器出现问题时,则另一个路由器就成为两个HSRP组的活动路由器,承担全部的数据转发。通过这种方式实现负载平衡,要求不同的计算机在设置网关时有所不同,如果计算机的IP是DHCP分配的,那这种方法就不太方便了。

  注意:HSRP实际上在局域网用的较多,由于局域网内大多使用三层交换机,所以这时HSRP是在交换机上配置的。另外,HSRP有Version1和Version2,两者不兼容,因此所有路由器或者交换机要使用相同的HSRP版本,可以使用“standby version”命令设置版本。

 

转载于:https://www.cnblogs.com/liuyongdun/p/9082929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值