DE202014010912U1 - Konsistentes Hashing anhand genauer Übereinstimmung mit Anwendung für Hardware-Lastausgleich - Google Patents

Konsistentes Hashing anhand genauer Übereinstimmung mit Anwendung für Hardware-Lastausgleich Download PDF

Info

Publication number
DE202014010912U1
DE202014010912U1 DE202014010912.5U DE202014010912U DE202014010912U1 DE 202014010912 U1 DE202014010912 U1 DE 202014010912U1 DE 202014010912 U DE202014010912 U DE 202014010912U DE 202014010912 U1 DE202014010912 U1 DE 202014010912U1
Authority
DE
Germany
Prior art keywords
index value
index
service instance
assigned
address table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202014010912.5U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202014010912U1 publication Critical patent/DE202014010912U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

Ein Netzwerkgeräte-Controller, umfassend: einen Speicher, in dem eine Adressentabelle mit einer Anzahl an Einträgen gespeichert ist, wobei die Adressentabelle über eine Anzahl an Einträgen kleiner oder gleich der Anzahl an Indexwerten in einem Satz von bereitgestellten Indexwerten verfügt, und wobei jeder einzelne Eintrag einem entsprechenden, bereitgestellten Indexwert und einer Instanz eines Verteilerdienstes, die von einer Vielzahl von Dienstinstanzen bereitgestellt wird, zugewiesen ist; und mindestens ein Prozessor, wobei der Prozessor bzw. die Prozessoren so konfiguriert sind, dass sie der Adressentabelle eine neue Dienstinstanz hinzufügen, indem sie die folgenden Operationen ausführen: Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, indem 1) ein bestehender, nicht zugewiesener Indexwert in einem Satz von bereitgestellten Indexwerten identifiziert wird, oder indem 2) die Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte erhöht und ein neu bereitgestellter Indexwert ausgewählt wird; Identifizieren eines zugewiesenen Indexwerts, der ein sekundärer Indexwert zu dem abgerufenen Indexwert ist; Unterteilen einer Datenpaket-Quelladressengruppe, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen; und Zuweisen der ersten Untergruppe von Speicheradressen zum Dienstinstanzeintrag in der Adressentabelle, der dem zugewiesenen sekundären Indexwert zugeordnet ist, und Zuweisen der zweiten Untergruppe von Speicheradressen zu einem Eintrag in der Adressentabelle, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz zugeordnet ist.

