建立 ULL Compute Engine 執行個體
本頁說明如何使用 U4 機器家族的 U4P 或 U4C 機型,建立超低延遲 (ULL) Compute Engine 執行個體。
如要瞭解 ULL 基礎架構設定程序,請參閱「ULL 解決方案設定總覽」。
事前準備
建立 ULL 計算執行個體前,請參閱下列各節。
建立虛擬私有雲網路
如果尚未建立執行個體網路介面的虛擬私有雲網路,請參閱「ULL Solution 的設定總覽」一文。
建立配置政策
您可以選擇將分散配置政策套用至 ULL 執行個體,提高復原能力。詳情請參閱 Compute Engine 說明文件中的「建立及套用分散式放置政策」。
設定專案
將 gcloud CLI 設為使用您的專案。或者,您也可以在下列程序中,為每個指令加入 --project=PROJECT_ID 標記。
gcloud config set project PROJECT_ID
將 PROJECT_ID 替換為專案 ID。
啟用 API
如果尚未啟用,請啟用下列 API。
控制台
啟用 Compute Engine API。
啟用 API 時所需的角色
如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
gcloud
啟用 Compute Engine API:
啟用 API 時所需的角色
如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
gcloud services enable compute.googleapis.com
必要的角色
如要取得建立 Compute Engine 執行個體所需的權限,請要求管理員授予您下列 IAM 角色:
-
如要建立及管理 Compute 執行個體:
專案的 Compute 執行個體管理員 (
compute.instanceAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
ULL 執行個體設定總覽
如要建立 ULL 運算執行個體,並將執行個體設定為傳送或接收 ULL 單點傳播和多點傳播流量,請執行下列操作:
| 步驟 | 說明 |
|---|---|
| 建立 ULL 執行個體 | 使用 U4P 或 U4C 機型建立執行個體,並將其網路介面連線至一般用途的虛擬私有雲網路和 ULL 虛擬私有雲網路。如要將執行個體做為多點播送消費者使用,請將 igmp-query 標記設為 IGMP_QUERY_V2。 |
為 ULL 單點播送流量設定非 nic0 介面的路由 |
在客體 OS 中設定以來源為準的政策轉送,確保輸出封包透過正確的介面離開,並防止非對稱轉送。 |
| 將執行個體設為 ULL 多點播送消費者 |
完成下列各項操作,即可在 ULL 網路介面上接收多點播送流量: 為進一步提升效能,建議您按照「使用 Onload」或「使用 DPDK」中的程序操作。 |
此外,您可以使用本頁的範例指令測試多點播送連線。
建立 ULL 執行個體
本節說明如何建立新執行個體,用於 ULL 單點播送和多點播送。
如要瞭解如何建立運算執行個體的一般資訊,包括其他設定選項,請參閱「建立及啟動 Compute Engine 執行個體」一文。
gcloud
如要建立 ULL 執行個體,請使用 compute instances create 指令。
ULL 執行個體支援的網路介面類型為 GVNIC。
您必須加入 queue-count 欄位,並為 XDP 支援指定 32 值。
如要將網路介面附加至 ULL 虛擬私有雲網路,必須指定 no-address。
此外,下列指令包含 igmp-query 旗標,可讓執行個體成為多點播送消費者。如果執行個體僅為多點傳播製作人,或僅傳送及接收單點傳播,則不需要這個旗標。
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=GVNIC,queue-count=32,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2
替換下列值:
ZONE:要建立執行個體的可用區INSTANCE_NAME:執行個體的名稱MACHINE_TYPE:執行個體的 U4P 或 U4C 機型IMAGE_PROJECT:圖片專案,例如rhel-cloud。請參閱「U4 機器類型支援的作業系統」。IMAGE_FAMILY:映像檔系列,例如rhel-10-2-eus-oot-gve。 請參閱「U4 機器類型支援的作業系統」。指定映像檔系列時,系統會使用該系列中未淘汰的最新 OS 映像檔版本建立執行個體。或者,您也可以改用
--image旗標,並指定映像檔版本。GENERAL_PURPOSE_VPC_NETWORK、GENERAL_PURPOSE_SUBNET: 要將執行個體的nic0介面附加至的虛擬私有雲網路和子網路ULL_VPC_NETWORK:要附加非nic0介面的 ULL 虛擬私有雲網路ULL_SUBNET_1:ULL 虛擬私有雲網路中的子網路,用於附加nic1介面ULL_SUBNET_2:ULL 虛擬私有雲網路中的子網路,用於附加nic2介面
為 ULL 單點播送流量設定非 nic0 介面的路由
根據預設,執行個體會使用與 nic0 介面相關聯的預設路徑,將流量傳送至直接連線子網路以外的任何目的地。詳情請參閱多個網路介面總覽。
如要讓執行個體的 nic1 和 nic2 介面順利傳送及接收 ULL 單點播送流量,您必須在客體 OS 中設定以來源為準的政策型轉送。這項設定可確保輸出封包透過正確的介面離開,並防止非對稱路由,也就是流量進入一個介面,但嘗試透過 nic0 離開。
如需設定政策路由的範例,請參閱「為額外網路介面設定路由」教學課程中的「設定政策路由」。
將執行個體設為 ULL 多點傳播消費者
本節說明如何將現有的 ULL 執行個體設定為多點播送消費者。
在現有 ULL 執行個體上啟用 IGMP 查詢
如果您在建立執行個體時未啟用 IGMP,可以按照本節說明,在現有執行個體上啟用 IGMP。
gcloud
如要在現有 ULL 執行個體上啟用 IGMP 查詢,請使用 compute instances network-interfaces update 指令。
針對要接收多點播送流量的每個網路介面,重複執行下列指令。
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
替換下列值:
INSTANCE_NAME:執行個體的名稱ZONE:執行個體的可用區NETWORK_INTERFACE_NAME:要啟用 IGMP 查詢的網路介面名稱。在 Google Cloud中,格式為nicNUMBER,例如nic0、nic1或nic2。
在客體 OS 中設定 IGMPv2
如要在執行個體的客體 OS 中設定 IGMPv2,請按照下列步驟操作:
使用 SSH 連線至執行個體。
執行下列指令,找出要接收多點傳播流量的網路介面裝置名稱。
sudo ifconfig
針對每個適用的網路介面,執行下列指令來強制使用 IGMPv2。
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
將
NETWORK_INTERFACE_DEVICE_NAME替換為網路介面的裝置名稱,例如eth0、eth1或eth2。
設定反向路徑篩選 (rp_filter)
在某些情況下,例如使用多 NIC 執行個體時,反向路徑篩選 (rp-filter) 的嚴格來源驗證可能會導致系統捨棄合法的多點傳播封包。如要避免這種情況,您可以設定反向路徑篩選,在接收多點傳播流量的非 nic0 網路介面上,放寬或停用來源驗證。舉例來說,下列指令會將 rp_filter 設為 0,藉此設定反向路徑篩選功能,在 eth1 和 eth2 上停用來源驗證。
sudo sysctl -w net.ipv4.conf.all.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth2.rp_filter=0
如要進一步瞭解 rp_filter,請參閱 Linux 核心說明文件中的「IP Sysctl」。
增加網路驅動程式的環形緩衝區空間
本節說明如何增加執行個體上網路驅動程式的環形緩衝區空間。
對於接收大量流量的多點傳播消費者,請將網路驅動程式的環形緩衝區大小增加至 2048,以避免封包遺失。針對接收多點播送流量的每個網路介面執行這項操作。
請參閱下列範例指令,瞭解如何設定 nic1 和 nic2:
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
測試 ULL 多點傳播連線的指令範例
本節提供範例指令,說明如何使用 iperf 工具測試多點播送流量,而不需啟動應用程式工作負載。本節中的步驟需要完成ULL Solution 的設定總覽所述的多點播送設定。
從多點傳播供應端傳送 ULL 多點傳播流量
使用 SSH 連線至執行個體。
如果尚未安裝
iperf,請先完成這項程序。iperf3不支援多點播送。 下列指令會使用iperf安裝iperf2。sudo yum install iperf
如要將多點播送流量傳送至多點播送群組 IP 位址,請執行下列指令:
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
替換下列值:
MULTICAST_GROUP_ADDRESS:多點傳播群組 IP 位址NIC網路介面裝置名稱,例如eth1或eth2NIC_IP_ADDRESS指派給您指定 NIC 的 IP 位址
加入群組,並接收來自多點傳播用戶的 ULL 多點傳播流量
使用 SSH 連線至執行個體。
如果尚未安裝
iperf,請先完成這項程序。sudo yum install iperf
如要加入多點播送群組並記錄收到的流量,請執行下列指令:
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
替換下列值:
MULTICAST_GROUP_ADDRESS多點傳播群組 IP 位址NIC網路介面裝置名稱,例如eth1或eth2
舉例來說,下列指令會加入 IP 位址為
224.1.0.176的群組,接收最多 512 位元組的封包,並記錄收到的流量:iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
確認 ULL 連結狀態和速度
在執行個體的 ULL 網路介面上,ethtool 會顯示實際的實體連接埠連結狀態 (up/down) 和實體連結速度。
如要檢查 ULL 網路介面的實體連結狀態和速度,請執行下列指令:
sudo ethtool NIC
將 NIC 替換為客層 OS 指派的網路介面名稱,例如 ens8f0 或 ens48f0。
後續步驟
- 如要瞭解如何排解裸機執行個體的網路效能問題,請參閱 Compute Engine 說明文件中的排解網路效能問題。舉例來說,您可以停用 CPU 休眠狀態,充分發揮網路頻寬效能。
- 如要設定 Onload 或 DPDK 來提升效能,請參閱「使用 Onload」和「使用 DPDK」。
- 如要將執行個體系統時鐘與主機伺服器的實體 NIC 時鐘同步,請參閱「設定準確時間」。