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

API aktivieren

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:
Zur weiteren Optimierung der Leistung empfehlen wir, die Verfahren unter Mit Onload arbeiten oder Mit DPDK arbeiten zu befolgen.

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 Instanz
  • MACHINE_TYPE: der U4P- oder U4C-Maschinentyp der Instanz
  • IMAGE_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 --image verwenden und eine Image-Version angeben.

  • GENERAL_PURPOSE_VPC_NETWORK, GENERAL_PURPOSE_SUBNET: Das VPC-Netzwerk und das Subnetz, an das die nic0-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 die nic1-Schnittstelle angehängt werden soll.

    • ULL_SUBNET_2: Das Subnetz im ULL-VPC-Netzwerk, an das die nic2-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_NAME den Namen der Instanz
  • ZONE: Zone der Instanz
  • NETWORK_INTERFACE_NAME: Der Name der Netzwerkschnittstelle, auf der die IGMP-Abfrage aktiviert werden soll. In Google Cloudist das Format nicNUMBER, z. B. nic0, nic1 oder nic2.

IGMPv2 im Gastbetriebssystem festlegen

So legen Sie IGMPv2 im Gastbetriebssystem Ihrer Instanz fest:

  1. Stellen Sie mit SSH eine Verbindung zur Instanz her.

  2. 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
    
  3. 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_NAME durch den Gerätenamen der Netzwerkschnittstelle, z. B. eth0, eth1 oder eth2.

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

  1. Stellen Sie mit SSH eine Verbindung zur Instanz her.

  2. Installieren Sie iperf, falls noch nicht geschehen. iperf3 unterstützt Multicast nicht. Im folgenden Befehl wird iperf verwendet, wodurch iperf2 installiert wird.

    sudo yum install iperf
    
  3. 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-Gruppe
    • NIC: der Gerätename der Netzwerkschnittstelle, z. B. eth1 oder eth2
    • NIC_IP_ADDRESS die IP-Adresse, die der von Ihnen angegebenen NIC zugewiesen ist

Einer Gruppe beitreten und ULL-Multicast-Traffic von einem Multicast-Nutzer empfangen

  1. Stellen Sie mit SSH eine Verbindung zur Instanz her.

  2. Installieren Sie iperf, falls noch nicht geschehen.

    sudo yum install iperf
    
  3. 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_ADDRESS die IP-Adresse der Multicast-Gruppe
    • NIC: der Gerätename der Netzwerkschnittstelle, z. B. eth1 oder eth2

    Mit dem folgenden Befehl wird beispielsweise einer Gruppe mit der IP-Adresse 224.1.0.176 beigetreten, 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
    

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.