要理解OSPF路由协议的工作原理,特别是路由更新机制,首先就要对它的各种报文格式有一个全面的了解。OSPF报文主要有5种:Hello报文、DD (Database Description,数据库描述)报文、LSR (LinkState Request,链路状态请求)报文、LSU(LinkState Update,链路状态更新)报文和LSAck(LinkState Acknowledgment,链路状态应答)报文。它们各自在OSPF路由更新中所担当的用途不一样,报文格式也存在比较大的差别。
OSPF 的报文格式
OSPF 的报文直接封装在IP 数据包 协议号为89 一个比较完整的OSPF 报文格式如下
IP header | Ospf packet header | Number LAS s | LSA header | lsa Data |
1. OSPF 报文头
OSPF 有五种报文类型 它们有相同的报头
version(8) | Type(8) | Packet length(16) |
Router-id(32) | ||
Area-id(32) | ||
Checksum(16) | Autype(24) | |
Authentication(32) | ||
Authentication(32) |
字段解释如下
Version 是ospf 的版本 ospfv2 其值为 2
Type :ospf 类型有五种报文 分别为 1: hello 2:dd 3:lsr 4 :lsu 5 lsack
Packet length ospf 报文的总长度 包括报头在内 单位是字节
Router-id 始发该LSA的路由器ID
Area-id 始发该LSA 的区域ID
Checksum :对整个报文校验
Autype :验证类型 可分为不验证、明文验证、MD5验证 值分别为 0 1 2
Authenication :其值根据验证类型来定义, 验证为0时未作定义 为1是为密码验证 为2时为KEY-ID 和密码的MD5 验证
MD5数据添加在OSPF 报文后面不在authentication 字段里
二:hello 报文 (hello packet)
它是周期性的发送 来维持邻居关系 和dr /bdr 选举内容主要包括:定时器数值、DR BDR 以及自己已知的邻居 起报文格式如下图
Version(8) | 1 | Packet length(16) |
Router-id(32) | ||
Area-id(32) | ||
Checksum(16) | Autype(24) | |
Authentication(32) | ||
Authentication(32) | ||
Network mask(32) | ||
Hellointerval (16) options (8) RTR pri | ||
Routerdeadtimeinterval(32) | ||
DR(32) | ||
BDR(32) | ||
Neighbor (32) | ||
-------- |
Network mask 发送hello 包 时 接口下的子网掩码不同不能建立邻居关系
Hellointerval 发送hello 报的时间间隔不同不能建立邻居关系
RTr pri :路由器的本地优先级
Routerdeadtimeinterval:失效时间 如果在规定的时间内没有收到来自邻居的hello包则视为失效,失效时间间隔不同不能建立邻居
Designated router 指路由器本地接口的IP
Neighbor 指邻居路由器的Ip
DD 报文(database description packet )
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB 内容包括LSDB中每一条LSA 的header LSA header 只占一个条LSA的整个数据流的一小部分 这样可以减少路由器之间的协议报文流量,对端的路由器可以根据LSA 的头部 能够判断是否有这条LSA
Version(8) | 2 | Packet length(16) | ||
Router-id(32) | ||||
Area-id(32) | ||||
Checksum(16) | Autype(24) | |||
Authentication(32) | ||||
Authentication(32) | ||||
interface MTU | option | i=1 M=1 ms=1 | ||
DD Sequence number | ||||
LSA header |
主要字段解释如下:
Interface MTU :在不分片情况下 在接口处容许最大发出的IP报文长度
I(initial)当发送连续的DD 时 如果是第一个报文则为1
M(more) 表示多个DD 连续发送报文,如果是最后一个dd 则表示为0 反则为1
MS :在双方交换DD 时还要确认他们的主从关系 ms=1 表示发送方为主位
Dd sequence number :双方用序列号来确认DD 收发的持续性和完整性
三:LSR报文(link state request)
两台路由器互相交换数据到最后一个LSA 时 如果一方发现自己还有很多不知道的DD 时就会请求对方 lsr 来继续更新自己的DATABASE
Version(8) | 3 | Packet length(16) |
Router-id(32) | ||
Area-id(32) | ||
Checksum(16) | Autype(24) | |
Authentication(32) | ||
Authentication(32) | ||
LS TYPE | ||
Link state ID | ||
Advertising router |
LS Type :LSA 的类型 例如Type 1表示router lsa
Link state ID 链路状态标识
Advertising router: 产生此lsa 的路由器
5.LSU 报文
LSU 是对LSR 寻求的回答
Version(8) | 4 | Packet length(16) |
Router-id(32) | ||
Area-id(32) | ||
Checksum(16) | Autype(24) | |
Authentication(32) | ||
Authentication(32) | ||
Number of LSAs | ||
LSAs |
Number of LSAs 该报文包含LSA 的数量
LASs :包含所有的LSA
6.LSAck
LSACK 报文是用来对接收到的LSU 报文的进行确认的 内容是需要确认LSA 的header
Version(8) | Type(8) | Packet length(16) |
Router-id(32) | ||
Area-id(32) | ||
Checksum(16) | Autype(24) | |
Authentication(32) | ||
Authentication(32) | ||
LSA header |
LSA header :该报文包含LSA 的头部
7.LSA 头格式
所有的LSA 都有相同的报文头
LS age | Options | LS type |
Linke state ID | ||
Adbertising router | ||
LS sequence number | ||
Ls checksum | length |
LS age :LSA 产生后所经过的时间 LSA 会在LSDB中有老化时间 但在传输过程中不会
LS type :LSA 类型 3 4 5 7
LS sequence number 其他路由器可以根据其值来判断是否是最新的LSA
Length:LSA 的总长度 以字节为单位
LS checksum 对LSA 的报文检查出了LS age
LSA 类型
LS age | Options | 1 | |||||
Linke state ID | |||||||
Adbertising router | |||||||
LS sequence number | |||||||
Ls checksum | length | ||||||
0 | V | E | B | 0 | #links | ||
Link id | |||||||
Type | Tos | metric | |||||
TOS | 0 | TOS metric | |||||
Link ID | |||||||
Link data |
Link state id :产生此LSA 的路由器的router id
V(virtual link) 如果产生此LSA 的路由器是虚连接的端点 则 值为1
E (external): 如果产生此LSA 的路由器是ASBR 值为1
B (border):如果产生此LSA 的路由器是ABR 值为1
#links:LSA 中所描述的链路信息的数量,包括路由器处于某区域中所有链路和接口
Link ID :链路标识 具体的数值根据链路类型而定
Link data 链路数据具体的值根据类型而定
Type :链路类型 取值为1表示通过点对点链路与另一个路由器相连,取值为2 表示连接到传送网络,取值为3 表示连接到STUB 网络 取值为4 表示虚电路
#TOS 链路不同方式的数量
Metric :链路开销
Tos :服务类型
Tos metric :指定服务类型的链路开销
2. network LSA
它是由广播或NBMA 网络中的DR 发出,LSA 中记录了这一段上所以路由器的router-id
LS age | Options | 2 |
Linke state ID | ||
Adbertising router | ||
LS sequence number | ||
Ls checksum | length | |
Network mask | ||
Attached router |
Link state id :DR 的IP 地址
Network mask :BMA/NBMA 网络地址的掩码
Attached router:连接在同一网段上的所有与DR 建立邻接关系的router-id 也包括自身的router-id
3. summary LSA
network summary LSA(type3) 和ASBR summary LSA (type4)
LS age | Options | 3 or 4 | |
Linke state ID | |||
Adbertising router | |||
LS sequence number | |||
Ls checksum | length | ||
Network mask | |||
0 | metric | ||
Tos | tos metric |
Link state id :对于type3来说 它是通告到区域外的网络地址 对于type4来说 它是通告到区域外的ASBR的router id
Network mask :BMA/NBMA 网络地址的掩码
Attached router:连接在同一网段上的所有与DR 建立邻接关系的router-id 也包括自身的router-id
4. AS external LSA
由ASBR 产生 描述到AS 外部的路由信息
LS age | Options | 3 or 4 | |||
Linke state ID | |||||
Adbertising router | |||||
LS sequence number | |||||
Ls checksum | Length | ||||
Network mask | |||||
E | 0 | metric | |||
Forwarding address | |||||
External route lag | |||||
E | tos | tos metric | |||
Forwarding address | |||||
External route lag |
主要字段解释
Link state id :所要通告的其他外部AS 的目的地址,如果通告的是一条是缺省路由则LS ID和子网掩码都为0.0.0.0
Network mask :所通告的目的地址掩码
E: 外部度量值
5. NSSA external LSA
由NSSA 区域内的ASBR产生 并且在NSSA 内部传送和type5 相似
转载于:https://blog.51cto.com/12633577/1901361