HSRP

4 Aug

HSRP(Hot Standby Router Protocol 热备份路由器协议)把多台路由器组成一个虚拟路由器(Virtual Router)。PC上设置网关后,如果网关down了就断网了,导致网络连接不稳定。因此需要备用网关,即冗余网关,确保网络连接正常。HSRP可以提供冗余网关的解决方案:假设有路由器A和B,PC网关设在A上,A出故障后导致断网,需要人工将PC的网关改成B,效率低且技术门槛高。HSRP将A和B捆绑在一起形成一个虚拟路由器VR,PC的网关设为VR的IP地址,这样对对PC来说并不知道真实路由器A和B的存在,即使A出故障,VR也能自动将网关切换为B,保证PC上网不受影响。

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地址必须一致。

HSRP工作原理

例如将真实路由器A和B捆绑成虚拟路由器VR后,谁成为Active路由器,谁成为Standby备份路由器呢?HSRP用优先级来决定,优先级高的成为Active路由器。优先级默认都是100,可以修改。如果优先级相同,IP地址高的成为Active路由器。路由器间通过组播(224.0.0.2)Hello包来互相监听各自的存在。Hello包默认每3秒发一次,如果长期收不到Active路由器发出的Hello包,就认为Active路由器出故障了,Standby备份路由器就将成为Active路由器。

HSRP有6种状态

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配置

以R2和R3为基础创建虚拟路由器作为PC的网关

20160205213554788

R2上创建虚拟路由器,三层IP为123.1.1.254,改高优先级使R2成为Active状态:

20160205214951153

(上面命令中R2(config-if)#standby 1 preempt用于打开抢占。HSRP默认是不能抢占的(类似OSPF里DR,BDR选举一样,选举完就不能变更了),比如A是Active,B是Standby,此时就算将B的优先级调的比A高也没用。只有将HSRP的抢占打开,B才能Active。)

R3上同样创建虚拟路由器,三层IP为123.1.1.254。由于不改优先级,默认是100,小于R2的优先级,因此R3将成为Standby备份路由器。

20160205215135341

查看R2和R3的VR状态:

20160205215957281

详细版看熟后,平时可以看看简约版:

20160205220302689

现在虚拟路由器已经创建成功,PC上只要将自己的网关配置成虚拟路由器的IP,即123.1.1.254即可。PC感觉不到R2和R3的存在,即使R2或R3任意一台路由器down掉,PC照样可以上网,实现了网关的冗余备份。

因为R2上面开启了track功能,假设PC从R2的环回口访问外网,现在将R2的环回口down掉,即上行链路down掉,那R2的虚拟路由器优先级将 降为20,R3将迅速抢占Active位置(当然R3上要开启抢占R3(config-if)#standby 1 preempt,否则是不会切换的),PC将经由R3去访问外网:

20160205221044098

HSRP负载均衡:

上面例子中都只standby 1新建了组1,可以多建几个组来实现负载均衡。例如你可以在R2和R3上再创建standby 2 ip 123.1.1.253。将组1的active弄到R2,将组2的active弄到R3。这样可以将某些PC网关设为组1从R1出去,某些PC网关设为组2从R2出去,实现网关的负载均衡。配置命令和上面没有任何不同,不必赘述。

最后,HSRP有Version1和Version2版本,是不兼容的,如果配置完没有起作用,可以standby version命令看一下路由器上的版本是否一致。如果不是用在路由器而是用在三层交换机上,因为STP生成树的关系,为提高效率最好将根桥设为Active

Leave a Reply

Your email address will not be published. Required fields are marked *