已知路由
本文档介绍了已知路由、Virtual Private Cloud 网络的动态路由模式如何影响已知路由,以及 Cloud Router 中提供的最佳路径选择模式。
已知路由是指 Cloud Router 使用 BGP 协议从远程对等路由器接收的路由,或您在 Cloud Router 路由器上配置的自定义已知路由:
- BGP 收到的路由
从远程对等方获知的 BGP 路由。对等路由器可以是以下任何一种:
- 本地物理路由器
- 另一个 Cloud Router 路由器
- 路由器设备虚拟机(使用 Network Connectivity Center)
- 来自其他云服务提供商的路由器
- 自定义的已知路由
自定义已知路由是在 Cloud Router 上手动配置的,用于模拟从远程对等方获知的路由。如果您没有管理员控制权来配置远程对等路由器,则自定义已知路由会非常有用。
Cloud Router 会对动态路由的唯一前缀数量强制执行配额,包括从 BGP 对等方动态获知的前缀或手动配置为自定义已知路由的前缀。如需了解详情,请参阅 Cloud Router 路由器配额。
除非您使用启用了数据传输功能的 Network Connectivity Center 混合 spoke,否则 Cloud Router 不会重新通告已知路由。
这两种类型的 Cloud Router 路由器已知路由均由动态路由控制平面和 VPC 网络控制平面处理。处理步骤使用目的地前缀和路由指标在 VPC 网络中创建动态路由。如需了解动态路由控制平面和 VPC 网络控制平面之间的差异,请参阅 Cloud Router 路由器的工作原理。
自定义的已知路由
自定义已知路由提供与 BGP 收到的动态路由相同的优势。与静态路由不同,当下一个跃点的 BGP 会话关闭时,自定义已知动态路由会自动撤消。
自定义已知路由是定义特定下一个跃点(例如 Cloud Interconnect VLAN 连接和高可用性 VPN 隧道)的非 BGP 路由的唯一方式。
如需了解详情,请参阅指定和管理自定义已知路由。
动态路由模式
VPC 网络的动态路由模式会影响动态路由控制平面和 VPC 网络控制平面如何处理收到的 BGP 路由和自定义已知路由,以便在 VPC 网络中创建动态路由。
使用 VPC 网络对等互连时,导出自定义路由的 VPC 网络的动态路由模式可控制如何在导入自定义路由的对等 VPC 网络中创建动态路由。如需了解详情,请参阅 VPC 网络对等互连文档中的动态路由模式的影响。
Google Cloud VPC 网络支持两种动态路由模式:
- 区域动态路由模式
- 每个区域的动态路由控制平面仅处理来自其自身区域的 Cloud Router 路由器 BGP 任务的已知路由。在 VPC 网络的特定区域中创建的结果动态路由仅在该特定区域内具有下一个跃点。
- 全局动态路由模式
- 每个区域的动态路由控制平面都会处理来自其自身区域的 Cloud Router 路由器 BGP 任务的已知路由。每个区域的动态路由控制平面还会将每个前缀的最佳路径发送到 VPC 网络中使用的所有其他区域的动态路由控制平面。在 VPC 网络的特定区域中创建的结果动态路由可以在任何区域中具有下一个跃点。
最佳路径选择模式
Cloud Router 提供两种最佳路径选择模式:标准模式和旧版模式。 最佳路径选择模式适用于 VPC 网络所有区域中通过 Cloud Router 获知的所有路由,包括自定义已知路由。
创建新的 VPC 网络时,旧版模式是默认的最佳路径选择模式。除非您需要标准模式的特定功能或使用依赖于标准模式的 Google Cloud 功能,否则我们建议您使用旧版模式。
用于站点到站点数据传输的 Network Connectivity Center 和 用于第三方网络虚拟设备或路由器设备的 Network Connectivity Center 与标准最佳路径选择或旧版最佳路径选择搭配使用。
Network Connectivity Center 与 VPC spoke 进行的路由交换在最佳路径选择模式方面存在以下限制:
如果某个路由仅由一个 VPC 通告,则旧版模式和标准模式均可按预期运行。
如果多个 VPC 向同一工作负载 VPC 通告同一路由,则以下规则适用:
如果所有 VPC 都使用旧版最佳路径选择,则工作负载 VPC 会对来自不同路由 VPC 的路由应用旧版最佳路径选择。
如果所有 VPC 都使用标准最佳路径选择,则工作负载 VPC 会根据内部算法使用来自某个路由 VPC 的最佳路由。
如果路由 VPC 同时使用旧版最佳路径选择和标准最佳路径选择,则工作负载 VPC 会使用基于旧版最佳路径选择的最佳路由或基于内部算法的标准最佳路径选择最佳路由之一。
如果您计划从多个路由 VPC 通告同一路由,建议您为所有 VPC 网络选择旧版最佳路径选择。
旧版最佳路径选择
本部分介绍了 Cloud Router BGP 任务和动态路由控制平面如何实现旧版最佳路径选择模式。
AS 路径长度
在旧版最佳路径选择模式下,AS 路径信息仅在单个 Cloud Router BGP 任务中相关,并且动态路由控制平面不会使用 AS 路径信息来做出最佳路径选择决策。使用旧版最佳路径选择模式时,如果同一目的地前缀涉及不同的 Cloud Router 软件任务,请不要依赖根据 AS 路径长度信息选择最佳路径。
BGP 会话涉及多个 Cloud Router 路由器 BGP 任务。如需了解详情,请参阅 Cloud Router 路由器 BGP 任务。
BGP 任务选择流程
Cloud Router BGP 任务从其管理的 BGP 会话的对等路由器接收目的地前缀。BGP 任务从其管理的所有 BGP 会话中创建一组唯一的目的地前缀。然后,BGP 任务按照以下流程为每个 BGP 收到的唯一目的地前缀确定至少一个最佳下一个跃点:
最短 AS 路径长度:BGP 任务按 AS 路径长度对下一个跃点列表进行排序,从最短 AS 路径长度到最长 AS 路径长度。排序后,BGP 任务会将所有不具有最短 AS 路径长度的下一个跃点排除在考虑范围之外。
首选来源类型:BGP 任务优先选择使用内部网关协议 (IGP) 的下一个跃点,而不是使用外部网关协议 (EGP) 的下一个跃点;BGP 任务优先选择使用 EGP 的下一个跃点,而不是具有不完整来源类型的下一个跃点。
如果至少有一个下一个跃点的来源类型为 IGP,则 BGP 任务会将所有具有 EGP 或不完整来源类型的下一个跃点排除在考虑范围之外。
如果没有下一个跃点的来源类型为 IGP 且至少有一个下一个跃点的来源类型为 EGP,则 BGP 任务会将所有具有不完整来源类型的下一个跃点排除在考虑范围之外。
最小 MED 值:BGP 任务按最小到最大多出口判别器 (MED) 值对下一个跃点进行排序。排序后,BGP 任务会将所有不具有最小 MED 值的下一个跃点排除在考虑范围之外。
BGP 任务会将每个目的地前缀及其对应的最佳下一个跃点列表发送到区域的动态路由控制平面。在某些情况下,Cloud Router BGP 软件任务也可能会发送已被排除在考虑范围之外的下一个跃点。
动态路由控制平面处理
每个区域的动态路由控制平面都会实施以下配额,这些配额适用于来自 BGP 收到的路由和自定义已知路由的唯一目的地:
在实施之前的 Cloud Router 配额时,动态路由控制平面会舍弃与超出任一 Cloud Router 配额限制的唯一目的地相关联的所有路由信息。如需了解详情,请参阅确定性路由丢弃行为。
实施配额后,动态路由控制平面会对每个未丢弃的唯一目的地前缀应用以下处理算法:
动态路由控制平面会为前缀创建下一个跃点列表。该列表包括:
从 VPC 网络中自己所在区域的每个 Cloud Router 路由器 BGP 任务收到的前缀的下一个跃点和 MED 值。
使用该前缀的自定义已知路由的下一个跃点和优先级值。自定义已知路由的优先级会被视为 MED 值。
仅当包含 Cloud Router 路由器的 VPC 网络使用全局动态路由模式时,才会执行以下步骤:
动态路由控制平面仅会将 MED 值最低的下一个跃点发送到其他区域的动态路由控制平面。如果有多个下一个跃点具有相同的最低 MED 值,则系统会将它们全部导出到其他区域的动态路由控制平面。发送的信息包括下一个跃点和最低 MED 值。
动态路由控制平面会从其他区域中的动态路由控制平面接收下一个跃点和 MED 值列表。动态路由控制平面会将每个下一个跃点添加到其前缀的下一个跃点列表中。添加每个下一个跃点时,动态路由控制平面通过添加区域间成本来调整 MED 值。
动态路由控制平面按照接收的 MED 值从小到大的顺序对前缀的下一个跃点列表进行排序。
动态路由控制平面会截断发送到 VPC 控制平面的路由列表。通常,发送到 VPC 控制平面的路由列表包含具有最低 MED 值的路由,以及(如果可用)具有次最低 MED 值的路由。不过,动态路由控制平面仅保证将具有最低 MED 值的路由发送到 VPC 控制平面。
标准最佳路径选择模式
标准最佳路径选择模式更严格地遵循 RFC 4271。与旧版最佳路径选择模式相比,它具有以下优势:
基于 AS 路径的一致路由:系统会考虑 VPC 网络的所有 Cloud Router 路由器上获知的所有路由的 AS 路径信息。这样,您就可以使用 AS 路径前置来影响流量流动。
更高的灵活性和自定义程度:您可以更好地控制 BGP 前缀在 VPC 网络中的排名,包括能够微调 BGP 最佳路径路由。与静态路由相比,动态路由的 VPC 网络路由优先级始终较低。
使用标准最佳路径选择模式时,Cloud Router 提供了以下配置选项:
比较 MED 值:您可以选择以下任一选项:
始终比较:系统会比较每个目的地前缀的 MED 值,而不考虑 Cloud Router 路由器从中获知前缀的 AS。
有条件比较:前缀按 Cloud Router 路由器从中获知前缀的 AS 进行分组。对于每个 AS 中的每个前缀,跃点会根据 RFC 4721 中所述的 MED 值匹配进行排名。
添加区域到区域间费用:您可以选择是否将区域间费用与 MED 值相加。
BGP 任务选择流程
Cloud Router BGP 任务从其管理的 BGP 会话的对等路由器接收目的地前缀。BGP 任务从其管理的所有 BGP 会话中创建一组唯一的目的地前缀。然后,BGP 任务按照以下流程为每个 BGP 收到的唯一目的地前缀确定至少一个最佳下一个跃点:
最短 AS 路径长度:BGP 任务按 AS 路径长度对下一个跃点列表进行排序,从最短 AS 路径长度到最长 AS 路径长度。排序后,BGP 任务会将所有不具有最短 AS 路径长度的下一个跃点排除在考虑范围之外。
首选来源类型:BGP 任务优先选择使用内部网关协议 (IGP) 的下一个跃点,而不是使用外部网关协议 (EGP) 的下一个跃点;BGP 任务优先选择使用 EGP 的下一个跃点,而不是具有不完整来源类型的下一个跃点。
如果至少有一个下一个跃点的来源类型为 IGP,则 BGP 任务会将所有具有 EGP 或不完整来源类型的下一个跃点排除在考虑范围之外。
如果没有下一个跃点的来源类型为 IGP 且至少有一个下一个跃点的来源类型为 EGP,则 BGP 任务会将所有具有不完整来源类型的下一个跃点排除在考虑范围之外。
考虑邻近 ASN:VPC 网络设置
routingConfig.bgpAlwaysCompareMed
按如下所示控制算法这一步骤:如果
routingConfig.bgpAlwaysCompareMed
为True
,则每个下一个跃点的邻近 ASN 值都不会被视为相关。BGP 任务按最小到最大 MED 值对下一个跃点进行排序。排序后,BGP 任务会将所有不具有最小 MED 值的下一个跃点排除在考虑范围之外。如果
routingConfig.bgpAlwaysCompareMed
为False
或未设置,则每个下一个跃点的邻近 ASN 值都会被视为相关,因此 BGP 任务会执行以下操作:BGP 任务按邻近 ASN 值对下一个跃点列表进行分组。
在每个邻近 ASN 组中,BGP 任务按最小到最大 MED 值对下一个跃点进行排序。(每个邻近 ASN 组中编号最小的 MED 值可能有所不同。)
在每个邻近 ASN 组中,BGP 任务将所有不具有最小 MED 值的下一个跃点排除在考虑范围之外。
BGP 任务会将每个目的地前缀及其对应的未移除的下一个跃点列表发送到区域的动态路由控制平面。在某些情况下,Cloud Router BGP 软件任务也可能会发送已被排除在考虑范围之外的下一个跃点。
动态路由控制平面处理
每个区域的动态路由控制平面都会实施以下配额,这些配额适用于来自 BGP 收到的路由和自定义已知路由的唯一目的地:
在实施之前的 Cloud Router 配额时,动态路由控制平面会舍弃与超出任一 Cloud Router 配额限制的唯一目的地相关联的所有路由信息。如需了解详情,请参阅确定性路由丢弃行为。
实施配额后,动态路由控制平面会对每个未丢弃的唯一目的地前缀应用以下处理算法:
前缀的初始下一个跃点列表:动态路由控制平面会为前缀创建一个初始下一个跃点列表,其中包含以下两项:
BGP 从管理 VPC 网络中 Cloud Router 路由器的 BGP 任务收到的下一个跃点信息,与动态路由控制平面位于同一区域。
前缀的自定义已知路由的下一个跃点信息,在 VPC 网络中的 Cloud Router 路由器上定义,并且与动态路由控制平面位于同一区域。 自定义已知路由应用了以下 BGP 属性:
- AS 路径,仅包含对等方的 ASN。AS 路径长度为 1,并且是对等方的 ASN 的邻近 ASN。
- 来源,设置为不完整。
- MED 值,其中每个自定义已知路由优先级都被视为 MED 值。
- 区域间费用设置为 0。
最短 AS 路径长度:动态路由控制平面按 AS 路径长度对下一个跃点列表进行排序,从最短 AS 路径长度到最长 AS 路径长度。动态路由控制平面会将所有不具有最短 AS 路径长度的下一个跃点排除在考虑范围之外。
首选来源类型:动态路由控制平面优先选择使用 IGP 的下一个跃点,而不是使用 EGP 的下一个跃点;动态路由控制平面优先选择使用 EGP 的下一个跃点,而不是具有不完整来源类型的下一个跃点。
如果至少有一个下一个跃点的来源类型为 IGP,则动态路由控制平面会将所有具有 EGP 或不完整来源类型的下一个跃点排除在考虑范围之外。
如果没有下一个跃点的来源类型为 IGP 且至少有一个下一个跃点的来源类型为 EGP,则动态路由控制平面会将所有具有不完整来源类型的下一个跃点排除在考虑范围之外。
考虑邻近 ASN:VPC 网络设置
routingConfig.bgpAlwaysCompareMed
按如下所示控制算法这一步骤:如果
routingConfig.bgpAlwaysCompareMed
为True
,则每个下一个跃点的邻近 ASN 值都不会被视为相关。在这种情况下,动态路由控制平面会按最小到最大 MED 值对下一个跃点进行排序。具有最小 MED 的下一个跃点的排名最高。动态路由控制平面会将除排名最高的下一个跃点之外的所有下一个跃点排除在考虑范围之外。如果
routingConfig.bgpAlwaysCompareMed
为False
或未设置,则每个下一个跃点的邻近 ASN 值都会被视为相关,因此动态路由控制平面会执行以下操作:动态路由控制平面按邻近 ASN 值对下一个跃点列表进行分组。
在每个邻近 ASN 组中,动态路由控制平面按最小到最大 MED 值对下一个跃点进行排序。每个邻近 ASN 组中编号最小的 MED 值可能有所不同。
在每个邻近 ASN 组中,动态路由控制平面将所有不具有最小 MED 值的下一个跃点排除在考虑范围之外。
在每个邻近 ASN 组中,具有最小 MED 值的下一个跃点的排名最高。动态路由控制平面会将除排名最高的下一个跃点之外的所有下一个跃点排除在考虑范围之外。
将所有排名最高的下一个跃点发送到其他区域:当 VPC 网络的动态路由模式为全球时,动态路由控制平面会将当前排名最高的一组下一个跃点发送到其他区域。
接收来自其他区域的排名最高的跃点:当 VPC 网络的动态路由模式为全球时,动态路由控制平面会从每个其他区域的动态路由控制平面接收前缀排名最高的下一个跃点列表。收到的每个下一个跃点都包含 AS 路径长度、邻近 ASN、来源类型和 MED,以及发送该下一个跃点的动态路由控制平面的区域。
动态路由控制平面会将收到的下一个跃点附加到其前缀的下一个跃点列表中,然后执行以下操作:
重复执行最短 AS 路径长度这一步骤。
重复执行首选来源类型这一步骤。
根据 VPC 网络的
routingConfig.bgpInterRegionCost
设置,重复执行考虑邻近 ASN 这一步骤:如果 VPC 网络的
routingConfig.bgpInterRegionCost
为ADD_COST_TO_MED
,则动态路由控制平面会在重复执行考虑邻近 ASN 这一步骤时使用调整后的 MED 值。每个调整后的 MED 值都是原始 MED 值与区域间费用的总和。动态路由控制平面所在区域中的下一个跃点的区域间费用为0
。从其他区域中的动态路由控制平面获知的下一个跃点具有非零的区域间费用,该费用对于由发送区域和接收区域组成的每个区域对都是唯一的。如果 VPC 网络的
routingConfig.bgpInterRegionCost
为DEFAULT
或未设置,动态路由控制平面会使用原始 MED 值重复执行考虑邻近 ASN 这一步骤。
将所有不具有最低区域间费用的下一个跃点排除在考虑范围之外:当 VPC 网络的动态路由模式为全球时,动态路由控制平面会将具有最低区域间费用的下一个跃点之外的所有下一个跃点排除在考虑范围之外。
将下一个跃点发送到 VPC 控制平面:对于每个唯一目的地前缀,动态路由控制平面会将所有排名最高且区域间费用最低的下一个跃点发送到 VPC 控制平面。这些下一个跃点会在 VPC 网络的动态路由控制平面区域中创建动态路由。这些动态路由的 Andromeda 路由优先级为
65536
。之所以特意选择65536
优先级编号,是因为它比静态路由的最低优先级65535
大 1。因此,如果同一目的地前缀同时存在静态路由和动态路由,则路由顺序会优先选择静态路由。在某些情况下,动态路由控制平面可以发送排名较低或区域间费用并非最低的下一个跃点。这些额外的下一个跃点也会在 VPC 网络的动态路由控制平面区域中创建动态路由,但它们使用较低的 Andromeda 路由优先级,例如
65537
、65538
。
VPC 控制平面处理
每个区域的 VPC 控制平面都会从区域的动态路由控制平面接收候选动态路由。除非动态路由控制平面丢弃某个动态路由,否则 VPC 控制平面会评估每个候选动态路由。评估结果会在包含 Cloud Router 路由器的 VPC 网络中创建动态路由,或禁用候选动态路由。以下是抑制动态路由候选项的原因:
候选动态路由的目的地前缀与本地、对等互连或 Network Connectivity Center 子网路由冲突。如需了解详情,请参阅与动态路由的交互。
在 Cloud Router 路由器处理更新后的 BGP 状态之前,VPC 控制平面会确定候选动态路由的下一个跃点不可用。如需了解详情,请参阅忽略下一个跃点不可用的静态和动态路由。
如果包含 Cloud Router 路由器的 VPC 网络导出自定义路由,而对等 VPC 网络导入自定义路由,则每个区域的 VPC 控制平面还可以在对等 VPC 网络中创建对等互连动态路由。如需了解如何使用 VPC 网络对等互连进行自定义路由交换,请参阅用于交换动态路由的选项。
创建对等连接动态路由时,每个区域的 VPC 控制平面都会根据每个网络独立评估候选动态路由。除了前面提到的抑制情况外,对等互连 VPC 网络中还适用以下其他抑制情况:
如果候选对等互连动态路由的目的地前缀与本地动态路由的目的地前缀完全匹配,则 VPC 控制平面会禁止冲突对等互连动态路由。
如果从两个或更多对等互连的 VPC 网络收到同一目的地前缀的对等互连动态路由候选项,则 VPC 控制平面会使用内部算法来选择要从中导入对等互连动态路由的网络。系统会先评估此内部算法,然后再考虑路由优先级。如需了解详情,请参阅选择单个 VPC 网络中对等自定义路由的下一个跃点。
如果每对等互连组每区域的动态路由数量限制超出其限制,VPC 控制平面只会抑制对等互连动态路由。
由于每个 VPC 控制平面都按网络禁止动态路由,因此请注意以下几点:
如果候选动态路由成为包含创建候选动态路由的 Cloud Router 路由器的 VPC 网络中的本地动态路由,候选动态路由可能在一个或多个对等互连的 VPC 网络中被禁用。
如果候选动态路由在包含创建候选动态路由的 Cloud Router 路由器的 VPC 网络中被禁用,则候选动态路由可能成为一个或多个对等互连 VPC 网络中的对等互连动态路由。
BGP 状态变化
BGP 收到的路由和自定义已知路由会生成动态路由,如最佳路径选择模式中所述。只要建立相应的 BGP 会话,动态路由就会一直存在。当 BGP 会话被视为已关闭或已终止时,系统会移除动态路由。以下是一些常见示例:
如果对等路由器支持优雅重启并发送了优雅重启通知(TCP
FIN
或RST
数据包),则在对等路由器的优雅重启计时器过期后, Google Cloud 会移除从 BGP 会话获知的动态路由。如需了解详情,请参阅优雅重启计时器。如果对等路由器发送 BGP
CEASE
通知, Google Cloud会立即移除从 BGP 会话获知的动态路由。如需了解详情,请参阅 RFC 4271 的第 4.5 节。如果上述通知情况均不适用,并且已达到协商的保留计时器,则 Google Cloud 会移除从 BGP 会话获知的动态路由。如需了解详情,请参阅保留计时器。
Cloud Interconnect 的计划内维护事件会导致在维护连接期间移除下一个跃点为与 Cloud Interconnect 连接关联的 VLAN 连接的动态路由。在计划内维护期间,相应的 BGP 会话会被关闭。为尽量减少中断,请确保您的 Cloud Interconnect VLAN 连接和连接符合以下其中一项要求:
如需详细了解 BFD,请参阅故障事件期间的 BFD。
后续步骤
如需配置自定义已知路由,请参阅指定和管理自定义已知路由。
如需排查 Cloud Router 路由器问题,请参阅以下内容: