Google Virtual NIC verwenden


Google Virtual NIC (gVNIC) ist eine virtuelle Netzwerkschnittstelle, die speziell für Compute Engine entwickelt wurde. gVNIC ist eine Alternative zum virtIO-basierten Ethernet-Treiber.

Als Netzwerkschnittstelle zur nächsten Generation, die VirtIO erfolgreich ist, ersetzt gVNIC VirtIO-Net als einzige unterstützte Netzwerkschnittstelle in Compute Engine für alle neuen Maschinentypen (Generation 3 und höher). Neuere Maschinenserien und Netzwerkfunktionen erfordern gVNIC anstelle von VirtIO. Die Verwendung von gVNIC als moderne E/A-Schnittstelle mit Compute Engine-VMs ermöglicht uns Folgendes:

  • Bessere Leistung erzielen
  • Verbessern Sie die Konsistenz, indem Sie Noisy-Neighbor-Probleme reduzieren.
  • Einführung neuer Netzwerkfunktionen, die über VirtIO hinausgehen

gVNIC wird auf allen Maschinenfamilien, Maschinentypen und Generierungen unterstützt und empfohlen.

gVNIC ist für die Unterstützung von Folgendem erforderlich:

Hinweise

  • Wenn Sie gVNIC mit Windows Server 2022- oder Windows 11-VMs verwenden, aktualisieren Sie den gVNIC-Treiber auf die GooGet-Paketversion 1.0.0@45 oder höher, um den Netzwerkdurchsatz zu verbessern. Weitere Informationen finden Sie unter bekannte Probleme.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Preise

Die aktuellen Preise für Netzwerke der Stufe 1 finden Sie auf der Seite der Preise für VM-Instanzen.

Eine Liste der zusätzlichen Methoden, Preisinformationen zu erhalten, finden Sie unter Compute Engine-Preise.

Betriebssystemunterstützung

In Compute Engine können Sie gVNIC für alle unterstützten öffentlichen Betriebssystem-Images verwenden. Sie können den gVNIC-Treiber manuell installieren auf:

  • Nicht unterstützte Betriebssysteme
  • Betriebssysteme, die nicht die neueste gVNIC-Treiberversion haben

Informationen zu den unterstützten Betriebssystemen finden Sie auf dem Tab Unterstützte Schnittstellen für Betriebssysteme. Weitere Informationen zur Unterstützung von Netzwerkfunktionen finden Sie auf dem Tab Netzwerkfeatures.

Verwendung auf nicht unterstützten Betriebssystemen

Für Betriebssystem-Images, die gVNIC unterstützen, aber nicht die neueste Version des gVNIC-Treibers enthalten, können Sie die neueste Treiberversion von GitHub herunterladen.

Sie können die neueste Version des gVNIC-Treibers manuell auf Linux- oder Windows-VMs konfigurieren und installieren.

Nachdem Sie das Betriebssystem in Ihrer VM für die Verwendung von gVNIC aktualisiert haben, erstellen Sie ein benutzerdefiniertes Betriebssystem-Image basierend auf diesem Betriebssystem-Image. Sie können dann das benutzerdefinierte Betriebssystem-Image verwenden, um weitere VMs mit gVNIC unter diesem Betriebssystem zu erstellen. Weitere Informationen zum Erstellen von VMs mit einem benutzerdefinierten Betriebssystem-Image finden Sie auf dieser Seite unter Benutzerdefiniertes Betriebssystem-Image erstellen, das gVNIC unterstützt.

So konfigurieren und installieren Sie manuell die neueste Version des gVNIC-Treibers:

Beschränkungen

  • Large Receive Offload (LRO) wird nicht unterstützt. Generic Receive Offload (GRO) ist für VMs, die gVNIC verwenden, standardmäßig aktiviert.
  • Große Sendungsauslagerung Version 2 (LSOV2) wird auf Windows 11- oder Windows Server 2022-VMs nicht unterstützt. gVNIC-Treiberversionen 1.0.0@45 und spätere Versionen deaktivieren LSOV2. Informationen zum Prüfen und Aktualisieren des gVNIC-Treibers einer VM unter Microsoft Windows finden Sie unter bekannte Probleme.

