目录
一、OSPF概述
1.1OSPF协议介绍
1.2OSPF基本特点
1.3OSPF中的四种路由器
1.4OSPF与RIP比较
1.5OSPF的三个表
1.6OSPF广播类型
1.7OSPF的工作过程
二、邻居状态
2.1邻居状态机
2.2OSPF建立邻居的条件
三、LSA介绍
3.1LSA的类型和特点
3.2查看LSA
四、OSPF区域
4.1OSPF区域类型
4.2特殊区域
五、Router ID
5.1Router ID选取规则
六、DR和BDR的选举方法
七、OSPF包类型
7.1DBD报文分析
八、虚链路
8.1配置虚链路的规则及特点
九、OSPF实例
9.1拓扑图
9.2配置
9.3测试结果
一、OSPF概述
1.1OSPF协议介绍
OSPF(开放最短路径优先)属于IGP内部网关路由协议,协议基于链路状态算法。
OSPF直接运行于IP协议之上,使用IP协议号89。
1.2OSPF基本特点
支持无类域间路由(CIDR)
支持区域划分
无路由环路
支持变长子网掩码VLSM
路由变化收敛速度快
使用IP组播收发协议数据(224.0.0.5 DRother、224.0.0.6 DR/BDR)
支持多条等值路由
支持协议报文的认证(区域认证、虚链路认证 )
1.3OSPF中的四种路由器
OSPF中的四种路由器在OSPF多区域网络中,路由器可以按不同的需要同时成为以下四种路由器中的几种:
1. 内部路由器(IR):所有端口在同一区域的路由器,维护一个链路状态数据库。
2. 主干路由器(BR):具有连接主干区域端口的路由器。
3. 区域边界路由器(ABR):
具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负责将这些信息发送到各个区域。
4. 自治域系统边界路由器(ASBR):
至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。
1.4OSPF与RIP比较
OSPF与RIP比较:
| OSPF | RIPV2 | RIPV1 | |
| 路由收敛 | 快 | 慢 | 慢 |
| 跳数限制 | 无 | 15 | 15 |
| 邻居认证 | 支持 | 支持 | 不支持 |
| 分级网络. | 支持 | 不支持 | 不支持 |
| 更新 | 事件触发更新 | 路由表更新 | 路由表更新 |
| 路由计算 | Dijkstra | Bellman-Ford | Bellman-Ford |
| 协议类型 | 链路状态 | 距离矢量 | 距离矢量 |
| CIDR | 支持 | 支持 | 不支持 |
| VLSM | 支持 | 支持 | 不支持 |
| 自动聚合 | 不支持 | 支持 | 支持 |
| 手动聚合 | 支持 | 支持 | 不支持 |
| 路由泛洪 | 组播更新 | 周期组播更新 | 周期广播 |
| 路径开销 | 带宽 | 跳数 | 跳数 |
1.5OSPF的三个表
邻居列表 链路状态数据库 路由表
1.6OSPF广播类型
点到点、广播多路访问、非广播多路访问、点到多点
1.7OSPF的工作过程
邻居列表
链路状态数据库
路由表
建立邻接关系 ---> 链路状态数据库 ---> 最短路径树 ---> 路由表
学习链路状态信息 Dijkstra算法
二、邻居状态
2.1邻居状态机
(1)Down:邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文或OSPF没启动时。
(1-2) Attempt:只适用于NBMA类型的接口,处于本状态时,定期向那些手工配置的邻居发送HELLO报文。
(2)init:本状态表示已经收到了邻居的HELLO报文,但是该报文中列出的邻居中没有包含我的RouterID(对方并没有收到我发的HELLO报文)。
(3)2-Way:本状态表示双方互相收到了对端发送的HELLO报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。
(4)ExStart:在此状态下,路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。
(5) Exchange:路由器将本地的LSDB用DD报文来描述,并发给邻居。
(6) Loading:路由器发送LSR报文向邻居请求对方的LSA报文,邻居向本地路由器回复LSU,本地路由器通过LSACK进行确认。
(7)Full:在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)状态。
2.2OSPF建立邻居的条件
1、Router ID不能相同
2、HELLO时间必须一致
3、DEAD时间必须一致
4、区域ID必须相同
5、认证必须相同
6、STUB标志位必须相同(直连路由特殊区域要求一致)
7、三层MTU不匹配无法形成邻接关系(一边是exstart,一边是excha)
8、当OSPF网络类型为MA时,子网掩码长度必须一致(两个邻居)
9、OSPF版本号相同(目前版本为2)
三、LSA介绍
3.1LSA的类型和特点
| LSA的类型 | 特点 |
| 第一类LSA: Router-LSA | 由每个路由器生成,描述了路由器的链路状态 和花费,传递到整个区域 |
| 第二类LSA: Network-LSA | 由指定路由器DR生成,描述了本网段的链路 状态,传递到整个区域 |
| 第三类LSA: Net-Summary-LSA | 由ABR生成,描述了区域肉某一网段的路由, 传递到相关区域 |
| 第四类LSA: ASBR summary LSA | 由ABR产生,但是它是一条主机路由,指向 ASBR路由器地址的路由。 |
| 第五类LSA:自治系统外部LSA (Autonomous system external LSA) | 由ASBR产生,告诉相同自治区的路由器通往 外部自治区的路径。 自治系统外部LSA是唯一-不和具体的区域相关 联的LSA通告,将在整个自治系统中进行洪泛。 |
| 第六类LSA:组成员LSA (Group membership LSA) | 目前不支持组播OSPF (MOSPF 协议) |
| 第七类LSA: NSSA外部LSA (NSSA External LSA) | 由ASBR产生,几乎和第五类LSA通告是相同 的,但NSSA外部LSA通告仅仅在始发这个NSSA 由ASBR产生,几乎和第五类LSA通告是相同 |
3.2查看LSA
(1)查看1类LSA
display ospf lsdb router(区域内路由)
(2)查看2类LSA(DR通告本区域路由)
display ospf lsdb network
(3)查看3类LSA(区域间LSA)
display ospf lsdb summary
(4)查看4类LSA(外部指向ASBR路由)
display ospf lsdb asbr
(5)查看5类LSA(外部路由)
display ospf lsdbase
(6)查看7类LSA(nssa区域产生的外部路由)
display ospf lsdb nssa
四、OSPF区域
4.1OSPF区域类型
1、骨干区域(Area 0)
2、非骨干区域(根据学习的路由种类来区分)
- 标准区域
- 末梢区域(stub)
- 完全末梢区域(Totally stubby)
- 非纯末梢区域(NSSA)
- 完全非纯末梢区域(Totally NSSA)
4.2特殊区域
特殊区域:末梢区域、完全末梢区域、非纯末梢区域,完全非纯末梢区域
五、Router ID
Router ID
OSPF区域内唯一标识路由器的IP地址
5.1Router ID选取规则
可以使用router-id命令指定Router ID
选取路由器loopback接口上数值最高的IP地址
如果没有loopback接口,在物理端口中选取IP地址最高的
六、DR和BDR的选举方法
自动选举DR和BDR:
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
手工选择DR和BDR:
优先级范围是0~255,数值越大,优先级越高,默认为1.
如果优先级相同,则需要比较Router ID
如果路由器的优先级被设置为0,它将不参与DR和DBR的选举
DR和BDR的选举过程:
路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器。
七、OSPF包类型
| HELLO包 | 用于发现和维持邻居关系 |
| 数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库,选举DR和BDRHELLO包, |
| 链路状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更详细信息 |
| 链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA)一个LSU数据包可能包含几个LSA |
| 链路状态确认包(LSAck) | 确认已收到LSU,每个LSA都需要被分别确认 |
7.1DBD报文分析
DBD的作用除了对LSDB作信息描述即作一个信息的摘要之外,还有一个功能就是做隐式确认,双方互相发送DBD,形成LSDB同步,那怎样判别数据的状态是怎样的呢?由DBD的三个标志位来说明
| bit:就是跟在Options后面的这个,意思是init,如果值为“1”的话,是第一个DBD报文;
M bit:意思是more,如果值为“1”的话,说明后面还有跟多的DBD报文;
M/S bit:意思是Master/Slave,如果值为“1”的话,说明发送者是master;
如果路由器的邻居状态一直是Exstart或者是exchange,那应该和DBD的报文及相关参数有关。这一点对于排错也很重要。
八、虚链路
使用场合:一个非骨干区域跨越另一个非骨干区域时用
作用:帮助这个非骨干区域获取完整1sdb
命令:非骨千区域的中转区域打
R10:ospf
area1
vlink-peer 对端router-id
R18:ospf
area1
vlink-peer 对端router-id
注意:虚链路只能帮助一个非骨干区域跨越非骨干区域,虚链路属于区域0
display ospf vlink 查看配置的虚链路
8.1配置虚链路的规则及特点
虚链路必须配置在两台ABR路由器之间
传送区域不能是一个末梢区域
虚链路的稳定性取决于其经过的区域稳定性
虚链路有助于提供逻辑冗余
九、OSPF实例
案例需求:实现全网互通
9.1拓扑图
9.2配置
AR1配置
<>undo ter mon #关闭弹出信息
<>sys #进入系统视图
[]user-inter con 0 #配置永不超时
[]idle 0 0
[]q #退到上一级
[]sysname AR1 #重命名
[]int loo 0 #进入回环口
[]ip add 1.1.1.1 32 #配置IP地址
[]int g0/0/0 #进入接口
[]ip add 10.1.0.1 16 #配置IP地址
[]q #退到上一级
[]ospf 1 router-id 1.1.1.1 #进入OSPF 1 配置router-id
[]area 3 #进入区域3
[]stub #配置末梢区域
[]net 1.1.1.1 0.0.0.0 #宣告直连网段
[]net 10.1.0.0 0.0.255.255 #宣告直连网段
AR2配置
<>undo ter mon #关闭弹出信息
<>sys #进入系统视图
[]user-inter con 0 #配置永不超时
[]idle 0 0
[]q #退到上一级
[]sysname AR2 #重命名
[]int loo 0 #进入回环口
[]ip add 2.2.2.2 32 #配置IP地址
[]int g0/0/0 #进入接口
[]ip add 10.1.0.2 16 #配置IP地址
[]int g0/0/1 #进入接口
[]ip add 10.0.0.1 16 #配置IP地址
[]q #退到上一级
[]ospf 1 router-id 2.2.2.2 #进入OSPF 1 配置router-id
[]area 3 #进入区域3
[]stub no-summary #配置完全末梢区域
[]net 10.1.0.0 0.0.255.255 #宣告直连网段
[]area 1 #进入区域1
[]net 2.2.2.2 0.0.0.0 #宣告直连网段
[]net 10.0.0.0 0.0.255.255 #宣告直连网段
[]vlink-peer 3.3.3.3 #配置虚链路
AR3配置
<>undo ter mon #关闭弹出信息
<>sys #进入系统视图
[]user-inter con 0 #配置永不超时
[]idle 0 0
[]q #退到上一级
[]sysname AR3 #重命名
[]int loo 0 #进入回环口
[]ip add 3.3.3.3 32 #配置IP地址
[]int loo 1 #进入回环口
[]ip add 100.100.100.100 32 #配置IP地址
[]int g0/0/0 #进入接口
[]ip add 10.0.0.2 16 #配置IP地址
[]int g0/0/1 #进入接口
[]ip add 10.56.0.1 16 #配置IP地址
[]q #退到上一级
[]ospf 1 router-id 3.3.3.3 #进入OSPF 1 配置router-id
[]area 1 #进入区域1
[]net 10.0.0.0 0.0.255.255 #宣告直连网段
[]vlink-peer 2.2.2.2 #配置虚链路
[]area 0 #进入区域0
[]net 100.100.100.100 0.0.0.0 #宣告直连网段
[]net 3.3.3.3 0.0.0.0 #宣告直连网段
[]net 10.56.0.0 0.0.255.255 #宣告直连网段
AR4配置
<>undo ter mon #关闭弹出信息
<>sys #进入系统视图
[]user-inter con 0 #配置永不超时
[]idle 0 0
[]q #退到上一级
[]sysname AR4 #重命名
[]int loo 0 #进入回环口
[]ip add 4.4.4.4 32 #配置IP地址
[]int g0/0/0 #进入接口
[]ip add 10.56.0.2 16 #配置IP地址
[]int g0/0/1 #进入接口
[]ip add 10.2.0.1 16 #配置IP地址
[]q #退到上一级
[]ospf 1 router-id 4.4.4.4 #进入OSPF 1 配置router-id
[]area 0 #进入区域0
[]net 10.56.0.0 0.0.255.255 #宣告直连网段
[]area 2 #进入区域2
[]nssa no summary #配置完全非纯末梢区域区域
[]net 4.4.4.4 0.0.0.0 #宣告直连网段
[]net 10.2.0.0 0.0.255.255 #宣告直连网段
AR5配置
<>undo ter mon #关闭弹出信息
<>sys #进入系统视图
[]user-inter con 0 #配置永不超时
[]idle 0 0
[]q #退到上一级
[]sysname AR5 #重命名
[]int loo 0 #进入回环口
[]ip add 5.5.5.5 32 #配置IP地址
[]int g0/0/0 #进入接口
[]ip add 10.2.0.2 16 #配置IP地址
[]int g0/0/1 #进入接口
[]ip add 172.16.24.1 24 #配置IP地址
[]q #退到上一级
[]ospf 1 router-id 5.5.5.5 #进入OSPF 1 配置router-id
[]area 2 #进入区域2
[]nssa #配置非纯末梢区域
[]net 5.5.5.5 0.0.0.0 #宣告直连网段
[]net 10.2.0.0 0.0.255.255 #宣告直连网段
[]q #退到上一级
[]q #退到上一级
[]rip 1 #进入rip1
[]ver 2 #版本为2
[]undo summary #关闭自动汇总
[]net 172.16.0.0 #宣告直连网段
[]q #退到上一级
[]ospf 1 #进入OSPF 1
[]import-route rip 1 cost 100 #双向重分发
[]q #退到上一级
[]rip 1 #进入rip1
[]import-route ospf 1 cost 0 #双向重分发
[]default-route originate cost 0 #下发默认路由
AR6配置
<>undo ter mon #关闭弹出信息
<>sys #进入系统视图
[]user-inter con 0 #配置永不超时
[]idle 0 0
[]q #退到上一级
[]sysname AR6 #重命名
[]int loo 0 #进入回环口
[]ip add 6.6.6.6 32 #配置IP地址
[]int g0/0/0 #进入接口
[]ip add 172.16.24.2 24 #配置IP地址
[]q #退到上一级
[]rip 1 #进入rip1
[]ver 2 #版本级别为2
[]undo summary #关闭自动汇总
[]net 6.0.0.0 #宣告直连网段
[]net 172.16.0.0 #宣告直连网段
9.3测试结果
AR1pingAR6成功,实现全网互通



