第 6章 OSPF动态路由协议
6.1 OSPF概述
6.1.1 OSPF特点
OSPF无路由自环问题。
OSPF支持变长子网掩码 VLSM。
OSPF支持区域划分、适应大规模网络。
OSPF支持等值路径负载分担( Cisco定义最大 6条)。
OSPF支持验证,防止对路由器、路由协议的攻击行为
6.1.1 OSPF特点 (续)
OSPF路由变化时收敛速度快,可适应大规模网络。
OSPF并不周期性地广播路由表,因此节省了宝贵的带宽资源。
OSPF被直接封装于 IP协议之上(使用协议号 89),
它靠自身的传输机制保证可靠性。
OSPF数据包的 TTL值被设为 1,即 OSPF数据包只能被传送到一跳范围之内的邻居路由器。
OSPF以组播地址发送协议报文(对所有 DR/BDR路由器的组播地址,224.0.0.6;对所有的 SPF路由器的组播地址,224.0.0.5)。
6.1.2 OSPF协议的基本术语
1.路由器 ID— Router ID
2.邻居( Neighbors)
3.邻接( Adjacency)
4.指定路由器( Designative Router,DR)
5.备份指定路由器( Backup Designative
Router,BDR)
6,DROTHER
7,OSPF链路状态数据库
6.2 OSPF数据包类型
6.2.1 OSPF数据包结构
1,OSPF数据包类型表 6-2-1 OSPF数据包类型编号 类型 用途
1 H el l o 发现邻居、维持邻居关系、选举 D R / B D R
2 数据库描述 交换链路状态数据库 L S A 头
3 链路状态请求 请求一个指定的 L S A 数据细节
4 链路状态更新 发送被请求的 L S A 数据包
5 链路状态确认 对链路状态更新包的确认
2,OSPF数据包头部结构图 6-2-1 OSPF数据包头部结构版 本
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1
总 长 度路 由 器 I D
校 验 和 认 证 类 型区 域 I D
身 份 认 证身 份 认 证类 型
B i t
6.2.2 5种类型的 OSPF数据包
1,Hello数据包
Hello数据包是编号为 1的 OSPF数据包。
运行 OSPF协议的路由器每隔一定的时间发送一次
Hello数据包,用以发现、保持邻居( Neighbors)
关系并可以选举 DR/BDR。
2.链路状态数据库描述数据包链路状态数据库描述数据包( DataBase Description
,DBD)是编号为 2的 OSPF数据包。
该数据包在链路状态数据库交换期间产生。它的主要作用有三个:
选举交换链路状态数据库过程中的主 /从关系。
确定交换链路状态数据库过程中的初始序列号。
交换所有的 LSA数据包头部。
3.链路状态请求数据包链路状态请求数据包( LSA-REQ)是编号为 3的 OSPF
数据包。
该数据包用于请求在 DBD交换过程发现的本路由器中没有的或已过时的 LSA包细节。
4.链路状态更新数据包链路状态更新数据包( LSA-Update)是编号为 4的
OSPF数据包。
该数据包用于将多个 LSA泛洪,也用于对接收到的链路状态更新进行应答。如果一个泛洪 LSA没有被确认,
它将每隔一段时间(缺省是 5秒)重传一次。
5.链路状态确认数据包链路状态确认数据包( LSA-Acknowledgement)是编号为 5的 OSPF数据包。
该数据包用于对接收到的 LSA进行确认。该数据包会以组播的形式发送。如果发送确认的路由器的状态是 DR或者 BDR,确认数据包将被发送到 OSPF路由器组播地址,224.0.0.5。如果发送确认的路由器的状态不是 DR或者 BDR,确认将被发送到 OSPF路由器组播地址,224.0.0.6。
6.2.3 LSA数据包
1.链路状态通告数据包( LSA)头部格式表 6-2-2 LSA数据包类型编号 类型
1 路由器 L S A
2 网络 L S A
3 ( A B R )汇总 L S A
4 ( A S B R )汇总 L S A
5 AS - E xt er na l L S A
LSA头图 6-2-6 LSA 头部选 项
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1
L S 年 龄
L S 校 验 和 长 度链 路 状 态 ID
通 告 路 由 器
L S 序 列 号
L S 类 型
B it
表 6-2-3 LSA类型及对应链路状态 ID
L S A 类型 链路状态 ID
1 生成 L S A 的路由器 ID
2 该网络 中 DR 的 路由器 ID
3 目标网络的 IP 地址
4 A S B R 路由器 ID
5 目标网络的 IP 地址
2.路由器 LSA
路由器 LSA主要包括以下内容:
该路由器是否是一个区域边界路由器( ABR,见
6.5节)。
该路由器是否是一个自治系统边界路由器( ASBR,
见 6.5节)。
路由器链路的数量。
链路类型、链路数据、链路 ID:不同链路类型的这三个字段的内容及含义不同。
度量:指定链路的 OSPF代价。
表 6-2-4 不同类型链路的对应链路状态 ID和链路数据编号 链路类型 链路 ID 链路数据
1 点到点连接 邻居路由器 ID 接口 IP 地址或标识
2 到传 输网( T r ans i t ) 的 连接 DR 的 IP 地址 接口 IP 地址
3 到端网络( S t ub )的连接 IP 网络 / 子网 号 子网掩码
4 虚拟链路 邻居路由器 ID 接口 IP 地址
3.网络 LSA
网络 LSA主要包括以下内容:
网络掩码:与传输网相关的网络掩码。
接入( Attached)路由器:接入到传输网的所有路由器的路由器 ID列表。
6.3 OSPF网络介质分类
RFC将网络介质类型分为,NBMA和点到多点类型。
Cisco额外定义了三种网络介质:点到点、广播和点到多点非广播。
6.3.1 点到点( Point to Point,PTP)
在点到点类型的介质中,OSPF数据包以多播地址发送不选举 DR,BDR
OSPF路由器之间的 hello数据包每 10秒钟发送一次,
邻居的死亡间隔时间为 40秒图 6-3-1 点到点链路
R outer BR outer A
S0/0:192.168.1.1/24
R ID,20.0.0.1
S0/0:192.168.1.2/24
R ID,10.0.0.1
6.3.2 广播网络( Broadcast)
需要选举 DR/BDR。
OSPF路由器之间的 hello数据包每 10秒钟发送一次,
邻居的死亡间隔时间为 40秒。
图 6-3-2 广播网络
Router CRouter B
Router A
F0/1:192.168.1.2/24
Lo0:20.0.0.1/32
以 太 网
F0/1:192.168.1.3/24
F0/1:192.168.1.1/24
Lo0:30.0.0.1/32
Lo0:10.0.0.1/32
DRBDR
DROther
6.3.3 非广播多路访问( NBMA)
非广播多路访问( Non-Broadcast Multi-Access,
NBMA)类型的介质包括运行帧中继,X.25,ATM等协议的网络。
对于 NBMA网络,需要手工指定 DR/BDR。之后,其运行模式将同广播网络一样。
OSPF路由器之间的 hello数据包每 30秒钟发送一次,
邻居的死亡间隔时间为 120秒。
非广播多路访问( NBMA)
6.3.4 点到多点( PTMP)
点到多点( Point to Multi-Point,PTMP)类型的介质包括运行帧中继,X.25,ATM等协议的网络。
在点到多点介质中,不选举 DR/BDR。
OSPF路由器之间的 hello数据包每 30秒钟发送一次,
邻居的死亡间隔时间为 120秒。
点到多点
6.3.5 点到多点 — 非广播( P2MP-
NonBroadcast)
不选举 DR/BDR。
需要使用命令 neighbor手工指定近邻。
OSPF路由器之间的 hello数据包每 30秒钟发送一次,
邻居的死亡间隔时间为 120秒。
表 6-3-1 介质特性表介质类型 寻址 D R / B D R 手工设置邻居 H e l l o 时间(秒) 死亡间隔时间(秒)
广播 组播 是 否 10 40
点到点 组播 否 否 10 40
N B MA 单播 手工指定 是 30 120
点到多点 组播 否 否 30 120
点到点多非广播 单播 否 是 30 120
6.4 SPF过程
6.4.1 OSPF邻居状态机
1,OSPF邻接建立过程
OSPF邻接建立过程主要会经过以下一些阶段或状态:
关闭( Down)状态:没有发送 hello数据包,也没有收到
hello数据包。
尝试( Attempt)状态:不停地向对方发送 hello数据包。
初始( Init)状态:收到了对方的 hello数据包。但对方没有收到自己的 hello报文。
双向( Two-Way)状态:双方均收到了对方的 hello数据包。
启动( ExStart)状态:发送 DBD报文,选举主 /从设备、
设定初始序列号。
交换( Exchange)状态:互相交换 LSA报头信息。
装入( Loading)状态:向对方请求自己没有的或过时的 LSA信息,并在收到对方的更新 LSA后添加到自己的链路状态数据库中。
完成( Full)状态:双方的链路状态数据库完全相同。
图 6-4-1
OSPF
邻接建立过程
R o u t e r BR o u t e r A
S 0 / 0,1 9 2,1 6 8,1,1 / 2 4
S 0 / 0,1 9 2,1 6 8,1,2 / 2 4
关 闭 ( D o w n )
H e l l o,D R = 0,S E E N = 0
关 闭 ( D o w n )
.
.
.
尝 试 ( A t t e m p t )
初 始 ( I n i t )
H e l l o,D R = R o u t e r B,S E E N = R o u t e r A
双 向 ( T w o - w a y )
启 动 ( E x S t a r t )
D B D ( S E Q = x,I = 1,M = 1,M a s t e r )
D B D ( S E Q = y,I = 1,M = 1,M a s t e r )
D B D ( S E Q = y,I = 0,M = 1,S l a v e )
D B D ( S E Q = y,I = 0,M = 1,S l a v e )
D B D ( S E Q = y + 1,I = 0,M = 1,M a s t e r )
D B D ( S E Q = y + 1,I = 0,M = 1,S l a v e )
交 换 ( E x c h a n g e )
D B D ( S E Q = y + n,I = 0,M = 1,M a s t e r )
装 入 ( L o a d i n g )
L S 更 新
L S 请 求
D B D ( S E Q = y + n,I = 0,M = 1,S l a v e )
.
.
.
D B D ( S E Q = y +,,,,I = 0,M = 0,S l a v e )
D B D ( S E Q = y +,,,,I = 0,M = 0,M a s t e r )
完 成 ( F u l l )
2,OSPF邻居状态机图 6-4-2 OSPF邻居状态机
Exchange
Init
Down
Atempt
ExStart
Loading
Two-way
Ful
6.4.2 SPF计算
OSPF协议的核心是 SPF,即最短路径优先算法。
OSPF使用 Dijkstra算法来产生最短生成树。
OSPF协议中的 SPF计算路由过程如下:
各路由器发送自己的 LSA,其中描述了自己的链路状态信息。
各路由器汇总收到的所有 LSA,生成 LSDB。
各路由器以自己为根节点计算出最小生成树,依据是链路的代价。
各路由器按照自己的最小生成树得出路由条目并安装到路由表中。
图 6-4-3 OSPF中路由表生成过程
R o u t e r C
R o u t e r B
R o u t e r A
R o u t e r D
R o u t e r E
1 0
1 0
1 0
1 0
1 0
1 0
1 0
网 络 拓 扑 结 构
R o u t e r E 的 链 路 状 态
R o u t e r D 的 链 路 状 态
R o u t e r C 的 链 路 状 态
R o u t e r B 的 链 路 状 态
R o u t e r A 的 链 路 状 态
R o u t e r A 的 链 路 状 态 数 据 库
R o u t e r A 的 最 短 路 径 优 先 树
R o u t e r C
R o u t e r B
R o u t e r A
R o u t e r D
R o u t e r E
1 0
1 0
1 0
1 0
R o u t e r A 的 路 由 表
S P F 算 法图 6-4-4 RouterB和 RouterC的最短生成树
R o u t e r C
R o u t e r B
R o u t e r A
R o u t e r D
R o u t e r E
1 0
1 0
1 0
1 0
R o u t e r B 的 最 短 路 径 优 先 树
R o u t e r C
R o u t e r B
R o u t e r A
R o u t e r D
R o u t e r E
1 0
1 0
1 0
1 0
R o u t e r C 的 最 短 路 径 优 先 树图 6-4-5 RouterD和 RouterE的最短生成树
R o u t e r C
R o u t e r B
R o u t e r A
R o u t e r D
R o u t e r E
1 0
1 0
1 0
1 0
R o u t e r C
R o u t e r B
R o u t e r A
R o u t e r D
R o u t e r E
1 0
1 0
1 0
1 0
R o u t e r E 的 最 短 路 径 优 先 树R o u t e r D 的 最 短 路 径 优 先 树
6.5 OSPF区域图 6-5-1 多区域 OSPF
区 域 0
自 治 系 统区 域 1
区 域 2
R o u t e r A
R o u t e r B
R o u t e r C
R o u t e r D
R o u t e r F
R o u t e r X
R o u t e r E
多区域 OSPF中路由器的名称及用途区域内路由器( Inter Area Router,IAR):该路由器负责维护本区域内部路由器之间的链路状态数据库。
骨干(主干)路由器:可以是区域内路由器,也可以是区域边界路由器。
区域边界路由器( Area Border Router,ABR),该路由器拥有所连接的区域的所有链路状态数据库并负责在区域之间发送 LSA更新消息。
自治系统边界路由器( Autonomous System Border Router,
ASBR)。该路由器处于自治系统边界,负责和自治系统外部交换路由信息。
6.6 思考与练习
1.写出 OSPF不同于 RIP的特点。
2.写出 5种类型 OSPF数据包的名称和作用。
3.写出路由器 LSA和网络 LSA的区别。
4.写出各种 OSPF网络拓扑结构的名称及特点。
5.画出 OSPF邻居状态机。