3.2路由选择算法、因特网中的路由选择以及广播和多播路由选择

路由选择算法

路由选择的工作是:确定从发送方到接收方通过路由器网络的好路径(等价为路由)

路由选择算法的工作是:给定一组路由器以及连接路由器的链路,路由选择算法要找到一条从源路由器到目的路由器的“好”路径。通常一条好路径指具有最低费用的路径。(实际还要考虑现实世界中的策略之类的问题,如属于组织Y的路由器X不应转发任何来源于组织Z网络的分组之类的规则。)

如下图为计算机网络的抽象模型,显然需要使用来进行描述,路由选择算法就是找到源到目的的最低费用路径

 路由选择算法的分类

根据算法是全局式还是分散式进行分类

全局式路由选择算法:用全局性网络知识计算最低费用路径。即该算法以所有结点之间的连通性及所有链路的费用为输入

分散式路由选择算法:以迭代、分布式的方式计算出最低费用路径。即每个结点仅有与其直接相连链路的费用高知识即可开始。

根据算法是静态的还是动态的进行分类可以分为静态路由选择算法动态路由选择算法

根据时负载敏感还是负载迟钝进行分类可以分为负载敏感算法负载迟钝算法

链路状态算法(LS算法)

链路状态算法是全局式路由选择算法,网络拓扑和所有的链路费用已知,可以用作LS算法的输入。实践中通过让每个结点向网络中所有其他结点广播链路状态分组(包含所连接的链路特征和费用),使所有结点具有了该网络的等同的、完整的视图。于是每个节点都能够像其他结点一样,运行LS算法并计算出相同的最低费用路径集合。

LS算法其实就是图算法中经典的Dijkstra算法:

定义如下几个记号:

Dijkstra算法为: 

 当LS算法终止时,对于每个结点,我们都得到从源节点沿着它的最低费用路径的前一结点。对于每个前一结点,我们又有它的前一结点,以此方式我们可以构建从源结点到所有目的结点的完整路径。

距离向量算法(DV算法)

DV算法是分散式路由选择算法是一种迭代的、一步的和分布式的算法。分布式是因为每个结点都要从一个或多分直接相连邻居接受某些信息,执行计算,然后将其计算结果分发给邻居。迭代的是因为此过程一直要持续到邻居之间无更多信息要交换为止。异步的是因为它不要求所有节点相互之间步伐一致地操作。

LS与DV路由选择算法的比较

在DV算法中,每个结点仅与它的直接相连的邻居交谈,但它为其邻居提供了从它自己到网络中(它所知道的)所有其他结点的最低费用估计。  在LS算法中,每个结点(经广播)与所有其他结点交谈,但它仅告诉它们与它直接相连链路的费用。

 通过对比以下属性总结比较LS和DV算法:N是结点(路由器)的集合,E是边(链路)的集合

报文复杂性:LS算法要求每个结点都知道网络中每条链路的费用,这就需要发送O(|N||E|)个报文。而且无论何时一条链路的费用改变时,必须向所有结点发送新的链路费用。DV算法要求在每次迭代时,在两个直接相连邻居之间交换报文,当链路费用改变时,DV算法仅当在新的链路费用导致与该链路相连结点的最低费用路径发生改变时,才传播已改变的链路费用。

收敛速度:LS算法的实现是一个要求O(|N||E|)个报文的O(|N|^2)算法。 DV算法收敛较慢,且在收敛时会遇到路由选择环路。甚至还会遭遇无穷级数的问题。

健壮性:LS结点由于仅计算自己的转发表,所以在某种程度上是分离的,提供了一定程度健壮性。而DV算法中一个结点的计算会传递给它的邻居,然后在下次迭代时再简介地传递给邻居的邻居,在这种情况下,DV算法中一个不正确的结点计算值会扩散到整个网络。

总之,两个算法没有一个是明显的赢家,他们的确都在因特网中得到了应用。

层次路由选择

上面两种算法中,随着路由器数目增多,涉及路由选择信息的计算、存储以及通信的开销将非常高,并且许多组织希望能够按照自己的意愿运行和管理其网络,这些问题都可以通过将路由器组织进自治系统(AS)来解决。

每个AS由一组通常处在相同管理控制下的路由器组成,并且在相同的AS中的路由器全部运行同样的路由选择算法,且拥有彼此信息。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议。当然,将AS互连是必须的,网关路由器负责向在本AS之外的目的地转发分组。从相邻AS获取可达性信息和向该AS中所有路由器传播可达性信息是两项由自治系统间路由选择协议处理的任务。

因特网中的路由选择

自治系统内部路由选择协议

AS内部路由选择协议(也称为内部网关协议用于确定在一个AS内执行路由选择的方式。历史上有两个路由选择协议被广泛应用于因特尔网上自治系统内的路由选择:路由选择信息协议(RIP)开放最短路优先(OSPF)

RIP

RIP是一种距离向量协议,使用跳数作为其费用测度,即每条链路的费用为1,一条路径的最大费用被限制为15,因此RIP的使用限制在网络直径不超过15跳的自治系统内。

每台路由器维护一张称为路由选择表的RIP表。一台路由选择器的路由选择表包括该路由器的距离向量和该路由器的转发表。

OSPF

OSPF的核心是一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法。使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图,于是,路由器在本地运行Dijkstra的最短路径算法,以确定一个以自身为根结点的到所有子网的最短路径树。

使用OSPF时,各条链路费用是由网络管理员配置的(可以将链路费用设为1,实现最少跳数路由选择。或者将链路权值按与链路容量成反比来设置)。另外,使用OSPF时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路状态发生变化时,路由器就会广播链路状态信息,即便没有变化,他也要周期性地广播链路状态。

OSPF优点:安全、多条相同费用的路径、对单播与多播路由选择的综合支持、支持在单个路由选择域内的层次结构。

自治系统间的路由选择:BGP

作为一个自治系统间路由选择协议,BGP为每个AS提供了进行以下工作的手段:

  • 1.从相邻AS处获得子网可达性信息
  • 2.向本AS内部的所有路由器传播这些可达性信息
  • 3.基于可达性信息和AS策略,决定到达子网的“好”路由

广播和多播路由选择

在广播路由选择中,网络层提供了从一种源结点到网络中的所有其他结点交付分组的任务。多播路由选择使单个源结点能够向其他网络节点的一个子集发送分组的副本。

广播路由选择算法

无控制洪泛: 源结点向他的所有邻居发送分组的副本,当某结点接收了一个广播分组时,复制分组并向它的所有邻居转发。注意虽然实现简单,但是如果图中有圈,则每个广播分组的一个或多个分组副本将无休无止地循环。

受控洪泛:避免副本循环可以使用序号控制洪泛(给分组加上地址和广播序号)、反向路径转发(当一台路由器接收到具有给定源地址的广播分组时,仅当该分组到达的链路正好是位于它自己的返回其源的最短单播路径上,它才向其所有出链路传输报文)

生成树广播:先对网络节点构造出一颗生成树,当一个源结点要发送一个广播分组时,它向所有属于该生成树的特定链路发送分组。接收广播分组的结点则向在生成树中的所有邻居转发该分组。  生成树不仅消除了冗余的广播分组,而且一旦合适,该生成树能够被任何结点用于开始广播分组。

多播

在单播通信情况下,接收方IP地址承载在每个IP单播数据报中并表示了单个接收方;在广播情况下,所有结点需要接收广播分组,因此不需要目的地址。但在多播情况下,面对多个接收方,该怎么做呢?

多播数据报使用间接地址来编址。即用一个标识来表示一组接收方,寻址到该组的分组副本被交付给所有与该组相关联的多播接收方,且该组使用这个单一标识符。

因特网中,这种表示一组接收方的单一标识就是一个D类多播地址,与一个D类地址相关联的接收方小组被称为一个多播组。因特网中的网络层多播是由两个互补的组件组成:IGMP多播路由选择协议

因特网组管理协议(IGMP)

IGMP协议运行在一台主机与其直接相连的路由器之间,它为一台主机提供了手段,让它通知与其相连的路由器:在本主机上运行的一个应用程序想加入一个特定的多播组。

IGMP只有三种报文类型,并且报文封装在一个IP数据报中。

membership_query报文:路由器向所有主机连接接口发送,以确定该接口上主机已加入的所有多播组集合。

membership_report报文:主机向路由器响应membership_query报文。

leave_group报文:可选。  路由器可以通过membership_query报文确定多播组主机数量,当无主机响应时,就知道没有主机在这个多播组了

多播路由选择算法

多播路由选择的目标就是发现一颗链路的树,这些链路连接了所有属于该多播组的相连主机的路由器。于是多播分组将能够沿着这棵树从发送方路由到所有属于该多播树的主机。

实践中,采用两种方法确定多路选择树:

  • 使用一颗组共享树的多播路由选择    用单一的组共享树来为组中的所有发送方分发流量
  • 使用一颗基于源的树的多播路由选择  为每个独立的发送方构建一颗特定元的路由选择树

在因特网中的多播路由选择

第一个用于因特网中的多播路由选择协议是距离向量多播路由选择协议(DVMRP)。DVMRP实现了具有反向路径转发与剪枝算法的基于源的树。

使用最为广泛的因特网多播路由协议是协议无关的多播路由选择协议(PIM), 该协议明确辨识了两种多播分发情形。

在稠密模式中,多播组的成员位置分布稠密,即该区域内的许多或大多数路由器要参与到多播数据报路由选择过程中。PIM稠密模式是一种洪泛与剪枝反向路径转发技术,类似于DVMPR思想。

在稀疏模式中,具有相连组成员的路路由器数量相对于路由器总数来说很少,组成员极为分担。PIM稀疏模式使用聚集点来建立多播分发树。在源特定多播中,仅允许单一发送方向多播树中发送流量,大大简化了树的构造和维护。

猜你喜欢

转载自blog.csdn.net/weixin_39722922/article/details/88683122