我是靠谱客的博主 超帅雨,最近开发中收集的这篇文章主要介绍OSPF基本工作原理(下),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LSDB同步过程

状态含义:ExStart:邻居状态变成此状态以后,路由器开始向邻居发送DD报文Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。 在此状态下发送的DD报文不包含链路状态描述。

 Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD 报文。

Loading:在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报 文。

 Full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。

 

LSDB同步过程如下:

1) RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2并且二者已建立了邻居关系。当RTA 的邻居状态变为ExStart后,RTA会发送第一个DD报文。此报文中,DD序列号被随 机设置为X,I-bit设置为1,表示这是第一个DD报文,M-bit设置为1,表示后续还 有DD报文要发送,MS-bit设置为1,表示RTA宣告自己为Master。

2)当RTB的邻居状态变为ExStart后,RTB会发送第一个DD报文。此报文中,DD序列 号被随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于RTB的Router ID较大,所以RTB将成为真正的Master。收到此报文后,RTA会产生一个 Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。

3)当RTA的邻居状态变为Exchange后,RTA会发送一个新的DD报文,此报文中包含了 LSDB的摘要信息,序列号设置为RTB在步骤2中使用的序列号Y,I-bit=0,表示这不 是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MSbit=0,表示RTA宣告自己为Slave。收到此报文后,RTB会产生一个NegotiationDone事件,并将邻居状态从ExStart变为Exchange。

4) 当RTB的邻居状态变为Exchange后,RTB会发送一个新的DD报文,此报文包含了 LSDB的摘要信息,DD序列号设置为Y+1, MS-bit=1,表示RTB宣告自己为Master。

5) 虽然RTA不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,RTA需要 对Master发送的每一个DD报文进行确认。所以,RTA向RTB发送一个新的DD报文, 序列号为Y+1,该报文内容为空。发送完此报文后,RTA产生一个Exchange-Done 事件,将邻居状态变为Loading。RTB收到此报文后,会将邻居状态变为Full(假设 RTB的LSDB是最新最全的,不需要向RTA请求更新)。

 

1)RTA开始向RTB发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并 且在本地LSDB中没有的链路状态信息。 2) RTB向RTA发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。 RTA在完成LSU报文的接收之后,会将邻居状态从Loading变为Full。

3)RTA向RTB发送LSAck报文,作为对LSU报文的确认。RTB收到LSAck报文后,双方 便建立起了完全的邻接关系。

4)从建立邻居关系到同步LSDB的过程较为复杂,错误的配置或设备链路故障都会导致无 法完成LSDB同步。为了快速排障,最关键的是要理解不同状态之间切换的触发原因。

 

  • 这是形成邻居关系的过程和相关邻居状态的变换过程。
  • Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上, 此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通 常和Router DeadInterval间隔相同。
  • Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已 经周期性的向邻居发送报文,发送间隔为HelloInterval。如果Router DeadInterval 间隔内未收到邻居的Hello报文,则转为Down状态。
  • Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的 Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居 要被包含在自己所发送的Hello报文的邻居列表中。
  • 2-Way Received:此事件表示路由器发现与邻居的双向通信已经开始(发现自己 在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要 和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居 建立邻接关系则进入2-Way。
  • 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是 建立邻接关系以前的最高级状态。
  • 1-Way Received:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列 表中,通常是由于对端邻居重启造成的。
  • ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开 始向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态 下决定的。在此状态下发送的DD报文不包含链路状态描述。
  • Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地 LSDB的内容。
  • Loading:相互发送LS Request报文请求LSA,发送LS Update通告LSA。
  • Full:两台路由器的LSDB已经同步。

 

  • LSA(Link State Advertisement)是路由器之间链路状态信息的载体,LSA是LSDB的最小组成单位,也就是说LSDB是由一条条LSA构成的
  • 所有的LSA都拥有相同的头部,关键字段的含义如下:

      1)LS age:此字段表示LSA已经生存的时间,单位是秒。

      2)LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种

      3)Link State ID:此字段是该LSA所描述的那部分链路的标识,例如Router ID等。

      4)Advertising Router:此字段是产生此LSA的路由器的Router ID。

      5)LS sequence number:此字段用于检测旧的和重复的LSA

  •  LS type,Link State ID和Advertising Router的组合共同标识一条LSA。
  • LSDB中除了自己生成的LSA,另一部分是从邻居路由器接收的。邻居路由器之间相互更 新LSA必然需要一个“通道”。

 

DR与BDR的选举及作用

  • 问题引出,在运行OSPF的MA网络包括广播型和NBMA网络,会存在两个问题:

1)在一个有n个路由器的网络,会形成(n×(n−1))/2 个邻居关系。

2)邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份,如RTA向其邻居RTB、RTC、 RTD分别发送一份自己的LSA,RTB与RTC、RTC与RTD、RTB与RTD之间也会形成邻 居关系,也会发送RTA的LSA。

  • 这样的工作效率显然是很低的,消耗资源的。最为高级的路由协议,OSPF是怎样解决 这些问题的呢?

 

单点故障(single point of failure,缩写SPOF)是指系统中一点失效,就会让整个系统无法运作的部件,换句话说,单点故障即会整体故障。

 

  • DR(Designated Router)即指定路由器,其负责在MA网络建立和维护邻接关系并负责 LSA的同步。
  • DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换 链路状态信息。这样就大大减少了MA网络中的邻接关系数量及交换链路状态信息消耗 的资源。
  •  DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无 法同步。此时就需要重新选举DR,再与非DR路由器建立邻接关系,完成LSA的同步。为 了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作。
  • 伪节点是一个虚拟设备节点,其功能需要某台路由器来承载,下面将介绍DR/BDR的选 举规则。

1、只有在广播或NBMA类型接口时才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
2、DR是指某个网段的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
3、若DR、BDR已经选择完毕,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
4、DR并不一定就是DR优先级最大的路由器;同理,BDR也并不一定就是DR优先级第二大的路由器。

 

邻居(Neighbor)关系与邻接(Adjacency)关系是两个不同的概念。OSPF路由器之间 建立邻居关系后,进行LSDB同步,最终形成邻接关系。

 在P2P网络及P2MP网络上,具有邻居关系的路由器之间会进一步建立邻接关系。

在广播型网络及NBMA网络上,非DR/BDR路由器之间只能建立邻居关系,不能建立邻接 关系,非DR/BDR路由器与DR/BDR路由器之间会建立邻接关系,DR与BDR之间也会建立 邻接关系。

邻接关系建立完成,意味着LSDB已经完成同步,接下来OSPF路由器将基于LSDB使用SPF 算法计算路由。

 

 

 

 

最后

以上就是超帅雨为你收集整理的OSPF基本工作原理(下)的全部内容,希望文章能够帮你解决OSPF基本工作原理(下)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部