Erweiterte VPC-Konzepte

Auf dieser Seite werden weitere Details zu VPC-Netzwerken (Virtual Private Cloud) erläutert. Lesen Sie vor dem Lesen dieser Seite die VPC-Netzwerkübersicht.

Erweiterte VPC-Netzwerkdetails

Dieser Abschnitt enthält einige VPC-Netzwerkdetails. Sie müssen diese für den normalen Gebrauch nicht lesen, aber sie geben einen Einblick in die Funktionsweise des VPC-Netzwerks. Im folgenden Diagramm werden diese Details beschrieben, wobei die entsprechenden Abschnitte weitere Informationen enthalten.

Detaillierteres Diagramm des VPC-Netzwerks

Wer verarbeitet was

Intern werden die verschiedenen VPC-Netzwerkfunktionen von unterschiedlichen Komponenten des Systems ausgeführt. Einige dieser Funktionen sind Standardnetzwerkfunktionen, die gut dokumentiert sind, während andere für VPC-Netzwerke spezifisch sind. Sie können einige Funktionen konfigurieren, andere hingegen nicht. VPC-Netzwerke verwenden das VIRTIO-Netzwerkmodul von Linux zur Modellierung der Ethernetkarten- und Routerfunktion. Höhere Ebenen des Netzwerkstapels, wie etwa ARP-Suchvorgänge, werden aber mittels Standardnetzwerksoftware verarbeitet.

ARP-Suche
Der Instanz-Kernel gibt ARP-Anfragen und das VPC-Netzwerk ARP-Antworten aus. Die Zuordnung zwischen MAC-Adressen und IP-Adressen erfolgt durch den Instanz-Kernel.
MAC-Suchtabelle, IP-Suchtabelle, Tabelle aktiver Verbindungen
Diese Tabellen werden im zugrunde liegenden VPC-Netzwerk gehostet und können nicht überprüft oder konfiguriert werden.
DNS-Server

Der Metadatenserver jeder Instanz fungiert als DNS-Server. Er speichert die DNS-Einträge für alle IP-Adressen des VPC-Netzwerks im lokalen VPC-Netzwerk und ruft den öffentlichen DNS-Server von Google für Einträge außerhalb des VPC-Netzwerks auf. Sie können diesen DNS-Server nicht konfigurieren. Der DHCP-Client jeder Instanz ist so konfiguriert, dass er die /etc/resolv.conf-Datei der Instanz verwaltet.

Sie können eine eigene Suchdomain oder Nameserver zur Instanz /etc/resolv.conf hinzufügen, indem Sie die DHCP-Richtlinie ändern. Bei vielen Linux-Distributionen können diese Änderungen über /etc/dhcp/dhclient.conf bestehen bleiben. Weitere Informationen finden Sie in der Dokumentation Interne DNS.

Paketverarbeitung zwischen VPC-Netzwerk und außerhalb

Pakete in das oder aus dem VPC-Netzwerk werden von Netzwerkcode verarbeitet, der das Paket anhand von Firewallregeln, der Suchtabelle für externe IP-Adressen und der Tabelle aktiver Verbindungen untersucht. Das VPC-Netzwerk führt auch NAT für Pakete in und aus dem VPC-Netzwerk durch.

Von einer Instanz empfangene Pakete

Diese Pakete werden vom Instanz-Kernel nach der Standardmethode empfangen und in einen Stream umgewandelt.

Von einer Instanz gesendete Pakete

Pakete werden vom Instanz-Kernel nach der Standardmethode gesendet. Schnittstellen- und Netzwerkfunktion werden mit dem VIRTIO-Netzwerkmodul modelliert.

Detaillierte Verbindungsanleitungen

Im Folgenden wird beschrieben, was geschieht, wenn eine Instanz einen VPC-Netzwerkaufruf durchführt.

Eine Instanz führt einen Aufruf durch:

  1. Wenn die Zieladresse ein Instanzname oder eine URL ist, wie etwa www.google.com, ruft die Instanz den DNS-Dienst über ihren Metadatenserver auf und gibt die entsprechende IP-Adresse zurück. Sie können die Instanz so konfigurieren, dass ein anderer DNS-Dienst abgefragt wird, aber dann können Sie keine Instanznamen auflösen.
  2. Die Ziel-IP-Adresse wird anhand des IP-Adressbereichs des Subnetzes überprüft, den jede Instanz kennt.

    1. Wenn die IP-Adresse außerhalb des VPC-Netzwerks liegt:

      1. Die Instanz sendet das Paket an die MAC-Adresse des Subnetz-Gateways, wobei das Ziel auf das endgültige Ziel des Pakets eingestellt ist. Die Instanz muss möglicherweise eine ARP-Anfrage stellen, um die MAC-Adresse des Gateways aufzulösen.

      2. Das VPC-Netzwerk schreibt den IP-Header um, um die externe IP-Adresse der Instanz als Quelle zu deklarieren. Wenn die Instanz keine externe IP-Adresse hat, ist der Aufruf nicht zulässig und das VPC-Netzwerk löscht das Paket, ohne den Absender zu informieren.

      3. Das VPC-Netzwerk zeichnet das ausgehende Paket auf und fügt Quelle und Ziel der Tabelle aktiver Verbindungen hinzu.

      4. Das VPC-Netzwerk sendet das Paket an dessen Ziel.

      5. Das Ziel ruft das Paket ab und antwortet gegebenenfalls.

      6. Das VPC-Netzwerk empfängt die Antwort, prüft die Tabelle aktiver Verbindungen, stellt fest, dass es sich um eine aktive Verbindung handelt, und lässt diese zu. Das VPC-Netzwerk prüft die Netzwerk-/externe IP-Suchtabelle, ersetzt die externe IP-Adresse der Instanz durch die entsprechende Netzwerkadresse und sendet das Paket an die Quellinstanz.

      7. Die Instanz empfängt das Paket.

    2. Wenn die Ziel-IP-Adresse innerhalb des VPC-Netzwerks liegt:

      1. Die Instanz wird mit einer IP-Adresse mit 255.255.255.255-Maske konfiguriert, sodass die Instanz das Paket an die Gateway-MAC-Adresse des Subnetzes sendet. Die Instanz muss möglicherweise eine ARP-Anfrage stellen, um die MAC-Adresse des Gateways aufzulösen.

      2. Das VPC-Netzwerk antwortet über Proxy-ARP mit der MAC-Adresse der Zielinstanz.

      3. Google Cloud leitet das Paket an die Ziel-IP im VPC-Netzwerk weiter.

      4. Die Zielinstanz empfängt das Paket. Die Zielinstanz prüft die Firewall für eingehenden Traffic und bestimmt, ob das Paket zulässig ist. Wenn nicht, wird das Paket ohne Meldung gelöscht. Andernfalls verarbeitet die Instanz das Paket.

