网络原理考点之路由选择算法与路由器

先说下路由器:

如题:2017年4月

分析:路由器的作用?书中给出的解释是,获取与维护路由信息以及转发分组。B说的是转发数据帧,一般数据帧指的是MAC帧,所以这里有疑点。

C的说法是要求网络层以上的协议相同,这个也有疑点,因为路由器特性也没硬说网络层以上协议相同,如下:
1、路由器是一种连接两个运行相同/不同协议的通讯子网的硬件设备。(这里的功能其实是指多协议路由器,详见网关与路由器区别,而本题显然是不能当作多协议路由来处理的,也就是题目所说的路由只是工作在网络层上,那就不具备不同协议子网的通信功能,所以C是正确的

2、针对网络层地址协议(如IP地址)进行选择与判断

3、需要有二层地址与三层地址的映射能力(地址解析)

4、对相同高层协议提供多个网络互连服务。

关于网关、路由器的区别:

网关

网关(Gateway)又称网间连接器、协议转换器。

网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。

网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。

与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层--应用层。

路由器

路由器(Router)是一种负责寻径的网络设备,它在互连网络中从多条路径中寻找通讯量最少的一条网络路径提供给用户通信。路由器用于连接多个逻辑上分开的网络。对用户提供最佳的通信路径,路由器利用路由表为数据传输选择路径,路由表包含网络地址以及各地址之间距离的清单,路由器利用路由表查找数据包从当前位置到目的地址的正确路径。

路由器使用最少时间算法或最优路径算法来调整信息传递的路径,如果某一网络路径发生故障或堵塞,路由器可选择另一条路径,以保证信息的正常传输。路由器可进行数据格式的转换,成为不同协议之间网络互连的必要设备。

路由器使用寻径协议来获得网络信息,采用基于“寻径矩阵”的寻径算法和准则来选择最优路径。按照OSI参考模型,路由器是一个网络层系统。路由器分为单协议路由器和多协议路由器。

本质区别

网关这种设备它主要是用来连接两种不同的网络,同时,网关它还能够同时与两边的主机之间进行通信。但是两边的主机是不能够直接进行通信,是必须要经过网关才能进行通信。网关的工作是在应用层当中。

路由器它是属于网络层设备,通常是以包为单位进行数据的发送。在路由器的子接口,是有分割广播域的作用,所以当我们用交换机做VLAN以后,都是要在路由器上做一个三层的路由。

使用方式的区别

网关它可以是路由器,交换机或者是PC。在同一网段之内进行通信,是不需要将网关介入其中,只有当主机个非本网段设备进行通信的时候,才需要将数据包全部发给网关设备,再经由网关设备进行转发或者是有路由处理等。

路由器它是一个网络层系统,路由器在现在市场上一般是被分成了两大类,一类是单协议路由器,另一类是多协议路由器。路由器它可以进行数据格式的转换,成为不同于协议之间的网络互连的必要设备。

功能上的区别

网关可以分为传输型网关和应用型网关,它的功能是充当转换重任,实质上就是一个网络通向其他网络的IP地址。

路由器的功能主要有:连通不同的网络和信息传输作用。按照使用可分为:接入、企业级、骨干级、太比特、多WAN以及3G无线等。

 

关于路由选择算法:

这部分内容以选择和填空题较多,如2019年10月 20题

又如2019年4月 30题

答:

共分为两大类:

一、全局式路由选择算法

以所有结点之间的连通性及所有链路的费用为输入。链路状态算法LS。

二、分布式路由选择算法

以迭代、分布式的方式计算出最低费用路径。没有结点有关于所有网络链路费用的完整信息,每个结点仅有与其直接相连的链路的费用知识即可开始工作。然后通过迭代计算过程并与相邻结点交换信息,一个结点逐渐计算出到达某目的节点或一组目的结点的最低费用路径。距离向量算法DV。

再如:2018年4月

 掌握了距离矢量路由算法,详见以下。再解这个题就是个思想问题了。

 C(延时)线路
A9B
B5B
C0C
D1D
E3E
F4D

与C直连的,先填上,这就是最短的,还需要求的是C  ->  A和C  ->F .

距离矢量思想就是通过邻接路由器更新路由表,所以,C  ->  A,根据已知,可能的路径距离:

C  ->  B   -> A=9

C  ->  E   -> A=10

C  ->  B   -> F ->  E   -> A,像这种就不要考虑了

C  ->  D   -> F ->  B   -> A=9,延时一样,但跳的多,也舍去,一般就是从跳的少的中选,这样才是最优的。

C  ->F,也是一样的思路。

没必要把去和往的路径都求出来,这样估计给你150分钟也弄不出来,矢量思想,也是根据邻居已知的最优路径来求的。


了解以上这些,对于考试而言就足够了,但这部分其实还是挺有用的,所以多记录了下。

链路状态路由选择算法LS

实践中(用OSPF路由选择协议),经常由链路状态广播算法来完成。

ls算法的步骤流程

1、确认在物理上与之相连的路由器并获得它们的IP地址。当一个路由器开始工作后,它首先向整个网络发送一个“HELLO”分组数据包。每个接收到数据包的路由器都将返回一条消息,其中包含它自身的IP地址。

2、测量相邻路由器的延时(或者其他重要的网络参数,比如平均流量)。为做到这一点,路由器向整个网络发送响应分组数据包。每个接收到数据包的路由器返回一个应答分组数据包。将路程往返时间除以2,路由器便可以计算出延时。(路程往返时间是网络当前延迟的量度,通过一个分组数据包从远程主机返回的时间来测量。)该时间包括了传输和处理两部分的时间——也就是将分组数据包发送到目的地的时间以及接收方处理分组数据包和应答的时间。

3、向网络中的其他路由器广播自己的信息,同时也接收其他路由器的信息。 
在这一步中,所有的路由器共享它们的知识并且将自身的信息广播给其他每一个路由器。这样,每一个路由器都能够知道网络的结构以及状态。

4、使用一个合适的算法,确定网络中两个节点之间的最佳路由。 
在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。详见自已的算法《迪科斯特算法》

距离向量路由选择算法DV

计算机网络通常使用动态路由算法,因为这类算法能够适应网络的拓扑和流量变化。

距离矢量路由算法”的基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每个距离矢量表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离,通信子网中的其它每个路由器在表中占据一个表项,并作为该表项的索引。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。

现假定用延时作为距离的度量,举一个简单的例子,如图7-37所示。假设某个时候路由器Y收到其邻居路由器X的距离矢量,其中m是Y估计到达路由器X的延时。若Y路由器知道它到邻居Z的延时为n,那么它可以得知Z通过Y到达X需要花费时间m+n。如果Z路由器还有其他相邻路由器,则对于从其他每个邻居那儿收到的距离矢量,该路由器执行同样的计算,最后从中选择费时最小的路由作为Z去往X的最佳路由,然后更新其路由表,并通告给其邻居路由器。

                                                                           图7-37  距离矢量路由算法简单实例

选路环路(routing loop)和计数到无穷(count-to-infinity)问题

当某条链接的费用减少时,我们称之为有一个“好消息”。在网络中,好消息的传递往往很迅速。

例如,存在这样一个网络:

某一时刻,Y检测到它到X的链路费用由4减少为1,好消息当然要告诉大家了,于是它更新了自己的距离向量,并通知了Z。Z在收到Y的更新报文后,也更新了自己的距离向量(由5减为2),并向邻居们发送更新报文。而后,Y又收到了Z的更新报文,但它发现并没有改变自己的最低费用,于是保持不变。这样,仅仅经过了两次迭代网络就达到了静止。好消息通过网络得到了迅速传播。

但是,当链路费用增加(甚至断开)时,就不会这么简单了。

我们看下面这个例子:

 

还是X、Y、Z三个节点。此时Y检测到它到X的路径费用由4增加到了60。此时节点Z的距离向量为:d(X) = 5(此时Z还没有更新,所以还是5), d(Y) = 1, d(Z) = 0。于是Y在更新向量时发现,咦,Z到X的距离只有5,那可以先到Z再到X,于是Y的距离向量更新为:d(x) = 5 + 1 =6, d(Y) = 0, d(z) = 1。我们可以发现,这个逻辑显然是错误的,因为Z到X的距离为5的前提是要经过Y,但Y更新后的路径又要经过Z,这就形成了一个选路环路(routing-loop)问题。因为Y的距离向量更新了(虽然是错误的),但它还是向Z发送了更新报文。Z收到更新报文后,比较了下邻居们到X的距离,发现经过Y的路径距离为1 + 6(环路形成后的Y的向量) = 7,小于直接到X的距离,于是Z也更新的自己的距离向量,然后又将更新后的距离向量发给Y。Y收到后又更新向量为8,然后再发给Z。。。这样循环往复,更新报文在Y和Z之间传来传去,直到第44次迭代后,Z算出它经由Y的路径费用大于50为止。此时,Z最终确定到X的最短路径费用是直接到达X的费用50,而Y也得到了最短路径是经Z到X的费用51。

可以看出,虽然最后还是得到了正确的信息(最后的50和51是正确的!),但坏消息的传播与好消息相比实在是慢太多了!而且,如果X和Y之间的费用为10000,Z和X的费用是9999时,就会出现计数到无穷(count-to-infinity)的问题!

只有深入进去,才能发现些有价值的问题点,才能找到解决问题的途径。

毒性逆转方法(The Reverse-Poison(Split-horizon) Hack) 

上述的选路环路问题可以通过毒性逆转的技术加以避免。它的基本思想是:如果Z的最短路径要通过邻居Y,那么它将告诉Y自己到目的节点的距离是∞。这样,Z向Y撒了一个善意的谎言,使得只要Z经过Y选路到X,它就会一直持续讲述这个谎言,这样Y也就永远不会尝试从Z选路到X了,也就避免了环路问题。

我们将毒性逆转技术应用于上例。Y在更新自己的距离向量时,发现Z到X的距离是∞,于是它将d(x)无奈地更新为60,并向Z发送了更新报文。Z收到报文后更新自己的d(X)为50(直接选路到X),并发给Y更新报文(此时因为Z不需要经过Y进行选路,因此将告诉Y自己到X的距离为50)。Y在接收到Z的报文后,重新将距离更新为1 + 50 = 51,并告诉Z自己到X的距离是∞(实际是51)。Z收到报文后,发现最低耗费并没有改变,因此算法进入静止状态。

LS算法和DV算法的比较:

  • 报文复杂性

LS 算法要求每个结点都知道网络中每条链路的费用,要发送O(|N|*|E|)个报文。而且无论何时一条链路的费用改变时,必

须向所有结点发送新的链路费用。

DV算法要求在每次迭代时,在两个直接相连邻居之间交换报文。当链路费用改变时,DV 算法仅当在新的链路费用导致与该链路相连结点的最低费用路径发生改变时,才传播已改变的链路费用。

  • 收敛速度

LS算法的实现是一个要求O(|N|*|E|)个报文的O(|N|^2)算法。

DV 算法收敛较慢,且在收敛时会遇到路由选择环路,还会遭遇无穷计数的问题。

  • 健壮性。

如果一台路由器发生故障、行为错乱或受到破坏时

LS算法:路由器能够向其连接的一条链路广播不正确费用。作为LS广播的一部分,一个结点也可损坏或丢弃它收到的任何LS广播分组。但是每个LS结点都仅计算自己的转发表。因此路由计算在某种程度上是分离的,提供了一定程度的健壮性。

DV算法:一个结点可向任意或所有目的结点通告其不正确的最低费用路径。因此一个不正确的结点计算值会扩散到整个网络。

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值