路由协议分析
分析所用软件下载: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报文头中不包含认证信息、数据包结构不同等,分析其报文格式需要注意。