HSRP协定

HSRP协定HSRP是 Hot Standby Routing Protocol(热备份路由协定)的缩写 , 它的作用是能够把一台或多台路由器用来做备份 , 所谓热备份是指当使用的路由器不能正常工作时 , 候补的路由器能够实现平滑的替换 , 儘量不被察觉 。
【HSRP协定】HSRP 实现容错备份功能 , 可以有效解决上述可靠性问题 。
基本介绍中文名:热备份路由协定
外文名:Hot Standby Routing Protocol
缩写:HSRP
解决的问题:主机 Pat 设定预设网关 Router A
概念HSRP 是 Hot Standby Routing Protocol(热备份路由协定)的缩写 。它的作用是能够把一台或多台路由器用来做备份 , 所谓热备份是指当使用的路由器不能正常工作时 , 候补的路由器能够实现平滑的替换 , 儘量不被察觉 。通常 , 我们的网路上主机设定一条预设路由 , 指向主机所在网段内的一个路由器 R , 这样 , 主机发出的目的地址不在本网段的报文将被通过预设路由发往路由器 R , 从而实现了主机与外部网路的通信 。在这种情况下 , 当路由器 R 坏掉时 , 本网段内所有以路由器 R 为预设路由下一跳的主机将断掉与外部的通信 。HSRP 实现容错备份功能 , 可以有效解决上述可靠性问题 。HSRP 解决的问题主机 Pat 设定预设网关 Router A , 这样访问主机 Marceau 需要通过 Router A 来进行 。一旦 Router A 出现故障 , 主机 Pat 将失去与主机 Marceau 的联繫 , 除非主机 Pat 重新指定其它的预设网关 , 如 Router B 。引入让我们看一下引入 HSRP 是如何解决问题的 。通过在 Router A 和Router B上配置 HSRP , 使它们共同组成一个备份组 , 可以把这个组抽象成一个虚拟路由器 , 它有自己的 IP 地址和 MAC 地址 , 分别称作虚拟IP 地址和虚拟 MAC 地址 。这样主机 Pat 可以把自己的预设网关设定成虚拟 IP 地址 , 访问主机Marceau 就可以通过虚拟路由器来进行 。当然 , 虚拟路由器是一个抽象的概念 , 实际的网关工作是由Router A 和Router B中的一个来完成的 , 我们称完成实际网关工作的路由器为活动路由器 , 另外一个路由器为备份路由器 。如果活动路由器出现故障 , 就像前面提到的 Router A 发生故障 , 备份路由器(如Router B)会接替成为活动路由器 , 因此 , 主机 Pat 在不察觉情况下 , 仍然可以通过 Router B来访问主机 Marceau 。用途HSRP 用于广播或多播区域网路上的路由器热备份 , 并适于静态的路由配置 , 实际上 HSRP 正是解决设备不能动态适应路由改变的问题 。HSRP 主要用途: 1、主机设定预设网关 假设主机 A 是区域网路中一台需要访问远程数据的伺服器 , 要求远程访问能力可靠 。由于主机 A 中静态设定预设网关 , 一旦想更换网关 , 必须在主机中重新配置 。通过使用 HSRP , 主机中设定虚拟路由器为预设网关 , 具体由虚拟路由器中的哪台路由器完成网关的实际工作 , 主机并不关心 , 这就为套用提供了较好的可靠性和灵活性 。2、设定静态路由 可以通过配置静态预设路由指向虚拟路由器来实现另外一种备份 。HSRP的实现工作原理当採用 HSRP ,  用户看到的是一台虚拟路由器 , 该虚拟路由器有自己的虚拟 IP 地址和虚拟 MAC 地址 , 该虚拟路由器是由一组路由器组成的 , 这组路由器称为备份组 。备份组内由一台活动路由器、一台备份路由器 , 以及民众路由器构成 。一般情况下 , 一旦活动路由器坏掉 , 该备份路由器成为活动路由器 , 然后备份组内选举组内的另一台路由器为备份路由器 。组内路由器通过接受来自活动路由器的周期性 Hello 报文来判断活动路由器是否工作正常 。如果组内备份路由器 R 在一定时间间隔未收到活动路由器 Hello 报文 , 就认为活动路由器坏掉了 , 优先权高的备份路由器最终成为活动路由器 。备份路由器也是通过类似过程产生的 。这样总能保证备份组中有一台活动路由器 , 一台备份路由器 。状态备份组内的路由器处于各自的状态 , 根据相互间传送 HSRP 报文来调整新的状态 。HSRP 状态:(1)init:所有备份组内组员的初始状态为 INIT , 当组员配置属性或连线埠 UP 时 , 进入 INIT 状态 。(2)learn:该组员未设定虚拟 IP 地址 , 并等待从本组活动路由器发出的认证的 Hello 报文中学习得到自己的虚拟 IP 地址 。(3)listen :该组员已得知或设定了虚拟 IP 地址 , 通过监听 Hello 报文监视活动/备份路由器 , 一旦发现活动/备份路由器长时间未传送 Hello 报文 , 则进入 SPEAK 状态 , 开始竞选 。(4)speak: 参加竞选活动/备份路由器的组员所处的状态 , 通过传送 Hello 报文使竞选者间相互比较、竞争 。(5)standby: 组内备份路由器所处的状态 , 备份组员监视活动路由器 , 準备随时在活动路由器坏掉时接替活动路由器 。备份路由器也周期性传送 Hello 报文告诉其他组员自己没有坏掉 。(6)ACTIVE:组内活动路由器即负责虚拟路由器实际路由工作的组员所处的状态 。活动路由器周期性传送 Hello 报文告诉其他组员自己没有坏掉 。状态转换HSRP 协定中定义了一个自动状态机 , 不同的触发事件会产生相应的状态变化和动作 。报文􀁺 Version :1 Byte HSRP 报文的版本号 。本文档的 HSRP 报文版本为 0。􀁺 Oper Code :1 Byte描述了 HSRP 报文的类型 , 共有3 种报文类型: (1)0 —— Hello Hello 类型报文说明传送者处在运行状态 , 有能力成为活动/备份路由器 。(2)1 —— COUP COUP 类型报文说明传送者希望成为活动路由器 。(3)2 —— RESIGN COUP 类型报文说明传送者不再是活动路由器 。􀁺 State :1 Byte 描述传送者传送报文时所处的状态 。􀁺 Hello Time :1 Byte 该域只在 Hello 报文中有意义 。它包含传送者发送 Hello 报文的时间间隔 , 以秒计; 如果路由器上未配置 Hello Time 值 , 它可以从组中活动路由器发 送的 Hello 报文中学习到 , 但须本路由器认证该 Hello 报文; 如果路由器上既未配置 Hello Time , 也未学习到 , 则赋予预设值 3 。􀁺 Hold Time :1 Byte 该域只在 Hello 报文中有意义 。它包含传送者传送 Hello 报文的持有时间 , 以秒计; Hold Time 必须大于 Hello Time  , 而且最好大于三倍 Hello Time ;如果路由器上未配置 Hold Time  , 它可以从组中活动路由器传送的 Hello 报文中学习到 , 但须本路由器认证该 Hello 报文; 如果路由器上既未配置 Hello Time  , 也未学习到 , 则赋予预设值10。􀁺Priority :1 Byte 该域用来选举活动/备份路由器 。当选举过程中出现竞争(多个路由器都想成为活动/备份路由器)时 , 优先权最高的竞争者胜 , 对于优先权相等的竞争者 , IP 地址最大的竞争者胜 。􀁺Group :1 Byte 此域中记录传送者所在的备份组号 。对于乙太网 , Group 取值範围为0-255。􀁺Authentication Data :8 Byte 8 字元长的的口令 , 用于组内成员相互鉴别 。􀁺 Vritual IP Address:4 Byte 备份组的虚拟IP位址 , 备份组模拟的虚拟路由器的 IP 地址 。虚拟路由器还有一 MAC 地址 , 它由组号直接映射而成:0X00 00 0C 07 AC **  , 其中“**”为备份组号 。组内各成员须至少有如下信息: (1)备份组号(Group); (2)虚拟 MAC 地址(Virtual MAC Address); (3)优先权(Priority); (4)Authentication Data; (5)Hello Time; (6)Hold Time; 至少一位组员有如下信息: (1)虚拟 IP 地址(Virtual IP Address); 每位组员可选择配置如下信息:(1)抢占标誌(Preempt); 如果某位组员的 Preempt 置位 , 又收到活动路由器的 Hello 报文 , 发现自己的优先权比活动路由器高 , 则该组员可强行取代成为活动路由器 。多备份组(MHSRP)在一网段内 , 多个备份组可以共存 。每个备份组模拟成一虚拟路由器 , 每个这样的虚拟路由器配置一虚拟MAC 地址和一虚拟 IP 地址 。该虚拟IP位址应属于本网段 , 而且不与网段内的任何路由器和主机的IP位址相同 , 也不与网段内的其他虚拟路由器的虚拟IP位址相同 。一台路由器也可以参加多个备份组 , 为多个组作备份 。路由器的 HSRP 配置是针对具体接口的 , 因此需要在接口模式下配置 。在一台路由器上 , 备份组由(接口 , 组号)唯一确定 。每个备份组都有属于自己的数据和状态 。如果一台路由器有两个以太网口 , 可以分别在两个接口上配置两个 HSRP 备份组 , 为不同网段使用 。配置方法# [no] standby [group-number] ip [virtual ip address]说明: 使路由器在指定局域网段加入或退出一个备份组 。需要指定备份组号和虚拟 IP 地址 。备份组号範围从 0 到 255 , 如 group-number 不指定 , 备份组号预设为 0 , virtual ip address 如果不指定 , 路由器不会参与备份 , 直到从备份组中的活动路由器获得虚拟 IP 地址 。注意虚拟 IP 地址应该是接口所在网段的地址 。一旦退出 HSRP 备份组 , 则路由器在该备份组上设定的所有 HSRP 特性不再有效(如优先权 , 授权字等) 。# standby [group-number] priority [priority-value]说明: HSRP 中根据优先权来确定参与备份组的每台路由器的地位 , 备份组中优先权最大并且已获得虚拟 IP 地址的路由器将成为活动路由器 , 优先权其次的路由器将成为备份路由器 。优先权预设值是 100 , 可设定範围从 0 到 255 。# standby [group-number] preempt说明: 一旦备份组中的某台路由器成为活动路由器 , 只要它没有出现故障 , 其它路由器即使随后被配置更高的优先权 , 也不会成为活动路由器 , 除非被设定抢占方式 。路由器如果设定抢占方式 , 它一旦发现自己的优先权比当前的活动路由器的优先权高 , 就会成为活动路由器 。相应地 , 原活动路由器会退出活动态 , 成为备份路由器或其它 。预设方式是不抢占 。# standby [group-number] authentication string说明: HSRP 授权字确认同备份组间其它路由器的有效性 。授权字 string 的长度不超过 8 个位元组 。注意:同一备份组要设定相同的授权字 。# standby [group-number] timers [hello_time] [hold_time]说明: HSRP 备份组路由器之间通过定时传送 Hello 报文确认相互的状态 , 超过一定时间(hold time)没有收到某台路由器的 Hello 报文 , 则认为它已关机或出现故障 。用户可以调整传送 Hello 报文的间隔时间(hello time)和逾时时间(hold time) 。预设值分别是 3 秒和 10 秒 。时间单位是秒 。注意:同一备份组要设定相同的 hello time 和 hold time 。# standby [group-number] trackinterface_name [priority-reduced]说明: HSRP 监视接口功能 , 更好地扩充了备份功能 , 即不仅在路由器出现故障时提供备份功能 , 而且在某网路接口不可用时 , 也可以使用备份功能 。命令作用是监视接口interface_name , 如果接口变为不可用 , 则将优先权减少 priority-reduced (priority-reduced 预设值为 10)。分析1) 交换机和HSRP虚拟MAC的关係每次HSRP Active变更时 , 都会导致交换MAC表的虚拟MAC接口的改变 。例 , 当一个路由器 (A) 宣告是Active时 , 所传送的Hello, Coup, ARP Reply包用的MAC源地址是HSRP虚拟MAC. 如果另一个路由器 (B) 稍前才宣告自己是Active, 交换机MAC表的虚拟MAC条目会指向B 。在收到A传送的Hello, Coup, ARP Reply时 , 交换机会把其MAC表的虚拟MAC条目的接口从指向B改为指向A 。2) ARP Reply 在HSRP的作用主机传送的数据包 , 其目的MAC地址是网关的MAC地址 ,  即HSRP虚拟MAC地址 。区域网路中 , 主机和网关间可能若有好几个交换机 。那幺 , 如何能让所有的交换机都把其(虚拟MAC , 接口)指向当前的路由器呢?HSRP用了一个简单巧妙的方法:把ARP Reply设为广播包 , 并配置其目的MAC地址为虚拟MAC , 目的IP设为虚拟IP 。其作用有二:1 。所有的交换机都会收到这个ARP Reply, 并更新MAC表 , 把 (虚拟MAC , 接口)指向Active路由器 。2 。主机收到 ARP Reply时 , 看到报文里的target ip不是自己的IP , 就会丢弃 , 所以ARP Reply没有副作用 。3) HSRP路由器传送Hello 所使用的MAC源地址这得根据路由器的状态而定 。如果是Active, Hello 的souce MAC是虚拟MAC 。如果是Standby或Speak , Hello 的souce MAC是路由器接口的MAC 。