Eine externe Instanz oder ein externer Computer ruft eine Instanz auf:

  1. Der externe Aufrufer sendet ein Paket an die externe IP-Adresse der Instanz, die dem VPC-Netzwerk gehört.

  2. Das VPC-Netzwerk vergleicht das Paket mit der Tabelle aktiver Verbindungen, um zu prüfen, ob es sich um eine vorhandene Verbindung handelt:

    1. Wenn es sich nicht um eine bestehende Verbindung handelt, sucht das VPC-Netzwerk nach einer Firewallregel, die die Verbindung zulässt.
    2. Ist keine Firewallregel vorhanden, löscht das VPC-Netzwerk das Paket, ohne den Absender zu informieren.
  3. Wenn eine Verbindung oder eine gültige Firewallregel vorhanden ist, prüft das VPC-Netzwerk die Suchtabelle und ersetzt die externe IP-Adresse durch die entsprechende interne IP-Adresse im Paket, protokolliert das eingehende Paket in der Tabelle aktiver Verbindungen und sendet das Paket an die Zielinstanz.

  4. Die Instanz empfängt das Paket und antwortet, wenn ein Paket an eine Adresse außerhalb des Netzwerkbereichs gesendet wird, wie oben unter Wenn die IP-Adresse außerhalb des VPC-Netzwerk-IP-Bereichs liegt beschrieben.

  5. Das VPC-Netzwerk empfängt die Antwort, sucht die entsprechende eingehende Anfrage in der Tabelle aktiver Verbindungen und lässt die Weiterleitung des Pakets zu. Vor dem Senden ändert es die Quell-IP-Adresse. Dabei wird die interne IP-Adresse der Instanz durch die entsprechende externe IP-Adresse aus der Suchtabelle ersetzt.

VPC-Netzwerkdurchsatz messen

Ausgehender Traffic von einer virtuellen Maschine unterliegt einem Höchstdurchsatz für ausgehenden Traffic im VPC-Netzwerk. Die Obergrenze ist eine Schwelle, die nicht überschritten werden darf und nicht den tatsächlichen Durchsatz Ihres ausgehenden Traffics angibt. Es gibt keine Garantie, dass Ihr Traffic den maximalen Durchsatz erreicht, der von vielen anderen Faktoren als der Obergrenze abhängt. Wenn Sie beispielsweise externe IP-Adressen für die Kommunikation zwischen VM-Instanzen verwenden, ist ein höherer Overhead erforderlich als bei Verwendung interner IP-Adressen. Folglich hat der maximale Durchsatz für Traffic, der externe IP-Adressen verwendet, einen geringeren maximalen Durchsatz als Traffic, der interne IP-Adressen verwendet.

Um die Leistung einer Instanz bezogen auf diese Höchstwerte zu messen, verwenden Sie PerfKitBenchMarker zur Messung des Höchstdurchsatzes für ausgehenden Traffic.

Führen Sie z. B. die folgenden Befehle auf einem lokalen Computer aus. Durch den Befehl wird eine Instanz erstellt und ihre Leistung gemessen. Dabei gilt Folgendes:

  • [MACHINE_TYPE] ist der zu testende Maschinentyp, z. B. n1-standard-32.
  • [ZONE] ist die Zone, in der die Instanz erstellt wird.
  • [NUMBER_OF_VCPUS] ist die Anzahl der vCPUs der Instanz, z. B. 32 bei einem n1-standard-32-Maschinentyp.

So messen Sie die Leistung eines einzelnen Streams:

./pkb.py --cloud=GCP --machine_type=[MACHINE_TYPE] --benchmarks=iperf --ip_addresses=INTERNAL --zones=[ZONE]

So messen Sie die Leistung mehrerer Streams:

./pkb.py --cloud=GCP --machine_type=[MACHINE_TYPE] --benchmarks=iperf --ip_addresses=INTERNAL --zones=[ZONE] --iperf_sending_thread_count=[NUMBER_OF_VCPUS]

Weitere Informationen