文章内容概览

外部网关路由协定之RIP协定

间隔矢量(DV)算法

在介绍RIP协定之前,先理解一下DV算法,因为该协定是通过DV算法进行实现的

该算法是运行在图中的

  • 每一个节点应用两个向量Di和Si
  • Di形容的是以后节点到别的节点的间隔
  • Si形容的是以后节点到别的节点的下一个节点

对于该算法,它是如何运行的?

  1. 每一个节点和相邻的节点替换向量Di和Si的信息
  2. 每一个节点依据替换的信息,更新本人的节点信息

  • Di1示意从节点i到节点1间隔
  • Si1示意从节点i到节点1下一个节点
  • n示意节点的数量

对于DV算法,他其实就是计算D的间隔的最小值。比方Dij的最小值就等于:min(Dix+Dxj)。通过一个例子来了解这个DV算法

图中有A、B、C、D、E、F这六个顶点和若干条边,对于这六个节点,就有左边这样的Di和Si的间隔矢量信息。对于Di,它有六个元素,别离是Dia、Dib...到Dif,他示意的是,i这个节点到A、B、C、D、E、F这六个节点的间隔。对于Si,它也有六个元素,别离是Sia、Sib...到Sif,他示意的是,i这个节点到A、B、C、D、E、F这六个节点的下一个节点是什么

下边会以A这个节点为例来展现DV算法是如何运行的,也就是求Da和Sa这两个向量。假如A的间隔矢量信息(Da)如下

它示意的是A到其它的每个节点的间隔别离为右侧列的值。在上边介绍DV算法时有提到,该算法会与相邻的节点替换Da和Sa的信息。假如A收到了来自B、C、D、F这四个相邻节点的信息,并且在接管到间隔矢量信息的时候,晓得了A到各个相邻节点的直线间隔是多少

为了更加不便的理解DV的过程,将A的间隔矢量信息和A到其它四个相邻节点的矢量信息合在一起

图中的每一列示意的是某一个节点达到A、B、C、D、E、F节点的间隔是什么

可能大家对表中的数据有疑难,为什么A到B的间隔是11,而B到A的间隔却是9。这个是因为里边的间隔矢量信息并不是最新的。比如说,A到B的间隔可能是通过A->C->B所失去的,因而这里A到B的间隔可能是11。而B到A的间隔可能是通过B->C->D->A所失去的,所以这里A到B的间隔矢量信息能够和B到A的间隔矢量信息不一样

列出A的S向量,默认初始化为,S向量示意的是A到其它几个节点的下一个节点是什么

假如此时A在和B这个节点替换信息,A就失去了B这个节点的信息,也就是失去了B到每一个节点的间隔

A失去这些信息之后,首先会进行运算。因为A和B是间接进行通信的,所以A晓得A到B的间隔是什么。而后会通过从B那里失去的B到其它节点的间隔,来计算A到其它节点的间隔

A->B = 6A->B->C = 6+11 = 17A->B->D = 6+7 = 13A->B->E = 6+17 = 23A->B->F = 6+11 = 17

以上就是A失去B的数据之后进行的运算,而后他会把失去的这些数据和本人的间隔矢量进行比拟,如果比本人到其它节点的间隔更小,那么它就会把它填充到本人的间隔矢量中。所以拿到B的数据,通过计算之后,发现A到B的间隔6,比本人原来的11小,所以把本人原来的11,替换成6;而后发现自己原来A到F的间隔为17,和计算之后A到F的间隔17相等,那么A也会进行替换。替换为完之后,A就会把相应的下一个节点设为B。以上就是A获取到B的信息之后的整个过程,如下图

接下来A又接管到了节点C的信息,这其中就包含C到A、B、C、D、E、F的间隔。A接管到C的信息之后,也会进行和之前一样的运算

A->B->C = 9+9 = 18A->C = 9A->C->D = 9+8 =17A->C->E = 9+11 = 20A->C->F = 9+10 = 19

通过计算之后,也会和本人现有的间隔矢量进行比拟。比方A->C的间隔为9,要比A之前到C的间隔12小,所以就会用9把原来的12替换掉,并且对应的S会填充为C,后边的同理,如图:

A和D、F替换信息的过程也是和上边截然不同的。当A和每一个相邻的节点替换完信息之后,失去如下的后果

