一 台主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器,又称为该主机的默认网关。 每当某主机向外部网络发送一个分组时,该分组都被传送给它的默认网关。
如果将源主机的默认网关称为源路由器,把目的主机的默认网关称为目的路由器。为一个分组从源主机到目的主机选路的问题于 是可归结为从源路由器到目的路由器的选路问题。
选路算法的目标很简单:给定一组路由器以及连接路由器的链路,选路算法要找到一条从源路由器到目的路由器的最好路径,通常一条好路径是指具有最低费用的路径。
图 G=(N,E)是一个 N 个节点和 E 条边的集合,其中每条边是来自 N 的一对节点。在网 络选路的环境中,节点表示路由器,这是做出分组转发决定的节点,连接节点的边表示路由 器之间的物理链路。
一条边有一个值表示它的费用。通常一条边的费用可反映出对应链路的物理长度、链路速度或与该链路相关的费用。
对于 E 中的任一条边(xy)可以用 c(xy )表示节点 x 和 y 间边的费用。一般考虑的都是无向 图,因此边(xy)与边(y x)是相同的并且开销相等。节点 y 也被称为节点 x 的邻居。
在图中为各条边指派了费用后,选路算法的目标自然是找出从源到目的间的最低费用路径。图 G=(N,E)中的一条路径(Path)是一个节点的序列,使得每一对以(x1,x2), (x2,x3),…,是 E 中的边。路径的费用是沿着路径所有边费用的总和。
从广义上来说,我们对 选路算法分类的一种方法就是根据该算法是全局性还是分布式来区分的。
全局选路算法: 用完整的、全局性的网络信息来计算从源到目的之间的最低费用路径。
实际上, 具有全局状态信息的算法常被称作链路状态 LS 算法, 因为该算法必须知道网络中每条链路的费用。
分布式选路算法: 以迭代的、分布式的方式计算出最低费用路径。通过迭代计算并与相邻节点交换信息,逐渐计算出到达某目的节点或一组目的节点的最低费用路径。
DV 算法是分布式选路算法, 因为每个节点维护到网络中的所有其他节点的费用(距离)估计的矢量。
选路算法的第二种广义分类方法是根据算法是静态的还是动态的来分类。
一: 链路状态选路算法 LS
在链路状态算法中,通过让每个节点向所有其他路由器广播链路状态分组, 每个链路状态分组包含它所连接的链路的特征和费用, 从而网络中每个节点都建立了关于整个网络的拓扑。
Dijkstra 算法计算从源节点到网络中所有其他节点的最低费用路径
Dijkstra 算法是迭代算法,经算法的第 k 次迭代后,可知道到 k 个目的节点的最低费用路径。
定义下列记号:
D(V)随着算法进行本次迭代,从源节点到目的节点的最低费用路径的费用。
P(v)从源节点到目的节点 v 沿着当前最低费用路径的前一节点(,的邻居)。
N`节点子集;如果从源节点到目的节点 v 的最低费用路径已找到,那么 v 在 N`中。
Dijkstra 全局选路算法由一个初始化步骤和循环组成。循环执行的次数与网络中的节点个数相同。在结束时,算法会计算出从源节点 u 到网络中每个其他节点的最短路径。
考虑图中的网络,计算从 u 到所有可能目的地的最低费用路径。
在初始化阶段 ,从 u 到与其直接相连的邻居 v、x、w 的当前已知最低费用路径分别初始化为 2,1 和 5。到 y 与 z 的费用被设为无穷大,因为它们不直接与 u 连接。
在第一次迭代时, 需要检查那些还未加到集合 N`中的节点,找出在前一次迭代结束时具有最低费用的节点。那个节点是 x 其费用是 1,因此 x 被加到集合 N`中。然后更新所有节点的 D(v),产生下表中第 2 行(步骤)所示的结果。到 v 的路径费用未变。经过节点 x 到 w 的 路径的费用被确定为 4。因此沿从 u 开始的最短路径到 w 的前一个节点被设为 x。类似地, 到 y 经过 x 的费用被计算为 2,且该表项也被更新。
在第二次迭代时 ,节点 v 与 y 被发现具有最低费用路径 2。任意选择将 y 加到集合 N` 中,使得 N’中含有 u、x 和 y。通过更新,产生如表中第 3 行所示的结果。
以此类推…
当 LS 算法结束时,对于每个节点都得到从源节点沿着它的最低费用路径的前继节点, 对于每个前继节点,又有它的前继节点,按照此方式可以构建从源节点到所有目的节点的完 整路径。
根据从 u 出发的最短路径,可以构建一个节点(如节点 u)的转发表。
二 距离矢量选路算法 DV
LS 算法是一种使用全局信息的算法,而距离矢量算法是一种迭代的、异步的和分布式的算法。
Bellman-Ford 方程:
设 dx(y)是从节点 x 到节点 y 的最低费用路径的费用,则有 dx(y) = min {c(x,v) + dv(y) }
PS: 方程中的 min,是指取遍 x 的所有邻居。
Bellman-Ford 方程含义相当直观,意思是从 x 节点出发到 y 的最低费用路径肯定经过 x 的某个邻居,而且 x 到这个邻居的费用加上这个邻居到达目的节点 y 费用之和在所有路径 中其总费用是最小的。 实际上,从 x 到 v 遍历之后,如果取从 v 到 y 的最低费用路径,该路 径费用将是 c(x,v)+ dv(y)。因此必须从遍历某些邻居 v 开始,从 x 到 y 的最低费用是对所有邻 居的 c(x,v)+dv(y)的最小值。
在该 DV 算法中,当节点 x 看到它的直接相连的链路费用变化,或从某个邻居接收到一 个距离矢量的更新时,就根据 Bellman-Ford 方程更新其距离矢量表。
三 LS 与 DV 选路算法的比较
DV 和 LS 算法采用不同的方法来解决计算选路问题。
在 DV 算法中,每个节点仅与它的直接相连邻居交换信息,但它为它的邻居提供了从其 自己到网络中(它所知道的)所有其他节点的最低费用估计。
在 LS 算法中,每个节点(经广播)与所有其他节点交换信息,但它仅告诉它们与它直接 相连链路的费用。
·报文复杂性:
LS 算法要求每个节点都知道网络中每条链路的费用,需要发送 O(nE)个消息。
DV 算法要求在每次迭代时,在两个直接相连邻居之间交换报文,算法收敛所需的时间 依赖于许多因素。当链路费用改变时,DV 算法仅当在会导致该节点的最低费用路径发生改 变时,才传播已改变的链路费用。
·收效速度:
DV算法收敛较慢,且在收敛时会遇到选路环路。DV算法还会遭受到计数到无穷的问题。
•健壮性: 在 LS 算法中,如果一台路由器发生故障、或受到破坏,路由器会向其连接的链路广播 不正确费用,导致整个网络的错误。
在 Dv 算法下, 每次迭代时,其中一个节点的计算结果会传递给它的邻居,然后在下次迭代时再间接地传递给邻居的邻居。在这种情况下,DV 算法中一个不正确的计算结果也会扩散到整个网络。
四层次选路
两个原因导致层次的选路策略:
•规模: 随着路由器数目增长,选路信息的计算、存储及通信的开销逐渐增高。
•管理自治: 一般来说,一个单位都会要求按自己的意愿运行路由器(如运行其选择的某 种选路算法),或对外部隐藏其内部网络的细节。
层次的选路策略是通过将路由器划分成自治系统 AS 来实施的。
每个 AS 由一组通常在相同管理控制下的路由器组成(例如由相同的 ISP 运营或属于相同 的公司网络)。在相同的 AS 内的路由器都全部运行同样的选路算法。
在一个自治系统内运行的选路算法叫做自治系统内部选路协议。 在一个 AS 边缘的一台 或多台路由器,来负责向本 AS 之外的目的地转发分组,这些路由器被称为网关路由器
在各 AS 之间,AS 运行相同的自治系统间选路协议。OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
2、数据包格式
在OSPF路由协议的数据包中,其数据包头长为24个字节,包含如下8个字段:
Version number-定义所采用的OSPF路由协议的版本。
Type-定义OSPF数据包类型。OSPF数据包共有五种:
Hello-用于建立和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。
Database Description-用于描述整个数据库,该数据包仅在OSPF初始化时发送。
Link state request-用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。
Link state update-这是对link state请求数据包的响应,即通常所说的LSA数据包。
Link state acknowledgment-是对LSA数据包的响应。
Packet length-定义整个数据包的长度。
Router ID-用于描述数据包的源地址,以IP地址来表示。
Area ID-用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的OSPF区域。
Checksum-校验位,用于标记数据包在传递时有无误码。
Authentication type-定义OSPF验证类型。
Authentication-包含OSPF验证信息,长为8个字节。
3、OSPF基本算法
31 SPF算法及最短路径树
SPF算法是OSPF路由协议的基础。SPF算法有时也被称为Dijkstra算法,这是因为最短路径优先算法SPF是Dijkstra发明的。SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。在OSPF路由协议中,最短路径树的树干长度,即OSPF路由器至每一个目的地路由器的距离,称为OSPF的Cost,其算法为:Cost = 100×106/链路带宽
在这里,链路带宽以bps来表示。也就是说,OSPF的Cost 与链路的带宽成反比,带宽越高,Cost越小,表示OSPF到目的地的距离越近。举例来说,FDDI或快速以太网的Cost为1,2M串行链路的Cost为48,10M以太网的Cost为10等。
32 链路状态算法
作为一种典型的链路状态的路由协议,OSPF还得遵循链路状态路由协议的统一算法。链路状态的算法非常简单,在这里将链路状态算法概括为以下四个步骤:
当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)时,路由器会产生链路状态广播数据包LSA(Link-State Advertisement),该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。Flooding是指路由器将其LSA数据包传送给所有与其相邻的OSPF路由器,相邻路由器根据其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻的路由器,直至稳定的一个过程。 当网络重新稳定下来,也可以说OSPF路由协议收敛下来时,所有的路由器会根据其各自的链路状态信息数据库计算出各自的路由表。该路由表中包含路由器到每一个可到达目的地的Cost以及到达该目的地所要转发的下一个路由器(next-hop)。
第4个步骤实际上是指OSPF路由协议的一个特性。当网络状态比较稳定时,网络中传递的链路状态信息是比较少的,或者可以说,当网络稳定时,网络中是比较安静的。这也正是链路状态路由协议区别与距离矢量路由协议的一大特点。
写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。所以掌握毕业论文写作技巧变得尤为重要。
一、搞清楚论文的研究方法
论文一定要先搞清楚研究方法,研究方法就是研究问题的角度。由于对于同一个研究方向,往往有很多种研究方法,刚开始研究时往往有些摸不着头脑,脑袋里面是浆糊,人云亦云,天天换方法。我有段时间就是不知道用什么方法好,总是换方法,到头来自己都头晕而且研究工作没有太大的进展。
二、掌握论文创作的深度
论文一定要有必要的深度,没有必要深度也就泛泛而谈,空乏无物。论文的深度决定于你研究的深度,只有先通读尽可能多的相关研究方向的文章,搞懂这些论文所用的方法,记得摘录这些文章中提到了研究方法、研究的结论与不足之处。
三、论文要有创新点
论文一定要有些创新点,其实创新点,我觉得倒是可 是换位思考,不求理论突破可以求算法改进,比如你可以修改一些算法让新的算法比已有算法更贴近工作的实际需求。
四、实验数据的重要性
实验数据的整理是不能忽视的一环,因为在论文中必须用实验数据说话,必须证明新的思路比已有思路要好,新的软件算法比已有软件算法在时间、空间上有更多的优势。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)