路由表创建的算法

1、路由表算法

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

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

2、路由算法简介
分布式

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

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

3、路由算法的目标特色
测试

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

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

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

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

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

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

4、路由算法分类

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

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

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

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

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

5、距离向量算法

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

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

6、链路状态算法

    ⑴ 每一个节点必须找出它的全部邻居

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

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

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

    ⑶ 创建链路-状态报文

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

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

    ⑷ 分发链路-状态报文

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

    ⑸ 计算新路由

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

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

相关文章
相关标签/搜索