AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何排查 Transit Gateway Connect 连接上的 BGP 连接故障?
我的边界网关协议 (BGP) 会话无法通过 AWS Transit Gateway Connect 连接建立。
解决方法
查看 BGP 会话要求
请执行以下操作:
- 确认通用路由封装 (GRE) 隧道的最大传输单元 (MTU) 小于外部接口的 MTU。从外部接口 MTU 中减去 24 字节的 GRE 头部和 20 字节的外部 IP 地址头部开销。
**注意:**GRE 隧道也称为 Transit Gateway Connect 对等。 - 验证您是否已正确配置 Connect 对等,及其在您的设备和中转网关之间是否正常运行。
- 检查您是否使用支持的 BGP 类型,例如用于特定路由行为的内部 BGP (iBGP) 和外部 BGP (eBGP)。
- 在 Connect 连接上创建一个或多个 Connect 对等,并在每个 Connect 对等上建立两个 BGP 会话以实现冗余。
**重要事项:**最佳做法是配置两个 BGP 对等会话。在 AWS 基础架构维护期间,只有一个 BGP 会话的 Connect 对等可能会暂时断开连接。
**注意:**Connect 连接不支持双向转发检测 (BFD) 和正常重启。
有关 Connect 连接要求的更多信息,请参阅要求和注意事项。
检查 AWS 资源是否处于正确状态
查看您的 Connect 连接和 Connect 对等,确保二者处于 Available(可用)状态。
**注意:**在预置完成之前,新的 Connect 对等会一直处于待处理状态。
此外,请确认 Connect 对等配置显示了 BGP 的中转网关地址、对等 IP 地址和内部 CIDR 数据块。
检查 AWS 和您设备上的 BGP 地址和 ASN 配置
当您未正确配置对等方之间的 IP 地址或自治系统编号 (ASN) 时,BGP 邻居关系将无法建立。
**注意:**为了实现冗余,请为每个 Connect 对等使用两个 BGP 对等会话。默认情况下,AWS 会创建两个 BGP 对等会话。如果您有多个 Connect 对等,请配置两个 BGP 对等会话。
首先,检查您的 Connect 对等中的以下配置:
- 对于 InsideCIDR,请验证 BGP 会话是否使用 /29 CIDR 数据块作为对等 IP 地址。
- 对于对等方 ASN,请检查您是指定了 ASN 还是 AWS 分配了默认 ASN。
**注意:**如果您在创建 Connect 对等时未指定 ASN,则 AWS 将使用相同的中转网关 ASN 并创建 iBGP 会话。这可能会导致意外的路由行为。
然后,检查您的设备中的以下配置:
-
验证您是否使用内部 CIDR 数据块中的第一个 IP 地址配置了隧道接口。例如,如果内部 CIDR 数据块范围为 169.254.6.0/29,则在设备隧道上配置 169.254.6.1。
-
验证中转网关是否使用内部 CIDR 数据块范围内的第二个 IP 地址。
Cisco IOS 配置示例:interface Tunnel0 ip address 169.254.6.1 255.255.255.248 tunnel source GRE OUTER IP ADDDRESS tunnel destination TGW TUNNEL IP router bgp 65001 neighbor 169.254.6.2 remote-as 64512 neighbor 169.254.6.2 ebgp-multihop 2 neighbor 169.254.6.2 timers 10 30**注意:**将 169.254.6.1 和 169.254.6.2 替换为内部 CIDR 数据块中的 IP 地址。将 TGW TUNNEL IP 和 GRE OUTER IP ADDRESS 替换为您的值。对于 eBGP,请配置 ebgp-multihop 并将生存时间 (TTL) 值设置为 2。
对 BGP 邻居状态进行故障排除
查看设备上的 BGP 摘要和邻居详细信息。例如,如果您的设备运行 Cisco IOS,请运行以下命令。
要查看与所有邻居的 BGP 会话状态摘要,请运行以下 show ip bgp summary 命令:
show ip bgp summary
要查看与邻居的 BGP 和 TCP 连接的相关信息,请运行以下 show ip bgp neighbors 命令:
show ip bgp neighbors
要查看 BGP 调试日志记录,请运行以下 debug ip bgp 命令:
debug ip bgp
如果您的 BGP 邻居处于 Idle(空闲)、Active(活动)或Connect(连接)状态,请完成以下步骤:
-
运行以下 telnet 命令,测试与您中转网关上配置的 BGP 对等 IP 地址的连接:
telnet TGW-BGP-PEER-IP 179**注意:**将 TGW-BGP-PEER-IP 替换为您的中转网关的 BGP 对等 IP 地址。
-
在您的设备上运行 tcpdump 命令,监控 GRE 数据包和 BGP 流量(如 TCP 端口 179)。
-
验证是否出现 GRE 封装的数据包和端口 179 的 TCP SYN/ACK。
-
如果您的设备使用不同或更短的 BGP 计时器,最佳做法是将设备配置为与中转网关的默认设置相匹配。将 keepalive 设置为 10 秒,将 hold time 设置为 30 秒。
验证路由表关联和传播
完成以下步骤:
- 打开 Amazon VPC 控制台。
- 在导航窗格中,选择 Transit gateway attachments(中转网关连接),然后选择您的连接 ID。
- 在 Details(详细信息)选项卡上,选择路由表 ID,然后检查您是否将该连接与正确的路由表相关联。
- 对于同一路由表,选择 Propagations(传播)选项卡。
- 验证您是否已启用传播,以便路由表能够接受来自 Connect 连接的传播。
如果路由出现在中转网关路由表中,而不是出现在连接的路由表中,请检查您的路由表关联和传播设置。
如果未出现预期路由,请执行以下操作:
- 检查您的设备是否发送了 BGP 通告。此外,检查是否存在可能会阻止通告的导出过滤器或路由映射。
- 对于 iBGP 连接,中转网关仅在路由源自 eBGP 对等方时才会安装路由。验证您的设备通过 iBGP 连接通告的路由是否具有 ASN,或者改用 eBGP。
您可以从设备向 Connect 对等通告的动态路由的默认配额为 1,000。您可以调整此配额。但是,最佳做法是将动态路由的数量限制为 1,000 以防止 BGP 不稳定。
检查 MTU 和分段问题
GRE 封装会增加数据包大小,从而导致数据包分段。当数据包分段时,无法建立 BGP 会话。
要解决此问题,请执行以下操作:
-
验证您是否在设备上正确设置了 GRE MTU。要计算 GRE MTU,请从外部 MTU 中减去 24 字节的 GRE 头部和 20 字节的 IP 地址头部(总计 44 字节)。例如,如果您的外部 MTU 为 1,500,则将您的 MTU 设置为 1,456。
-
要检查 MTU 路径问题,请从您的设备运行以下 ping 命令,使用不同的数据包大小并添加“不分段”标志 -M:
ping -M do -s 1400 TRANSIT_GATEWAY_BGP_PEER_IP**注意:**将 1400 替换为不同的值,找出无需分段即可正常工作的最大 MTU 大小。将 TRANSIT_GATEWAY_BGP_PEER_IP 替换为内部 CIDR 数据块范围中的 BGP 对等 IP 地址。如果您配置了两个 BGP 会话,则同时对两个 BGP 对等 IP 地址运行 ping 命令。
-
在 GRE 接口上运行 tcpdump 或 Wireshark 来检查是否存在分段数据包。查找显示更多分段的 IP 地址标志,并检查 TCP 重新传输情况。
如果发现 MTU 问题,请降低设备上的 GRE 隧道 MTU。此外,在设备上启用最大分段大小 (MSS) 限制,从而避免大型数据包使路径不堪重负。
相关信息
- 语言
- 中文 (简体)
