BFD原理.ppt_第1页
BFD原理.ppt_第2页
BFD原理.ppt_第3页
BFD原理.ppt_第4页
BFD原理.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、BFD原理,介绍,网络设备一个越来越重要的特征是,要求对相邻系统之间通信故障进行快速检测,这样可以更快的建立起替代通道。当前,在特定的环境下,当数据链路硬件上出现故障可以相当快的检测到。而在某些媒介却不能检测通道上的一些特定故障,例如,接口或者转发引擎部件的故障。 在路由协议网络中,当故障不能通过硬件信号检测出来时,网络采用相对较慢“Hello”机制。在目前的协议中,采用“Hello”机制检测到故障的时间要超过1秒钟,这对某些应用来说时间太长了,当数据速率到吉比特时,这么长时间代表了大量的数据丢失。而且,在没有使用路由协议的地方,“Hello”机制是没有用处的,并且,对两个路由协议引擎之间通道

2、故障的检测的语义也是稍微有点差别的。 BFD的目标是对相邻转发引擎之间通道故障提供轻负荷、持续时间短的检测。这些故障包括接口,数据链路,甚至可能是转发引擎本身。 BFD另外一个目标是提供一个单一的机制,它能够用来对任何媒介、任何协议层进行实时地检测,并且检测的时间与开销范围比较宽,这样防止产生一些其他的方法。 这篇文档给出了基本协议的详细情况,对一些机制的使用是与应用相关的,将在单独的应用系列文档中描述。,设计,BFD设计用来检测相邻两个转发引擎之间的通信故障。在转发引擎与控制引擎分离的情况下,BFD是打算在实施在系统转发引擎的某些部件上。这不但将协议更多的绑定到转发平面,而且将协议从路由协议

3、引擎中分离出来。BFD也可以实施在控制平面,尽管这样做可能会导致一些故障检测不到。 BFD运行在任何数据协议的顶层,这个数据协议用于两个系统之间进行数据转发。BFD总是运行在单播、P2P模式。BFD净荷可以作为任何媒介或者网络的封装协议净荷在网络中传输。BFD可以运行在一个系统的多个协议层上。任何特定BFD会话的操作上下文都是与它的封装相关的。 BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括直接的物理链路,虚电路,隧道,MPLS LSPs,多跳路由通道,以及非直接的通道。在同一对系统之间,如果存在多条通道,至少在一个方向上有多条通道也行,则可以在这对系统之间建立多个BFD会话。

4、 在建立一个BFD会话,或者在拆除一个BFD会话时,BFD状态机实施一个三向握手,保证两个系统都能知道状态的改变。 BFD可以抽象成一个简单的服务,它提供的服务原语包括,在给定目的地址以及其他参数前提下,创建、删除、修改一个BFD会话。BFD最终提供一个信号给它的客户层,表示BFD会话开始或者结束。,协议概述,BFD是一个简单的“Hello”协议,在很多方面,它与这个著名的路由协议的检测部分相似。一对系统在它们之间的每条通道上周期性的发送BFD包,如果某个系统在足够长的时间内没有接收到BFD包,则认为在这条到相邻系统的双向通道的某个部分出了故障。在某些条件下,为了减少负荷,系统之间需要协商,停

5、止发送周期性的BFD报文。 一条通道,只有当系统之间的两个方向通信已经建立之后,才能宣布为可操作的。这并不排除单向连接使用的情况。 系统之间,每条通信通道以及它们使用的数据协议都创建一个单独的BFD会话。 每个系统需要对自身能够收发BFD报文的频率进行估计,这样就可以与相邻就故障检测的频率达成一致。为了适应异常的情况,这些估计可以实时地修改。假设快速系统之间与慢速系统之间共享了一段公共地媒介,这样设计就可以使得快速系统之间能够更快地检测故障,而慢速系统也可以根据自身地能力,达到最好的检测效果。,寻址与会话建立,BFD会话的建立取决于使用它的应用的需求,由应用来决定是否需要BFD以及使用BFD时

