拓扑如下:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/dc3c5351847f805bec7336cc357daac5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
抓包:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/643f1ff874ea15f396fadc90cc8b87f5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
第一份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/d62addf5051bd8b78bad1ec17d1ccea9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1率先发送Hello报文,未携带R2的RID
第二份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/de3d03241979d29bc1c983dd30ef501d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2随后发送Hello报文,未携带R1的RID(P-2-P网络Network Mask字段可以不一致)
第三份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/952040e6009f1dd9ff1cea22161bfeb4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1收到R2发送的Hello报文(第二份),R1进入init状态,同时将R2的Router ID添加进Avtive Neighbor字段,发送Hello报文
- 通过一个接口收到Hello报文,但这份Hello报文中不存在Avtive Neighbor字段或是Avtive Neighbor字段没有包含自身Router ID,代表邻居还没有收到自身发送的Hello报文,此时进入单向init状态
第四份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/09cb85fefba0f83e8580d8847dc7947d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2收到R1发送的Hello报文(第三份)Avtive Neighbor字段描述了R2自身的Router ID
R2进入two-way状态,由于接口类型为P-2-P,无需等待wait时间,R2直接进入Exstart状态,发送First DD报文,同时随机生成一个序列号304
- First DBD不携带LSA头部信息
-
第五份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/2f2c9469e2b73cac0942ab0cfea14801.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1收到R2发送的First DD报文(第四份),R1进入Exstart状态,R1发送First DD报文,同时随机生成一个序列号305(该序列号并非304+1,乃随机生成的数值,恰巧接近304)
第六份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/a02219202329d9580058f766451f01af.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1 收到R2发送的First DD报文(第四份),比较双方RID(越大越优先),R1意识到自己是Slave的路由器,R1进入Exchange状态,发送“认怂”DD报文,Slave路由器的序列号采用Mater路由器(R2)的序列号数值304,这份DD报文中包含R1的LSA摘要信息
- Exchange状态,路由器通过DD报文交互它们的链路状态数据库摘要信息
第七份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/f1ae46753fe03fa8fe452f2d852af453.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2收到R1发送的“认怂”DD报文,通过查看LSA摘要信息,发现自身缺少 LS type 1 Link ID 1.1.1.1 ADV router 1.1.1.1的LSA R2进入loading状态,发送LSR请求自己缺少的LSA LSR:只包含LS type 、 Link ID 、 ADV router (LSA三元组) - loading状态,路由器通过LSR报文请求完整的LSA信息
第八份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/ab9b52ab9667c1e544e7a669115781ac.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2发送DD报文,这份DD报文中包含R2的LSA摘要信息
- 序列号305(Master路由器使用Slave路由器发送DD报文序列号+1数值)OSPF隐式确认
第九份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/7494d8c951763c48eb8be0d4af852935.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1收到R2的LSR,R1进入loading状态,应答LSU,LSU中包含完整的LSA信息
(包括LSA头部和具体的链路状态信息)
第十份报文:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/d749403b3a0f676004df7cfed6f6fc38.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1收到R2的DD报文,通过查看LSA摘要信息,发现自身缺少
LS type 1 Link ID 2.2.2.2 ADV router 2.2.2.2的LSA
R1发送LSR请求自己缺少的LSA
LSR:只包含LS type 、 Link ID 、 ADV router (LSA三元组)
第十一份:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/e715f4919b3cc5639b3d28115d0dfc6e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
Slave路由器R1隐式确认Master路由器R2发送的最后一份DD报文(第八份),R1这份DD报文不包含LSA头部信息,序列号305
(Slave路由器使用Master路由器发送DD报文的序列号数值)
第十二份:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/9468e176ee6f4ca1c7a3495aaa8e9c68.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2收到R1的LSR,向R1发送LSU,LSU中包含完整的LSA信息
(包括LSA头部和具体的链路状态信息)
- 将loopback接口宣告进OSPF时,不论loopback接口真实掩码是多少(此例中是/24),都是以/32主机路由的形式通告,目的是为了解决loopback网段的路由黑洞 但在MPLS环境中,本地关于loopback的路由是/24,把loopback宣告进OSPF后,邻居学到是/32路由,LDP无法进行标签交换,因此建议loopback接口直接使用/32的掩码
第十三份:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/585e381f115a9458f7b97ea108ee32d3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2发送LSU,包含已知的所有LSA
第十四份:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/103e84d89d91d9eec70a851c00d2f8e0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1发送LSU,包含已知的所有LSA
第十五份:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/5c19e4d697a741a3a2dd243594d681bd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R1通过LSAck应答R2的LSU(OSPF显式确认)
第十六份:
![OSPF邻接关系建立](http://i2.51cto.com/images/blog/201801/23/7e0cdb43d07ccb5bd6541d80153f682a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
R2通过LSAck应答R1的LSU(OSPF显式确认)
第十七份报文 + :
OSPF完成收敛,R1和R2拥有一份相同的LSDB
R1和R2周期性发送Hello报文维持邻接关系
BMA和P-2-P: 默认Hello周期10秒,Dead时间40秒,Wait时间40秒
NBMA和P-2-MP:默认Hello周期30秒,Dead时间120秒,Wait时间120秒
OSPF显式确认:收到邻居发送的报文,使用独立的其他报文给它做确认
例如发送LSR,回复LSU
例如发送LSU,回复LSAck
OSPF隐式确认:使用相同的报文既做应答也做确认
例如Hello报文,DD报文
Hello报文使用Avtive Neighbor字段来做隐式确认
(收到邻居的Hello即在Avtive Neighbor字段添加邻居Router ID)
DD报文包含序列号,Slave路由器使用Master路由器的序列号
Master路由器使用Slave路由器的序列号+1
除First DD和Slave路由器应答Master路由器的最后一份DD报文外(DB description :0001)
其余DD报文还包含LSA摘要信息,既做应答又做确认,不用使用独立报文
本文转自YANGCHAO1987 51CTO博客,原文链接:http://blog.51cto.com/11555417/2064185,如需转载请自行联系原作者