Amazon VPC Transit Gateways 的工作原理 - Amazon VPC

Amazon VPC Transit Gateways 的工作原理

AWS Transit Gateway 充当区域虚拟路由器,用于路由在您的 Virtual Private Cloud (VPC) 和本地网络之间流动的流量。中转网关根据网络流量的规模灵活地进行扩展。通过中转网关进行路由是在第 3 层运行的,其中,数据包根据其目的地 IP 地址发送到特定的下一个跃点连接。

示例架构图

下图显示了一个具有三个 VPC 连接的中转网关。其中每个 VPC 的路由表均包括本地路由以及会将指向另外两个 VPC 的流量发送到该中转网关的路由。

VPC 连接选项

以下是上图中所示连接的原定设置中转网关路由表示例。每个 VPC 的 CIDR 块都将传播到该路由表。从而让每个连接都可以将数据包路由到另外两个连接。

目标位置 目标 路由类型
VPC A CIDR VPC A 的连接 传播
VPC B CIDR VPC B 的连接 传播
VPC C CIDR VPC C 的连接 传播

资源连接

中转网关连接同时是数据包的源和目的地。您可以将以下资源附加到中转网关:

  • 一个或多个 VPC。AWSTransit Gateway 会在 VPC 子网中部署一个弹性网络接口,然后由该中转网关使用该接口来路由往返所选子网的流量。每个可用区必须至少有一个子网,以确保流量可以到达该可用区内每个子网中的资源。在创建连接期间,只有在特定可用区内启用了某个子网时,才能确保同一可用区内的资源可到达该 Transit Gateway。如果子网路由表包含指向 Transit Gateway 的路由,则只有当 Transit Gateway 在同一可用区的子网中有连接时,才会将流量转发到该 Transit Gateway。

  • 一个或多个 VPN 连接

  • 一个或多个 AWS Direct Connect 网关

  • 一个或多个 Transit Gateway Connect 连接

  • 一个或多个中转网关对等连接

等价多路径路由

AWS Transit Gateway 对大多数连接支持等价多路径 (ECMP) 路由。对于 VPN 连接,您可以在创建或修改中转网关时使用控制台启用或禁用 ECMP 支持。对于所有其他连接类型,以下 ECMP 限制适用:

  • VPC - VPC 不支持 ECMP,因为 CIDR 块不能重叠。例如,您不能将 CIDR 为 10.1.0.0/16 的 VPC 与使用相同 CIDR 的另一个 VPC 连接到中转网关,然后设置路由以对它们之间的流量进行负载均衡。

  • VPN - 禁用 VPN ECMP support(VPN ECMP 支持)选项后,当多条路径的前缀相等时,中转网关会使用内部指标来确定首选路径。有关为 VPN 连接启用或禁用 ECMP 的更多信息,请参阅 Amazon VPC Transit Gateways 中的中转网关

  • AWS Transit Gateway Connect - AWS Transit Gateway Connect 连接自动支持 ECMP。

  • AWS Direct Connect 网关 - AWS Direct Connect 网关连接在网络前缀、前缀长度和 AS_PATH 一模一样时,自动跨多个 Direct Connect 网关连接支持 ECMP。

  • 中转网关对等 - 中转网关对等不支持 ECMP,因为它既不支持动态路由,也不能针对两个不同的目标配置相同的静态路由。

注意
  • 不支持 BGP 多路径 AS-Path Relax,因此您不能在不同的自治系统号 (ASN) 上使用 ECMP。

  • 不同连接类型之间不支持 ECMP。例如,您无法在 VPN 和 VPC 连接之间启用 ECMP。相反,将对中转网关路由进行评估,并根据评估的路径路由流量。有关更多信息,请参阅 路由评估顺序

  • 单个 Direct Connect 网关跨多个中转虚拟接口支持 ECMP。因此,建议您仅设置和使用单个 Direct Connect 网关,不要设置和使用多个网关来利用 ECMP。有关 Direct Connect 网关和公共虚拟接口的更多信息,请参阅如何从公有虚拟接口设置与 AWS 的主动/主动或主动/被动 Direct Connect 连接?

