草庐IT

RIP协议

小卡Ka 2023-05-21 原文

一、RIP概述

路由信息协议( Routing Information Protocol, RIP )是一种较简单的内部网关协议,主要应用于规模较小的网络中,如校园网及结构较简单的地区性网络。

RIP是一种基于距离矢量算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。RIP使用跳数来衡量到达目的地址的距离,换句话说,就是RIP采用跳数作为度量值。在RIP中,默认情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络跳数为1,以此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP 规定度量值取0~ 15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。这个限制使得RIP不可能在大型网络中得到应用。

RIP包括RIPv1与RIPv2两个版本,两者原理相同,RIPv2 是RIPv1的增强版。RIPv1 是有类别路由协议,协议报文中不携带掩码信息,不支持VLSM,不支持手工汇总,只支持以广播方式发布协议报文。RIPv2支持VLSM,协议报文中携带掩码信息,支持明文认证和MD5密文认证,支持手工汇总,支持以广播或者多播的形式发送报文。


二、RIP的工作过程

1.路由表建立

RIP启动时的初始路由表仅包含本路由器的一些直连端口路由,RIP启动后的工作过程包括如下几个步骤。

(1) RIP启动后向各端口广播一个Request报文。

(2)邻居路由器的RIP从某端口收到Request 报文后,根据自己的路由表形成Response报文向该端口对应的网络广播。

(3)IP接收邻居路由器回复的包含邻居路由器路由表的Response报文,形成路由表。RIP以30s为周期用Response报文广播自己的路由表

收到邻居发送而来的Response 报文后,RIP计算报文中的路由度量值,比较其与本地路由表中的路由度量值是否有差别,更新自己的路由表。报文中路由度量值的计算公式为metric = MIN ( metric + cost, 16 )。其中,metric为报文中携带的度量值信息; cost 为接收报文的网络的开销,默认为1; 16 代表不可达。

RIP根据DV算法的特点,将协议的参加者分为主动机和被动机两种。主动机主动向外广播路由刷新报文,被动机被动地接收路由刷新报文。一般情况下,主机作为被动机,路由器则既是主动机又是被动机,即在向外广播路由刷新报文的同时,接收来自其他主动机的DV报文,并进行路由刷新。

2.路由表更新

RIP在更新和维护路由信息时主要使用如下的4个定时器。

(1)更新定时器( Update timer) :当此定时器超时时,立即发送更新报文。

(2)老化定时器( Age timer) : RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。

(3)垃圾收集定时器( Garbage- collect timer ) :如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新, 则该路由将被从RIP路由表中彻底删除。

(4)抑制定时器(Suppress timer) :当RIP设备收到的对端的路由更新cost为16时,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由cost小于16的更新也不接收。当抑制定时器超时后,重新允许接收对端发送的路由更新报文。

当本路由器从邻居路由器收到路由更新报文时,根据以下原则更新本路由器的RIP路由表。

(1)本路由表中已有路由项的下一跳是 邻居路由器时,不论度量值增大或是减小,都更新该路由项(度量值相同时只将其老化定时器清零);当该路由项的下一跳不是邻居路由器时,只在度量值减小时更新该路由项。

对本路由表中不存在的路由项,度量值小于不可达( 16)时,在路由表中增加该路由项。

(2)路由表中的每一 路由项都对应一老化定时器,当学习到一条路由并添加到RIP路由表中时,老化定时器启动。当路由项在180s内没有任何更新时,老化定时器超时,该路由项的度量值变为不可达( 16)。

(3)某路由项的度量值变为不可达后,启动垃圾收集定时器,以该度量值在Response 报文中发布4次(120s),如果垃圾收集定时器超时,设备仍然没有收到更新报文,则在RIP路由表中删除该路由。
 


三、RIP的路由环路及避免方法

1.路由环路的产生

当网络发生故障时,RIP网络有可能产生路由环路。例如图所示的示例,RIP 网络正常运行时,RTA会通过RTB学习到10.0.0.0/8网络的路由,度量值为1,一旦路由器RTB的直连网络10.0.0.0/8产生故障,RTB会立即检测到该故障,并认为该路由不可达。此时,RTA由于还没有收到该路由不可达的信息,会继续向RTB发送度量值为2的通往10.0.0.0/8 的路由信息。RTB则会学习此路由信息,认为可以通过RTA到达10.0.0.0/8 网络。此后,RTB发送的更新路由表,又会导致RTA路由表的更新,RTA便会新增一条度量值为3的10.0.0.0/8网络路由表项,如此产生路由环路。这个过程会持续下去,直到度量值为16。