Description

  • HINTERGRUND
  • Ein Dienst zur verteilten Verarbeitung kann den Client-Geräten über verschiedene Instanzen des Verarbeitungsdienstes bereitgestellt werden. In der Regel kann ein Client-Gerät mit einer der Instanzen interagieren und so auf den Dienst zur verteilten Verarbeitung zugreifen. Die Instanzen des Dienstes zur verteilten Verarbeitung können auf mehreren Computergeräten und/oder virtuellen Servern gehostet werden. Lastverteiler verteilen die Client-Anfragen über mehrere Instanzen, um eine Überlastung der Vielzahl von Computergeräten und/oder virtuellen Servern zu vermeiden.
  • Netzwerkgeräte verarbeiten im Allgemeinen Datenpakete auf Basis der Adressdaten, die den Datenpaketen zugewiesen wurden. Ein Beispiel: Ein Router leitet ein Datenpaket gewöhnlich an das nächste Netzwerkziel (einen „Next-Hop“) über eine dem Datenpaket zugewiesenen Adresse, z. B. eine Zieladresse, die in der Headerinformation für das empfangene Datenpaket angegeben ist, weiter.
  • ZUSAMMENFASSUNG
  • In einem Aspekt bezieht sich die Offenbarung auf die Verwaltung von Routing-Informationen für einen Verteilerdienst, der von einer Vielzahl von Dienstinstanzen bereitgestellt wird. Diese beinhaltet die Bereitstellung einer Adressentabelle mit einer Anzahl an Einträgen kleiner oder gleich der Anzahl an Indexwerten in einem Satz bereitgestellter Indexwerte, wobei jeder einzelne Eintrag einem entsprechenden, bereitgestellten Indexwert und einer Instanz eines Verteilerdienstes zugewiesen ist. Diese beinhaltet das Hinzufügen einer neuen Dienstinstanz zur Adressentabelle durch Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, sowie das Identifizieren eines zugewiesenen Indexwerts, der als sekundärer Indexwert zum abgerufenen Indexwert agiert, das Unterteilen einer Quelladressengruppe des Datenpakets, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen, sowie die Zuordnung der ersten Untergruppe von Speicheradressen zu einem Dienstinstanzeintrag in der Adressentabelle, der dem zugeordneten sekundären Indexwert zugewiesen ist, und der zweiten Untergruppe von Speicheradressen zu einem Eintrag in der Adressentabelle, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz zugewiesen ist. Diese beinhaltet das Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, indem die Identifizierung eines bestehenden, nicht zugewiesenen Indexwerts in einem Satz von bereitgestellten Indexwerten und – wenn kein nicht zugewiesener Indexwert verfügbar ist – die Erhöhung der Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte sowie die Auswahl eines neu bereitgestellten Indexwertes ausgeführt wird. In manchen Implementierungen beinhaltet diese das Löschen einer Dienstinstanz aus der Adressentabelle durch Identifizieren einer dritten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem ersten Indexwert zugewiesen ist, um das Löschen der Dienstinstanz zu ermöglichen; das Identifizieren einer vierten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt; das Zuweisen einer kombinierten Untergruppe von Speicheradressen, die aus der dritten und vierten Untergruppe von Speicheradressen besteht, zum Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert zugewiesen ist; und das Löschen des Dienstinstanzeintrags, der dem ersten Indexwert aus der Tabelle zugewiesen ist.
  • In einem Aspekt bezieht sich die Offenbarung auf einen Netzwerkgeräte-Controller. Der Netzwerkgeräte-Controller beinhaltet einen Speicher, in dem eine Adressentabelle mit einer Anzahl an Einträgen kleiner oder gleich der Anzahl an Indexwerten in einem Satz bereitgestellter Indexwerte gespeichert ist. Jeder der Einträge wird einem entsprechenden, bereitgestellten Indexwert und einer Instanz eines Verteilerdienstes zugewiesen. Der Netzwerkgeräte-Controller beinhaltet mindestens einen Prozessor, der so konfiguriert ist, dass er eine neue Dienstinstanz zur Adressentabelle hinzufügt, indem er folgende Operationen ausführt: Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, sowie das Identifizieren eines zugewiesenen Indexwerts, der als sekundärer Indexwert zum abgerufenen Indexwert agiert, das Unterteilen einer Quelladressengruppe des Datenpakets, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen, sowie die Zuweisung der ersten Untergruppe von Speicheradressen zu einem Dienstinstanzeintrag in der Adressentabelle, der dem sekundären Indexwert zugewiesen ist, und der zweiten Untergruppe der Speicheradressen zu einem Eintrag in der Adressentabelle, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz zugewiesen ist. Der Prozessor, von dem mindestens einer vorhanden sein muss, ist so konfiguriert, dass er einen zuweisbaren Indexwert abruft, der der neuen Dienstinstanz zugewiesen wird, indem die Identifizierung eines bestehenden, nicht zugewiesenen Indexwerts in einem Satz bereitgestellter Indexwerte und – wenn kein nicht zugewiesener Indexwert verfügbar ist – die Erhöhung der Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte sowie die Auswahl eines neu bereitgestellten Indexwertes ausgeführt wird. In manchen Implementierungen ist der Prozessor, von dem mindestens einer vorhanden sein muss, so konfiguriert, dass er folgende Operationen ausführt: das Löschen einer Dienstinstanz aus der Adressentabelle durch Identifizieren einer dritten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem ersten Indexwert zugewiesen ist, um das Löschen der Dienstinstanz zu ermöglichen; das Identifizieren einer vierten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt; das Zuweisen einer kombinierten Untergruppe von Speicheradressen, die aus der dritten und vierten Untergruppe von Speicheradressen besteht, zum Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert zugewiesen ist; und das Löschen des Dienstinstanzeintrags, der dem ersten Indexwert aus der Tabelle zugewiesen ist.
  • In einem Aspekt bezieht sich die Offenbarung auf materielle computerlesbare Speichermedien, auf denen nicht-flüchtige, von einem Prozessor ausführbare Anweisungen gespeichert sind, die bei Ausführung durch ein Computergerät, das die Speichermedien und einen oder mehrere Prozessoren umfasst, den einen bzw. die Vielzahl von Prozessoren dazu veranlasst, eine Adressentabelle mit einer Anzahl an Einträgen kleiner oder gleich einer Anzahl an Indexwerten in einem Satz bereitgestellter Indexwerte, wobei die einzelnen Indexwerte einem entsprechenden bereitgestellten Indexwert und einer Instanz eines Verteilerdienstes zugewiesen sind, in einem computerlesbaren Speicher zu speichern. Die Anweisungen veranlassen den einen oder die Vielzahl von Prozessoren dazu, eine neue Dienstinstanz zur Adressentabelle durch Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, hinzuzufügen, sowie einen zugewiesenen Indexwert zu identifizieren, der als sekundärer Indexwert zum abgerufenen Indexwert agiert, sowie eine Quelladressengruppe des Datenpakets, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen zu unterteilen, und die erste Untergruppe von Speicheradressen einem Dienstinstanzeintrag in der Adressentabelle zuzuweisen, der dem sekundären Indexwert zugewiesen ist, und die zweite Untergruppe der Speicheradressen einem Eintrag in der Adressentabelle zuzuweisen, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz zugewiesen ist. Die Anweisungen veranlassen den einen oder die Vielzahl von Prozessoren dazu, einen zuweisbaren Indexwert abzurufen, der der neuen Dienstinstanz zugewiesen wird, indem die Identifizierung eines bestehenden, nicht zugewiesenen Indexwerts in einem Satz bereitgestellter Indexwerte und – wenn kein nicht zugewiesener Indexwert verfügbar ist – die Erhöhung der Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte sowie die Auswahl eines neu bereitgestellten Indexwertes ausgeführt werden. In manchen Implementierungen veranlassen die Anweisungen den einen oder die Vielzahl von Prozessoren, folgende Operationen auszuführen: das Löschen einer Dienstinstanz aus der Adressentabelle durch Identifizieren einer dritten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem ersten Indexwert zugewiesen ist, um das Löschen der Dienstinstanz zu ermöglichen; das Identifizieren einer vierten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt; das Zuweisen einer kombinierten Untergruppe von Speicheradressen, die aus der dritten und vierten Untergruppe von Speicheradressen besteht, zum Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert zugewiesen ist; und das Löschen des Dienstinstanzeintrags, der dem ersten Indexwert aus der Tabelle zugewiesen ist.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die obigen und zugehörigen Zwecke, Merkmale und Vorteile der vorliegenden Offenbarung werden unter Bezugnahme auf die folgende detaillierte Beschreibung in Verbindung mit den folgenden Figuren besser verständlich, wobei:
  • 1A ist ein Blockdiagramm eines exemplarischen Netzwerkgeräts;
  • 1B ist ein Blockdiagramm eines exemplarischen Netzwerkgeräts, das mehrere Hosts für einen Verteilerdienst mit einem größeren Datennetzwerk verbindet;
  • 2 ist ein Blockdiagramm eines exemplarischen Index-Pairings;
  • 3 ist ein Diagramm, das eine exemplarische Tabelle veranschaulicht, die Adressengruppen auf Dienstinstanzen abbildet;
  • 4A ist ein Flussdiagramm für ein exemplarisches Verfahren, in dem eine Dienstinstanz einer Adressentabelle hinzugefügt wird;
  • 4B und 4C sind Diagramme, die exemplarisch das Hinzufügen einer neuen Dienstinstanz zu einer Tabelle veranschaulichen;
  • 5A ist ein Flussdiagramm für ein exemplarisches Verfahren, in dem eine Dienstinstanz aus einer Adressentabelle gelöscht wird;
  • 5B ist ein Diagramm, das exemplarisch das Löschen einer Dienstinstanz aus einer Tabelle veranschaulicht; und
  • 6 zeigt ein Blockdiagramm eines Computersystems getreu einer veranschaulichenden Implementierung.
  • Entsprechende Referenznummern und Kennzeichnungen in den verschiedenen Zeichnungen zeigen entsprechende Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Aspekte und Implementierungen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf die Lastverteilung. Im Allgemeinen kann die Lastverteilung von Anfragen an einen Verteilerdienst durch die Weiterleitung verschiedener Anfragen an verschiedene Instanzen des Dienstes erfolgen. Die unterschiedlichen Instanzen können auf verschiedenen physikalischen oder virtuellen Serverhosts gehostet werden. Ein Netzwerkdienst in einem Netzwerkpfad, wie etwa ein Switch oder Router, legt die Dienstinstanz fest, an die eine bestimmte Anfrage weitergeleitet werden soll. Das Netzwerkgerät kann einen Satz von Regeln zur Lastverteilung implementieren, der auf jedes eingehende Datenpaket angewandt wird. In manchen Implementierungen geht der gesamte Datenverkehr, der per Lastenausgleich verteilt wird, bei dem mit derselben Zieladresse, z. B. einer virtuellen Adresse für den Verteilerdienst, adressierten Netzwerkgerät ein. Die Regeln zur Lastverteilung können ähnlich einer zielortbasierten Routingtabelle implementiert werden, mit der Ausnahme, dass der Datenverkehr von den Regeln zur Lastverteilung basierend auf einem Merkmal der eingehenden Datenpakete, das als konsistente Kennung dient, weitergeleitet wird, beispielsweise basierend auf der Quelladresse. In manchen Implementierungen leiten die Regeln zur Lastverteilung die Datenpakete von einem Client zu einem bestimmten Host für eine Instanz des Verteilerdienstes weiter, die basierend auf den paar letzten (die niedrigstwertigen) Bits der 32-Bit IPv4-Netzwerkadresse des Clients selektiert werden. Die Regeln zur Lastverteilung können so selektiert werden, dass das Hinzufügen wie auch das Löschen von Dienstinstanzen minimale Auswirkungen auf die bestehenden Routen und Routingtabellen hat.
  • 1A ist ein Blockdiagramm eines exemplarischen Netzwerkgeräts 130. IB ist ein Blockdiagramm eines exemplarischen Netzwerkgeräts 130, das mehrere Hosts 150a150n für einen Verteilerdienst mit einem größeren Datennetzwerk 110 verbindet. Im Gesamtüberblick verfügt das Netzwerkgerät 130 über ein Steuermodul 144 und eine Engine zur Weiterleitung 134. Das Steuermodul hinterlegt die zuvor genannten Regeln im Speicher 136 zur Verwendung durch die Engine zur Weiterleitung 134 bei der Verarbeitung von Datenpaketen. Netzwerkgerät 130 verfügt über eine Vielzahl von Netzwerkschnittstellen 138, wobei eine oder mehrere Netzwerkschnittstellen 138 mit anderen Netzwerkgeräten in verschiedenen Subnetzen 112a112n eines Datennetzwerks 110 und/oder Hosts 150a150n verbunden sind.
  • Konkreter gesagt ist das Netzwerk 130 im Datennetzwerk 110 insofern eingebunden, dass es Datenpakete über die Netzwerkschnittstellen 138 empfängt und versendet. Jede Netzwerkschnittstelle 138 kann mit anderen Netzwerkgeräten, beispielsweise über eine Datenschicht, verbunden sein. In einigen Ausführungsformen sind die Verbindungen bidirektionale Datenlinks. In einigen Ausführungsformen sind die Verbindungen unidirektionale Datenlinks, wobei jeder Link entweder ein- oder ausgeht. Die anderen Netzwerkgeräte senden Datenpakete an das Netzwerkgerät 130, das diese an ein anderes Netzwerkgerät gemäß seiner Konfiguration (z. B. im Speicher 136 gesicherte Regel- oder Routingdaten) weiterleiten kann. Beispielsweise kann ein Datenpaket auf dem Netzwerkgerät 130 über eine erste Schnittstelle (z. B. Netzwerkschnittstelle 138a) eingehen und das Netzwerkgerät 130 dazu veranlassen, das empfangene Datenpaket zu verarbeiten und (zum Beispiel) an einen geeigneten Next-Hop über eine zweite Schnittstelle (z. B. Netzwerkschnittstelle 238b) weiterzuleiten. Die Engine zur Weiterleitung 134 legt fest, welche Netzwerkschnittstelle 138 für die Weiterleitung jedes der empfangenen Datenpakete zu verwenden ist.
  • Datennetzwerk 110 ist eine Netzwerk, das die Interaktionen zwischen den Computergeräten unterstützt. Ein anschauliches exemplarisches Datennetzwerk 110 ist das Internet; es können jedoch auch andere Netzwerke verwendet werden. Datennetzwerk 110 kann aus mehreren verbundenen Subnetzwerken 112a112n bestehen. Beim Datennetzwerk 110 kann es sich um ein lokales Netzwerk (LAN), wie etwa das Firmenintranet, ein Metropolitan-Netzwerk (MAN), ein Großraumnetzwerk (WAN), ein Inter-Netzwerk wie etwa das Internet, oder ein Peer-to-Peer Netzwerk, z. B. ein WiFi Peer-to-Peer-Netzwerk (Ad-Hoc), handeln. Beim Datennetzwerk 110 kann es sich um einen beliebigen Typ und/oder eine beliebige Art von Datennetzwerk und/oder Kommunikationsnetzwerk handeln. Das Datennetzwerk 110 kann öffentlich, privat oder eine Kombination aus öffentlichen und privaten Netzwerken sein. Im Allgemeinen wird Datennetzwerk 110 zur Übermittlung von Daten zwischen Computergeräten verwendet. Diese Kommunikation wird vom Netzwerkgerät 130 gemäß seiner Konfiguration unterstützt.
  • Netzwerkgerät 130 beinhaltet Steuermodul 144 und Speicher 136, in dem die Konfigurationsdaten, Regeln und/oder Routingdaten gespeichert sind. In manchen Implementierungen ist Steuermodul 144 als Spezialschaltung (z. B. als ASIC) implementiert. In manchen Implementierungen ist Steuermodul 144 als ein Satz von auf einem Computer ausführbaren Anweisungen, die in einem für den Computer zugänglichen Speicher gespeichert sind und von einem oder mehreren Prozessoren ausgeführt werden, implementiert. Steuermodul 144 des Netzwerkgeräts empfängt die Konfigurations- und Routinginformationen und aktualisiert die im Speicher 136 gespeicherten Konfigurations- und Routingdaten. In manchen Implementierungen empfängt Steuermodul 144 die Routinginformationen von anderen Netzwerkgeräten im Netzwerk 110, z. B. mittels ICMP- oder BGP-Nachrichten. In manchen Implementierungen erstellt und hinterlegt Steuermodul 144 die hier beschriebenen Datenstrukturen mithilfe der empfangenen Routingdaten. In manchen Implementierungen ist das Netzwerkgerät 130 Teil des softwaredefinierten Netzwerks (SDN) und Steuermodul 144 des Netzwerkgeräts empfängt die Konfigurations- und Routinginformationen von einem SDN-Controller, z. B. über eine Kontrollschicht. In manchen Implementierungen empfängt Steuermodul 144 die hier beschriebenen Regeln zur Lastverteilung von einem SDN-Controller. Im Allgemeinen speichert Steuermodul 144 diese Regeln zur Lastverteilung im Speicher 136. Die Engine zur Weiterleitung 134 verwendet die Konfigurations- und Routingdaten im Speicher 136, um den Datenverkehr an den Netzwerkschnittstellen 138 zu steuern.
  • Beim Netzwerkgerätespeicher 136 kann es sich um ein beliebiges Gerät handeln, dass zur Sicherung von computerlesbaren Daten geeignet ist. Speicher 136 kann dem Speicher 670 oder Cache 675, veranschaulicht in 6 und nachstehend beschrieben, ähnlich sein. Beispiele beinhalten, sind jedoch nicht beschränkt auf, Halbleiterspeichervorrichtungen, wie etwa EPROM, EEPROM, SDRAM und Flash-Speichergeräte. Ein Netzwerkgerät 130 kann über eine beliebige Anzahl an Speichergeräten 136 verfügen.
  • Die Engine zur Weiterleitung 134 verwendet die in Speicher 136 gespeicherten Regeln, Konfigurationsdaten und Routinginformationen, um den an den Netzwerkschnittstellen 138 eingehenden Datenverkehr zu steuern. In manchen Implementierungen ist die Engine zur Weiterleitung 134 als Spezialschaltung (z. B. als ASIC) implementiert. In manchen Implementierungen ist die Engine zur Weiterleitung 134 als ein Satz von auf einem Computer ausführbaren Anweisungen, die in einem für den Computer zugänglichen Speicher gespeichert sind und von einem oder mehreren Prozessoren ausgeführt werden, implementiert. Die Engine zur Weiterleitung 134 extrahiert Adressendaten aus einem Datenpaket (z. B. eine IP-Adresse aus einem Datenpaket-Header) und verarbeitet diese, um die Verarbeitung des Datenpakets (z. B. ob das Datenpaket weitergeleitet werden soll und/oder welche Netzwerkschnittstellen 138 für die Weiterleitung des Datenpakets zu verwenden sind) mithilfe der Regeln zur Lastverteilung und den hier beschriebenen Verfahren zu bestimmen.
  • Die Regeln zur Lastverteilung leiten den Datenverkehr basierend auf einem Merkmal der eingehenden Datenpakete weiter, das als konsistente Kennung dient, beispielsweise die Quelladresse. In manchen Implementierungen leiten die Regeln zur Lastverteilung die Datenpakete von einem Client zu einem bestimmten Host für eine Instanz des Verteilerdienstes weiter, die basierend auf den paar letzten (die niedrigstwertigen) Bits der 32-Bit IPv4-Netzwerkadresse des Clients selektiert werden. In manchen Implementierungen leiten die Regeln zur Lastverteilung die Datenpakete von einem Client zu einem bestimmten Host für eine Instanz des Verteilerdienstes weiter, die basierend auf einer aus mehreren Werten bestehenden Kennung, z. B. einer Quelladresse und einem TCP-Quellport, selektiert werden. In manchen Implementierungen werden Adressengruppen (oder Kennungen) verschiedenen Instanzen des Verteilerdienstes zugewiesen. Im Allgemeinen ist die Größe der einzelnen Gruppen (d. h. die Anzahl an Adressen in jeder einzelnen Gruppe) ungefähr gleich groß wie die Anzahl in einer beliebigen anderen Gruppe. In manchen Implementierungen ist jede einzelne Adressengruppe entweder eine Gruppe erster Größe oder eine Gruppe zweiter Größe, die halb so groß wie die Gruppe erster Größe ist. Wenn neue Dienstinstanzen hinzugefügt werden, werden die Gruppen der ersten Größe aufgeteilt, sodass der neuen Dienstinstanz eine Adressengruppe zugewiesen wird, die halb so groß wie die Adressengruppe der ersten Größe ist.
  • Um diese Verteilung zu erreichen, wird jede Dienstinstanz vom Netzwerkcontroller behandelt, als hätte sie eine sekundäre Instanz. Wird eine neue Dienstinstanz hinzugefügt, so identifiziert der Netzwerkcontroller die sekundäre Instanz für die neue Dienstinstanz und teilt die der sekundären Instanz zugewiesene Adressengruppe in zwei Gruppen, eine Gruppe für die bereits bestehende sekundäre Instanz und eine weitere Gruppe für die neue Dienstinstanz. Wird eine Dienstinstanz gelöscht, weist der Netzwerkcontroller die Adressen für die gelöschte Dienstinstanz wieder der sekundären Instanz zu. In manchen Situationen werden die Pairings der sekundären Peer-Dienstinstanzen umverteilt, sodass jede Dienstinstanz bei Bedarf über eine sekundäre Instanz verfügt.
  • Jede Dienstinstanz ist einem Index zugewiesen oder zugeordnet, der zur Identifizierung einer sekundären Instanz verwendet wird. Im Allgemeinen wird jeder Indexwert mit einem sekundären Index basierend auf der insgesamten Anzahl an Dienstinstanzen gepaart. In manchen Implementierungen basiert das Pairing auf der Anzahl an Dienstinstanzen k und der größten Zweierpotenz kleiner der Anzahl an Dienstinstanzen (d. h. mit der Variable p wird der Exponent für eine Zweierpotenz bezeichnet, 2P < k ≤ 2P+1), wobei k für die Anzahl an Dienstinstanzen nach Hinzufügen einer neuen Dienstinstanz oder vor Löschen einer Dienstinstanz steht. In manchen Implementierungen wird, mathematisch korrekt ausgedrückt, für eine Anzahl an Dienstinstanzen k jede Dienstinstanz von Index r (beginnend mit 0) mit einer sekundären Dienstinstanz von Index c gepaart, wobei gilt: p = [log2k – 1] c = r + 2P modulo 2P+1
  • 2 stellt ein Diagramm von exemplarischen Index-Pairings dar. Es werden drei Sätze von sekundären Abbildungen dargestellt: eine erste Abbildung 220 für einen Satz von vier Instanzen in zwei Paaren, eine zweite Abbildung 230 für einen Satz von acht Instanzen in vier Paaren und eine dritte Abbildung 240 für einen Satz von sechszehn Instanzen in acht Paaren. Diese Abbildungen (220, 230 und 240) sind bildhafte Beispiele von Paaren, die mit den obigen Gleichungen berechnet wurden. Für einen Bereich von drei bis vier Dienstinstanzen, von 0 bis 3 nummeriert, wird in der ersten Abbildung 220 beispielsweise Instanz 0 mit Instanz 2 und Instanz 1 mit Instanz 3 gepaart. Wird jedoch eine fünfte Instanz hinzugefügt (nummeriert mit Ziffer 4), so wird der zulässige Bereich von drei bis vier Dienstinstanzen überschritten und würde erweitert werden, z. B. auf einen Bereich von fünf bis acht Dienstinstanzen. Die zweite Abbildung 230 veranschaulicht, dass die neu hinzugefügte Instanz 4 mit Instanz 0 gepaart werden würde, die in der ersten Abbildung 220 mit Instanz 2 gepaart wurde. Weitere Dienstinstanzen können hinzugefügt werden, bis der neue Schwellenwert von acht Instanzen erreicht wird. Index 5 wird mit Index 1 gepaart, Index 6 wird mit Index 2 gepaart und Index 7 (welcher der achten Dienstinstanz entspricht) wird mit Index 3 gepaart. Wird eine neunte Instanz (mit Ziffer 8 nummeriert) hinzugefügt, wird der Bereich von fünf bis acht Dienstinstanzen überschritten und würde erweitert werden, z. B. auf einen Bereich von neun bis sechzehn Dienstinstanzen. Die dritte Abbildung 240 veranschaulicht, dass die neu hinzugefügte Instanz 8 mit Instanz 0 gepaart werden würde, die in der ersten Abbildung 220 mit Instanz 2 und in der zweiten Abbildung 230 mit Instanz 4 gepaart wurde.
  • 3 ist ein Diagramm, das eine exemplarische Adressentabelle 360 veranschaulicht, die Adressengruppen auf Dienstinstanzen abbildet. Im Gesamtüberblick bildet die Adressentabelle 360 sieben Adressengruppen auf die Dienstinstanzen ab. Tabelle 360 wird mit Zeilen exemplarischer Daten, wobei jede Zeile eine exemplarische Regel für eine Dienstinstanz darstellt, und drei Spalten dargestellt: Index, Bits und Resultat. Der „Index“ entspricht den oben eingeführten Indexzahlen, beginnend mit Ziffer 0. Das „Resultat“ entspricht einem Wert, der angibt, wie mit Datenpaketen, die der Regel entsprechen, verfahren wird, z. B. kann es sich dabei um eine Dienstinstanzkennung oder eine Netzwerkschnittstellen-Kennung zur Weiterleitung von Datenpaketen an eine Dienstinstanz handeln. Die „End-Bitwerte“ sind binäre Zahlen; eine Adresse entspricht einer Regel, wenn sie auf den gleichen Bits endet wie die End-Bitwerte der Regel. Das „x“ in den Bits steht für ein Bit, das entweder den Wert 1 oder den Wert 0 annehmen kann, das sog. „don't care“-Bit. Zeile 362 hat beispielsweise einen End-Bitwert von „x11“, was bedeutet, dass jede Adresse, in der die letzten beiden Bits der „11“ entsprechen, passend wäre. Keine andere Regel in Tabelle 360 verfügt über End-Bitwerte, die auf 11 enden.
  • Wie in 3 veranschaulicht, beinhaltet die Adressentabelle 360 Einträge für acht mögliche Pairings von Indexwerten und Adressengruppen. Diese acht Indexwerte können als in der Tabelle „bereitgestellt“ betrachtet werden. Sieben der acht Einträge sind ausgefüllt und verfügen über Adressengruppen, die den entsprechenden Indexwerten zugewiesen wurden. Ein Eintrag, der dem Indexwert 7 zugeordnet ist, ist keiner Adressengruppe zugewiesen und ist folglich zur Zuweisung verfügbar. Obgleich die Tabelle weitere Einträge, mit Indexwerten größer 7, beinhalten kann, werden Einträge dieser Art angesichts der begrenzten Anzahl an Einträgen, die zur Bearbeitung der aktiven Anzahl an Dienstinstanzen benötigt werden, nicht als zuweisbar erachtet (und werden demnach nicht angezeigt). Sobald die Anzahl an aktiven Instanzen den Schwellenwert (gewöhnlich eine Zahl, die der Zweierpotenz gleich ist) überschreitet, werden weitere Einträge und ihre entsprechenden Indexwerte bereitgestellt, und so zur Zuweisung verfügbar gemacht.
  • In manchen Implementierungen können die einzelnen Adressengruppen allein durch die Werte der niedrigstwertigen Bits der Adressen bestimmt werden. Die Werte dieser Bits dienen an sich als ein Indexwert für die Adressengruppe. Alle Adressen, deren letzten vier höherwertigen Bits 0101 (d. h. 5) sind, werden beispielsweise grundsätzlich als Teil der Adressengruppe, die der Indexzahl 5 zugeordnet ist, angesehen. Adressen, deren letzten vier Bits die höherwertigen Bits 0001 sind, werden grundsätzlich der Indexzahl 1 zugewiesen. In diesen Implementierungen ist keine explizite Zuweisung der Adressengruppen erforderlich, stattdessen wird lediglich auf die Struktur der Adressen an sich gesetzt. Die Anzahl von Bits, die zum Bestimmen dieser inhärenten Adressengruppen verwendet werden, sind abhängig von der Anzahl an Dienstinstanzen, zwischen denen die Adressen aufgeteilt werden.
  • In manchen Implementierungen wird jede Gruppe durch eine Netzwerkadressenmaske in CIDR-Notation definiert und die Gruppe wird aufgeteilt, indem eine Adressmaske danach ausgewählt wird, dass sie inmitten zwei Adressmasken liegt (z. B. ein Durchschnitt). Es kann ein beliebiger Ansatz verwendet werden, um die Adressengruppe zu beschreiben, die den einzelnen Dienstinstanzen zugeordnet ist, und die Adressengruppe in kleinere Untergruppen zu unterteilen.
  • 4A ist ein Flussdiagramm für ein exemplarisches Verfahren, bei dem eine Dienstinstanz einer Adressentabelle hinzugefügt wird. Im Gesamtüberblick beginnt ein Verfahren 400 damit, dass ein Netzwerkgerät einen zuweisbaren Indexwert abruft, um diesen einer neuen Dienstinstanz zuzuweisen (Phase 410). Das Netzwerkgerät identifiziert dann einen zugewiesenen Indexwert, bei dem es sich um einen sekundären Indexwert zum abgerufenen Indexwert handelt (420), und unterteilt eine dem sekundären Indexwert zugeordnete Datenpaket-Quelladressengruppe in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen (Phase 430). Das Netzwerkgerät weist die erste Untergruppe von Speicheradressen dem Dienstinstanzeintrag in der Adressentabelle zu, der dem zugewiesenen sekundären Indexwert zugeordnet ist (Phase 440), und weist die zweite Untergruppe von Speicheradressen einem Eintrag in der Adressentabelle zu, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz (Phase 450) zugeordnet ist.
  • Konkreter gesagt beginnt das Verfahren 400 damit, dass ein Netzwerkgerät (z. B. das N 130, dargestellt in 1A) einen zuweisbaren Indexwert abruft, um diesen einer neuen Dienstinstanz zuzuweisen (Phase 410). Das Netzwerkgerät ruft einen zuweisbaren Indexwert ab, indem es einen vorhandenen, nicht zugewiesenen Indexwert in einem Satz bereitgestellter Indexwerte identifiziert. Indexwerte werden als bereitgestellt bezeichnet, wenn sie bereits zugewiesen wurden oder zur Zuweisung verfügbar sind. Gibt es keine vorhandenen, nicht zugewiesenen Indexwerte im Satz der bereitgestellten Indexwerte, so wird die Anzahl von Indexwerten im Satz der bereitgestellten Indexwerte vom Netzwerkgerät erhöht und ein neu bereitgestellter Indexwert ausgewählt. In manchen Implementierungen erhöht das Netzwerkgerät die Anzahl an Indexwerten, indem es die Anzahl an bereitgestellten Indexwerte verdoppelt und das Pairing der sekundären Werte der Dienstinstanz basierend auf der neuen Anzahl an bereitgestellten Indexwerten neu festlegt.
  • Das Netzwerkgerät identifiziert dann einen zugewiesenen Indexwert, der ein sekundärer Indexwert zu dem abgerufenen Indexwert ist (Phase 420). Wie oben bereits erwähnt, ist der sekundäre Indexwert für einen gegebenen Indexwert in manchen Implementierungen die Funktion des gegebenen Indexwerts. Sprich der sekundäre Indexwert c ist definiert als: c = r + 2P modulo 2P+1 wobei r der gegebene Indexwert und p der Exponent für die größte Zweierpotenz kleiner oder gleich dem höchsten verwendeten Indexwert ist (d. h. p = [log2k – 1], wobei k für die gesamte Anzahl an Dienstinstanzen steht und die Indexwerte bei Null beginnen).
  • Das Netzwerkgerät unterteilt eine Datenpaket-Quelladressengruppe, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen (Phase 430). In manchen Implementierungen wird die Gruppe bei der Unterteilung in gleiche Gruppen unterteilt, so dass die erste Untergruppe der Speicheradressen und die zweite Untergruppe der Speicheradressen gleich groß sind. Wie oben beschrieben können Adressen in Untergruppen unterteilt werden, die über einen gemeinsamen Satz von End-Bits verfügen und nicht an den Werten höherwertiger Bits in der Adresse „interessiert“ sind (diese „don't care“-Bits können als „x“-Bits ausgedrückt werden). Eine Gruppierung dieser Art kann effektiv in zwei Hälften aufgeteilt werden, indem die Anzahl an Bits im Satz der End-Bits, die spezifisch definiert sind (d. h. die keine x-Bits sind), um eins erhöht wird. Gemäß dem Binärsystem wird der Wert für dieses Bit für die Hälfte der Adressen in der vorangegangen Gruppierung mit dem Wert 0 und für die andere Hälfte der Adressen mit dem Wert 1 belegt sein. Somit kann eine Adressengruppe geteilt werden, indem das niederwertigste x-Bit in den End-Bits in den Wert 0 oder 1 umgewandelt und ein entsprechender neuer Eintrag der Tabelle hinzugefügt wird, bei dem das Bit auf den anderen Wert von 0 oder 1, d. h. den nicht ausgesuchten Wert, gesetzt wird. Eine Adressengruppe mit den End-Bits xx001 kann zu gleichmäßigen Teilen in zwei Gruppen mit den End-Bits x0001 und x1001 unterteilt werden.
  • Das Netzwerkgerät weist dann die erste Untergruppe von Speicheradressen dem Dienstinstanzeintrag in der Adressentabelle zu, der dem zugewiesenen sekundären Indexwert zugeordnet ist (Phase 440), und weist die zweite Untergruppe von Speicheradressen einem Eintrag in der Adressentabelle zu, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz (Phase 450) zugeordnet ist. In manchen Implementierungen können die Änderungen an der Adressentabelle bei bestimmten Gegebenheiten begrenzt werden, sodass nur der Eintrag in der Adressentabelle in Phase 440 geändert und ein neuer Eintrag in Phase 450 hinzugefügt wird. Dies ermöglicht eine Änderung mit geringer Auswirkung.
  • 4B und 4C sind Diagramme, die exemplarisch das Hinzufügen einer neuen Dienstinstanz zu einer Tabelle, die Adressengruppen auf Dienstinstanzen abbildet, veranschaulichen. Ein Gesamtüberblick: In 4B wurde Adressentabelle 360, die das erste Mal in 3 veranschaulicht wurde, in Adressentabelle 370 geändert, die acht Adressengruppen auf Dienstinstanzen abbildet. Gleichermaßen wurde Adressentabelle 370 in 4C, die acht Adressengruppen auf Dienstinstanzen abbildet, in Adressentabelle 380 geändert, die neun Adressengruppen auf Dienstinstanzen abbildet. 4B veranschaulicht ein Szenario, wobei es einen verfügbaren zuweisbaren Index gibt. 4C veranschaulicht ein Szenario, wobei es keinen verfügbaren zuweisbaren Index gibt.
  • Adressentabelle 360 in 4B, die sieben Adressengruppen auf Dienstinstanzen abbildet, wurde in Adressentabelle 370 geändert, die acht Adressengruppen auf Dienstinstanzen abbildet. Konkreter gesagt wurde eine Dienstinstanz „H“ hinzugefügt (d. h. das oben unter Bezugnahme auf 4A beschriebene Verfahren wurde verwendet). Die neue Dienstinstanz wurde Index 7 zugewiesen, der über einen sekundären Index von 3 verfügt. Der Eintrag 462 für Index 3 ist eine Regel für Adressen, deren letzten zwei Bits auf „11“ enden. Die Tabelle 360 wurde mit der neuen Regel in Tabelle 370 geändert, in der Eintrag 474 für Index 3 eine Regel für Adressen ist, deren letzte drei Bits auf „011“ enden, und Eintrag 476 für Index 7 eine Regel für Adressen ist, deren letzte drei Bits auf „111“ enden.
  • In manchen Implementierungen wird die Anzahl an bereitgestellten Indexwerten bei Bereitstellung neuer Indexe auf eine Gesamtzahl an bereitgestellten Indexwerten der nächsthöheren Zweierpotenz erhöht. Folglich werden bei Bereitstellung eines fünften Indexes (22 überschreitend) weitere vier Indexwerte bereitgestellt, um die Gesamtzahl auf bis zu 8 bereitgestellte Indexwerte zu erhöhen, d. h. 23. Wenn ein neunter Indexwert benötigt wird, werden 8 weitere Indexwerte bereitgestellt und die Gesamtzahl wird somit auf 16 erhöht, d. h. 24 usw. In diesem Fall macht es das Hinzufügen einer achten Dienstinstanz nicht erforderlich, dass die Gesamtzahl an bereitgestellten Indexwerten eine Zweierpotenz überschreitet, und folglich werden keine neuen Indexwerte benötigt oder bereitgestellt.
  • Adressentabelle 370 in 4C, die acht Adressengruppen auf Dienstinstanzen abbildet, wird in Adressentabelle 380 geändert, die neun Adressengruppen auf Dienstinstanzen abbildet. Konkreter gesagt wurde eine Dienstinstanz „J“ hinzugefügt (d. h. das oben unter Bezugnahme auf 4A beschriebene Verfahren wurde verwendet). Die neue Dienstinstanz wurde Index 8 zugewiesen, der über einen sekundären Index von 0 verfügt. Eintrag 472 für Index 0 ist eine Regel für Adressen, deren letzten drei Bits auf „000“ enden. Tabelle 370 wurde mit der neuen Regel in Tabelle 380 geändert, in der Eintrag 484 für Index 0 eine Regel für Adressen ist, deren letzte vier Bits auf „0000“ enden, und Eintrag 486 für Index 8 eine Regel für Adressen ist, deren letzte vier Bits auf „1000“ enden. Wie bereits ausgeführt ist die Anzahl an bereitgestellten Indexen in manchen Implementierungen zu jeglicher Zeit gleich einer Zweierpotenz. Folglich erfordert das Hinzufügen einer neunten Dienstinstanz (da 9 um eins höher ist als 23) das Bereitstellen weiterer Indexwerte. Wenn der neunte Indexwert bereitgestellt wird, werden weitere sieben Indexwerte bereitgestellt und die Gesamtzahl bereitgestellter Indexwerte wird auf 16 erhöht.
  • Wird eine Dienstinstanz gelöscht, z. B mit dem nachstehend unter Bezugnahme auf 5 beschriebenen Verfahren, so wird die Adressentabelle aktualisiert, um die Adressengruppe für die gelöschte Dienstinstanz und ihre sekundäre Instanz neu zu kombinieren. Wenn der gelöschte Dienstinstanz über keine sekundäre Instanz verfügt (z. B. „D“ im Index 3 in Tabelle 360, veranschaulicht in 3), so muss die Tabelle unter Umständen umstrukturiert werden. Anderenfalls müssen nur die Regeln für die gelöschte Dienstinstanz und ihre sekundäre Instanz aktualisiert werden. Folglich ist die Anzahl der Einträge, die für eine Topologieänderung geändert werden müssen, minimal.
  • 5A ist ein Flussdiagramm für ein exemplarisches Verfahren, in dem eine Dienstinstanz aus einer Adressentabelle gelöscht wird. Im Gesamtüberblick beginnt Verfahren 500 zum Löschen einer Dienstinstanz (Phase 510) damit, dass von einem Netzwerkgerät eine erste Untergruppe von Speicheradressen identifiziert wird, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem ersten Indexwert zugewiesen ist. Das Netzwerkgerät identifiziert eine Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt (Phase 520), und weist dem Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert (Phase 530) zugewiesen ist, eine kombinierte Untergruppe von Speicheradressen zu. Das Netzwerkgerät kann dann den Dienstinstanzeintrag, der dem ersten Indexwert aus der Tabelle zugeordnet ist, löschen (Phase 540).
  • Konkreter gesagt beginnt Verfahren 500 zum Löschen einer Dienstinstanz (Phase 510) damit, dass von einem Netzwerkgerät eine erste Untergruppe von Speicheradressen identifiziert wird, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem ersten Indexwert zugewiesen ist. Eine Dienstinstanz kann beispielsweise gelöscht werden, wenn ein Dienstausfall, Hostausfall oder eine Störung einer Kommunikationsverbindung auftritt. Ist der Verteilerdienst unausgelastet, können eine oder mehrere Dienstinstanzen stillgelegt werden, um die Betriebslast zu konsolidieren.
  • Das Netzwerkgerät identifiziert eine Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt (Phase 520). Wie oben bereits erwähnt, ist der sekundäre Indexwert für einen gegebenen Indexwert in manchen Implementierungen die Funktion des gegebenen Indexwerts. Sprich der sekundäre Indexwert c ist definiert als: c = r + 2P modulo 2P+1, wobei r der gegebene Indexwert und p der Exponent für die größte Zweierpotenz kleiner oder gleich dem höchsten verwendeten Indexwert ist (d. h. p = [log2k – 1], wobei k für die gesamte Anzahl an Dienstinstanzen vor dem Löschen der Dienstinstanz steht und die Indexwerte bei Null beginnen).
  • Das Netzwerkgerät weist dann dem Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert (Phase 530) zugewiesen ist, eine kombinierte Untergruppe von Speicheradressen zu und löscht den Dienstinstanzeintrag, der dem ersten Indexwert aus der Tabelle (Phase 540) zugewiesen ist. In manchen Implementierungen verwendet das Netzwerkgerät bei der Zuweisung der kombinierten Untergruppe von Speicheradressen zu einem Dienstinstanzeintrag in der Adressentabelle den kleineren Wert des zweiten Indexwerts und des ersten Indexwerts. In manchen Implementierungen wird die kombinierte Untergruppe von Speicheradressen erstellt, indem ein Bit von jeder Untergruppe umgewandelt und mit einem „don't care“-Bit (angegeben mit einem x in 5B) zusammengeführt wird.
  • Folglich ist die Verteilung, wie oben beschrieben, in manchen Implementierungen bei einer Anzahl an Dienstinstanzen (k), die einer Zweierpotenz entspricht (k = 2P), dahingehend ausgewogen, dass jede Dienstinstanz der gleichen Anzahl (1/k) an Quelladressen zugeordnet ist. In manchen Implementierungen, in denen die Anzahl an Dienstinstanzen (k) zwischen zwei Zweierpotenzen (2P < k < 2P+1) liegt, liegt ein Ungleichgewicht bei der Verteilung vor – manche Dienstinstanzen werden einer Anzahl an Speicheradressen zugewiesen, die doppelt so hoch ist wie die Anzahl an Speicheradressen, die anderen Dienstinstanzen zugeordnet sind. Insbesondere wird der Prozentanteil der Adressen (1/2P+1), die 2(k – 2P) Dienstinstanzen zugewiesen wurden, halb so hoch sein wie der Prozentanteil der Adressen (1/2P), die den übrigen 2P+1 – k Dienstinstanzen zugewiesen wurden.
  • Adressentabelle 370 in 5B, die acht Adressengruppen auf Dienstinstanzen abbildet, wurde in Adressentabelle 360 geändert, die sieben Adressengruppen auf Dienstinstanzen abbildet. Konkreter gesagt wurde eine Dienstinstanz „H“ gelöscht (d. h. das oben unter Bezugnahme auf 5A beschriebene Verfahren wurde verwendet). Die Dienstinstanz, die gelöscht wurde, war Index 7 zugewiesen, der einen sekundären Index von 3 hatte. Der Eintrag 576 für Index 7 ist eine Regel für Speicheradressen, deren letzte drei Bits auf „111“ enden, und der Eintrag 574 für Index 3 ist eine Regel für Speicheradressen, deren letzte drei Bits auf „011“ enden. Tabelle 370 wurde in Tabelle 360 geändert, in der Eintrag 562 für Index 3 eine kombinierte Regel für Speicheradressen, deren letzte drei Bits auf „011“ oder „111“ enden, ist. Zudem existiert kein Eintrag für Index 7, d. h. die Regel für Index 7 wurde gelöscht.
  • 6 ist ein Blockdiagramm eines Computersystems zur Implementierung der hier beschriebenen rechnergestützten Komponenten, gemäß einer veranschaulichenden Implementierung. Im Gesamtüberblick beinhaltet das Computersystem mindestens einen Prozessor 650 für das Durchführen von Operationen gemäß den Anweisungen sowie ein oder mehr Speichergeräte 670 oder 675 für das Speichern von Anweisungen und Daten. Das dargestellte exemplarische Computersystem 610 beinhaltet einen oder mehrere Prozessoren 650, die über Bus 615 in Kommunikation mit mindestens einem Netzwerkschnittstellen-Controller 620 mit Netzwerkschnittstellen 622 (a-n) stehen, die mit den Netzwerkgeräten 612 (a-n), Speichern 670 und jeglichen anderen Speichergeräten 680 verbunden sind, wie etwa eine IO Schnittstelle. Im Allgemeinen führt ein Prozessor 650 die vom Speicher empfangenen Anweisungen aus. Der dargestellte Prozessor 650 beinhaltet einen Cache-Speicher 675 oder ist direkt mit diesem verbunden.
  • Konkreter gesagt kann es sich beim Prozessor 650 um eine beliebige Logikschaltung handeln, die Anweisungen ausführt, z. B. Anweisungen, die aus dem Speicher 670 oder dem Cache 675 entnommen werden. In vielen Ausführungsformen ist der Prozessor 650 eine Mikroprozessoreinheit oder ein Spezialprozessor. Das Computergerät 610 kann mit einem beliebigen Prozessor oder Satz von Prozessoren, die betriebsbereit entsprechend der hier dargelegten Beschreibungen sind, ausgestattet sein. Beim Prozessor 650 kann es sich um einen Einzelkernprozessor oder einen Mehrkernprozessor handeln. Beim Prozessor 650 kann es sich um mehrere Prozessoren handeln.
  • Beim Speicher 670 kann es sich um ein beliebiges Gerät handeln, dass zur Sicherung von computerlesbaren Daten geeignet ist. Speicher 670 kann eine Einrichtung mit festem Speicher oder eine Einrichtung zum Lesen von Wechselspeichermedien sein. Beispiele beinhalten alle Formen von nicht-flüchtigen Speichern, Medien und Speichervorrichtungen, Halbleiterspeichervorrichtungen (z. B. EPROM, EEPROM und Flash-Speichergeräten), Magnetplatten, magnetoptische Platten und optische Platten (z. B. CD-ROM-, DVD-ROM- und Blu-Ray®-Disks). Ein Computersystem 610 kann über eine beliebige Anzahl von Speichergeräten 670 verfügen.
  • Der Cache-Speicher 675 ist gewöhnlich eine Art von Computerspeicher, der in der Nähe des Prozessors 650 für äußerst schnelle Lesezeiten positioniert ist. In manchen Implementierungen ist der Cache-Speicher 675 Teil des Prozessors 650 oder liegt auf demselben Chip wie dieser. In manchen Implementierungen gibt es mehrere Ebenen von Cache 675, z. B. L2- und L3-Cache-Ebenen.
  • Der Netzwerkschnittstellen-Controller 620 steuert den Datenaustausch über die Netzwerkschnittstellen 622 (a-n) (auch als Netzwerkschnittstellenports bezeichnet). Der Netzwerkschnittstellen-Controller 620 verwaltet die physikalische Ebene und die Datenverbindungsebene des OSI-Modells für die Netzwerkkommunikation. In manchen Implementierungen werden einige der Aufgaben des Netzwerkschnittstellen-Controllers von Prozessor 650 bewältigt. In manchen Implementierungen ist der Netzwerkschnittstellen-Controller 620 Teil des Prozessors 650. In manchen Implementierungen verfügt ein Computersystem 610 über mehrere Netzwerkschnittstellen-Controller 620. Die Netzwerkschnittstellen 622 (a-n) sind Verbindungspunkte für physikalische Netzwerkverbindungen. In manchen Implementierungen unterstützt der Netzwerkschnittstellen-Controller 620 drahtlose Netzwerkverbindungen, und ein Schnittstellenport 622 dient als Funkempfänger/Funksender. Im Allgemeinen tauscht ein Computergerät 610 Daten mit einem anderen Computergerät 612 (a-n) über physikalische oder drahtlose Verbindungen mit einer Netzwerkschnittstelle 622 (a-n) aus. In manchen Implementierungen implementiert der Netzwerkschnittstellen-Controller 620 ein Netzwerkprotokoll, wie etwa Ethernet.
  • Die anderen Computergeräte 612 (a-n) sind mit dem Computergerät 610 über einen Netzwerkschnittstellenport 622 verbunden. Bei den anderen Computergeräten 612 (a-n) kann es sich um Peer-Computergeräte, Netzwerkgeräte oder ein beliebiges anderes Computergerät mit Netzwerkfunktionalität handeln. Bei dem ersten Computergerät 612 (a) kann es sich beispielsweise um ein Netzwerkgerät handeln, wie etwa einen Hub, eine Bridge, ein Switch oder ein Router, dass das Computergerät 610 mit einem Datennetzwerk wie das Internet verbindet.
  • Die anderen Geräte 680 können eine I/O-Schnittstelle, externe serielle Geräteschnittstellen und beliebige weitere Co-Prozessoren beinhalten. Beispielsweise kann ein Computersystem 610 eine Schnittstelle (z. B. eine universelle serielle Busschnittstelle [USB]) zur Verbindung von Eingabegeräten (z. B. Tastatur, Mikrofon, Maus oder ein anderes Zeigegerät), Ausgabegeräten (z. B. Videoanzeige, Lautsprecher oder Drucker) oder weiteren Speichergeräten (z. B. ein tragbarer Flash-Speicher oder ein externes Medienlaufwerk) beinhalten. In manchen Implementierungen beinhaltet ein Computergerät 610 ein weiteres Gerät 680 wie etwa einen Co-Prozessor, z. B. kann ein mathematischer Co-Prozessor den Prozessor 650 bei Präzisionsrechnungen oder komplexen Berechnungen unterstützen.
  • Implementierungen des Gegenstands und die in dieser Spezifikation beschriebenen Operationen können in digitalen elektronischen Schaltungen oder in Computer-Software, die auf einem materiellen Träger gespeichert ist, in Firmware oder in Hardware implementiert werden, einschließlich der in dieser Spezifikation offenbarten Strukturen und ihrer strukturellen Äquivalente oder in Kombinationen von einer oder mehrerer von ihnen. Implementierungen des in dieser Spezifikation beschriebenen Gegenstandes können als ein oder mehrere Computerprogramme auf einem physischen Medium, d. h. als ein oder mehrere Module von Computerprogrammbefehlen implementiert werden, die auf einem oder mehreren Computerspeichermedien für die Ausführung durch oder die Steuerung des Betriebes eines datenverarbeitenden Apparates kodiert werden. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Disks oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein. Das Computerspeichermedium kann physischer Art und nicht flüchtig sein.
  • Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden.
  • Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computern eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind. Beispiele für Kommunikationsnetzwerke umfassen ein lokales Netzwerk („LAN“), ein Fernnetzwerk („WAN“), eine netzübergreifende Verbindung (z. B. das Internet) und Peero-to-Peer-Netzwerke (z. B. Ad-hoc-Peer-to-Peer-Netzwerke).
  • Die in dieser Spezifikation beschriebenen Prozesse und logischen Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Handlungen aufgrund von Eingangsdaten durchzuführen und Ausgabedaten zu erstellen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltung implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs jeglicher Erfindungen oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Implementierungen bestimmter Erfindungen. Bestimmte Eigenschaften, die in dieser Spezifikation im Kontext gesonderter Implementierungen beschrieben sind, können auch in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene, im Kontext einer einzelnen Implementierung beschriebene Merkmale auch in mehreren Implementierungen separat oder in einer beliebigen geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in manchen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
  • Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Implementierungen nicht als eine solche Trennung in allen Implementierungen erfordernd aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme grundsätzlich zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
  • Referenzen auf „oder“ können als inbegriffen gelten, sodass jegliche Ausdrücke, die mit „oder“ beschrieben werden, auf einen einzelnen, mehr als einen oder auf alle beschriebenen Ausdrücke hinweisen können. Die Bezeichnungen „erste“, „zweite“, „dritte“, usw. geben nicht notwendigerweise eine Anordnung an und werden im Allgemeinen lediglich dazu verwendet, zwischen ähnlichen oder ähnlichen Punkten oder Elementen zu unterscheiden.
  • Folglich wurden bestimmte Implementierungen des Gegenstands beschrieben. Diese und andere Ausführungsformen fallen in den Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. In bestimmten Implementierungen kann eine Multitasking- oder Parallelverarbeitung verwendet werden.

Claims (13)

  1. Ein Netzwerkgeräte-Controller, umfassend: einen Speicher, in dem eine Adressentabelle mit einer Anzahl an Einträgen gespeichert ist, wobei die Adressentabelle über eine Anzahl an Einträgen kleiner oder gleich der Anzahl an Indexwerten in einem Satz von bereitgestellten Indexwerten verfügt, und wobei jeder einzelne Eintrag einem entsprechenden, bereitgestellten Indexwert und einer Instanz eines Verteilerdienstes, die von einer Vielzahl von Dienstinstanzen bereitgestellt wird, zugewiesen ist; und mindestens ein Prozessor, wobei der Prozessor bzw. die Prozessoren so konfiguriert sind, dass sie der Adressentabelle eine neue Dienstinstanz hinzufügen, indem sie die folgenden Operationen ausführen: Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, indem 1) ein bestehender, nicht zugewiesener Indexwert in einem Satz von bereitgestellten Indexwerten identifiziert wird, oder indem 2) die Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte erhöht und ein neu bereitgestellter Indexwert ausgewählt wird; Identifizieren eines zugewiesenen Indexwerts, der ein sekundärer Indexwert zu dem abgerufenen Indexwert ist; Unterteilen einer Datenpaket-Quelladressengruppe, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen; und Zuweisen der ersten Untergruppe von Speicheradressen zum Dienstinstanzeintrag in der Adressentabelle, der dem zugewiesenen sekundären Indexwert zugeordnet ist, und Zuweisen der zweiten Untergruppe von Speicheradressen zu einem Eintrag in der Adressentabelle, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz zugeordnet ist.
  2. Der Netzwerkgeräte-Controller nach Anspruch 1, wobei die Prozessoren, von denen mindestens ein Prozessor vorhanden sein muss, so konfiguriert sind, dass sie eine Dienstinstanz aus der Adressentabelle löschen, indem sie folgenden Operationen ausführen: Identifizieren einer dritten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet sind, der einem ersten Indexwert zugewiesen ist, um die Dienstinstanz zu löschen; Identifizieren einer vierten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt; Zuweisen einer kombinierten Untergruppe von Speicheradressen, die die dritte Untergruppe von Speicheradressen und die vierte Untergruppe von Speicheradressen umfasst, zu einem Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert zugewiesen ist; und Löschen des Dienstinstanzeintrags, der dem ersten Indexwert aus der Tabelle zugewiesen ist.
  3. Der Netzwerkgeräte-Controller nach Anspruch 2, wobei die Prozessoren, von denen mindestens ein Prozessor vorhanden ist, zur Ausführung folgender Operationen konfiguriert sind: das Festlegen, dass der erste Indexwert kleiner als der zweite Indexwert ist; das Ändern der Zuweisung für den Dienstinstanzeintrag in der Adressentabelle, der einem zweiten Indexwert zugewiesen ist, von einer Zuweisung zum zweiten Indexwert in eine Zuweisung zum ersten Indexwert.
  4. Netzwerkgeräte-Controller nach Anspruch 1, wobei die Anzahl an bereitgestellten Indexwerten im Satz der bereitgestellten Indexwerte einer Zweierpotenz entspricht.
  5. Netzwerkgeräte-Controller nach Anspruch 4, wobei das Erhöhen der Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte das Verdoppeln der Anzahl an bereitgestellten Indexwerten umfasst.
  6. Netzwerkgeräte-Controller nach Anspruch 4, wobei das Identifizieren eines sekundären Indexwerts für einen spezifischen Indexwert das Hinzufügen der Hälfte der Anzahl an bereitgestellten Indexwerten im Satz der bereitgestellten Indexwerte zu dem spezifischen Indexwert und das Durchführen der Modulo-Berechnung für die Anzahl an bereitgestellten Indexwerten im Satz der bereitgestellten Indexwerten umfasst.
  7. Netzwerkgeräte-Controller nach Anspruch 1, wobei die Prozessoren, von denen mindestens ein Prozessor vorhanden, so konfiguriert sind, dass sie eine Adressentabelle erzeugen.
  8. Materielles computerlesbares Medium, auf dem Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Computerprozessoren, den einen oder mehrere Computerprozessoren zu Folgendem veranlassen: das Bereitstellen einer Adressentabelle, einschließlich eines Satzes von Einträgen, wobei: die Adressentabelle über eine Anzahl an Einträgen kleiner oder gleich der Anzahl an Indexwerten in einem Satz von Indexwerten verfügt, wobei jeder einzelne Eintrag einem entsprechenden, bereitgestellten Indexwert und einer Instanz eines Verteilerdienstes zugewiesen ist; sowie das Hinzufügen einer neuen Dienstinstanz zur Adressentabelle durch: Abrufen eines zuweisbaren Indexwerts, der der neuen Dienstinstanz zugewiesen wird, indem 1) ein bestehender, nicht zugewiesener Indexwert in einem Satz von bereitgestellten Indexwerten identifiziert wird, oder indem 2) die Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte erhöht und ein neu bereitgestellter Indexwert ausgewählt wird; das Identifizieren eines zugewiesenen Indexwerts durch den Netzwerkgeräte-Controller, der ein sekundärer Indexwert zum abgerufenen Indexwert ist; Unterteilen einer Datenpaket-Quelladressengruppe, die dem sekundären Indexwert zugewiesen ist, in eine erste Untergruppe von Speicheradressen und eine zweite Untergruppe von Speicheradressen; und Zuweisen der ersten Untergruppe von Speicheradressen zum Dienstinstanzeintrag in der Adressentabelle, der dem zugewiesenen sekundären Indexwert zugeordnet ist, und Zuweisen der zweiten Untergruppe von Speicheradressen zu einem Eintrag in der Adressentabelle, der dem abgerufenen Indexwert und der neu hinzugefügten Dienstinstanz zugeordnet ist.
  9. Computerlesbares Medium nach Anspruch 8, wobei die Anweisungen Anleitungen umfassen, mit denen der eine oder mehrere Prozessoren zu Folgendem veranlasst werden können: das Löschen einer Dienstinstanz aus der Adressentabelle durch: Identifizieren einer dritten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet sind, der einem ersten Indexwert zugewiesen ist, um die Dienstinstanz zu löschen; Identifizieren einer vierten Untergruppe von Speicheradressen, die einem Dienstinstanzeintrag in der Adressentabelle zugeordnet ist, der einem zweiten Indexwert zugewiesen ist, bei dem es sich um einen sekundären Indexwert zum ersten Indexwert handelt; Zuweisen einer kombinierten Untergruppe von Speicheradressen, die die dritte Untergruppe von Speicheradressen und die vierte Untergruppe von Speicheradressen umfasst, zu einem Dienstinstanzeintrag in der Adressentabelle, der dem zweiten Indexwert zugewiesen ist; und Löschen des Dienstinstanzeintrags, der dem ersten Indexwert aus der Tabelle zugewiesen ist.
  10. Computerlesbares Medium nach Anspruch 9, wobei die Anweisungen Anleitungen umfassen, mit denen der eine oder mehrere Prozessoren zu Folgendem veranlasst werden können: das Festlegen, dass der erste Indexwert kleiner als der zweite Indexwert ist; das Ändern der Zuweisung für den Dienstinstanzeintrag in der Adressentabelle, der einem zweiten Indexwert zugewiesen ist, von einer Zuweisung zum zweiten Indexwert in eine Zuweisung zum ersten Indexwert.
  11. Computerlesbares Medium nach Anspruch 8, wobei die Anzahl an bereitgestellten Indexwerten im Satz der bereitgestellten Indexwerte einer Zweierpotenz entspricht.
  12. Computerlesbares Medium nach Anspruch 11, wobei das Erhöhen der Anzahl an Indexwerten im Satz der bereitgestellten Indexwerte das Verdoppeln der Anzahl an bereitgestellten Indexwerten umfasst.
  13. Computerlesbares Medium nach Anspruch 11, wobei das Identifizieren eines sekundären Indexwerts für einen spezifischen Indexwert das Hinzufügen der Hälfte der Anzahl an bereitgestellten Indexwerten im Satz der bereitgestellten Indexwerte zu dem spezifischen Indexwert und das Durchführen der Modulo-Berechnung für die Anzahl an bereitgestellten Indexwerten im Satz von bereitgestellten Indexwerten umfasst.
DE202014010912.5U 2014-01-31 2014-11-10 Konsistentes Hashing anhand genauer Übereinstimmung mit Anwendung für Hardware-Lastausgleich Active DE202014010912U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/169,776 US9391884B2 (en) 2014-01-31 2014-01-31 Consistent hashing using exact matching with application to hardware load balancing
US14/169,776 2014-01-31

Publications (1)

Publication Number Publication Date
DE202014010912U1 true DE202014010912U1 (de) 2017-02-09

Family

ID=52011301

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014010912.5U Active DE202014010912U1 (de) 2014-01-31 2014-11-10 Konsistentes Hashing anhand genauer Übereinstimmung mit Anwendung für Hardware-Lastausgleich

Country Status (5)

Country Link
US (1) US9391884B2 (de)
EP (1) EP3100436B1 (de)
CN (1) CN106063228B (de)
DE (1) DE202014010912U1 (de)
WO (1) WO2015116291A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9886740B2 (en) * 2014-05-14 2018-02-06 Intel Corporation Degradation coverage-based anti-aliasing
CN109688191B (zh) * 2018-10-24 2021-02-12 华为技术有限公司 流量调度方法及通信装置
CN109167696A (zh) * 2018-11-13 2019-01-08 京信通信系统(中国)有限公司 一种监控方法及装置
US11233824B2 (en) * 2020-04-06 2022-01-25 Vmware, Inc. Site aware policy-based proximity routing and policy-based proximity routing
CN113014489B (zh) * 2020-12-31 2022-02-22 腾讯科技(深圳)有限公司 数据转发方法及装置、服务器、存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185619B1 (en) 1996-12-09 2001-02-06 Genuity Inc. Method and apparatus for balancing the process load on network servers according to network and serve based policies
US6363077B1 (en) 1998-02-13 2002-03-26 Broadcom Corporation Load balancing in link aggregation and trunking
US6434115B1 (en) * 1998-07-02 2002-08-13 Pluris, Inc. System and method for switching packets in a network
US6556541B1 (en) 1999-01-11 2003-04-29 Hewlett-Packard Development Company, L.P. MAC address learning and propagation in load balancing switch protocols
US6424650B1 (en) * 1999-02-09 2002-07-23 3Com Corporation Network address filter device
US6742045B1 (en) * 1999-07-02 2004-05-25 Cisco Technology, Inc. Handling packet fragments in a distributed network service environment
US6667980B1 (en) * 1999-10-21 2003-12-23 Sun Microsystems, Inc. Method and apparatus for providing scalable services using a packet distribution table
US6807172B1 (en) * 1999-12-21 2004-10-19 Cisco Technology, Inc. Method and apparatus for learning and switching frames in a distributed network switch
US6735198B1 (en) * 1999-12-21 2004-05-11 Cisco Technology, Inc. Method and apparatus for updating and synchronizing forwarding tables in a distributed network switch
DE10143754A1 (de) * 2001-09-06 2003-04-03 Siemens Ag Skalierbares Peer-to-Peer-Netzwerk mit einem Verzeichnisdienst
US20050165885A1 (en) * 2003-12-24 2005-07-28 Isaac Wong Method and apparatus for forwarding data packets addressed to a cluster servers
US20070076709A1 (en) * 2005-07-01 2007-04-05 Geoffrey Mattson Apparatus and method for facilitating a virtual private local area network service with realm specific addresses
US20090113021A1 (en) * 2007-10-24 2009-04-30 Telefonaktiebolaget Lm Ericsson (Publ) System and method for generating functional addresses
US8908527B2 (en) * 2011-01-31 2014-12-09 Cisco Technology, Inc. Using context labels to scale MAC tables on computer network edge devices
CN106850444B (zh) 2011-08-17 2020-10-27 Nicira股份有限公司 逻辑l3路由
CN103731288B (zh) * 2012-10-16 2017-04-12 杭州华三通信技术有限公司 报文转发方法及设备
US9647941B2 (en) * 2013-10-04 2017-05-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Hierarchical hashing for longest prefix matching

