目录
1.OSPF简介
2.OSPF工作原理简介
3.OSPF基础概念
3.1 OSPF系统
3.1.1 OSPF路由器分类
3.1.2 OSPF区域
(1)OSPF区域分类
(2)OSPF特殊区域
3.1.3 OSPF路由类型
3.2 OSPF报文
3.2.1 OSPF首部格式
3.2.2 OSPF报文格式
(1)Hello报文格式
(2)DD报文格式
(3)LSR报文格式
(4)LSU报文格式
(5)LSAck报文格式
3.2.3 LSA格式
(1) LSA首部格式
(2) LSA格式
3.3 OSPF网络类型
1.OSPF简介
OSPF(Open Shortest Path First)协议是一种用于路由选择的链路状态协议,它是由IETF(Internet Engineering Task Force)定义的,被广泛用于企业和服务提供商的网络中。
OSPF可以在大型网络中自适应地计算路径,并选择最优路径来转发数据包,从而提高网络的可靠性、灵活性和性能。
它使用链路状态数据库(LSDB)来存储网络拓扑信息,并通过洪泛算法来传递信息,最终计算出网络的最短路径树。
该协议支持VLSM(Variable-Length Subnet Mask)地址分配,可以应对复杂的网络拓扑,同时还支持多种路由类型,如多路径路由、默认路由和区域路由等。
2.OSPF工作原理简介
- 通过Hello报文建立邻居关系
- 泛洪LSA并完成LSDB记录同步
- SPF算法计算并形成路由
图 2-1 OSPF工作原理简介
3.OSPF基础概念
3.1 OSPF系统
图 3-1 OSPF系统
3.1.1 OSPF路由器分类
- 内部路由器(IR,Internal Router):所有的OSPF接口都在同一个区域的路由器。
- 骨干路由器(BR,Backbone Router):至少有一个OSPF接口属于骨干区域(区域0)的路由器。
- 区域边界路由器(ABR,Area Border Routers):至少有一个OSPF接口属于骨干区域且至少有OSPF接口连接属于非骨干区域,ABR用来连接骨干区域和非骨干区域。
- 自治系统边界路由器(ASBR,AS Boundary Router):至少有一个OSPF接口属于OSPF一个区域(任何区域),另外一个接口连接连其他AS边界路由器并用于交换路由器信息。
3.1.2 OSPF区域
(1)OSPF区域分类
OSPF区域分为骨干区域和非骨干区域,骨干区域和非骨干区域统称为常规(Normal)区域。
- 非骨干区域
非骨干区域区域号不能为0.0.0.0,非骨干区域通过物理连接或者虚连接连接骨干区域。
- 骨干区域
骨干区域区域号固定为0.0.0.0,骨干区域的作用是汇总各个区域的LSA信息,并通过ABR通告给和骨干区域相连的各个区域。
OSPF区域划分规定:
1.骨干区域必须是连续的,分离的骨干区域需要通过虚连接联通。
2.非骨干区域必须和骨干区域联通(通过物理连接或者虚连接联通)。
(2)OSPF特殊区域
OSPF特殊区域主要通过以下信息进行区分:ABR和ASBR数量,是否有虚连接穿过该区域,是否位于AS边缘,允许哪些LSA进入该区域。
按照以上信息的差异,OSPF特殊区域可以分为以下4种:
- Stub(末梢)区域
Stub区域需要满足以下条件:
- 只有一个ABR没有ASBR。
- 没有虚连接。
- 非骨干区域。
- 处于AS边缘。
Stub区域只允许同一AS(自治系统)Type 1 LSA,Type 2 LSA,Type 3 LSA在区域内通告,这样可以减少区域内路由表项数量。
- Totally Stub(完全末梢)区域
Totally Stub区域需要满足以下条件:
- 只有一个ABR没有ASBR。
- 没有虚连接。
- 非骨干区域。
- 处于AS边缘。
Totally Stub区域和Stub区域的区别是Totally Stub区域只允许Type 1 LSA,Type 2 LSA,不允许Type 3 LSA在区域内通告,这样进一步减少区域内路由表项数量。
Totally Stub区域如何和外部区域如何通信?
ABR产生一条缺省的Summary LSA (Type 3 LSA)通告给骨干区域。
- NSSA(非纯末梢)区域
NSSA区域需要满足以下条件:
- 有大于或等于一个ABR且有大于或等于一个ASBR。
- 没有虚连接。
- 非骨干区域。
NSSA区域允许同一AS(自治系统)Type 1 LSA,Type 2 LSA,Type 3 LSA在区域内通告,且允许不同AS(自治系统)Type 7 LSA进入该区域,NSSA区域ABR会通过Type 5 LSA通告给AS内其他区域。
- Totally NSSA(完全非纯末梢)区域
Totally NSSA区域需要满足以下条件:
- 有大于或等于一个ABR且有大于或等于一个ASBR。
- 没有虚连接。
- 非骨干区域。
Totally NSSA区域允许同一AS(自治系统)Type 1 LSA,Type 2 LSA在区域内通告,不允许Type 3 LSA在区域内通告。
Totally NSSA区域允许不同AS(自治系统)Type 7 LSA该区域,NSSA区域ABR会通过Type 5 LSA通告给AS(自治系统)内其他区域。
Totally NSSA区域如何和AS(自治系统)内其他区域如何通信?
ABR产生一条缺省的Summary LSA (Type 3 LSA)通告给骨干区域。
表 3-1 OSPF特殊区域
3.1.3 OSPF路由类型
OSPF路由可以分为4类:
- 区域内路由(Intra Area Route)
- 区域间路由(Inter Area Route)
- 第一类外部路由(Type-1 Externel Route)
- 第二类外部路由(Type-2 Externel Route)
表 3-2 OSPF路由类型
3.2 OSPF报文
OSPF共有5中报文:Hello报文,DD报文,LSR报文,LSU报文,LSAck报文。
- Hello报文
Hello报文用于维护邻居路由器列表,并检测邻居路由器是否在线。此报文设置有OSPF的管理IP地址,包括标识号、优先级、邻居IP地址等信息。
- DD(Database Description)报文
DD报文用于交换LSDB(链路状态数据库)的摘要信息,以确定哪些LSA(链路状态广告)需要传输和接收。DD报文传输的信息为LSA头部信息,传输LSA头部的目的在于减少网络流量,通常路由器的LSA数量会比较多,如果传输LSA完整信息的话会造成网络流量大的问题。
- LSR(Link State Request)报文
LSR报文用于请求一个或多个LSA的完整副本。LSR报文同样只包含LSA头部信息。
- LSU(Link State Update)报文
LSU报文用于传输一个或多个LSA的完整副本。当路由器LSDB中有更改时,LSU报文将通知其他路由器的更新LSDB。只有LSU会携带完整的LSA信息。
- LSAck(Link State Acknowledgment)报文
LSAck报文用于确认收到的LSA,并向发送方发送确认消息。路由器发送LSU报文后,如果没有收到对端LSAck报文,将会重传LSA。
图 3-2 OSPF报文交互流程
3.2.1 OSPF首部格式
图 3-3 OSPF首部格式
Version:OSPF版本,1字节。
Message Type:报文类型,1字节。
- 1:Hello报文
- 2:DD报文
- 3:LSR报文
- 4:LSU报文
- 5:LSAck报文
Packet Length:OSPF报文长度,2字节。
Source OSPF Router:路由器ID,4字节,发送OSPF报文的源路由器ID。
Area ID:区域ID,4字节。
Checksum:校验和,2字节。
Auth Type:验证类型,2字节。
Auth Data:验证数据,4字节。
3.2.2 OSPF报文格式
(1)Hello报文格式
图 3-4 Hello报文格式
Network Mask:4字节,发送Hello报文接口IP的子网掩码。
Hello Interval:2字节,发送Hello报文的时间间隔。
Options:1字节,选项,由下面比特位组成。
- DN:Down比特位
- O:Opaque比特位
- DC:Demand Circuit比特位
- L:LLS Data Block比特位
- NP:N或P比特位
- MC:Multicast比特位
- E:External Routing比特位
- MT:Multi-Topology比特位
Router Pri:1字节,本路由器的DR优先级。
Router Dead Interval:4字节,本地路由器失效时间。
Designated Router:4字节,DR接口IP地址。
Backup Designated Router,4字节,BDR接口IP地址。
Active Neighbor:4字节,已发现邻居路由器的Router ID。
(2)DD报文格式
图 3-5 DD报文格式
Interface MTU:2字节,发送DD报文接口的MTU数值。
Options:1字节,选项,由下面比特位组成
- DN:Down比特位
- O:Opaque比特位
- DC:Demand Circuit比特位
- L:LLS Data Block比特位
- NP:N或P比特位
- MC:Multicast比特位
- E:External Routing比特位
- MT:Multi-Topology比特位
DB Description:DB说明,1字节
- I:1比特,多个DD报文,第一个DD报文置1。
- M:1比特,多个DD报文,最后一个DD报文置1。
- MS:1比特,设置DD报文双方主从关系。
DD Sequence:4字节,DD报文序列号。
LSA Headers:4字节,LSA头部信息列表。
(3)LSR报文格式
图 3-6 LSR报文格式
Link State Request以下几个部分组成
LS Type:4字节,请求的LSA类型。
Link State ID:4字节,由LSA类型决定实际意义。
- Type 1 LSA:产生该LSA的路由器Router ID。
- Type 2 LSA:DR接口IP地址。
- Type 3 LSA:目的网络IP地址。
- Type 4 LSA:ASBR Router ID。
- Type 5 LSA:目的网络IP地址。
Advertising Router:4字节,发送此报文路由器Router ID。
(4)LSU报文格式
图 3-7 LSU报文格式
Number of LSAs:4字节,报文中LSA数量。
LSA:LSA列表,LSA格式后面有详细介绍。
(5)LSAck报文格式
图 3-8 LSAck报文格式
LSA Headers:LSA头部列表。
3.2.3 LSA格式
(1) LSA首部格式
图 3-9 LSA首部格式
LS age:LSA年龄,2字节,该LSA的年龄(距离上次生成的时间)。
Options:选项,1字节,LS类型、范围、发生器类型等选项。
LS type:LSA类型,1字节,常见LSA类型如下:
- 1:Router-LSA,
- 2:Network-LSA
- 3:Network-summary-LSA
- 4:ASBR-summary-LSA
- 5:AS-external-LSA
- 7:NSSA-external-LSA
Link state ID:链路状态ID,4字节,LSA的标识符。
Advertising Router:广告LSA路由ID,4字节。
LS sequence number:LSA序列号,4字节。
LS Checksum:LSA校验和,2字节,校验范围为除LS age字段外的LSA数据。
Length:LSA的长度,2字节 LSA body 不定长 LSA的具体内容。
(2) LSA格式
- Type 1 LSA:路由器LSA(Router-LSA)
图 3-10 Router-LSA格式
V位:1比特,如果长生此LSA的路由器有设置虚连接,该位置1,否则置0。
E位:1比特,如果产生此LSA的路由器是ASBR,该位置1,否则置0。
B位:1比特,如果长生此LSA的路由器是ABR,该位置1,否则置0。
Number of Links:2字节,路由器OSPF链路数量。
Link ID:4字节,由Link Type决定实际意义。
Link Data:4字节,由Link Type决定实际意义。
Link Type:1字节,实际的链路类型
- 1.P2P(点对点网络):Link ID表示邻居路由设备的Router ID,Link Data表示发送该LSA的路由器接口的IP地址。
- 2.Transit(传送网络):Link ID表示DR接口的IP地址,Link Data表示发送该LSA的路由器接口的IP地址。
- 3.Stub(末梢网络):Link ID表示IP网络或子网地址,Link Data表示发送该LSA的路由器接口所在网络的子网掩码。
- 4.Virtual Link(虚连接):Link ID表示邻居路由设备的Router ID,Link Data表示发送该LSA的路由器接口的MIB-II ifIndex(接口索引)值。
TOS:1字节,固定为0。
Metric:2字节,链路开销。
- Type 2 LSA:网络LSA(Network-LSA)
图 3-11 Network-LSA格式
Network Mask:4字节,该网络子网掩码。
Attached Router:4字节,该网段所有与DR形成邻居关系的路由器Router ID。
- Type 3 LSA:网络聚合LSA(Network-summary-LSA)
图 3-12 Network-summary-LSA格式
- Type 4 LSA:ASBR聚合LSA(ASBR-summary-LSA)
- Type 5 LSA:自治系统外部LSA(AS-external-LSA)
3.3 OSPF网络类型
OSPF网络可以分为以下4种类型:
- P2P(点到点,point-to-point)类型。
- P2MP(点到多点,point-to-multipoint)类型。
- BMA(广播多路访问,Broadcast multi-Access)类型。
- NBMA(非广播多路访问,Non-Broadcast multi-Acces)类型。