6、采用的地址。在BFD中,没有发现这种需求的机制。例如,一个OSPF实现可以采用OSPF Hello协议来通知它的相邻系统,请求建立一个BFD会话。,操作模式,BFD有两种操作模式可以选择,另外还有一种功能,它可以与这两种模式结合起来使用。 BFD的主要操作模式称为异步模式。在这种模式,系统之间相互周期性地发送BFD控制包,如果某个系统连续几个包都没有接收到,就认为会话为“Down”了。 BFD的第二种操作模式称为查询模式。在这种模式,假定每个系统都有一个独立的方法,确认它连接到其他系统。这样,一旦一个BFD会话建立起来,系统停止发送BFD控制包,除非某个系统需要显式地验证连接性。在需要显式验证

7、连接性的情况下,系统发送一个短系列的BFD控制包,然后,协议再次保持沉默。 两种模式的一个辅助功能是回声功能。当回声功能激活时,一个BFD回声包流按照如下方式发送:本地发送一个BFD回声包流,远端系统通过它的转发通道将它们环回回来。如果连续几个回声包都没有接收到,会话就被宣布为“Down”。回声功能可以与异步模式或者查询模式一起使用。由于回声功能处理检测的任务,因此BFD控制包周期性发送的速率可以降低(异步模式下)或者完全取消发送BFD控制包(查询模式下)。 为了取得一个特定的检测时间,纯异步模式只需要回声功能一半的包(注1)。在由于某种原因不能支持回声功能的情况下,也采用纯异步模式。,回声功

8、能具有这样的优势:它真正地只是验证远端系统的转发通道。这样可以减少回来行程的抖动,因此允许更精确的检测时间,也可以潜在地检测其它方法所不能检测到的一些故障。 回声功能可以单独地在每个方向使能。在一个特定方向上回声功能使能必须符合两个条件:1、将回声包环回的系统发出通知,说明它允许将回声包环回;2、发送回声包的系统决定它希望发送回声包。 查询模式在某些情况下是比较有用的。例如,如果系统建立了大量的BFD会话,则周期性的发送BFD负担的很重。另外,当回声功能对称使用哦时候,查询模式也比较有用。查询模式的缺点在于:检测时间本质上是由系统实现的直观推测驱动的,它对BFD协议不可见。当通道来回行程时间比

9、期望的检测时间长,则查询模式也是不可用的。,控制包格式,普通BFD控制包格式,BFD控制包包含一个强制部分与一个可选认证部分。认证部分格式与认证类型有关。,强制部分,可选部分,Vers: 协议的版本号,本篇文档协议版本为0; Diag: 给出本地系统最后一次从“Up”状态转换到其他状态的原因;,I Hear You(H): 如果发送系统没有接收到远端系统的BFD包,或者由于某种原因在拆除BFD会话过程中,H比特设置为0;如果发送系统相信它正在与远端系统通信,则将H比特设置为1; Demand(D): 设置为1,表示发送系统希望操作在查询模式;设置为0,表示发送系统不希望操作在查询模式,或者表示

10、发送系统不能操作在查询模式;,Poll(P): 设置为1,表示发送系统请求进行连接确认,或者发送请求参数改变的确认;设置为0,表示发送系统不请求确认; Final(F): 设置为1,表示发送系统响应一个接收到P比特为1的BFD包;设置为0,表示发送系统不响应一个P比特为1的包; Control Plane Indepentent(C): 设置为1,表示发送系统的BFD实现不依赖于它的控制平面(换句话说,BFD在转发平面实施,即时控制平面失效了,BFD仍然能够起作用);设置为0,表示BFD在控制平面实施; Authentication Present(A): 如果设置为1,则表示控制包包含认证字

