HSRP
HSRP(Hot Standby Routing Protocol)热备份路由选择协议
HSRP是思科私有的协议,HSRP起到一个双网关热备份的一个目的,不考虑线路问题针对设备而言,一个设备挂了还有另外一台设备,所以双网关也叫双机设备
HSRP是一个路由功能,不是一个交换功能,路由器和三层交换机上面都可以做
主设备叫做:active;从设备叫做:standby。理论上能实现一个秒切。主设备和从设备通过组播地址(224.0.0.2)来进行协商(HSRPv1的版本)
HSRP设备角色以及选举规则
优先级相同的情况下,默认优先级为100
官方角度:谁的物理接口ip地址比较大谁是主
实际角度:在真实的设备中,谁先起HSRP协议谁就是主设备
配置了HSRP的设备会相互交换hello包,hello包默认是3s发送一次,10s没收到就hold down
Active:在一个组内只有一个Active用于转发数据流量。
Standby:在一个组内只有一个Standby.用于监听Active,当Active失效后,成为Active
Other:在一个组内,不是Active也不是Standby会成为Other,用于监听HSRP流量。当Standby成为Active后。会在Other中再选举出Standby。
选举规则:
- 选举时针对某一个组的参数来选举的,并不是以一台路由器,或一个接口来进行选举,也就是说,一台路由的同一个接口,可以成为一个组的Active,也可以成为另外一个组的Standby。
- 通过优先级+IP地址。越大越优。
- 优先级:取值范围0-255。默认为100。可以通过命令进行修改:
- 当优先级相同的时候。使用IP地址进行选举
- 无视优先级,在虚IP是通过学习而来的那一次协商中,这台设备会成为Standby。
- 在成为一个Active之前。这台设备会先成为Standby
HSRP的5个状态
状态 | 定义 |
---|---|
Initial | 最开始的状态,初始状态表示路由器还未运行HSRP,路由器配置发生变化或接口刚进入up状态,HSRP路由器就会进入初始状态 |
Listen | 该路由器知道虚拟IP地址,但它既不是活跃路由器,也不是备用路由器,它会监听那些路由器发出的hello消息 |
Speak | 该路由器发送周期性hello消息,并且积极参与到活跃路由器或备用路由器中的选举中,一台路由器只有知道虚拟IP地址,才可以进入宣告状态 |
Standby | 该路由器是成为下一个活跃路由器的候选者,会发出周期性hello消息,在排除了暂时的条件之后,HSRP组中最多有一个路由器处于备用状态 |
Active | 该路由器负责转发所有发送到组虚拟MAC地址的数据包,它会周期性的发送hello消息,在排除了暂时的条件之后,HSRP组中有且只有一台路由器处于活跃状态 |
Initial:接口Shutdown后会进入这个状态,开启接口后,就会发送Hello报文。
Learn:学习状态,这个不是一个必经的状态,只有没有配置虚IP的设备才会进入这个状态,在这个状态下,没配置虚IP的设备会学习已配置虚IP设备上的虚IP。
Listen:进入这状态的设备会监听接收其他路由器发送的Hello报文。选举不了Active和Standby的设备,会在这个状态下,监听HSRP的Hello包。
Speak:这个状态下的设备,会参与路由器的Active和Standby的选举。
Standby:设备具有第二优的优先级会成为这个状态,在一个组内,最多只有一台设备会成为Standby
Active:设备具有最高的优先级会成为这个状态,用来响应终端的网关ARP请求,在个一组内最多只有一台设备会成为Active。
HSRP配置命令集
HSRP基础命令配置
配置案例:GW1和GW2做双机热备
在配置完基础的配置之后,我们开始在GW1和GW2配置HSRP
en
conf ter
int e0/0
standby 1 ip 192.168.1.1 //"1"是备份组号,范围0-255,备份设备之间的组号必须一样,后面的ip地址是虚拟出来的网关地址
standby preempt //开启抢占功能(通过其他参数来调节谁是主谁是从,它是否会进行抢占)
end
en
conf ter
int e0/0
standby 1 ip 192.168.1.1
standby preempt
end
进行HSRP的组查询(查看设备主从关系)
//GW1
show standby
standby表示从设备(GW1),active表示主设备(GW2)
现在两台设备的HSRP已经协商完成,我们让PC一直ping192.168.1.1,然后断开GW2的e0/0接口查看现象
//GW2
show standby
init表示装载中的状态,interface down表示告诉你接口down掉了,当断开GW2的e0/0,GW1立马就变成主设备
当我们又重新把GW2的e0/0接口开启,观察现象
此时会发现GW2并不会重新恢复到主设备,而变成了从设备。因为GW1设备已经接管成为主设备了
总结;在当前环境下,如果主设备出现故障导致切换,设备恢复后,是默认不会切换回来的
我们此时需要手工修改设备接口的优先级来实现一个主从设备的切换,前提是设备都开启抢占模式
en
conf ter
int e0/0
standby 1 priority 120 //修改优先级为120
end
//SW2
show standby
当配置完成之后GW2会立马切换成主设备,他们是通过hello包来维护了
HSRP计时器配置
修改hello包的时间,然后让PCping192.168.1.1的同时我们断掉GW2的e0/0,查看收敛时间
配置Hello和hold计时器(可设置为毫秒级别),hold计时器应该至少三倍于hello计时器
ne
conf ter
standby 1 timers 1 2 //表示1s发送一次hello包,2s没收到hold down
end
此时我们发现收敛的时间明显缩短了,所以通过手动修改我们hello的时间周期实现了一个更快速的切换
如果在配置的过程中遇到了一些双工匹配,速率的问题,那么可以修改接口的双工模式来进行解决
en
conf ter
int e0/0
duplex full
full-duplex
HSRP的端口跟踪
基于上面的实验,我们会发现下联接口虽然有个备份,但是如果GW1和GW2的上联接口断掉了是没有办法检测到的。可以采用HSRP特有的端口跟踪
配置案例:PC能ping通123.1.1.1,GW1和GW2做HSRP还有NAT,默认GW2为主设备(120),GW1为从设备(100)
配置好基础配置之后我们开始配置端口跟踪
en
conf ter
int e0/0
standby 1 track e0/1 40 //"e0/1“是你需要跟踪接口,“40”是惩罚值(Decrement value),一旦跟踪的接口down掉了,它就会根据这个值减少设备接口的优先级(GW2的e0/0口优先级配置的是120,当GW2的e0/0接口down掉了,优先级120-40=80来实现主从的切换)
end
HSRP认证配置
为备分组配置验证字符串,防止网络环境中接入其他设备
HSRP认证方式有明文,MD5认证
en
conf ter
int e0/0
standby 1 authentication MD5/text
HSRP+[[01 静态路由和链路故障检测#SLA故障检测| SLA检测链路]]
用于检测对端设备的接口是否正常,基于上面的配置,我们检测电信的e0/0接口,如果对端接口down掉了,优先级减少40
en
conf ter
ip sla 1
icmp-echo 10.1.1.1
frequency 5
exit
ip sla schedule 1 start-time now life forever
trck 123 ip sla 1
int e0/1
standby 1 track 123 decrement 40
HSRP抢占延迟
在HSRP配置中,可以设置抢占延迟(preemption delay),即在活动路由器失效后,备份路由器接管虚拟IP地址之前等待一段时间。这个等待时间可以避免因短暂的网络抖动或路由器重启而频繁地切换活动路由器,从而提高网络的稳定性。
HSRP抢占延迟的配置方法如下:
- 进入HSRP组配置模式:
Router(config)# interface interface-name
Router(config-if)# standby group-number ip virtual-ip-address
Router(config-if)# standby group-number priority priority-value
- 设置抢占延迟:
Router(config-if)# standby group-number preempt delay minimum seconds
其中,minimum seconds表示最小的抢占延迟时间,可以设置为0-3600秒之间的任意值。
例如,设置HSRP组1的抢占延迟为60秒:
Router(config)# interface GigabitEthernet0/0
Router(config-if)# standby 1 ip 192.168.1.1
Router(config-if)# standby 1 priority 110
Router(config-if)# standby 1 preempt delay minimum 60
这样,在活动路由器失效后,备份路由器需要等待60秒才能接管虚拟IP地址。如果在这个等待时间内,活动路由器恢复正常,则备份路由器不会接管虚拟IP地址,而是继续作为备份路由器等待下一次失效。
HSRP+STP结合
注意:如果在这种环境之下SW1配置的是active就代表着SW1是主设备,SW2配置的是standby,SW2为备设备。此时由于生成树的计算倒是SW3的左边的接口阻塞掉了,SW3不能够往SW1发送消息,这就导致出现了次优路径的故障
所以在交换环境中的HSRP的主备关系和STP的根桥关系要一致,正确的配置图解如下
HSRP的不同版本区别
更改版本命令
en
conf ter
int e0/0
standby 1 version 1/2
end
版本区别
版本 | 描述 |
---|---|
HSRPv1 | 最初版本,仅支持IPv4,使用组播地址224.0.0.2,优先级范围为0-255,不支持IPv6 |
HSRPv2 | 支持IPv4和IPv6,使用组播地址224.0.0.102,优先级范围为0-4095,支持更多的状态机转换和更灵活的配置选项 |
在工作过程中实际上用不了这么多组,一般是通过设定多组的形式来实现一个基于vlan的双网关负载均衡,不同HSRP组的主备设备都不相同,不同组走不同的设备 |
注意:同一个HSRP组中的所有设备应该配置相同的版本
VRRP
VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议
VRRP是公有的协议,不同厂商的设备都可以配置,和HSRP不同,可以使用一台路由器的真实IP地址。在VRRP中,有一台主用的(master)路由器,以及一台或者多台的备用(backup)路由器。
HSRP中有的配置基本上VRRP都能够实现,并且配置方法基本上一致,工作中常用的也是VRRP
VRRP设备角色,以及选举规则
注意:VRRP是严格遵守物理接口IP地址大的选举为Master主的概念
VRRP设备角色:
-
主路由器(Master Router):主路由器是VRRP虚拟路由器中的主要路由器,负责转发数据包。
-
备份路由器(Backup Router):备份路由器是VRRP虚拟路由器中的备用路由器,当主路由器出现故障时,备份路由器会接管其工作。
选举规则:
在VRRP网络中,主路由器和备份路由器的选举是通过VRRP协议实现的。选举规则如下:
-
路由器优先级:每个路由器都有一个优先级,优先级越高的路由器越有可能被选为主路由器。默认优先级为100,可以通过配置修改。
-
路由器IP地址:如果路由器的优先级相同,则IP地址最高的路由器将被选为主路由器。
-
VRRP协议版本:如果路由器的优先级和IP地址都相同,则VRRP协议版本较高的路由器将被选为主路由器。
-
路由器MAC地址:如果以上规则都无法决定主路由器,则路由器MAC地址最高的路由器将被选为主路由器。
VRRP的三个状态
状态 | 描述 |
---|---|
初始化(Initialize) | 当VRRP路由器刚启动或者重新配置后,它会进入初始化状态。此时,路由器还没有选举出主备路由器,也没有开始发送VRRP通告。在这个状态下,路由器会等待一段时间,以便其他路由器也进入初始化状态。 |
备份(Backup) | 当VRRP路由器没有被选为主路由器时,它会进入备份状态。备份路由器接收主路由器发送的VRRP通告,但不会将自己的路由表更新为主路由器的路由表。如果主路由器失效,备份路由器会开始发送VRRP通告,以便其他路由器选举它为主路由器。 |
主(Master) | 当VRRP路由器被选为主路由器时,它会进入主状态。主路由器发送VRRP通告,包含自己的虚拟IP地址和优先级等信息。备份路由器会将自己的路由表更新为主路由器的路由表。如果主路由器失效,备份路由器会开始发送VRRP通告,以便其他路由器选举它为主路由器。 |
Initialize | |
系统启动后进入此状态,当收到接口startup的消息,将转入Backup (优先级不为255时)或Master状态(优先级为255时)。在此状态时,路由器不会对VRRP报文做任何处理。 |
Master
当路由器处于Master状态时 它将会做下列工作
定期发送VRRP组播报文
发送免费(gratuitous)ARP报文,以使网络内各主机知道虚拟IP地址所对应的虚拟MAC地址
响应对虚拟IP地址的ARP请求,并且响应的是虚拟MAC地址,而不是接口真实MAC地址
转发目的MAC地址为虚拟MAC地址的IP报文
如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文,否则,丢弃这个IP报文。需要注意的是,由于有这一点要求,所以除非主路由器是IP地址拥有者,否则主机ping虚拟IP地址不能ping通。
在Master状态中只有接收到比自己的优先级大的VRRP报文时,才会转为Backup。只有当接收到接口的Shutdown事件时才会转为Initialize
Backup
当路由器处于Backup状态时 它将会做下列工作:
接收Master发送的VRRP组播报文 从中了解Master的状态
对虚拟IP地址的ARP请求 不做响应
丢弃目的MAC地址为虚拟MAC地址的IP报文
丢弃目的IP地址为虚拟IP地址的IP报文
只有当Backup接收到MASTER_DOWN这个定时器到时的事件时,才会转为Master 而当接收到比自己的优先级小的VRRP报文时,它只是做丢弃这个报文的处理,从而就不对定时器做重置处理。 这样定时器就会在若干次这样的处理之后到时,于是就转为Master。只有当接收到接口的Shutdown事件时才会转为Initialize
注意:如果配置完成之后两边的设备都是master,说明VRRP没有协商成功
VRRP配置命令集
VRRP基础命令配置
配置案例:PC能ping通123.1.1.1,GW1和GW2做HSRP还有NAT,默认GW1为主设备(120),GW2为备设备(100)
en
conf ter
int e0/0
vrrp 1 ip 192.168.1.1
vrrp 1 preempt //在VRRP协议当中,抢占功能默认开启
vrrp 1 priority 120 //配置VRRP组1的优先级为120,默认100
en
conf ter
int e0/0
vrrp 1 ip 192.168.1.1
vrrp 1 preempt
//GW1
show vrrp
VRRP其他基础配置和HSRP配置基本一致
VRRP认证配置
VRRP认证方式也有有明文,MD5认证
en
conf ter
int e0/0
vrrp 1 authentication MD5/text
VRRP+Track检测链路
配置案例
基于上面的配置,我们开始配置track检测链路
en
conf ter
track 321 interface e0/1 line-protocol //创建名为123的track进程来检测GW1的上联接口e0/1的protocol状态
exit
int e0/0
vrrp 1 track 321 decrement 40 //将track挂接在VRRP
end
测试
我们此时使用PC一直ping123.1.1.1,然后断开电信的e0/0接口,会发现无缝切换,一个包都不会掉
//GW1
show vrrp
接口status状态和protocol状态的不同点
如果两台设备没有接线,但是设备接口都no shutdown了,那么接口的status状态是up,protocol状态是down。如果两台设备接了线,接口都一边shutdown,另外一边no shutdown,那么两边接口的protocol状态都是down
接口status状态表示的是接口的物理状态,即接口是否正常工作、是否存在故障等。例如,一个网卡的status状态可能是“up”(正常工作)
或“down”(存在故障)。
接口protocol状态表示的是接口所使用的协议的状态,即协议是否正常运行、是否连接成功等。例如,一个网络接口的protocol状态可能是“已连接”、“未连接”、“正在连接”、“连接失败”等。
因此,接口status状态和protocol状态虽然都是表示接口的状态,但它们关注的方面略有不同,需要根据具体情况进行区分。
其它链路检测方案
除了这种链路检测的方式还有VRRP+SLA检测链路,配置和HSRP基本一致
HSPR和VRRP的对比
HSRP | VRRP |
---|---|
思科私有,1994 | IETF 1998-2005,RFC 3768 |
最多255个组 | 最多255个组 |
1个Active。1个Standby,多个候选 | 1个Master,多个Backup |
虚拟IP不等于Active/Standby设备真实IP地址 | 虚拟IP地址可以与组成员真实IP地址相同 |
使用224.0.0.2 | 使用224.0.0.18 |
可以跟踪接口或对象 | 只能跟踪对象 |
缺省计时器:Hello为3秒,Hold为10秒 | 缺省计时器:Hello为1秒,Hold为3秒 |
支持验证 | 早期版本支持,现在不再支持 |
HSRP和VRRP都能够实现一个线路的秒切换 | |
但是数据量如果很多,那么就不能够实现一个秒切。因为如果当SW下面的PC很多的时候,最开始的时候主要都走GW1,不走GW2,那么就会导致GW1的ARP表和NAT表很庞大,当GW1挂了线路切换到GW2,虽然GW2成为了active角色,然是GW2的ARP表和NAT表都得重建,中间需要消耗一定的时间。 |
为了解决这种情况,HSRP中有一个高级的功能(高可靠的HSRP功能=Redundancy HSRP + SNAT技术),实现两个设备之间的ARP表和NAT表的同步