目录
- [4.5 路由选择算法](#4.5 路由选择算法)
-
- [4.5.1 优质路径](#4.5.1 优质路径)
- [4.5.2 分类](#4.5.2 分类)
- [4.5.3 链路状态(LS)路由选择算法](#4.5.3 链路状态(LS)路由选择算法)
- [4.5.4 距离向量(DV)路径选择算法](#4.5.4 距离向量(DV)路径选择算法)
- [4.5.5 对比LS和DV](#4.5.5 对比LS和DV)
- [4.5.6 层次路由选择(Hierarchical routing)](#4.5.6 层次路由选择(Hierarchical routing))
- 4.6因特网中的路由选择
-
- [4.6.1 因特网中的intra-AS路由选择](#4.6.1 因特网中的intra-AS路由选择)
- [4.6.2 因特网中的inter-AS路由选择](#4.6.2 因特网中的inter-AS路由选择)
4.5 路由选择算法
4.5.1 优质路径
-
成本低
-
速度快
-
拥塞少
4.5.2 分类
-
全局or分散
a. 全局式路由选择算法(global routing algorithm)
-
用完整的、全局性的网络制式计算出源到目的地之间的最低开销路径
-
具有完整的拓扑和链路开销信息
-
如链路状态(Link State,LS)算法
b. 分散式路由选择算法(decentralized routing algorithm)
-
路由器仅知道相邻节点和与其相连的链路成本
-
迭代计算并与相邻节点进行信息交换
-
如距离向量(Distance-Vector,DV)算法
-
-
静态or动态
a. 静态路由选择算法(static routing alogrithm)
- 路由随时间变化十分缓慢
b. 动态路由选择算法(dynamic routing algorithm)
- 路由随着网络流量负载或拓扑变化而变化
4.5.3 链路状态(LS)路由选择算法
-
基本思想
-
通过广播全网拓扑信息,让每个路由器独立计算到其他路由器的最短路径树(sink tree)
-
由链路广播(link state broadcast)算法完成
-
-
执行步骤
Step1:发现相邻节点
-
发送HELLO包到点对点线路
-
另一端路由器回复
Step2:测量相邻节点链路成本
-
测量相邻节点时延
-
发送ECHO包测量往返时延
-
多次测量取平均值
-
是否考虑本地负载
-
包含本地负载:计时从ECHO包入队开始
-
忽略本地负载:计时从ECHO包到达队列前端开始
Step3:创建链路状态包
-
包含发送方标识,序号,生存时间,相邻节点列表
-
触发时机
-
定期触发
-
重大网络事件发生
Step4:将包发送到所有其他路由器
Step5:计算到其他每个路由器的最短路径(Dijkstra)
- 时间复杂度O(n^2),堆结构可优化至O(nlogn)
-
4.5.4 距离向量(DV)路径选择算法
-
Bellman-Ford动态规划方程
流程
-
设置初始距离估计值
-
周期性更新
-
向相邻节点发送本地距离向量
-
接收相邻节点的距离向量更新
-
-
向量计算
-
两次计算结果相同时停止
特性
-
迭代的
-
每次本地迭代原因
-
本地连接成本改变
-
来自相邻节点的距离向量更新报文
-
-
-
异步的
- 节点独立计算,不全局同步
-
分散的
- 节点只在其距离向量更新才通知相邻节点
-
4.5.5 对比LS和DV
-
报文复杂度
-
LS:N个节点,E个链路,O(NE)
-
DV
-
仅相邻节点交换
-
收敛时间不同
-
-
-
收敛速度
-
LS:O(n^2)
-
DV:收敛慢,变化大
-
-
健壮性
-
LS
-
节点会错误计算链路成本
-
节点错误只影响自己
-
-
DV
-
节点会错误计算链路成本
-
错误会传播全网
-
-
4.5.6 层次路由选择(Hierarchical routing)
-
问题
-
存储大规模路由表项
-
ISP希望管理自治
-
-
解决
自治系统(Autonomous System,AS),也叫域(domain)
-
因特网的可扩展路由选择(层次)
-
自治系统内(intra-AS)路由选择
-
同一AS内的主机和路由器进行路由选择
-
同一AS所有路由器运行相同协议
-
不同AS可运行不同协议
-
-
自治系统间(inter-AS)路由选择
-
AS之间进行路由选择
-
网关执行域间路由选择(也执行域内路由选择)
-
-
-
互联(interconnected)AS
AS内和AS间路由选择算法共同配置转发表
-
AS内路由决定AS内部目的地的项
-
AS内和AS间路由决定外部目的地的项
-
-
对于某AS1的路由器,如何把包路由选择到该AS1外的目的地
AS1必须:
-
知道经AS2可到哪些目的地,经AS3可到哪些目的地
-
向AS1所有路由器传播这些可达信息,因此每台路由器可配置其转发表以处理AS外目的地
-
-
热土豆路由选择(hot potato routing)
若经多个路由可到达目的地,则将包发送到最近的路由
4.6因特网中的路由选择
4.6.1 因特网中的intra-AS路由选择
-
路由选择信息协议(RIP)
a. 基于DV算法
b. 用UDP封装报文
c. 使用跳数来衡量到达目的网络的距离
-
路由器到直连网络距离为1
-
一条路径最多15个路由器,16代表不可达:因此RIP只适用于小型互联网
-
好的路由是通过路由器最少的路由
d. 相邻节点每30秒交换一次RIP响应报文(RIP response message),包含该AS多达25个目的子网的列表,又叫RIP通告(RIP advertisement)
-
仅和相邻路由器交换
-
周期性交换
-
交换路由表
e. 链路故障与恢复
-
180秒没收到更新则认为相邻节点失效
-
修改本地路由表,向依然可达的相邻节点发送通告
-
-
开放最短路径优先(OSPF)
a. 基于LS算法
b. 用IP封装报文
c. 和IS-IS路由选择协议几乎一样
d. 基本原理
-
不限制网络规模,收敛速度快(收敛:所有路由表信息达成一致)
-
采用SPF算法计算路由,保证不会产生路由环路
-
每个节点维护完整拓扑图
-
链路状态通告交换信息
- 链路状态:路由器和哪些路由器相邻,以及链路的cost
-
使用Dijkstra计算sink tree,保证不会产生路由环路
e. 优点
-
安全:所有OSPF消息都要认证
-
多条相同成本的路径(RIP仅一条):无需选择单一路径
-
支持单播和多播
-
支持在单个路由选择域内的层次结构
f. 其他
-
分组类型
-
Hello分组
-
Database Description分组
-
Link State Request分组
-
Link State Update分组
-
-
邻居关系建立
-
选举DR和BDR
-
所有非DR/BDR只与DR/BDR建立邻居关系,且非DR/BDR通过DR/BDR交换信息
-
-
4.6.2 因特网中的inter-AS路由选择
边界网关协议(BGP)
-
基于路径向量算法
-
用TCP封装报文
两个路由器通过半永久TCP连接交换信息
-
让每个AS可以:
-
eBGP:从相邻AS获得子网可达性信息
-
iBGP:向本AS内部的所有路由器传播这些可达性信息
-
基于可达性信息和AS策略决定到达子网的好路由
-
每个子网都可以像因特网其余部分通告其存在
-
-
属性
-
前缀+属性=路由
-
AS-PATH:记录前缀通告经过的AS列表
-
NEXT-HOP:指定下一跳AS的内部路由器
-
-
基于策略的路由
-
接收路由通告的网关根据导入策略是否决定接受路径
-
AS策略决定是否向其他相邻AS通告该路径
-
-
BGP路由选择(有多条目标AS路径)
-
本地优先级属性值(策略决定)
-
最短AS-PATH
-
最近NEXT-HOP路由器(热土豆路由)
-
其他标准
-
-
intra-AS和inter-AS路由选择的差异
a. 策略
-
intra:单一管理员,无需控制流量路径和转接策略
-
inter:管理员需要控制流量路径和转接策略
b. 规模
-
intra:无压力
-
inter:用分层路由节省表空间
c. 性能
-
intra:可优化性能
-
inter:策略可能优先于性能
-
-
其他
a. 基本原理
-
选择BGP发言人
-
发言人之间建立TCP连接交换信息
b. 四种报文
-
OPEN报文
-
UPDATE报文
-
KEEPALIVE报文
-
NOTIFICATION报文
c. 构造树形连通图
-