11、段,并且会话是被认证的; Reserved(Rs): 在发送时设置为0,在接收时忽略; Detect Mult: 检测时间倍数。在异步模式下,发送系统的检测时间为协商的发送间隔乘以这个倍数; Length: BFD控制包的长度,单位字节; My Discriminator: 发送系统产生的一个唯一的、非0鉴别值,用来对两个系统之间的多个BFD会话进行分离; Your Discriminator: 从远端系统接收到的鉴别值,这个域直接返回接收到的“My Discriminator”,如果不知道这个值就返回0;,Desired Min Tx Interval: 本地系统发送BFD控制包时想要采用的

12、最小间隔,单位毫秒; Required Min Rx Interval: 本地系统能够支持的接收两个BFD控制包之间的间隔,单位毫秒; Required Min Echo Rx Interval: 本地系统能够支持的接收两个BFD回声包之间的间隔,单位毫秒。如果这个值设置为0,则发送系统不支持接收BFD回声包; Auth Type: BFD控制包使用的认证类型; Auth Len: 认证字段的长度,包括认证类型与认证长度字段。单位字节;,简单密码认证字段格式,Auth Type: 1,表示简单密码认证; Auth Len: 密码长度3; Auth Key ID: 当前处理包的认证Key ID,

13、这允许同时有多个Keys激活; Password: 当前会话使用的简单密码,密码必须为116字节;,Keyed MD5与Meticulos Keyed MD5认证字段格式,Auth Type: 2或者3; Auth Len: 24; Auth Key ID: 当前包所使用的Key ID,这允许可以同时使用多个Keys; Reserved: 发送时为0,接收时忽略; Sequence Number: 当前包的序列号。对于Keyed MD5,这个值是周期性增加的;对于Meticulous Keyed MD5,当前会话每连续发送一个包,这个值加一次。它提供了对重复攻击的保护; Auth Key/Ch

14、ecksum: 这个域携带当前包的16字节MD5校验和;,BFD回声包格式,BFD回声包的净荷只与本地相关,因为只有发送系统会处理回声包的内容。仅有的需求是:在回声包中包含足够的信息,在回声包环回到发送端之后,发送端能够根据这些信息将回声包分离到正确的BFD会话上。,过程元素,概述,为了达到互通的目的,本节讨论了协议的标准需求。对于实现者来说,仅仅只需要执行本节所规定的需求。,在会话的初始化过程中,一个系统可能处于主动角色,也可能处于被动角色。处于主动角色的系统,必须在一个特定的BFD会话发送BFD控制包,而不管它从这个会话上是否接收到任何BFD包。处于被动角色的系统必须不能在一个特定的BFD

15、会话上发送BFD包,直到它从这个会话上接收到一个BFD包为止。当被动系统从该会话接收到一个BFD包之后,它知道了远端系统的鉴别值。在会话初始化过程中,至少有一个系统处于主动角色(也可能两个系统都处于主动角色)。 会话开始时,发送周期性的、低速率的BFD控制包。当双向通信完成之后,BFD会话变为“Up”。双向通信完成的判断依据是,两个系统都接收到H比特不为0的BFD包。 如果一个系统想要采用回声功能,而远端系统表示它允许本地发送回声包,则一旦一个BFD会话状态变为“Up”,本地系统可以选择启动回声功能。当回声功能激活时,控制包的发送速率一般比较低。,如果回声功能未激活,则控制包的发送频率可能要增

16、加到一个必要的水平,使得可以满足会话所需要的检测时间。 如果两个系统都通过信令表示想要采用查询模式,则一旦会话状态变为“Up”时,立即停止发送BFD控制包。这时需要采用其他暗示连接性的方法来保持会话是存在的。如果其中某个系统希望确认连接性,它可以发起一个短的BFD控制包交流来确认(这个短的BFD包流也就是Poll Sequence)。 如果查询模式未激活,并且在计算出的检测时间内,没有从会话上接收到任何BFD控制包,则该会话被宣布为“Down”,同时发送一个H比特为0的BFD控制包给远端。 如果丢失了足够多的回声包,则会话也按照上面同样的方式宣布为“Down”。 如果查询模式激活,并且发起了一

