您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

动态路由协议概述及RIP

时间:2019-06-17 14:29:13  来源:  作者:

回顾IP路由的概念

动态路由协议概述及RIP

 

在一个IP网络中,路由(Routing)是个非常非常基本的概念。网络的基本功能,是使得处于网络中的两个IP节点能够互相通信,而通信实际上就是数据交互的过程,数据交互则需要网络设备帮助我们来将数据在两个通信节点之间进行传输。当路由器(或者其他三层设备)收到一个IP数据包,路由器会找出报文中的IP头里的目的IP地址,然后拿着目的IP地址到自己的路由表(Routing Table)中进行查找,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳IP转发出去,这就是路由(Routing)。

而每台路由器都会在本地维护一个路由表,路由表中装载着路由器通过各种途径获知的路由条目(Routes),每一条路由条目由路由前缀(路由所关联的目的网络号)、路由信息来源、出接口或下一跳IP、优先级、开销等信息元素构成。路由器通过直连、静态的或者动态的方式获取路由条目并维护自己的路由表,路由表是每台支持路由功能的设备进行数据转发的依据和基础,是一个非常重要的概念,任何一台支持路由功能的设备要执行数据转发或路由的动作,就必须拥有及维护一张路由表。

为什么要有动态路由协议

 

动态路由协议概述及RIP

 

上面已经说了,路由器是依赖自己维护的路由表来进行数据转发的,而路由表又是由许多路由条目构成的,路由器要将数据转发到目的地就必须有路由。一台路由器可以从多种来源学习到路由条目:

直连路由

路由器在初始启动后,如果我们为其接口配置IP地址,并且接口的物理及协议的状态都为UP,则路由器能够自动地学习该接口的网络号,将这条直连路由装载进路由表,这其实很好理解,因为这是我“家门口”的网络嘛,无需干预,自动学习。

静态路由

直连网络能够自动学习,可是非直连网络可就无法自动学习了,那么一种最简单的方式,就是通过手工配置的方式为路由器创建静态的路由表项,这叫静态路由,静态路由由于其是静态手工配置,因此可管理性非常高,但是也有明显的缺陷,因为你要到一个目的地,就必须做一条静态路由的配置,那么如果网络特别庞大、设备数量特别多呢?工作量就相当大了,这是低效且不切实的;再者静态路由无法根据网络拓扑的变更做出动态的感知,因此当网络发生变化时,管理员可能不得不重新配置或调整静态路由。因此,我们迫切需要一种动态的机制,来帮助路由器更加灵活的维护路由信息。

动态路由协议的分类

根据作用的范围,路由协议可分为:

内部网关协议(Interior Gateway Protocol,简称IGP):在一个自治系统内部运行

外部网关协议(Exterior Gateway Protocol,简称EGP):运行于不同自治系统之间

动态路由协议概述及RIP

 

所谓的AS自治系统指的就是,一个独立自治的、自我管理的路由选择域。

根据使用的算法,路由协议可分为:

距离矢量协议(Distance-Vector):包括RIP和BGP。其中,BGP也被称为路径矢量协议(Path-Vector)

链路状态协议(Link-State):包括OSPF和IS-IS

动态路由协议概述及RIP

 

关于距离矢量路由协议

 

动态路由协议概述及RIP

 

我们先初步认识一下距离矢量路由协议。

动态路由协议,大家可以理解为赋予了路由器一种“语言”交流能力。在静态路由环境下,路由器之间都互相不交流的,比较闷骚。但是一旦激活了动态路由协议,路由器之间就能够进行互相的通告和学习。