由此可得出一个结论: 当网络发生故障或者网络拓扑发生改变的时候,网络收敛速度慢会造成网络数据库不一致,即造成路由环路。
 

 

2.避免方法

(1)最大跳数

在上图所示的网络中,发生路由环路时,路由器去往网络10.0.0.0的跳数会不断地增大,网络无法
收敛。为解决这个问题,可以给跳数定义一个最大值,当跳数到法最大值时,网络10.0.0.0被认为是个可达的。路由器会在路由表中显示网络不可达信息,并不再更新到法网络10.0.0.0的路由。在RIP路由协议中,跳数最大值为16

通过定义最大值,距离矢量路由协议可以解决发生环路时路由权值无限增大的问题,同时也可校正错误的路由信息。但是,在最大权值到达之前,路由环路还是会存在的。也就是说,以上解决方案只是补救措施,不能真正避免环路产生,只能减轻路由环路产生的危害。

(2)水平分割

水平分割是指路由器从某个端口学习到的路由不会再从该端口发出去。如图所示,RTA从RTB学习到的10.0.0.0/8网络的路由不会再从RTA的接收端口重新通告给RTB,由此避免路由环路的产生。

 

(3)毒性反转

毒性反转是指路由器从某个端口学到路由后,将该路由的跳数设置为16,并从原接收端口发送给邻居路由器。毒性反转机制可以使错误路由立即超时,即配置毒性反转。RIP从某个端口学习到路由之后,发送给邻居路由器时会将该路由的跳数设置为16。利用这种方式,可以清除对方路由表中的无用路由。如图所示,RTB向RTA通告了度量值为1的10.0.0.0/8路由,RTA在通告给RTB时将该路由度量值设置为16,如果10.0.0.0/8网络发生故障,RTB便不会认为可以通过RTA到达10.0.0.0/8网络,因此就可以避免路由环路的产生。

 


(4)触发更新

触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文。默认情况下,一台RIP路由器每30s会发送一次路由表更新给邻居路由器,当本地路由信息发生变化时,触发更新功能允许路由器立即发送触发更新报文给邻居路由器,来通知路由信息更新,而不需要等待更新定时器超时。例如图所示的示例,路由器RTB会立即通告网络10.0.0.0/8不可达信息,从而加速了网络收敛。

 


四、RIP配置实例

1.目标

通过RIP的配置实现网络的互通。

2.拓扑图

本实例的网络拓扑如图所示。

3.配置步骤

( 1)按拓扑图配置端口IP地址

<Huawei>system-view //进入系统视图

[Huawei]sysname R1

//修改设备名称

[R1]interface GigabitEthernet 0/0/0

//进入端口视图

[R1- -GigabitEthernet0/0/1]ip address 192.168.2.1 24//将和 PC1连接的端口配上IP地址

 [R1-GigabitEthernet0/0/0]quit

//退回系统视图

[R1]interface GigabitEthernet 0/0/1

//进入端口视图

[R1-GigabitEthernet0/0/1]ip address 192.168.1.1 24//将和 R2连接的端口配上IP地址

[R1-GigabitEthernet0/0/1]quit

//退回系统视图

R2与R1配置类似。

(2)启动RIP并在指定网段使能RIP

[R1]rip 1

//进入RIP路由配置视图

[R1-rip-1]version 1

//设置BIP版本

[R1-rip-1]network192.168.1.0

//将和R2连接的端口加入RIP中

[R1-rip-1]network192.168.2.0

//将和PC1连接的端加入RIP中

R2与R1配置类似。

4.测试

(1)查看IP路由表

查看路由表,可发现相应路由。


(2)用Ping命令检查联通性

可以Ping通,当然也能Ping通其他网段,说明全网联通性正常。

 

 

 

