路由表建立的算法

发布时间:2020-07-11 10:11:49 作者:伊忆墨
来源:网络 阅读:1127

一、路由表

    在计算机网络中,路由表或称路由择域信息库(RIB)是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表中含有网络周边的拓扑信息。路由表建立的主要目标是为了实现路由协议和静态路由选择。

    在现代路由器构造中,路由表不直接参与数据包的传输,而是用于生成一个小型指向表,这个指向表仅仅包含由路由算法选择的数据包传输优先路径,这个表格通常为了优化硬件存储和查找而被压缩或提前编译。

二、路由算法简介

    路由算法是提高路由协议功能,尽量减少路由时所带来开销的算法。当实现路由算法的软件必须运行在物理资源有限的计算机上时高效尤其重要。路由算法必须健壮,即在出现不正常或不可预见事件的情况下必须仍能正常处理,例如硬件故障、高负载和不正确的实现。因为路由器位于网络的连接点,当它们失效时会产生重大的问题。最好的路由算法通常是那些经过了时间考验,证实在各种网络条件下都很稳定的算法。

    此外路由算法必须能快速聚合,聚合是所有路由器对最佳路径达成一致的过程。当某网络事件使路径断掉或不可用时,路由器通过网络分发路由更新信息,促使最佳路径的重新计算,最终使所有路由器达成一致。聚合很慢的路由算法可能会产生路由环或网路中断。

三、路由算法的目标特点

    路由算法通常具有下列目标特点的一个或多个:优化、简单、低耗、健壮、稳定、快速聚合、灵活性。

   (1)最优化:指路由算法选择最佳路径的能力。根据metric的值和权值来计算。

   (2)简洁性:算法设计必须简洁。路由协议网络中必须高效地提供其功能,尽量减少软件和应用的开销。这在当实现路由算法的软件必须运行在物理资源有限的计算机上时尤其重要。

   (3)坚固性:路由算法处于非正常或不可预料的环境时,如硬件故障、负载过高或操作失误时,都能正确运行。由于路由器分布在网络联接点上,所以在它们出故障时会产生严重后果。最好的路由器算法通常能经受时间的考验,并在各种网络环境下被证实是可靠的。

   (4)快速收敛:收敛是在最佳路径的判断上所有路由器达到一致的过程。当某个网络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算最佳路径,最终达到所有路由器一致公认的最佳路径。收敛慢的路由算法会造成路径循环或网络中断。

   (5)灵活性:路由算法要求可以快速、准确地适应各种网络环境。例如,某个网段发生故障,路由算法要能很快发现故障,并为使用该网段的所有路由选择另一条最佳路径。

四、路由算法分类

    路由器使用路由算法来找到到达目的地的最佳路由。当说“最佳路由”时,考虑的参数包括诸如跳跃数(分组数据包网络中从一个路由器或中间节点到另外的节点的行程)、延时以及分组数据包传输通信耗时。

    静态路由算法不能根据网络流量拓扑结构的变化来调整自身的路由表,也就不能找出最佳路由,动态路由算法则是节点路由选择要依靠网络当前的状态信息来决定。这种策略能较好地适应网络流量、拓扑结构的变化,有利于改善网络的性能。但由于算法复杂,会增加网络的负担。实用的三种路由策略是:

   (1)分布式路由选择。每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为DV(距离向量)算法。

   (2)集中式路由选择。每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法。

   (3)混合式动态路由选择。将分布路由选择与集中路由选择、以及其它路由选择方法混合使用。

五、距离向量算法

    各节点周期性地向所有相邻节点发送路由刷新报文,报文由一组(V,D)有序数据对组成,V表示该节点可以到达的节点,D表示到达该节点的距离(跳数)。收到路由刷新报文的节点重新计算和修改它的路由表

    距离向量路由算法具有简单,易于实现的优点。但它不适用于路由剧烈变化的或大型的网络环境。因为某个节点的路由变化像波动一样从相邻节点传播出去,其过程是非常缓慢的,称之为“慢收敛”。因此,在距离向量路由选择算法的路由刷新过程中,可能会出现路由不一致问题。距离向量路由选择算法的另一个缺陷是它需要大量的信息交换,但很多都可能是与当前路由刷新无关的。

六、链路状态算法

    ⑴ 每个节点必须找出它的所有邻居

   当一个节点启动后,通过在每一条点到点的链路上发送一个特殊的HELLO报文,并通过链路另一端的节点发送一个应答报文告诉它自己是谁。

    ⑵ 每个节点测量到它的每个邻居的时延或其他参数

    链路-状态路由选择算法要求每个节点都知道到它的每个邻居的时延。测量这种时延的最直接的方法是在它们之间的链路上发送一个特殊的ECHO响应报文,并且要求对方收到后立即再将其发送回来。将测量得到的来回时间除以2,即可得到一个比较合理的估计。为了得到更准确的结果,可以将测试重复多次,取平均值。

    ⑶ 建立链路-状态报文

    收集齐了用于交换的信息后,下一步就为每一个节点建立一个包含所有数据的报文。报文以发送者的标识符开始,随后为顺序号以及它的所有邻居的列表。对于每一个邻居,给出到此邻居的时延

    建立链路-状态报文很容易,困难是决定何时建立它们。一种可行的方法是每隔一段规律的时间间隔周期性地建立它们。另一种可行的方法是当节点检测到了某些重要事件的发生时建立它们。例如,一条链路或一个邻居崩溃或恢复时,建立它们。

    ⑷ 分发链路-状态报文

    基本的分发算法是使用顺序号的洪泛法。这种分发算法由于循环使用顺序号、某个节点曾经崩溃或某个顺序号曾经被误用过等原因,可能会使不同的节点使用不同版本的拓扑结构,这将导致不稳定、循环、到达不了目的机器及其他问题。为了防止这类错误的发生,需要在每个报文中包含一个年龄域,年龄每秒减1,当年龄减到0时,丢弃此报文。

    ⑸ 计算新路由

    一旦一个节点收集齐了所有来自于其他节点的链路-状态报文,它就可以据此构造完整的网络拓扑结构图,然后使用Dijkstra算法在本地构造到所有可能的目的地的最短通路。

    链路-状态路由选择算法具有各节点独立计算最短通路、能够快速适应网络变化、交换的路由信息少等优点,但相对于距离向量路由选择算法,它较复杂、难以实现。




推荐阅读:
  1. 路由表的路由来源有哪些?
  2. CCNA实验二:手动建立静态路由表

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

网络 计算机

上一篇:如何创建JavaScript中的对象

下一篇:JQuery和AngularJS有哪些区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》