路由和路由表生成算法

xiaoxiao2021-02-28  100

*路由相关

* 路由:数据包从源地址到目的地址所需要经过的路径,由一系列节点组成。 路由节点:一个具有路由功能的主机或者路由器,维护一张路由表,通过查询路由表来决定向那个姐发送数据包。 路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接收和发送,其中最后一个是缺省路由条目。 路由条目:路由表中的每一行,每个条目主要由网络地址、子网掩码、下一跳地址、发送接收四部分组成,如果要发送的数据报的目的网络地址匹配到路由表中的某一行,就按照规定接受发送到下一跳。

在Linux下可以使用route查看路由表: Destination是目的网络地址 Gateway是下一跳地址 Genmask是子网掩码 Iface是发送接口 Flags中的U标志表示此条目有效(可以禁用某些条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发,因此下一跳地址处记为* 号。 Iface是发送接口

常见路由表生成算法

距离向量算法

路由器周期性地向其相邻路由器广播自己知道的路由信息,用以通知相邻路由器自己可以到达的网络以及到达该网络的距离。相邻路由器可以根据收到的路由信息修改和刷新自己的路由表。优点是算法简单、易于实现。缺点是慢收敛问题,路由器的路径变化需要像波浪一样从相邻路由器传播出去,过程缓慢。 每一个距离向量包括到达目的节点的最佳输出线路和到达目的节点所需时间或者距离。每过一段时间,路由器会向所有的邻居节点发送它到每个目的节点的距离表,同时也接受每个邻居节点发来的距离表。这样经过一段时间就可以将网络当中每个路由器所获得的距离向量信息在各路由器上统一起来,这样路由器只需要查看这个距离向量表就可以为不同来源分组找到一条最佳的路由。

链路-状态路由选择算法

链路-状态算法(link-status,简称L-S),也叫最短路径优先(shortest path first SPF)算法,它的主要做法如下: 首先由路由器向相邻路由器发送查询报文,测试和它相邻路由器的链路状态。如果可以收到相邻路由器发回的响应,则说明该相邻路由器和这个路由器之间可以正常通信; 在收到该路由器和其他相邻路由器的链路状态后,还向系统中所有参加最短路径优先算法的路由器发送链路状态报文; 各路由器收到其他路由器发来的链路状态报文后,根据报文中的数据刷新本路由器所保存的网络拓扑结构图。如果链路发生变化,路由器将启用Dijkstra算法生成新的最短路径优先数,并刷新本地路由表。

LS算法

采用LS算法时,每个路由器必须遵循以下步骤: 确认在物理上与之相连的路由器并获得它们的IP地址。当一个路由器开始工作后,它首先向整个网络发送一个“HELLO” 分组数据包。每个接收到数据包的路由器都将返回一条消息,其中包含它自身的IP地址。 测量相邻路由器的延时(或者其他重要的网络参数,比如平均流量)。为做到这一点,路由器向整个网络发送响应分组数据包。每个接收到数据包的路由器返回一个应答分组数据包。将路程往返时间除以2,路由器便可以计算出延时。(路程往返时间是网络当前延迟的量度,通过一个分组数据包从远程主机返回的时间来测量。)该时间包括了传输和处理两部分的时间——也就是将分组数据包发送到目的地的时间以及接收方处理分组数据包和应答的时间。 向网络中的其他路由器广播自己的信息,同时也接收其他路由器的信息。 在这一步中,所有的路由器共享它们的知识并且将自身的信息广播给其他每一个路由器。这样,每一个路由器都能够知道网络的结构以及状态。 使用一个合适的算法,确定网络中两个节点之间的最佳路由。 在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。 在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。 例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。

Dijkstra算法

Dijkstra算法执行下列步骤: 路由器建立一张网络图,并且确定源节点和目的节点,在这个例子里我们设为V1和V2。然后路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示权值。例如,[i, j]是节点Vi与Vj之间的链路权值。如果节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”。 路由器为网路中的每一个节点建立一组状态记录。此记录包括三个字段: 前序字段——表示当前节点之前的节点。 长度字段——表示从源节点到当前节点的权值之和。 标号字段——表示节点的状态。每个节点都处于一个状态模式:“永久”或“暂时”。 路由器初始化(所有节点的)状态记录集参数,将它们的长度设为“无穷大”,标号设为“暂时”。 路由器设置一个T节点。例如,如果设V1是源T节点,路由器将V1的标号更改为“永久”。当一个标号更改为“永久”后, 它将不再改变。一个T节点仅仅是一个代理而已。 路由器更新与源T节点直接相连的所有暂时性节点的状态记录集。 路由器在所有的暂时性节点中选择距离V1的权值最低的节点。这个节点将是新的T节点。 如果这个节点不是V2(目的节点),路由器则返回到步骤5。 如果节点是V2,路由器则向前回溯,将它的前序节点从状态记录集中提取出来,如此循环,直到提取到V1为止。这个节点列表便是从V1到V2的最佳路由。

**

收敛路由原理

** 基本概念 路由收敛指网络的拓扑结构发生变化后,路由表重新建立到发送再到学习直至稳定,并通告网络中所有相关路由器都得知该变化的过程,也就是网络拓扑变化引起的通过重新计算路由而发现替代路由的行为。通过路由收敛可以使路由域中所有路由器对当前的网络结构和路由转发达成一致的状态。收敛时间记录的是从网络的拓扑结构发生变化到网络中所有路由设备中路由表重新保持一致的状态转换过程。 触发条件 1)路由器失效 2)连接失效 3)管理度量调整等 步骤包括: 在转发层面启动定时器,所述定时器的时长用于限定路由收敛的速度;当转发层面监测到网络异常时或者控制层面对端口的关闭(Shut down)命令后,在相应的转发条目中置上标记;根据所述被置上的标记,取次优先的下一跳和出接口进行转发;控制层面重新计算相应目的地址的路由,并且更新到转发表中。本方法可以在网络状态发生变化、需要路由收敛的第一时间,由转发层面先侦测出这一变化,并直接执行收敛的结果,然后再更新路由表。由于将路由更新,转发更新的操作置后,使得路由的收敛时间大大减少。

转载请注明原文地址: https://www.6miu.com/read-70141.html

最新回复(0)