在上图中,初始情况下,R2是无法知道远程网络、R1的直连1.1.1.0/24的,在R1和R2激活了距离矢量的动态路由协议后,R1将自己家门口的路由1.1.1.0/24通告给R2,在通告路由的同时,还告诉R2你要前往1.1.1.0/24所需花费的“代价,或成本”,这样一来R2就能动态的从R1学习到这条路由并且装载进路由表。于是当R2要发送数据去往1.1.1.0/24的时候,就会将数据包丢给下一跳路由器、也就是路由的通告者R1。这就是所谓的距离矢量。最具代表性的距离矢量路由协议是RIP,RIP是一个有着悠久历史的路由协议,简单、小巧,但是也存在很大局限,这使得它几乎很少在现今的网络环境中被使用。但是经典毕竟是经典,从它入手,我们将更快速的理解动态路由协议。

使用距离矢量路由协议的路由器并不了解网络的拓扑。该路由器只知道:

自身与目的网络之间的距离,应该往哪个方向或使用哪个接口转发数据包

实际上,运行距离矢量路由协议的路由器,是将自己的整张路由表更新给直连的其他路由器,彼此之间都进行更新,而路由器也会从其他直连路由器收到他们发来的路由更新,于是就进行一系列的路由收发行为,最终的结果是,大家都心满意足的填充好了自己的路由表。

动态路由协议概述及RIP

 

关于链路状态路由协议

动态路由协议概述及RIP

 

距离矢量路由协议是直接将自己的路由表更新给直连路由器,并且路由器并不了解整个拓扑结构,这很容易在特定情况下产生诸如路由环路之类的问题(因此距离矢量路由协议定义了一系列防止环路的特性)。相比之下,链路状态路由协议则更新的不再是路由表或路由条目,而是对链路(接口)的描述等,通过链路状态信息的泛洪,路由器搜集这些链路状态信息并装载进链路状态数据库,随后运行特定的算法计算出一个无环的拓扑。因此运行链路状态路由协议的路由器是知晓网络的拓扑结构的。

链路状态路由协议应该说是目前业内IGP应用的主流,其中最具代表性的当属OSPF和ISIS。

RIP基础

1、RIP的更新过程

现在我们通过一个简单的环境,来看一下运行了RIP的路由器是如何交互路由信息的,并且网络中的路由器是如何完成路由信息的学习和收敛的。当然,这是一个微观的模拟过程,旨在帮助大家理解RIP的工作机制。

1)路由器初始启动

最初的网络发现:直连网络写入路由表,路由器能够自动学习直连路由并写入路由表,现在我们在所有路由器上都部署RIP。

 

动态路由协议概述及RIP

 

2)初次交换路由信息

由于ABC都运行了RIP,因此他们都将自己的路由表通过广播(RIP版本1是广播发送,版本2是组播发送)的方式从所有激活了RIP的接口上更新出去。拿B来举例,它将自己的路由表更新出去,A和C都能够收到。A收到B传过来的路由表,它发现10.0.3.0路由自己没有,于是将这条路由学习过来,同时在为这条路由关联一个度量值:1跳,所谓1跳的意思是,A要到达10.0.3.0这个网络,需要经过B这个路由器,这是一跳,一跳就是一台三层设备,RIP通过跳数作为路由的度量值。

经过这一轮学习,A能学到10.0.3.0,C能学到10.0.2.0,而B能够学习到A和C传来的10.0.1.0及10.0.4.0。

动态路由协议概述及RIP

 

3)路由收敛完成

接下去又是一轮更新,所有路由器将自己的路由表发送给直连邻居。A就能学习到B更新过来的10.0.4.0路由,跳数为2跳,因为它要到10.0.4.0需要经过BC两台路由器(实际上他并不知道要经过谁,RIP只是单纯的做个加法而已)。这样一来,所有的路由器,都拥有到达全网各个角落的路由了。我们把这个称为,路由收敛完成了。

动态路由协议概述及RIP

 

路由器收敛完成的标志

当所有路由表包含相同网络可达性信息

网络(路由)进入一个稳态

路由器继续交换路由信息

当无新路由信息被更新时收敛结束

网络在达到收敛前无法完全正常工作

2、RIP概述

动态路由协议概述及RIP

 

