简介
前面学习了网络层转发相关,现在开始学习路由。路由算法就是确定去往目的网络的最佳路径。
可以把网络抽象成图,每个路由器或主机可以看做节点,每段链路都有相应的费用Costs。路由算法就是找到源到目的的最小费用路径了!
路由算法可以分为两种,静态路由和动态路由。静态路由,也就是手工配置,路由更新慢,优先级高。动态路则针对路由更新快的网络,可以定期更新,及时响应链路费用或网络拓扑的变化。
动态路由又根据是否知道全局信息分为两种。
全局信息:所有路由器掌握完整的网络拓扑和链路费用状态,
链路状态路由算法
分散信息:路由器只掌握物理项链的邻居以及链路费用,邻居间信息交换,运算迭代过程,距离向量路由算法。
路由算法
链路状态路由算法
学过数据结构的同学应该能想到用什么算法可以解决链路状态路由算法,求解图中某两个点间的最小耗费路径:Dijkstra算法。
后面有机会再专门学习一下Dijkstra算法,这里就介绍了。可以了解到所有节点掌握整个网络拓扑与链路费用,是用过链路状态广播获得。
此算法存在震荡可能,消息会不停的在网络中传输!
距离向量路由算法
距离向量路由算法采用的是Bellman-Ford方程(动态规划)
另dx(y)= 从x到y最短路径的费用
dx(y)=min{c(x,v)+dv(y)}
c(x,v)是x到邻居v的费用
也就是说从x到y最短路径费用等与x到邻居节点加上该邻居节点到达y最短费用的最小值。
核心思想:
- 每个节点不定时地将其自身的DV估计发送给其邻居
- 当x收到邻居的新的DV估计时,即根绝Bellman-Ford方程更新其自身的距离向量估计
- Dx(y)最终会收敛于实际的最小费用
距离向量路由算法的特点是好消息传播快,坏消息传播慢,并且可能出现无穷计数问题。
对于无穷计数问题,有两种解决方案。
毒性逆转:如果一个节点到达某目的的最小费用路径是通过某个邻居,则通告该邻居节点到达目的的距离为无穷大。
定义最大度量:定义一个最大的有效费用指,如15跳步,16则表示无穷大。
层次路由
将任意规模网络抽象为一个图计算路由过于理想化,尤其是在大规模网络中,几乎不可行。
自治系统(autonomous system):聚合路由器为一个区域。同一AS内的路由器运行相同的路由协议叫做自治系统内部路由协议。也就说不同AS内的路由器可以运行不同的AS内部路由协议。这时候就需要网关路由器连接不同AS。网关路由器一般位于AS边缘,通过链路连接其他AS的网关路由器。
网关路由器的转发表由AS内部路由算法与AS间路由算法共同配置。自治系统必须学习到目的网络可以通过哪些自治系统到达,并且将这些网络可达性信息传播给自治系统内部的路由器。这个叫做自治系统间路由任务。
热土豆路由:若自治系统学习到到达子网x可以通过不同的AS系统到达,路由器会选择将分组发送给最近的网关路由器。
Internet路由协议
Internet采用层次路由,常见的AS内部路由协议(interior gateway Protocol):
- 路由信息协议RIP
- 开放最短路径优先OSPF
- 内部网路由协议IGRP(cisco私有协议)
RIP协议
采用距离向量路由算法。使用跳步数作为距离度量,max =。每隔30s,邻居交换一次DC,成为**通告 **,每次通过最多25个目的子网。
若180s没有收到通告,则邻居/链路失效。重新计算路由,并向邻居发送信的通告,邻居再一次向外发送通告。采用了毒性你转技术用于预防乒乓环路。
RIP路由表是利用了route-d的应用层进程进行管理,周期性地发送UDP数据报。
OSPF
采用链路状态路由算法
优点
安全性:所有OSPF报文可以被认证
允许使用多条相同费用的路径(RIP只能选一条)
对于每条链路,可以针对不同的TOS设置不同的费用度量。
集成单播路由和多播路由
OSPF支持对大规模的AS分层
分层
把一个AS分成两层,叫做两级分层:局部区和主干区。
链路状态通告只限于区内,每个路由器掌握所在区的详细拓扑,只知道去往其他区网络的方向。
区边界路由器:汇总到达所在去网络的距离,通告给其他区边界路由器。
主干路由器:在主干区运行OSPF路由算法。
AS边界路由器:连接其他AS。
BGP协议
边界网关协议是事实上的标准域路由协议,将Internet粘合为一个整体的关键。
BGP为每个AS提供了:
- eBGP:从邻居AS获取子网可达性消息
- iBGP:向所有AS内部路由器传播子网可达性信息
- 基于可达性信息与策略,确定到达其他网络的好路径。
BGP会话:两个BGP路由器交换BGP报文,通告去往不同目的前缀的路径,报文交换基于半永久的TCP连接。
BGP报文:
OPEN:与peer建立TCP连接,并认证发送方
UPDATE:通告新路径(或撤销原路径)
KEEPALIVE:在无UPDATE时,保活连接;也用于对OPEN请求的确认
NOTIFICATION:报告先前报文的差错,也用于关闭连接。
BGP路由选择
当网关路由器收到路由通告后,利用其输入策略决策接收/拒绝该路由,一般都是基于策略路由。若路由器获知到达某目的AS的多条路由,可基于以下准则选择:
- 本地偏好值属性:策略决策
- 最短AS-PATH
- 最短NEXT-HOP路由器,热土豆路由
- 附加准则
为何采用不同的AS内与AS间路由协议
- 策略:AS间:期望能够管理控制流量如何被路由,谁路由经过其网络;AS内:单一管理,无需策略决策
- 规模:层次路由节省路由表大小,减少路由更新流量,适应大规模网络
- 性能:AS间:策略主导;AS内:侧重性能