OSPF报文格式(OSPF的报文类型)
报文格式
| Eth | IP | OSPF Header | OSPF Payload |

OSPF Header
封装在 IP 中,Protocol=89
Version number:OSPF v2 for IPv4:2;OSPF v3 for IPv6;
Router ID:表示生成此报文的路由器的Router ID。
Area ID:表示此报文需要被通告到的区域。
Type:类型字段。Data 部分的类型,即不同的 OSPF 报文;
Packet length:表示整个OSPF报文的长度,单位是字节。
Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
OSPF Payload: Hello
报文的主要作用:
1)邻居发现:自动发现邻居路由器;
2)邻居建立:完成 Hello 报文中的参数协商,建立邻居关系;
3)邻居保持:通过周期性发送和接收,检测邻居运行状态;
在以太网链路上,路由器通常以组播形式来发送 Hello 报文:
1)224.0.0.5的组播地址为OSPF设备的预留IP组播地址。
2)224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
3)对于不支持组播的链路,OSPF 支持采用单播的方式发送 Hello 报文。

OSPF_Header.Type = 1
Open Shortest Path First
OSPF Header
OSPF Hello Packet
Network Mask: 255.255.255.0
Hello Interval [sec]: 10
Options: 0x02, (E) External Routing
0... .... = DN: Not set
.0.. .... = O: Not set
..0. .... = (DC) Demand Circuits: Not supported
...0 .... = (L) LLS Data block: Not Present
.... 0... = (N) NSSA: Not supported
.... .0.. = (MC) Multicast: Not capable
.... ..1. = (E) External Routing: Capable
.... ...0 = (MT) Multi-Topology Routing: No
Router Priority: 1
Router Dead Interval [sec]: 40
Designated Router: 10.0.12.2
Backup Designated Router: 10.0.12.3
Active Neighbor: 1.1.1.1
Active Neighbor: 3.3.3.3
Active Neighbor: 4.4.4.4
Network Mask:发送 Hello 报文的接口的网络掩码。
Hello Interval:发送 Hello 报文的时间间隔;在以太网中,为 10s 时间;
Options:
1)E:是否支持外部路由;两端需要同时支持才能建立邻居关系;
2)MC:是否支持转发组播数据包;
3)N/P:是否为 NSSA 区域;
Router Priority:default=1,用于选举 DR(指定路由器),BDR(备份指定路由器)
Router Dead Interval:通常为 Hello Interval * 4 时间;如果该时间未收到 Hello 则认为邻居关系解除,关系进入 Down 状态;
Designated Router:default=0,经过优先级选举之后,才会有值,为接口地址;
Backup Designated Router:default=0,经过优先级选举之后,才会有值,为接口地址;
Active Neighbor:邻居,以 Router ID 标识;
OSPF Payload: Database Description, DD
用途:OSPF_Header.Type = 2,描述本地 LSDB 摘要信息,其他设备将使用该摘要信息来选择要同步的数据(为了避免全量同步);
在 ExStart 中,主从协商的 DD 报文(First DD):
Open Shortest Path First OSPF Header OSPF DB Description Interface MTU: 0 Options: 0x02, (E) External Routing 0... .... = DN: Not set .0.. .... = O: Not set ..0. .... = (DC) Demand Circuits: Not supported ...0 .... = (L) LLS Data block: Not Present .... 0... = (N) NSSA: Not supported .... .0.. = (MC) Multicast: Not capable .... ..1. = (E) External Routing: Capable .... ...0 = (MT) Multi-Topology Routing: No DB Description: 0x07, (I) Init, (M) More, (MS) Master .... 0... = (R) OOBResync: Not set .... .1.. = (I) Init: Set .... ..1. = (M) More: Set .... ...1 = (MS) Master: Yes DD Sequence: 52
在 Exchange 中,包含数据摘要的 DD 报文:
Open Shortest Path First OSPF Header OSPF DB Description Interface MTU: 0 Options: 0x02, (E) External Routing 0... .... = DN: Not set .0.. .... = O: Not set ..0. .... = (DC) Demand Circuits: Not supported ...0 .... = (L) LLS Data block: Not Present .... 0... = (N) NSSA: Not supported .... .0.. = (MC) Multicast: Not capable .... ..1. = (E) External Routing: Capable .... ...0 = (MT) Multi-Topology Routing: No DB Description: 0x00 .... 0... = (R) OOBResync: Not set .... .0.. = (I) Init: Not set .... ..0. = (M) More: Not set .... ...0 = (MS) Master: No DD Sequence: 52 LSA-type 1 (Router-LSA), len 72 LSA-type 1 (Router-LSA), len 72
I(Init):当发送连续多个 DD 报文时,如果是首个 DD 报文,则置为 1,否则置为 0;
M (More):当发送连续多个 DD 报文时,如果这是最后一个 DD 报文,则置为 0。否则置为 1,表示后面还有其他的DD报文。
MS (Master/Slave):当两台 OSPF 路由器交换DD报文时,首先需要确定双方的主从关系,Router ID 大,为Master。当值为 1 时,表示发送方为Master。
DD Sequence:DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文中包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。在缺省情况下,华为设备未开启MTU检查。
Optinons:字段同Hello报文。
OSPF Payload: Link State Request, LSR
解释:OSPF_Header.Type = 3,向对方请求所需要的 LSA 数据(只有当 DD 报文交换成功后,才会向双方发送 LSR 报文)
OSPF Payload: Link State Update, LSU
解释说明
OSPF_Header.Type = 4;是对 LSR 的响应,其包含对方 LSR 要求的 LSA 数据。
报文示例
Internet Protocol Version 4, Src: 10.0.12.1, Dst: 224.0.0.6
Open Shortest Path First
OSPF Header
LS Update Packet
Number of LSAs: 2
LSA-type 1 (Router-LSA), len 36
LSA-type 2 (Network-LSA), len 36
.000 0000 0000 0001 = LS Age (seconds): 1
0... .... .... .... = Do Not Age Flag: 0
Options: 0x02, (E) External Routing
0... .... = DN: Not set
.0.. .... = O: Not set
..0. .... = (DC) Demand Circuits: Not supported
...0 .... = (L) LLS Data block: Not Present
.... 0... = (N) NSSA: Not supported
.... .0.. = (MC) Multicast: Not capable
.... ..1. = (E) External Routing: Capable
.... ...0 = (MT) Multi-Topology Routing: No
LS Type: Network-LSA (2)
Link State ID: 10.0.12.3
Advertising Router: 3.3.3.3
Sequence Number: 0x80000002
Checksum: 0xa966
Length: 36
Netmask: 255.255.255.0
Attached Router: 3.3.3.3
Attached Router: 1.1.1.1
Attached Router: 4.4.4.4
结构概览