RIP(Routing Information Protocols,路由信息协议)是历史悠久的内部网关协议,适用于小型网络,是典型的距离矢量协议;

RIP基于UDP,端口520;

华为设备上路由优先级为100;

定期更新整张路由表;依照传闻;距离矢量路由协议并不了解网络拓扑;

V2在V1的基础上做了如下改进:

  1. 增加外部路由标记
  2. 增加VLSM支持
  3. 组播发送RIP消息:224.0.0.9
  4. 支持认证
  5. 增加下一跳字段

3、RIP的Metric(度量值)

RIP以跳数(Hops)作为度量值,虽然简单,但是事实上是不够科学的。如下图:

动态路由协议概述及RIP

 

R5本地有个直连网络100.0/24,它通过RIP将这个网络更新出来。R2及R4都能学习到这条路由,并且跳数为1。而R1能通过R2学习到这条路由,跳数为2;同时R1又能从R3学习到R4传递过来的100.0/24路由,跳数为3,这样一来,R1将收到两条到达同一个网络100.0/24的两条RIP更新,它会去比较这两条路由的metric,结果发现,从R2来的路由,metric也就是跳数要更小,因此R1将R2更新过来的路由装载进路由表,并且将R2设置为去往该网段的下一跳。

很明显,这是不合理的,因为虽然R1从R3-R4-R5这段路径去往100.0/24经过的设备更多,但是链路却都是1G带宽,而从R2这一侧走,链路的带宽却非常的低。但是很遗憾,RIP并无法不关心带宽的问题,它只将跳数作为路由的度量值,这就是它的短板之一。

在路由表中,能够查看到RIP路由的跳数:

动态路由协议概述及RIP

 

4、RIP的防环机制

我们先来看一下路由更新环路的现象:

 

动态路由协议概述及RIP

 

上图汇总,假设ABC都运行了RIP,并且网络已经收敛完成。现在C路由器的直连网段10.0.4.0发生故障,C检测到故障后,将10.0.4.0路由从路由表中擦除。

 

动态路由协议概述及RIP

 

这时候,更新周期到了,ABC路由器都将自己的路由表更新给直连邻居。那么C路由器会收到B更新过来的路由,其中也包括10.0.4.0,这时候C把10.0.4.0学习过来并且装载进了路由表,同时关联metric为2跳(因为路由是从B学习过来的,而B自己是1跳)。

 

动态路由协议概述及RIP

 

10.0.4.0路由继续在网络中随着更新周期的到来不断的被更新来更新去,然而事实上,10.0.4.0网络早就不存在了,这时候如果网络中有任何一个地方发送数据到10.0.4.0网络,这个数据将在网络中不断的打转,直到TTL递减为0。这就是环路。

环路是一个危害非常大的问题,一个健壮的路由协议应该有充分的机制去规避环路的问题,RIP也有相应的一系列机制来防止网络中出现环路。

  • 定义最大度量以防止计数至无穷大
  • 水平分割
  • 路由中毒
  • 毒性逆转
  • 抑制计时器
  • 触发更新

定义最大度量以防止计数至无穷大

在上文的例子中,10.0.4.0路由被RIP在网络中传来传去,跳数不断的累加。RIP定义了一个最大跳数,15跳,当一条路由跳数为16跳时,这条路由被视为不可达,因此这就避免了路由被无休止的传递。当然,这事实上是个笨方法,因为它在规避环路的同时,也限制了RIP适用的网络规模,如果我的网络当真有15台以上的路由器串起来呢,这时候RIP就搞不定了。

水平分割规则

水平分割规则是距离矢量路由协议一个特点非常鲜明的机制。

 

动态路由协议概述及RIP

 

当一台路由器,从一个接口收到一条路由更新,这台路由器将不再把这条路由从该接口再更新回去,这就是水平分割规则,RIP的环路避免很大程度上依赖于该规则。

毒性路由