Übersicht über die Verwendung von gVNIC mit Compute Engine-VMs

Führen Sie folgende Schritte aus, um eine VM mit gVNIC zu erstellen:

  1. Wählen Sie ein öffentliches Betriebssystem-Image aus, das gVNIC unterstützt, oder erstellen Sie ein benutzerdefiniertes Image, das für die Verwendung von gVNIC getaggt ist.
  2. Erstellen Sie eine VM mit dem öffentlichen oder benutzerdefinierten Betriebssystem-Image. Konfigurieren Sie während der VM-Erstellung die Netzwerkschnittstelle für die Verwendung von gVNIC.
  3. Prüfen, ob gVNIC aktiviert ist

Falls Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung bei Google Virtual NIC.

Benutzerdefiniertes Betriebssystem-Image erstellen, das gVNIC unterstützt

Sie können das Betriebssystem-Image entweder mit der Google Cloud CLI oder mit REST erstellen. Ausführliche Informationen und Best Practices zum Erstellen benutzerdefinierter Betriebssystem-Images finden Sie unter Benutzerdefinierte Betriebssystem-Images erstellen.

gcloud

  1. Wählen Sie ein Betriebssystem-Image oder eine Imagefamilie aus, die gVNIC unterstützt. Weitere Informationen finden Sie unter Details zu Betriebssystemen.

  2. Erstellen Sie mithilfe des im vorherigen Schritt ausgewählten Betriebssystem-Images oder der Image-Familie ein benutzerdefiniertes Betriebssystem-Image und taggen Sie es mit GVNIC. Verwenden Sie zum Erstellen des benutzerdefinierten Betriebssystem-Image den Befehl gcloud compute images create. Mit dem folgenden Befehl wird beispielsweise ein benutzerdefiniertes Betriebssystem-Image erstellt, das gVNIC unterstützt und auf einem bestimmten Betriebssystem-Image basiert.

    gcloud compute images create IMAGE_NAME \
        --source-image=SOURCE_IMAGE \
        --source-image-project=SOURCE_IMAGE_PROJECT \
        --guest-os-features=GVNIC
    

    Ersetzen Sie Folgendes:

    • IMAGE_NAME: der Name des Images, das Sie erstellen möchten.
    • SOURCE_IMAGE: ein bestimmtes Betriebssystem-Image, das gVNIC unterstützt, z. B. rocky-linux-8-optimized-gcp-v20220719.

      Wenn Sie das neueste Betriebssystem-Image in einer Image-Familie verwenden möchten, ersetzen Sie das Flag --source-image durch das Flag --source-image-family und legen Sie dessen Wert auf eine Image-Familie fest, die gVNIC unterstützt. Beispiel: --source-image-family=rocky-linux-8-optimized-gcp.

    • SOURCE_IMAGE_PROJECT ist der Name des Projekts, das das Quell-Betriebssystem-Image oder die Image-Familie enthält.

    Beispiel

    Führen Sie den folgenden Befehl aus, um ein Rocky Linux 8-Image, optimiert für dGoogle Cloud-Betriebssystem-Image, mit dem neuesten Betriebssystem-Image aus der Compute Engine-Image-Familie rocky-linux-8-optimized-gcp zu erstellen:

    gcloud compute images create IMAGE_NAME \
        --source-image-family=rocky-linux-8-optimized-gcp \
        --source-image-project=rocky-linux-cloud \
        --guest-os-features=GVNIC
    

    Weitere Informationen zur Verwendung von Image-Familien finden Sie unter Best Practices für Image-Familien.

