我使用 AWS Direct Connect 來傳輸資料。我將資料傳輸到 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體時遇到封包遺失的問題。如何隔離封包遺失?
簡短描述
當傳輸的資料封包無法抵達其目的地時就會發生封包遺失,導致網路效能問題。封包遺失是由目的地的低訊號強度、過量系統使用率、網路壅塞和網路路由設定不當所造成。
解決方案
針對您的網路裝置和 Direct Connect 連線執行下列檢查。
檢查 AWS Personal Health Dashboard 上的排程維護或事件
AWS Personal Health Dashboard 會顯示相關資訊,也會提供活動的通知。如需詳細資訊,請參閱
如何取得 Direct Connect 排程維護或事件的通知?
檢查 Direct Connect 端點、客戶閘道 (CGW) 和中級裝置 (第 1 層) 的指標
使用 CGW 和中級裝置,問題可能是在內部部署網路或前往 AWS 的傳輸路徑。在內部部署節點和中級裝置上檢查下列項目:
- 介面擺動的 CGW 日誌。
- 問題發生時 CGW 的 CPU 使用率。
- Direct Connect 連線終止時裝置上的指示燈讀數。
- Direct Connect 連線因為輸入錯誤、遞增架構錯誤、循環備援 (CRC) 錯誤、短小、巨大和調節而終止的裝置。
檢查 Direct Connect 連線指標 (第 1 層)
檢查下列 Direct Connect 指標:
- ConnectionErrorCount:套用統計數字加總,注意非零值表示 AWS 裝置上存在 MAC 級別錯誤。
- ConnectionLightLevelTX 和 ConnectionLightLevelRX:檢查發生問題時 Direct Connect 連線上記錄的燈號。可接受的範圍是 -14.4 到 2.50 dBm 之間。
- ConnectionBpsEgress 和 ConnectionBpsIngress:檢查因為連結壅塞而發生封包遺失時的 Direct Connect 連線上的流量。
如需詳細資訊,請參閱 Direct Connect 連線指標。
檢查非對稱次等最佳路由 (第 3 層)
如果內部部署防火牆執行會造成網路流量丟棄的單播反向路徑轉送,非對稱路由會造成封包遺失。使用內部部署網路的次等最佳路由也會造成封包遺失。
如需詳細資訊,請參閱在傳輸閘道中建立 VPN 作為 Direct Connect 的備份時,如何解決非對稱路由問題?
內部部署主機與 AWS 主機 (第 3 層) 之間的端對端雙向追蹤路由
在主機之間執行追蹤路由會決定在雙向採用的網路路徑。追蹤結果也會決定路由是否為非對稱、負載平衡等等。
1. 執行下列命令以安裝 traceroute:
Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get install traceroute
2.然後,針對 ICMP traceroute 執行類似以下的命令:
sudo traceroute -T -p <destination Port> <IP of destination host>
Windows 作業系統:
1. 下載 WinPcap 和 tracetcp。
2. 解壓縮 Tracetcp ZIP 檔案。
3. 將 tracetcp.exe 複製到您的 C 磁碟機。
4. 安裝 WinPcap。
5. 開啟命令提示字元並且使用 *C:\Users\username>cd * 命令讓 WinPcap 的根目錄指向您的 C 磁碟機。
6. 使用下列命令執行 tracetcp:tracetcp.exe hostname:port 或 tracetcp.exe ip:port。
內部部署主機與 AWS 主機 (第 3 層) 之間的端對端雙向 MTR 測試
MTR 測試類似於 traceroute,允許探索主機之間網路連線路徑中的每個路由器。MTR 測試也會提供路徑中每個節點的資訊,例如封包遺失。
檢查 MTR 結果是否有封包遺失和網路延遲。躍點的網路遺失百分比可以指出路由器的問題。某些服務提供者會限制 MTR 使用的 ICMP 流量。若要判斷封包遺失是否是速率限制所造成,請檢閱後續躍點。如果後續躍點的損失顯示為 0.0%,這可能表示 ICMP 速率限制。
1. 執行下列命令以安裝 MTR:
Amazon Linux/REHEL:
$ sudo yum install mtr -y
Ubuntu:
sudo apt install mtr -y
Windows 作業系統:
下載並安裝 WinMTR。
**注意:**對於 Windows 作業系統,WinMTR 不支援以 TCP 為基礎的 MTR。
2. 對於內部部署 --> AWS 方向,在內部部署主機上執行 MTR (以 ICMP 和 TCP 為基礎):
$ mtr -n -c 100 <private IP of EC2> --report
$ mtr -n -T -P <EC2 instance open TCP port> -c 100 <private IP of EC2> --report
3. 對於 AWS --> 內部部署方向,在 EC2 執行個體上執行 MTR (基於 ICMP 和 TCP):
$ mtr -n -c 100 <private IP of the local host> --report
$ mtr -n -T -P <local host open TCP port> -c 100 <private IP of the local host> --report
檢閱內部部署主機與 AWS 主機 (第 3 層) 之間的路徑 MTU
最大傳輸單位 (MTU) 是透過網路連線傳遞的最大可允許封包大小。路徑 MTU 探索 (PMTUD) 會決定 MTU 路徑。如果封包太大,則會發生封包遺失。如需詳細資訊,請參閱
路徑 MTU 探索。
您可以使用 tracepath 檢查兩部主機之間的路徑 MTU。
1. 對於內部部署 --> AWS 方向,從本機主機在連接埠 80 上執行 tracepath:
$ tracepath -n -p 80 <EC2 private instance IP>
2.對於 AWS --> 內部部署方向,從 EC2 執行個體在連接埠 80 上執行 tracepath:
$ tracepath -n -p 80 <private IP of local host>
相關資訊
設定網路介面的最佳實務
如何透過網際網路閘道或 NAT 閘道監控從 AWS 到內部部署網路的封包遺失和延遲?
針對 AWS Direct Connect 進行疑難排解
如何解決 Direct Connect 網路效能問題?