17、个Poll Sequence之后,并没有接收到相应的BFD控制包,则会话按照上面同样的方式宣布为“Down”。 如果会话状态变为“Down”,则停止发送回声包(如果启动了回声功能的话),并且控制包的发送又回到较低的速度(也就是回到刚开始协调阶段的水平)。 一旦一个会话状态变为“Down”,则它不能自己恢复过来,直到远端通过信令表示会话为“Down”(远端发送H比特为0的BFD控制包),这样实行一个三向握手。 一个会话也可以通过发送H比特为0的包,强制会话状态变为“Down”,并且在诊断码中给出说明,表示是强制命令。,分离与鉴别域,由于在两个系统之间可能运行多个BFD会话,则需要一种机制来将接收

18、到的BFD控制包与相应的BFD会话进行对应。 每个系统必须为每个会话选择一个不透明的鉴别值,系统所有BFD会话的鉴别值都必须是唯一的。本地鉴别值在“My Discriminator”域发送出去,并且在远端发送包的“Your Discriminator”域返回。 一旦远端返回了本地鉴别值,后面接收到的BFD包都只根据这个鉴别值进行分离。 对BFD包进行分离的方法与具体的应用相关。 注意:允许一个系统在会话期间改变它的鉴别值,而不影响会话的状态,因为本系统仅仅利用鉴别值对BFD控制包进行分离。,回声功能与不对称性,回声功能可以独立的在每个方向运行。无论什么原因,一个系统可以宣布它可以接收回声包(然

19、后环回回去),但是它不希望发送任何回声包。一个系统发送回声包,并不表示这个系统可以将回声包环回回去。 当系统启动了回声功能时,由于实时检测已经由回声包处理了,所以可以选择一个稳定的BFD包发送速率。这可以通过操作“Desired Min Tx Interval”域来控制。 如果只有在一个方向启动了回声功能,则没有启动回声功能的系统为了达到它期望的检测时间,将更可能希望发送相当快的BFD控制包。由于BFD允许在每个方向独立地选择控制包的发送速率,这一点可以很容易实现。 在一个特定环境下,一个系统应该总是说明它能接受的“Required Min Rx Interval”与“Required Min

20、 Echo Rx Interval” 最小值,这样使得其他系统可以根据这个值来选择它的发送速率。注意:一个系统应该能够按照它说明的速率接收两个包流(BFD控制包与回声包),所以在选择上面两个最小值时,应该考虑这一点。,查询模式,两个系统通过设置BFD控制包中的D比特来协商查询模式。为了激活查询模式,两个系统必须都请求查询模式。 查询模式要求采用一些其他的机制来暗示两个系统之间的连续连接性。采用的机制不要求两个方向是相同的。一个可能的机制是:本地通过接收远端的业务判断,而远端却采用回声功能。 一旦BFD会话状态变为“Up”,如果查询模式激活,双方系统停止发送周期性的BFD控制包,并且依赖于其他的

21、代替机制来维护正在进行的连接性。 当一个系统希望确认连接性时,它发起一个Poll Sequence。过程如下:系统开始根据协商的发送速率,周期性的发送P比特为1的BFD控制包。当远端系统接收到这样的控制包时,它立即响应一个它自己的BFD控制包,P比特设置为0,F比特设置为1。本地系统接收到一个这样的响应包就停止Poll Sequence的发送。如果本地系统没有接收到一个Poll Sequence的任何响应包,则Poll一直重复下去,直到检测时间超出。如果检测时间超出,则会话被宣布为“Down”。 查询模式下的检测时间计算与异步模式不同:它根据的是本地系统的发送速率,而不是根据远端系统的发送速率

