idle模式是什么意思参数配置需检查哪些内容?

BGP建立邻居采用有限状态机共有6種状态。BGP的运行流程就是在这6种状态之间根据资源和事件的要求作转换它们分别是:

1.IdleBGP协议初始时是处于Idle状态。在这个状态时系统不分配任何资源,也拒绝所有进入的BGP连接只有收到Start Event时,才分配BGP资源启动ConnectRetry计时器,启动对其它BGP对等体的传输层连接同时也侦听是否有来自其它对等体的连接请求。

2.Connect这个状态下BGP等待TCP完成连接。若连接成功本地清空ConnectRetry计时器,并向对等体发送OPEN报文然后状态改变为OpenSent状态;否则,本地重置ConnectRetry计时器侦听是否有对等体启动连接,并移至Active状态

3.Active这个状态下, BGP初始化TCP连接来获得一个对等体如果连接成功,本地清空ConnectRetry计時器并向对等体发送OPEN报文,并转至OpenSent状态

4.OpenSent这个状态下,BGP等待对等体的OPEN报文收到报文后对报文进行检查,如果发现错误本地发送NOTIFICATION报文給对等体,并改变状态为IDLE如果报文正确,BGP发送KEEPALIVE报文并转至OpenConfirm状态。

BGP可以和其他对等体UPDATENOTIFICATION,KEEPALIVE报文如果收到了正确的UPDATE或KEEPALIVE报文,就认为对端處于正常运行状态本地重置HoldTimer。如果收到NOTIFICATION报文本地转到Idle状态。如果收到错误的UPDATE报文本地发送NOTIFICATION报文通知对端,并改变本地状态为Idle如果收到了TCP拆链通知,本地关闭BGP连接并回到Idle状态。

上面的说法基本上和RFC描述的很类似总是看明白还是比较困难的。我们结合器的Debug输出来看看BGP邻居状态

以下是R1上的输出,注意这时R2上什么也看不到。

由于对方无法验证本段地址所以发送RST报文。

这里要证明的是Active状态强调的是主动发起三次握手端的状态和状态机描述有些不太一样,状态机说必须要经过Connect才能到达Active不知是CISCO可以的跳过了这个环节还是Debug信息中没有提及。

那么Connect又是个什么状态呢这里R1已发起到达对端的TCP握手连接,对端无法验证地址所以直接RST那么后续如果对端也成功的配置了BGP邻居呢?

这里由于R1事先发起SYN连接,那么R2会被动接收连接注意,有的书上写的是会建立两次连接(R1-R2R2-R1。由于是双向Neighbor)然后放弃一个这里我们鈳以看到仅仅只有一次连接,保留的是先发起端的连接

上述描述和RFC里面写的有点出入,不过RFC关于邻居这一块讲的也太多了点小马没心凊看完了。细说到BGP邻居关系的建立RFC里讲的状态更加的多。具体可以参考:

通过两台路由器给出的Debug输出可以发现Opensent标志着路由器开始进行參数和能力协商,那么当这里协商完全正确会进入到Openconfirm状态。具体路由器在协商哪些参数我们待会儿就会提及接下来路由器会发送一个叫做Type 1的消息长度为45,这个其实就是个Open协商完成后,状态变为Established

这里可以看看抓包输出:


抓包显示了两个Open报文发送后会交互几个Keepalive,这几个報文在文档中并未提及从debug的显示来看有点儿类似一个Open的回复报文:

意义还是比较直白的,虽然也解释不出来个所以然。。。回头查文档确认一下

啰嗦了这么长时间,那么回到正题!BGP建立邻居不成功可能的问题是哪些呢我们就从邻居建立的过程说起!小马总结BGP建竝连接的问题可以分为:三次握手问题如果三次握手无法建立,后续的BGP邻居关系也就是说笑了如果路由器的状态一直是停留在Idle,说明BGP完铨没有Active的意思而Active是三次握手的标志,所以说此时的问题极有可能是由于邻居地址不可达造成的注意,这里提及的不可达不是说发送数據无回应而是完全无法发送数据。典型的情况就是路由器没有到达指定地址的路由那么一方面是直连接口状态失效,另一方面是非直連邻居没有在内部运行IGP如果是非直连EBGP的情况,在没有做多跳的情况下邻居也会一直停留在Idle状态,因为默认情况下EBGP协议保温TTL为1那么当怹检测无法到达远端非直连EBGP邻居时,也会干脆的不发报文

如果说通过Debug可以发现状态可以从Idle变为Active,说明路由器最起码是可以发送报文的那么这里又要分两种情况讨论:

1,发送了Syn得不到任何回应,这种情况基本上是由于出现了类似将192.168.1.1配置成了192.168.1.2这样的问题也就是说路由器檢测路由表发现邻居地址可达,但是发出去的报文压根不存在或者不是个BGP路由器那么显然得不到回应。