Number of LSAs
Number of LSAs:LSA 的数量;
图示未展示出 Number of LSAs 字段,然后才是多个 LSA Header + Payload 结构。
请结合报文示例部分显示的报文结构进行查看。
LSA Header
LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒。当 LSA 被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA 不再用于路由计算(当然,路由器默认每 1800s 会重发该 LSA 报文,以刷新数据)。
Options(可选项):每个 bit 都对应 OSPF 所支持的某种特性。
LS Type(链路状态类型):指示该 LSA 的类型,即决定 Payload 部分的数据内容。对于不同的 LSA 类型,具有不同的作用。
Link State ID(链路状态标识):不同的 LSA,对该字段的定义不同。
Advertising Router(通告路由器):产生该LSA的路由器的Router ID。
LS Sequence Number(链路状态序列号):当 LSA 每次有新的实例产生时,序列号就会增加。该字段用于判断LSA的新旧或是否存在重复的实例。序列号范围是0x80000001-0x7FFFFFFF,路由器始发一个LSA,序列号为0x80000001,之后每次更新序列号加1,当LSA达到最大序列号时,重新产生该LSA,并且把序列号设置为0x80000001。
LS Checksum(校验和):用于保证数据的完整性和准确性。
Length(长度):== LSA Header + Payload
LSA Payload
参考 LSA Payload 笔记,获取 LSA 相关的内容;
OSPF Payload: Link State Acknowledgment, LSAck
解释:OSPF_Header.Type = 5,确认已经收到对方的 LSA 报文。
The post 「OSPF」- 报文格式 appeared first on K4NZ BLOG.
随机文章
SEO小小课堂网站长导航
搜素引擎算法
网站内容优化
SEO小小课堂网
SEO教程
站长导航
搜素引擎算法
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/161539.html

微信扫一扫
支付宝扫一扫