动态路由协议概述及RIP

 

另一个避免环路的机制是,路由中毒机制,上图中,C路由器一旦发现10.0.4.0的直连网络发生故障,它将立即发送一个路由更新,该更新包含10.0.4.0路由同时将跳数设置为16跳,这样其他路由器将接收这个路由更新并将故障路由从路由表中擦去。

毒性逆转

 

动态路由协议概述及RIP

 

毒性逆转(Poison Reverse)的原理是,RIP从某个接口学到路由后,将该路由的开销设置为16(即指明该路由不可达),并从原接口发回邻居路由器。利用这种方式,可以清除对方路由表中的无用路由。毒性逆转可以防止产生路由环路的发生。

在上图中,如果C的10.0.4.0网络挂掉了,而B不再从C收到4.0的路由更新,它就有可能向C通告4.0的路由(暂不考虑水平分割规则),这样一来C就有可能将B作为4.0网络的下一跳,这就形成了环路。在B上开启了毒性逆转后,B从GE0/0/1口收到的RIP路由,它也会将路由从该接口更新回去,只不过跳数被设置成了16,这样C将不会使用这些路由。

同时配置水平分割和毒性逆转的话,只有毒性逆转生效。

5、RIP的配置

1.配置命令

启动RIP进程,并进入RIP配置视图

 [Router] rip 1 

在指定网段使能RIP(RIP只支持classful网络宣告)

 [Router-rip-1] network 192.168.12.0

事实上这条命令将产生两个效果:1是network的这个接口将激活RIP,开始发送和侦听RIP消息;2是network的这个接口所在的网段会被

引入RIP并被RIP通告出去。

指定RIP的版本(默认为版本1)

 [Router-rip-1] version 2

2.配置示例

动态路由协议概述及RIP

 

R1的配置如下:

