内容
前言
前提条件
需求
使用的组件
惯例
路由器忽略路径的原因
最佳路径算法的工作原理
自定义路径选择过程
BGP
多路径
边界网关协议 (BGP)
路由器通常接收多个指向同一目的地的路径。
BGP
最佳路径算法确定要在
IP
路由表中安装且用于流量转发的最佳路径。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅
Cisco
技术提示规则。
假设路由器针对特定前缀接收的所有路径都排列在一个列表中。
该列表类似于
show
ip bgp
longer-prefixes
命令的输出。
在此情况下,一些路径没有被视为最佳路径的候选对象。
这样的路径通常在
show
ip bgp
longer-prefixes
命令的输出中没有有效标志。
路由器在以下情况下忽略路径:
-
show
ip
bgp
longer-prefixes
输出中标记为“not
synchronized”的路径
如果启用了
BGP
同步,IP
路由表中的前缀必须有一个匹配项,才能将内部
BGP
(iBGP)
路径视为有效路径。
在
Cisco
IOS®
软件中,默认情况下启用
BGP
同步。
如果匹配的路由是从开放最短路径优先
(OSPF)
邻居获知的,则其
OSPF
路由器
ID
必须与
iBGP
邻居的
BGP
路由器
ID
匹配。
大多数用户喜欢使用
no
synchronization
BGP
子命令来禁用同步。
注意: 在
Cisco
IOS
软件版本
12.2(8)T
及更高版本中,默认情况下禁用同步。
-
NEXT_HOP
处于不可访问状态的路径
确保有一个指向与路径关联的
NEXT_HOP
的内部网关协议
(IGP)
路由。
-
来自外部
BGP
(eBGP)
邻居的路径(如果本地自治系统
(AS)
显示在
AS_PATH
中)
这样的路径将被拒绝进入路由器,甚至不会安装到
BGP
路由信息库
(RIB)
中。
这同样适用于通过访问、前缀、AS_PATH
或组列表实施的路由策略所拒绝的任何路径,除非您为邻居配置了
soft-reconfiguration
inbound。
-
如果启用了
bgp
enforce-first-as
且
UPDATE
不包含邻居的
AS
作为
AS_SEQUENCE
中的第一个
AS
编号
在这种情况下,路由器将发送通知并关闭会话。
-
show
ip
bgp
longer-prefixes
输出中标记为“(received-only)”的路径
策略已拒绝这些路径。
然而,路由器已存储这些路径,这是因为您已为发送路径的邻居配置了
soft-reconfiguration
inbound。
BGP
将第一个有效路径指定为当前最佳路径。
然后,BGP
将最佳路径与列表中的下一路径进行比较,直到
BGP
到达有效路径列表的末端为止。
此列表提供用于确定最佳路径的规则:
-
首选具有最高
WEIGHT
的路径。
注意:
WEIGHT
是特定于
Cisco
的参数。
它是配置有该参数的路由器中的本地参数。
-
首选具有最高
LOCAL_PREF
的路径。
注意: 没有
LOCAL_PREF
的路径将视为已经用
bgp
default
local-preference
命令设置了值,或者使用默认值
100。
-
首选通过
network
或
aggregate
BGP
子命令或者通过
IGP
重分配而获得的本地路径。
由
network
或
redistribute
命令发出的本地路径优先于由
aggregate-address
命令发出的本地聚合路由。
-
首选具有最短
AS_PATH
的路径。
注意: 请注意以下内容:
-
首选具有最低源类型的路径。
注意: IGP
的优先级低于外部网关协议
(EGP),而
EGP
的优先级低于
INCOMPLETE。
-
首选具有最低多出口标识符
(MED)
的路径。
注意: 请注意以下内容:
-
只有第一个(相邻)AS 在两个路径中相同时,才进行此比较。 忽略所有联盟的子 AS。
换句话说,只有多个路径的 AS_SEQUENCE 中的第一个 AS 相同时,才比较 MED。 忽略所有之前的 AS_CONFED_SEQUENCE。
-
如果启用了 bgp always-compare-med,则比较所有路径的 MED。
您必须对整个 AS 禁用此选项。 否则,可能出现路由循环。
-
如果启用了 bgp bestpath med-confed,则只比较所有仅包含 AS_CONFED_SEQUENCE 的路径的 MED。
这些路径源自本地联盟。
-
从 MED 为 4,294,967,295 的邻居接收的路径的 MED 在插入 BGP 表之前将会更改。 该 MED 更改为 4,294,967,294。
-
除非启用了 bgp bestpath med missing-as-worst,否则将为收到的没有 MED 的路径指定一个值为 0 的 MED。
如果启用了 bgp bestpath med missing-as-worst,则为路径指定一个值为 4,294,967,294 的 MED。
-
bgp deterministic med 命令也会影响此步骤。
有关演示,请参阅 BGP 路由器如何使用多出口标识符进行最佳路径选择。
-
首选
eBGP
路径而非
iBGP
路径。
如果选择了最佳路径,则转到步骤
9(多路径)。
注意: 包含
AS_CONFED_SEQUENCE
和
AS_CONFED_SET
的路径是联盟的本地路径。
因此,这些路径将视为内部路径。
“联盟外部”和“联盟内部”没有区别。
-
首选具有最低
IGP
度量且指向
BGP
下一跳的路径。
无论是否已选择了最佳路径,均继续。
-
确定
BGP
多路径的路由表中是否需要安装多个路径。
如果尚未选择最佳路径,则继续。
-
当两条路径都是外部路径时,首选先收到的路径(最旧的那个)。
此步骤可最大程度地减小路由抖动,这是因为即使根据下一个决定条件(步骤
11、12
和
13)确定较新的路径将是首选路由,该较新的路径也不会替换较旧的路径。
如果满足下面任意条件,则跳过此步骤:
-
您已启用 bgp best path compare-routerid 命令。
注意: Cisco IOS 软件版本 12.0.11S、12.0.11SC、12.0.11S3、12.1.3、12.1.3AA、12.1.3.T 和 12.1.3.E 提供了此命令。
-
因为路由是从同一路由器接收的,所以多个路径的路由器 ID 相同。
-
没有当前最佳路径。
例如,当提供路径的邻居断开时,当前最佳路径可能丢失。
-
首选来自具有最低路由器
ID 的
BGP
路由器的路由。
路由器
ID
是路由器上的最高
IP
地址,且首选环回地址。
而且,您可以使用
bgp
router-id
命令手动设置路由器
ID。
注意: 如果路径包含路由反射器
(RR)
属性,则在路由选择过程中,发送方
ID
将替代路由器
ID。
-
如果多个路径的发送方或路由器
ID
相同,则首选具有最低群集列表长度的路径。
它只在
BGP
RR
环境中出现。
这使客户端可以与其他群集中的
RR
或客户端建立对等关系。
在此情况下,客户端必须知道特定于
RR 的
BGP
属性。
-
首选来自最低邻居地址的路径。
此地址是在
BGP
邻居配置中使用的
IP
地址。
此地址对应于在与本地路由器的
TCP
连接中使用的远程对等方。
称为
BGP Cost
Community(BGP
成本团体)的扩展团体属性提供了自定义最佳路径选择过程的方式。
用于比较成本团体的其他步骤已添加到最佳路径算法的工作原理部分所述的算法中。
此步骤位于算法中的必要步骤(插入点)之后。
首选具有最低成本值的路径。
注意: 请注意以下内容:
-
如果已发出
bgp
bestpath
cost-community
ignore
命令,则跳过此步骤。
-
成本团体设置子句使用成本团体
ID
编号(0
到
255)和成本编号值(0
到
4,294,967,295)进行了配置。
成本编号值确定首选路径。
将首选具有最低成本编号值的路径。
对于未用成本编号值专门配置的路径,将指定默认成本编号值为
2,147,483,647。
此值是
0 和
4,294,967,295
之间的中央点。
然后通过最佳路径选择过程相应地计算这些路径。
如果两个路径配置有同一成本编号值,则路径选择过程首选具有最低团体
ID
的路径。
-
目前,仅实施
IGP_COST
插入点。
这意味着,在最佳路径算法的工作原理中算法的步骤
8
之后,仅考虑具有
IGP_COST
插入点的成本团体。
BGP
多路径允许安装到同一目的地的多个
BGP 路径的
IP 路由表中。
这些路径与最佳路径一起安装到表中,以实现负载共享。
BGP
多路径不影响最佳路径选择。
例如,路由器仍然根据该算法,将其中一个路径指定为最佳路径,并且将此最佳路径通告其邻居。
下面是 BGP
多路径功能:
-
eBGP
多路径
—
maximum-paths
n
-
iBGP
多路径
—
maximum-paths
ibgp
n
-
eiBGP
多路径
—
maximum-paths
eibgp
n
若要成为多路径候选对象,同一目的地的路径需要使下列这些特性等同于最佳路径特性:
-
权重
-
本地首选
-
AS-PATH
长度
-
始发地
-
MED
-
下列项之一:
某些 BGP
多路径功能对多路径候选对象有额外的要求。
下面是对
eBGP
多路径的额外要求:
下面是对
iBGP
多路径的额外要求:
BGP 最多可在
IP
路由表中插入
n
个最近从多路径候选对象接收的路径。
n
的最大值目前为
6。
当禁用多路径时,默认值为
1。
为了使成本不同的负载平衡,您也可以使用
BGP 链路带宽。
注意: 等效的
next-hop-self
在转发到内部对等方之前,先在
eBGP
多路径中选择的最佳路径上执行。