Also Published As

Publication number Publication date
WO2015116291A1 (en) 2015-08-06
CN106063228B (zh) 2019-10-18
CN106063228A (zh) 2016-10-26
US20150222532A1 (en) 2015-08-06
US9391884B2 (en) 2016-07-12
EP3100436B1 (de) 2018-02-21
EP3100436A1 (de) 2016-12-07

Similar Documents

Publication Publication Date Title
DE202015009259U1 (de) Präfix-orientierte reduzierung von multipath-gruppen nach gewichteten kosten
DE102015102871B4 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE112013006420B4 (de) Erweiterte Verbindungszusammenfassung (LAG) zur Nutzung in mehreren Switsches
DE102013209118B4 (de) Beibehaltung und Änderung von Netzwerküberlastungsbenachrichtigungen während der Übertragung von Netzwerkdaten zwischen einem physischen Netzwerk und einem virtuellen Netzwerk
DE202019103185U1 (de) Verteilte Deduplizierung von Paketen
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE202014010912U1 (de) Konsistentes Hashing anhand genauer Übereinstimmung mit Anwendung für Hardware-Lastausgleich
DE112011100339B4 (de) System zum Gegensteuern bei Netzwerk-Datenüberlastungen
DE112012006642B4 (de) Bandbreitengarantie und Arbeitskonservierung
DE202015009244U1 (de) Routing von Datenverkehr innerhalb von und zwischen autonomen Systemen
DE102016104264B4 (de) Übertragen von Mehrfachzielpaketen in Overlay-Netzwerken
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE102016103492B4 (de) Datenverarbeitungsvorrichtung und Verfahren zum Überwachen von Netzwerkverkehr und Maschinenlesbares Speichermedium
DE102015119890A1 (de) Paralleles Verarbeiten von Service-Funktionen in Service-Funktionsketten
DE202017105977U1 (de) Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE112014000322T5 (de) Skalierbare Fluss- und Überlastungssteuerung in einem Netzwerk
DE202016107377U1 (de) Systeme zur Auslagerung von Netzwerkfunktionen über Paket-Trunking
DE112016002952T5 (de) Systeme und Verfahren zum Verarbeiten von Paketen in einem Computernetz
DE112013001426T5 (de) Dynamische Optimierung einer Multicast-Baumhierarchie für einen verteilten Switch
DE102020120554A1 (de) Gruppenbasierte Politik Multicast-Weiterleitung
DE102013205820A1 (de) Aktualisieren von Zoneninformationen in einem verteilten Switch von Datenweiterleitungsservern
DE102015101583A1 (de) Reduzierung der Grösse von IPV6-Routertabellen unter Verwendung eines Bypasstunnels
DE202019104801U1 (de) Elastische Modifikation von Anwendungsinstanzen in einer Netzwerksichtbarkeitsinfrastruktur
DE102018206835A1 (de) Flussbasierte Ratengrenze
WO2006079431A1 (de) Iteratives routing-verfahren mit pfadabhängiger routing-metrik

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012701000

Ipc: H04L0045000000

R152 Utility model maintained after payment of third maintenance fee after eight years