#完成接口IP的配置:

 [R1] interface GigabitEthernet 0/0/0
 [R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24
 [R1] interface GigabitEthernet 0/0/1
 [R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24

#在R1的GE0/0/0及GE0/0/1口上激活RIPv2:

 [R1] rip 1
 [R1-rip-1] version 2 #指定RIP的版本为版本2
 [R1-rip-1] network 192.168.12.0 #在GE0/0/0口上激活RIP
 [R1-rip-1] network 192.168.1.0 #在GE0/0/1口上激活RIP

R2的配置如下:

#完成接口IP的配置:

 [R2] interface GigabitEthernet 0/0/0
 [R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24
 [R2] interface GigabitEthernet 0/0/1
 [R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24

#在R2的GE0/0/0及GE0/0/1口上激活RIPv2:

 [R2] rip 1
 [R2-rip-1] version 2
 [R2-rip-1] network 192.168.12.0
 [R2-rip-1] network 192.168.23.0

R3的配置如下:

#完成接口IP的配置

 [R3] interface GigabitEthernet 0/0/0
 [R3-GigabitEthernet0/0/0] ip address 192.168.23.3 24
 [R3] interface GigabitEthernet 0/0/1
 [R3-GigabitEthernet0/0/1] ip address 192.168.2.254 24

#在R3的GE0/0/0及GE0/0/1口上激活RIPv2

 [R3] rip 1
 [R3-rip-1] version 2
 [R3-rip-1] network 192.168.2.0
 [R3-rip-1] network 192.168.23.0

完成上述配置后,我们来查看及验证,首先查看R1的IP路由表:

 [R1] display ip routing-table 
 Route Flags: R - relay, D - download to fib
 ------------------------------------------------------------------------------
 Routing Tables: Public
 Destinations : 12 Routes : 12 
Destination/Mask Proto PreCostFlags NextHop Interface
 192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
 192.168.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
 192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
 192.168.2.0/24 RIP100 2 D 192.168.12.2 GigabitEthernet0/0/0
 192.168.12.0/24 Direct 0 0 D 192.168.12.1 GigabitEthernet0/0/0
 192.168.12.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
 192.168.12.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
 192.168.23.0/24 RIP 100 1 D 192.168.12.2 GigabitEthernet0/0/0
 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
 ……

从上面的输出,我们可以看到R1已经通过RIP学习到了两条路由,分别是192.168.2.0/24及192.168.23.0/24。当然为了使得PC1与PC2要能够正常通信,沿途的所有路由器都要有完整的路由表项,因此我们还需要检查检查R2及R3的路由表,重点看RIP路由:

[R2] display ip routing-table protocol rip 
 Route Flags: R - relay, D - download to fib
 ------------------------------------------------------------------------------
 Public routing table : RIP
 Destinations : 2 Routes : 2 
 RIP routing table status : <Active>
 Destinations : 2 Routes : 2
 Destination/Mask Proto Pre Cost Flags NextHop Interface
 192.168.1.0/24 RIP 100 1 D 192.168.12.1 GigabitEthernet0/0/0
 192.168.2.0/24 RIP 100 1 D 192.168.23.3 GigabitEthernet0/0/1

R2也通过RIP学习到了两条路由,分别是192.168.1.0/24及192.168.2.0/24。 同理查看R3的路由表,确保R3能够学习到192.168.1.0/24的路由。如此一来,全网的路由就打通了,那么现在PC1与PC2是能够互相通信的。
 



Tags:路由   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
“不就是一个WiFi嘛,还能玩出什么花?”相信大多数消费者对“无线路由器”都是这样的印象,最多也就讲究下“信号够不够强上网会不会卡”。对数码硬件略懂一二的朋友,也许已经挖掘...【详细内容】
2021-12-28  Tags: 路由  点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  Tags: 路由  点击:(1)  评论:(0)  加入收藏
畅谈关于装修的那些事,分享装修的各种经验和知识。大家好,我是畅谈装修,关注我即可了解更多关于装修的那些事!路由器现在已经是居家生活中“不可缺少的伙伴”,没有了它,相信连饭吃...【详细内容】
2021-12-27  Tags: 路由  点击:(3)  评论:(0)  加入收藏
尽管如今WiFi技术突飞猛进,已经朝着第七代演进,但生活中依然会碰上没有Wi-Fi的窘迫情况。例如,打工人租了新房,或者学生搬了宿舍,又或者临时更换工作驻地。这时候,经常会碰上房间...【详细内容】
2021-12-27  Tags: 路由  点击:(1)  评论:(0)  加入收藏
昨日谷歌宣布,自2022年12月19日开始停止对OnHub的软件支持,OnHub路由器仍将提供Wi-Fi信号,但用户无法用谷歌Home应用程序管理它。无法更新Wi-Fi网络设置、添加额外的Wifi设备或...【详细内容】
2021-12-22  Tags: 路由  点击:(5)  评论:(0)  加入收藏
IT之家 12 月 20 日消息,TP-Link“盛世之弧”AX6600 Wi-Fi6E 无线路由器现已开启预售,首发 1599 元,12 月 31 日正式开卖。IT之家了解到,TP-Link“盛世之弧”AX6600 为三频 8 流...【详细内容】
2021-12-21  Tags: 路由  点击:(5)  评论:(0)  加入收藏
当前路由器市场上,路由器的外形设计越发走向了极端,动辄6根8根的外置天线,像极了一个又一个黑色的八爪鱼。但实际上,受限于功率,多出的天线并不一定能带来更强的信号覆盖,反倒成了...【详细内容】
2021-12-21  Tags: 路由  点击:(5)  评论:(0)  加入收藏
静态NAT有些环境需要单独指定公网IP地址上网,可以使用静态NAT的方式来实现1、AR路由器的配置<Huawei>system-view #进入系统视图Enter system view, return user view with...【详细内容】
2021-12-15  Tags: 路由  点击:(18)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  Tags: 路由  点击:(25)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  Tags: 路由  点击:(27)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条