以上就是DV算法的整个过程,回看前边介绍的DV算法,再来了解它的定义会好明确很多

  • 每一个节点应用两个向量Di和Si
  • Di形容的是以后节点到别的节点的间隔
  • Si形容的是以后节点到别的节点的下一个节点
  • 每一个节点和相邻的节点替换向量Di和Si的信息
  • 每一个节点依据替换的信息,更新本人的节点信息

RIP协定的过程

  • RIP(Routing Information ProtoCol)协定
  • RIP协定是应用DV算法的一种路由协定
  • RIP协定把网络的跳数(hop)作为DV算法的间隔(其实就是跳数越多,间隔就越长)
  • RIP协定每隔30s替换一次路由信息(这里的路由信息就蕴含Di和Si)
  • RIP协定认为跳数>15的路由则为不可达路由

应用RIP协定的路由器

  • 路由器会初始化路由信息(两个向量Di和Si)
  • 依据相邻路由器X发过来的信息,对信息的内容进行批改(下一跳地址设为X,所有间隔加1。意思就是,通过X,它能够达到X所发过来信息的每一个节点,只须要将间隔加1就能够了)
  • 批改了之后,首先检索本地路由,将信息中新的路由插入到路由表里边(因为有些目的地,本地路由表里边可能是没有的)
  • 检索本地路由,对于下一跳为X的,更新为批改后的信息
  • 检索本地路由,比照雷同目的地的间隔,如果新信息的间隔更小,则更新本地路由表
  • 如果3分钟没有收到相邻的路由信息,则把相邻的路由设置为不可达(也就是设置为16跳)

通过例子来了解上边的形容。假如路由中初始化的信息如下最右边局部:

第一步:检索本地路由,将信息中新的路由插入到路由表里边

初始化路由表中的信息,示意路由到D的间隔为2,并且其下一跳地址为A。假如此时收到来自路由器X发来的信息。信息有达到A的间隔4,下一跳地址为C。达到B的间隔为2,下一跳地址为C。收到这些信息之后,路由器会对本身信息进行批改,将所有的间隔都加一,并且将下一跳地址都设为X。接下来就会检索本地的路由,发现A、B都是原来路由里边没有的,所以会把A、B的信息插入到路由表中。就失去了更新之后的路由表

第二步:检索本地路由,对于下一跳为X的,更新为批改后的信息

假如初始化的路由信息如下最右边局部:

当初始路由器,收到两头的路由信息,该路由信息首先会进行批改,批改之后,就会依据接管到的路由信息对本身进行批改,因为这是最新的信息,所以会把原来的笼罩掉

第三步:检索本地路由,比照雷同目的地的间隔,如果新信息的间隔更小,则更新本地路由表

这一步其实就是前边介绍的DV算法过程,当初始路由收到另一个路由信息之后,另一个路由的信息先进行更新,而后和初始路由进行比照,如果新信息的间隔更小,则更新本地路由表

以上便是RIP协定的残缺过程

RIP协定的毛病

通过一个例子来理解一下RIP协定的毛病。假如有A、B、C三个节点,并且他们是线性连贯的。B、C达到A的间隔别离是1和2,B是间接达到A,C是通过B达到A

假如在某一个时刻,路由器A宕掉了,即A不可达。此时,B发现A不可达之后,就会询问C,询问C之后发现,通过C能够达到A,因而把下一跳设置为C,并且间隔加一(也就是3)。C在某一个时刻也发现A不可达了,那么C也会询问B,发现B通过3跳之后能够达到A,所以它也会更新本人的路由信息,将达到A的间隔设为4,并且下一跳设置为B,此时就会死循环上来,始终到间隔为16(上边有介绍到,最多16跳,会认为指标不可达),才发现是不可达的

所以RIP协定最致命的毛病是:故障信息传递慢

RIP为什么会有这个特点?

  • 轻易置信“隔壁老王”(不论是B还是C,如果说B失去了C的路由信息,它将会无条件的置信C。同样,如果是C,他也会无条件置信B,因而就会导致循环,直到跳数为16,才发现不可达)
  • “本人不思考”、“视线不够”(对于RIP协定,每一个路由器只看到相邻路由的信息,看不到更远的信息)

因为网络中经常出现故障,如果每一次故障,都须要这么多跳能力发现的话,会导致整个网络十分不可控,这就是RIP协定致命的毛病

在疾速变动的技术中寻找不变,才是一个技术人的外围竞争力。知行合一,实践联合实际