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

📄 rfc1771.txt

📁 很多RFC的中文文档
💻 TXT
📖 第 1 页 / 共 5 页
字号:
错误子码设置为Connection Not Synchronized。

	如果消息头的长度域小于19字节或者大于4096字节,或者OPEN消息的长度域小于最小的
OPEN消息长度,或者UPDATE消息的长度域小于UPDATE消息的最小长度,或者KEEPALIVE消息
的长度域小于KEEPALIVE消息的最小长度,或者NOTIFICATION消息的长度小于最小的
NOTIFICATION消息的长度。错误子码设置为Bad Message Length。数据域包含了错误的长度。

消息头的pe 域不认识,错误子码设置为Bad Message Type。数据域包含了错误的Type域。

6.2 OPEN 消息错误处理
	处理OPEN消息探测到的错误通过发送NOTIFACAITION指示,错误子码是OPEN Message
   Error。错误子码取决于特定的错误。

	如果OPEN消息Version域内的版本号不支持,错误子码设置为Unsupported Version 
Number。数据域是2字节的无符号整数,说明最大的本地支持的小于对端BGP提出的版本。(在
OPEN消息中收到)
如果OPEN消息的Autonomous System域不支持,错误子码设置为Bad Peer AS。可接受的
AS号码的确定超出了文档的范围。

	如果OPEN消息的Hold Time域不可接受,错误子码必须设置为Unacceptable Hold Time。
应用必须拒绝一到两秒的Hold Time值。应用可以拒绝任何建议的Hold Time。接受Hold Time
的应用必须使用Hold Time的商议值。

	如果OPEN消息的BGP Identifier域语法错误。错误子码设置为Bad BGP Identifier。语
法错误意味着BGP Identifier 是错误的标示符。

	如果OPEN消息的一个Optional Parameter不认识,错误子码设置为Unsupported 
Optional
   Parameters。

	如果OPEN消息承载了Authentication Information (作为可选参数), 激活相应的认证
过程。如果认证过程(基于认证码和认证数据)失败,错误子码设置为 Authentication 
Failure。

6.3 UPDATE 消息错误处理
处理UPDATE消息探测的错误通过发送NOTIFACATION说明,错误码是UPDATE Message
Error。错误子码决定于具体的错误。

UPDATE消息的错误检查开始是路径属性检查。如果不可用路由长度或者整个属性长度太大
(也就是说,如果Unfeasible Routes Length + Total  Attribute Length + 23 ) message 
Length), 错误子码是Malformed Attribute List。

如果认识的属性的属性标志和属性类型码矛盾,错误子码设置为Attribute Flags Error。
数据域包含了错误的属性 (类型,长度和值)。

如果认识的属性的属性长度和期望的长度矛盾(根据属性类型码),错误子码是Attribute 
Length Error。数据域包含了错误的属性 (类型,长度和值)。

如果强制公认属性没有表示,错误子码设置为Missing Well-known Attribute。数据域包括
了漏掉的公认属性的类型码。

如果强制公认属性不认识,错误子码设置为Unrecognized Well-known Attribute。数据域
包含了不认识的属性(类型,长度,值)。

如果ORIGIN属性值不认识,错误子码是Invalid Origin Attribute.  数据域包含了不认识
的属性(类型,长度,值)。

如果NEXT-HOP属性是语法错误,错误子码是Invalid NEXT_HOP Attribute。数据域包含了不
正确的属性(类型,长度,值)。语法错误意思是NEXT-HOP属性表示无效IP地址。语义检验
只用在外部BGP链节上。意味着IP地址的接口,在NEXT-HOP中说明,和接受BGP发言者共享了
公共的子网但是不是接受BGP发言者的IP地址。如果NEXT-HOP属性是语义不正确,错误要记
录,路由被忽略。在这种情况下,不发送NOTIFACAITON消息。

AS-PATH属性要检查语法错误。如果路径语法错误,错误子码是Malformed AS_PATH。

如果可选参数认识,参数值要检查。如果发现错误,属性被丢弃,错误子码是Optional 
Attribute Error.数据域是这个属性(类型,长度和值)。

如果任何属性在UPDATE消息中出现多次,错误子码是Malformed Attribute List。

UPDATE消息的NLRI域作语法检查。如果语法错误,错误子码是Invalid Network Field。

6.4 NOTIFICATION 消息错误处理
如果对端发送NOTIFICATION消息,在消息中有错误,很不幸没有办法报告这个错误,通过又
一个NOTIFICAITON消息。任何这种错误,,比如不认识的错误吗或者错误子码,应该注意,
在本地记录,同时引起对端管理的注意。实现手段就不是本文档讨论的问题了。

6.5 Hold Timer 溢出错误处理
如果系统在OPEN消息的Hold Time域说明的周期内没有收到连续的KEEPALIVE和/或UPDATE和
/或NOTIFACATION消息,错误子码是Hold Timer Expired Error Code 的NOTIFICATION消息
发送出去同时BGP连接断开。

6.6 有限状态及错误处理.
BGP 有限状态机探测的任何错误(比如,接受到不认识事件)通过发送NOTIFICATION消息指
示,错误子码是Finite State Machine Error。

6.7 终止
如果出现任何致命错误(在这个部分说明),BGP对端可以选择在给定的任何时间关闭BGP
连接,通过发送错误码是Error Code Cease的NOTIFACATION消息。然而,Cease NOTIFACATION
消息必须不使用,当这个部分说明的致命错误不存在。

6.8 连接冲突检测
如果一对BGP发言者尝试互相同时建立TCP连接,在一对发言者之间的两个并行的连接形成,
我们称为连接冲突。很明显,一个连接应该关闭。

基于BGP标示符的值,建立了约定来探测当冲突发生的时候哪一个BGP连接是先来的。约定时
比较冲突的BGP对端的标示符同时保留使用较高的BGP标示符的BGP发言者初始化的连接。

在收到OPEN消息,本地系统应该检测所有的在OnenConfirm状态的连接。BGP发言者也可以检
测在OpenSent状态的连接,如果他通过本协议以外的手段知道对端的BGP标示符。如果在这
些连接中,有一个连接到远端的BGP发言者,他的BGP标示符等于在OPEN消息中的标示符,本
地系统执行下面的冲突解决过程:

1.本的系统的BGP发言者比较远端系统的BGP标示符。(在OPEN消息中说明)

2.如果本的BGP标示符的值小于远端,本的系统关闭已经存在的BGP连接(已经在OpenConfirm 
状态的那个),同时接受远端系初始哈的BGP连接。

3.否则,本地系统关闭新建立的BGP连接(和新收到的OPEN消息关联的),继续使用存在的
那个(已经在OpenConfirm 状态的那个)。

比较BGP标示符是把他们看作(4字节长)无符号整数。

和已经在建立状态的BGP连接冲突的连接导致无条件关闭新建立的连接。注意连接冲突不能
被探测,如果有连接在Idle,或者Connect,或者Active状态。

关闭这个BGP连接(这是冲突解决过程的结果)是通过发送NOTIFICATION消息,错误子码是
Cease.

7.  BGP版本商议
BGP发言者可以商议协议版本,通过多次尝试打开一个BGP连接,使用两边都支持的最高版本。
如果建立尝试失败,错误吗是OPEN Message Error, 错误子码是Unsupported Version
   Number,BGP发言者得到他尝试的版本号,对端尝试的版本号,在NOTIFICATION消息中对
端发送的版本号。如果两个对端支持一个或多个公共版本,可以很快决定最高的支持版本。
为了支持BGP版本商议,未来的BGP版本保留OPEN和NOTIFACATION 消息的格式。

8.  BGP 有限状态机
本部分使用状态机(FSM)明BGP的操作。下面是BGP操作的FSM简要的说明和回顾。BGP FSM
精华版本在附录1中说明。

开始BGP在Idle状态。

Idle状态:

	在这个状态,BGP拒绝任何进入的BGP连接。不为对端分配任何资源。响应Start事件(系
统或者操作者初始化),本地系统初始化所有的BGP资源,开始ConnectRetry计时器,初始
化传输连接到别的BGP对端,当检听到远端BGP对端初始化BGP连接,改变状态到连接。
ConnectRetry计时器的确切值是本地设置,但是要有效大于允许TCP初始化。

如果BGP发言者探测到错误,关闭连接转换状态到Idle。脱离Idle状态需要Start事件的产生。
如果这个事件自动产生,连续的BGP错误会导致发言者的抖动。为了避免这个情况,建议先
前由于错误而转换到Idle状态的对端的Start事件不应该立即产生。在连续产生的Start事件
之间的时间,如果事件时自动产生的,应该指数增长。初始计时器的值应该是60秒。计时应
该每连续产生一次就加倍。

	在Idle状态下任何别的事件被忽略。

	连接状态:

	在这个状态BGP等待传输协议连接的完成。

	如果传输协议连接成功,本地系统清除ConnectRetry计时器,完成初始化,发送OPEN
消息到对端,改变状态到OpenSent.

	如果传输协议连接失败(比如,重穿超时),本的系统重启ConnnectRetry计时器,继
续侦听远端BGP对端初始化的连接,改变它的状态到Active状态。

	响应ConnectRetry计时器溢出事件,本地系统重启ConnectRetry计时器,初始化传输连
接到BGP对端,继续侦听远端BGP对端初始化的连接,停留在Connect状态。

	Start事件在Active状态被忽略。

	响应其他的事件(被别的系统或者操作者初始化),本地系统释放连接占有的所有的BGP
资源,转换状态到Idle。

	Active状态:

	在这个状态,BGP尝试通过初始化传输协议连接来得到对端。

	如果传输协议连接成功,本地系统清除ConnectRetry计时器,完成初始化,发送OPEN
消息到对端,设置Hold计时器为一个很大值,改变状态到OpenSent。计时器值建议是4分钟。

	响应ConnectRetry计时器溢出事件,本的系统重启ConnectRetry计时器,初始化传输连
接到别的BGP对端,继续侦听远端BGP对端初始化的连接,改变状态到Connect.

如果本的系统探测到远端尝试建立BGP连接到自己,远端的IP地址不是期望的,本的系
统重启ConnectRetry计时器,拒绝尝试连接,继续侦听远端BGP对端初始化的连接,停留在
Active状态。

	Start事件在Active状态被忽略。

	响应任何别的事件(别的系统或者操作者初始化),本的系统释放连接占有的所有的资
源,改变状态到Idle.

	
OpenSent状态:

	在这个状态BGP等待来自对端的OPEN消息。当OPEN消息受到,所有的域要检查正确性,
如果BGP消息头检查或者OPEN消息检查探测到错误(见部分6。2),或者由连接冲突(见部
分6。8),本的系统发送NOTIFACATION消息,改变状态到Idle。

	如果在OPEN消息内没有错误,BGP发送KEEPALIVE消息设置KeepAlive计时器。Hold计时
器,先前被设置为一个大值(见上面),被商议的Hold Time值替代(见部分4。2)。如果
商议的Hold Time值是0,Hold Time计时器和KeepAlive计时器要重启。如果Autonomous 
System 域的值是和本地AS号码一样的,连接是“内部”连接,否则是“外部”连接。(这
会影响下面所描述的UPDATE消息的处理。)最后,转态转换到OpenConfirm。

	如果从承载传输协议收到断开通告,本的系统关闭BGP连接,重启ConnectRetry计时器,
同时继续侦听远端BGP初始化的连接,进入Active状态。
	
	如果Hold计时器溢出,本的系统发送NOTIFICATION消息,错误码是Hold Timer Expired ,
同时改变状态到Idle。

	响应Stop事件(系统或者操作者初始化),本地系统发送NOTIFICATION消息,错误码是
Cease同时改变状态到Idle。

	Start事件在OpenSent状态被忽略。

	对别的事件的响应,本的系统发送NOTIFICATION消息,错误码是Finite State Machine 
Error同时改变状态到Idle。

	无论何时BGP改变状态从OpenSet道Idle,关闭BGP(以及传输层)连接释放连接占用的所
有的资源。

	OpenConfire状态:

	在这个状态,BGP等待KEEPALIVE或者NOTIFICATION消息。

	如果本的系统受到KEEPALIVE消息,改变状态到Established。

	如果在收到KEEPALIVE消息之前,Hold 计时器溢出,本的系统发送NOTIFICATION消息,
错误码是Hold Timer Expired,改变状态到Idle.

	如果本的系统受到NOTIFICATION消息,改变状态到Idle。

	如果KeepAlive计时器溢出,本的系统发送KEEPALIVE消息,重启他的KeepAlive计时器。

	如果从底层的传输协议受到断开通告,本的系统状态转换到Idle。

	响应Stop事件(系统或者操作者初始化)本地系统发送NOTIFICATION消息,错误码是
Cease ,改变状态到Idle。

	Start事件在OpenConfirm状态被忽略。

	响应别的事件,本的系统发送NOTIFICATION消息,错误码是Finite State Machine 
Error,改变状态到Idle。

⌨️ 快捷键说明

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