自治系统内部的路由选择
RIP
- 在1982年发布的BSD-UNIX中实现
- Distance vector算法
- 距离矢量:每条链路cost = 1,# of hops(max = 15 hops)跳数
- DV每隔30秒和邻居交换DV,通告
- 每个通告包括:最多25个目标子网
RIP通告
- DV:在邻居之间每30秒交换通告报文
- 定期:而且在改变路由的时候发送通告报文
- 在对方的请求下可以发送通告报文
- 每一个通告:至多AS内部的25个目标网络的DV
- 目标网络 + 跳数
- 一次公告最多25个子网,最大跳数为16
例子
RIP链路失效和恢复
如果180秒没有收到通告信息 → 邻居或者链路失效
- 发现经过这个邻居的路由已失效
- 新的通告报文会传递给邻居
- 邻居因此发出新的通告(如果路由变化的话)
- 链路失效快速(?)地在整网中传输
- 使用毒性逆转,阻止ping-pong回路(不可达的距离:跳数无限 = 16段)
RIP进程处理
- RIP以应用进程的方式实现:route-d
- 通告报文通过UDP报文传送,周期性重复
- 网络层的协议使用了传输层的服务,以应用层实体的方式实现
OSPF
- open:标准可公开获得
- 使用LS算法
- LS分组在网络中(一个AS内部)分发
- 全局网络拓扑,代价在每一个节点中都保持
- 路由计算采用Dijkstra算法
- OSPF通告信息中携带:每一个邻居路由器一个表项
- 通告信息会传遍AS全部(通过泛洪)
- 在IP数据报上直接传送OSPF报文(而不是通过UDP和TCP)
- IS-IS路由协议:几乎和OSPF一样
OSPF“高级”特性(在RIP中没有的)
- 安全:所有的OSPF报文都是经过认证的(防止恶意的攻击)
- 允许有多个代价相同的路径存在(在RIP中只能有一个)
- 对于每一条链路,对于不同的TOS有多重代价矩阵
- 例如:卫星链路代价对于尽力而为的服务代价设置比较低,对实时服务代价设置比较高
- 支持按照不同的代价计算最优路径,如:按照时间和延迟分别计算最优路径
- 对单播和多播的集成支持:
- Multicast OSPF(MOSPF)使用相同的拓扑数据库,就像在OSPF中一样
- 在大型网络中支持层次性OSPF
层次化的OSPF
- 2个级别的层次性:本地,骨干
- 链路状态通告仅仅在本地区域Area范围内进行
- 每一个节点拥有本地区域的拓扑信息:
- 关于其他区域,知道去他的方向,通过区域边界路由器(最短路径)
- 区域边界路由器:“汇总(汇集)”到自己区域内网络的距离,向其他区域边界路由器通告
- 骨干路由器:仅仅在骨干区域内,运行OSPF路由
- 边界路由器:连接其他的AS’s