前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数通笔记 | ospf邻接关系建立过程,看不懂代表你没认真学过ospf

数通笔记 | ospf邻接关系建立过程,看不懂代表你没认真学过ospf

作者头像
网络技术联盟站
发布2019-12-24 12:48:46
1.4K0
发布2019-12-24 12:48:46
举报
首先我们应该知道的是,邻居关系是指什么,邻居关系是指OSPF达到了2 way状态才叫邻居关系的建立,而邻接关系则是达到full状态。 那么OSPF 有什么状态呢?
  • Down
  • Init
  • 2way
  • Extart
  • Exchange
  • Loading
  • Established (也就是full状态)

确切来说是有八种状态的,另一种是Attempt状态,这个只在NBMA(非广播多路网络)中才会产生,这里就不加进去。

假设上面两台路由器都配置了OSPF路由协议,那么他们是怎么建立到邻接关系的呢,现在我们开始讲解: 这里需要大家提前看看OSPF的五种报文(hello报文,DD报文,LSR报文,LSU报文,LSACK报文),包括每个报文包含什么字段,理解起来才更容易点!

邻居关系的建立过程

  1. 首先,路由器会向目的地址为组播地址224.0.0.5,并且和他处于相同网段的设备发送hello报文。(报文简单记住三要素:router id,认证字段,areaID,这三个一定要记住,另外有一个叫neighborhood字段,用来存放邻居的ID,此时的routerID就是路由器自己的ID,neighborhood ID则是为空的)
  2. 假设现在R1发送了hello报文给了R2,R2在收到hello报文后,会将收到R1报文的这个接口状态设置为init状态,并将R1发送过来的hello报文中的router ID 1.1.1.1 放到自己路由器的邻居表中,并发送一个包含自己router ID,neighborhood ID为1.1.1.1的报文发送给R1(以组播方式发送,地址224.0.0.5)
  3. R1收到R2发送过来的hello报文后,查看报文中的neighborhood ID字段是自己,就将自己收到R2报文的这个接口状态设置为2 way状态,并再以同样的方式,目的地址为224.0.0.5,hello 报文中的neighborhood ID 为2.2.2.2 ,并且router ID为自己的报文发送给R2
  4. R2收到报文后,检测neighborhood ID 字段是自己,就将接收的端口设置为2way状态 这样,R1 R2两台路由器的端口都建立起了双向的2way状态,邻居关系才建立起来。

邻接关系的建立过程

两台路由器建立起了邻居关系之后,才会进行数据库的同步过程。邻居关系才得以建立。在建立起了邻居关系之后,路由器之间就开启了数据库的同步过程。数据库的同步过程是通过LSA(链路状态)来实现的。这里需要再一下认识这五种报文

  • hello报文,(前面用到,这里不用到)
  • DD报文,(用来描述数据库,包括数据库的LSA头部)
  • LSR报文,(lsa请求报文)
  • LSU报文,(lsa的更新报文,存放真正的数据信息)
  • LSACK报文(lsa确认报文)
  1. 首先,路由器之间会发送DD报文,但是前两份报文是空的,空的是要干嘛呢?是为了要在这两个空报文中选举出master路由器和slave路由器,并且这时候进行MTU确认,确认两台路由器的MTU是否一样,只有MTU一样才能进行下面的步骤,否则无法进行,但是这里要提的是,华为的设备是不用比对MTU的值就可以建立的。 (这里选举出的master我们把他理解为老板,slave理解为小弟)。
  2. 选举出了老板和小弟之后,路由器就会继续发送DD报文给对方,那么,哪个先发呢?就是小弟R1先发送,发送的内容是自己路由器数据的头,也就是LSA头部信息,(并不是真正的链路信息),另外还有一个序列号200(假设为200)发送给了老板R2。
  3. 老板R2收到了DD报文后,会拿了里面的LSA头部信息,并返回一个序列号为201的、有自己路由器链路信息报头的LSA给小弟,这里要注意的是,master收到slave发来的DD报文后,返回给小弟的肯定是在小弟的序列号上加1,也一定会回复小弟的。这里的状态为EXtart状态
  4. 就这样,两台路由器彼此交换了LAS头部信息后,才将进入到下一同步过程,
  5. 假设小弟R1收到了老板发来的DD报文后,发现自己的LSA头部信息已经都发给了老板R2,这个时候就开始发送起LSR报文,也就是请求报文,向老板R2索取真正的链路数据。(这里需要注意的是,序列号是不断累加上去的)这里的状态为loading状态
  6. 老板R2收到请求之后,则会回复LSU报文给小弟R1,同样这里的序列号加1,这里的状态为loading状态
  7. 小弟R1收到LSU报文后,肯定会拿了数据链路信息放到自己的lsdb数据库中,并回复老板R2的LSACK报文。这里的状态为loading状态
  8. 就这样,老板和小弟就这样完成数据库的同步关系,邻居关系就成为了full状态。邻接关系就这样建立起来。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络技术联盟站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 邻居关系的建立过程
  • 邻接关系的建立过程
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档