目录
前言
前一篇博客使用了 距离矢量路由协议的 RIP协议来动态配置路由。本篇博客学习使用OSPF协议实现动态路由。
一、OSPF入门
1.1 OSPF的基本概念
学习之前首先了解几个名词:
自治系统(Autonomous system,AS):由同一个技术管理机构管理、是一个使用相同路由策略的区域;
按自治系统分为:
- 内部网关协议(IGP,Interior Gateway Protocol):运行在AS内部的路由协议,主要解决AS内部的选路问题,发现和计算路由。如:RIP1/RIP2、OSPF、ISIS、EIGRP(思科私有协议)。
- 外部网关协议(EGP):运行在AS与AS之间的路由协议,他解决AS之间选路问题。如BGP等;
按协议类型分类(算法不同):
- 距离矢量路由协议
路由器对全网拓扑不完全了解,如 RIP1/2、BGP(路径矢量协议)、EIGRP(高级距离矢量协议) - 链路状态路由协议
路由器对全网拓扑完全了解,如 OSPF、ISIS。
距离矢量路由协议可以这样理解:路由器对全网拓扑不完全了解。是"传说的路由",A发路由信息给B,B加上自己的度量值(度量值+1)又发给C,路由表里的条目是听来的。
链路状态路由协议可以这样理解:是"传信的路由",A将信息放在一封信里发给B,B对其不做任何改变,拷贝下来,并将自己的信息放在另一封信里,两封信一起给C,这样信息没有任何改变和丢失,最后所有路由器都收到相同的一堆信,这一堆信就是 LSDB(链路状态数据库)。然后,每个路由器运用相同的SPF算法,以自己为根,计算出SPF Tree(即到达目的地的各个方案),选出最佳路径,放入路由表中。
基于以上的理论我们可以引出:
OSPF(Open Shortest Path First,开放式最短路径优先)用于在单一自治系统内决策路由,是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯彻(Dijkstra)算法被用来计算 最短路径树。
OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
Dijkstra 算法是最短路径算法,得到最短路径数。
----------- OSPF工作过程 ----------
这个过程会涉及到三张表:建立邻居表、链路状态数据库、路由表。
OSPF的特点:
- 可适应大规模网络
- 路由变化收敛速度快
- 无路由环
- 支持变长子网掩码VLSM
- 支持区域划分
- 支持以组播地址发送协议报
1.2 OSPF区域
OSPF区域:骨干区和非骨干区
- 为了适应大型的网络,OSPF在AS内划分多个区域;
- 每个OSPF路由器只维护所在区域的完整链路状态信息。
- 骨干区域 Area 0:负责与区域间非骨干区域路由信息传播
- 非骨干区域 :如下图中的 Area 1 Area 2。
Router ID:OSPF区域内唯一标识路由器的IP地址。
Router ID 选取规则:
自动选取Router ID:
- 选取路由器 Loopback 接口上数值最高的IP地址
- 如果没有 Loopback 接口,在物理端口中选取IP地址最高的
手动选取Router ID:
- 使用 router-id 命令指定 Router ID。
注:手动选取优先级大于自动选取优先级。
1.3 DR与BDR
DR:指定路由器
BDR:指定副路由器
DRothers:其他路由器
DR、BDR 和 DRothers 都在同一个 Area区域(广播域)内。
DRothers 只和 DR 及 BDR 形成邻接关系。
DR和BDR的选举方法:
自动选举DR和BDR:
- 网段上Router ID最大的路由器将被选举为 DR,第二大的将被选举为 BDR
手工选择DR和BDR:
- 优先级范围是 0~255,数值越大,优先级越高,默认为1。如果优先级相同,则需要比较Router ID;如果路由器的优先级被设置为0,它将不参与DR和BDR的选举。
注:路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的 DR 或 BDR路由器。
OSPF的组播地址:
- OSPF协议号89,组播地址 224.0.0.5 和 224.0.0.6。
- DRothers 向 DR/BDR 发送 DBD、LSR 或 LSU 时目标地址是 224.0.0.6,或者理解为:DR/BDR 侦听 224.0.0.6。
- DR/BDR 向 DRothers 发送更新的 DBD、LSR 或 LSU 时目标地址是224.0.0.5,或者理解为: DRothers 侦听 224.0.0.5。
即:刚开机时,224.0.0.5 发送Hello包消息,确定了DR/BDR身份后,DRothers 通过 224.0.0.6 发送链路状态给 DR/BDR; DR/BDR 再通过 224.0.0.5 发送给 DRothers;
1.4 OSPF的度量值
OSPF的度量值:COST
- 规则:数值越小越优先
- 计算公式=108/BW (BW是接口带宽)
- 最短路径是基于接口指定的代价(COST)计算的
接口类型 | 代价(108/BW) |
---|---|
Gigabit Ethernet | 0.1 |
fast Ethernet | 1 |
Ethernet | 10 |
电话线56K | 1785 |
1.5 OSPF的数据包
承载在IP数据包内,使用协议号 89。
OSPF的数据包类型:
OSPF包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD/DB) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到的DBD中有新的信息,用于请求更详细的信息 |
链路状态更新包(LSU) | 收到LSR后 发送链路状态通告 (LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已收到DBD,和LSU中的LSA,每个LSA需要被分别确认 |
1.6 邻接关系建立过程
状态 | 描述 |
---|---|
Down 状态 | 初始化,双方都不知道谁是谁 |
Init 状态 | 收到第一个Hello包,相互发送Hello包,得到Router ID |
2-Way 状态 | 相互已经都回应了Hello包,根据Router ID 进行DR、BDR的选举,建立双方会话,使用224.0.0.5地址 |
Exstart 状态 | 建立主从关系 |
Exchange 状态 | 交换摘要信息(发送DBD,比较数据库完整状态,如发现新信息,就发LSR请求) |
Loading 状态 | 加载详细信息,相应LSR,返回LSU,收到LSAck |
Full 状态 | 完成收敛,完全连接 |
OSPF将网络划分为四种类型:
- 点到点网络 (Point-to-Point)
- 广播多路访问网络 (Broadcast MultiAccess,BMA)
- 非广播多路访问网络 (None Broadcast MultiAccess,NBMA)
- 点到多点网络 (Point-to-Multipoint)
1.7 OSPF 与 RIP比较
OSPF | RIP V1 | RIP V2 |
---|---|---|
链路状态路由协议 | 距离矢量路由协议 | 同RIP V1 |
没有跳数的限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | 同RIP V1 |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | 同RIP V1 |
使用组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
二、OSPF实验
1.1 基础命令
OSPF配置命令
[R1]int g0/0/0