华为路由器配置默认路由为什么配偶的下一跳不可达也可以_计算机网络基础(九)---网络层-内部网关路由协议...

4496729f25f9970b06a7e63bc9e61bf4.png

文章内容概览 (公众号:IT猿圈)

dbba7ca746d5642553a8898be67c2950.png

内部网关路由协议之RIP协议

距离矢量(DV)算法

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

该算法是运行在图中的

  • 每一个节点使用两个向量Di和Si
  • Di描述的是当前节点到别的节点的「距离」
  • Si描述的是当前节点到别的节点的「下一个节点」

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

  1. 每一个节点和相邻的节点交换向量Di和Si的信息
  2. 每一个节点根据交换的信息,更新自己的节点信息

386225b6992b7eba98b5a157e7ac3aed.png
  • Di1表示从节点「i」到节点「1」「距离」
  • Si1表示从节点「i」到节点「1」「下一个节点」
  • 「n」表示节点的数量

「对于DV算法,他其实就是计算D的距离的最小值」。比如Dij的最小值就等于:min(Dix+Dxj)。通过一个例子来理解这个DV算法

030292a5766938481dfbbe1fc66387c2.png

图中有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)如下

4cdfbc8e71988164a22868b81bcbfb07.png

它表示的是A到其它的每个节点的距离分别为右侧列的值。在上边介绍DV算法时有提到,该算法会与「相邻」的节点交换Da和Sa的信息。假设A收到了来自B、C、D、F这四个相邻节点的信息,并且在接收到距离矢量信息的时候,知道了A到各个相邻节点的直线距离是多少

2475c59fd9859385a2ede14d9bfc54be.png

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

eb48c4526830fecedfdd4e34b0eb6959.png

图中的每一列表示的是某一个节点到达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到其它几个节点的下一个节点是什么

be305182b951f9684e89c7efbd314a91.png

「假设此时A在和B这个节点交换信息,A就得到了B这个节点的信息,也就是得到了B到每一个节点的距离」

04a2ce1bd1cdc330e7cbfec5f231ffca.png

A得到这些信息之后,首先会进行运算。因为A和B是直接进行通信的,所以A知道A到B的距离是什么。然后会通过从B那里得到的B到其它节点的距离,来计算A到其它节点的距离

A->B = 6
A->B->C = 6+11 = 17
A->B->D = 6+7 = 13
A->B->E = 6+17 = 23
A->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的信息之后的整个过程,如下图

c4952aed17e13e87ba216ba5d0387056.png

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

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

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

f603d41dc1841de493c28fc6fa9a66c6.png

A和D、F交换信息的过程也是和上边一模一样的。当A和每一个相邻的节点交换完信息之后,得到如下的结果

152903b878c3ee1a4e6a1c8fc250df7f.png

以上就是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跳)

通过例子来理解上边的描述。假设路由中初始化的信息如下最左边部分:

dc734dc2773d9645750ee518d7bdc188.png

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

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

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

假设初始化的路由信息如下最左边部分:

1908fc2bbad8fa883f45acae96029bc1.png

当初始路由器,收到中间的路由信息,该路由信息首先会进行修改,修改之后,就会根据接收到的路由信息对自身进行修改,因为这是最新的信息,所以会把原来的覆盖掉

「第三步:检索本地路由,对比相同目的地的距离,如果新信息的距离更小,则更新本地路由表」

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

23f8a990c28869ed89baff8dd91ce5ad.png

以上便是RIP协议的完整过程

RIP协议的缺点

通过一个例子来了解一下RIP协议的缺点。假设有A、B、C三个节点,并且他们是线性连接的。B、C到达A的距离分别是1和2,B是直接到达A,C是通过B到达A

25ac1ccd72b1e25b4250a84fd9f289d6.png

假设在某一个时刻,路由器A宕掉了,即A不可达。此时,B发现A不可达之后,就会询问C,询问C之后发现,通过C可以到达A,因此把下一跳设置为C,并且距离加一(也就是3)。C在某一个时刻也发现A不可达了,那么C也会询问B,发现B通过3跳之后可以到达A,所以它也会更新自己的路由信息,将到达A的距离设为4,并且下一跳设置为B,此时就会死循环下去,一直到距离为16(上边有介绍到,最多16跳,会认为目标不可达),才发现是不可达的

0bec8356050e03852b4a5a241f6ad35b.png

所以RIP协议最致命的缺点是:「故障信息传递慢」

「RIP为什么会有这个特点?」

  • 随便相信“隔壁老王”(不管是B还是C,如果说B得到了C的路由信息,它将会无条件的相信C。同样,如果是C,他也会无条件相信B,因此就会导致循环,直到跳数为16,才发现不可达)
  • “自己不思考”、“视野不够”(对于RIP协议,每一个路由器只看到相邻路由的信息,看不到更远的信息)

因为网络中经常出现故障,如果每一次故障,都需要这么多跳才能发现的话,会导致整个网络非常不可控,这就是RIP协议致命的缺点

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践 (公众号:IT猿圈)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值