本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 ENA Express 改善EC2執行個體間的網路效能
ENAExpress 由可 AWS 擴展的可靠數據報(SRD)技術提供支持。SRD是一種高效能網路傳輸通訊協定,使用動態路由來增加輸送量並將尾端延遲降至最低。使用 ENA Express,您可以在相同可用區域中的兩個EC2執行個體之間進行通訊。
ENA快遞的好處
-
將可用區域內單一流程可使用的最大頻寬從 5 Gbps 增加到 25 Gbps,最高可達彙總執行個體限制。
-
減少EC2執行個體之間網路流量的尾部延遲,特別是在高網路負載期間。
-
偵測並避免擁塞的網路路徑。
-
直接在網路層中處理某些任務,例如接收端的封包重新排序,以及大多數需要的重新傳輸。這會釋放應用程式層進行其他工作。
注意
-
如果應用程式每秒傳送或接收大量封包,而且大部分時間需要最佳化延遲,尤其是在網路上沒有擁塞的期間,則 增強型網路 可能更適合您的網路。
-
ENA快速流量無法跨本機區域中的子網路傳送。
在執行個體上為網路介面附件啟用 ENA Express 之後,傳送執行個體會起始與接收執行個體的通訊,並SRD偵測 ENA Express 是否同時在傳送執行個體和接收執行個體上運作。如果 ENA Express 正在運行,則通信可以使用SRD傳輸。如果 ENA Express 未操作,則通信會退回到標準ENA傳輸。
在網路流量較輕的期間,您可能會注意到封包使用 ENA Express 時,封包延遲會略有增加 (數十微秒)。在這段時間內,優先考慮特定網路效能特性的應用程式可以從 ENA Express 中受益,如下所示:
-
在相同可用區域內,將單一流量頻寬上限從 5 Gbps 增加到 25 Gbps,最高可達彙總執行個體限制,程序可受益。例如,如果特定執行個體類型最高支援 12.5 Gbps,則單一流量頻寬也會限制為 12.5 Gbps。
-
在網路擁塞期間,執行時間較長的程序會減少尾延遲。
-
程序可以從更順暢且更標準的網路回應時間分佈中獲益。
主題
ENA快遞的工作原理
ENAExpress 由可 AWS 擴展的可靠數據報(SRD)技術提供支持。它會將每個網路流量的封包分配到不同的 AWS 網路路徑,並在偵測到擁塞跡象時動態調整分佈。它還管理接收端的封包重新排序。
為確保 ENA Express 能夠按預期管理網路流量,傳送和接收執行個體以及它們之間的通訊必須符合下列所有需求:
-
支援傳送和接收執行個體類型。如需詳細資訊,請參閱 ENA快速支援的執行個體類型 資料表。
-
傳送和接收執行個體都必須設定 ENA Express。如果組態有所差異,您可能會遇到流量預設為標準ENA傳輸的情況。下列情境說明會發生的情況。
情況:組態的差異
執行個體 ENA快速啟用 UDP使用ENA快遞 執行個體 1 是 是 執行個體 2 是 否 在此情況下,兩個執行個體之間的TCP流量可以使用 ENA Express,因為這兩個執行個體都已啟用 Express。但是,由於其中一個執行個體不使用 ENA Express 進行UDP流量,因此這兩個執行個體之間的通訊會UDP使用標準ENA傳輸。
-
傳送和接收執行個體必須在相同的可用區域中執行。
-
執行個體之間的網路路徑不得包含中介軟體方塊。ENA快遞目前不支持中間件框。
-
(僅限 Linux 執行個體) 若要充分利用可能的頻寬,請使用 2.2.9 或更新版本的驅動程式。
-
(僅限 Linux 執行個體) 若要產生指標,請使用 2.8 或更新版本的驅動程式。
如果未滿足任何要求,則執行個體會使用標準TCP/通UDP訊協定,但不會SRD進行通訊。
若要確保您的執行個體網路驅動程式設定為最佳效能,請檢閱建議的ENA驅動程式最佳做法。這些最佳作法也適用於 ENA Express。如需詳細資訊,請參閱 GitHub 網站上的《ENALinux 驅動程式最佳作法和效能最佳化指南》
注意
Amazon 是EC2指執行個體與以附件形式連接到執行個體的網路界面之間的關係。ENA快速設定會套用至貼附。如果網路介面從執行個體中斷連結,則附件將不再存在,套用至該介面的 ENA Express 設定將不再有效。執行個體終止時也是如此,即使網路介面仍然存在。
在傳送執行個體和接收執行個體上啟用網路介面附件的 ENA Express 之後,您可以使用 ENA Express 指標來協助確保執行個體能夠充分利用SRD技術提供的效能改進。如需ENA快速測量結果的詳細資訊,請參閱ENA快速的測量結果。
ENA快速支援的執行個體類型
下列索引標籤顯示支援 ENA Express 的執行個體類型。
Linux 執行個體的先決條
若要確保 ENA Express 可以有效運作,請依照下列方式更新 Linux 執行個體的設定。
-
如果您的執行個體使用 Jumbo 框架,請執行下列命令,將最大傳輸單位 (MTU) 設定為
8900
。[ec2-user ~]$
sudo ip link set dev
eth0
mtu8900
-
增加接收器 (Rx) 環的大小,如下所示:
[ec2-user ~]$
ethtool -G
device
rx 8192 -
若要最大化 ENA Express 頻寬,請依照下列方式設定TCP佇列限制:
-
將TCP小型佇列限制設定為 1MB 或更高。這會讓在通訊端上排入佇列並等待傳輸的資料量增多。
sudo sh -c 'echo
1048576
> /proc/sys/net/ipv4/tcp_limit_output_bytes' -
如果 Linux 發行版本已啟用 eth 裝置上的位元組佇列限制,請將其停用。對裝置佇列來說,這也會讓排入佇列並等待傳輸的資料增多。
sudo sh -c 'for txq in /sys/class/net/
eth0
/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'注意
Amazon Linux 散發的ENA驅動程式預設會停用位元組佇列限制。
-
調整 Linux 執行個體上ENA快速設定的效能
若要檢查 Linux 執行個體組態以獲得最佳的 ENA Express 效能,您可以執行 Amazon GitHub 儲存庫上提供的以下指令碼:
https://github.com/amzn/AMZN-EC2-ENA-實用程序/BLOB /主/ENA-快遞 /.sh check-ena-express-settings
該腳本運行一系列測試,並建議建議和必要的配置更改。