一、 路由算法的本质
◆ 下一跳地址是怎么来的?
◆ 下一跳地址是唯一的吗?
◆ 下一跳地址是最佳的吗?
◆ 路由器怎么多,他们是怎么协同工作的?
需要一个好的算法去解决这些事情!
路由算法实际上是图论的算法
路由算法要比图论的算法要复杂
◆ 算法是正确的、完整的
◆ 算法在计算上应该尽可能的简单
◆ 算法可以适应网络中的变化
◆ 算法是稳定的和公平的
◆ 互联网的规模是非常大的
◆ 互联网环境是非常复杂的
二、自治系统(Autonomous System)
◆ 一个自治系统(AS)是处于一个管理机构下的网络设备群
◆ AS内部网络自行管理,AS对外提供一个或者多个出(入)口
◆ 自治系统内部路由的协议称为:内部网关协议(RIP、OSPF)
◆ 自治系统外部路由的协议称为:外部网关协议(BGP)
三、内部网关路由协议之RIP协议
◆ 距离矢量(DV)算法
◆ 每一个节点使用两个向量𝐷𝑖和S𝑖
◆ 𝐷𝑖描述的是当前节点到别的节点的距离
◆ S𝑖描述的是当前节点到别的节点的下一节点
◆ 每一个节点与相邻的节点交换向量𝐷𝑖和S𝑖的信息
◆ 每一个节点根据交换的信息更新自己的节点信息
◆ RIP协议的过程
◆ RIP(Routing Information Protocol)协议
◆ RIP协议是使用DV算法的一种路由协议
◆ RIP协议把网络的跳数(hop)作为DV算法的距离
◆ RIP协议每隔30s交换一次路由信息
◆ RIP协议认为跳数>15的路由则为不可达路由
- 路由器初始化路由信息(两个向量𝐷𝑖和S𝑖)
- 对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
i. 检索本地路由,将信息中新的路由插入到路由表里面
ii. 检索本地路由,对于下一跳为X的,更新为修改后的信息
iii. 检索本地路由,对比相同目的的距离,如果新信息的距离更小,则更新本地路由表 - 如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
缺点
◆ RIP协议:实现简单,开销很小
◆ RIP协议:限制了网络的规模
◆ RIP协议:“坏消息传的慢”,更新收敛时间过长
四、Dijkstra(迪杰斯特拉)算法
◆ Dijkstra算法是著名的图算法
◆ Dijkstra算法解决有权图从一个节点到其他节点的最短路径问题
◆ “以起始点为中心,向外层层扩展”
最短路径问题
A->B->C->E(13)
A->C->E(11)
A->D->C->E(13)
A->D->E(9) A->F->E(10)
步骤
- 初始化两个集合(S, U)(S为只有初始顶点点A的集合,U为其他顶点集合)
- 如果U不为空, 对U集合顶点进行距离的排序,并取出距离A最近的一个顶点D
i. 将顶点D的纳入S集合
ii.更新通过顶点D到达U集合所有点的距离(如果距离更小则更新,否则不更新)
iii. 重复2步骤 - 知道U集合为空,算法完成
五、内部网关路由协议之OSPF协议
◆ 链路状态(LS)协议
◆ 向所有的路由器发送消息
◆ 消息描述该路由器与相邻路由器的链路状态
◆ 只有链路状态发生变化时,才发送更新信息
◆ OSPF协议的过程
◆ OSPF(Open Shortest Path First:开放最短路径优先)
◆ OSPF协议的核心是Dijkstra算法
◆ 向所有的路由器发送消息 获得网络中的所有信息 “网络的完整拓扑”
◆ 也称为“链路状态数据库”
◆ “链路状态数据库”是全网一致的
OSPF协议更加客观、更加先进
◆ 只有链路状态发生变化时,才发送更新信息
减少了数据的交换,更快收敛
五种消息类型
◆ 问候消息(Hello)
◆ 链路状态数据库描述信息
◆ 链路状态请求信息
◆ 链路状态更新信息
◆ 链路状态确认信息
六、外部网关路由协议之BGP协议
◆ BGP(Border Gateway Protocol: 边际网关协议)
◆ BGP协议是运行在AS之间的一种协议
◆ 互联网的规模很大
◆ AS内部使用不同的路由协议
◆ AS之间需要考虑除网络特性以外的一些因素(政治、安全…)
◆ BGP协议能够找到一条到达目的比较好的路由
BGP发言人(speaker)
◆ BGP并不关心内部网络拓扑
◆ AS之间通过BGP发言人交流信息
◆ BGP Speaker可以人为配置策略
◆ BGP协议能够找到一条到达目的比较好的路由
◆ AS之间通过BGP发言人来进行路由信息的交换