关于 BGP
BGP 是一种外部和内部自主系统路由协议。自治系统是一个或一组接受共同管理并采用共同路由策略的网络。BGP 用于交换互联网的路由信息,并且是互联网运营商 (ISP) 之间所使用的协议。
路由表更改
在 BGP 邻居之间首次建立 TCP 连接时,BGP 邻居会交换完整路由信息。当检测到对路由表所做的更改时,BGP 路由器仅会向其邻居发送已更改的路由。BGP 路由器不会发送定期路由更新,并且 BGP 路由更新仅对到达目标网络的最佳路径进行通告。
![]() 注 |
系统通过扫描完整的 AS 路径(在 AS_PATH 属性中指定)并检查本地系统的 AS 编号是否未出现在 AS 路径中来完成 AS 环路检测。默认情况下,EBGP 将获知的路由通告给同一对等体,以防止在执行环路检查时 ASA 上出现额外的 CPU 周期,并避免现有传出更新任务中出现延迟。 |
当存在多个到达某个特定目标的路由时,通过 BGP 获悉的路由的属性可用于确定到达该目标的最佳路径。这些属性称为 BGP 属性,可在路由选择过程中使用:
-
权重 - 这是思科定义的路由器本地属性。权重属性不会向相邻路由器进行通告。如果路由器获悉有多个到达同一目标的路由,则首选权重最高的路由。
-
本地首选项 - 本地首选项属性用于从本地 AS 中选择出口点。与权重属性不同,本地优先属性在整个本地 AS 中传播。如果有多个来自 AS 的出口点,则使用具有最高本地优先属性的出口点作为特定路由的出口点。
-
多出口鉴别器 - 多出口鉴别器 (MED) 或度量属性可用作对外部 AS 关于进入正在通告此度量的 AS 的首选路径的建议。因为正在接收 MED 的外部 AS 也可能正在使用其他 BGP 属性选择路由,所以它仅作为建议。首选 MED 指标较低的路由。
-
源 - 源属性指示 BGP 获悉某个特定路由的方式。源属性可能具有下面三个可能值中的一个,用于路由选择。
-
IGP - 此路由是源 AS 的内部路由。当使用网络路由器配置命令向 BGP 注入路由时,会设置该值。
-
EGP - 此路由通过外部边界网关协议 (EBGP) 获悉。
-
不完整 - 路由源未知或通过其他方式获悉。当路由重新分发到 BGP 时,可能会出现源不完整的情况。
-
-
AS_path - 当路由通告通过一个自治系统时,会在按顺序排列的 AS 编号列表中添加 AS 编号,标识路由通告已经穿越的 AS。仅将拥有最短 AS_path 列表的路由添加至 IP 路由表中。
-
下一跳 - EBGP 下一跳属性是用于到达通告路由器的 IP 地址。对于 EBGP 对等体,下一跳地址是对等体之间的连接 IP 地址。对于 IBGP,EBGP 下一跳地址会携带至本地 AS 中。
在将 VPN 通告的路由重新分发到 iBGP 对等体时,请使用 next-hop-self 命令,以确保使用正确的下一跳 IP 重新分发路由。
-
社区 - 社区属性提供一种目标(称为社区)的分组方式,可对社区应用路由决策(例如,接受、首选项和重新分发)。路由映射用于设置社区属性。预定义的社区属性如下:
-
no-export - 不向 EBGP 对等体通告相应路由。
-
no-advertise - 不向任何对等体进行通告。
-
internet - 此路由向互联网社区进行通告;网络中的所有路由器均属于此类型。
-
何时使用 BGP
客户网络(例如,大学和公司)通常使用 OSPF 等内部网关协议 (IGP) 在其网络内交换路由信息。客户连接到 ISP,然后 ISP 使用 BGP 交换客户路由和 ISP 路由。在自治系统 (AS) 之间使用 BGP 时,该协议称为外部 BGP (EBGP)。如果运营商使用 BGP 在 AS 内交换路由,则此协议称为内部 BGP (IBGP)。
BGP 也可用于通过 IPv6 网络承载有关 IPv6 前缀的路由信息。
BGP 路径选择
BGP 可能会从不同来源接收同一路由的多个通告。BGP 仅选择一个路径作为最佳路径。选择此路径后,BGP 将选定的路径放在 IP 路由表中,并将此路径传播给其邻居。BGP 按显示的顺序使用以下条件为目标选择路径:
-
如果路径指定的下一跳不可访问,则放弃更新。
-
首选权重最高的路径。
-
如果权重相同,则首选具有最高本地优先值的路径。
-
如果本地优先值相同,则首选 BGP 在此路由器上运行所发起的路径。
-
如果未发起路由,则首选 AS_path 最短的路由。
-
如果所有路径的 AS_path 长度相同,则首选源类型最低的路径(其中,IGP 低于 EGP,EGP 低于不完整路径)。
-
如果源代码相同,则首选 MED 属性最低的路径。
-
如果路由的 MED 相同,则首选外部路径而非内部路径。
-
如果路径依然相同,则首选穿过最近的 IGP 邻居的路径。
-
在 BGP 多路径的路由表中确定是否需要安装多个路径。
-
如果两个路径都是外部路径,则首选第一个接收的路径(最早的路径)。
-
首选具有由 BGP 路由器 ID 指定的最低 IP 地址的路径。
-
如果多个路径的发起方或路由器 ID 相同,则首选集群列表长度最短的路径。
-
首选来自最低邻居地址的路径。
BGP 多路径
BGP 多路径允许将多个等成本 BGP 路径的 IP 路由表安装到相同的目标前缀。然后,跨安装的所有路径共享到目标前缀的流量。
这些路径连同最佳路径一起安装在表中,以实现负载共享。BGP 多路径不影响最佳路径选择。例如,路由器仍会根据算法将其中一个路径指定为最佳路径,并将此最佳路径通知其 BGP 对等体。
要想成为多路径的候选对象,指向同一目标的路径需要具有与最佳路径特性相同的以下特性:
-
重量
-
本地优先级
-
AS-PATH 长度
-
源代码
-
多出口鉴别器 (MED)
-
以下选项之一:
-
相邻的 AS 或子 AS(在添加 BGP 多路径之前)
-
AS 路径(在添加 BGP 多路径之后)
-
某些 BGP 多路径功能对多路径候选对象有一些额外要求:
-
此路径应从外部或联盟外部邻居 (eBGP) 获悉。
-
BGP 下一跳的 IGP 指标应等于最佳路径 IGP 指标。
这些是内部 BGP (iBGP) 多路径候选对象的额外要求:
-
此路径应从内部邻居 (eBGP) 获悉。
-
BGP 下一跳的 IGP 指标应等于最佳路径 IGP 指标,除非路由器是面向非等成本 iBGP 多路径配置的。
BGP 可将最多 n 个最近收到的路径从多路候选对象插入到 IP 路由表中,其中 n 是要安装到路由表的路由数,如配置 BGP 多路径时所指定的那样。禁用多路径时的默认值为 1。
对于非等成本的负载平衡,您还可以使用 BGP 链路带宽。
![]() 注 |
等效的下一自跳将在从 eBGP 中选择的最佳路径上执行,并且是在最佳路径转发至内部对等体之前执行。 |