zoukankan      html  css  js  c++  java
  • HSRP 详解

    简介

    HSRP(Hot Standby Router Protocol 热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内只有一个路由器是Active(活动)的,并由它来转发数据包,如果活动路由器发生了故障,备份路由器将成为活动路由器。从网络内的主机来看,网关并没有改变。

     

    HSRP的工作过程:

    HSRP路由器利用Hello包来互相监听各自的存在。当路由器长时间没有接收到Hello包时,就认为活动路由器故障,备份路由器就会成为活动路由器。HSRP协议利用优先级决定哪个路由器成为活动路由器。如果一个路由器的优先级比其它路由器的优先级高,则该路由器成为活动路由器。路由器的默认优先级是100。

        在一个组中,最多有一个活动路由器和一个备份路由器。
        HSRP路由器发送的组播(224.0.0.2)消息有以下三种:

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

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

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

     

    HSRP的报文格式:

    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路由器的6中状态:

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

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

      器仍在等待活动路由器发来的Hello报文。

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

      器和等待路由器发来的Hello报文。

    4.Speak:在该状态下,路由器定期发送Hello报文,并且积极参加活动路由器或等待路由器的竞选。如果选出活

      动路由和等待路由,则变成监听状态(Listen)。而此时只有活动路由器和等待路由处于说话状态。

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

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

      出Hello报文。

    HSRP的2个定时器:

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

     

     

    实验

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

    命令:
    R1(config-if)#standby 1 ip 192.168.13.254 //启用HSRP功能,创建standby组1,并设置虚拟网关IP地址
    R1(config-if)#standby priority 120  //设置HSRP的优先级,该值大的会抢占成Active路由器,默认为100

    R1(config-if)#standby 1 preempt        //设置允许在该路由器优先级是最高时抢占为活动路由器
    R1(config-if)#standby 1 timers 3 10        //设置Hellotime为3秒,Holdtime为10秒,默认即为该值
    R1(config-if)#standby 1 authentication md5 key-string cisco        //配置认证密码

    R1(config-if)#standby 1 track s0/0 30        //配置端口跟踪

     

     

    HSRP 详解 - 朝鲜程序员 - 朝鲜程序员的博客

    说明:

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

    ②“standby 1 preempt”命令:

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

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

    ③Hellotime:路由器每间隔多长时间发送Hello信息;Holdtime:在多长时间内同组的其它路由器没有收到活动路

      由器的信息,则认为活动路由器发生故障;如果要更改默认值,所有同HSRP组的路由器该项设置必须一致。
    ④配置认证密码为了防止非法设备加入到HSRP组,并且同HSRP组的密码必须一致。

    ⑤端口跟踪:如果试验中没有配置s0/0的端口跟踪,当R1的s0/0接口出现问题,R1将没有到达R2的Loopback0接

      口所在网段的路由。然而R1和R3之间的以太网仍然没有问题,HSRP的Hello包正常发送和接收。因此R1仍然是

      虚拟网关192.168.13.254的活动路由器,Server的数据仍会发送给R1,这样会造成Server无法ping通R2的

      Loopback接口。当配置路由跟踪后,端口跟踪使得R1发现s0/0上的链路出现问题后,把自己的优先级(我们设

      置的为120)减去一个数字(我们设置的为30),成为了90。由于R3的优先级为默认值100,这样R3就成为了活动

      路由器,Server的数据包将发往R3。降低的值应该选取合适的值,使得其他路由器能成为活动路由器。

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

      “XX”为HSRP的组号。

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

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

    配置IP地址及路由:

    R1(config)#int f1/0

    R1(config-if)#ip add 192.168.13.1 255.255.255.0

    R1(config-if)#no sh

    R1(config)#int s0/0

    R1(config-if)#ip add 192.168.12.1 255.255.255.0

    R1(config-if)#no sh

    R1(config)#router rip
    R1(config-router)#network 192.168.12.0
    R1(config-router)#network 192.168.13.0
    R1(config-router)#passive-interface f1/0        //防止从该接口发送RIP信息给R3

    R2(config)#int lo0
    R2(config-if)#ip add 192.168.2.2 255.255.255.0
    R2(config)#int s0/0
    R2(config-if)#ip add 192.168.12.2 255.255.255.0
    R2(config-if)#clock rate 128000
    R2(config-if)#no sh
    R2(config)#int s0/1
    R2(config-if)#ip add 192.168.23.2 255.255.255.0
    R2(config-if)#clock rate 128000
    R2(config-if)#no sh
    R2(config)#router rip

    R2(config-router)#network 192.168.2.0
    R2(config-router)#network 192.168.12.0
    R2(config-router)#network 192.168.23.0
    R3(config)#int f1/0
    R3(config-if)#ip add 192.168.13.3 255.255.255.0
    R3(config-if)#no sh
    R3(config)#int s0/1
    R3(config-if)#ip add 192.168.23.3 255.255.255.0
    R3(config-if)#no sh
    R3(config)#router rip
    R3(config-router)#network 192.168.23.0
    R3(config-router)#network 192.168.13.0
    R3(config-router)#passive-interface f1/0

    配置HSRP:

    R1(config)#int f1/0
    R1(config-if)#standby 1 ip 192.168.13.254
    R1(config-if)#standby priority 120

    R1(config-if)#standby 1 preempt
    R1(config-if)#standby 1 timers 3 10
    R1(config-if)#standby 1 authentication md5 key-string cisco

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

    R3(config)#int f1/0
    R3(config-if)#standby 1 ip 192.168.13.254
    R3(config-if)#standby 1 preempt
    R3(config-if)#standby 1 timers 3 10
    R3(config-if)#standby 1 authentication md5 key-string cisco

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

     

    实验调试

    R1#show standby brief   //查看HSRP简要信息

    HSRP 详解 - 朝鲜程序员 - 朝鲜程序员的博客

     

    R1#show standby        //查看HSRP详细信息

    HSRP 详解 - 朝鲜程序员 - 朝鲜程序员的博客

     Server:ping 192.168.2.2 -t

    R1(config)#int f1/0

    R1(config)#sh

    HSRP 详解 - 朝鲜程序员 - 朝鲜程序员的博客

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

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

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

     

    HSRP 详解 - 朝鲜程序员 - 朝鲜程序员的博客

     配置多个HSRP组

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

    R1(config)#int f1/0

    R1(config-if)#standby 1 ip 192.168.13.254

    R1(config-if)#standby 1 priority 120

    R1(config-if)#standby 1 preempt

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

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

    R1(config-if)#standby 2 ip 192.168.13.253

    R1(config-if)#standby 2 preempt

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

    R3(config)#int f1/0

    R3(config-if)#standby 1 ip 192.168.13.254

    R3(config-if)#standby 1 preempt

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

    R3(config-if)#standby 2 ip 192.168.13.253

    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的IP为192.168.13.254,活动路由器为R1,一部分计算机的网关指向

      192.168.13.254。组2的IP为192.168.13.253,活动路由器为R2,其余计算机的网关指向192.168.13.253。这

      样,当网络全部正常时,一部分数据是由R1转发的,其余数据是由R2转发的,实现了负载平衡。当一个路由器

      出现问题时,则另一个路由器就成为两个HSRP组的活动路由器,承担全部的数据转发。通过这种方式实现负载

      平衡,要求不同的计算机在设置网关时有所不同,如果计算机的IP是DHCP分配的,那这种方法就不太方便了。

    注意:HSRP实际上在局域网用的较多,由于局域网内大多使用三层交换机,所以这时HSRP是在交换机上配置的。

      另外,HSRP有Version1和Version2,两者不兼容,因此所有路由器或者交换机要使用相同的HSRP版本,可以使

      用“standby version”命令设置版本。

  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896799.html
Copyright © 2011-2022 走看看