作者:郭锐
一、实验环境介绍
以下是本次实验环境的拓扑,通过GNS3模拟器,运行真实的cisco IOS镜像,分别开启了4台Cisco 3745路由器。
实验环境是配置了OSPF网络,分别创建了area 0、1、2,R2和R3是属于area 0,在R2和R3之间的链路串接了一台HUB,HUB的工作原理是以广播的信息交换数据包的。在HUB上接入一台虚拟电脑,关联到笔记本电脑的一个虚拟网卡上。在虚拟网卡上运行wireshark抓包。因此,R2和R3在启动后所有的数据包都会被wireshark抓取下来。
二、OSPF协议数据包类型讲解
三、OSPF协议中的LSA类型讲解
四、OSPF邻居的建立过程讲解
1、路由器A的ospf进程启动后,第一个数据包就是发起hello包,寻找ospf邻居,以组播的方式在区域内发送。该数据包的IP包头中的ttl值设置为1,则表示,只能发送给直连的路由器。同时路由器B也发送组播的hello包,路由器A收到路由器B的hello后,会把路由器B的路由ID放入自己的hello包中,再次的组播出去。
2、当B路由器收到A路由器的hello包后,会向路由器A回复一个单播数据包,并携带上路由器A的路由id,此时建立邻居进入two-way状态
3、当路由器A和B进入two-way状态后,开始进行DBD的交互过程,进行DR(指定路由)和BDR(备份指定路由)的选举过程。路由器发送A第一个DBD包,都是以自己为主路由的方式宣告。同时,路由器B也会向路由器A发送同样的DBD数据包。
4、当路由器A和B根据自身的路由器ID和优先级进行对比分析,最终选择出DR和BDR路由器,并且以组播的方式发送到本区域内。
5、两台路由器选举完成后,双方进行链路状态数据库摘要信息的交换,两台路由器分别把链路状态数据库内的路由表摘要信息通告给对方,这个阶段不是具体路由表的交换机,只是告知对方我有什么路由表条目而已。
6、当两台路由器都收到了对方发送的链路状态数据库摘要信息后,双方都会分别回复一个DBD的确认包,在DBD确认包里并没有特殊的DBD确认标志位,只是根据DBD包的DD序号进行关联的而已。
7、当两台路由器接收到了双方的LSDB摘要信息后,发现自己的路由表里没有这个路由信息,因此,就需要发送LSR包给对方,让对方把完整的路由信息表封装到LSU包里发给对方,最后接收方回复一个LSAck确认表给对方。