OSPF理论基础篇-02

OSPF五种类型报文


OSPF有五种类型的协议报文:

①.Hello报文:周期性发送,用来发现和维持OSPF邻居关系,以及进行DR/BDR的选举。

PS:可将Hello理解为进餐厅服务员的欢迎光临和下次再来。

②.DD(Database Description,数据库描述)报文:描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。

PS:可将DD理解为进入餐厅后查看的菜单

③.LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。

PS:在看完餐单以后看自己有没有没吃过的菜,若没吃过则点这道菜

④.LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。

PS:服务员根据点的菜单送上的菜品

⑤.LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。

PS:对自己点的菜品进行确认

1、OSPF报文头格式

Version: 8位,OSPF 的版本号。2代表OSPFv2,3代表OSPFv3。

Type:8位,OSPF报文的类型。

1为Hello;2为DD;3为LSR;4为LSU;5为LSAck。

Packet length: 16位,OSPF报文的总长度。

Router ID:32位,发送该报文的路由器标识。

Area ID: 32位,发送该报文的路由器所属区域。

Checksum:16位,包含除了认证字段的整个报文的校验和。

AuType: 16位,验证类型如下:
0:不验证;         1:简单明文认证;         2:MD5认证。

Authentication: 64位,其数值根据验证类型而定:

0:不含验证信息;        1:此字段为明文密码;
2:此字段包括Key ID、MD5或 SHA256的验证数据长度和序列号的信息。

查看实际报文交互情况

可以发现该数据是OSPFv2的hello报文,包长度是44Byte,原路由是1.1.1.1,区域0的交互

 

2、Hello报文格式

Network Mask:32位,发送Hello报文的接口所在网络的掩码。

Hello Interval:16位,发送Hello报文的时间间隔。

Options:8位,可选项,含义同OSPF 头中一致。

Rtr Pri:8位,DR优先级,默认为1,如果为0,则路由器被视为放弃参与DR或BDR的选举。

RouterDeadInterval:32位,邻居失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效,并从邻居表里移除该邻居,从路由表里撤销指向其的路由。

Designated Router:32位,本网段上DR路由器的接口IP地址。

Backup DesignatedRouter:32位,本网段上BDR路由器的接口IP地址。

Neighbor:32位,邻居列表,用 Router ID标识。记录当前路由器已知的链路上所有邻居的RID。

查看Hello报文

可以看出该消息是刚建立OSPF时候抓获的,因为DR和BDR还没有选举出来。

在此需要注意有点,在广播和点到点网络中Hello报文是10s/每次,而在NBMA和P2MP网络中,Hello报文是10s/每次.

 

 3、DD报文格式

Interface MTU:16位,表示在不分片的情况下,此接口最大可发出的IP报文长度。华为默认不填充接口实际MTU值,所以值为0。

Options:含义同OSPF头中一致。

I (Initialization)位:1位,当发送连续多个DD报文时,如果这是第一个 DD报文,则置为1,代表同步过程开始。否则置为0。

M (More)位:1位,当发送连续多个DD报文时,如果后续的DD报文中不再有LSA头,则置为0。

M/S (Master/Slave)位:1位,当两台OSPF 路由器交换 DD报文时,首先需要确定双方的主从关系,优先级相同的情况下,RouterID大的一方会成为Master,当值为1时表示发送方为 Master。

DD Sequence Number:32位,DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。

LSA Headers:本LSDB 中 LSA的头。

查看DD报文

可以看出这是一个空的DD报文,该报文中这是第一个DD报文,后续还会有LSA头,DD序列号为245。

 

4、LSR报文

LS type:32位,LSA 的类型号。

Link State ID:32位,根据LSA中的LS Type和 LSA Description在路由域中描述一个LSA。

Advertising Router:32位,产生此LSA的路由器的Router ID。

查看LSR报文

可以看出这是所有OSPF Route都发出的Type 1 的LSA报文,第一个LSA是来自10.10.12.2的,而第二个是来自1.1.1.1的LSA信息。

 

5、LSU报文

Number of LSAs:32位,表示此Update中所包含的LSA的数量。

LSAs:多个完整LSA的内容。

查看LSU报文

 

6、LSAck报文

LSA Headers:LSA头列表,OSPF通过LSA头对收到的完整LSA做确认。一份LSAck可以对多份LSU中的LSA 做确认。 

查看确认

 

OSPF邻居和领接关系

一、邻居关系建立过程

先查看一段在华为路由器上配置完成OSPF后的syslog

 三步握手

 

Down状态:邻居的初始化,此时双方刚发送Hello报文,两方还互不知道对方。

Init状态:R1收到邻居的Hello报文时,若该Hello报文中的Active Neighbor字域没有包含当前路由器的Router ID 1.1.1.1,则R1中邻居的状态为 Init.

Two-Way状态:R1再次收到Hello报文时,此次Hello报文中的Active Neighbor字域中有自己的Router ID 1.1.1.1,这时路由器进入Two-Way状态。

PS:只有A及B的邻居都进入Two-Way 状态,才代表彼此间双向邻居建立起来。

二、领接关系建立过程

先查看一段在华为路由器上配置完成OSPF后的syslog

 

ExStart (信息交换初始)状态:该状态下,本地路由器和邻居路由器间互传空DD报文。

①.确定主/从关系        ②.确定DD的初始序列号        ③.比较接口MTU(可选)

在ExStart 状态下,路由器互相发送的空DD报文中置Ⅰ(Initialize),M (More)及MS (Master/Slave)位。

 以下是一个空的DD报文,当本地Route和邻居Route互传空DD时,就是Exstart状态

Exchange(信息交换)状态:选举出 Master后,Slave路由器向Master回送 DD报文,其中包含LSDB中的LSA头(LSA summary)列表,并使用Master 的序列号。Master也把自己的LSA头列表用DD发送,序列号增加1,同时,Slave收到后,会回应相同序列号的DD报文。

任何一侧只要还有未传递完的LSA头,Master就一定要产生DD报文并由 Slave回应。Exchange阶段通过这种可靠的DD交互,完成快速交换LSA 头。

查看报文可以发现,Master已选出,此状态即为Exchange状态 

 

Loading(信息加载)状态:该状态下,本地路由器将会向它的邻居路由器发送链路状态请求数据包LSReq,以请求本地LSDB中没有的LSA。收到LSReq的报文,路由器会用包含完整的被请求的LSA的LSU 做回应。请求方收到LSU后,如果无误,则LSAck确认该LSU。一份LSAck可同时为多份LSUpdate做确认。

Full(完全邻接)状态:在FULL状态下,邻居路由器之间已完成同步过程,建立起完全邻接关系。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值