Compute Engine-Instanzen mit extrem niedriger Latenz erstellen
Auf dieser Seite wird beschrieben, wie Sie Compute Engine-Instanzen mit extrem niedriger Latenz (ULL) erstellen, indem Sie U4P- oder U4C-Maschinentypen aus der U4-Maschinenfamilie verwenden.
Eine Übersicht über den Konfigurationsprozess für die ULL-Infrastruktur finden Sie unter Konfigurationsübersicht für die Lösung mit extrem niedriger Latenz.
Hinweis
Lesen Sie die folgenden Abschnitte, bevor Sie Compute Engine-Instanzen mit extrem niedriger Latenz 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 Lösung mit extrem niedriger Latenz.
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 unter Richtlinien für gestreute Platzierung erstellen und anwenden in der Compute Engine-Dokumentation.
Projekt festlegen
Legen Sie die gcloud CLI so fest, dass sie Ihr Projekt verwendet. Alternativ können Sie für jeden Befehl in den folgenden Schritten das --project=PROJECT_ID Flag einfügen.
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Compute Engine-Instanzen benötigen:
-
Zum Erstellen und Verwalten von Compute Engine-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.
Konfigurationsübersicht für ULL-Instanzen
So erstellen Sie eine Compute-Instanz mit extrem niedriger Latenz und konfigurieren sie so, dass sie Unicast- und Multicast-Traffic mit extrem niedriger Latenz sendet oder empfängt:
| 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 VPC-Netzwerk mit extrem niedriger Latenz. 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, um sicherzustellen, dass ausgehende Pakete über die richtige Schnittstelle weitergeleitet werden und asymmetrisches Routing verhindert wird. |
| Instanz als ULL-Multicast-Consumer konfigurieren |
Führen Sie die folgenden Schritte aus, um Multicast-Traffic
über ULL-Netzwerkschnittstellen zu empfangen:
|
Außerdem können Sie die Beispielbefehle auf dieser Seite verwenden, um die Multicast-Verbindung 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 Engine-Instanzen, einschließlich zusätzlicher Konfigurationsoptionen, finden Sie unter Compute Engine-Instanz erstellen und starten.
gcloud
Verwenden Sie den
compute instances create Befehl, um eine ULL-Instanz zu erstellen.
Für die Netzwerkschnittstellen, die an ein VPC-Netzwerk mit extrem niedriger Latenz angehängt werden, muss no-address angegeben werden.
Außerdem enthält der folgende Befehl das Flag igmp-query, damit die Instanz als Multicast-Consumer verwendet werden kann. Dieses Flag ist nicht erforderlich, wenn die Instanz nur ein Multicast-Producer ist oder wenn die Instanz nur Unicast-Traffic sendet und empfängt.
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image=IMAGE_NAME \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,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 sollINSTANCE_NAME: ein Name für die InstanzMACHINE_TYPE: der U4P- oder U4C-Maschinentyp der InstanzIMAGE_PROJECT: das Image-Projekt. Verwenden Sie für Tests während der Vorschau das von Google bereitgestellte Image-Projekt. Informationen zur Betriebssystemunterstützung für U4-MaschinentypenIMAGE_NAME: der Name des Images. Verwenden Sie für Tests während der Vorschau das von Google bereitgestellte Image. Informationen zur Betriebssystemunterstützung für U4-MaschinentypenNIC_TYPE: der zu verwendende Netzwerkschnittstellentyp. Verwenden Sie den unterstützten Netzwerkschnittstellentyp für die jeweilige Zone, in der Sie Ihre Instanz erstellen:- Geben Sie für
us-south1-dIDPFan. - Geben Sie für
us-south1-eGVNICan.
- Geben Sie für
QUEUES: die Anzahl der Empfangs- und Übertragungswarteschlangen für die Verarbeitung von Paketen aus dem Netzwerk:- Für
GVNICmüssen Sie das Feldqueue-counteinfügen und für die XDP-Unterstützung den Wert32angeben. - Lassen Sie für
IDPFqueue-count=QUEUESim Befehl weg.
- Für
GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: das VPC-Netzwerk und das Subnetz, an das dienic0-Schnittstelle der Instanz angehängt werden sollULL_VPC_NETWORK: das VPC-Netzwerk mit extrem niedriger Latenz, an das die Nicht-nic0-Schnittstellen angehängt werden sollenULL_SUBNET_1: das Subnetz im VPC-Netzwerk mit extrem niedriger Latenz, an das dienic1-Schnittstelle angehängt werden sollULL_SUBNET_2: das Subnetz im VPC-Netzwerk mit extrem niedriger Latenz, 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 Ziel außerhalb des direkt verbundenen Subnetzes zu senden. Weitere Informationen finden Sie unter Übersicht über mehrere Netzwerkschnittstellen.
Damit die nic1- und nic2-Schnittstellen Ihrer Instanz ULL-Unicast-Traffic senden und empfangen können, müssen Sie das quellbasierte Richtlinienrouting im Gastbetriebssystem konfigurieren. Diese Konfiguration sorgt dafür, dass ausgehende Pakete über die richtige Schnittstelle weitergeleitet werden und asymmetrisches Routing verhindert wird, 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-Consumer konfigurieren.
IGMP-Abfrage für eine vorhandene ULL-Instanz aktivieren
Wenn Sie IGMP beim Erstellen der Instanz nicht aktiviert haben, können Sie es für Ihre vorhandene Instanz aktivieren, wie in diesem Abschnitt beschrieben.
gcloud
Verwenden Sie den
compute instances network-interfaces update Befehl, um die IGMP-Abfrage für eine vorhandene ULL-Instanz zu aktivieren.
Wiederholen Sie den folgenden Befehl für jede Netzwerkschnittstelle, die Multicast-Traffic empfangen soll.
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_NAME: der Name der InstanzZONE: die Zone der InstanzNETWORK_INTERFACE_NAME: der Name der Netzwerkschnittstelle, für die die IGMP-Abfrage aktiviert werden soll. In Google Cloudist das FormatnicNUMBER, z. B.nic0,nic1, odernic2.
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, die Multicast-Traffic empfangen sollen.
sudo ifconfig
Führen Sie für jede entsprechende 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.
Reverse-Path-Filterung (rp_filter) konfigurieren
In einigen Fällen, z. B. bei Instanzen mit mehreren NICs, kann die strenge Quellvalidierung durch die Reverse-Path-Filterung (rp-filter) dazu führen, dass legitime Multicast-Pakete verworfen werden. Um dies zu verhindern, können Sie die Reverse-Path-Filterung so konfigurieren, dass die Quellvalidierung für Nicht-nic0-Netzwerkschnittstellen, die Multicast-Traffic empfangen, gelockert oder deaktiviert wird.
Mit den folgenden Befehlen wird beispielsweise die Reverse-Path-Filterung 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 unter
IP Sysctl in der Linux
Kernel-Dokumentation.
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-Consumer, die viel Traffic empfangen, die Ringpuffergröße des Netzwerktreibers auf 2048, um Paketverluste zu vermeiden. Führen Sie diesen Schritt für jede Netzwerkschnittstelle aus, die Multicast-Traffic empfängt.
Hier sind Beispielbefehle, mit denen nic1 und nic2 konfiguriert werden:
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. Verwenden Sie dazu das
iperf Tool. Für die Schritte in diesem Abschnitt
muss die in der Konfigurationsübersicht für die Lösung mit extrem niedriger Latenz beschriebene Multicast-Konfiguration
abgeschlossen sein.
ULL-Multicast-Traffic von einem Multicast-Producer senden
Installieren Sie
iperf, falls noch nicht geschehen.iperf3unterstützt Multicast nicht. Der folgende Befehl verwendetiperf, 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_ADDRESS: die IP-Adresse, die der angegebenen NIC zugewiesen ist
Einer Gruppe beitreten und ULL-Multicast-Traffic von einem Multicast-Consumer empfangen
Installieren Sie
iperf, falls noch nicht geschehen.sudo yum install iperf
Führen Sie den folgenden Befehl aus, um einer Multicast-Gruppe 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_ADDRESS: die 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
Nächste Schritte
- Informationen zum Aktivieren von Busy Polling und zum Testen von Onload-Funktionen für Compute Engine-Instanzen mit extrem niedriger Latenz finden Sie unter Mit Onload arbeiten.
- Informationen zum Synchronisieren der Systemuhr Ihrer Instanz mit der Uhr der physischen NIC ihres Hostservers finden Sie unter Genaue Zeit konfigurieren.