zoukankan      html  css  js  c++  java
  • HSRP 工作机制


    简介:HSRP 选举实验
    目的:HSRP的选举过程 (Lab)。包括状态、时间、超时。
    拓扑:两个路由器、一个交换机、一个主机。
    过程:1) R1, R2 都认为这自己是Active, R2收到R1的Hello后,变成Speak,并启动Standby timer. .
          2)R1, R2周期性的方式Hello.
          3) 当R2的Standby timerr超时发生时,R2变成Standby,并发送Heelo.
          4) R1收到了R2的Hello, 知道了R2就是Standby.
    一、配置HSRP路由器
    要让R1参与HSRP选举,先配置其局域网接口 "Standby 1 ip 192.168.1.1",使得R1参加HSRP第一组。然后配置”Standby 1 priority 105“: 把R1的priority设为105 (R2没设, 默认是100)。这将导致R1被选为Active。

    二、R2发送Hello: 我是Active
    一开始,R2先发送一个Hello, 告诉其它的HSRP路由器:“R2是Active, priority是100。这个Hello的IP目的地址224.0.0.2是个多播地址 (All routers),用来通知网段上所有的路由器, 目的地址是01:00:5e:00:00:02, 是个多播Mac地址与 All routers IP多播地址相应。 当S1收到Hello,把它洪泛, 送往R1, H1。

    三、R1发送Hello: 我是Active
    R1发送Hello, 宣告:我是Active。S1收到R1的Hello,发现虚拟MAC的输入接口改了,就更新MAC表。
    【注】Active路由器用虚拟 MAC来配置LInk报头的源地址。上一个Hello是R2发的,输入接口是F0/1, 这个Hello是R1发的,输入接口是F0/1。交换机得反应最新的虚拟MAC的输入接口位置。

    四、R1收Hello, 发Coup: 竞选Active
    R1收到R2的Hello时, 看到R2自称是Active,但priority比自己低, 就发送4个包: 1) Coup (R1宣称:我要当Active)。2) Hello 3) Arp回复广播包 (ff:ff:ff:ff:ff:ff),让交换机都更新MAC表,把虚拟MAC的接口指向R1。4) Arp回复组播包 (01:00:0c:cd:cd:cd) 通知生成树协议 (STP Uplink Fast )。
    这四个包的 MAC源地址都是虚拟路由器的MAC,00:00:0c:07:ac:01。

    五、R2发Resign:我不再竞选Active
    在收到R1的Coup后,R2看到自己的priority比较低,就宣告落选,发送三个包:1) Adv, 2) Resign, 3) Hello. 告诉HSRP路由器: 我不竞选Active了。在发送Hello时也启动了Hello timer (3 秒)。

    六、R1发Coup:竞选Active
    收到R2的退选通知后,R1再发送四个包: Coup声明要竞选Active,Hello让别的路由器知道我是Active,ARP reply广播虚拟路由器的虚拟MAC的位置。

    七、R2周期性的发送Hello:我是Speak
    R2的Hello计时器超时,再发Hello. HSRP路由器周期性的发送Hello, 以保持沟通,知道彼此的状态变化。
    方法是在路由器每次发送Hello时, 就启动Hello timer, 时限是三秒 (Hello timer的默认值), 相当于动画实验的15个tick。当Hello timerr超时,路由器就发送Hello.
    例,R2上一个Hello是在tick 10所发 (与Resign 同时发送),过了15个tick, Hello timer逾时,就再发送Hello。

    八、R1周期性的发Hello: 我是Active
    R1在tick 14发送Hello时, 启动了为时3秒的Hello timer。在tick 29, Hello timer 超时,R1再发送一个Hello, 宣称:我是Active. (这个动画的tick是 0.2 秒,3秒等于15个tick。)

    九、R2周期性的发送Hello:Speak
    R2 的 Hello timer 超时, 再发送Hello。

    十、R1周期性的发送Hello: 我是Active
    过了3秒 (15个tick),Hello timer超时,R1再发送Hello.
    R2周期性的发送Hello:Speak
    R1周期性的发送Hello:Active
    R1的Hello timer 超时,R1再发送Hello。
    R2 Standby timerr超时,发Hello
    在tick 10 R2退出Active选举变成Speak时,启动了Standby timer (10 秒)。到了tick 60, Standby timer超时,根据 HSRP的状态表,R2成为 Standby. 并发送 Hello, 宣称:我是Standby. (见附录:分析)
    R1收到Hello: R2被选上Standby
    R1收到R2的Hello, 宣称自己是Standby,更新R1的HSRP status table, 把Standby router从unknow变成R2 (192.168.1.3)
    附录一: 分析
    1. 地址
        -  虚拟IP地址: 外面的路由器和内部的主机只知道虚IP地址, 不用HSRP路本身的IP地址。
        - 虚拟Mac地址:交换机转发、主机传送只用虚拟Mac地址,它们不用HSRP路本身的Mac地址。
       - HSRP选举:HSRP路由器间的选举及路由协议所用的是HSRP路由器本身的地址,不是虚拟地址。
    2. R2怎么从Active变成Speak?
        结合R2收到R1的Hello, 及HSRP协议标准RFC2281的状态表,外面可以做出以下分析:
         R2目前的状态是Active, 收到一个R1所发的Hello, 知道R1是Active, priority是105,比自己高。
         那么, 根据RFC2281的状态表,R2应把状态从Active改为Speak.
         参考: RFC2281 > 5.7 State Transitions > AB/4 (row g, colum 6 Active
                      RFC2281 > 5.5 Events > g
    3. R2怎么从Speak变成Standby?
         - Tick 10, 当R2收到R1的Hello, 看到R1是Active,prioority也比自己大,就启动Standby timer,其值为10秒 (50 tick)。
            参考: RFC2281 > 5.6 Actions > B
         - Tick 60: 当R2 standby timer 超时,R2状态从Speak变成Standby. 这个动画的状态改变时间与RFC吻合。
            参考: RFC2281 > 5.7 State Transitions > D/5 (row d, colum 4- Speak
                         RFC2281 > 5.5 Events > d

    4. R1是怎么知道R2变成Standby?
         在tick 64, R1收到R2所发的Hello, 其中状态是Standby. R1得知Standby就是R2.
    附录二: Switching, Arp
    HSRP结合了三种技术:
      - HSRP主要是选举。它用比较priority 及 timer 超时来改变状态,并不复杂。
      - 交换机也比较简单:它用数据包的Mac源地址来“发现”新Mac, 用Mac目的地址来转发。
      - Arp只有两种数据包:Arp request以广播方式来查询Mac, Arp reply告知所查询的Mac地址。
      HSRP可说是一个局网的应用,要得妥善的使用switching及Arp技术,HSRP就不那么简单了。

    问一:为什么R1在发生Coup时,也发送Arp reply? 
    问二:为什么Arp reply用广播地址0xffffff, 而不是递补地址?
    问三:这个实验用了五个数据包,你能写出他们的IP 及Mac的目的地址、源地址吗?
                Hello, Coup, Resign, Arp reply, Ping.
    问四:H1要ping H2. ping的Mac地址应该怎么配置?这和H2是否在同一局网有关系吗?

    的默认网关是虚拟路由器(IP 192.168.1.1),
    简介:HSRP选举。
    1)网关down掉怎么办?
    问题:若网关坏了,局网中的主机、服务器对外通讯中断,得几小时才能修复,影响很大。
    解决方案:用一个虚拟路由器 (virtual router) 作为网关,从几个路由器中选出一个Active, 一个Standby 。Active 
        路由器代表虚拟路由器,处理路由器的具体工作。当Active出问题,Standby马上取代,通讯中断在数秒后恢复。
    什么是HSRP? Hot Standby Router Protocol是Cisco为解决网关中断问题的协议。协议招标是RFC2281.

    2)动画简介
          动画所用的数据是采集实验中路由器发送的数据包、监听路由器状态改变而来的。动画把HSRP实验过程中的数据包、状态改变可视化。例: 
        - 用动画表达数据包 (Hello, Coup, Resign, Arp reply)。使得动画与抓包根据相结合。
       - 用状态表显示HSRP状态改变 (Active, Standby, Speak)。使得动画与路由器状态演变相结合。
       - 用命令行表现路由器运行时所使用的配置、Show命令,使得动画与路由器命令行相结合。
      - HSRP包括以下动画:
        1.HSRP basic: 是手工编辑,突出HSRP协议的重点,略过一些细节,使初学者能较快的得到整体了解。
        2. HSRP election (这个动画). 用路由器上采集的数据来说明选举过程。
        3. HSRP link down: 用路由器上采集的数据来说明断线处理。

    3)实验简介
    实验目的: 把HSRP选举Active, Standby的过程可视化。用户可以看到命令行、数据包、事件、状态间的互动关系。
    拓扑:两个路由器 (R1, R2), 两个主机 (H1, H2), 一个交换机 (S1)。
     - R1, R2是HSRP选举候选人, 经交换机S1相连。它们都有连线接到外面的网络云层。
          - 交换机S1连线到R1, R2, H1,是局网主机和网关间的必经之路, 其Mac表记录虚拟路由器的Mac地址。
         - 主机H1位于局网之内,H2位于云层之后,它们经相连路由器相连。   
     实验环境:
     - 用Dynamips模拟Cisco 3620路由器,3640交换机。捕捉的数据包,用Pacp保存。
        - 运行时,监听路由器状态。
    实验过程: 整个过程可分为以下阶段:
       第一步:一开始R1, R2都自认为是Active, 发送Hello。(tick 0)
       第二步: 收到Hello后,重新定位。R1继续竞选Active, 发Coup。R2变成Speak, 发送Resign退选。(tick 8)
       第三步:Hello timer超时事件每3秒发生一次,R2周期性的发送Hello. (tick 25~59,)
       第四步:Standby timer 超时事件发生,R2变成Standby. ( tick 60)
       第五步:分析。用HSRP RFC2281的状态表,结合实验数据,解读这个实验中 R1, R2所发生的状态改变。

    4. 知识点
     HSRP知识点:
       - Virtual router (虚拟路由器):这是一个逻辑路由器,扮演网关的角色。具体工作由Active router处理。
       - Virtual IP addrss。 这是虚拟路由器的IP地址,局网内的主机、外面的路由器只和这个IP地址打交道。
       - Virtail mac address。这是虚拟路由器的Mac地址,局网内的主机、交换机用这个地址作为物理目的地址。。
       - Priroity.  HSRP选举根据priority大小而定,若priority相同,则比较router id (路由器的ip地址)。 
       - Active router。HSRP路由器中priority最高的被选为Actyive, 处理虚拟路由器的工作。.
       - Standby router。HSRP路由器中priority第二高的被选为Standby, 当Active出问题,它马上递补,成为Active。.
      - Speak router。一个路由器既不是Active,也不是 Standby, 它参与选举,但是个老百姓。。
      - Hello timer。HSRP 路由器发送Hello的频率。默认值3秒。
       - Hold timer。Hello的有效期。若Active过时没有发送新的Hello,  它可能下线了。默认值10秒。
       - 如何用 Arp reply 广播来让交换机发现Active的改变,更新Mac表, 。
    相关知识点:
        - 交换机转发、Mac表。
        - Arp reply (Arp回复)
        - Default gateway (默认网关) 
    参考:HSRP., Wikipedia  http://en.wikipedia.org/wiki/Hot_Standby_Router_Protocol
               HSRP RFC2881. http://www.faqs.org/rfcs/rfc2281.html
                Multicastaddress, Wikipediahttp://en.wikipedia.org/wiki/Multicast_address
               IP multicast: IP to Mac multicast address translation. http://www.rhyshaden.com/multicas.htm
    附录三:HSRP路由器配置命令行
    R1(config)#interface eth0/0                          ;R1的E0/0接口运行HSRP.
    R1(config-if)#standby 1 ip 192.168.1.1      ;R1在HSRP 第一组,这组的虚拟路由器IP地址是192.168.1.1.
    R1(config-if)#standby 1 priority 105             ;R1的priority是105
    R1(config-if)#standby 1 preempt                  ;若发现自己的priority比Active高,立即反应,要求替代现任Actove
    R1#

    R2(config)#interface eth0/0                          ;R2的E0/0接口运行HSRP.
    R2(config-if)#standby 1 ip 192.168.1.1        ;R2在HSRP 第一组
    R2#

  • 相关阅读:
    uvm_misc——杂货铺(miscellaneous)
    23种设计模式及其应用场景
    Hadoop TextInputFormat源码分析
    java字符串替换函数高效实现
    hadoop HA 之 QJM
    中文分词词性对照表
    计算两个字符串编辑距离
    java 图片处理
    zookeeper数据迁移
    正则表达式
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12824330.html
Copyright © 2011-2022 走看看