可用区

当您将 VPC 连接到中转网关时,您必须启用要由中转网关使用的一个或多个可用区,以将流量路由到 VPC 子网中的资源。要启用每个可用区,您应指定确切一个子网。中转网关使用此子网中的一个 IP 地址将网络接口放入该子网中。在启用可用区之后,流量可路由到 VPC 中的所有子网,而不只是指定的子网或可用区。然而,只有驻留在拥有中转网关连接的可用区内的资源,才能到达中转网关。

如果流量来自目标连接不存在的可用区,则 AWS 中转网关将在内部将该流量路由到存在该连接的随机可用区。对于这种类型的跨可用区流量,无需支付额外的中转网关费用。

我们建议您启用多个可用区以确保可用性。

使用设备模式支持

如果您计划在 VPC 中配置有状态的网络设备,则可以为该设备所在的 VPC 连接启用设备模式支持。这可以确保在源和目标之间传输流量的生命周期内,中转网关为该 VPC 连接使用相同的可用区。它还允许中转网关将流量发送到 VPC 中的任何可用区,只要该区中存在子网关联。有关更多信息,请参阅 示例:共享服务 VPC 中的设备

路由

您的中转网关使用中转网关路由表在连接之间路由 IPv4 和 IPv6 数据包。您可以将这些路由表配置为传播所连接的 VPC、VPN 连接和 Direct Connect 网关的路由表中的路由。您还可以将静态路由添加到中转网关路由表中。当数据包来自一个连接时,会使用与目的地 IP 地址相符的路由,将该数据包路由到另一个连接。

中转网关对等连接仅支持静态路由。

路由表

您的中转网关自动附带默认路由表。默认情况下,此路由表是默认的关联路由表和默认的传播路由表。或者,如果您禁用路由传播和路由表关联,AWS 不会为中转网关创建默认路由表。

您可以为中转网关创建其他路由表。这样,您就可以隔离连接的子网。每个连接可以与一个路由表相关联。一个连接可以将其路由传播到一个或多个路由表。

您可以在中转网关路由表中创建丢弃与路由匹配的流量的黑洞路由。

将 VPC 附加到中转网关时,您必须向子网路由表添加路由,以使流量通过中转网关进行路由。有关更多信息,请参阅《Amazon VPC 用户指南》中的 Transit Gateway 的路由

路由表关联

您可以将中转网关连接与单个路由表相关联。每个路由表可以与零到多个连接关联,并可以将数据包转发到其他连接。

路由传播

每个连接都附带可以安装到一个或多个中转网关路由表的路由。当连接传播到中转网关路由表时,这些路由安装在路由表中。您无法根据通告的路由进行筛选。

对于 VPC 连接,VPC 的 CIDR 块将传播到中转网关路由表。

当动态路由与 VPN 连接或 Direct Connect 网关连接一起使用时,可以通过 BGP 将从本地路由器获知的路由传播到任何中转网关路由表中。

当动态路由与 VPN 连接一起使用时,路由表中与 VPN 连接关联的路由将通过 BGP 发布给客户网关。

对于 Connect 连接,与 Connect 连接关联的路由表中的路由会通过 BGP 向在 VPC 中运行的第三方虚拟设备(例如 SD-WAN 设备)公开。

对于 Direct Connect 网关连接,允许的前缀交互控制哪些路由将从 AWS 发布到客户网络。

当静态路由和传播路由具有相同的目标时,静态路由具有更高的优先级,因此传播路由不包含在路由表中。如果移除静态路由,则重叠的传播路由将包含在路由表中。

对等连接的路由