REST

  1. Wählen Sie ein Betriebssystem-Imageoder eine Imagefamilie aus, die gVNIC unterstützt. Weitere Informationen finden Sie unter Details zu Betriebssystemen.

  2. Erstellen Sie mithilfe des im vorherigen Schritt ausgewählten Betriebssystem-Images oder der Image-Familie ein Betriebssystem-Image und taggen Sie es mit GVNIC. Erstellen Sie das Betriebssystem-Image mit der Methode images.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    {
      "name":"IMAGE_NAME",
      "sourceImage":"SOURCE_IMAGE_URI",
      "guestOsFeatures":[
        {
          "type":"GVNIC"
        }
      ]
    }
    

    Ersetzen Sie Folgendes:

    • IMAGE_NAME: der Name des Betriebssystem-Images, das Sie erstellen möchten.
    • SOURCE_IMAGE_URI: Der URI für das spezifische Betriebssystem-Image oder die Image-Familie, die Sie verwenden möchten.

      Beispiel:

      • Spezifisches Betriebssystem-Image: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
      • Image-Familie: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp".

      Wenn Sie eine Image-Familie angeben, erstellt Compute Engine eine VM aus dem neuesten nicht verworfenen Betriebssystem-Image in dieser Familie. Weitere Informationen zur Verwendung von Image-Familien finden Sie unter Best Practices für Image-Familien.

VM mit gVNIC-Unterstützung erstellen

Sie können eine VM mit einem der Unterstützten öffentlichen Betriebssystem-Images oder mit einem benutzerdefiniertes Betriebssystem-Image erstellen, das Sie mithilfe der Anleitung unter Benutzerdefiniertes Betriebssystem-Image erstellen, das gVNIC unterstützt, erstellt haben.

Optional können Sie DPDK auf der VM aktivieren, um eine schnellere Netzwerkpaketverarbeitung, eine niedrige Latenz und eine konsistente Leistung zu erreichen.

VM mit einem öffentlichen Betriebssystem-Image erstellen

Folgen Sie der Anleitung unter VMs und Container mit hoher Bandbreitenkonfiguration erstellen, um eine VM mit einem öffentlichen Betriebssystem-Image zu erstellen, das gVNIC unterstützt.

VM mit dem benutzerdefinierten Betriebssystem-Image erstellen

Wenn Sie kein öffentliches Betriebssystem-Image verwenden, das gVNIC unterstützt, müssen Sie zuerst ein benutzerdefiniertes Betriebssystem-Image erstellen, das gVNIC unterstützt. Anschließend verwenden Sie dieses benutzerdefinierte Betriebssystem-Image, um eine VM mit der Google Cloud CLI oder REST zu erstellen.

gcloud

  1. Erstellen Sie die VM mit dem Befehl gcloud compute instances create. Geben Sie für das Bootlaufwerk das zuvor erstellte benutzerdefinierte Betriebssystem-Image an. Legen Sie für die Netzwerkschnittstelle den Wert des Flags nic-type auf GVNIC fest.

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image=IMAGE_NAME \
        --image-project=YOUR_IMAGE_PROJECT \
        --network-interface=nic-type=GVNIC
    

    Dabei gilt:

    • VM_NAME ist der Name der neuen VM.
    • ZONE ist die Zone, in der die VM erstellt werden soll.
    • IMAGE_NAME ist das Betriebssystem-Image, das im vorherigen Schritt erstellt wurde.
    • YOUR_IMAGE_PROJECT ist der Name Ihres Projekts, das das Betriebssystem-Image enthält.
  2. Optional: Prüfen Sie, ob Compute Engine die VM erstellt und nicType auf GVNIC gesetzt hat.

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • VM_NAME ist der Name der VM.
    • ZONE: die Zone, in der Sie die VM erstellt haben.

    Beispiel

    Führen Sie den folgenden Befehl aus, um eine Rocky Linux 8-VM in Zone us-west1-b mit einem Betriebssystem-Image namens my-gvnic-rocky8 im Projekt my-project-12345 zu erstellen:

    gcloud compute instances create my-rocky-linux-vm \
        --zone=us-west1-b \
        --image=my-gvnic-rocky8 \
        --image-project=my-project-12345 \
        --network-interface=nic-type=GVNIC
    

    Wichtige Punkte

    Das Flag --network-interface hat Flags auf Unterebene wie die folgenden:

    • --address: Der VM eine IP-Adresse zuweisen
    • --network: Das Netzwerk, zu dem die Schnittstelle gehört
    • --network-tier: die Netzwerkstufe der Schnittstelle
    • --subnet: Das Subnetz, zu dem die Schnittstelle gehören wird. Wenn --network ebenfalls angegeben ist, muss das Subnetz Teil des angegebenen Netzwerks sein.
    • --private-network-ip: Geben Sie die RFC 1918-IP an, die der VM zugewiesen werden soll.

    Eine vollständige Liste finden Sie unter Flag --network-interface.

REST

Erstellen Sie die VM mit der Methode instances.insert.

  • Geben Sie für das Bootlaufwerk das zuvor erstellte benutzerdefinierte Betriebssystem-Image an.
  • Legen Sie für die Netzwerkschnittstelle den Wert des Felds nicType auf GVNIC fest.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "name":"VM_NAME",
  "networkInterfaces":[
    {
      "network":"NETWORK",
      "nicType":"GVNIC",
      "subnet":"SUBNET_NAME"
    }
  ],
  "disks":[
    {
      "initializeParams":{
        "sourceImage":"projects/YOUR_IMAGE_PROJECT/global/images/IMAGE_NAME"
      },
      "boot":true
    }
  ]
}

Dabei gilt:

  • PROJECT_ID ist die ID des Projekts, in dem die VM erstellt werden soll.
  • ZONE ist die Zone, in der die VM erstellt werden soll.
  • VM_NAME ist der Name der neuen VM.
  • NETWORK: URL der Netzwerkressource für diese VM. Wenn weder das Netzwerk noch das Subnetzwerk angegeben ist, wird das Standardnetzwerk global/networks/default verwendet.
  • SUBNET_NAME ist der Name des Subnetzes. Das Netzwerk wird aus dem angegebenen Subnetz abgeleitet. Dieses Feld ist optional.
  • YOUR_IMAGE_PROJECT ist der Name Ihres Projekts, das das Betriebssystem-Image enthält.
  • IMAGE_NAME ist das Betriebssystem-Image, das im vorherigen Schritt erstellt wurde.

Prüfen, ob gVNIC aktiviert ist

Linux

Mit dem lshw-Tool können Sie detaillierte Informationen zur Hardwarekonfiguration der virtuellen Maschine extrahieren.

Öffnen Sie zum Installieren des lshw-Tools auf Ihrer Linux-VM-Instanz eine SSH-Verbindung zur VM und führen Sie dann den folgenden Befehl aus:

sudo apt-get install lshw -y

Führen Sie den folgenden Befehl aus, um festzustellen, ob die VM die gVNIC-Netzwerkschnittstelle verwendet:

sudo lshw -class network

Die Ausgabe sollte so aussehen:

*-network
   description: Ethernet interface
   product: Compute Engine Virtual Ethernet [gVNIC]
   vendor: Google, Inc.
   physical id: 3
   bus info: pci@0000:00:03.0
   logical name: ens3
   version: 00
   serial: 42:01:0a:80:00:6f
   width: 32 bits
   clock: 33MHz
   capabilities: msix bus_master cap_list ethernet physical
   configuration: autonegotiation=off broadcast=yes driver=gve driverversion=1.0.0
    duplex=full ip=10.128.0.111 latency=0 link=yes multicast=yes port=twisted pair
   resources: irq:11 memory:c0203000-c0203fff memory:c0200000-c02000ff memory:c0100000-c01fffff

Windows

  1. Öffnen Sie auf Ihrer VM-Instanz unter Windows den Geräte-Manager.
  2. Unter "Netzwerkadapter" sollten Sie diesen Eintrag finden: "Google Ethernet Adapter"

Fehlerbehebung

Informationen zur Fehlerbehebung für gVNIC finden Sie unter Fehlerbehebung bei Google Virtual NIC.

Nächste Schritte