有关RIP协议的更多相关文章

  1. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  2. ruby - HTTP POST 上的 SSL 错误(未知协议(protocol)) - 2

    尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify

  3. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  4. 网络实验之RIPV2协议(一) - 2

    一、RIPV2协议简介  RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对

  5. ruby - 协议(protocol)族不支持的地址族 - 2

    我尝试执行此页面中显示的ruby示例:http://tomayko.com/writings/unicorn-is-unix但我得到的只是echo.rb:9:in`bind':Addressfamilynotsupportedbyprotocolfamily-bind(2)(Errno::EAFNOSUPPORT)fromecho.rb:9:in`'有什么想法吗? 最佳答案 我遇到了同样的问题。只需将localhost更改为0.0.0.0:address=Socket.pack_sockaddr_in(4242,'0.0.0.0')

  6. ruby-on-rails - 在 Github 上 fork Ruby/Rails gem 的正确协议(protocol)/礼仪是什么,可以作为持续的并行 fork 进行维护? - 2

    最近我使用了一个由单个开发人员创建的不错的gem,它托管在Github上。在我的工作中,我不得不对它进行一些实质性的修改,添加一些改进。有些是特定于项目的,有些是特定于gem的,还有一些是独立的改进。对于特定于gem的改进(例如,错误修复),我fork了存储库,应用了修复,并提出了拉取请求。然后,然而,我注意到独立的改进有点属于原始gem的并行、持续的分支类别。更清楚地说,你以前见过它;我重写了原始gem的View以使用TwitterBootstrap框架。因此,我也将它推送到了Github,但是,当然,我没有提出拉取请求——相反,我更新了README以解释不同之处,并感谢gem的原作

  7. Vlan+RIP+路由的综合学习——思科模拟器学习 - 2

    一、问题假设一个公司分配到了一个C类网络192.168.1.0/24,需要划分成两个部门,通过一台三层交换机连到公司出口路由器上,路由器再和其他路由器连接。现要做适当配置,实现公司内部主机不同部门以及与外部主机之间的相互通信。为了简化网管的管理维护工作,公司决定在三层交换机设置默认路由,在出口路由器上设置静态路由,其他部分采用OSPF协议或RIP协议实现互通。二、技术原理静态路由具有简单、高效、可靠和安全保密性高等优点。OSPF开放式最短路径优先协议能够适应各种规模的网络环境,是典型的链路状态协议。OSPF路由协议通过向全网扩散本设备的链路状态信息,使网络中每台设备最终同步一个具有全网链路状态

  8. ruby-on-rails - OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=unknown 状态:未知协议(protocol) - 2

    我关注了很多关于这个问题的帖子,但没有一个对我有帮助。我正在尝试使用最简单的irb命令进行连接:require'open-uri'open('https://aristo4stu3.bgu.ac.il')奇怪的是,对于我尝试过的任何其他httpsuri,它都工作正常(即https://google.com)。出于调试目的,我什至尝试使用以下方法禁用SSL验证:OpenSSL::SSL::VERIFY_PEER=OpenSSL::SSL::VERIFY_NONE这似乎也没有帮助。我的设置是(在AWS上):$rvm-vrvm1.21.3(stable)byWayneE.Seguin,Mic

  9. (4)华为ensp--RIP基本配置 - 2

    1.什么是rip?RIP(RoutingInformationProtocol,路由信息协议是一种动态路由选择协议,它是基于距离矢量算法,使用“跳数”(最大15)来衡量到达目标地址的路由距离.2.为什么要使用rip?在出现动态路由前,静态路由有几个问题无法解决:(1)当网络拓扑结构和链路状态发生变化,需要对路由器的静态路由信息进行大范围修改,工作复杂度高;(2)网络发生故障时,不能重选路由,很可能使路由失败。于是出现动态路由协议,路由器自动学习,自适应网络的变化,无需人工更改配置。3.rip一般用在哪里?“rip适用于中小型网络,因为rip是基于距离矢量的算法(D-V算法)。由于其只能支持0-

  10. ruby-on-rails - 如何使用rails输出当前协议(protocol)和url? - 2

    我有一个共享对话框。在开发中它看起来像:http://xxxxxx.com/stuff产品上:https://yyyyyyyyyyy.com/stuff输出#Protocol##URL#的最佳Rails方式是什么我可以在哪里设置它们?谢谢 最佳答案 request.protocolrequest.url参见requestobject. 关于ruby-on-rails-如何使用rails输出当前协议(protocol)和url?,我们在StackOverflow上找到一个类似的问题:

随机推荐