计算机网络之链路状态路由选择算法(LS)

一、准备知识

????????链路状态路路由选择算法是一种全局式路由选择算法。在此算法中,我们是假设所有网络拓扑和链路费用都是已知的(实践中通常是通过让每个结点向网络中所有其他节点广播链路状态分组来完成的)【OSPF协议】,通过节点广播使所有结点具备了该网络等同的完整视图。获得视图之后,通过LS算法可以计算出从源节点到网络任意结点的最低费用路径。
.
????????我们下面给出的链路状态路由选择算法叫做Dijkstra算法,在了解此算法之前,我们首先明白以下几个记号:

D(v):表示从源节点到目标结点v的最低费用路径的费用
p(x):从源结点到目标节点v(最低费用路径)的前一个结点(v的邻居)
N‘:如果从源到v的最低费用路径已知,那么可以将v加入N‘集合中
w:可被加入到N‘ 中结点,且节点的费用最小

.

二、LS算法原理

????????我们通过图来形象化描述路由选择问题,G=(N,E)是一个有N个节点(代表路由器),E条边(代表链路)的图(代表网络拓扑)。每条链路上的数字代表此链路的费用,如下图所示:

????????????????????????????????图1-1 网络拓扑及链路费用图
.

????????假设源节点为u,我们要找到从源节点到其他节点的最低消费路径,其算法如下:

1、初始化:
   N‘ = {u}                                                                                      D(u)已知,将u加入到N‘集合中
   for all nodes for n                                                                    对于除u以外的所有节点n
        if n is a neighbor of u                                                         如果n节点使u节点的相邻节点
            then D(n) = c(u,n)                                                        那么将n节点的D(n)为c(u,n)
        else D(n) = ∞                                                                      否则D(n)为无限大

2、循环阶段
    find w not in N‘ such that D(w) is a minimum                      找出不在N‘中的w【最小的D(w)】
    add w to N‘                                                                             将w添加到N‘中
    update D(n) for each neighbor n of w and not in N‘           更新与w节点相邻的节点n的D(n),且n不能在N‘中
        D(n) = min(  D(n) , D(w)+c(w,n)  )                                将D(n)置为D(n)和D(w)+c(w,n)中的最小值
    until N‘ = N                                                                             直到N‘ = N是结束循环

.

????????????????????????????????????????????????????????????????表1-1 图1-1中网络运行的状态链路算法步骤

????????※ 初始化阶段:找出所有与u相邻的邻居节点v,x,w,使D(v)=2,D(x)=1,D(w)=5;其余与u不相邻的y,z节点,其链路费用D(y)=∞,D(z)=∞
????????※ 第一次循环:我们找出在初始化阶段结束时具有最低费用的节点x,其费用为1,将节点x加入到N‘中,更新与x节点相邻且不在N‘中的节点【其实就是v,w,y节点】的D(n)值,计算公式为D(n) = min( D(n) , D(x)+c(x,n) ),得D(v)=2,D(w)=4,D(y)=2
????????※ 第二次循环:我们找出在第一次循环阶段结束时具有最低费用的节点v和y,我们先将y加入到N‘,并更新w,z节点的值,得D(w)=3,D(z)=4
........
????????直到所有节点都被加入到N‘中,循环结束,得到最低费用路径:c(u,v)=2,,c(u,w)=3,c(u,x)=1,c(u,y)=2,c(u,z)=4
.

????????当LS算法终止时,对于每个目标节点,我们都可以从表中找到最短费用路径的前一节点。而对于这个前一节点,又有最短路径的前一节点。依次类推,我们可以得到源节点到任意目标节点最低消费路径的完整路径:
????????(u,v):u-v
????????(u,w):u-x-y-w
????????(u,x):u-x
????????(u,y):u-x-y
????????(u,z):u-x-y-u
????????所以,对于u节点路由,通过存储到每个目的节点路由最低费用路径的下一跳节点即可,于是u节点路由表生成如下:

.

三、LS震荡现象

????????假设:1、链路费用是该链路所承载的数据量;2、初始路由是B逆时针发送1个单位给A,D顺时针发送1个单位给A,C逆时针发送e个单位给B,B再给A
????????#注:红色箭头表示B、C、D路由器会有持续的1个单位,e个单位、1个单位的数据要发往路由器A
.

????????所以初始状态将会如下图3-1a)所示:

????????????????????????????????3-1a) 初始状态网络费用状态
.

????????当再次运行LS算法之后,B、C、D路由都将会认为顺时针路由费用最低,那么将会产生如图3-1b)所示的费用信息:

????????????????????????????????3-1b)再次执行LS算法后的网络费用状态
.

????????当记录如图3-1b)所示的费用信息之后,再次运行LS算法,B、C、D路由器又将会向逆时针方向交付分组,结果如图3-1c)所示:

????????????????????????????????3-1c)第三次执行LS算法后的网络费用状态
.

????????再次运行LS算法之后,又变成顺时针,如图3-1d)所示:

????????????????????????????????3-1d)第三次执行LS算法后的网络费用状态
.

????????这样的现象我们称之为拥塞敏感的路由选择震荡现象,这种现象很可能会导致如下现象:
????????假设B路由现处于图3-1b)状态中,并将数据转发给C,C转发给D,但是此时D的路由表更新了,那么此时链路状态将会变成3-1c)的情况。D会将先前的数据又转发给C,C又将转发给B,如果此时路由表又开始更新的话,那么将会变成图3-1d)所示。如此一来,数据报将在B、C、D之间来回转发并且到达不了A,当数据的TTL=0时,数据报将会被丢弃
.