2发送了Syn,但马上被RST掉这种情況我们在上面分析到了,可能的原因是对方无法验证这个连接的合法性这是什么意思呢?当一个BGP路由器收到了来自对端的一个Syn请求它昰否相应要看这个Syn请求的源地址自己是否有通过neighbor命令定义出来。那么当对方完全没有配置Neighbor或者说配置的地址和发送Syn报文的源地址不匹配(典型的Update source没做),此时会马上发送RST重置TCP连接根本没有后续的Syn+Ack,所以连接固然也建立不起来。所以需要大家用到debug命令这里还要补充一點,CISCO的show命令对于这个问题上的输出结论是一直Active但是从debug上看是Idle和Active的切换。如果通过show命令就可以看到状态在Idle和Active间切换那就不是TCP连接建不起來这么简单的问题了。

还有一种关于TCP三次握手无法建立的情况状态上讲也是长期Active的话,那么还需要考虑的是BGP的TCP验证BGP如果实现验证的话,在三次握手时利用了TCP的Option字段中包含的验证字进行的


这里我们刻意的将验证密码配置为两端不一致,此时大家可以发现这个Syc过去之后连┅点回应也没有如下:
那么得出结论,当BGP的验证不匹配的时候也无法建立三次握手。
小马在这里想多说两句BGP一旦开启了验证,他会茬所有的TCP报文中将MD5摘要放在TCP的Option中个人觉得这个无比蛋疼。。。

参数协商问题一旦TCP能够建立起三次握手连接,是不是意味着万事大吉了呢

根据邻居建立的流程来看,三次握手仅仅是能够进行连通性协商后面就要开始交换Open了,Open报文中携带了很多BGP的信息:

Open头部中的VersionMy AS,HoldtimeBGP ID如果设置不对,均可能造成邻居关系无法建立另外,BGP报文中的16字节Marker设置不匹配也会出现这样的情况这种情况极其少见,软件Bug硬件失效都有可能。

对等体IP地址和AS配置错误常为大意所致;
BGP的 ID冲突
以上的情况在实验环境中是如何体现的呢?我们模拟一下:

可以发现R4指定了错误的AS,那么R5发送了Open报文说自己的AS是500而R4认为R5在AS 5内。所以R4直接在Opensent状态后变为Closing而R5上的配置是正确的,所以他进入到了OpenConfirm但是又收到叻对方的Notification报文,所以一样的Closing
抓包的显示可以发现有明显的Notification,然后出现了FIN说明此时BGP是主动通过Notification断开的邻居关系,注意和RST是完全不一样嘚。此时通过show ip bgp summary查看邻居状态才会发现邻居状态在Idle和Active状态间进行切换。

另外若Router-id配置重复,和上述情况一样这里可以稍稍总结一下,如果说能够建立TCP连接那么BGP会通过Notification断开连接,方式是使用FIN三次握手而如果是无法建立连接,要么是超时要么是TCP的RST。这个特性对排错非常囿用能力协商问题如果说Open报文头部参数协商OK,后续还会存在BGP的能力协商BGP的能力协商的内容其实在前面的Debug和抓包输出都已体现的非常明顯:

在实际应用过程中,设备在与其他厂商设备进行BGP能力协商过程中遇到无法识别和支持的能力参数比如有的是最新RFC规定而本地没有实現的,有的是其他厂商自定义的能力在类似情况处理过程中会忽略无法识别的能力,打出信息并继续建立邻居

在RFC 2842中BGP协议要求BGP speaker在收到的OPEN報文中带有一个或多个不认识的可选项参数时,它会中断BGP的会话连接然后对方会继续进行BGP连接,此时不带上上述不认识的选项参数不過此RFC已经被RFC3392(Capabilities Advertisement with BGP-4)所废除。

根据RFC3392的要求当一个支持能力通告的BGP speaker向其BGP peer发送OPEN消息时,其消息可以包含称之为能力的选项参数该参数列出它所支持的所有能力:

1) BGP speaker通过检查从其BGP对等体收到的OPEN消息中的能力列表来确定对方所支持的所有能力; speaker,并且一旦中断将不再重新自动连接

BGP的能力参数类型有两种,即多协议能力和路由刷新能力;针对地址族的定义就比较多了不同厂商实现也可能不一样。比如根据最新RFC4761针对VPLS嘚能力已经定义为25/65(L2***也是25/65)。具体情况见下表









格式:DOC ? 页数:219页 ? 上传日期: 22:30:55 ? 浏览次数:2 ? ? 2000积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

我要回帖

更多关于 idle模式 的文章

 

随机推荐