您可以将两个中转网关对等连接并在它们之间路由流量。为此,您可以在中转网关上创建对等连接,并指定要与其创建对等连接的对等中转网关。然后,您可以在中转网关路由表中创建静态路由,以将流量路由到中转网关对等连接。路由到对等中转网关的流量随后可以路由到对等中转网关的 VPC 和 VPN 连接。

有关更多信息,请参阅 示例:对等中转网关

路由评估顺序

中转网关路由是按以下顺序评估的:

  • 目标地址的最具体路由。

  • 如果路由的 CIDR 相同,但连接类型不同,则路由优先级如下所示:

    • 静态路由(例如,Site-to-Site VPN 静态路由)

    • 前缀列表引用的路由

    • VPC 传播路由

    • Direct Connect 网关传播路由

    • Transit Gateway Connect 传播路由

    • 通过私有 Direct Connect 传播的路由的 Site-to-Site VPN

    • Site-to-Site VPN 传播路由

    • 中转网关对等传播路由(Cloud WAN)

某些连接支持通过 BGP 的路由通告。如果路由的 CIDR 相同,连接类型也相同,则路由优先级受 BGP 属性控制:

  • AS 路径长度更短

  • MED 值更低

  • 如果附件支持,则首选 eBGP 而不是 iBGP 路由

    重要

    AWS 无法保证如上所述,CIDR、连接类型和 BGP 属性都相同的 BGP 路由的路由优先级顺序保持一致。

AWS Transit Gateway 只显示首选路由。只有不再通知此路由时,Transit Gateway 路由表中才会出现备份路由。例如,如果您通过 Direct Connect 网关和 Site-to-Site VPN 通知相同路由。AWS中转网关将仅显示从 Direct Connect 网关路由接收的路由,因为该路由是首选路由。Site-to-Site VPN 属于备份路由,仅在不再公布 Direct Connect 网关时才会显示。

VPC 和中转网关路由表的差异

无论您使用的是 VPC 路由表还是中转网关路由表,路由表评估都会有所不同。

以下示例显示的是一张 VPC 路由表。VPC 本地路由具有最高的优先级,然后是最具体的路由。在静态路由和传播的路由具有相同的目标时,静态路由具有更高的优先级。

目的地 目标 优先级
10.0.0.0/16

本地

1
192.168.0.0/16 pcx-12345 2
172.31.0.0/16 vgw-12345(静态)或

tgw-12345(静态)

2
172.31.0.0/16 vgw-12345(传播) 3
0.0.0.0/0 igw-12345 4

以下示例显示的是中转网关路由表。如果要选择 AWS Direct Connect 网关连接而不是 VPN 连接,则使用 BGP VPN 连接并传播中转网关路由表中的路由。

目的地 连接(目标) 资源类型 路由类型 优先级
10.0.0.0/16 tgw-attach-123 | vpc-1234 VPC 静态或传播 1
192.168.0.0/16 tgw-attach-789 | vpn-5678 VPN 静态 2
172.31.0.0/16 tgw-attach-456 | dxgw_id AWS Direct Connect 网关 传播 3
172.31.0.0/16 tgw-attach-789 | tgw-connect-peer-123 连接 传播 4
172.31.0.0/16 tgw-attach-789 | vpn-5678 VPN 传播 5

中转网关方案示例

以下是中转网关的常见使用案例。您的中转网关并不仅限于这些使用案例。

示例

    您可以将中转网关配置为连接所有 VPC、AWS Direct Connect 和 Site-to-Site VPN 连接的集中路由器。在该方案中,所有连接与中转网关默认路由表相关联,并传播到中转网关默认路由表。因此,所有连接都可以将数据包路由到彼此,而将中转网关用作简单第 3 层 IP 路由器。

    概述

    下表展示了此场景配置的主要组成部分。在这种情况下,中转网关有三个 VPC 连接和一个站点到站点 VPN 连接。来自 VPC A、VPC B 和 VPC C 并将其他 VPC 中的子网或 VPN 连接作为目的地的数据包,首先通过中转网关路由。

    具有三个 VPC 连接和一个 VPN 连接的中转网关。

    资源

    为此场景创建以下资源:

    路由

    每个 VPC 具有一个路由表,并且中转网关具有一个路由表。

    VPC 路由表

    每个 VPC 具有一个包含 2 个条目的路由表。第一个条目是 VPC 中本地 IPv4 路由的默认条目;此条目允许此 VPC 中的实例相互通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。下表显示了 VPC A 路由。

    目的地 目标

    10.1.0.0/16

    本地

    0.0.0.0/0

    tgw-id

    中转网关路由表

    下面是前一个图中显示的连接的默认路由表示例(启用了路由传播)。

    目的地 目标 路由类型

    10.1.0.0/16

    VPC A 的连接

    传播

    10.2.0.0/16

    VPC B 的连接

    传播

    10.3.0.0/16

    VPC C 的连接

    传播

    10.99.99.0/24

    VPN 连接的连接

    传播

    客户网关 BGP 表

    客户网关 BGP 表包含以下 VPC IP CIDR。

    • 10.1.0.0/16

    • 10.2.0.0/16

    • 10.3.0.0/16

    您可以将中转网关配置为多个隔离的路由器。这类似于使用多个中转网关,但在路由和连接可能更改的情况下可提供更大的灵活性。在此方案中,每个隔离的路由器都有单个路由表。所有与隔离的路由器关联的连接都传播其路由表并与这些路由表关联。与一个隔离的路由器关联的连接可以将数据包路由到彼此,但无法将数据包路由到另一个隔离路由器的连接或从中接收数据包。

    概述

    下表展示了此场景配置的主要组成部分。来自 VPC A、VPC B 和 VPC C 的数据包路由到中转网关。来自 VPC A、VPC B 和 VPC C 中的子网并将 Internet 作为目的地的数据包先通过中转网关进行路由,然后路由到站点到站点 VPN(如果目的地在该网络中)。来自一个 VPC 并将另一个 VPC 中的子网作为目的地的数据包(例如从 10.1.0.0 到 10.2.0.0)通过中转网关进行路由,将在其中阻止这些数据包,因为在中转网关路由表中没有它们的路由。

    具有三个 VPC 连接和一个 VPN 连接的中转网关。

    资源

    为此场景创建以下资源:

    在 VPN 连接启动后,将建立 BGP 会话,VPN CIDR 传播到中转网关路由表,并将 VPC CIDR 添加到客户网关 BGP 表中。

    路由

    每个 VPC 都有一个路由表,而中转网关有两个路由表:一个用于 VPC,另一个用于 VPN 连接。

    VPC A、VPC B 和 VPC C 路由表

    每个 VPC 具有一个包含 2 个条目的路由表。第一个条目是 VPC 中本地 IPv4 路由的默认条目。此条目使该 VPC 中的实例能够相互通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。下表显示了 VPC A 路由。

    目的地 目标

    10.1.0.0/16

    本地

    0.0.0.0/0

    tgw-id

    中转网关路由表

    此方案为 VPC 使用一个路由表,为 VPN 连接使用一个路由表。

    VPC 连接与以下路由表相关联,该路由表具有 VPN 连接的传播路由。

    目的地 目标 路由类型
    10.99.99.0/24 VPN 连接的连接

    传播

    VPN 连接与以下路由表相关联,该路由表具有每个 VPC 连接的传播路由。

    目的地 目标 路由类型

    10.1.0.0/16

    VPC A 的连接

    传播

    10.2.0.0/16

    VPC B 的连接

    传播

    10.3.0.0/16

    VPC C 的连接

    传播

    有关在中转网关路由表中传播路由的更多信息,请参阅使用 Amazon VPC 中转网关启用路由传播到中转网关路由表

    客户网关 BGP 表

    客户网关 BGP 表包含以下 VPC IP CIDR。

    • 10.1.0.0/16

    • 10.2.0.0/16

    • 10.3.0.0/16

    您可以将中转网关配置为多个使用共享服务的隔离路由器。这类似于使用多个中转网关,但在路由和连接可能更改的情况下可提供更大的灵活性。在此方案中,每个隔离的路由器都有单个路由表。所有与隔离的路由器关联的连接都传播其路由表并与这些路由表关联。与一个隔离的路由器关联的连接可以将数据包路由到彼此,但无法将数据包路由到另一个隔离路由器的连接或从中接收数据包。连接可以将数据包路由到共享服务,或从共享服务中接收数据包。如果您具有需要隔离的组,但这些组使用共享服务(例如生产系统),则可以使用该方案。

    概述

    下表展示了此场景配置的主要组成部分。如果数据包来自 VPC A、VPC B 和 VPC C 中的子网并以互联网为目的地,则将首先通过中转网关进行路由,然后路由到 Site-to-Site VPN 的客户网关。如果数据包来自 VPC A、VPC B 或 VPC C 中的子网并以 VPC A、VPC B 或 VPC C 中的某个子网为目的地,则将通过中转网关进行路由,但由于中转网关路由表中没有这些子网的路由,因此将被阻止。来自 VPC A、VPC B 和 VPC C 并将 VPC D 作为目的地的数据包通过中转网关进行路由,然后路由到 VPC D。

    具有四个 VPC 连接和一个 VPN 连接的中转网关。

    资源

    为此场景创建以下资源:

    在 VPN 连接启动后,将建立 BGP 会话,VPN CIDR 传播到中转网关路由表,并将 VPC CIDR 添加到客户网关 BGP 表中。

    • 每个隔离的 VPC 都与隔离路由表关联,并会传播到共享路由表。

    • 每个共享的服务 VPC 都与共享路由表关联,并会传播到两个路由表。

    路由

    每个 VPC 都有一个路由表,中转网关有两个路由表:一个用于 VPC,另一个用于 VPN 连接和共享服务 VPC。

    VPC A、VPC B、VPC C 和 VPC D 路由表

    每个 VPC 都具有一个包含两个条目的路由表。第一个条目是 VPC 中本地路由的默认条目;这项条目允许该 VPC 中的实例在彼此之间进行通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。

    目的地 目标
    10.1.0.0/16 本地
    0.0.0.0/0 中转网关 ID
    中转网关路由表

    此方案为 VPC 使用一个路由表,为 VPN 连接使用一个路由表。

    VPC A、B 和 C 连接与以下路由表相关联,该路由表具有 VPN 连接的传播路由以及 VPC D 的连接的传播路由。

    目的地 目标 路由类型
    10.99.99.0/24 VPN 连接的连接 传播
    10.4.0.0/16 VPC D 的连接 传播

    VPN 连接和共享服务 VPC(VPC D)连接与以下路由表相关联,该路由表具有指向各个 VPC 连接的条目。这样可以通过 VPN 连接和共享服务 VPC 与 VPC 进行通信。

    目的地 目标 路由类型
    10.1.0.0/16 VPC A 的连接 传播
    10.2.0.0/16 VPC B 的连接 传播
    10.3.0.0/16 VPC C 的连接 传播

    有关更多信息,请参阅 使用 Amazon VPC 中转网关启用路由传播到中转网关路由表

    客户网关 BGP 表

    客户网关 BGP 表包含所有这四个 VPC 的 CIDR。

    您可以在多个中转网关之间创建中转网关对等连接。然后,您可以在各个中转网关的连接之间路由流量。在该场景中,VPC 和 VPN 连接与中转网关默认路由表相关联,并传播到中转网关默认路由表。每个中转网关路由表都有一个指向中转网关对等连接的静态路由。

    概述

    下表展示了此场景配置的主要组成部分。中转网关 1 有两个 VPC 连接,中转网关 2 有一个站点到站点 VPN 连接。来自 VPC A 和 VPC B 中的子网并指向 Internet 的数据包通过中转网关 1 路由,然后通过中转网关 2,最后路由到 VPN 连接。

    两个对等中转网关,一个带有两个 VPC 连接,另一个带有一个 VPN 连接。

    资源

    为此场景创建以下资源:

    在创建 VPC 连接时,每个 VPC 的 CIDR 将传播到中转网关 1 的路由表。VPN 连接启动时,会发生以下操作:

    • 建立了 BGP 会话

    • Site-to-Site VPN CIDR 传播到中转网关 2 的路由表

    • VPC CIDR 添加到客户网关 BGP 表中

    路由

    每个 VPC 都有一个路由表,每个中转网关都有一个路由表。

    VPC A 和 VPC B 路由表

    每个 VPC 具有一个包含 2 个条目的路由表。第一个条目是 VPC 中本地 IPv4 路由的默认条目。此默认条目使该 VPC 中的资源能够相互通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。下表显示了 VPC A 路由。

    目的地 目标

    10.0.0.0/16

    本地

    0.0.0.0/0

    tgw-1-id

    中转网关路由表

    以下是中转网关 1 的默认路由表示例,其中启用了路由传播。

    目的地 目标 路由类型

    10.0.0.0/16

    VPC A 的连接 ID

    传播

    10.2.0.0/16

    VPC B 的连接 ID

    传播

    0.0.0.0/0

    对等连接的连接 ID

    静态

    以下是中转网关 2 的默认路由表示例,其中启用了路由传播。

    目的地 目标 路由类型

    172.31.0.0/24

    VPN 连接的连接 ID

    传播

    10.0.0.0/16

    对等连接的连接 ID

    静态

    10.2.0.0/16

    对等连接的连接 ID 静态
    客户网关 BGP 表

    客户网关 BGP 表包含以下 VPC IP CIDR。

    • 10.0.0.0/16

    • 10.2.0.0/16

    您可以配置中转网关,将出站互联网流量从没有互联网网关的 VPC 路由到包含 NAT 网关和互联网网关的 VPC。

    概述

    下表展示了此场景配置的主要组成部分。您的应用程序位于 VPC A 和 VPC B 中,这些应用程序只需要出站互联网访问。您可以为 VPC C 配置公有 NAT 网关和互联网网关,并为 VPC 连接配置私有子网。将所有 VPC 连接到中转网关。配置路由,以便来自 VPC A 和 VPC B 的出站互联网流量经过 VPC C 的中转网关。VPC C 中的 NAT 网关将流量路由到互联网网关。

    具有三个 VPC 连接的中转网关。

    资源

    为此场景创建以下资源:

    • 三个 IP 地址范围不重叠的 VPC。有关更多信息,请参阅 Amazon VPC 用户指南中的创建 VPC

    • VPC A 和 VPC B 各具有带 EC2 实例的私有子网。

    • VPC C 具有以下内容:

      • 附加到 VPC 的互联网网关。有关更多信息,请参阅 Amazon VPC 用户指南中的创建并附加互联网网关

      • 具有 NAT 网关的公有子网。有关更多信息,请参阅 Amazon VPC 用户指南中的创建 NAT 网关

      • 用于中转网关连接的私有子网。私有子网应与公有子网位于同一个可用区。

    • 一个中转网关。有关更多信息,请参阅使用 Amazon VPC 中转网关创建中转网关

    • 中转网关上有三个 VPC 连接。每个 VPC 的 CIDR 块将传播到中转网关路由表。有关更多信息,请参阅 使用 Amazon VPC 传输网关创建 VPC 连接。对于 VPC C,您必须使用私有子网创建连接。如果您使用公有子网创建连接,则实例流量会路由到互联网网关,但互联网网关会丢弃流量,因为实例没有公有 IP 地址。通过将连接放在私有子网中,流量将路由到 NAT 网关,NAT 网关使用弹性 IP 地址作为源 IP 地址将流量发送到互联网网关。

    路由

    每个 VPC 都具有路由表,并且中转网关具有一个路由表。

    VPC A 的路由表

    以下是一个示例路由表。第一个条目使 VPC 中的实例能够相互通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。

    目的地 目标

    VPC A CIDR

    本地

    0.0.0.0/0

    transit-gateway-id

    VPC B 的路由表

    以下是一个示例路由表。第一个条目使该 VPC 中的实例能够相互通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。

    目的地 目标

    VPC B CIDR

    本地

    0.0.0.0/0

    transit-gateway-id

    VPC C 的路由表

    通过向互联网网关添加路由将具有 NAT 网关的子网配置为公有子网。将另一个子网保留为私有子网。

    以下是公有子网的示例路由表。第一个条目使 VPC 中的实例能够相互通信。第二个和第三个条目将 VPC A 和 VPC B 的流量路由到中转网关。剩余条目将所有其他 IPv6 子网流量路由到互联网网关。

    目的地 目标
    VPC C CIDR 本地
    VPC A CIDR transit-gateway-id
    VPC B CIDR transit-gateway-id
    0.0.0.0/0 internet-gateway-id

    以下是私有子网的示例路由表。第一个条目使 VPC 中的实例能够相互通信。第二个条目将所有其他 IPv4 子网流量路由到 NAT 网关。

    目的地 目标
    VPC C CIDR 本地
    0.0.0.0/0 nat-gateway-id
    中转网关路由表

    以下是中转网关路由表的示例。每个 VPC 的 CIDR 块将传播到中转网关路由表。静态路由将出站互联网流量发送到 VPC C。您可以选择通过为每个 VPC CIDR 添加黑洞路由来阻止内部 VPC 通信。

    CIDR Attachment 路由类型

    VPC A CIDR

    VPC A 的连接

    传播

    VPC B CIDR

    VPC B 的连接

    传播

    VPC C CIDR

    VPC C 的连接

    传播

    0.0.0.0/0

    VPC C 的连接

    静态

    您可以在共享服务 VPC 中配置设备(例如安全设备)。在 Transit Gateway 连接之间路由的所有流量首先由共享服务 VPC 中的设备进行检查。启用设备模式后,中转网关使用流哈希算法选择设备 VPC 中的单个网络接口,以便在流的生命周期内将流量发送到此。中转网关为返程流量使用相同的网络接口。这可确保双向流量以对称方式路由,在流量的生命周期内,它将通过 VPC 连接中的同一可用区路由。如果您的架构中有多个中转网关,则每个中转网关都保持自己的会话关联性,并且每个中转网关可以选择不同的网络接口。

    您必须将一个中转网关连接到设备 VPC,以保证流粘性。将多个中转网关连接到单个设备 VPC 并不能保证流粘性,因为中转网关不会彼此共享流状态信息。

    重要
    • 只要源流量和目标流量指向来自同一个 Transit Gateway 连接的集中 VPC(检查 VPC),则设备模式下的流量就会正确路由。如果源和目标位于不同的中转网关连接上,则流量可能会丢失。如果集中式 VPC 接收来自另一个网关(如某个外部网关)的流量,然后在检查后再将这些流量发送到中转网关连接,则流量可能会丢失。

    • 在现有连接上启用设备模式可能会影响该连接的当前路由,因为该连接可通过任何可用区流动。未启用设备模式时,流量会保留到来源可用区。

    概述

    下表展示了此场景配置的主要组成部分。中转网关有三个 VPC 连接。VPC C 是共享服务 VPC。VPC A 和 VPC B 之间的流量将路由到中转网关,然后路由到 VPC C 中的安全设备进行检查,接着路由到最终目的地。设备是一个有状态的设备,因此将同时检查请求和响应流量。为了实现高可用性,VPC C 的每个可用区中都有一个设备。

    共享服务 VPC 中的设备

    您为此场景创建以下资源:

    • 三个 VPC。有关创建 VPC 的信息,请参阅 Amazon Virtual Private Cloud 用户指南 中的创建 VPC

    • 中转网关。有关更多信息,请参阅 使用 Amazon VPC 中转网关创建中转网关

    • 三个 VPC 连接 - 每个 VPC 一个。有关更多信息,请参阅 使用 Amazon VPC 传输网关创建 VPC 连接

      对于每个 VPC 连接,请在每个可用区中指定一个子网。对于共享服务 VPC,这些子网是将流量从中转网关路由到 VPC 的子网。在前面的示例中,这些是子网 A 和 C。

      对于 VPC C 的 VPC 连接,启用设备模式支持,以便将响应流量路由到 VPC C 中与源流量相同的可用区。

      Amazon VPC 控制台支持设备模式。您还可以使用 Amazon VPC API、AWS SDK 或 AWS CLI 启用设备模式或 AWS CloudFormation。例如,将 --options ApplianceModeSupport=enable 添加到 create-transit-gateway-vpc-attachmentmodify-transit-gateway-vpc-attachment 命令。

    注意

    设备模式下的流粘性仅对源自检查 VPC 的源和目标流量有保证。

    有状态设备和设备模式

    如果您的 VPC 连接跨越多个可用区,并且您需要通过同一设备路由源主机和目标主机之间的流量以进行状态检查,请为设备所在的 VPC 连接启用设备模式支持。

    有关详细信息,请参阅 AWS 博客中的集中检查架构

    未启用设备模式时的行为

    如果设备模式未启用,中转网关会尝试在源可用区内的 VPC 连接之间保持流量路由,直到流量到达目的地。只有在可用区出现故障或该可用区中没有与 VPC 连接关联的子网时,流量才会在挂接之间跨过可用区。

    下图显示未启用设备模式支持时的流量。源自 VPC B 中可用区 2 的响应流量由中转网关路由到 VPC C 中的同一可用区。因此,由于可用区 2 中的设备不知道来自 VPC A 中源的原始请求,流量被丢弃。

    到设备的响应流量丢失

    路由

    每个 VPC 都有一个或多个路由表,中转网关有两个路由表。

    VPC 路由表

    VPC A 和 VPC B

    VPC A 和 B 的路由表包含 2 个条目。第一个条目是 VPC 中本地 IPv4 路由的默认条目。此默认条目使该 VPC 中的资源能够相互通信。第二个条目将所有其他 IPv4 子网流量路由到中转网关。以下是 VPC A 的路由表。

    目的地 目标

    10.0.0.0/16

    本地

    0.0.0.0/0

    tgw-id

    VPC C

    共享服务 VPC (VPC C) 对于每个子网有不同的路由表。子网 A 由中转网关使用(您在创建 VPC 连接时指定此子网)。子网 A 的路由表将所有流量路由到子网 B 中的设备。

    目的地 目标

    192.168.0.0/16

    本地

    0.0.0.0/0

    appliance-eni-id

    子网 B(包含设备)的路由表将流量路由回中转网关。

    目的地 目标

    192.168.0.0/16

    本地

    0.0.0.0/0

    tgw-id

    中转网关路由表

    此中转网关为 VPC A 和 VPC B 使用一个路由表,并为共享服务 VPC (VPC C) 使用一个路由表。

    VPC A 和 VPC B 连接与以下路由表关联。路由表将所有流量路由到 VPC C。

    目的地 目标 路由类型

    0.0.0.0/0

    VPC C 的连接 ID

    静态

    VPC C 连接与以下路由表相关联。它将流量路由到 VPC A 和 VPC B。

    目的地 目标 路由类型

    10.0.0.0/16

    VPC A 的连接 ID

    已传播

    10.1.0.0/16

    VPC B 的连接 ID

    传播