HSRP简介
HSRP(Hot Standby Router Protocol 热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内只有一个路由器是Active(活动)的,并由它来转发数据包,如果活动路由器发生了故障,备份路由器将成为活动路由器。从网络内的主机来看,网关并没有改变。
HSRP工作原理
HSRP(Hot Standby Router Protocol 热备份路由器协议)把多台路由器组成一个虚拟路由器(Virtual Router)。PC上设置网关后,如果网关down了就断网了,导致网络连接不稳定。因此需要备用网关,即冗余网关,确保网络连接正常。HSRP可以提供冗余网关的解决方案。
VR虽然是虚拟路由器,但同样需要有三层IP地址和二层Mac地址。三层IP地址是手动配的,但不能乱配,需要配置成和真实路由器处于同一网段的IP地址。VR的二层地址是自动生成的。例如0000.0c07.ac01,前6位0000.0c是Cisco买来的。中间4位07.ac是HSRP号。最后2位01是HSRP Group组号。每个HSRP组内只能有一个路由器是Active(活动)的,一个路由器是Standby备份的,其余路由器将处于监听状态。通过Active路由器来转发数据,如果Active路由器down了,Standby备份路由器将成为Active路由器,以保证网络的正常运行。属于同一个HSRP组的路由器的虚拟三层IP地址必须一致。
例如将真实路由器A和B捆绑成虚拟路由器VR后,谁成为Active路由器,谁成为Standby备份路由器呢?HSRP用优先级来决定,优先级高的成为Active路由器。优先级默认都是100,可以修改。如果优先级相同,IP地址高的成为Active路由器。路由器间通过组播(224.0.0.2)Hello包来互相监听各自的存在。Hello包默认每3秒发一次,如果长期收不到Active路由器发出的Hello包,就认为Active路由器出故障了,Standby备份路由器就将成为Active路由器。
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状态
Initial
初始状态,Hold时间10s后进入Listen
Learn
例如路由器A上新建了VR并设置了VR的IP,B加入了该VR但没有设置VR的IP,那B会从A那里学习到VR的IP。当然如果A和B都手动设了同样的VR的IP,就不会有这个状态
Listen
路由器加入进VR后,此时它既不是Active也不是Standby路由器,因此它监听Active和Standby发出的Hello包。如果收不到,Hold时间10s后进入Speak
Speak
路由器主动发送Hello包,包含自己的优先级,自己的IP地址,VR的IP地址等。参加竞选,竞争成为Active或Standby备份路由器。
Standby
竞选成为Standby路由器后,将定时发送Hello包。如果Standby状态下收不到Active路由器的Hello包,不经过Hold时间马上将自己置为Active。
Active
竞选成为Active路由器后,将定时发送Hello包。并承担转发数据的责任。
(Hello时间默认3s,Hold时间默认10s,是可以修改的,你可以改小点,比如改成500ms,但时间越短,占的资源就越多,需要你权衡利弊。通常Hold时间最少应是Hello时间的3倍)。
HSRP定时器
HSRP使用2个定时器:Hello间隔和Hold时间。默认Hello间隔是3秒,默认的Hold间隔是10秒。Hello间隔定义了两组路由器之间交换信息的频率。Hlod间隔定义了经过多长时间后,没有收到其它路由器的信息,则活动路由器或者备用路由器就会被宣告为失败。配置计时器并不是越小越好,虽然计时器越小则切换时间越短。计时器的配置需要和STP等的切换时间相一致。另外,Hold间隔最少应该是Hello间隔的3倍。