路由算法
路由算法分类
-
静态路由:
- 手工配置
- 路由更新慢
- 优先级高
-
动态路由:
- 路由更新快
- 定期更新
- 及时响应链路费用或网络拓扑变化
-
全局信息:
- 所有路由器掌握完整的网络拓扑和链路费用信息
- E.g. 链路状态(LS) 路由算法
-
分散(decentralized)信息:
- 路由器只掌握物理相连的邻居以及链路费用
- 邻居间信息交换、运算的迭代过程
- E.g. 距离向量(DV) 路由算法
链路状态路由算法
Dijkstra 算法
- 所有结点(路由器)掌握网络拓扑和链路费用
- 通过“链路状态广播”
- 所有结点拥有相同信息
- 计算从一个结点(“源”)到达所有其他结点的最短路径
- 获得该结点的转发表
- 迭代: k次迭代后,得到到达k个目的结点的最短路径
符号:
- c(x,y): 结点x到结点y链路费用;如果x和y不直接相连,则=∞
- D(v): 从源到目的v的当前路径费用值
- p(v): 沿从源到v的当前路径,v的前序结点
- N’: 已经找到最小费用路径的结点集合
Dijkstra 算法:讨论
- 算法复杂性: n个结点
- 每次迭代: 需要检测所有不在集合N’中的结点w
- n(n+1)/2次比较: O(n 2 )
- 更高效的实现: O(nlogn)
- 存在震荡(oscillations)可能:
- e.g., 假设链路费用是该链路承载的通信量:
- e.g., 假设链路费用是该链路承载的通信量:
距离向量路由算法
重点 :结点获得最短路径的 下跳 一跳, 该信息用于转发表中
- 异步迭代:
- 引发每次局部迭代的因素
- 局部链路费用改变
- 来自邻居的DV更新
- 分布式:
- 每个结点只当DV变化时才通告给邻居
- 邻居在必要时(其DV更新后发生改变)再通告它们的邻居
链路费用变化:
- 结点检测本地链路费用变化
- 更新路由信息,重新计算距离向量
- 如果DV 改变,通告所有邻居
- t 0 : y 检测到链路费用改变 ,更新DV ,通告其邻居.
- t 1 : z 收到y的 的DV 更新,更新其距离向量表,计算到达x 的最新其 最小费用,更新其DV ,并发送给其所有邻居.
- t 2 : y 收到z的 的DV 更新, 更新其距离向量 表,重新计算y的 的DV, ,未发生改变,不再向z 发送DV.
好消息传播快!
毒性逆转(poisoned reverse)
- 如果一个结点(e.g. Z)到达某目的(e.g.X)的最小费用路径是通过某个邻居(e.g.Y),则:
- 通告给该邻居结点到达该目的的距离为无穷大
无穷计数问题
层次路由
将任意规模网络抽象为一个图计算路由- 过于理想化
- 标识所有路由器
- “扁平”网络
- 在实际网络(尤其是大规模网络)中, 不可行!
网络规模:考虑6亿目的结点的网络 - 路由表几乎无法存储!
- 路由计算过程的信息(e.g. 链路状态分组、DV)交换量巨大,会淹没链路!
- 管理自治:
- 每个网络的管理可能都期望自主控制其网内的路由
- 互联网(internet) = 网络之网络(network of networks)
聚合路由器为一个区域:自治系统AS(autonomous systems),同一AS内的路由器运行相同的路由协议(算法),自治系统内部路由协议(“intra-AS” routingprotocol)
不同自治系统内的路由器可以运行不同的AS内部路由协议
网关路由器(gatewayrouter): 位于AS“边缘”, 通过链路连接其他AS的网关路由器
互连的AS
自治系统间(Inter-AS)
RIP协议简介
AS 内部路由
RIP: 链路失效、恢复
如果180秒没有收到通告→邻居/链路失效
- 经过该邻居的路由不可用
- 重新计算路由
- 向邻居发送新的通告
- 邻居再依次向外发送通告(如果转发表改变)
- 链路失效信息能否快速传播到全网?
- 可能发生无穷计数问题
- 毒性逆转技术用于预防乒乓(ping-pong)环路(另外:无穷大距离 = 16 hops)
RIP 路由表的处理
- RIP路由表是利用一个称作route-d (daemon)的应用层进程进行管理
- 应用进程实现
- 通告报文周期性地通过UDP数据报发送
OSPF协议简介
- ”开放”: 公众可用
- 采用链路状态路由算法
- LS分组扩散(通告)
- 每个路由器构造完整的网络(AS)拓扑图
- 利用Dijkstra算法计算路由
- OSPF通告中每个入口对应一个邻居
- OSPF通告在整个AS范围泛洪
- OSPF报文直接封装到IP数据报中
- 与OSPF极其相似的一个路由协议:IS-IS 路由协议
OSPF 优点(RIP 不具备)
- 安全(security): 所有OSPF报文可以被认证(预防恶意入侵)
- 允许使用多条相同费用的路径 (RIP只能选一条)
- 对于每条链路,可以针对不同的TOS设置多个不同的费用度量 (e.g., 卫星链路可以针对“尽力”(best effort) ToS设置“低”费用;针对实时ToS设置“高”费用)
- 集成单播路由与多播路由
- 多播OSPF协议(MOSPF) 与OSPF利用相同的网络拓扑数据
- OSPF支持对大规模AS分层(hierarchical)
分层的OSPF
BGP 协议简介
Internet AS 间路由协议
-
边界网关协议BGP (Border GatewayProtocol): 事实上的标准域间路由协议
- 将Internet “粘合”为一个整体的关键
-
BGP为每个AS提供了一种手段:
- eBGP: 从邻居AS获取子网可达性信息.
- iBGP: 向所有AS内部路由器传播子网可达性信息.
- 基于可达性信息与策略,确定到达其他网络的 “好”路径
-
容许子网向Internet其余部分通告它的存在:“ 我在这儿!”
-
BGP会话(session):
- 两个BGP路由器 (“Peers”)
-
交换BGP报文:
- 通告去往不同目的前缀(prefix)的路径 (“路径向量(path vector)”协议)
- 报文交换基于半永久的TCP连接
-
BGP报文:
- OPEN: 与peer建立TCP连接,并认证发送方
- UPDATE: 通告新路径 (或撤销原路径)
- KEEPALIVE: 在无UPDATE时,保活连接;也用于对OPEN请求的确认
- NOTIFICATION: 报告先前报文的差错;也被用于关闭连接
BGP路由选择
- 网关路由器收到路由通告后,利用其输入策略(import policy)决策接受/拒绝该路由
- e.g., 从不将流量路由到AS x
- 基于策略(policy-based) 路由
- 路由器可能获知到达某目的AS的多条路由,基于以下准则选择:
- 本地偏好(preference)值属性: 策略决策(policy
decision) - 最短AS-PATH
- 最近NEXT-HOP路由器: 热土豆路由(hot potato
routing) - 附加准则
为什么采用不同的AS 内与AS 间路由协议
- 策略(policy):
- inter-AS: 期望能够管理控制流量如何被路由,谁路由经过其网络等.
- intra-AS: 单一管理,无需策略决策
- 规模(scale):
- 层次路由节省路由表大小,减少路由更新流量
- 适应大规模互联网
- 性能(performance):
- intra-AS: 侧重性能
- inter-AS: 策略主导
来源:oschina
链接:https://my.oschina.net/u/4400801/blog/3233551