更新时间:2022-09-20 15:41:12
本节书摘来异步社区《OSPF和IS-IS详解》一书中的第2章,第2.3节,作者: 【美】Jeff Doyle 译者: 孙余强 责编: 傅道坤,更多章节内容可以访问云栖社区“异步社区”公众号查看。
BGP设计与实现
BGP路径属性是一组描述BGP前缀特性的参数。由于BGP首先是一个路由选择策略工具,因此BGP在影响路径选择的时候,广泛地使用了这些属性。在设计一个有效率的BGP路由选择体系结构中,有效地利用这些属性是十分关键的。这一节将着重讲述一些通用的BGP属性,而在后面的章节中会作更为深入的讨论。
Cisco IOS软件目前支持以下这些属性:
这个属性指出了前缀的起源。有3种可能的起源:
在路径选择过程中,具有较低的ORIGIN值的前缀被优先选择。在前缀被注入进BGP时,它的ORIGIN属性是自动被定义的,但是可以使用路由映射来更改。例如,如果前缀通过redistribute命令被重分布到BGP中,那么它的ORIGIN属性就会被设置为3;如果前缀通过network命令被注入到BGP中,那么它的ORIGIN属性就会被设置为0。事实上,由network命令发起的路由优于那些被重分布的路由。
AS_PATH列表以相反的顺序列出了一条前缀先后所经过的自治系统,最后一个AS放置在该列表的开始处。AS_PATH的主要目的是为AS域间路由选择提供环路防止机制。列表中可接受的自治系统的数目在1~255之间。因为AS_PATH列表最短的路径优先,因此在列表中前置(prepending)相同的AS号是影响入站路径选择的常用方法。Cisco IOS软件在AS_PATH中支持4种类型的AS段:
SET和SEQUENCE的不同之处在于,SET选项下的自治系统的列表是无序的(关于该路径所经过的自治系统),而SEQUENCE选项下的自治系统的列表是有序的。后两者仅仅应用于本地联盟内部发起的路径。另外,在路径选择中,它们的计数方法是不同的,这将在“路径决策过程”一节中讨论。
从BGP的角度来看,这个属性定义了到达某条前缀的下一跳IP地址。这并不意味着下一跳地址必须是直连的。如果BGP下一跳并不是直连的下一跳,那么就需要在IP RIB中执行递归路由查找。前缀必须要先有可达的下一跳,然后BGP在***路径选择过程中才会考虑这条前缀。换句话说,下一跳必须要在路由选择表中某条前缀的下面,包括默认路由0.0.0.0/0。BGP路径的下一跳属性通常在3个地方被设置:
MULTI_EXIT_DISC(MED)属性典型地被用在AS间的链路上,以区分到达相同的邻居自治系统的多个出口/入口点。Cisco IOS软件也允许你使用命令- bgp always-compare-med
,在不同的自治系统之间比较MED。MED值由度量值来表示。它的用法与度量的用法是一致的,具有较低MED值的路径被优先选择。
在Cisco IOS软件中,下面是一些MED设置和通告的规则:
— 如果通过network或redistribute命令注入到BGP中的路由是来自于直连路由的,那么BGP MED被设为0;
— 如果通过aggregate-address命令注入路由,那么BGP MED不被设置。
LOCAL_PREF是iBGP宣告者用来计算每一条外部路由的优先程度的属性。本地优先属性在iBGP对等体之间被交换,以设置离开AS的优先出口点。具有较高的LOCAL_PREF值的路径被优先选择。这个属性不包含在eBGP前缀通告中(典型地,在入境eBGP更新中被手工设置),并且仅仅被同一个AS内的路径选择处理所使用。作为比较,在eBGP链路上,MED从一个AS被发送到另外一个邻居AS,以影响接收AS的出境策略。
注意:
Cisco IOS软件中另外一个参数——WEIGHT(权重)可以影响路径选择。这个参数是Cisco专有的,而且对配置这个参数的路由器来说是本地有效的。也就是说,WEIGHT设置不在路由器之间交换。
COMMUNITY被一组共享相同的特性的前缀所定义。多个团体可以应用到一条前缀上,每个团体有4字节长。团体属性有以下两种类型:
Well-known communities(熟知团体)——当接收到这些带有团体属性的前缀时,对等体会自动地根据预先定义的团体属性的意义来采取操作。不需要额外的配置。在RFC 1997中,熟知团体属性落在保留值的范围内,即0xFFFF0000~0xFFFFFFFF。
Private communities(私有团体)——由网络管理员定义的团体,并且在不同自治系统的对等体之间,这些团体必须相互协调。必须明确地配置所采取的行为。私有团体的值在保留范围以外。
当前,Cisco IOS软件支持4种熟知团体属性:
更常用的团体是私有团体。使用它们的主要目的是为前缀附加管理标记,以便制定合适的策略。私有团体使用AS:number的格式,其中AS是指本地AS号或对等体AS号,而number是指本地分配的,或与对等体AS协商分配的任意数值,用来表示可以应用策略的一组团体。这种用户友好的(user-friendly)格式可以在全局配置模式下由ip bgp-community new-format命令来启用。
当路由反射器(route reflector,RR)被部署时,ORIGINATOR_ID在AS内被用作环路防止机制。它由第一个RR创建,并且不被后续的RR所更改。ORIGINATOR_ID是以下这些路由器的路由器标识(router ID):
ORIGINATOR_ID是一个32bit长的数值,并且只应该从iBGP对等体那里接收到。在RR上,ORIGINATOR_ID用来替代路径选择过程中的router ID。当iBGP宣告者接收到的更新包含了它自己的ORIGINATOR_ID时,它就会丢弃路由,这样就打破了路由选择信息环路。如果ORIGINATOR_ID已经存在的话,BGP宣告者就不应该再创建一个。
当路由反射器被部署时,CLUSTER_LIST在AS内被用作另一个环路防止机制。这个属性记录了在RR的环境中,前缀所经过的CLUSTER_ID的列表。当RR从它的客户那里反射路由到簇(cluster)外的非客户时,或从非客户反射路由到客户时,或从一个客户反射路由到另一个客户时,它会把本地CLUSTER_ID添加到CLUSTER_LIST的前面。如果路由更新的CLUSTER_LIST为空,那么RR就会创建一个。使用这个属性,RR能够识别出路由选择信息是否又环回到了同一个簇。如果在CLUSTER_LIST中发现了本地CLUSTER_ID,那么这个更新就会被丢弃,这样就打破了路由选择信息环路。第7章将详细地讨论CLUSTER_LIST和CLUSTER_ID的设计和配置问题。