第五章—路由选择算法
5.1、路由的概念
路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条 从源节点到目标节点的较好路径
- 较好路径: 按照某种指标较小的路径
- 指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均
- 采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什 么指标网络使用者比较重视
以网络为单位进行路由(路由信息通告+路由计算)
- 网络为单位进行路由,路由信息传输、计算和匹配的代价低
- 前提条件是:一个网络所有节点地址前缀相同,且物理上聚集
- 路由就是:计算网络 到其他网络如何走的问题
路由的原则
- 路由选择算法的原则
- 正确性(correctness):算法必须是正确的和完整的,使分 组一站一站接力,正确发向目标站;完整:目标所有的 站地址,在路由表中都能找到相应的表项;没有处理不 了的目标站地址;
- 简单性(simplicity):算法在计算机上应简单:最优但复杂 的算法,时间上延迟很大,不实用,不应为了获取路由 信息增加很多的通信量;
- 健壮性(robustness):算法应能适应通信量和网络拓扑的 变化:通信量变化,网络拓扑的变化算法能很快适应; 不向很拥挤的链路发数据,不向断了的链路发送数据;
- 稳定性(stability):产生的路由不应该摇摆
- 公平性(fairness):对每一个站点都公平
- 最优性(optimality):某一个指标的最优,时间上,费用 上,等指标,或综合指标;实际上,获取最优的结果代 价较高,可以是次优的
对路由选择算法的一种广义分类方式是根据 该算法是全局式的还是分散式的来加以区分:
- 全局式路由选择算法:具有全局状态信息的算法常被称作 链路状态算法(Link State,LS)
- 分散式路由选择算法:以迭代、分布式的方式计算出最低费用路径。距离向量(Distance-Vector,DV)算法:就是分散式路由选择算法
路由选择算法的第二种广义分类方式是根据算法是静态的还是动态的进行分类:
- 静态路由选择算法:变化缓慢,通常人工干预
- 动态路由选择算法:网络流量负载或拓扑发生变化时改变路由选择路径、周期性运行或直接响应变化、也容易受路由选择循环、路由震荡等问题的影响
路由选择算法的第三种分类方式是根据它是负载敏感的还是负载迟钝的进行划分:
- 负载敏感算法:链路费用动态变化来反映链路拥塞水平
- 负载迟钝算法:链路费用与拥塞无关,当今因特网路由选择算法基本都是迟钝的
5.2、链路状态路由选择算法
链路状态路由选择算法叫做 Dijkstra 算法
Dijktra 算法计算从某结点(源结点,我们称之为 u) 到网络中所有其他结点的最低费用路径 Dijkstra 算法是迭代算法,其性质是经算法的第 次迭代后,可知道到 个目的结点的最低 费用路径,在到所有目的结点的最低费用路径之中,这条路径具有个最低费用我们定义下列记号:
- D( v) :到算法的本次迭代,从源结点到目的结点 的最低费用路径的费用
- p(v): 从源到 沿着当前最低费用路径的前一结点(凹的邻居)
- N’: 结点子集;如果从源到 的最低费用路径已确知,v在 N’ 中
该全局路由选择算法由一个初始化步骤和其后的循环组成 循环执行的次数与网络中 结点个数相同 一旦终止,该算法就计算出了从源结点 到网络中每个其他结点的最短 路径。
例题:计算从 到所有可能目的地的最低费用路径
上题网络产生的最低路径费用路径和u中的转发表
5.3、距离向量路由选择算法
距离向 (Distance- Vector, DV) 算法是一种迭代的、异步的和分布式的算法.
每个x结点 Dx(y) 开始,对在 N 中的所有结点,估计从它自己到结点 y 的最低费用路径的费用 。令 Dx = [D(y); y∈N]是结点 x 的距离向量,该向量是从 x 到在 N 中的所有其他结点 y 的费用估计的向量。使用 DV 算法,每个结点 x 维护下 列路由选择信息:
- 对于每个邻居v,从 x 到直接相连邻居 v 的费用为 c(x v)
- 结点 x 的距离向量,即 = [Dx(Y): Y∈N], 包含了 x 到 N 中所有目的地 的费 用的估计值。 它的每个邻居的距离向量,即对 x 的每个邻居v,有 Dv=[D (y): Y∈N]
在该分布式、异步算法中,每个结点不时地向它的每个邻居发送它的距离向量副本 当结点 x 从它的任何一个邻居 v 接收到一个新距离向量,它保存 v 的距离向量,然后使用 Bellman- Ford 方程更新它自己的距离向盘如下: Dx(Y) = min{c(x ,v) + D(y) } I对中的每个结点
LS 和 DV 路由选择算法的比较
- 消息复杂度(DV胜出)
- LS: 有 n 节点, E 条链路,发送 报文O(nE)个 :局部的路由信息;全局传播
- DV: 只和邻居交换信息 :全局的路由信息,局部传播
- 收敛时间(LS胜出)
- LS: O(n2) 算法: 有可能震荡
- DV: 收敛较慢 :可能存在路由环路 、 count-to-infinity 问题
- 健壮性: 路由器故障会发生什么 (LS胜出)
- LS:
- 节点会通告不正确的链路代价
- 每个节点只计算自己的路由表
- 错误信息影响较小,局部,路由较 健壮
- DV:
- DV 节点可能通告对全网所有节点 的不正确路径代价
- 距离矢量
- 每一个节点的路由表可能被其它节 点使用
- 错误可以扩散到全网
- LS:
5.4、层次路由选择
**规模:**随着路由器数目变得很大,涉及路由选择信息的计算、存储及通信(例如 LS 更新或最低费用路径的变化)的开销将高得不可实现
管理自治:一个组织应该当按自己愿望运行管理其网络
这两个问题都可以通过将路由器组织进自治系统 (Autonomous System , AS) 来解决, 每个 AS 由一组通常处在相同管理控制下的路由器组成(例如,由相同的 ISP 运营或属于 相同的公司网络)
自治系统内部路由选择协议( intra- autonomous system routing protocol):在一个自治系统内运行的路由选择算法
5.5、因特网中自治系统内部的路由选择: RIP
AS 内部路由选择协议用于确定在一个 AS 内执行路由选择的方式 AS 内部路由选择 协议又称为内部网关协议 (interior gateway protocol)
有两个路由选择协议曾被广 泛用于因特网上自治系统内的路由选择:路由选择信息协议 (Routing Infonnation Protocol , RIP) 与开放最短路优先 (Open Shortest Path First , OSPF)
下图中的表:从源 A 到每个叶子子网的跳数:
一条路径的最大费用被限制为 15 ,因此 RIP 的使用限制在网络直径不超过 15 跳的自治系统内。
在RIP中, 路由选择更新信息在邻居之间通过使用 RIP 晌应报文( RIP response message) 来交 换,大约每 30 秒相互交换一次 台路由器或主机发出的响应报文包含了一个该 AS 的多达 25 个目的子网的列表,以及发送方到其中每个子网的距离 响应报文又被称作 RIP 通告( RIP advertisement)
一台路由器超过180s没有从邻居听到报文,该邻居要么死记要么链路中断
RIP可以修改本地路由选择表,向活着的邻居发送RIP通告
也可以使用RIP请求报文请求邻居到目的地的费用
RIP被当做一个应用进程来实现,能在一个标准socket上发送个接收报文,并且使用一个标准的运输层协议
路由器在UDP上用端口520相互发送RIP请求/响应报文。意思是RIP使用一个运输层协议实现网络层功能
5.6、困特网中自治系统内部的路由选择: OSPF
- 安全: 所有的OSPF报文都是经过认证的 (防止恶意的攻击)
- 允许有多个代价相同的路径存在 (在RIP协议中只有一个) 对于每一个链路,对于不同的TOS有多重代价矩阵
- 例如:卫星链路代价对于尽力而为的服务代价设置比较低,对实 时服务代价设置的比较高
- 支持按照不同的代价计算最优路径,如:按照时间和延迟分别计 算最优路径
- 对单播和多播的集成支持:
- Multicast OSPF (MOSPF) 使用相同的拓扑数据库, 就像在OSPF中一样
- 支持在单个路由选择域内的层次结构
5.7、自治系统间的路由选择: BGP
**边界网关协议 (Broder Gateway Protocol , BGP): **跨越多个 AS 的源和目的对之间是如何确定路径的。
BGP基础:
- 跨越两个 AS BGP 会话称为外部 BGP (eBGP) 会话 (external BGP session)
- 在同一个AS 中的两台路由器之间的 BGP 会话称为内部 BGP (iBGP) 会话( internal BGP session)
BGP 为每个 AS 提供了进行以 下工作的手段:
1. 从相邻 AS 处获得子网可达性信息
2. 向本 AS 内部的所有路由器传播这些可达性信息
3. 基于可达性信息和 AS 策略,决定到达子网的"好"路由
当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括一些属性。带属性的前缀称为一条路由,BGP对等方彼此通告路由
- AS-PATH:该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中
- 路由器使用AS-PATH属性检测和防止循环通告
- 路由器使用AS-PATH在多条路径中选择相同的前缀
- NEXT-HOP:是一个开始某AS-PATH的路由器接口
- 路由器使用该属性正确地配置它们的转发表
- 使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口
BGP路由选择:
BGP使用eBGP和iBGP向在AS中的所有路由器发布路由,路由器可能知道到达任何一条前缀的多条路由。消除规则从上到下:
- 选择具有最高本地偏好值(管理员决定)的路由
- 选择具有最短AS-PATH的路由
- 最靠近NEXT-HOP路由器的路由,最靠近指最低费用路径最低,由AS内部算法决定(hot potato routing)
- 使用BGP标识符选择路由