目录(?)[+]

 

以下内容摘自最新上市的“四大金刚”图书之一《Cisco路由器配置与管理完全手册》(第二版)(其它三本分别为《Cisco交换机配置与管理完全手册》(第二版)、《H3C交换机配置与管理完全手册》(第二版)和《H3C路由器配置与管理完全手册》(第二版)),目前这四本新书在各大网店中均有销售:http://item.jd.com/11273171.html http://product.dangdang.com/product.aspx?product_id=23270907

8.1.3 RIP路由更新机制

RIP协议有两种更新机制:一是定期更新,二是触发更新。“定期更新”是根据设置的更新计时器定期发送RIP路由通告。该通告报文中携带了除“水平分割”机制抑制的RIP路由之外本地路由器中的所有RIP路由信息。而“触发更新”则是RIP路由器仅在有路由表项发生变化时发送的RIP路由通告,仅携带本地路由表中有变化的路由信息。RIP路由器一旦察觉到网络变化,就尽快甚至是立即发送更新报文,而不等待更新周期结束。只要触发更新的速度足够快,就可以大大地防止“计数到无穷大”的发生,但是这一现象还是有可能发生的。

无论是定期更新,还是触发更新,RIP路由的更新规则如下

l  如果更新的某路由表项在路由表中没有,则直接在路由表中添加该路由表项;

l  如果路由表中已有相同目的网络的路由表项,且来源端口相同,那么无条件根据最新的路由信息更新其路由表;

l  如果路由表中已有相同目的网络的路由表项,但来源端口不同,则要比较它们的度量值,将度量值较小的一个作为自己的路由表项;

l  如果路由表中已有相同目的网络的路由表项,且度量值相等,保留原来的路由表项。

下面主要介绍RIP路由的定期更新机制。

1.RIP路由定期更新机制

RIP路由器总是会每隔30秒(这是默认值,可以修改,而且也可能与设置值有些偏差)通过UDP
520端口以RIP广播应答方式向邻居路由器发送的一个路由更新包,包中包括了本路由器上的完整的路由表(除了被“水平分割”机制抑制的路由表项),用来向邻居路由器提供路由更新,同时用来向邻居路由器证明自己的存在。RIP的路由表中主要包括“目的网络”、“下一跳地址”和“距离”这三个字段,参见图8-3。

如果一个路由器在180秒(这也是默认值,可以修改)内没有收到某个邻居路由器发来的路由更新,则这个路由器就会标记该邻居路由器为不可达路由器,使这个邻居路由器处于抑制周期。当路由器处于抑制周期内,它仍然用于向前转发数据包,但网络中的其它路由器不学习到达该路由器所连网络的路由信息,除非是一条更好的到达该路由器所连网络的路由信息,如本来是3跳,在抑制周期内学到了一条2跳的路由信息。但抑制周期过后,即使是差的路由信息也接受。

如果在连续的240秒(这也是默认值,可以修改)内还没收到这个路由器的路由更新,则本地路由器会在路由表中删除与该邻居路由器相关的路由表项。

由此可见,这个路由更新不仅影响着整个RIP网络中的路由器上最由表的更新和所有需要到达,或者经过该路由器的数据包路由,还影响着其它邻居路由器是否当它存在。试想一下,如果有一个数据包是要发送到连接某个某个RIP路由器的网络的一台主机上,但这台RIP路由器当时恰好出现了故障,没有这个路由器更新机制的话,其它路由器也就不知道它当前出现了故障,仍按原来的路由路径传输数据包,结果当然是数据包总是无法到达目的主机了,尽管可能经过多次尝试。

2.RIP路由定期更新机制解析示例

为了更好地理解RIP协议路由表的更新机制,下面以图8-6所示的简单的互连网络为例来讨论图中各个路由器中的路由表是怎样建立的。

图8-6 RIP路由表建立网络示例

(1)在一开始,所有路由器中的路由表只有自己所直接连接的网络的路由表项信息。但不是RIP路由表项,是直连路由表项,无需下一跳(用“--”表示),度量“距离”也均为0 ,各路由器的初始路由表如图8-7所示,均只有两条直连网络的路由表项。

(2)接下来,各路由器就会按设置的周期(默认为30秒)向邻居路由器发送路由更新了。具体哪个路由器会先发送路由更新,取决于哪个路由器先开了。现假设路由器R2先收到来自路由器R1和R3的路由更新,然后就更新自己的路由表,如图8-8所示。从中可以看出,它新添加了分别通过R1和R3到达10.0.0.0网络和30.0.0.0网络的路由表项,度量值均为1,因为它只经过了一跳。

图8-7 R1、R2和R3的初始路由表

(3)R2更新自己的路由表后,会把完整的路由表发给邻居路由器R1和R3。路由器R1和R3分别再进行更新。根据前面介绍的RIP路由表更新的规则可以知道,R1首先是把从R2上接收到的如果图8-8的路由表中,对每项度量进行加1,得到的路由表如图8-9所示。

  

图8-8  R2在路由更新后的路由表   图8-9  R1对收到的来自R2路由表进行度量加1后形成的路由表

(4)然后R1再把图8-9所示的路由表与自己原来的路由表(图8-6中的左图所示)进行比较,凡是新添加的,和度量值小于等于原来的路由表项均将更新,度量值更大的路由表项将忽略更新。经过行比较发现有两条新的路由表项,其目的网络分别为30.0.0.0和40.0.0.0,直接在路由表中添加。而原来已有的两条10.0.0.0和20.0.0.0表项,发现路由度量(“距离”)值1比原来的0还大,忽略更新,结果就得到R1更新后的路由表,如图8-10所示。

用同样的方法可以得出R3在收到R2路由更新后的路由表如图8-11所示。但RIP路由协议存在一个问题,那就是网络收敛比较慢,当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器,而且中间有许多是无效路由更新。

 

图8-10 R1在收到R2路由更新后的路由表   图8-11 R3在收到R2路由更新后的路由表

仍以图8-6为例,现在三个路由器都已经建立了各自的稳定路由表,假设R1路由器和网1(10.0.0.0)的连接线路断开了。此时R1可以立即发现,并更新自己的路由表,将到10.0.0.0的路由表项距离改为16(即不可达),并在30秒后将此路由更新信息发给R2。但是,R2从R3得到的路由更新是“经过R2到达10.0.0.0网络的距离为2”,明显度量值更小,于是R2将此路由表项更新为“经过R3到达10.0.0.0的距离为3”,然后再通过路由更新发给R3,此时R3的路由表中更新为“经过R2到达10.0.0.0网络的距离为4”。R3再通过路由更新发给R2信息,结果是““经过R3到达10.0.0.0网络的距离为5””,一直如此反复,直到该路由表项的距离达到16,R2和R3才知道10.0.0.0网络是不可达的。

为了解决这一不足,产生了水平分割技术,就是同一路由表项更新不再从接收该路由表项的接口发送出去,具体将在本章后面介绍。下面再具体介绍RIP路由的收敛机制。

(转)示例化讲解RIP路由更新机制的更多相关文章

  1. HCNA Routing&Switching之RIP防环机制

    前文我们了解了RIP的基础概念.RIP的特点.RIP报文格式.RIP度量以及RIP配置认证等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/150085 ...

  2. CCNA的RIP路由学习

    rip(routing infomation protocol,路由信息协议) ,是一个纯粹的距离矢量路由选择协议,RIP每隔30s就将自己完整的路由选择表从所有激活的接口上送出.RIP只将跳计数作为 ...

  3. quick-cocos2d-x的热更新机制实现

    quick-cocos2d-x的热更新机制实现 0 依赖 这里说的热更新,指的是客户端的更新. 大致的流程是,客户端在启动后访问更新api,根据更新api的反馈,下载更新资源,然后使用新的资源启动客户 ...

  4. ospf的路由更新和撤销总结

    首先ospf 的报文有:hello报文,主要作用ospf 邻居建立及维护.dd报文,主要作用主从选举,序列号主从的确认,mtu的协商(可选).lsr 报文,主要作用向邻居请求lsa.lsu报文,主要作 ...

  5. Hibernate Validation使用示例及讲解

    Hibernate Validation使用示例及讲解 时间 -- :: ITeye-博客 原文 http://wdmcygah.iteye.com/blog/2174680 主题 Java 在项目开 ...

  6. 左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

    文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy201 ...

  7. quagga源码学习--BGP协议路由更新

    BGP的核心就是交换路由,所以关键的部分还是在路由的更新与撤销上面,这之间包含了冗长的属性,community等等处理过程,不做详述. bgp_read函数是路由更新的事件处理函数,在收到BGP_MS ...

  8. 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  9. zookeeper 节点启动时的更新机制

    使用zk的应用节点和zk数据本身的同步,当系统启动时使用zk配置的信息和zk本身存储不一致, 此时应存在一个更新机制将应用配置数据和zk数据更新一致. 启动时更新拉取zk配置中心的更新本地数据,以zk ...

随机推荐

  1. WAF指纹探测及识别技术

    Web应用防护系统(也称:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HT ...

  2. HTML5录音控件

    最近的项目又需要用到录音,年前有过调研,再次翻出来使用,这里做一个记录. HTML5提供了录音支持,因此可以方便使用HTML5来录音,来实现录音.语音识别等功能,语音开发必备.但是ES标准提供的API ...

  3. Mybatis学习(二) - CRUD操作(增删改查操作)

    直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...

  4. android登录实现,存储数据到/data/data/包名/info.txt

    1.一个简单登录界面布局代码如下: @1采用线性布局加相对布局方式 @2线性布局采用垂直排列 <?xml version="1.0" encoding="utf-8 ...

  5. angular嵌入注入服务实例

    <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...

  6. C++ type_traits 原理

    一.简单介绍 (1).type_traits 类型萃取,C++11中已结成为了一个核心模块. (2).标准库包括helper classes .type traits.type transformat ...

  7. 15套java互联网架构师、高并发、集群、负载均衡、高可用、数据库设计、缓存、性能优化、大型分布式 项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  8. [leetcode-592-Fraction Addition and Subtraction]

    Given a string representing an expression of fraction addition and subtraction, you need to return t ...

  9. [leetcode-551-Student Attendance Record I]

    You are given a string representing an attendance record for a student. The record only contains the ...

  10. 【LeetCode】205. Isomorphic Strings

    题目: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the c ...