⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 networkdictionary 网络大典.htm

📁 RFC1711,学习网络的必备书籍
💻 HTM
📖 第 1 页 / 共 5 页
字号:
    <TD align=right><A 
      href="http://www.networkdictionary.cn/comment/reply/1310#contents">返回目录</A></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=5 width=550 border=0>
  <TBODY>
  <TR>
    <TD><A id=6 title=6 name=6></A>6. BGP错误处理</TD></TR>
  <TR>
    <TD>
      <P>本部分讨论当处理BGP消息探测到错误的时候采取的行动。 </P>
      <P>当下面描述的任何情况被探测到,NOTIFICATION消息包括制定的错误码,错误子码,数据域,被发送出去,BGP连接断开。如果错误子码没有指定,必须要使用0。 
      </P>
      <P>术语“BGP连接关闭”意思是传输协议连接被关闭同时BGP连接的所有资源被释放。远端对应的路由表入口被标记无效。在路由被系统探测出来之前,路由无效的事实被发送到BGP对端。 
      </P>
      <P>除非特别说明,发送指示错误的NOTIFICATION消息的数据域是空的。 </P>
      <P><A id=61 title=61 name=61></A><STRONG>6.1 消息头错误处理.</STRONG> </P>
      <P>当处理消息头时所有探测的错误在发送NOTIFICATION消息时用错误码Message Header 
      Error指示.错误子码依赖于具体的错误。 </P>
      <P>消息头的Marker域的期望值是全1,如果消息类型是OPEN。别的BGP消息的消息头的Marker于的期望值决定于BGP 
      OPEN消息的认证信息可选参数的表达和实际的认证机制(如果BGP 
      OPEN消息表达了认证信息)。如果消息头的Marker域不是期望的,就发生了同步错误,错误子码设置为Connection Not 
      Synchronized。 </P>
      <P>如果消息头的长度域小于19字节或者大于4096字节,或者OPEN消息的长度域小于最小的OPEN消息长度,或者UPDATE消息的长度域小于UPDATE消息的最小长度,或者KEEPALIVE消息的长度域小于KEEPALIVE消息的最小长度,或者NOTIFICATION消息的长度小于最小的NOTIFICATION消息的长度。错误子码设置为Bad 
      Message Length。数据域包含了错误的长度。 </P>
      <P>消息头的pe 域不认识,错误子码设置为Bad Message Type。数据域包含了错误的Type域。 </P>
      <P><A id=62 title=62 name=62></A><STRONG>6.2 OPEN 消息错误处理</STRONG> </P>
      <P>处理OPEN消息探测到的错误通过发送NOTIFACAITION指示,错误子码是OPEN Message Error。错误子码取决于特定的错误。 
      </P>
      <P>如果OPEN消息Version域内的版本号不支持,错误子码设置为Unsupported Version 
      Number。数据域是2字节的无符号整数,说明最大的本地支持的小于对端BGP提出的版本。(在OPEN消息中收到)如果OPEN消息的Autonomous 
      System域不支持,错误子码设置为Bad Peer AS。可接受的AS号码的确定超出了文档的范围。 </P>
      <P>如果OPEN消息的Hold Time域不可接受,错误子码必须设置为Unacceptable Hold Time。应用必须拒绝一到两秒的Hold 
      Time值。应用可以拒绝任何建议的Hold Time。接受Hold Time的应用必须使用Hold Time的商议值。 </P>
      <P>如果OPEN消息的BGP Identifier域语法错误。错误子码设置为Bad BGP Identifier。语法错误意味着BGP 
      Identifier 是错误的标示符。 </P>
      <P>如果OPEN消息的一个Optional Parameter不认识,错误子码设置为Unsupported Optional 
      Parameters。 </P>
      <P>如果OPEN消息承载了Authentication Information (作为可选参数), 
      激活相应的认证过程。如果认证过程(基于认证码和认证数据)失败,错误子码设置为 Authentication Failure。 </P>
      <P><A id=63 title=63 name=63></A><STRONG>6.3 UPDATE 消息错误处理</STRONG> </P>
      <P>处理UPDATE消息探测的错误通过发送NOTIFACATION说明,错误码是UPDATE MessageError。错误子码决定于具体的错误。 
      </P>
      <P>UPDATE消息的错误检查开始是路径属性检查。如果不可用路由长度或者整个属性长度太大(也就是说,如果Unfeasible Routes 
      Length + Total Attribute Length + 23 ) message Length), 错误子码是Malformed 
      Attribute List。 </P>
      <P>如果认识的属性的属性标志和属性类型码矛盾,错误子码设置为Attribute Flags Error。数据域包含了错误的属性 
      (类型,长度和值)。 </P>
      <P>如果认识的属性的属性长度和期望的长度矛盾(根据属性类型码),错误子码是Attribute Length Error。数据域包含了错误的属性 
      (类型,长度和值)。 </P>
      <P>如果强制公认属性没有表示,错误子码设置为Missing Well-known Attribute。数据域包括了漏掉的公认属性的类型码。 
</P>
      <P>如果强制公认属性不认识,错误子码设置为Unrecognized Well-known 
      Attribute。数据域包含了不认识的属性(类型,长度,值)。 </P>
      <P>如果ORIGIN属性值不认识,错误子码是Invalid Origin Attribute. 数据域包含了不认识的属性(类型,长度,值)。 
      </P>
      <P>如果NEXT-HOP属性是语法错误,错误子码是Invalid NEXT_HOP 
      Attribute。数据域包含了不正确的属性(类型,长度,值)。语法错误意思是NEXT-HOP属性表示无效IP地址。语义检验只用在外部BGP链节上。意味着IP地址的接口,在NEXT-HOP中说明,和接受BGP发言者共享了公共的子网但是不是接受BGP发言者的IP地址。如果NEXT-HOP属性是语义不正确,错误要记录,路由被忽略。在这种情况下,不发送NOTIFACAITON消息。 
      </P>
      <P>AS-PATH属性要检查语法错误。如果路径语法错误,错误子码是Malformed AS_PATH。 </P>
      <P>如果可选参数认识,参数值要检查。如果发现错误,属性被丢弃,错误子码是Optional Attribute 
      Error.数据域是这个属性(类型,长度和值)。 </P>
      <P>如果任何属性在UPDATE消息中出现多次,错误子码是Malformed Attribute List。 </P>
      <P>UPDATE消息的NLRI域作语法检查。如果语法错误,错误子码是Invalid Network Field。 </P>
      <P><A id=64 title=64 name=64></A><STRONG>6.4 NOTIFICATION 消息错误处理</STRONG> 
      </P>
      <P>如果对端发送NOTIFICATION消息,在消息中有错误,很不幸没有办法报告这个错误,通过又一个NOTIFICAITON消息。任何这种错误,,比如不认识的错误吗或者错误子码,应该注意,在本地记录,同时引起对端管理的注意。实现手段就不是本文档讨论的问题了。 
      </P>
      <P><A id=65 title=65 name=65></A><STRONG>6.5 Hold Timer 溢出错误处理</STRONG> 
      </P>
      <P>如果系统在OPEN消息的Hold 
      Time域说明的周期内没有收到连续的KEEPALIVE和/或UPDATE和/或NOTIFACATION消息,错误子码是Hold Timer 
      Expired Error Code 的NOTIFICATION消息发送出去同时BGP连接断开。 </P>
      <P><A id=66 title=66 name=66></A><STRONG>6.6 有限状态及错误处理.</STRONG> </P>
      <P>BGP 有限状态机探测的任何错误(比如,接受到不认识事件)通过发送NOTIFICATION消息指示,错误子码是Finite State 
      Machine Error。 </P>
      <P><A id=67 title=67 name=67></A><STRONG>6.7 终止</STRONG> </P>
      <P>如果出现任何致命错误(在这个部分说明),BGP对端可以选择在给定的任何时间关闭BGP连接,通过发送错误码是Error Code 
      Cease的NOTIFACATION消息。然而,Cease NOTIFACATION消息必须不使用,当这个部分说明的致命错误不存在。 </P>
      <P><A id=68 title=68 name=68></A><STRONG>6.8 连接冲突检测</STRONG> </P>
      <P>如果一对BGP发言者尝试互相同时建立TCP连接,在一对发言者之间的两个并行的连接形成,我们称为连接冲突。很明显,一个连接应该关闭。 </P>
      <P>基于BGP标示符的值,建立了约定来探测当冲突发生的时候哪一个BGP连接是先来的。约定时比较冲突的BGP对端的标示符同时保留使用较高的BGP标示符的BGP发言者初始化的连接。 
      </P>
      <P>在收到OPEN消息,本地系统应该检测所有的在OnenConfirm状态的连接。BGP发言者也可以检测在OpenSent状态的连接,如果他通过本协议以外的手段知道对端的BGP标示符。如果在这些连接中,有一个连接到远端的BGP发言者,他的BGP标示符等于在OPEN消息中的标示符,本地系统执行下面的冲突解决过程: 
      </P>
      <OL>
        <LI>本的系统的BGP发言者比较远端系统的BGP标示符。(在OPEN消息中说明) 
        <LI>如果本的BGP标示符的值小于远端,本的系统关闭已经存在的BGP连接(已经在OpenConfirm 
        状态的那个),同时接受远端系初始哈的BGP连接。 
        <LI>否则,本地系统关闭新建立的BGP连接(和新收到的OPEN消息关联的),继续使用存在的那个(已经在OpenConfirm 状态的那个)。 
        </LI></OL>
      <P>比较BGP标示符是把他们看作(4字节长)无符号整数。 </P>
      <P>和已经在建立状态的BGP连接冲突的连接导致无条件关闭新建立的连接。注意连接冲突不能被探测,如果有连接在Idle,或者Connect,或者Active状态。 
      </P>
      <P>关闭这个BGP连接(这是冲突解决过程的结果)是通过发送NOTIFICATION消息,错误子码是Cease. </P></TD></TR>
  <TR>
    <TD align=right><A 
      href="http://www.networkdictionary.cn/comment/reply/1310#contents">返回目录</A></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=5 width=550 border=0>
  <TBODY>
  <TR>
    <TD><A id=7 title=7 name=7></A>7. BGP版本商议</TD></TR>
  <TR>
    <TD>
      <P>BGP发言者可以商议协议版本,通过多次尝试打开一个BGP连接,使用两边都支持的最高版本。如果建立尝试失败,错误吗是OPEN Message 
      Error, 错误子码是Unsupported 
      VersionNumber,BGP发言者得到他尝试的版本号,对端尝试的版本号,在NOTIFICATION消息中对端发送的版本号。如果两个对端支持一个或多个公共版本,可以很快决定最高的支持版本。 
      </P>
      <P>为了支持BGP版本商议,未来的BGP版本保留OPEN和NOTIFACATION 消息的格式。 </P></TD></TR>
  <TR>
    <TD align=right><A 
      href="http://www.networkdictionary.cn/comment/reply/1310#contents">返回目录</A></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=5 width=550 border=0>
  <TBODY>
  <TR>
    <TD><A id=8 title=8 name=8></A>8. BGP 有限状态机</TD></TR>
  <TR>
    <TD>
      <P>本部分使用状态机(FSM)明BGP的操作。下面是BGP操作的FSM简要的说明和回顾。BGP FSM精华版本在附录1中说明。 </P>
      <P>开始BGP在Idle状态。 </P>
      <P>Idle状态: </P>
      <P>在这个状态,BGP拒绝任何进入的BGP连接。不为对端分配任何资源。响应Start事件(系统或者操作者初始化),本地系统初始化所有的BGP资源,开始ConnectRetry计时器,初始化传输连接到别的BGP对端,当检听到远端BGP对端初始化BGP连接,改变状态到连接。ConnectRetry计时器的确切值是本地设置,但是要有效大于允许TCP初始化。 
      </P>
      <P>如果BGP发言者探测到错误,关闭连接转换状态到Idle。脱离Idle状态需要Start事件的产生。如果这个事件自动产生,连续的BGP错误会导致发言者的抖动。为了避免这个情况,建议先前由于错误而转换到Idle状态的对端的Start事件不应该立即产生。在连续产生的Start事件之间的时间,如果事件时自动产生的,应该指数增长。初始计时器的值应该是60秒。计时应该每连续产生一次就加倍。 
      </P>
      <P>在Idle状态下任何别的事件被忽略。 </P>
      <P>连接状态: </P>
      <P>在这个状态BGP等待传输协议连接的完成。 </P>
      <P>如果传输协议连接成功,本地系统清除ConnectRetry计时器,完成初始化,发送OPEN消息到对端,改变状态到OpenSent. </P>
      <P>如果传输协议连接失败(比如,重穿超时),本的系统重启ConnnectRetry计时器,继续侦听远端BGP对端初始化的连接,改变它的状态到Active状态。 
      </P>
      <P>响应ConnectRetry计时器溢出事件,本地系统重启ConnectRetry计时器,初始化传输连接到BGP对端,继续侦听远端BGP对端初始化的连接,停留在Connect状态。 
      </P>
      <P>Start事件在Active状态被忽略。 </P>
      <P>响应其他的事件(被别的系统或者操作者初始化),本地系统释放连接占有的所有的BGP资源,转换状态到Idle。 </P>
      <P>Active状态: </P>
      <P>在这个状态,BGP尝试通过初始化传输协议连接来得到对端。 </P>
      <P>如果传输协议连接成功,本地系统清除ConnectRetry计时器,完成初始化,发送OPEN消息到对端,设置Hold计时器为一个很大值,改变状态到OpenSent。计时器值建议是4分钟。 
      </P>
      <P>响应ConnectRetry计时器溢出事件,本的系统重启ConnectRetry计时器,初始化传输连接到别的BGP对端,继续侦听远端BGP对端初始化的连接,改变状态到Connect. 
      </P>
      <P>如果本的系统探测到远端尝试建立BGP连接到自己,远端的IP地址不是期望的,本的系统重启ConnectRetry计时器,拒绝尝试连接,继续侦听远端BGP对端初始化的连接,停留在Active状态。 
      </P>
      <P>Start事件在Active状态被忽略。 </P>
      <P>响应任何别的事件(别的系统或者操作者初始化),本的系统释放连接占有的所有的资源,改变状态到Idle. </P>
      <P>OpenSent状态: </P>
      <P>在这个状态BGP等待来自对端的OPEN消息。当OPEN消息受到,所有的域要检查正确性,如果BGP消息头检查或者OPEN消息检查探测到错误(见部分6。2),或者由连接冲突(见部分6。8),本的系统发送NOTIFACATION消息,改变状态到Idle。 
      </P>
      <P>如果在OPEN消息内没有错误,BGP发送KEEPALIVE消息设置KeepAlive计时器。Hold计时器,先前被设置为一个大值(见上面),被商议的Hold 
      Time值替代(见部分4。2)。如果商议的Hold Time值是0,Hold 
      Time计时器和KeepAlive计时器要重启。如果Autonomous System 
      域的值是和本地AS号码一样的,连接是“内部”连接,否则是“外部”连接。(这会影响下面所描述的UPDATE消息的处理。)最后,转态转换到OpenConfirm。 
      </P>
      <P>如果从承载传输协议收到断开通告,本的系统关闭BGP连接,重启ConnectRetry计时器,同时继续侦听远端BGP初始化的连接,进入Active状态。 
      </P>
      <P>如果Hold计时器溢出,本的系统发送NOTIFICATION消息,错误码是Hold Timer Expired ,同时改变状态到Idle。 
      </P>
      <P>响应Stop事件(系统或者操作者初始化),本地系统发送NOTIFIC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -