如何排查 Direct Connect 中的第 3 层问题?
我想排查 AWS Direct Connect 连接因第 3 层问题而出现的故障。
解决方法
**注意:**对于第 1 层问题,请参阅如何排查 Direct Connect 中的第 1 层问题?对于第 2 层问题,请参阅如何排查 Direct Connect 中的第 2 层问题?
检查 AWS Health Dashboard 中是否存在维护活动
由于正在进行的 AWS 维护可能持续几分钟到几个小时,Direct Connect 连接可能会进入 DOWN 状态。在维护期间,边界网关协议 (BGP) 连接会进入空闲状态。
检查 AWS Health Dashboard 的 Events(事件)部分,查看是否存在正在进行或最近完成的 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 会返回到 Idle 或 Active 状态。
如果 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 状态。否则会返回到 Idle 或 Active 状态。
在您的日志中,验证对等体是否已发送 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。
相关信息
- 语言
- 中文 (简体)