22、。,注意:这种机制要求协商的检测时间比两个系统之间的来回行程时间长,否则Poll机制将总是失败。 查询模式可以通过设置BFD控制包中的D比特,随时使能或者不使能,不会影响会话的状态。,认证,简单密码认证,认证字段的目的是允许接收系统来判断接收包的有效性。 一般来说,发送系统将信息放在认证字段,发送系统通过这些信息保证发送包的有效性;接收系统接收之后,对认证字段进行检查,决定是否接受还是丢弃。,最直截了当的认证格式就是简单密码认证。在这种认证方式下,每个系统中配置一个或者多个密码(与相应的Key IDs),每个BFD控制包中携带一个这样的密码/ID对。接收系统接收到这样的BFD控制包后,将这个B

23、FD控制包中的密码/ID对与本地配置的密码/ID进行比较,如果符合本地配置的话,本地系统就认为通过了认证。 发送端处理:Auth Type = 1, Length为419,当前会话的密码/ID设置到BFD控制包的Password域; 接收端处理: 如果BFD控制包不包含认证字段,或者Auth Type != 1,丢弃; 如果Key ID与本地配置的密码对应的Key ID不相符,丢弃; 如果长度不等于3Key ID所对应密码的长度,丢弃; 如果密码与本地配置的Key ID所对应的密码不相符,丢弃; 否则话,认证通过;,Keyed MD5与Meticulous Keyed MD5认证,这两种机制在

24、BFD中的应用与它们在其他协议中的应用非常类似。在这种认证方式下,每个系统配置一个或者多个非公开的Keys以及相应的Key IDs。其中一个Key包含在整个BFD控制包MD5校验和中,但是这个Key自身并不携带在BFD控制包中。为了避免重复攻击,在每个BFD控制包中也包含一个序列号。对于Keyed MD5而言,序列号是周期性增加的;对于Meticulos Keyed MD5而言,每发送一个BFD控制包,序列号增加一次。 发送端处理过程: Auth Type = 2或者3;Auth Len = 24;Auth Key ID必须设置为当前认证Key的ID;序列号必须设置为bfd.XmitMD5Se

25、q; 将当前认证Key的值填入Auth Key/Checksum域,然后对整个BFD包进行MD5校验和计算,再将校验和结果填入Auth Key/Checksum域(代替这个非公开的Key),发送出去。 对于Keyed MD5而言,bfd.XmitMD5Seq可以按照一种循环的方式增加。当会话状态改变,或者当当前发送的BFD控制包与发送的前一个BFD控制包内容不同时,应该增加bfd.XmitMD5Seq。 对于Meticulous Keyed MD5而言,bfd.XmitMD5Seq必须按照一种循环的方式增加。,接收端处理过程: 如果BFD控制包不包含认证字段,或者Auth Type不为2或者3

