路由协议分析

分析所用软件下载:Wireshark-win32-1.10.2.exe

一、分析目的

分析OSPF的包格式

 

二、分析要求

 

1. 设计应用以获取ospf报文

 

2. 分析ospf报文的格式与内容

 

3. 理解ospf协议的工作过程

 

三、分析内容

 

1.设计应用以获取ospf报文

使用Wireshark抓包工具抓取OSPF的Hello报文

计算机会周期性的自动发送hello报文,只需用Wireshark获取即可

2. 分析ospf报文的格式与内容(分析至少2个报文)

分析见第四部分

3. 理解ospf协议的工作过程

四、分析结果及总结

抓取到的OSPF Hello报文:

030100240101011a0000001ac9f900000000098c01000013000a00280101011a00000000

报文分析:

公共首部OSPF Header

版本:03

OSPF Version: 3

 

类型:01

Message Type: Hello Packet (1)

 

报文长度:00 24

Packet Length: 36

 

路由器标识:01 01 01 1a

Source OSPF Router: 1.1.1.26 (1.1.1.26)

 

区域标识:00 00 00 1a

Area ID: 0.0.0.26

 

校验和:c9 f9

Packet Checksum: 0xc9f9 [correct]

 

实例标志号:00

Instance ID: 0 (IPv6 unicast AF)

 

Hello报文 OSPF Hello Packet

接口标志符:00 00 09 8c

Interface ID: 2444

 

路由器优先级:01

Router Priority: 1

 

选项:00 00 13

Options: 0x000013 (R, E, V6)

 

Hello间隔:00 0a

Hello Interval: 10 seconds

 

路由器死亡间隔:00 28

Router Dead Interval: 40 seconds

 

指定路由器:01 01 01 1a

Designated Router: 1.1.1.26

 

后备指定路由器:00 00 00 00

Backup Designated Router: 0.0.0.0

OSPF协议的工作过程为:

(1) OSPF路由器接口up,发送Hello包,(NBMA模式时将进入Attempt状态)。

(2) OSPF路由器接口收到Hello包,检查Hello中携带的参数,如果匹配,进入Init状态;并将该Hello包的发送者的Router ID,添加到Hello包(自己将要从该接口发送出去的Hello包)的邻居列表中。

(3) OSPF路由器接口收到邻居列表中含有自己Router ID的Hello包,进入Two-way状态,形成OSPF邻居关系,并把该路由器的Router ID添加到自己的OSPF邻居表中。

(4) 在进入Two-way状态后,广播、非广播网络类型的链路,在DR选举等待时间内进行DR选举。点对点没有这个过程。

(5) 在DR选举完成或跳过DR选举后,建立OSPF邻接关系,进入exstart(准启动)状态;并通过交换DBD交换主从路由器,由主路由器定义DBD序列号,Router ID大的为主路由器。目的是为了解决DBD自身的可靠性。

(6) 主从路由器选举完成后,进入Exchange(交换)状态,通过交换携带lsa头部信息的DBD包描述各自的LSDB。

(7) 进入Loading状态,对链路状态数据库和收到的DBD的LSA头部进行比较,发现自己数据库中没有的LSA就发送LSR,向邻居请求该LSA;邻居收到LSR后,回应LSU;收到邻居发来的LSU,存储这些LSA到自己的链路状态数据库,并发送LSAck确认。

(8) LSA交换完成后,进入FULL状态,同一个区域内所有OSPF路由器都拥有相同链路状态数据库。

(9) 定期发送Hello包,维护邻居关系。

 

分析过程中发现由于器材关系只能获取到OSPF hello报文,且该hello报文为ipv6的OSPF报文(即OSPF v3)相对于书上的OSPF v2报文有一些区别:如PSPF v3报文头中不包含认证信息、数据包结构不同等,分析其报文格式需要注意。

原文地址:https://www.cnblogs.com/leftshine/p/5698911.html