从第7个报文开始,DR/BDR将要和新加入网络中的路由器D交换数据库描述报文DBD了。
路由器D与A、B会进入Exstart状态并开始进行Master和Slave的协商,协商Master与Slave的目的是为了决定在后续的LSA交互中,谁来决定数据库描述报文DBD的序列号(Sequence Number),而Router ID大的那个OSPF路由器的接口将会成为Master,由它来决定DBD的Sequence Number,对端则成为Slave。这里要注意Master不是DR,要与DR的概念进行区分。这个协商过程是由交互DBD包实现的,使用的是空的DBD包,也就是不包含任何LSA头部的DBD包。这个包当中,有3个位非常关键:I、M、MS。I位(或叫做init位)置为1表示这是第一个DBD报文。MS位如果置1,表示DBD报文始发路由器认为自己的Master,起初每个路由器都这么认为,在一系列DBD交换后,就会得到选举结果,被选举为Slave的OSPF接口会将发送的DBD包MS位置为0。M位表示More,如果一个OSPF接口发送的DBD包M位置1,在表示这不是最后一个DBD,后续还有DBD包待发送。
图10-4中第7、10、12、14、16、19、20个数据包是路由器B(192.168.1.2)与路由器D(192.168.1.4)在协商和交换DBD过程中出现的数据包,可以看出使用的都是单播,即只有对方IP地址的设备能够收到数据包。
图10-8是第7条报文DBD的格式。
图10-8 DBD报文的字段内容
第1个字段表示数据包所在网段的最大传输单元,以太网是1500字节。第3个字段中的I、M、MS表示路由器B认为自己是Master,这是它要发送的多个DBD中的第1个报文。第4个字段表示路由器B提议序号从169 762开始。具体每个字段的含义见表10-3。
表10-3 DBD报文各字段含义
续表(www.xing528.com)
第10个报文中DB Description字段的标志I、M、MS位为1,表示路由器D发给路由器B的DBD报文中也要求作为Master,因为OSPF 首部格式中的Router ID比路由器B的更大。路由器D使用的随机数序列号为169 751,如图10-9所示。第12个报文中DB Description字段的标志位I为0说明这不是路由器B发给路由器D的第1个DBD了,它后面携带了4条LSA Header。标志位M为1表示后面还有DBD需要发送。标志位MS为0表示路由器B不是Master。序列号也为169 751,表示确认,如图10-10所示。
图10-9 第10个报文的字段内容
图10-10 第12个报文的字段内容
第12个报文中包含4条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。LSA报文包含在LSU报文中,在介绍LSU报文时将会介绍LSA Header报文格式。
后面的第14、16、19和20个报文中字段的分析与前面类似。第8、9个报文是192.168.1.3和192.168.1.2周期性发出的Hello 报文。第11、13个报文是ARP请求与响应报文。第15、17、18、22、23、27、29个报文是路由器D与路由器C(DR)之间交互DBD的过程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。