????????针对这种现象,链路状态算法通产会采取某种机制:让每台路由器发送链路通告的时间随机化,以确保不是所有的路由器都同时运行LS算法(即每台路由器执行LS算法的实际是不同的)

原文地址:http://blog.51cto.com/13547664/2161510

时间: 2024-10-13 13:08:34

计算机网络之链路状态路由选择算法(LS)的相关文章

动态路由选择协议(三)链路状态路由选择协议

链路状态不同于距离矢量路由协议依照传闻进行路由选择的工作方式,原因是链路状态路由器从对等路由器那里获取第一手信息.每台路由器会产生一些关于自己.本地直连链路.这些链路的状态(以此而得名)和所有直连相连邻居的信息.这些信息从一台路由器传送到另外一台路由器,每台路由器都做一份信息拷贝,但是决不改动信息.最终目的是每台路由器都有一个相同的有关网络的信息,并且每台路由器可以独立地计算各自的最优路径. 链路状态协议,有时叫最短路径优先协议或分布式数据库协议,是围绕着图论中的一个著名算法--E.W.Dijk

Dijkstra链路状态选路算法

步骤 N1 D(v),p(v) D(w),p(w) D(x),p(x) D(y),p(y) D(z),p(z) 0 u 2,u 5,u 1,u 无穷大 无穷大 1 ux 2,u 4,x   2,x 无穷大 2 uxy 2,u 3,y     4,y 3 uxyv   3,y     4,y 4 uxyvw         4,y 5 uxyvwz           D(o):随着算法进行本次迭代,从源节点到目的节点o的最低费用路径的费用. p(o):从源节点到目的节点o沿着当前最低费用路径的前

网络层路由算法距离向量算法和链路状态算法

1.距离矢量路由算法(Distance Vector Routing,DV)是ARPANET网络上最早使用的路由算法,也称Bellman-Ford路由算法和Ford-Fulkerson算法,主要在RIP(Route Information Protocol)协议中使用.Cisco的IGRP和EIGRP路由协议也是采用DV这种路由算法的.     “距离矢量路由算法”的基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新.每

动态路由3--链路状态路由选择协议

1)  链路状态路由选择协议 入门:假如你现在在下沙沿江第一次要去古荡附近的公司报到,你不知道具体的路该怎么走,那该怎么办呢? 我们知道你可以在手机(路由器router)里面下载一个导航,在输入目的地后,导航会在他的各个区的地图表(路由表)中选择最优的路径去规划线路.那么,导航要达到这个目的,首先它必须有下沙沿江相连的6号大街(直连链路direct link)信息,下沙路的有没有在造地铁.堵不堵车(链路状态link state),到闸弄口后怎么转弯(直连邻居的信息).过了艮山东路是往体育场路还是

3.HCNP-R&S-IERN——OSPF协议报文和链路状态通告

本次介绍OSPF协议报文和链路状态通告.包括协议报文头部,报文类型和LSA类型等 学习目标: 1. 理解OSPF报文头和报文类型 2. 理解链路状态通告类型 OSPF是直接运行在IP协议上的协议,使用的IP协议号为89. OSPF有五种报文类型,但是OSPF报文头部格式都是相同的. 所有的OSPF报文使用相同的OSPF报文头部. Version填2,Type有五种,Packet Length指出OSPF报文总长度,包括报文头部.单位是字节. Router ID是生成此报文的路由器的Router

网络层:路由选择算法(1)——概述

路由选择算法的目的是:确定从发送方到接收方通过路由器网络的最优路径,最优即费用最短的路径. 术语: 默认路由器:端系统主机所直接连接的路由器称为默认路由器. 源路由器:源主机的默认路由器. 目的路由器:目的主机的默认路由器. 最优路径:发送方到接收方通过路由器网络的费用最低路径. 对路由选择算法的广义分类: 1. 根据全局式还是分布式进行区分: 全局式路由选择算法:以所有节点的连通性和所有链路的费用作为输入,每个节点拥有全网络的完整信息,这些信息由路由器之间通过协议进行传递,由于每一个路由器拥有

深入浅出图解【计算机网络】 之 【路由选择协议】

这个系列主要会介绍一些计算机网络体系中"看上去稍有些复杂"但"一旦理解了又会很容易"的内容,我会尝试通过示意图/动图的方式对概念进行尽量直观的诠释,如果能够对大家学习计算机网络有所启发的话就最好了. 分层次的路由选择协议 互联网采用分层次的路由选择协议.原因是: 互联网的规模非常大.如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间. 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情)

OSPF 距离矢量路由协议和链路状态路由协议相比

距离矢量路由协议和链路状态路由协议相比,前者是依照"传闻"来进行路由选择,而后者是每台路由器独立地计算最优路径. 详细地说,每台运行了链路状态路由协议的路由器会和它的邻居建立邻接关系并且互相给自己的每个邻居发送一些数据(在此我们用OSPF中的术语"LSA"称呼),LSA中包含了本地链路.链路状态.路由接口到链路的代价.链路连接的所有邻居等信息.当一台路由器收到了另一台路由器发送的LSA后,它会将其中信息复制一份放在自己的数据库中并继续将此信息发送给其他路由器.如果一

链路状态路由协议——OSPF路由协议(理论篇)

OSPF路由协议概述: OSPF--开放式最短路径优先选择协议 OSPF是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由.它是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部. 自治系统(AS) AS指的是处于一个管理机构控制之下的路由器和网络群组.它可以是一个路由器直接连接到一个LAN上,同时也连到Internet上:它可以是一个由企业骨干网互连的多个局域