ULL Compute Engine-Instanzen erstellen
Auf dieser Seite wird beschrieben, wie Sie Compute Engine-Instanzen mit extrem niedriger Latenz (Ultra Low Latency, ULL) erstellen, indem Sie U4P- oder U4C-Maschinentypen aus der U4-Maschinenfamilie verwenden.
Eine Übersicht über den Konfigurationsprozess für die ULL-Lösung finden Sie unter Konfigurationsübersicht für die ULL-Lösung.
Hinweis
Lesen Sie die folgenden Abschnitte, bevor Sie ULL-Compute-Instanzen erstellen.
VPC-Netzwerke erstellen
Erstellen Sie VPC-Netzwerke für jede Netzwerkschnittstelle Ihrer Instanz, falls noch nicht geschehen. Eine Anleitung dazu finden Sie unter Konfigurationsübersicht für die ULL-Lösung.
Platzierungsrichtlinie erstellen
Optional können Sie eine Richtlinie für verteilte Platzierung auf Ihre ULL-Instanz anwenden, um die Ausfallsicherheit zu erhöhen. Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Richtlinien für gestreute Platzierung erstellen und anwenden.
Projekt festlegen
Legen Sie die gcloud CLI so fest, dass Ihr Projekt verwendet wird. Alternativ können Sie das Flag --project=PROJECT_ID für jeden Befehl in den folgenden Verfahren einfügen.
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.
APIs aktivieren
Aktivieren Sie die folgenden APIs, falls Sie dies noch nicht getan haben.
Console
Aktivieren Sie die Compute Engine API, falls sie noch nicht aktiviert ist.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
gcloud
Aktivieren Sie die Compute Engine API, falls sie noch nicht aktiviert ist:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
gcloud services enable compute.googleapis.com
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, damit Sie die nötigen Berechtigungen zum Erstellen von Compute Engine-Instanzen haben:
-
So erstellen und verwalten Sie Compute-Instanzen:
Compute Instance Admin (
compute.instanceAdmin) für Ihr Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
ULL-Instanzkonfiguration – Übersicht
So erstellen Sie eine ULL-Compute-Instanz und konfigurieren sie für das Senden oder Empfangen von ULL-Unicast- und ‑Multicast-Traffic:
| Schritt | Beschreibung |
|---|---|
| ULL-Instanz erstellen | Erstellen Sie eine Instanz mit einem U4P- oder U4C-Maschinentyp und verbinden Sie die Netzwerkschnittstellen mit einem VPC-Netzwerk für allgemeine Zwecke und einem ULL-VPC-Netzwerk. Wenn Sie die Instanz als Multicast-Consumer verwenden möchten, setzen Sie das Flag igmp-query auf IGMP_QUERY_V2. |
Routing für die Nicht-nic0-Schnittstellen für ULL-Unicast-Traffic konfigurieren |
Konfigurieren Sie das quellbasierte Richtlinienrouting im Gastbetriebssystem, damit ausgehender Traffic über die richtige Schnittstelle verbleibt und asymmetrisches Routing verhindert wird. |
| Instanz als ULL-Multicast-Consumer konfigurieren |
Führen Sie die folgenden Schritte aus, um Multicast-Traffic auf ULL-Netzwerkschnittstellen zu empfangen:
|
Außerdem können Sie die Beispielbefehle auf dieser Seite verwenden, um die Multicast-Konnektivität zu testen.
ULL-Instanz erstellen
In diesem Abschnitt wird beschrieben, wie Sie eine neue Instanz für ULL-Unicast und -Multicast erstellen.
Allgemeine Informationen zum Erstellen von Compute-Instanzen, einschließlich zusätzlicher Konfigurationsoptionen, finden Sie unter Compute Engine-Instanz erstellen und starten.
gcloud
Verwenden Sie zum Erstellen einer ULL-Instanz den Befehl compute instances create.
Der unterstützte Netzwerkschnittstellentyp für ULL-Instanzen ist GVNIC.
Sie müssen das Feld queue-count einfügen und den Wert 32 für die XDP-Unterstützung angeben.
Für die Netzwerkschnittstellen, die an ein ULL-VPC-Netzwerk angehängt werden, muss no-address angegeben werden.
Außerdem enthält der folgende Befehl das Flag igmp-query, damit die Instanz ein Multicast-Empfänger sein kann. Dieses Flag ist nicht erforderlich, wenn die Instanz nur ein Multicast-Producer ist oder nur Unicast-Daten sendet und empfängt.
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
Ersetzen Sie die folgenden Werte:
ZONE: Die Zone, in der die Instanz erstellt werden soll.INSTANCE_NAME: ein Name für die InstanzMACHINE_TYPE: der U4P- oder U4C-Maschinentyp der InstanzIMAGE_PROJECT: das Image-Projekt, z. B.rhel-cloud. Weitere Informationen finden Sie unter Unterstützung von Betriebssystemen für U4-Maschinentypen.IMAGE_FAMILY: die Image-Familie, z. B.rhel-10-2-eus-oot-gve. Weitere Informationen finden Sie unter Unterstützung von Betriebssystemen für U4-Maschinentypen.Wenn Sie eine Image-Familie angeben, wird die Instanz aus der neuesten, nicht verworfenen Version des Betriebssystem-Images in der Image-Familie erstellt. Alternativ können Sie stattdessen das Flag
--imageverwenden und eine Image-Version angeben.GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: Das VPC-Netzwerk und das Subnetz, an das dienic0-Schnittstelle der Instanz angehängt werden soll.ULL_VPC_NETWORK: Das ULL-VPC-Netzwerk, an das die Nicht-nic0-Schnittstellen angehängt werden.ULL_SUBNET_1: Das Subnetz im ULL-VPC-Netzwerk, an das dienic1-Schnittstelle angehängt werden soll.ULL_SUBNET_2: Das Subnetz im ULL-VPC-Netzwerk, an das dienic2-Schnittstelle angehängt werden soll.
Routing für die Nicht-nic0-Schnittstellen für ULL-Unicast-Traffic konfigurieren
Standardmäßig verwendet eine Instanz die Standardroute, die mit ihrer nic0-Schnittstelle verknüpft ist, um Traffic an ein beliebiges Ziel außerhalb des direkt verbundenen Subnetzes zu senden. Weitere Informationen finden Sie in der Übersicht über mehrere Netzwerkschnittstellen.
Damit die nic1- und nic2-Schnittstellen Ihrer Instanz ULL-Unicast-Traffic senden und empfangen können, müssen Sie im Gastbetriebssystem Quell-basiertes Richtlinienrouting konfigurieren. Diese Konfiguration sorgt dafür, dass ausgehende Pakete über die richtige Schnittstelle gesendet werden, und verhindert asymmetrisches Routing, bei dem Traffic über eine Schnittstelle eingeht, aber versucht wird, ihn über nic0 zu senden.
Ein Beispiel für die Konfiguration des Richtlinienroutings finden Sie in der Anleitung Routing für eine zusätzliche Netzwerkschnittstelle konfigurieren unter Richtlinienrouting konfigurieren.
Instanz als ULL-Multicast-Consumer konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie eine vorhandene ULL-Instanz als Multicast-Empfänger konfigurieren.
IGMP-Abfrage für eine vorhandene ULL-Instanz aktivieren
Wenn Sie IGMP beim Erstellen Ihrer Instanz nicht aktiviert haben, können Sie es wie in diesem Abschnitt beschrieben für Ihre vorhandene Instanz aktivieren.
gcloud
Verwenden Sie den Befehl compute instances network-interfaces update, um IGMP-Abfragen für eine vorhandene ULL-Instanz zu aktivieren.
Wiederholen Sie den folgenden Befehl für jede Netzwerkschnittstelle, über die Sie Multicast-Traffic empfangen möchten.
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
Ersetzen Sie die folgenden Werte:
INSTANCE_NAMEden Namen der InstanzZONE: Zone der InstanzNETWORK_INTERFACE_NAME: Der Name der Netzwerkschnittstelle, auf der die IGMP-Abfrage aktiviert werden soll. In Google Cloudist das FormatnicNUMBER, z. B.nic0,nic1odernic2.
IGMPv2 im Gastbetriebssystem festlegen
So legen Sie IGMPv2 im Gastbetriebssystem Ihrer Instanz fest:
Führen Sie den folgenden Befehl aus und ermitteln Sie die Gerätenamen der Netzwerkschnittstellen, über die Sie Multicast-Traffic empfangen möchten.
sudo ifconfig
Führen Sie für jede anwendbare Netzwerkschnittstelle den folgenden Befehl aus, um IGMPv2 zu erzwingen.
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
Ersetzen Sie
NETWORK_INTERFACE_DEVICE_NAMEdurch den Gerätenamen der Netzwerkschnittstelle, z. B.eth0,eth1odereth2.
Filterung für umgekehrte Pfade konfigurieren (rp_filter)
In einigen Fällen, z. B. bei Multi-NIC-Instanzen, kann eine strenge Quellvalidierung durch Reverse Path Filtering (rp-filter) dazu führen, dass legitime Multicast-Pakete verworfen werden. Um dies zu verhindern, können Sie die Reverse-Pfadfilterung so konfigurieren, dass die Quellvalidierung auf Nicht-nic0-Netzwerkschnittstellen, die Multicast-Traffic empfangen, gelockert oder deaktiviert wird.
Mit den folgenden Befehlen wird beispielsweise die Reverse-Pfadfilterung so konfiguriert, dass die Quellvalidierung für eth1 und eth2 deaktiviert wird, indem rp_filter auf 0 gesetzt wird.
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
Weitere Informationen zu rp_filter finden Sie in der Linux-Kernel-Dokumentation unter IP Sysctl.
Ringpuffergröße des Netzwerktreibers erhöhen
In diesem Abschnitt wird beschrieben, wie Sie die Ringpuffergröße des Netzwerktreibers auf Ihrer Instanz erhöhen.
Erhöhen Sie für Multicast-Empfänger, die viel Traffic empfangen, die Ringpuffergröße des Netzwerktreibers auf einen Wert von 2048, um Paketverluste zu vermeiden. Führen Sie diesen Schritt für jede Netzwerkschnittstelle aus, die Multicast-Traffic empfängt.
Die folgenden Beispielbefehle konfigurieren nic1 und nic2:
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
Beispielbefehle zum Testen der ULL-Multicast-Verbindung
In diesem Abschnitt finden Sie Beispielbefehle zum Testen von Multicast-Traffic, ohne eine Anwendungslast zu starten, indem Sie das iperf-Tool verwenden. Für die Schritte in diesem Abschnitt muss die in Konfigurationsübersicht für ULL-Lösung beschriebene Multicast-Konfiguration abgeschlossen sein.
ULL-Multicast-Traffic von einem Multicast-Ersteller senden
Installieren Sie
iperf, falls noch nicht geschehen.iperf3unterstützt Multicast nicht. Im folgenden Befehl wirdiperfverwendet, wodurchiperf2installiert wird.sudo yum install iperf
Führen Sie den folgenden Befehl aus, um Multicast-Traffic an die IP-Adresse der Multicast-Gruppe zu senden:
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
Ersetzen Sie die folgenden Werte:
MULTICAST_GROUP_ADDRESS: die IP-Adresse der Multicast-GruppeNIC: der Gerätename der Netzwerkschnittstelle, z. B.eth1odereth2NIC_IP_ADDRESSdie IP-Adresse, die der von Ihnen angegebenen NIC zugewiesen ist
Einer Gruppe beitreten und ULL-Multicast-Traffic von einem Multicast-Nutzer empfangen
Installieren Sie
iperf, falls noch nicht geschehen.sudo yum install iperf
Führen Sie den folgenden Befehl aus, um einer Multicastgruppe beizutreten und den empfangenen Traffic zu protokollieren:
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
Ersetzen Sie die folgenden Werte:
MULTICAST_GROUP_ADDRESSdie IP-Adresse der Multicast-GruppeNIC: der Gerätename der Netzwerkschnittstelle, z. B.eth1odereth2
Mit dem folgenden Befehl wird beispielsweise einer Gruppe mit der IP-Adresse
224.1.0.176beigetreten, um Pakete mit bis zu 512 Byte zu empfangen, und der empfangene Traffic wird protokolliert:iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
ULL-Verbindungsstatus und ‑geschwindigkeit prüfen
Auf den ULL-Netzwerkschnittstellen Ihrer Instanz werden mit ethtool der tatsächliche physische Portlinkstatus (up/down) und die physischen Linkgeschwindigkeiten angezeigt.
Führen Sie den folgenden Befehl aus, um den Status und die Geschwindigkeit der physischen Verbindung einer ULL-Netzwerkschnittstelle zu prüfen:
sudo ethtool NIC
Ersetzen Sie NIC durch den Namen der vom Gastbetriebssystem zugewiesenen Netzwerkschnittstelle, z. B. ens8f0 oder ens48f0.
Nächste Schritte
- Allgemeine Informationen zur Fehlerbehebung bei der Netzwerkleistung für Bare-Metal-Instanzen finden Sie in der Compute Engine-Dokumentation unter Fehlerbehebung bei der Netzwerkleistung. Sie können beispielsweise CPU-Ruhemodusstatus deaktivieren, um die volle Netzwerkbandbreite zu erreichen.
- Informationen zum Konfigurieren von Onload oder DPDK zur Optimierung der Leistung finden Sie unter Mit Onload arbeiten und Mit DPDK arbeiten.
- Informationen zum Synchronisieren der Systemuhr Ihrer Instanz mit der physischen NIC-Uhr des Hostservers finden Sie unter Genaue Zeit konfigurieren.