26、,丢弃; 如果Auth Key ID没有在本地找到匹配,丢弃; 如果Auth Len != 24,丢弃; 将Auth Key ID对应的Key填入Auth Key/Checksum域,然后对整个BFD包进行MD5校验和计算,如果校验和不等于接收BFD控制包的Auth Key/Checksum域,丢弃; 如果bfd.MD5SeqKnown等于1,检查序列号域:对于Keyed MD5,如果序列号在(bfd.RcvMD5Seq, bfd.RcvMD5Seq + 3*Detect Mult范围之外,丢弃;对于Meticulous Keyed MD5,如果序列号在(bfd.RcvMD5Seq+1, bf

27、d.RcvMD5Seq + 3*Detect Mult范围之外,丢弃; 否则,接收包通过认证。如果bfd.MD5SeqKnown为0,则bfd.MD5SeqKnown必须设置为1,bfd.RcvMD5Seq必须设置成接收序列号的值。,功能细节,状态变量,下列用于描述BFD机制的状态变量集合。可以采用任何方法对状态变量进行跟踪,只要保证状态变量的表现符合协议即可。 bfd.SessionState: 会话可察觉的状态,包括Init, Up, Failing, Down, 或者AdminDown。必须初始化为Failing; bfd.LocalDiscr: 会话的本地鉴别符,本地用来唯一的标识会话

28、。它必须是唯一的、非0值,为了保证安全性,它可以是随机产生的; bfd.RemoteDiscr: 会话的远端鉴别符,对本地是不透明的。必须初始化为0; bfd.RemoteHeard: 如果本地接收到远端发送过来的BFD控制包,设置为1;如果本地最近都没有接收到远端发送过来的BFD控制包,或者本地打算拆除BFD会话,设置为0。这个值必须初始化为0; bfd.LocalDiag: 它指明了本地会话状态最近一次从“Up”改变到其他状态的原因。必须初始化为0(没有诊断); bfd.DesiredMinTxInterval: 本地系统在当前时刻想要连续发送两个BFD控制包的最小间隔,单位毫秒。实际的发

29、送间隔由两个系统协商而定。这个值必须初始化为至少1秒。,bfd.DesiredMinRxInterval: 本地系统要求连续接收两个BFD控制包的最小间隔,单位毫秒。 bfd.DemandModeDesired: 如果本地系统希望采用查询模式,设置为1;否则设置为0; bfd.DetectMult: 本地系统期望的BFD控制包检测时间倍数。协商的控制包发送间隔,乘以这个倍数,就等于会话的检测时间。这个变量必须是一个非0值; bfd.AuthType: 会话使用的认证类型,如果没有使用认证,则设置为0; bfd.RcvMD5Seq: 32位的无符号数,对于Keyed MD5认证来说,它包含期望接

30、收的下一个序列号的值。初始值是不重要的; bfd.XmitMD5Seq: 32位的无符号数,对于Keyed MD5认证来说,它包含将要发送的下一个序列号的值。这个变量必须初始化位一个任意的32位值; bfd.MD5Known: 对于Keyed MD5认证来说,如果期望接收的下一个序列号是可知的,则设置为1;如果下一个序列号是不可知的,则设置为0。初始化必须设置为0。如果超过两倍的检测时间内,本地没有从会话上接收到任何BFD包,则该变量必须设置为0。这就保证如果远端系统重新启动,MD5序列号可以重新同步。,定时协商,用来决定BFD包发送间隔与会话检测时间的时间值是不断协商的,因此可以在任何时候改

31、变。对每个会话来说,协商与时间值在每个方向是独立的。在异步模式下,BFD包是周期性发送的;在查询模式下,在轮询序列期间周期性地发送BFD包。 每个系统在BFD控制包中反映它将要发送BFD包的频率,也反映它打算接收BFD包的频率。除了本记后面列出的情况之外,系统发送BFD包的频率必须不能小于max(bfd.DesiredMinTxInterval, 接收的Required Min Rx Interval值)。换句话说,系统按照较慢的速率决定包的发送速率。 BFD控制包的周期发送抖动应该控制在25之内。也就是说,为了避免自同步,发送间隔应该减小到一个025的随机值。这样,发送的平均间隔就比协商最多

32、小12.5。 如果bfd.DetectMult = 1,则连续发送两个BFD控制包的间隔必须不超过协商的90,而且必须不低于协商的75。这是为了保证远端系统计算出来的检测时间不会在接收到下一个BFD控制包之前就过期了。 在两个BFD控制包发送期间,如果发送状态的改变,并且需要对这种改变进行交流,则应该发送另外一个BFD控制包,这样可以达到更快的融合。除了下一节列出的原因之外,一旦已经发送一个这样的额外的包,系统必须必须不能接着发送另外的BFD控制包,直到下一个调度时刻到来为止。 如果系统接收到一个P比特为1的包,则系统必须尽可能快地发送一个P比特为0、F比特为1的包,不考虑其他发送定时或者其他

33、发送限制,也不管查询模式是否激活。,定时器操纵,用来决定BFD包发送间隔与会话检测时间的时间值可以在不影响会话状态的前提下随时更改。当定时器参数无论由于什么原因需要修改时,需要应用本节需求: 如果查询模式激活,则无论改变bfd.DesiredMinTxInterval或者改变bfd.RequiredMinRxInterval,必须发起一个轮询序列; 如果查询模式未激活,则无论改变bfd.DesiredMinTxInterval或者改变bfd.RequiredMinRxInterval,所有接下来要发送的BFD控制包都必须将P比特设置为1,直到接收一个F比特为1的包为止; 如果bfd.Desir

34、edMinTxInterval增加,则实际的发送间隔必须不能改变,直到接收一个F比特为1的控制包为止。这保证远端系统在本地发送间隔增加时更新了它的检测时间; 如果bfd.RequiredMinRxInterval减少,则为远端计算的检测时间必须不能改变,直到接收到一个F比特为1的控制包为止。这保证在减少检测时间之前,远端系统已经按照较高的速率发送BFD控制包; 如果bfd.SessionState不为“Up”,则系统必须将bfd.DesiredMinTxInterval设置为一个不小于1秒的值。这是为了保证让那些状态不为“Up”的会话消耗的带宽可以忽略不计。 当回声功能激活时,系统应该将bfd

35、.DesiredMinTxInterval设置为一个不小于1秒的值。这是为了使得BFD控制业务可以忽略不计。实际的检测功能是由回声功能完成的。,计算检测时间,检测时间并没有显式的在协议中携带。而且,它是在每个方向上由接收系统根据协商的发送间隔与检测倍数独立计算出来的。注意:在异步模式,可能在每个方向上的检测时间不同。 查询模式与异步模式的检测时间计算稍微有些不同。 异步模式下,本地计算的检测时间 = 从远端接收到的检测时间倍数协商的发送间隔(max(bfd.RequiredMinRxInterval, 上一次接收到的Desired Min Tx Interval))。检测时间倍数实际上就是连续

36、几个包没有接收到就将会话宣布为“Down”的包个数。 如果查询模式未激活,在检测时间内没有从远端接收到任何一个BFD控制包,bfd.SessionState为“Init”或者“Up”,则会话状态变为“Down”。本地系统必须将bfd.SessionState设置为“Failing”,bfd.RemoteHeard设置为0,bfd.LocalDiag设置为1. 查询模式下,本地计算的检测时间 = bfd.DetectMult 协商的发送间隔(max(bfd.RequiredMinRxInterval, 上一次接收到的Desired Min Tx Interval))。 如果查询模式激活,在发起一

37、个Poll Sequence之后(发送第一个P比特为1的BFD控制包),如果检测时间过去了,会话没有接收到F比特为1的包,则会话变为“Down”。本地系统必须将bfd.SessionState设置为“Failing”,bfd.RemoteHeard设置为0,bfd.LocalDiag设置为1。,采用回声功能检测失效,当回声功能激活,足够多的回声包应该到达而没有到达,则会话变为“Down”。本地系统必须将bfd.SessionState设置为“Failing”,bfd.RemoteHeard设置为0,bfd.LocalDiag设置为2。,接收BFD控制包,当接收到一个BFD控制包时,必须按照指定

38、的顺序,执行下列步骤。如果接收包由于这些规则丢弃了,则对这个包的处理必须在该点停止。 1、版本号不对(0),包丢弃; 2、长度域小于最小正确的值(A比特没有设置,长度小于24),包丢弃; 3、长度域大于封装协议的净荷,包丢弃; 4、检测倍数为0,包丢弃; 5、My Discriminator为0,包丢弃; 6、如果Your Discriminator不为0,则必须用来选择会话。如果没有会话对应,包丢弃; 7、如果Your Discriminator为0,但H比特不为0,包丢弃; 8、如果Your Discriminator为0,必须根据其他一些域的组合选择相应的会话,这些域可能包括源地址信息,

39、My Discriminator,接收包的接口。如果没有找到一个会话,则可以创建一个新的会话,或者将包丢弃; 9、如果A比特为1,但是没有认证字段,包丢弃; 10、如果A比特为0,但是使用了认证字段,包丢弃; 11、如果A比特为1,必须根据认证结果,决定丢弃与否;,12、将bfd.RemoteDiscr设置为“My Discriminator”; 13、如果Required Min Echo Rx Interval为0,如果启动回声功能,必须停止; 14、如果查询模式激活,本地系统发起一个轮询序列。当接收到一个F比特为1的包时,轮询序列必须停止; 15、如果查询模式未激活,接收到F比特为1的包

40、,则本地系统已经发送过P比特为1的包。在接下来发送的包中,P比特必须为0; 16、按照“计算检测时间”一节更新检测时间; 17、更新会话状态; If bfd.SessionState is Down Set bfd.RemoteHeard to 1 if I hear Your is Zero Set bfd.SessionState to Init Else Set bfd.SessionState to Up Else if bfd.SessionState is AdminDown Discard the packet,Else if bfd.SessionState is Init i

41、f I Hear You is nonzero set bfd.SessionState to Up else Discard the packet Else if bfd.SessionState is Up if I Hear You is zero set bfd.LocalDiag to 3 (neighbor signaled session down) set bfd.SessionState to Failing set bfd.RemoteHeard to 0 Else if bfd.SessionState is Failing if I Hear You is Zero s

42、et bfd.SessionState to Down 18、按照“定时协商”一节更新发送间隔;,19、如果D比特为1,bfd.DemandModeDesired为1,bfd.SessionState为Up,则查询模式激活; 20、如果D比特为0,或者bfd.DemandModeDesired为0,或者bfd.SessionState不为Up,查询模式未激活; 21、如果P比特为1,发送一个P比特为0、F比特为1的BFD控制包到远端; 22、如果包没有被以上规则丢弃,则它已经根据“计算检测时间”一节的规则被接收了;,发送BFD控制包,BFD控制包必须根据“定时协商”一节确定的速率,周期性地发送

43、。本节列出地情况除外。 任何时候,如果bfd.DesiredMinTxInterval发生改变,或者接收到地Required Min Rx Interval发生改变,发送间隔必须重新计算,并且等于这两个值地较大一个。 如果bfd.RemoteDiscr等于0,并且系统处于被动角色,则它必须不能发送BFD控制包; 如果查询模式激活,并且没有发起一个轮询序列,则系统必须不能发送周期性的BFD控制包; 当系统接收到一个P比特为1的BFD控制包时,必须发送一个P比特为0,F比特为1的BFD控制包; 两次发包间隔之间,如果包的内容与上一个发送包的内容不同(P比特、F比特除外),则为了更快的交流这种状态的

44、改变,应该发送一个额外的BFD控制包; 发送控制包的内容必须设置如下: Version: 设置为0; Diagnostic(Diag): 设置为bfd.LocalDiag; H比特:设置为bfd.RemoteHeard; D比特:设置为bfd.DemandModeDesired;,P比特:如果本地系统发送一个轮询序列,P设置为1,或者根据“定时器操纵”一节的需求要求将P设置为1,其他情况设置为0; F比特:如果本地响应一个P比特为1的包,设置为1;否则设置为0; C比特:如果本地系统BFD实现与控制平面无关,设置为1; A比特:如果使用认证字段,设置为1;否则设置为0; Reserved:设置

45、为0; Detect Mult:设置为bfd.DetectMult; Length: 设置为相应的长度,固定的头长度认证字段长度; My Discriminator: 设置为bfd.LocalDiscr; Your Discriminator:设置为bfd.RemoteDiscr; Deisred Min Tx Interval:设置为bfd.DesiredMinTxInterval; Required Min Rx Interval:设置为bfd.RequiredMinRxInterval; Required Min Echo Rx Interval:设置为会话要求的最小回声包接收间隔。如果这个域设置为0,表示本地系统不愿意或者不能够将回声包环回到远端;远端系统不能发送回声包;,轮询序列的发起,如果查询模式激活,任何时候,只要下一个发送包的内容与前一个发送包的内容不同,P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论