📄 rfc1771.txt
字号:
+---------------------------+
| Length (长度,1字节 ) |
+---------------------------+
| Prefix (变量 ) |
+---------------------------+
域使用和含义如下:
a) 长度:
长度域指示了IP地址前缀的比特长度。0地址指示了匹配所有IP地址的前缀(前
缀本身0字节)
b) 前缀:
前缀域包含了IP地址前缀跟随足够的填充比特使=域的结尾能够落在字节边
界。注意填充比特的值不关紧要。
UPDTAE消息的最小长度是23字节—19字节定长消息头+2字节不可用路由长度
+2字节总的路径属性长度(不可用路由长度是0同时总的路径属性长度是0)。
UPDATE消息能够广播至少一条路由,路由可用几个路径属性描述。所有的路径
树形包括在一个给定的UPDATE消息适用于在UPDATE消息的网络层可达信息域内包
含的目的地。
一个UPDATE消息能够列出多个路由撤销服务。每一个路由通过目的地制定(表
示为IP前缀),明白的根据上下文指定了BGP发言者-BGP发言者连接先前广播过的
路由
一个UPDATE消息可以仅仅撤销路由,这样就不需要包括路径属性或者网络层可
达信息。相反,也可以仅仅广播可达路由,这样WITHDRAWN ROUTES不需要了。
4.4 KEEPALIVE消息格式
BGP不使用任何基于传输协议的心跳机制来确定对端是否可达。相反,
KEEPALIVE消息在对端之间交换频率要满足HOLD计时器不溢出的标准。合理的最
大KEEPALIVE消息时间是HOLD计时器间隔的1/3。KEEPALIVE消息必须不能比每秒
一个更频繁。应用可以调整发送KEEPALIVE消息的速率使用HOLD计时间隔的函数。
如果商议哦HOLD计时间隔是0,周期性的KEKPALIVE消息必须不发送。
KEEPALIVE消息只包含消息头长度是19字节。
4.5 NOTIFICATION消息格式
NOTIFACATION消息在探测到错误情况时发送。BGP连接发送他之后要立即关闭。
除了顶长BGP消息头,NOTIFICATION消息包括下面的域。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error code | Error subcode | Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
错误码:
1字节的无符号整数指示了NOTIFICATION的类型。下列的错误类型编码定义:
错误码 符号名称 参考
1 消息头错误 部分 6.1
2 OPEN消息错误 部分6.2
3 UPDATE消息错误 部分6.3
4 Hold 计时器溢出 部分6.5
5 FSM错误 部分6.6
6 终止 部分6.7
错误子码:
一个字节的无符号整数提供了更多的信息关于报告的错误的种类。每一个错误可以由一个或
者多个错误子码,如果没有特别的错误子码定义,在错误子码域填充0(不具体)。
Message Header Error subcodes(消息头错误子码):
1 - 连接未同步.
2 - 错误消息长度.
3 - 错误消息类型.
OPEN Message Error subcodes(OPEN 显系错误子码):
1 - 不支持版本号.
2 - 错误对端AS.
3 - 坏的BGP标示符. '
4 - 不支持的选项参数.
5 - 认证失败.
6 - 不支持的HOLD时间.
UPDATE Message Error subcodes(UPDATE消息错误子码):
1 – 畸形属性链表.
2 – 不认识工人属性
3 – 缺少工人属性
4 – 属性标志错误
5 – 属性长度错误
6 – 无效ORIGION属性
7 – AS路由环路
8 – 无效的NEXT-HOP属性
9 – 可选参数错误
10 – 无效网络域
11 – 畸形AS_PATH.
数据:
变长的域白用来诊断NOTIFICATION的原因。数据与的内容依赖于错误码和错误子码。部分6
有详细说明。
注意数据与的长度可以使用公式来计算按消息长度来确定。
Message Length = 21 + Data Length
NOTIFICATION消息最小的长度是21字节,(包括消息头)
5. 路径属性
这个部分讨论UPDATE消息的路径属性。
路径属性分为下面四类。
1. Well-known mandatory.(公认强制)
2. Well-known discretionary.(公认自决)
3. Optional transitive.(可选转发)
4. Optional non-transitive.(可选非转发)
公认属性是所有BGP应用都要认识的。有一些属性是情之的必须被包括在每一个ATE消息内
部。别的是自觉的可以也可以不在特定的UPDATE消息内部发送。
所有的公认属性必须发送到BGP对端(在必要的更新之后)。
作为公认属性的附加,每一个路径可以包括一个或者多个可选属性。不是所有的BGP应用都
要支持所有的可选属性。如里一个不认识的可选属性是通过设置属性标志字节的转发比特来
确定的。又不认识转发属性的路径应该被接受。如果一个有不认识的转发属性的路经被接受
并且被转发别的BGP,不认识的路径转发可选属性必须和路径一起传递到别的BGP对端,同时
属性标志字节的部分位设置为1。如果一个路径有不认识的转发可选属性被接受并且转发到
别的BGP对端,他的属性标志字节的部分比特被先前的AS设置为1,当前的AS不能把他设置为
0。不认识的非转发可选属性必须默默丢弃不要发送到别的BGP对端。
新的转发可选属性可以被起源者和别的AS附加到路径上。如果不是被其源者附加的,属性标
志的部分位被设置为1。附加新的非转发可选属性依赖于特定属性的特性。每一非转发可选
属性的文档要包括这些法则。(MULTI-EXIT-DISC属性的描述给出了一个例子)所有可选的
属性
(转发和非专发的)可以被路径上的AS更新(如果合适)。UPDATE西噢啊系的发送者要排序
路径树形在UPDATE消息内同时准备处理没有顺序的UPDATE消息的路径属性。
同样的属性不能在UPDATE消息的路径属性消息与内出现两次。
5.1 路径属性使用
每一个BGP路径属性的使用描述如下:
clauses.
5.1.1 ORIGIN
ORIGIN式是一个公认强制属性。ORIGIN 属性是产生路由的自治系统产生的。所有选择通
告路由到别的BGP发言者的BGP发言者可以把这个包括在UPDATE消息内。
5.1.2 AS-PATH
AS-PATH是公认强制属性。本属性定义了UPDATE消息那的路由信息经过的AS。列表的元素可
以是AS_SET或者AS_SEQUENCE。
当BGP发言者通告从别的BGP发言者 UPDATE的消息学习到的路由,应该根据路由发送到的BGP
发言者的位置,修改路由 AS-PATH的属性。
a)当给定的BGP发言者通告路由到本AS的别的BGP发言者,通告发言者应该修改路由的
AS-PATH属性。
b)当给定的BGP发言者通告路由到邻居AS的BGP发言者,通告发言者因该修改路由的AS-PATH
属性。
1)如果AS-PATH的第一个路径属性是AS-SEQUENCE类型,本地系统应该把字节的AS号码
作为序列的最后一个AS号码加在后面(放在最左面)。
2)如果AS-PATH的第一个属性类型是AS-SET类型,本地系统应该添加一个新的路径段
AS-SEQUENCE类型,在段的内部放AS号码。
当BGP发言者产生路由:
a)起源发言者应该包括自己的AS号码在发送到邻居AS自治系统的BGP发言者的所有UPDATE消
息的AS-PATH属性中。(在这种情况下,起源发言者的自治系统号因该是AS-PATH属性的入口)。
b)起源发言者因该包括一个空的AS-PATH属性在发送到本地自治系统的BGP发言者的所有
UPDATE消息的AS-PATH属性中。(空的AS-PATH属性是长度域是0的属性)
5.1.3 NEXT-HOP
NEXT-HOP路径属性定义了边界路由器的IP地址,作为到达UPDATE消息的目的地列表的下
一跳。如果边界路由器和对端属于同一个AS,对端是内部边界路由器。否则,是外部边界路
由器。BGP发言者可以通告任何内部边界路由器作为下一跳,如果本边界路由器和IP地址对
应的接口(说明在NEXT-HOP路径属性中)和本地以及远端边界路由器共享公共的子网。BGP
发言者可以通告任何外部边界路由器作为下一跳,如果本边界路由器的IP地址是通过对端
BGP发言者学习到的,同时边界路由器的IP地址相应的接口(在NEXT-HOP路径属性中说明)
和本地以及远端的BGP发言者共享了公共的子网。BGP发言者需要能够支持外部边界路由器的
通告能力不足。
BGP发言者必须不通告对端的一个地址作为NEXT-HOP到这个对端,作为这个发言者产生的路
由。BGP发言者必须不能安装路由把自己作为下一跳。
当BGP发言者通告路由到本地AS的BGP发言者,通告发言者不应该修改路由的NEXT-HOP属性。
当BGP发言者通过内部链路受到路由,可以转发包到NEXT-HOP地址,如果属性中包含的地址
是和本地以及远端BGP发言者在公共的子网上。
5.1.4 MULTI-EXIT-DISC
MULTI-EXIT-DISC属性可以被用来在外部(AS间)链路上区分同一个邻居AS的多个出口或者
说入口。MULTI-EXIT-DISC属性的值时四个字节的无符号数称为一个度量。所有别的因子相
等,具有较低的度量的出口或者入口有较高的优先级。如果在外部链路上收到,
MULTI-EXIT-DISC属性可以通告到内部链路的同一个AS的别的BGP发言者。MULTI-EXIT-DISC
属性不能再通告到邻居AS的别的BGP发言者。
5.1.5 LOCAL_PREF
LOCAL-PREF是公认自决属性,可以包括在发送到本地AS的BGP发言者的UPDATE消息内。BGP
发言者应该为每一条外部路由计算优先级程度同时在通告路由到内部对端的时候包括这个
优先级。优先级高的路由应该使用。BGP发言者因该使用通过LOCAL-PREF学习到的优先级用
于决策过程(见部分9。1。1)。
BGP发言者应该不包括这个属性在发送到邻居AS的发言者的UPDATE消息中。如果BGP发言者受
到一条不在同一个AS内的BGP发言者的UPDATE消息包括了这个属性,这个属性应该被忽略掉。
5.1.6 ATOMIC_AGGREGATE
ATOMIC-AGGREGATE是公认自决属性。如果BGP发言者,当得到一个对端的一些重叠的路由(见
9。1。4),选择了一条更不特殊的路由而不是选择一条更特殊的路由,那末本地系统应该
附加ATOMIC-AGGREGATE属性到路由,当通告道别的BGP发言者的时候(如果属性没有表示在
接收的更不特殊的路由中)。BGP发言者接收具有ATOMIC-AGGREGATE属性的路由不应该从路
由中去掉这个属性,当通告路由到别的BGP发言者的时候。收到具有ATOMIC-AGGREGATE属性
的路由的BGP发言者需要知道如下事实:实际的到达目的地的路由,在NLRI内说明,有自由
环回特性,可以通过AS-PATH属性内没有列出的AS。
5.1.7 AGGREGATOR
AGGREGATOR是可选转发属性,可以包括在聚合形成的更新中,(见9。2。4。2)。执行聚合
的BGP发言者可以加入AGGREGATOR属性,里面包括自己的AS号和IP地址。
6. BGP错误处理
本部分讨论当处理BGP消息探测到错误的时候采取的行动。
当下面描述的任何情况被探测到,NOTIFICATION消息包括制定的错误码,错误子码,数据域,
被发送出去,BGP连接断开。如果错误子码没有指定,必须要使用0。
术语“BGP连接关闭”意思是传输协议连接被关闭同时BGP连接的所有资源被释放。远端对应
的路由表入口被标记无效。在路由被系统探测出来之前,路由无效的事实被发送到BGP对端。
除非特别说明,发送指示错误的NOTIFICATION消息的数据域是空的。
6.1 消息头错误处理.
当处理消息头时所有探测的错误在发送NOTIFICATION消息时用错误码Message Header
Error指示.错误子码依赖于具体的错误。
消息头的Marker域的期望值是全1,如果消息类型是OPEN。别的BGP消息的消息头的
Marker于的期望值决定于BGP OPEN消息的认证信息可选参数的表达和实际的认证机制(如果
BGP OPEN消息表达了认证信息)。如果消息头的Marker域不是期望的,就发生了同步错误,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -