📄 networkdictionary 网络大典.htm
字号:
<P>BGP使用TCP[4]作为传输协议。TCP满足BGP的传输需求并在所有的商业路由器和主机上使用。在后面的叙述中,术语“传输协议连接”可以理解为TCP连接。BGP使用TCP端口179建立连接。
</P>
<P>本文档使用术语自治系统(AS)。自治系统的经典定义是在统一技术管理下的一系列路由器,在AS内部使用内部网关协议和通用的度量路由数据包,在AS外部使用外部网关协议路由数据包。由于本定义的发展,通常一个AS可以使用几个内部网关协议同时在AS内部使用多种度量。使用自治系统这个术语强调了以下事实,即使使用了多个IGP和度量,对别的AS而言,AS的管理表现出一致的路由计划和一致的目的地可达。
</P>
<P>在互联网中使用BGP的计划,包括拓扑问题,BGP和IGP的交互,路由策略规则的实施,在随同文档[5]中表述。本文当是一系列探究BGP应用各方面问题计划的开始。请发表评论到BGP邮件列表(bgp@ans.net).
</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=3 title=3 name=3></A>3. 操作总结</TD></TR>
<TR>
<TD>
<P>两个系统通过传输协议互联。他们交换消息来打开和确认连接参数。初始的数据流是整个BGP路由表。增加的更新作为路由表改变发送。因此,BGP发言者必须保存在连接期间所有对等体的整个BGP路由表的当前版本。KeepAlive心跳消息周期性发送来保证连接的存在。发送通知消息报错或者特别情况。如果一个连接遇到一个错误情况,要发送通知消息并且关闭连接。
</P>
<P>执行边界网关协议的主机不一定是路由器。一个非路由主机可以通过EGP甚至内部网关协议和路由器交换路由信息。然后非路由主机可以通过BGP和别的AS中的边界路由器交换路由信息。这种应用构架可以用于更进一步的研究。
</P>
<P>如果一个特定AS有多个BGP发言者同时为别的AS提供中转业务,应该注意保证本AS中对路由有一致的观点。AS内部路由的一致看法由内部路由协议提供。AS外部对路由的一致看法由所有AS内部的BGP发言者保持BGP一一互联。使用通常的策略,BGP发言者对哪一个边界路由器服务为和别的AS的外出/进入点达成一致。这些信息可能通过内部网关协议通信到AS的内部路由器。注意在BGP发言者把中转业务通告到别的AS之前所有的内部路由器需要更新中转信息。
</P>
<P>不同AS之间的BGP发言者的连接被称为“外部”链路。同一个AS内部的BGP连接被称为“内部”链路。同样不同AS之间的对端被称为外部对端,相同AS之间的对端被称为内部对端。
</P>
<P><A id=31 title=31 name=31></A><STRONG>3.1 路由:通告和存储</STRONG> </P>
<P>从协议的用途出发路由被定义为组合了一个目的地和到这个目的地的路径属性的信息<BR>单位。 </P>
<UL>
<LI>路由在一对BGP发言者之间通过UPDATE消息广播。目的地也就是在网络层可达信息(NLRI)内报告的IP地址,路径是在UPDATE消息路径属性域内报告的信息。
<LI>路由存储在路由信息库(RIB)内:也就是the Adj-RIBs-In, the Loc-RIB, and the
Adj-RIBs-Out. 将被广播到别的BGP发言者的路由放在Adj-RIB-Out内部;在本地BGP发言者使用的路由放在Loc-RIB,
这些路由的下一跳信息保存在BGP发言者的转发信息库内;别的BGP发言者收到的路由信息保存在Adj-RIBs-In内部。 </LI></UL>
<P>如果一个BGP发言者选择路由通告,他可以在通告路由到对端之前加入和修改路由的路径属性。 </P>
<P>BGP提供机制告诉对端先前的路由通告不再能使用。有三种方式供BGP发言者指示撤销某条路由的服务。 </P>
<OL>
<LI>在UPDATE消息的WITHDRAWN ROUTES域内通告先前广播的路由目的地IP前缀,这样相应的路有被标志为不再使用,
<LI>使用了相同网络层可达信息的替代路由被通告,
<LI>BGP发言者-发言者的连接被关闭,强制撤销这一对发言者通高的所有的路由服务。 </LI></OL>
<P><A id=32 title=32 name=32></A><STRONG>3.2 路由信息库</STRONG> </P>
<P>BGP发言者的路由信息库(RIB)包括三个不同部分: </P>
<OL>
<LI>Adj-RIBs-In: Adj-RIBs-In 保存了从输入UPDATE消息学习到的路由信息,这是决策过程的输入。
<LI>Loc-RIB: Loc-RIB保存了BGP发言者根据本地策略在Adj-RIBs-In内选择的本地路由息。
<LI>Adj_RIBs_Out:
Adj_RIBs_Out保存了本地BGP发言者通告到对端的路由。Adj_RIBs_Out内部的消息被放在UPDATE消息内部发送的对端。
</LI></OL>
<P>总之,Adj_RIB_In包括了被对端广播到BGP发言者的路由信息;Loc_RIB包括了被本地决策过程选择的路由信息;Adj_RIBs_Out组织路由使用UPDATE消息通告到特定对端。
</P>
<P>尽管本概念模型区分Adj-RIBs-In,Loc-RIB,和
Adj-RIBs-Out,这并不意味着也没有必要具体应用中维护路由信息的独立拷贝。应用的选择(例如,信息库的三份拷贝或者一个拷贝的指针)不受协议限制。
</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=4 title=4 name=4></A>4. 消息格式</TD></TR>
<TR>
<TD>
<P>本章描述BGP的消息格式。 </P>
<P>消息通过一个稳定的传输协议互联发送。消息只有在被完整收到之后才会处理。最大的消息是4096字节。最小的消息就是一个不包括消息体的BGP消息头,19字节。
</P>
<P><A id=41 title=41 name=41></A><STRONG>4.1 消息头格式</STRONG> </P>
<P>每一个消息包括一个定长的消息头。消息头后面可以/可以不包含数据部分,这取决于消息类型。这些域设计如下: </P>
<P><IMG height=199 alt=消息头格式
src="NetworkDictionary 网络大典.files/rfc1771-1.htm" width=518> </P>
<P>Marker(标记): </P>
<P>本16字节的域包含消息接收者可以预测的值。如果消息类型是OPEN,或者OPEN消息承载了认证信息(作为可选参数),标记必须是全1。否者,标记的值要使用认证机制来计算(认证机制是通过认证信息的一部分来指定的)。标记可以用来探测BGP对端的同步丢失,认证进入的BGP消息。
</P>
<P>长度(Length): </P>
<P>两字节无符号整数指定了消息的字节全长,包括头部的字节。这也就是说,允许在传输层数据流定位下一个消息(的标记域)。长度的值必须最少19字节最大4096字节,同时由于不同的消息有更多的约束。不允许“填充”多余的数据在消息后,所以长度域是需要的最小值。
</P>
<P>类型(Type): </P>
<P>一字节的无符号整数制定了消息类型编码。如下定义: </P>
<UL>
<LI>1 - OPEN
<LI>2 - UPDATE
<LI>3 - NOTIFICATION
<LI>4 - KEEPALIVE </LI></UL>
<P><A id=42 title=42 name=42></A><STRONG>4.2 OPEN消息格式</STRONG> </P>
<P>在传输协议连接建立之后,两边发送的第一个消息是OPEN消息。如果OPEN消息可以接受,需要发回一个KEEPALIVE消息来确认OPEN消息。一旦确认了OPEN消息,UPDATE,KEEKPALIVE和NOTIFICATION消息可以交换。
</P>
<P>在定长的BGP消息头后面,OPEN消息包含下列域: </P>
<P><IMG alt=OPEN消息格式 src="NetworkDictionary 网络大典.files/rfc1771-2.htm">
</P>
<P>Version(版本): </P>
<P>1字节无符号整数指示消息的协议版本号。当前的BGP版本号是4。 </P>
<P>My Autonomous System(我的自治系统): </P>
<P>2字节无符号整数指示发送者自治系统号。 </P>
<P>Hold Time(保持时间): </P>
<P>2字节的无符号整数指示了发送者期望的Hold计时器的秒数。在接收OPEN消息后,BGP发言者必须使用配置的Hold计时器和收到的Hold计时器来计算Hold计时器的值。Hold计时器必须要末是0要末最少3秒。应用可以根据Hold计时器来拒绝连接。计算好的值指示了在连续的KEEPALIVE和/或UPDATE消息之间可以流逝的最大秒数。
</P>
<P>BGP Identifier (BGP标示符): </P>
<P>4字节无符号整数指示了BGP发言者的标示符。给定的BGP发言者设置BGP标示符为IP地址。在启动的时候决定BGP表示符,对每一个本地端口和每一个对端是一样的。
</P>
<P>Optional Parameters Length(可选参数长度): </P>
<P>1字节无符号整数指示可选参数域的字节总长度。如果这个域是0,说明没有可选参数。 </P>
<P>Optional
Parameters(可选参数):这个域包含了可选参数清单,每一个参数编码为<参数类型,参数长度,参数值>三元组。 </P>
<P><IMG alt="Optional Parameters(可选参数):"
src="NetworkDictionary 网络大典.files/rfc1771-3.htm"> </P>
<P>参数类型是1个字节明确指示了参数的类型。参数长度1子节包含参数值的字节长度。参数值是变长域根据参数类型有不同的解释。 </P>
<P>本文档定义了下列可选参数: </P>
<P>a)认证消息(参数类型1): </P>
<P>选参数用来认证BGP对端。参数值包含1字节认证编码后面是变长的认证数据。 </P>
<P><IMG alt=认证消息(参数类型1) src="NetworkDictionary 网络大典.files/rfc1771-4.htm">
</P>
<P>Authentication Code(认证编码): </P>
<P>1字节无符号整数指示了使用的认证机制。当指定认证机制的时候,需要说明三件事情: </P>
<UL>
<LI>认证编码的值用来指示认证机制,
<LI>认证数据的格式和含义,
<LI>Marker标示域计算值的算法。 </LI></UL>
<P>注意可以使用另外的认证机制在建立传输层连接时。<BR><BR>Authentication Data(认证数据): </P>
<P>这个域的格式和含义取决于认证编码。 </P>
<P>OPEN消息的最小长度是29字节(包括消息头)。 </P>
<P><A id=43 title=43 name=43></A><STRONG>4.3 UPDATE消息格式</STRONG> </P>
<P>UPDATE消息用来发送路由信息到BGP对端。UPDATE消息报内的信息可以被用来构造AS之间的关系描述。通过应用以下讨论的规则,路由环路和别的异常可以测出并清除出AS间路由。UPDATE消息用来广播一条可用路由到对端,或者撤销多条不可用路由(见3。1)。UPDATE消息可以同时广播可用路由并撤销多个不可用路由。UPDATE消息总是包括定长消息头,同时可选的包括下面的域:
</P>
<P><IMG alt=UPDATE消息格式 src="NetworkDictionary 网络大典.files/rfc1771-5.htm">
</P>
<P>Unfeasible Routes Length(不可用路由长度): </P>
<P>2字节无符号整数指示了撤销路由的字节总长度。这个值必须保证网络层可达信息域的长度被确定。 </P>
<P>0说明没有撤销路由, UPDATE消息内部没有撤销路由。 </P>
<P>Withdrawn Routes(撤销路由): </P>
<P>可变长路由域包括一系列的IP前缀说明撤销服务的路由。每一个IP前缀编码为〈长度,前缀〉二元组,如下描述: </P>
<P><IMG height=69 alt=可变长路由域
src="NetworkDictionary 网络大典.files/rfc1771-6.htm" width=230> </P>
<P>使用和含义如下: </P>
<P>a) Length(长度): </P>
<P>长度指示了IP前缀的比特数。0长度指示了匹配所有IP地址的前缀(前缀本身为0字节) </P>
<P>b) Prefix(前缀): </P>
<P>前缀包含了IP地址前缀后面是填充比特保证域结尾符合字节边界。注意填充比特的值无意义 </P>
<P>Total Path Attribute Length(总的路径属性长度): </P>
<P>2字节无符号整数值时路径属性域字节总长度。值必须使下文中网络层可达域的长度能够被探测到。 </P>
<P>值0指示在UPDATE消息中没有网络层可达信息域。 </P>
<P>Path Attributes(路径属性): </P>
<P>在每一个UPDATE消息中有变长的路径属性序列。每一个路径属性是<属性类型,属性长度,属性值>变长三元组属性类型是2字节域包括了属性标志字节和属性类型码字节。
</P>
<P><IMG height=71 alt=UPDATE消息
src="NetworkDictionary 网络大典.files/rfc1771-7.htm" width=262> </P>
<P>属性标志字节第一高位比特(比特0)是可选比特。定义了属性是否是可选的(设为1)或者是公认的(设为0)。属性标志字节第二高位比特(比特1)是转发比特。定义一个可选的属性是否是转发的(如果设置为1)或者不是转发的(设为0)。公认属性的转发位必须设为1。(参看部分5讨论转发属性)。
</P>
<P>属性标志字节的第三比特(比特2)是部分比特。定义是否包括在可选转发属性内的信息是部分的(设置为1)或者是完整的(设置为0)。公认属性和可选非转发的部分位必须是0。
</P>
<P>属性标志字节的第四比特(比特3)是扩展长度比特。定义了是否属性长度是1字节(如果设置为0)或者是2字节(如果设置为1)。仅仅当属性值超过255字节的时候,扩展长度可以使用。
</P>
<P>属性标志字节低字节顺序4比特没有被使用。必须填0(接收不处理)。 </P>
<P>属性类型编码字节包含了属性类型码。当前定义的属性类型码在部分5讨论。 </P>
<P>如果属性标志字节的扩展长度比特被设置为0,路径属性的第三个字节包含了属性数据的字节长度。 </P>
<P>如果属性标志字节的扩展长度比特设置为1,那末路径属性的第三和第四个字节包含了属性数据的字节长度。 </P>
<P>路径属性剩下的字节代表属性值应该通过属性标识和属性类型码翻译。支持的属性类型码,它们的属性值和使用如下定义: </P>
<P>a) ORIGIN (类型码 1): </P>
<P>ORIGIN是公认强制属性定义了路径信息的来源。本数据字节假定如下值: </P>
<P>值 含义<BR>0 IGP – 网络层可达信息和来源AS同内部<BR>1 EGP – 网络层可达信息通过EGP学习<BR>2
INCOMPLETE – 通过别的方式学习网络层可达信息 </P>
<P>它的使用在5.1.1定义。 </P>
<P>b) AS_PATH (类型编码2): </P>
<P>AS-PATH是公认强制属性由一系列AS路径段组成。每一个AS路径段表示为三元组<路径段类型,路径段长度,路径段值>。路径段类型是1字节长度域有下列定义值。
</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -