跳至内容

如何排查 Direct Connect 中的第 3 层问题?

3 分钟阅读
0

我想排查 AWS Direct Connect 连接因第 3 层问题而出现的故障。

解决方法

**注意:**对于第 1 层问题,请参阅如何排查 Direct Connect 中的第 1 层问题?对于第 2 层问题,请参阅如何排查 Direct Connect 中的第 2 层问题?

检查 AWS Health Dashboard 中是否存在维护活动

由于正在进行的 AWS 维护可能持续几分钟到几个小时,Direct Connect 连接可能会进入 DOWN 状态。在维护期间,边界网关协议 (BGP) 连接会进入空闲状态。

检查 AWS Health DashboardEvents(事件)部分,查看是否存在正在进行或最近完成的 AWS 维护,这些维护可能会影响您的 Direct Connect 连接。

为关键指标设置通知,以便您接收即时警报。

检查您的 BGP 配置

如果您的虚拟接口状态显示可用,但无法建立 BGP 连接,请执行以下操作:

  • 检查本地 BGP 自治系统编号 (ASN) 和 AWS ASN 是否存在配置问题。
  • 检查 BGP 对等会话两端的对等 IP 地址是否存在配置问题。
  • 配置 MD5 身份验证密钥,使其与下载的路由器配置文件中的密钥相匹配。确保密钥中不包含多余的空格或字符。
  • 对于私有虚拟接口,通告前缀数量不能超过 100 个,而对于公有虚拟接口,则不能超过 1,000 个前缀。<br id=hardline_break/> **注意:**您无法修改或超出这些配额。
  • 停用阻止 TCP 端口 179 或编号较高的临时 TCP 端口的防火墙或网络访问控制列表(网络 ACL)规则。<br id=hardline_break/> **注意:**这些端口是 BGP 在对等体之间建立 TCP 连接所必需的。
  • 检查 BGP 日志中是否存在错误或警告消息。

如果上述步骤无法解决您的 BGP 问题,请执行以下操作:

  • 检查您是否在网关上正确配置了 BGP。
  • 在 BGP 对等 IP 地址之间进行 ping 测试。
  • 从您的网关设备收集 BGP 对等 IP 地址之间流量的数据包捕获。

对 BGP 状态进行故障排除

如果您已正确配置 BGP 但仍遇到第 3 层问题,请对 BGP 状态进行故障排除。

**注意:**Idle 状态是 BGP 等待开始事件的第一个状态。当配置新的 BGP 邻居或重置已建立的 BGP 对等会话时,就会出现开始事件。BGP 会初始化资源,重置 ConnectRetry 计时器,然后发起与远程 BGP 邻居的 TCP 连接。

Connect 状态

Connect 状态期间,BGP 会等待 TCP 三向握手完成。如果握手成功,则连接会进入 OpenSent 状态。

成功连接的示例:

2021-07-04 22:50:20 169.254.60.146 169.254.60.145 TCP 74 34516 → 179 [SYN] Seq=0 Win=2920 Len=0 MSS=1460 SACK_PERM TSval=3030456 TSecr=0 WS=1
2021-07-04 22:50:20.719228 169.254.60.145 169.254.60.146 TCP 74    179 → 34516 [SYN, ACK] Seq=0 Ack=1 Win=26844 Len=0 MSS=1375 TSval=64921081 TSecr=3030456 WS=128
2021-07-04 22:50:20.719453 169.254.60.146 169.254.60.145 TCP 66    34516 → 179 [ACK] Seq=1 Ack=1 Win=2920 Len=0 TSval=3030476 TSecr=64921081

如果连接或 ConnectRetry 失败,则连接会保持在 Active 状态,且不会进入 OpenSent 状态。

要对 Connect 状态问题进行故障排除,请执行以下操作:

  • 要确认两个 BGP 邻居之间是否存在 TCP 连接,请在 TCP 端口 179 上运行 telnet 测试。如果没有 TCP 连接,则检查日志在 TCP 连接期间是否存在错误或丢弃的数据包。
  • 验证您是否在 BGP、网关和 AWS 上正确配置了 BGP 邻居的 IP 地址。
  • 验证您是否在路由器上输入了正确的 BGP 身份验证。

OpenSent 状态

在 BGP 向对等体发送 OPEN 消息后,BGP 会在 OpenSent 状态下等待 OPEN 回复。如果 BGP 成功收到回复,则 BGP 会进入 OpenConfirm 状态,并向对等体发送 keepalive 消息。当连接失败时,BGP 会返回到 IdleActive 状态。

如果 BGP 未能建立连接,请检查日志中是否存在 BGP 邻居发送和接收的包含 BGP 参数的 OPEN 消息。

OPEN 消息示例:

Border Gateway Protocol - OPEN MessageType: OPEN Message (1)  
Version: 4   
My AS: 65000  
Hold Time: 30  
BGP Identifier: 54.241.242.80

此外,请检查 OpenSent 日志,确定失败的原因。

**注意:**AWS 不接受 0 作为 Hold Time(保持时间)值。

OpenConfirm 状态

BGP 会在 OpenConfirm 状态下等待来自对等体的 keepalive 消息。如果 BGP 成功收到消息,则会进入 Established 状态。否则会返回到 IdleActive 状态。

在您的日志中,验证对等体是否已发送 keepalive 消息并且 BGP 已收到该消息。

BGP 对等体之间的 keepalive 消息示例:

65    2021-07-04 22:50:20.744297    169.254.60.146    169.254.60.145    BGP    85    KEEPALIVE Message
66    2021-07-04 22:50:20.765323    169.254.60.145    169.254.60.146    BGP    85    KEEPALIVE Message

Established 状态

Established 状态下,BGP 会在对等体之间交换信息。

BGP 更新消息示例:

Border Gateway Protocol - UPDATE Message
Path attributes
Path Attribute - AS_PATH: 65000
Path Attribute - NEXT_HOP: 169.254.60.146
Network Layer Reachability Information (NLRI)
   192.168.0.0/16

如果 BGP 未能建立连接,则执行以下操作:

  • 检查日志,确保路由器正确交换更新。验证通告的前缀是否与预期路由匹配。
  • 确保 BGP 过滤器或前缀列表不会阻止路由表中的路由传播。
  • 确认对等路由表上通告的路由条目正确无误。
  • 您的 BGP 日志或本地设备可能会显示虚拟网关的 Direct Connect 虚拟接口上的 BGP 对等会话已从 Established 变为 Idle 状态。在这种情况下,请确保对等体通过 BGP 对等会话通告的路由少于 100 个。

对 BFD 问题进行故障排除

AWS 会自动为 Direct Connect 虚拟接口开启异步双向转发检测 (BFD)。

要对 BFD 问题进行故障排除,请执行以下操作:

  • 如果您在路由器上启用了 BFD,请检查 BFD 是否已正确配置。
  • 确保路由器上的 BFD 对等会话处于 UP 状态。
  • 查看路由器上的 BFD 事件或日志。

**注意:**AWS 的默认 BFD 活跃检测最小间隔为 300 毫秒 (ms)。默认 BFD 活跃检测倍数为 3。

为避免失效转移或连接问题,最佳做法是不要同时配置平滑重启和 BFD。要实现快速失效转移,请在关闭平滑重启的情况下配置 BFD。

相关信息

排查第 3/4 层(网络/传输)问题

AWS 官方已更新 5 个月前