DE10297269T5 - Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache - Google Patents

Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache Download PDF

Info

Publication number
DE10297269T5
DE10297269T5 DE10297269T DE10297269T DE10297269T5 DE 10297269 T5 DE10297269 T5 DE 10297269T5 DE 10297269 T DE10297269 T DE 10297269T DE 10297269 T DE10297269 T DE 10297269T DE 10297269 T5 DE10297269 T5 DE 10297269T5
Authority
DE
Germany
Prior art keywords
packet
cache
nat
header
shared
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.)
Granted
Application number
DE10297269T
Other languages
English (en)
Other versions
DE10297269B4 (de
Inventor
Kjeld Egevang
Niels Breier
Jacob Christensen
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE10297269T5 publication Critical patent/DE10297269T5/de
Application granted granted Critical
Publication of DE10297269B4 publication Critical patent/DE10297269B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/741Routing in networks with a plurality of addressing schemes, e.g. with both IPv4 and IPv6
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Credit Cards Or The Like (AREA)

Abstract

Verfahren, umfassend:
Empfangen eines Pakets an einem Netzwerkgerät, wobei das Paket einen Header und eine Nutzinformation enthält;
Kennzeichnen des Pakets, durch eine erste Paketverarbeitungsanwendung von einer Vielzahl von Paketverarbeitungsanwendungen, mit einem Cache-Nachschlageschlüssel auf der Grundlage von ursprünglichen Inhalten des Headers, wobei der Cache- Nachschlageschlüssel anzeigt, wo in einem gemeinsamen Cache ein dem Paket entsprechender Cache-Eintrag gespeichert werden wird; und
diejenigen der Vielzahl von Paketverarbeitungsanwendungen, die versuchen, auf den Cache-Eintrag vom gemeinsamen Cache im Anschluß an das Kennzeichnen durch die erste Paketverarbeitungsanwendung zuzugreifen, den Cache-Nachschlageschlüssel verwenden, statt einen neuen Cache-Nachschlageschlüssel auf der Grundlage von gegenwärtigen Inhalten des Headers zu erzeugen.

Description

  • URHEBERRECHTSVERMERK
  • Hierin ist Material enthalten, das dem Urheberrechtsschutz unterliegt. Der Urheberrechtsinhaber hat keinen Einwand gegen die Reproduktion der Offenbarung der Patentanmeldung durch eine Person, wie dies in den Akten bzw. Unterlagen des Patent- und Markenamtes geschieht, behält sich aber ansonsten alle Urheberrechte vor.
  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die Erfindung betrifft allgemein das Gebiet von Netzwerkgeräten. Genauer gesagt betrifft die Erfindung ein Verfahren und eine Vorrichtung zur Weiterleitung von Netzwerkpaketen mit einem Unified packet Internet Protocol (IP) flow-based Cache unter Verwendung des Cache-Nachschlageschlüssels als ein Packet-Tag.
  • Beschreibung der verwandten Technik
  • Es wird eine Anzahl von unterschiedlichen Prozessen von Netzwerkgeräten, wie z. B. Brücken, Routers, Schalter, Firewalls, Gateways oder anderen Internet-Zugangsprodukten, an jedem empfangenen oder gesendeten Paket durchgeführt. Zum Beispiel kann eine typische Liste von Aufgaben, die von einen Router durchgeführt werden, enthalten: (1) Anwenden von Network Address Translation (NAT), (2) Anwenden von Paketfilterung und (3) Routing des Pakets.
  • Nachschlagen in einer kompletten Routing-Tabelle eines Netzwerkgerätes kann recht langsam sein. Somit implementieren viele Netzwerkgeräte eine An von Caching-Funkionalität zur Beschleunigung von Paketverarbeitung. Typischerweise werden die letzten Weiterleitungsentscheidungen in einer separaten Tabelle (dem forwarding cache) gespeichert, die für schnelles Nachschlagen optimiert ist. Wenn ein Paketfluß klassifiziert worden ist und ein nachfolgendes Paket unter Verwendung der Cache-Information gehandhabt werden kann, wird der Weiterleitungspfad typischerweise der „schnelle Pfad" genannt. Wenn kein Cache-Eintrag vorhanden ist, wird das Paket auf der Grundlage der gesamten Routing-Tabelle weitergeleitet. Dieser Weiterleitungspfad wird der „langsame Pfad" genannt. Dieselbe An von Cache-Einrichtung kann auch auf NAT und Filtern angewandt werden. Ältere Erzeugnisse verwendeten typischerweise unabhängige Caches für jeden Funktionalitätstyp. Ein beispielhafter Weiterleitungsablauf unter Verwendung von separaten Caches wird nachfolgend dargestellt:
    • – Lies Header-Information vom Paket
    • – Schlag im NAT-Cache nach. Wenn Cache-Treffer vorliegt, dann führe NAT-Aktionen (z. B. übersetze Adressen im IP-Header) durch. Anderenfalls sende das Paket zum NAT-Modul zur Verarbeitung auf dem langsamen Pfad.
    • – Schlag im Filter-Cache nach. Wenn Cache-Treffer vorliegt, dann führe Filteraktionen (z. B. laß das Paket passieren oder verwirf es) durch. Anderenfalls sende das Paket zum Filtermodul zur Verarbeitung auf dem langsamen Pfad.
    • – Schlag im Forwarding/Routing-Cache nach. Wenn Cache-Treffer vorliegt, dann führe Routing-Aktionen (z. B. leite Paket zur im Cache-Eintrag spezifizierten Schnittstelle weiter) durch. Anderenfalls sende das Paket zum Weiterleitungsmodul zur Verarbeitung auf dem langsamen Pfad.
  • Das Konzept des schnellen/langsamen Pfades im Zusammenhang mit Routing wird nun mehr unter Bezugnahme auf 1 weiter beschrieben werden. In diesem vereinfachten Beispiel ist ein Weiterleitungsablauf 100 in einem Router dargestellt, der (1) einen schnellen Pfad, der Verarbeiten eines empfangenen Netzwerkpakets 105 durch ein Modul 110 zur Weiterleitung auf einem schnellen Pfad und eine Cache-Suche in einem forwarding cache 115 enthält, und einen langsamen Pfad aufweist, der zusätzlich zum Verarbeiten auf einen schnellen Pfad Paketverarbeiten durch ein Modul 120 zur Weiterleitung auf einen langsamen Pfad und ein Nachschlagen einer vollständigen Routing-Tabelle in einer Routing-Tabelle 125 enthält.
  • In vielen Fällen befindet sich die Verarbeitung auf einem schnellen Pfad in einer anderen Verarbeitungseinheit als die Verarbeitung auf einem langsamen Pfad (zum Beispiel in einer anderen Mikromaschine auf demselben Netzwerkprozessor oder in einem anderen Netzwerkprozessor). In Einzelprozessorsystemen werden der Code des schnellen Pfades und der Code des langsamen Pfades typischerweise als unterschiedliche Betriebssystemprozesse ausgeführt. Demzufolge ist Process-Scheduling erforderlich, wenn das Paket zum langsamen Pfad geleitet wird. Während die Absicht eines schnellen Pfades und eines langsamen Pfades bleibt, verwenden neuere Netzwerkprodukte häufig ein Konzept, das allgemein als "flow-based forwarding" bekannt ist. Die Grundidee beim flow-based forwarding besteht darin, das Paket einmal zu klassifizieren und danach eine einzige Suche in einem gemeinsamen Cache durchzuführen, in dem jeder Cache-Eintrag alle zur Handhabung des Pakets notwendigen Informationen (z.B. Informationen hinsichtlich dessen, wohin das Paket weiterzuleiten ist) enthält. Da jedoch die Paketverarbeitungsfunktionen häufig in separaten Modulen (in einigen Fällen von unterschiedlichen Prozessoren und/oder Mikromaschinen ausgeführt) lokalisiert sind, kann es recht komplex werden sicherzustellen, dass der gemeinsame Cache konsistent bleibt. Wie weiter unten erörtert wird, sind zusätzlich weitere Komplikationen mit der Verwendung eines gemeinsamen Cache verbunden, wenn eine oder mehrere der Paketverarbeitungsfunktionen einen Teil des Paket-Headers, auf dem der Cache-Nachschlageschlüssel basiert, modifiziert/modifzieren.
  • KURZBESCHREIBUNG DER EINZELNEN ANSICHTEN DER ZEICHUNGEN
  • Die vorliegende Erfindung ist beispielhaft und nicht begrenzend in den Figuren der beigefügten Zeichnungen dargestellt, in denen gleiche Bezugszahlen ähnliche Elemente bezeichnen und in denen:
  • 1 das Konzept des schnellen/langsamen Pfades im Zusammenhang mit Routing darstellt;
  • 2 ein Problem der Implementierung eines NAT unterstützenden gemeinsamen Cache darstellt;
  • 3A-3C ein Beispiel eines Synchronisationsproblems darstellen, das angetroffen werden kann, wenn der Versuch unternommen wird, Distributed-Packet-Processing in einer Umgebung mit gemeinsamen Cache durchzuführen;
  • 4 ein Blockdiagramm auf höchster Ebene eines Netzwerkgeräts gemäß einer Ausführungsform der vorliegenden Erfindung ist;
  • 5 ein Blockdiagramm eines beispielhaften Netzwerkprozessors ist;
  • 6 ein Ablaufdiagramm ist, das die Durchführung einer Aktualisierung eines gemeinsamen Cache gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 7 ein Blockdiagramm ist, das grundlegenden Paketfluß, wenn ein neuer Fluß detektiert und vom langsamen NAT-Empfangspfad empfangen wird, konzeptionell gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 8 ein Blockdiagramm ist, das grundlegenden Paketfluß, wenn ein neuer Fluß detektiert und vom langsamen Filterempfangspfad empfangen wird, konzeptionell gemäß einer Ausführungsform der vorliegenden Erfindung darstellt; und
  • 9 ein Blockdiagramm ist, dass grundlegenden Paketfluß, wenn ein neuer Fluß detektiert und vom langsamen Weiterleitungspfad empfangen wird, konzeptionell gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Es werden Vorrichtungen und Verfahren für einen NAT-kompatiblen gemeinsamen Cache beschrieben. Allgemein gesagt versuchen Ausführungsformen der vorliegenden Erfindung eine Einrichtung zur effizienten Implementierung eines gemeinsamen Cache in einer Umgebung bereitzustellen, die eine Anwendung, wie zum Beispiel NAT, enthält, die einen oder mehrere Abschnitte des Pakets, wie zum Beispiel den Paket-Header, auf dem ein Cache-Nachschlageschlüssel basiert, modifiziert. Gemäß einer Ausführungsform wird der Cache-Nachschlageschlüssel als Teil eines Paket-Tags gespeichert und für alle Aufgaben zugänglich gemacht, die mit der Paketflußverarbeitung zu tun haben. Danach markiert die erste Anwendung, die ein Netzwerkpaket untersucht, das Paket mit Cache-Nachschlaginformation vom ursprünglichen Paket-Header und verwenden nachfolgende Paketverarbeitungsanwendungen den Cache-Nachschlageschlüssel im Tag, wenn sie auf den gemeinsamen Cache zugreifen. Auf diese Weise wird ein Cache-Zugriff konsistent von allen Paketverarbeitungsanwendungen durchgeführt. Zusätzlich versucht die hierin beschriebene Architektur des gemeinsamen Cache und das hierin beschriebene Verfahren, die An zu verbessern, auf die ein gemeinsamer Cache unter verteilten Modulen eines Netzwerkgeräts gemeinsam benutzt wird. Gemäß einer Ausführungsform wird eine einfache und unkomplizierte Einrichtung zum Auffinden von gelöschten oder ungültig erklärten Cache-Einträgen und Verhindern der Erzeugung von doppelten Einträgen bereitgestellt, ohne ein Cache-Synchronisationsprotokoll zu erfordern.
  • In der folgenden Beschreibung werden, für Erläuterungszwecke, zahlreiche spezielle Details beschrieben, um für ein umfassendes Verständnis der vorliegenden Erfindung zu sorgen. Ein Fachmann auf dem Gebiet wird jedoch erkennen, dass die vorliegende Erfindung ohne einige dieser speziellen Details praktiziert werden kann. In anderen Fällen sind allgemein bekannte Strukturen und Geräte in Blockdiagrammform gezeigt.
  • Die vorliegende Erfindung enthält zahlreiche Schritte, die unten beschrieben werden. Die Schritte der vorliegenden Erfindung können durch Hardwarekomponenten ausgeführt oder von maschinenausführbaren Befehlen verkörpert sein, die verwendet werden können, um einen Mehrzweck- oder Spezialzweckprozessor, der mit den Befehlen programmiert ist, die Schritte durchführen zu lassen. Alternativ können die Schritte von einer Kombination von Hardware und Software durchgeführt werden.
  • Die vorliegende Erfindung kann als ein Computerprogrammprodukt bereitgestellt werden, das ein maschinenlesbares Medium enthalten kann, das darauf gespeicherte Befehle aufweist, die verwendet werden können, um einen Computer (oder andere elektronische Geräte) zur Durchführung eines Prozesses gemäß der vorliegenden Erfindung zu programmieren. Das maschinenlesbare Medium kann, ohne darauf beschränkt zu sein, Disketten, optische Platten, Compact Disc Read-Only Member Memories (CR-ROMs) und magnetooptische Platten, ROMs, Speicher mit wahlfreiem Zugriff (Random Access Memories (RAMs)), Erasable Program mable Read-Only Memories (EPROMs), Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten, Flash Memory oder andere Typen von Medienmaschinenlesbaren Medien, die zum Speichern von elektronischen Befehlen geeignet sind, enthalten. Außerdem kann die vorliegende Erfindung auch als ein Computerprogrammprodukt heruntergeladen sein, wobei das Programm von einem fernen Computer (z.B. einem Server) auf einen anfordernden Computer (z.B. einen Client) mittels Datensignale, die in einer Trägerwelle oder einem anderen Ausbreitungsmedium verkörpert sind, über eine Kommunikationsverbindung (z.B. ein Modem oder eine Netzwerkverbindung) übertragen werden kann. Dementsprechend soll eine Trägerwelle und ein anderes Ausbreitungsmedium so angesehen werden, als dass sie/es ein maschinelesbares Medium für den Zweck der vorliegenden Spezifikation umfasst.
  • Während der Zweckmäßigkeit halber Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf ein Netzwerkgerät mit NAT-Funktionalität beschrieben werden, ist die vorliegende Erfindung gleichermaßen auf zahlreiche andere Paketverarbeitungsanwendungen anwendbar, die mit Modifizieren des gesamten oder eines Teils des Abschnittes des Paket-Headers zu tun haben, der zur Erzeugung eines Cache-Nachschlageschlüssels verwendet wird.
  • Terminologie
  • Vor der Beschreibung einer beispielhaften Netzwerkumgebung, in der zahlreiche Ausführungsformen der vorliegenden Erfindung implementiert werden können, werden einige Begriffe, die in der gesamten Anmeldung verwendet werden, kurz definiert werden.
  • In der hierin verwendeten Form bezeichnet ein "Netzwerkgerät" allgemein ein Zwischengerät, das Kommunikationen von Computer zu Computer über eine miteinander verbundene Gruppe von lokalen Netzwerken (Local Area Networks (LANs)) erleichtert. Beispielhafte Netzwerkgeräte schließen Gateways, Routers, Schalter, Brücken, Firewalls und Internet-Zugangsprodukte ein.
  • Der Begriff "Netzwerkschnittstelle" oder einfach "Schnittstelle" bezeichnet allgemein eine physikalische oder logische Schnittstelle eines Netzwerkgeräts, über die Pakete empfangen oder gesendet werden können. Ein Beispiel für eine physikalische Schnittstelle stellt ein Ethernet-Port dar. Ein Beispiel für eine logische Schnittstelle stellt Port 80, die Standard-Port-Nummer für den Hyper Text Transfer Protocol (HTTP)-Dienst, oder Schnittstellen für andere Protokolldienste dar.
  • Die Begriffe "Paketverarbeitungsanwendung", "Paketverarbeitungsaufgabe", "Paketverarbeitungsfunktion" oder "Modul" beziehen sich allgemein auf eine Hardware, Software oder ein Hybridmodul eines Netzwerkgeräts, die/das eine diskrete Funktion oder eine Gruppe von Operationen während der Weiterleitung eines Pakets, zum Beispiel, vom Eintritts-Port des Netzwerkgeräts zum vorgesehenen Ziel des Pakets durch den Austritts-Port des Netzwerkgeräts durchführt. Beispielhafte Paketverarbeitungsanwendungen schließen Empfangs-NAT (Receive NAT), statisches Empfangsfiltern (Receive Static Filtering), Receive Firewall Filtering, Routing-Cache-Nachschlagen (Routing Cache Lookup) (Weiterleiten (Forwarding)), Statisches Sendefiltern (Transmit Static Filtering), Transmit Firewall Filtering, Sende-NAT (Transmit NAT) und dergleichen ein.
  • In der hierin verwendeten Form bezeichnet "modulspezifische Information" allgemein Information, die von einer besonderen Paketverarbeitungsanwendung benutzt wird.
  • In der hierin verwendeten Form bezeichnet "gemeinsamer Cache" (unified cache) oder ein "gemeinsamer Weiterleitungs-Cache" (Unified Forwarding Cache)) allgemein eine Cache-Einrichtung, typischerweise einen Speicher separat von der kompletten Routing-Tabelle, die die letzten Weiterleitungsentscheidungen speichert und zum schnellen Nachschlagen optimiert ist, die von mehreren Paketweiterleitungsprozessen gemeinsam benutzt wird. Gemäß einer Ausführungsform der vorliegenden Erfindung ist der gemeinsame Cache ein gemeinsamer IP Fluß basierter Cache (unified IP flow-based cache), der gestattet, dass ein Fluß einmal klassifiziert wird und danach nachfolgende Pakete mit einem einzigen Nachschauen im gemeinsamen Cache verarbeitet werden können.
  • In der hierin verwendeten Form bedeutet „Cache-Synchronisationsprotokoll" allgemein eine zentralisierte Einrichtung über die auf verschiedene Prozessoren verteilte Paketverarbeitungsanwendungen eineinander hinsichtlich des aktuellen Status von Einträgen in einem gemeinsamen Cache auf dem laufenden halten können. Zum Beispiel kann eine Cache-Synchronisationsmanagementanwendung die Anzahl von Pointers überprüfen, die für einen besonderen Cache-Eintrag erzeugt worden sind, und ob Cache-Einträge gültig sind oder nicht.
  • In der hierin verwendeten Form bezieht sich ein „Paketdeskriptor" allgemein auf eine von den Paketverarbeitungsanwendungen verwendete interne Datenstruktur, die mit einem Paket verbunden ist und paketspezifische Informationen enthält. Gemäß einer Ausführungsform der vorliegenden Erfindung enthält der Paketdeskriptor ein oder mehrere vom folgenden: (1) Die Speicheradresse des Pakets (z. B. einen Pointer auf die Paketdaten), (2) die Länge des Pakets, (3) eine Anzeige der Netzwerkschnittstelle, bei der das Paket empfangen wurde, und (4) einen Nachschlageschlüssel für einen gemeinsamen Cache.
  • Mit der Implementierung eines gemeinsamen Cache (unified cache), der NAT unterstützt, verbundene Schwierigkeiten
  • 2 stellt ein Problem bei der Implementierung eines NAT unterstützenden gemeinsamen Cache dar. Das Hauptproblem in Verbindung mit dem Implementieren eines NAT überstützenden gemeinsamen Cache besteht darin, dass es den Paket-Header ändern kann, wodurch dem NAT folgende Paketverarbeitungsanwendungen dazu gebracht werden können, dass sie nicht Einträge eines gemeinsamen Cache lokalisieren können. Zum Beispiel kann NAT einen unified Cache-Eintrag auf der Grundlage des ursprünglichen Inhalts des Paket-Headers erzeugen, bevor es den Paket-Header ändert. Demzufolge erzeugen nachfolgende Module einen anderen Cache-Nachschlageschlüssel auf der Grundlage des modifizierten Paket-Headers und suchen sie im falschen Bin nach dem Eintrag des gemeinsamen Cache. Dieses Szenario wird nun mit einem konkreten Beispiel unter Bezugnahme auf 2 dargestellt.
  • Das Netzwerkgerät empfängt ein Paket 205, das zum Beispiel für IP-Adresse 89.20.171.1 bestimmt ist. Angenommen, das Paket 205 wird von langsamen NAT-Empfangspfad 210 (d. h., dass kein Cache-Eintrag in einem gemeinsamen Cache 220 für die Ziel-IP-Adresse vorhanden ist) empfangen, so übersetzt der langsame NAT-Empfangspfad 210 die Ziel-IP-Adresse im Header des Pakets in 10.1.1.1, zum Beispiel, unter Verwendung einer aus der vollständigen NAT-Regeltabelle 215 abgerufenen Übersetzungsregel. Danach fügt der langsame NAT-Empfangspfad 210 einen Cache-Eintrag in den gemeinsamen Cache 220 auf der Grundlage eines Nachschlageschlüssels ein, der aus den ursprünglichen Inhalten des Paket-Headers, der die Ziel-IP-Adresse 89.20.171.1 enthielt, erzeugt ist. Auf diese Weise werden nachfolgend empfangene Pakete, die für IP-Adresse 89.20.171.1 bestimmt sind, den schnellen NAT-Empfangspfad (nicht gezeigt) einschlagen, wodurch der Aufwand vermieden wird, eine Suche in der vollständigen NAT-Regeltabelle 215 durchzuführen, und wird die Adressenübersetzung auf der Grundlage des vom langsamen NAT-Empfangspfad 210 eingefügten Cache-Eintrags durchgeführt werden.
  • In Weiterführung des vorliegenden Beispiels leitet in jedem Fall der langsame NAT-Empfangspfad 210, nachdem er den Paket-Header übersetzt und einen Eintrag in den gemeinsamen Cache 220 eingefügt hat, das Paket zum nächsten Modul. In diesem Beispiel besteht das sich dem NAT anschließende Modul aus Filtern. Wenn das Filtermodul das NATverarbeitete Paket empfängt, liest der Filtercode den Paket-Header und führt er eine Cache-Suche im gemeinsamen Cache 220 auf der Grundlage des gegenwärtigen Inhalts des Paket-Headers durch, der die Ziel-IP-Adresse 10.1.1.1 enthält. Es wird kein Eintrag ermittelt, da NAT den Eintrag mit einem Nachschlageschlüssel eingefügt hat, der auf der ursprünglichen Ziel-IP-Adresse 89.20.171.1 basierte. Demzufolge wird das Paket zum langsamen Filterempfangspfad 225 geleitet, der nun eine Filterregel aus der vollständigen Filterregeltabelle 230 abrufen muß. Nach Durchführung des Filterns fügt der langsame Filterempfangspfad 225 ei nen neuen Cache-Eintrag mit einem Nachschlageschlüssel ein, der auf den Inhalten des gegenwärtigen Paket-Headers basiert, der die Ziel-IP-Adresse 10.1.1.1 enthält. Demzufolge haben der langsame NAT-Empfangspfad 210 und der langsame Filterempfangspfad doppelte unified Cache-Einträge, die zu unterschiedlichen Cache-Nachschlageschlüsseln gehören, erzeugt.
  • Eine effiziente Unified Cache-Implementierung sollte nicht unnötigerweise doppelte Unified Cache-Einträge erzeugen. Stattdessen sollten alle Informationen für den Cache-Eintrag typischerweise in einem einzigen Unified Cache-Eintrag unter Verwendung eines konsistenten und vorhersagbaren Cache-Nachschlageschlüssels gespeichert werden. Eine Vereinbarung würde sein, den Cache-Nachschlageschlüssel auf der Grundlage der ursprünglichen Inhalte des Paket-Headers, der, in diesem Beispiel, die IP-Zieladresse 89.20.171.10 enthielt, zu erzeugen.
  • Ein weiteres Problem in Verbindung mit der Verwendung eines gemeinsamen Cache besteht in der Synchronisation der verschiedenen Module, die den gemeinsamen Cache verwenden. Die 3A3C stellen ein Beispiel eines Synchronisationsproblems dar, das angetroffen werden kann, wenn versucht wird, Distributed Packet Processing in einer Umgebung mit einem gemeinsamen Cache durchzuführen. In diesem Beispiel wird angenommen, dass die Module zum nächsten Modul einen Pointer auf einen Unified Cache-Eintrag leiten. In 3A empfängt ein NAT-Modul 310 ein Netzwerkpaket 305 zu einem Zeitpunkt t1. Nachfolgend, zu einem Zeitpunkt t2, fügt das NAT-Modul einen Cache-Eintrag 323 in einen gemeinsamen Cache 320 ein, der von, neben anderen Modulen, einem Filtermodul 330 gemeinsam benutzt wird. Nachdem das NAT-Modul 310 seine Übersetzung abgeschlossen hat, kennzeichnet es das übersetzte Netzwerkpaket 305 mit einem Pointer auf den Cache-Eintrag 323. Wie in 3B dargestellt, leitet das NAT-Modul 310 zu einem Zeitpunkt t3 das übersetzte Netzwerkpaket 305 gemeinsam mit einem Pointer auf den Cache-Eintrag 323 als gekennzeichnetes Netzwerkpaket 306 zum Filtermodul 330 mittels zum Beispiel einer Interprozeß-Warteschlange, da das Filtermodul 330 ein separater Prozeß sein kann. Bevor das Filtermodul 330 ablaufen kann, entscheidet jedoch, wie in 3C dargestellt, das NAT-Modul 310 zu einem Zeitpunkt t4, den Cache-Eintrag 323 aufgrund zum Beispiel eines Rekonfigurationsereignisses zu löschen, wodurch der Eintrag 323 ungültig gemacht wird. Demzufolge ist nun der mit dem gekennzeichneten Netzwerkpaket 306 weitergeleitete Cache-Eintrag-Pointer ungültig. Bei Fehlen einer Cache-Synchronisationseinrichtung wird das Filtern, wenn das Filtermodul 330 den Pointer zum Zugreifen auf den gemeinsamen Cache 320 zu einem Zeitpunkt t5 verwendet, um den Cache-Eintrag 323 abzurufen, der dem gekennzeichneten Netzwerkpaket 306 entspricht, unsichere Ergebnisse erzeugen, da es auf der Grundlage von ungültigen Daten durchgeführt wird. Somit sollte eine zuverlässige Einrichtung zur gemeinsamen Benutzung eines gemeinsamen Cache für Detektieren von gelöschten oder für ungültig erklärten Cache-Einträgen und zum Verhindern von Erzeugen von doppelten Einträgen sorgen, ohne den Zusatz und die Komplexität des Implementierens eines Cache-Synchronisationsprotokolls zu erfordern.
  • Die hierin beschriebene Architektur des gemeinsamen Cache und das hierin beschriebene Verfahren versuchen beiden der obengenannten Probleme Rechnung zu tragen. Gemäß einer Ausführungsform kennzeichnet die erste Anwendung zum Untersuchen des Pakets das Paket mit Nachschlageinformation auf der Grundlage des ursprünglichen Paket-Headers. Danach verwenden die nachfolgenden Paketverarbeitungsanwendungen die ursprüngliche Paketnachschlageinformation (das Tag) als den Nachschlageschlüssel, wenn sie den gemeinsamen Cache aktualisieren oder auf andere Weise darauf zugreifen. Wenn der Eintrag gelöscht worden ist (wie im obigen Beispiel), wird die Suche fehlschlagen und wird Konsistenz sichergestellt.
  • Beispielhaftes Netzwerkgerät
  • 4 zeigt ein vereinfachtes Blockdiagramm auf höchster Ebene eines Netzwerkgeräts 400 gemäß einer Ausführungsform der vorliegenden Erfindung. Das Netzwerkgerät 400 repräsentiert ein beispielhaftes Netzwerkrechen- oder Netzwerkkommunikationsgerät, wie zum Beispiel einen Gateway, einen Router, eine Brücke, einen Schalter, eine Firewall oder ein Inter net-Zugangsprodukt, in dem Eigenschaften der vorliegenden Erfindung implementiert werden können. In diesem Beispiel umfasst das Netzwerkgerät 400 ein Kommunikationsmittel, wie zum Beispiel einen Bus 410, zur Übertragung von Informationen, und ein Verarbeitungsmittel, wie zum einen oder mehrere Prozessoren 415, die mit dem Bus 410 zur Verarbeitung von Informationen und Ausführung von Befehlen gekoppelt sind.
  • Das Netzwerkgerät 400 enthält auch Netzwerkschnittstellen 420, die mit dem Bus 410 gekoppelt sind, um Übertragung und Austausch von Informationen zu/von dem Netzwerkgerät 400 mittels zum Beispiel eines lokalen Netzwerkes (Local Area Netzwork (LAN)), Wide Area Network (WAN), Metropolitan Area Network (MAN), des Internets oder des öffentlichen Fernsprechwählnetzes (public switched telephone network (PSTN)) zu gestatten. Die Netzwerkschnittstellen 420 können zahlreiche Kombinationen von allgemein bekannten Schnittstellen, wie zum Beispiel ein oder mehrere 10/100-Ethernet-Ports, ein oder mehrere Gigabit-Ethernet-Ports (Faser und/oder Kupfer) oder andere allgemein bekannte Schnittstellen, wie zum Beispiel Digital Subscriber Line (DSL)-Schnittstellen, Asynchronous Transfer Mode (ATM)-Ports und andere Schnittstellen, die üblicherweise in vorhandenen öffentlichen und privaten Netzwerkumgebungen verwendet werden, einschließen. In jedem Fall kann auf diese Weise das Netzwerkgerät 400 mit einer Anzahl von weiteren Netzwerkgeräten, Clients und/oder Servers über eine herkömmliche Netzwerkinfrastruktur, wie zum Beispiel ein Firmenintranet und/oder zum Beispiel das Internet, kommunizieren.
  • Das Netzwerkgerät 400 umfaßt ferner mehrere Module zur Durchführung von zahlreichen Paketverarbeitungsaufgaben, wie zum Beispiel ein oder mehrere NAT-Module 460 zum Anwenden von Netzwerkadressenübersetzung auf empfangene und/oder gesendete Pakete, ein oder mehrere Filtermodule 470 zur Durchführung von Empfangs- und/oder Sendepaketfiltern und ein oder mehrere Weiterleitmodule 480 zur Vornahme von Weiterleitungsentscheidungen.
  • Das Netzwerkgerät 400 enthält auch einen Hauptspeicher 430, der mit dem Bus 410 zum Speichern von Information und Befehlen gekoppelt ist, die vom Prozessor 415, NAT-Modul 460, Filtermodul 470 und/oder Weiterleitmodul 480 zu verwenden und/oder auszuführen sind. Der Hauptspeicher kann einen oder mehrere Typen von Speicher mit wahlfreiem Zugriff (Random Access Memory (RAM)), wie zum Beispiel static RAM (SRAM) zum Cachen und dynamic RAM (DRAM), synchronous DRAM (SDRAM) oder andere dynamische Speichergeräte für größere Laufzeitspeicherbedürfnisse umfassen. Somit kann der Hauptspeicher 430 zum Speichern von temporären Variablen oder anderer Zwischeninformation, wie zum Beispiel Nachschlagetabellen oder ein oder mehrere gemeinsame Caches, während der Ausführung von Befehlen des Prozessors 215 verwendet werden.
  • Das Netzwerkgerät 400 umfaßt auch einen Nur-Lesen-Speicher (Read Only Memory (ROM)) 440 und/oder anderen statischen Speicherbausteinen, der mit dem Bus 410 zum Speichern von statischer Information und Befehlen für den Prozessor 415 gekoppelt ist. Ein Datenspeichergerät 450, die zum Beispiel eine flash disk, Magnetplatte oder optische Platte und ein entsprechendes Laufwerk, können auch mit dem Bus 410 zum Speichern von Informationen und Befehlen gekoppelt werden.
  • In der obigen Beschreibung werden zur leichteren Erläuterung die zahlreichen Funktionseinheiten, wie zum Beispiel Prozessor 415, NAT-Modul 460, Filtermodul 470 und Weiterleitmodul 480 allgemein beschrieben, als ob sie jeweils ein einzelnes Gerät bzw. ein einzelner Prozeß wären. Jede Funktionseinheit kann jedoch tatsächlich mehrere physikalische und/oder logische Geräte umfassen, die in einer verteilten Architektur verbunden sind. Zusätzlich können zahlreiche Kombinationen von Funktionseinheiten tatsächlich als mehrere Ausführeinheiten auf demselben Siliziumchip vereinigt werden. Zusätzlich können in alternativen Ausführungsformen die von den zahlreichen Funktionseinheiten durchgeführten Funktionen, anders als oben beschrieben, verteilt werden. Zum Beispiel können besondere Funktionen auf mehrere Prozessoren verteilt werden.
  • Beispielhafter Netzwerkprozessor
  • 5 zeigt ein Blockdiagramm eines beispielhaften Netzwerkprozessors 500. Der Netzwerkprozessor 500 repräsentiert einen beispielhaften Prozessor, wie zum Beispiel Prozessor 415, der in einem Netzwerkgerät, wie zum Beispiel Netzwerkgerät 400, die hierin beschriebene Implementierung des gemeinsamen Cache verwendet werden kann. Gemäß einer Ausführungsform umfasst der Netzwerkprozessor den Intel® IXP 1200 Netzwerkprozessor (INTEL ist eine eingetragene Marke der Intel Corporation, Santa Clara, CA).
  • In diesem Beispiel ist der Netzwerkprozessor 500 ein lose gekoppelter Hybridparallelprozessorsatz, der eine Anordnung von unabhängigen Mikromaschinen (microengines) 540 mit einem Prozessorkern 515 kombiniert. Die Mikromaschinen 5401, wie zum Beispiel eine 32-bit-Reduced Instruction Set Computing (RISC)-Datenmaschine mit Hardware-multithread-Unterstützung, können ausreichend Verarbeitungsleistung zur Durchführung von Paketverarbeitungsaufgaben aufweisen, die typischerweise Hochgeschwindigkeits-ASICs vorbehalten sind, wie zum Beispiel NAT, Paketweiterleitung und Paketfilterung, enthalten. Der Prozessorkern 515, wie zum Beispiel ein Intel StrongARM-Kern, kann dann für mehrere komplexe Aufgaben, wie zum Beispiel Adressenlernen, -bilden und Führen von Weiterleittabellen und in Beziehung stehenden gemeinsamen Caches und Netzwerkverwaltung verwendet werden.
  • In der dargestellten Ausführungsform ist der Prozessorkern 515 mit einem Systembus 510 gekoppelt, der den Prozessorkern 515 in Kommunikation mit einer SRAM-Einheit 520, einer SDRAM-Einheit 515, einer Peripheral Component Interconnect (PCI)-Einheit 530 und einer Fast Bus Interface (FBI)-Einheit 535 koppelt. Die Mikromaschinen 540 sind mit einem separaten Datenbus 520 gekoppelt, mit dem die SRAM-Einheit 520, die SDRAM-Einheit 525, die PCI-Einheit 530 und die FBI-Einheit 535 auch gekoppelt sind, und können somit Datenverschiebung und -verarbeitung ohne Hilfe des Prozessorkerns 515 durchführen.
  • Gemäß einer Ausführungsform ist der Netzwerkprozessor 500 vollständig programmierbar, wodurch Paketverarbeitungsaufgaben in Abhängigkeit von den Bedürfnissen der speziellen Implementierung durch Zuteilen von Mikromaschinen 540, Threads und Verarbeitungskernaufgaben partioniert oder aggregiert werden können. Zum Beispiel kann NAT, Weiterleiten und Filtern jeweils einer oder mehreren separaten Mikromaschinen 540 zugeteilt werden. Al-ternativ können alle drei von diesen Paketverarbeitungsaufgaben auf mehrere Mikromaschinen 540 aufgeteilt werden.
  • Aktualisierung des gemeinsamen Cache
  • 6 zeigt ein Ablaufdiagramm, das Aktualisieren eines gemeinsamen Cache durch den langsamen Pfad gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. In einer Ausführungsform können die unten beschriebenen Tätigkeiten unter der Kontrolle von einem oder mehreren progammierten Prozessoren, wie zum Beispiel Prozessorkern 515 und/oder Mikromaschinen 540, durchgeführt werden. In alternativen Ausführungsformen können jedoch die Tätigkeiten vollständig oder teilweise durch irgendeine programmierbare oder vordefinierte Logik, wie zum Beispiel Field-Programmable Gate Arrays (FPGAs), Transistor-Transistor-Logik (transistor-transistor logic (TTL)) oder zum Beispiel anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits (ASICs)) implementiert werden.
  • Der Prozeß der Aktualisierung des gemeinsamen Cache gliedert sich im allgemeinen in eine Stufe der Detektion von neuem Fluß, eine Stufe zur Erzeugung eines neuen Cache-Eintrags, eine Paketkennzeichnungsstufe für vorhandene Flüsse und eine Cache-Eintrag-Aktualisierungsstufe. Die Stufe der Detektion von neuem Fluß wird durch Blöcke 610 – 630 repräsentiert, die Stufe der Erzeugung eines neuen Cache-Eintrags enthält Blöcke 680 und 690, die Paketkennzeichnungsstufe für vorhandene Flüsse wird von Block 640 repräsentiert und die Cache-Eintrag-Aktualisierungsstufe wird von Block 670 repräsentiert. Kurz gesagt kennzeichnet die erste Paketverarbeitungsaufgabe (z. B., NAT, Filtern oder Weiterleitung), während grundlegenden Paketflusses im langsamen Pfad, das Paket mit dem mit dem vorhandenen Fluß verbundenen Nachschlageschlüssel,-um festzulegen, dass das Paket, das verarbeitet wird, Teil eines vorhandenen Flusses ist. Wenn eine Paketverarbeitungsaufgabe bestimmt, dass das Paket, das verarbeitet wird, Teil eines neuen Flusses ist, erzeugt die Paketverarbeitungsaufgabe einen neuen Cache-Eintrag für den Fluß in dem gemeinsamen Cache und kennzeichnet sie das Paket mit dem korrespondierenden Nachschlageschlüssel für den neuen Cache-Eintrag.
  • Wichtig ist, dass in der gezeigten Ausführungsform die einzige Kommunikation zwischen den zahlreichen Paketverarbeitungsmodulen der in dem internen Paketdeskriptor eingebettete Nachschlageschlüssel ist. Diese Einrichtung ermöglicht verteilte Verarbeitung auf eine sehr elegante und einfache Weise, da eine Suche im gemeinsamen Cache fehlschlagen wird, wenn der Eintrag, der gesucht wird, von einem anderen Modul gelöscht worden ist. Demzufolge ist kein Cachesynchronisationsprotokoll notwendig.
  • Aktualisieren des gemeinsamen Cache durch den langsamen Pfad beginnt mit der Stufe der Detektion von neuem Fluß bei Entscheidungsblock 610. Bei Entscheidungsblock 610 wird eine Feststellung getroffen, ob Nachschlageschlüsselinformation im mit dem Paket, das verarbeitet wird, verbundenen Paketdeskriptor vorhanden ist. Wenn die Nachschlageschlüsselinformation vorhanden ist, dann ist das Paket bereits klassifiziert und gekennzeichnet worden und setzt die Verarbeitung mit Block 650 fort. Andernfalls ist das Paket noch nicht gekennzeichnet worden und setzt die Verarbeitung mit Block 620 fort. Gemäß einer Ausführungsform kann die Nachschlageschlüsselinformation mit einem Wert, der die Nachschlageschlüsselinformation als ungültig identifiziert, initialisiert werden, wenn ein Paketdeskriptor als erstes einem Paket zugeordnet wird.
  • Angenommen in diesem Beispiel, dass die Nachschlageinformation noch nicht auf den Wert eines gültigen Nachschlageschlüssels gesetzt worden ist, setzt die Verarbeitung mit Block 620 fort, wo ein Nachschlagen an einem gemeinsamen Cache unter Verwendung eines Nach schlageschlüssels durchgeführt wird, der auf der Grundlage des gegenwärtigen Inhalts des Paket-Headers erzeugt ist. Bei Entscheidungsblock 630 wird auf der Grundlage dessen, ob ein Eintrag während der von Block 620 initiierten Suche gefunden ist, eine Feststellung getroffen, ob das Paket Teil eines vorhandenen Flusses ist. Wenn ein Eintrag tatsächlich gefunden wird, dann wird das Paket klassifiziert als Teil des mit dem aufgefundenen Eintrag verbundenen vorhandenen Flusses klassifiziert und setzt die Verarbeitung mit der Kennzeichnungsstufe für vorhandene Flüsse bei Block 640 fort. Andernfalls wird das Paket als Teil eines neuen Flusses klassifiziert und setzt die Verarbeitung mit Block 680 fort, um mit der Stufe der Erzeugung eines neuen Cache-Eintrags zu beginnen.
  • Bei Block 640 wird das Paket als Teil des vorhandenen Flusses durch Initialisieren des Wertes des Nachschlageschlüssels im Paketdeskriptor mit dem Wert des Nachschlageschlüssels für den vorhandenen Fluß gekennzeichnet. Im Anschluß an Block 640 setzt die Verarbeitung mit Block 670 fort, um die Cache-Eintragaktualisierungsstufe durchzuführen.
  • Nunmehr zum Entscheidungsblock 610 zurückkehrend und unter der Annahme, dass die Nachschlageinformation im Paketdeskriptor vorhanden ist, wird dann, bei Block 650, ein Nachschlagen des gemeinsamen Cache unter Verwendung der Information durchgeführt. Es ist wiederum bemerkenswert, dass dieses Nachschlagen das Synchronisationsproblem zwischen mehreren verteilten Modulen, die den gemeinsamen Cache gemeinsam benutzen, löst, da das Nachschlagen fehlschlagen wird, wenn der Eintrag gelöscht worden ist, wie dies der Fall ist im Beispiel von 3.
  • Bei Entscheidungsblock 660 wird eine Feststellung getroffen, ob ein Eintrag als Reaktion auf das Nachschlagen von Block 650 gefunden wurde. Falls nicht, dann wird die Stufe der Erzeugung eines neuen Cache-Eintrags durch Weitergehen zu Block 680 durchgeführt. Wenn andernfalls ein Eintrag gefunden wurde, dann wird die Cache-Eintragaktualisierungsstufe durch Fortsetzen mit Block 670 durchgeführt.
  • Bei Block 680 wird ein neuer Cache-Eintrag erzeugt und in den gemeinsamen Cache als Ergebnis davon, dass entweder ein neuer Fluß detektiert worden ist oder ein Eintrag des gemeinsamen Cache gelöscht worden ist, eingefügt. Bei Block 690 wird der mit dem Paket, das verarbeitet wird, verbundene Paketdeskriptor aktualisiert, um den neuen Nachschlageschlüssel zu enthalten. In Abhängigkeit von der Anwendung kann der Nachschlageschlüssel auf mehr oder weniger Information in dem Paket-Header oder sogar anderen Feldern basieren. Zum Beispiel ist gemäß einer Ausführungsform der Nachschlageschlüssel, der für vollständiges Firewalling und Filtern verwendet wird, basierend auf dem 5-Tuple umfassend die IP-Quellenadresse, die IP-Zieladresse, das IP-Protokoll, den IP-Quellenport und den IP-Zielport erzeugt. Jedoch ist nur eine Untergruppe von diesen Feldern, wie zum Beispiel die IP-Quellenadresse und die IP-Zieladresse, notwendig, um den Nachschlageschlüssel zu erzeugen, wenn das Netzwerkgerät nur Routing durchführt. Zusätzlich wird, für IPsec, die SPI anstelle des Quellenports und des Zielports verwendet. Somit kann der gemeinsame Cache gemäß einer Ausführungsform für die besonderen registrierten Benutzer (z.B. NAT, Filtern, Weiterleiten etc.) des gemeinsamen Cache optimiert werden.
  • Bei Block 670 wird die Cache-Eintragaktualisierungsstufe für neue oder vorhandene Cache-Einträge durchgeführt. Der in Block 640 oder 650 aufgefundene Eintrag oder der in Block 680 erzeugte Eintrag wird nun in einer modulabhängigen Weise modifiziert. Das heißt, modulspezifische Information kann hinzugefügt, gelöscht oder auf andere Weise manipuliert werden in Abhängigkeit von den Bedürfnissen des besonderen Moduls, das den Prozeß der Aktualisierung des gemeinsamen Cache durchgeführt. Zum Beispiel während der Verarbeitung auf dem langsamen Pfad besetzt NAT die Felder des Cache-Eintrags, dass es verwendet, auf der Grundlage von Information, die aus einer NAT-Regeltabelle abgerufen ist. Eine andere Gruppe von Feldern im Cache-Eintrag kann von dem Filtermodul mit Information aus einer Filterregeltabelle besetzt werden. Eine weitere unabhängige Gruppe von Feldern kann vom Weiterleitmodul auf der Grundlage eines Nachschlagens durchgeführt werden, das in der vollständigen Routing-Tabelle durchgeführt wurde. Zusätzlich können Module am Sammeln von zahlreichen Metriken interessiert sein. Zum Beispiel kann das Filtermodul die Anzahl von Paketen verfolgen, die aus einer besonderen Quellen-IP-Adresse gefiltert sind; während das Weiterleitmodul die Dauer von IP-Flüssen, die eine besondere IP-Zieladresse mit sich bringen, verfolgen kann.
  • 7 zeigt ein Blockdiagramm, das grundlegenden Paketfluß gemäß einer Ausführungsform der vorliegenden Erfindung darstellt, wenn ein neuer Fluß detektiert und vom langsamen NAT-Empfangspfad detektiert wird. In diesem Beispiel ist ein mit einem Netzwerkpaket 710 verbundener Paketdeskriptor 705 in einem Zustand gezeigt, bevor Empfangs-NAT-Verarbeitung abgeschlossen worden ist.
  • Zu Zeitpunkt t1 wird der Paketdeskriptor 705 vom langsamen NAT-Empfangspfad 720 empfangen. Gemäß der dargestellten Ausführungsform enthält der Paketdeskriptor ein Feld, das die Eingangsschnittstelle, die Paketlänge, den Nachschlageschlüssel und einen Pointer auf die Paketdaten identifiziert. Die Eingangsschnittstelle identifiziert direkt oder indirekt die logische Schnittstelle, an der das Netzwerkpaket 710 empfangen wurde. Die Paketlänge zeigt die Länge des Pakets in Bytes an. In Abhängigkeit von der Implementierung kann der Nachschlageschlüssel einen Wert, wie zum Beispiel einen Hash-Wert, zur Verwendung beim direkten Durchführen des Nachschlagens im gemeinsamen Cache repräsentieren oder kann der Nachschlageschlüssel die Rohdaten aus dem ursprünglichen Paket-Header, auf dem der Hash-Wert basiert repräsentieren. Der Pointer auf die Paketdaten ist die Adresse des Beginns des Netzwerkpakets 710. In diesem Beispiel ist das Netzwerkpaket 710 als ein IP-Paket mit einem IP-Header 711-715 und einer IP-Nutzinformation 716 dargestellt. Der IP-Header enthält eine IP-Quellenadresse 711, eine IP-Zieladresse 712 und IP-Protokollindikator 713, einen IP-Quellenport 714 und einen IP-Zielport 715.
  • In Abhängigkeit von der Implementierung können mehr oder weniger Felder im Paketdeskriptor 705 enthalten sein. Zum Beispiel gemäß einer Ausführungsform ist ein separater gemeinsamer Cache jeder logischen Schnittstelle zugeordnet und wird der Cache nur für eintreffende Pakete an einer speziellen Schnittstelle verwendet. Das heißt, alle Suchen/Einfügungen basieren auf der Empfangsschnittstelle. In einer Ausführungsform, in der ein einziger gemeinsamer Cache verwendet wird, muss jedoch das Eingangsschnittstellenfeld nicht als Teil des Paketdeskriptors 705 enthalten sein.
  • Da der Nachschlageschlüssel im Paketdeskriptor 705 leer ist, wird zu Zeitpunkt t2 ein Nachschlageschlüssel auf der Grundlage der Inhalte des IP-Header 711-715 des Netzwerkpakets gebildet und wird ein Nachschlagen in der NAT-Regeltabelle 730 durchgeführt. Zur Beschleunigung der Verarbeitung von nachfolgenden Paketen, die mit demselben Paketfluß verbunden sind, wird zu Zeitpunkt t3 der Fluß klassifiziert und ein neuer Cache-Eintrag, der initialisiert worden ist, um geeignete Übersetzungsregeln für diesen Fluß zu enthalten, in den gemeinsamen Cache 740 auf der Grundlage des Nachschlageschlüssels eingefügt. Zu Zeitpunkt t4 kann der langsame NAT-Empfangspfad 720 eine oder mehrere der IP-Quellenadresse 711, der IP-Zieladresse 712, des IP-Quellenports 714 und des IP-Zielports 715 übersetzen. Zu Zeitpunkt t5 wird der zum Einfügen des Cache-Eintrags verwendete Nachschlageschlüssel zur Lösung des oben in Bezug auf 2 beschriebenen Problems im Paketdeskriptors 705 gespeichert, um dadurch Konsistenz unter den Modulen hinsichtlich des Zugriffs auf den gemeinsamen Cache sicherzustellen. Schließlich wird zu Zeitpunkt t6 das Paket zur nächsten Paketverarbeitungsaufgabe weitergeleitet, die in diesem Beispiel die Empfangsfilter ist.
  • 8 zeigt ein Blockdiagramm, das grundlegenden Paketfluß konzeptionell gemäß einer Ausführungsform der vorliegenden Erfindung darstellt, wenn ein neuer Fluß detektiert und vom langsamen Filterempfangspfad empfangen wird. Unter Fortsetzung des Beispiels, das mit 7 begonnen hat, ist der Paketdeskriptor 705 nun in einem Zustand gezeigt, nachdem die Empfangs-NAT-Verarbeitung abgeschlossen worden ist. Demzufolge ist das Nachschlageschlüsselfeld im Paketdeskriptor 705 mit dem Nachschlageschlüssel besetzt, der verwendet wurde, um den Eintrag im gemeinsamen Cache einzufügen, und können zahlreiche Felder des IP-Headers 711-715 gegenüber deren Anfangswerten abgewandelt sein. In diesem Beispiel ist die IP-Quellenadresse 711 von 89.20.171.1 in 10.20.171.1 übersetzt worden und ist die IP-Zieladresse 712 von 90.1.1.1 in 11.1.1.1 übersetzt worden.
  • Zu Zeitpunkt t6 wird der Paketdeskriptor 705 durch den langsamen Filterempfangspfad 820 vom langsamen NAT-Empfangspfad 720 empfangen. Gemäß einer Ausführungsform wird der Paketdeskriptor 750 als ein Parameter unter Modulaufrufen geführt. In alternativen Ausführungsformen kann der Paketdeskriptor 750 in einem global zugänglichen Speicher gespeichert werden. In jedem Fall ruft zu Zeitpunkt t7 der langsame Filterempfangspfad die geeigneten Filterbefehle für diesen Fluß aus der Filterregeltabelle 830 ab. Zu Zeitpunkt t8 wird der vom langsamen NAT-Empfangspfad 720 zu Zeitpunkt t3 eingefügte Cache-Eintrag unter Verwendung des Nachschlageschlüssels im Paketdeskriptor 705 abgerufen und aktualisiert, um die Filterbefehle zu enthalten. Vor allem würde ein anderer Nachschlageschlüssel, wenn der langsame Filterempfangspfad 820 den gegenwärtigen IP-Header 711-715 verwendet hätte, erzeugt worden sein, der vom langsamen NAT-Empfangspfad 720 eingefügte Cache-Eintrag nicht aufgefunden worden sein und wäre ein doppelter Eintrag wie im Beispiel von 2 erzeugt worden. Da jedoch dieses Modul Zugriff auf den Nachschlageschlüssel hat, der zum Einfügen des Cache-Eintrags verwendet wurde, wird Zugangskonsistenz sichergestellt und die unnötige Erzeugung von doppelten Cache-Einträgen vermieden. An diesem Punkt wird das Netzwerkpaket 710 entweder gefiltert (verworfen) oder zum nächsten Modul geleitet auf der Grundlage der Filterregeln, die auf dieses Netzwerkpaket 710 anwendbar sind. Angenommen, dass das Paket nicht gefiltert ist, wird es zu Zeitpunkt t9 zum Weiterleitmodul weitergeleitet.
  • 9 zeigt ein Blockdiagramm, das grundlegenden Paketfluß, wenn ein neuer Fluß detektiert und vom langsamen Weiterleitpfad empfangen wird, gemäß einer Ausführungsform der vorliegenden Erfindung konzeptionell darstellt. Unter Fortsetzung des Beispiels, mit dem wir in 8 aufgehört haben, wird zu Zeitpunkt t9. der Paketdeskriptor 705 vom langsamen Weiterleitpfad 920 empfangen. Zu Zeitpunkt t10 führt der langsame Weiterleitpfad 920 eine Suche in der Routing-Tabelle 930 durch, um die geeigneten Routing-Befehle bezüglich des Netzwerkpakets 710 und anderer mit diesem Fluß verbundenen Pakete aufzurufen. Der langsame Weiterleitpfad 920 aktualisiert danach zu Zeitpunkt t11 den Cache-Eintrag im gemeinsamen Cache 740, der vom langsamen NAT-Empfangspfad 720 erzeugt und vom langsamen Filterempfangspfad 820 modifiziert wurde. Während es nicht dargestellt ist, wird der Rest des langsamen Pfades, zum Beispiel langsamer Filtersendepfad und langsamer NAT-Sendepfad, in derselben Weise gehandhabt.
  • Alternative Ausführungsformen
  • In den oben beschriebenen Beispielen wird der Nachschlageschlüssel des gemeinsamen Cache übertragen oder für diejenigen der Module des langsamen Pfades, die den gemeinsamen Cache gemeinsam benutzen, zugänglich gemacht. Während diese Einrichtung den Vorteil aufweist, dass eine verteilte Verarbeitung auf eine sehr elegante und einfache Weise möglich gemacht wird, ohne ein Cache-Synchronisationsprotokoll zu benötigen, kann es in alternativen Ausführungsformen nützlich sein, stattdessen einen Pointer auf den Eintrag des gemeinsamen Cache gemeinsam mit einem Inkarnationszähler zum langsamen Pfad zu leiten. Gemäß dieser Ausführungsform verfolgt ein Cache-Manager die Gültigkeit der Einträge des gemeinsamen Cache durch Aktualisieren von Inkarnationszählern. Bevor ein Modul des langsamen Pfades versucht, den Pointer auf den Eintrag des gemeinsamen Cache zu verwenden, fragt das Modul den Cache-Manager, ob der Eintrag weiterhin gültig ist, und vergleicht der Cache-Manager einen internen Inkarnationszähler mit dem Inkarnationszähler, der mit der Zeigerreferenz verbunden ist.
  • In den oben beschriebenen Beispielen wurde der Einfachheit halber auf einen einzigen gemeinsamen Cache Bezug genommen. Man wird jedoch verstehen, dass die Verwendung von mehreren gemeinsamen Caches gemäß zahlreichen Ausführungsformen ins Auge gefasst ist. Anstelle eines zentralen gemeinsamen Cache kann zum Beispiel gemäß einer Ausführungsform ein separater gemeinsamer Cache mit einer Gruppe von einer oder mehreren logischen oder physikalischen Netzwerkschnittstellen verbunden sein. Zusätzlich kann für Zwecke der Handhabung von Paketen, die vom Netzwerkgerät selbst erzeugt sind, ein separater Cache zur Handhabung derartiger intern erzeugter Pakete betrieben werden.
  • Während in oben beschriebenen zahlreichen Ausführungsformen angenommen wurde, dass entweder die erste Paketverarbeitungsanwendung zum Empfangen des Pakets oder der langsame NAT-Empfangspfad das Modul zum Kennzeichnen des Pakets mit dem Cache-Nachschlageschlüssel ist, kann in alternativen Ausführungsformen das Kennzeichnen bei Empfang an der physikalischen oder logischen Schnittstelle durchgeführt werden. Eine weitere Option besteht darin, das Paket zu kennzeichnen, falls und wenn der Paket-Header das erste Mal modifiziert wird.
  • Während NAT als ein Beispiel einer Paketverarbeitungsanwendung verwendet wird, die Modifikation eines Abschnitts eines Pakets, der zur Erzeugung eines Cache-Nachschlageschlüssels verwendet wird, mit sich bringt, sollte man schließlich erkennen, dass die hierin beschriebene Paketkennzeichnungslösung auf zahlreiche andere gegenwärtige oder zukünftige Paketverarbeitungsanwendungen anwendbar ist, die die Modifikation des gesamten oder eines Teils eines Abschnitts eines Netzwerkpakets mit sich bringen, der zur Erzeugung eines Cache-Nachschlageschlüssels verwendet wird.
  • In der vorangehenden Beschreibung ist die Erfindung unter Bezugnahme auf spezielle Ausführungsformen derselben beschrieben worden. Es wird jedoch ersichtlich sein, dass zahlreiche Modifikationen und Änderungen daran vorgenommen werden können, ohne aus dem breiteren Geist und Schutzbereich der Erfindung zu gelangen. Die Beschreibung und Zeichnungen sind daher in einem illustrativen statt in einem beschränkenden Sinne anzusehen.
  • ZUSAMMENFASSUNG
  • Es werden Vorrichtungen und Verfahren für einen Netzwerkadressübersetzungs (Network Address Translation (NAT))-kompatiblen gemeinsamen Cache bereitgestellt. Gemäß einer Ausführungsform benutzen mehrere Paketverarbeitungsanwendungen, die auf einen oder mehrere Prozessoren des Netzwerkgeräts verteilt sind, einen oder mehrere gemeinsame Caches, ohne ein Cache-Synchronisationsprotokoll zu erfordern. Wenn ein Paket am Netzwerkgerät empfangen wird, kennzeichnet eine erste Paketverarbeitungsanwendung, wie zum Beispiel NAT oder andere Anwendungen, die einen Teil des Paket-Headers modifiziert, auf dem ein Cache-Nachschlageschlüssel basiert, das Paket mit einem Cache-Nachschlageschlüssel auf der Grundlage der ursprünglichen Inhalte des Paket-Headers. Danach verwenden weitere Paketverarbeitungsanwendungen, die versuchen, auf den Cache-Eintrag vom gemeinsamem Cache im Anschluß an das Kennzeichnen durch die erste Paketverarbeitungsanwendung zuzugreifen, den Tag (den von der ersten Paketverarbeitungsanwendung erzeugten Cache-Nachschlageschlüssel), statt dass sie den Cache-Nachschlageschlüssel auf der Grundlage der gegenwärtigen Inhalte des Paket-Headers festlegen.

Claims (32)

  1. Verfahren, umfassend: Empfangen eines Pakets an einem Netzwerkgerät, wobei das Paket einen Header und eine Nutzinformation enthält; Kennzeichnen des Pakets, durch eine erste Paketverarbeitungsanwendung von einer Vielzahl von Paketverarbeitungsanwendungen, mit einem Cache-Nachschlageschlüssel auf der Grundlage von ursprünglichen Inhalten des Headers, wobei der Cache- Nachschlageschlüssel anzeigt, wo in einem gemeinsamen Cache ein dem Paket entsprechender Cache-Eintrag gespeichert werden wird; und diejenigen der Vielzahl von Paketverarbeitungsanwendungen, die versuchen, auf den Cache-Eintrag vom gemeinsamen Cache im Anschluß an das Kennzeichnen durch die erste Paketverarbeitungsanwendung zuzugreifen, den Cache-Nachschlageschlüssel verwenden, statt einen neuen Cache-Nachschlageschlüssel auf der Grundlage von gegenwärtigen Inhalten des Headers zu erzeugen.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das Kennzeichnen des Pakets mit einem Cache-Nachschlageschlüssel Besetzen eines Nachschlageschlüsselfeldes eines internen Paketsdeskriptors, der dem Paket entspricht, mit einem Hash-Wert umfasst.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass das Paket ein Internetprotokoll (Internet Protocol (IP))-Paket umfasst und der Cache-Nachschlageschlüssel auf einer Quellen-IP-Adresse des Headers, einer Ziel-IP-Adresse des Headers, einem Quellenport des Headers, einem Zielport des Headers und einem Protokollwert im Header basiert.
  4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Vielzahl von Paketverarbeitungsanwendungen Anwenden von einem oder mehreren von Netzwerkadressübersetzung (Network Address Translation (NAT)), Paketfiltern und Paket-Routing enthält.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass die Vielzahl von Paketverarbeitungsanwendungen auf zwei oder mehr Prozessoren des Netzwerkgerätes verteilt ist.
  6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die erste Paketverarbeitungsanwendung einen NAT-Prozess umfasst, der den Header des Pakets modifiziert, und dass das Verfahren außerdem einen NAT-Prozess umfasst, der eine zweite Paketverarbeitungs anwendung der Vielzahl von Paketverarbeitungsanwendungen initiiert und das gekennzeichnete Paket für die zweite Paketverarbeitungsanwendung bereitstellt.
  7. Verfahren nach Anspruch 6, ferner umfassend, dass die zweite Paketverarbeitungsanwendung den Cache-Eintrag mit für die zweite Paketverarbeitungsanwendung spezifischer Information aktualisiert durch Verwendung des Cache-Nachschlageschlüssels zum Zugreifen auf den Cache-Eintrag.
  8. Verfahren, umfassend die Schritte: einen Schritt zur Festlegung, ob ein Cache-Nachschlageschlüssel in einem mit einem empfangenen Paket verbundenen Paketdeskriptor vorhanden ist; einen Schritt zur Durchführung eines Nachschlagens in einem gemeinsamen Cache mit dem Cache-Nachschlageschlüssel, wenn festgestellt ist, dass der Cache-Nachschlageschlüssel im Paketdeskriptor vorhanden ist; einen Schritt zur Erzeugung eines neuen Cache-Eintrags, im gemeinsamen Cache auf der Grundlage von Information in einem Header des empfangenen Pakets und Kennzeichnung des Pakets, wenn festgestellt ist, dass der Cache-Nachschlageschlüssel nicht im Paketdeskriptor vorhanden ist oder das Nachschlagen keinen geeigneten vorhandenen Cache-Eintrag lokalisiert; und einen Schritt zum Aktualisieren eines bestehenden Cache-Eintrags mit modulspezifischer Information.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass der gemeinsame Cache als eine Hash-Tabelle implementiert ist und Kennzeichnen des Pakets Erzeugen eines Hash-Werts auf der Grundlage mindestens einer Quellenadresse und einer Zieladresse im Header und Speichern des Hash-Werts im Paketdeskriptor umfasst.
  10. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass der gemeinsame Cache von einer Vielzahl von verteilten Paketverarbeitungsaufgaben, einschließlich Netzwerkadressübersetzung (Network Address Translation (NAT)), Paketfiltern und Paketweiterleitung, verwendet wird.
  11. Verfahren nach Anspruch 8, ein Schritt zum Übermitteln des Cache-Nachschlageschlüssels von der NAT-Paketverarbeitungsaufgabe zur Paketfilterpaketverarbeitungsaufgabe.
  12. Netzwerkgerät, umfassend: eine Vielzahl von Eingangsschnittstellen, an denen Internetprotokoll (Internet Protocol (IP))-Pakete empfangen werden; eine Vielzahl von gemeinsamen Caches, wobei jeder gemeinsame Cache der Vielzahl von gemeinsamen Caches mit einer korrespondierenden Eingangsschnittstelle der Vielzahl von Eingangsschnittstellen verbunden ist; ein Netzwerkadressübersetzungs(Network Address Translation (NAT))-Modul, das mit jeder der Vielzahl von Schnittstellen und mit jedem der Vielzahl von gemeinsamen Caches gekoppelt ist, um eine oder mehrere Adressen in Headers von empfangenen IP-Paketen gemäß einer Vielzahl von in einer NAT-Regeltabelle gespeicherten NAT-Regeln zu übersetzen, die empfangenen IP-Pakete mit Cache-Nachschlageschlüsseln für den gemeinsamen Cache zu kennzeichnen, der mit der Eingangsschnittstelle verbunden ist, an der sie empfangen werden, und neue Cache-Einträge in die gemeinsamen Caches einzufügen, wenn neue Paketflüsse detektiert werden; ein Filtermodul, das mit jedem der Vielzahl von gemeinsamen Caches und dem NAT-Modul zum Empfangen von gekennzeichneten IP-Paketen vom NAT-Modul, Durchführen von Paketfiltern gemäß einer Vielzahl von in einer Filterregeltabelle gespeicherten Filterregeln und Zugreifen auf und Aktualisieren von bestehenden Cache-Einträgen in den gemeinsamen Caches unter Verwendung der vom NAT-Modul hinzugefügten Cache-Nachschlageschlüssel gekoppelt ist; und ein Weiterleitmodul, das mit jedem der Vielzahl von gemeinsamen Caches und mit dem Filtermodul zum Empfangen von gekennzeichneten IP-Paketen vom Filtermodul, Durchführen von Paketweiterleitung gemäß einer Vielzahl von in einer Routing-Tabelle gespeicherten Weiterleitregeln und zum Zugreifen auf und Aktualisieren von bestehenden Cache-Einträgen in den gemeinsamen Caches unter Verwendung der vom NAT-Modul hinzugefügten Cache-Nachschlageschlüssel gekoppelt ist.
  13. Netzwerkgerät nach Anspruch 12, dadurch gekennzeichnet, dass das Netzwerkgerät ein Router ist.
  14. Netzwerkgerät nach Anspruch 12, dadurch gekennzeichnet, dass das Netzwerkgerät ein Schalter ist.
  15. Netzwerkgerät nach Anspruch 12, dadurch gekennzeichnet, dass das NAT-Modul, das Filtermodul und das Weiterleitmodul auf eine Vielzahl von Prozessoren verteilt sind.
  16. Netzwerkgerät nach Anspruch 15, dadurch gekennzeichnet, dass das NAT-Modul, das Filtermodul und das Weiterleitmodul bei Fehlen eines Cache-Synchronisationsprotokolls durch Nachschlagen in einer Vielzahl von gemeinsamen Caches unter Verwendung von Cache-Nachschlageschlüsseln, die in mit den empfangenen IP-Paketen verbundenen Paketdeskriptoren gespeichert sind, operieren.
  17. Netzwerkgerät, umfassend: eine Vielzahl von Eingangsschnittstellenmitteln, an denen Internetprotokoll (Internet Protocol (IP))-Pakete empfangen werden, eine Vielzahl von Mitteln mit gemeinsamem Cache, wobei jedes mit einer korrespondierenden Eingangsschnittstelle der Vielzahl von Eingangsschnittstellen zum Speichern von kürzlich verwendeter Paketweiterleitinformation verbunden ist; ein Netzwerkadressübersetzungs(Network Address Translation (NAT))-Mittel, das mit jedem der Vielzahl von Schnittstellenmitteln und mit jedem der Vielzahl von Mitteln mit gemeinsamem Cache zum Übersetzen von einer oder mehreren Adressen in Headers von empfangenen IP-Paketen gemäß einer Vielzahl von in einer NAT-Regeltabelle gespeicherten NAT-Regeln, Kennzeichnen der empfangenen IP-Pakete mit Cache-Nachschlageschlüsseln für die Mittel mit gemeinsamem Cache, die mit den Eingangsschnittstellenmitteln verbunden sind, bei denen sie empfangen werden, und Einfügen von neuen Cache-Einträgen in die Mittel mit gemeinsamem Cache, wenn neue Paketflüsse detektiert werden; ein Paketfiltermittel, das mit jedem der Vielzahl von Mitteln mit gemeinsamem Cache und mit dem NAT-Mittel zum Empfangen von gekennzeichneten IP-Paketen vom NAT-Mittel, Durchführen von Paketfiltern gemäß einer Vielzahl von in einer Filterregeltabelle gespeicherten Filterregeln und zum Zugreifen auf und Aktualisieren von bestehenden Cache-Einträgen in den Mitteln mit gemeinsamem Cache unter Verwendung der von dem NAT-Mittel hinzugefügten Cache-Nachschlageschlüsseln gekoppelt ist; und ein Paketweiterleitmittel, das mit jedem der Vielzahl von Mitteln mit gemeinsamem Cache und dem Paketfiltermittel zum Empfangen von gekennzeichneten IP-Paketen vom Paketfiltermittel, Durchführen von Paketweiterleitung gemäß einer Vielzahl von in einer Routing-Tabelle gespeicherten Weiterleitregeln und zum Zugreifen auf und Aktualisieren von bestehenden Cache-Einträgen in den Mitteln mit gemeinsamem Cache unter Verwendung der vom NAT-Mittel hinzugefügten Cache-Nachschlageschlüsseln gekoppelt ist.
  18. Netzwerkgerät nach Anspruch 17, dadurch gekennzeichnet, dass das Netzwerkgerät ein Router ist.
  19. Netzwerkgerät nach Anspruch 17, dadurch gekennzeichnet, das Netzwerkgerät ein Schalter ist.
  20. Netzwerkgerät nach Anspruch 17, dadurch gekennzeichnet, dass das NAT-Mittel, das Paketfiltermittel und das Paketweiterleitmittel auf eine Vielzahl von Prozessoren verteilt sind.
  21. Netzwerkgerät nach Anspruch 20, dadurch gekennzeichnet, dass das NAT-Mittel, das Paketfiltermittel und das Paketweiterleitmittel bei Fehlen eines Cache-Synchronisationsprotokolls durch Nachschlagen in der Vielzahl von Mitteln mit gemeinsamem Cache unter Verwendung von Cache-Nachschlageschlüsseln, die in mit den empfangenen IP-Paketen verbundenen internen Paketdeskriptoren gespeichert sind, operieren.
  22. Maschinenlesbares Medium mit darauf gespeicherten Daten, die Befehle repräsentieren, die, bei Ausführung durch einen oder mehrere Prozessoren eines Netzwerkgeräts, den beziehungsweise mehrere Prozessoren folgendes machen lassen: Empfangen eines Pakets, das einen Header und eine Nutzinformation enthält; Kennzeichnen des Pakets, durch eine erste Paketverarbeitungsanwendung einer Vielzahl von Paketverarbeitungsanwendungen, mit einem Cache-Nachschlageschlüssel auf der Grundlage von ursprünglichen Inhalten des Headers, wobei der Cache- Nachschlageschlüssel anzeigt, wo in einem gemeinsamen Cache ein dem Paket entsprechender Cache-Eintrag gespeichert werden wird; und Verwenden des Cache-Nachschlageschlüssels anstelle von Erzeugen eines neuen Cache-Nachschlageschlüssels auf der Grundlage von gegenwärtigen Inhalten des Headers durch diejenigen der Vielzahl von Paketverarbeitungsanwendungen, die versuchen, auf den Cache-Eintrag vom gemeinsamen Cache nach dem Kennzeichnen durch die erste Paketverarbeitungsanwendung zuzugreifen.
  23. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass das Kennzeichnen des Pakets mit einem Cache-Nachschlageschlüssel Besetzen eines Nachschlageschlüsselfeldes eines dem Paket entsprechenden internen Paketdeskriptors mit einem Hash-Wert umfasst.
  24. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass das Paket ein Internetprotokoll (Internet Protocol (IP))-Paket umfasst und der Cache-Nachschlageschlüssel auf einer Quellen-IP-Adresse des Headers, einer Ziel-IP-Adresse des Headers, einem Quellenport des Headers, einem Zielport des Headers und einem Protokollwert im Header basiert.
  25. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass die Vielzahl von Paketverarbeitungsanwendungen Anwenden von einem oder mehreren von Netzwerkadressübersetzung (Network Address Translation (NAT)), Paketfiltern und Paket-Routing enthält.
  26. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass die Vielzahl von Paketverarbeitungsanwendungen auf mindestens zwei Prozessoren des Netzwerkgerätes verteilt ist.
  27. Maschinenlesbares Medium nach Anspruch 26, dadurch gekennzeichnet, dass die Vielzahl von Paketverarbeitungsanwendungen Netzwerkadressübersetzung (Network Address Translation (NAT)), Paketfiltern und Paketweiterleitung enthält.
  28. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass die Paketverarbeitungsanwendung einen NAT-Prozess umfasst, der den Header des Pakets modifiziert, dass die Befehle außerdem den einen oder mehrere Prozessoren folgendes machen lassen: Liefern des gekennzeichneten Pakets an eine zweite Paketverarbeitungsanwendung der Vielzahl von Paketverarbeitungsanwendungen; und Initiieren der zweiten Paketverarbeitungsanwendung der Vielzahl von Paketverarbeitungsanwendungen im Nachgang zum NAT-Prozess.
  29. Maschinenlesbares Medium nach Anspruch 28, dadurch gekennzeichnet, dass die erste Paketverarbeitungsanwendung einen NAT-Prozess umfasst, der den Header des Pakets modifiziert, dass die Befehle außerdem den einen oder mehrere Prozessoren folgendes machen lassen: Zugreifen auf den Cache-Eintrag, von der zweiten Paketverarbeitungsanwendung, durch Verwendung des Cache-Nachschlageschlüssels; und Aktualisieren des Cache-Eintrags, von der zweiten Paketverarbeitungsanwendung, mit für die zweite Paketverarbeitungsanwendung spezifischer Information.
  30. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass der gemeinsame Cache als eine Hash-Tabelle implementiert ist und Kennzeichnen des Pakets Erzeu gen eines Hash-Werts auf der Grundlage mindestens einer Quellenadresse und einer Zieladresse im Header und Speichern des Hash-Werts im Paketdeskriptor umfasst.
  31. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass das Netzwerkgerät einen Router umfasst.
  32. Maschinenlesbares Medium nach Anspruch 22, dadurch gekennzeichnet, dass das Netzwerkgerät einen Schalter umfasst.
DE10297269T 2001-09-28 2002-09-27 Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache Expired - Fee Related DE10297269B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/967084 2001-09-28
US09/967,084 2001-09-28
US09/967,084 US7269663B2 (en) 2001-09-28 2001-09-28 Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
PCT/US2002/031154 WO2003028341A2 (en) 2001-09-28 2002-09-27 Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache

Publications (2)

Publication Number Publication Date
DE10297269T5 true DE10297269T5 (de) 2004-09-23
DE10297269B4 DE10297269B4 (de) 2009-06-04

Family

ID=25512278

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297269T Expired - Fee Related DE10297269B4 (de) 2001-09-28 2002-09-27 Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache

Country Status (7)

Country Link
US (1) US7269663B2 (de)
CN (1) CN1561625B (de)
DE (1) DE10297269B4 (de)
GB (1) GB2396079B (de)
HK (1) HK1062753A1 (de)
TW (1) TWI257223B (de)
WO (1) WO2003028341A2 (de)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002076042A1 (en) * 2001-03-19 2002-09-26 International Business Machines Corporation Cache entry selection method and apparatus
US7277399B1 (en) * 2002-04-08 2007-10-02 Cisco Technology, Inc. Hardware-based route cache using prefix length
US8145790B2 (en) * 2002-07-11 2012-03-27 Hewlett-Packard Development Company, L.P. Method and device for using dynamic updates in a network
TWI263425B (en) * 2003-01-14 2006-10-01 Admtek Inc Router and packet transmission method
KR100514742B1 (ko) * 2003-02-06 2005-09-14 삼성전자주식회사 통합 캐시를 이용하여 다음 홉 주소를 결정하는 장치 및 방법
US20050063379A1 (en) * 2003-09-18 2005-03-24 Samsung Electronics Co., Ltd Apparatus and method for traffic profiling in a massively parallel router
GB0322491D0 (en) * 2003-09-25 2003-10-29 British Telecomm Virtual networks
US7571242B2 (en) * 2003-10-24 2009-08-04 Alcatel Lucent Method for accelerated packet processing
US20050100042A1 (en) * 2003-11-12 2005-05-12 Illikkal Rameshkumar G. Method and system to pre-fetch a protocol control block for network packet processing
WO2005067532A2 (en) * 2004-01-14 2005-07-28 Riverstone Networks, Inc. Managing processing utilization in a network node
US7474661B2 (en) * 2004-03-26 2009-01-06 Samsung Electronics Co., Ltd. Apparatus and method for distributing forwarding table lookup operations among a plurality of microengines in a high-speed routing node
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7535907B2 (en) * 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine
US8619790B2 (en) * 2005-06-07 2013-12-31 Broadcom Corporation Adaptive cache for caching context and for adapting to collisions in a session lookup table
US7639613B1 (en) * 2005-06-24 2009-12-29 Packeteer, Inc. Adaptive, flow-based network traffic measurement and monitoring system
US7580356B1 (en) * 2005-06-24 2009-08-25 Packeteer, Inc. Method and system for dynamically capturing flow traffic data
US7333430B2 (en) * 2005-07-06 2008-02-19 Fortinet, Inc. Systems and methods for passing network traffic data
US20080101366A1 (en) * 2006-10-31 2008-05-01 Motorola, Inc. Methods for optimized tunnel headers in a mobile network
US8607302B2 (en) * 2006-11-29 2013-12-10 Red Hat, Inc. Method and system for sharing labeled information between different security realms
US7865576B2 (en) * 2007-01-31 2011-01-04 Alcatel Lucent Change of subscriber information in a multi-chassis network access environment
US8234327B2 (en) 2007-03-30 2012-07-31 Netapp, Inc. System and method for bandwidth optimization in a network storage environment
US8379623B2 (en) * 2007-07-10 2013-02-19 Motorola Solutions, Inc. Combining mobile VPN and internet protocol
US20090092136A1 (en) * 2007-10-09 2009-04-09 Broadcom Corporation System and method for packet classification, modification and forwarding
US8193182B2 (en) 2008-01-04 2012-06-05 Intellikine, Inc. Substituted isoquinolin-1(2H)-ones, and methods of use thereof
KR101897881B1 (ko) 2008-01-04 2018-09-12 인텔리카인, 엘엘씨 특정 화학 물질, 조성물 및 방법
US20090285207A1 (en) * 2008-05-15 2009-11-19 Cohen Yochai System and method for routing packets using tags
US7908376B2 (en) * 2008-07-31 2011-03-15 Broadcom Corporation Data path acceleration of a network stack
US8645400B1 (en) * 2008-08-01 2014-02-04 Marvell International Ltd. Flexible bit field search method
CA2738429C (en) 2008-09-26 2016-10-25 Intellikine, Inc. Heterocyclic kinase inhibitors
US8228848B2 (en) * 2008-11-17 2012-07-24 Sierra Wireless, Inc. Method and apparatus for facilitating push communication across a network boundary
GB2478470B8 (en) 2008-11-17 2014-05-21 Sierra Wireless Inc Method and apparatus for network port and netword address translation
US8924486B2 (en) * 2009-02-12 2014-12-30 Sierra Wireless, Inc. Method and system for aggregating communications
US9137138B2 (en) * 2008-11-28 2015-09-15 Stephen W. NEVILLE Method and system of controlling spam
US20100235689A1 (en) * 2009-03-16 2010-09-16 Qualcomm Incorporated Apparatus and method for employing codes for telecommunications
JP5789252B2 (ja) 2009-05-07 2015-10-07 インテリカイン, エルエルシー 複素環式化合物およびその使用
US8880716B2 (en) * 2009-05-08 2014-11-04 Canon Kabushiki Kaisha Network streaming of a single data stream simultaneously over multiple physical interfaces
ES2593256T3 (es) 2010-05-21 2016-12-07 Infinity Pharmaceuticals, Inc. Compuestos químicos, composiciones y métodos para las modulaciones de cinasas
KR101019251B1 (ko) 2010-07-23 2011-03-04 주식회사 파이오링크 멀티코어 환경에서 nat를 사용하는 경우에 적합한 패킷 분산 방법, 장치 및 컴퓨터 판독 가능한 기록 매체
US8627448B2 (en) * 2010-11-02 2014-01-07 Jose Renato Santos Selective invalidation of packet filtering results
EP2637669A4 (de) 2010-11-10 2014-04-02 Infinity Pharmaceuticals Inc Heterocyclische verbindungen und ihre verwendung
US20120144123A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Read-ahead processing in networked client-server architecture
US8943221B2 (en) 2010-12-16 2015-01-27 Openet Telecom Ltd. Methods, systems and devices for pipeline processing
US8675659B2 (en) 2010-12-16 2014-03-18 Openet Telecom Ltd. Methods, systems and devices for multiphase decoding
US8824370B2 (en) 2010-12-16 2014-09-02 Openet Telecom Ltd. Methods, systems and devices for dynamic context-based routing
US8725820B2 (en) 2010-12-16 2014-05-13 Openet Telecom Ltd. Methods, systems and devices for horizontally scalable high-availability dynamic context-based routing
US8725896B2 (en) 2010-12-16 2014-05-13 Openet Telecom Ltd. Methods, systems and devices for forked routing
ES2637113T3 (es) 2011-01-10 2017-10-10 Infinity Pharmaceuticals, Inc. Procedimientos para preparar isoquinolinonas y formas sólidas de isoquinolinonas
EP2673927A4 (de) 2011-02-08 2016-08-24 Sierra Wireless Inc Verfahren und system zur datenweiterleitung zwischen netzwerkvorrichtungen
CN107450966B (zh) * 2011-03-30 2021-08-06 亚马逊技术公司 减负装置和用于基于减负装置的数据包处理的框架
US8774213B2 (en) 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US8462780B2 (en) 2011-03-30 2013-06-11 Amazon Technologies, Inc. Offload device-based stateless packet processing
US8837483B2 (en) * 2011-04-11 2014-09-16 Alcatel Lucent Mapping private and public addresses
US9565063B2 (en) 2011-04-26 2017-02-07 Openet Telecom Ltd. Systems, devices and methods of synchronizing information across multiple heterogeneous networks
US9450766B2 (en) 2011-04-26 2016-09-20 Openet Telecom Ltd. Systems, devices and methods of distributing telecommunications functionality across multiple heterogeneous domains
US9444692B2 (en) 2011-04-26 2016-09-13 Openet Telecom Ltd. Systems, devices and methods of crowd-sourcing across multiple domains
US8929859B2 (en) 2011-04-26 2015-01-06 Openet Telecom Ltd. Systems for enabling subscriber monitoring of telecommunications network usage and service plans
US9130760B2 (en) 2011-04-26 2015-09-08 Openet Telecom Ltd Systems, devices and methods of establishing a closed feedback control loop across multiple domains
US9565074B2 (en) 2011-04-26 2017-02-07 Openet Telecom Ltd. Systems, devices, and methods of orchestrating resources and services across multiple heterogeneous domains
US9641403B2 (en) 2011-04-26 2017-05-02 Openet Telecom Ltd. Systems, devices and methods of decomposing service requests into domain-specific service requests
CN103930422A (zh) 2011-07-19 2014-07-16 无限药品股份有限公司 杂环化合物及其用途
TWI565709B (zh) 2011-07-19 2017-01-11 英菲尼提製藥股份有限公司 雜環化合物及其用途
WO2013032591A1 (en) 2011-08-29 2013-03-07 Infinity Pharmaceuticals Inc. Heterocyclic compounds and uses thereof
US9397960B2 (en) * 2011-11-08 2016-07-19 Mellanox Technologies Ltd. Packet steering
US9300531B2 (en) 2011-12-12 2016-03-29 Openet Telecom Ltd. Systems, devices, and methods of orchestration and application of business rules for real-time control of subscribers in a telecommunications operator's network
US9173081B2 (en) 2012-01-27 2015-10-27 Openet Telecom Ltd. System and method for enabling interactions between a policy decision point and a charging system
US8886827B2 (en) * 2012-02-13 2014-11-11 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
US9253019B1 (en) 2012-03-09 2016-02-02 Juniper Networks, Inc. Fault tolerance for authentication, authorization, and accounting (AAA) functionality
US8940742B2 (en) 2012-04-10 2015-01-27 Infinity Pharmaceuticals, Inc. Heterocyclic compounds and uses thereof
US9871734B2 (en) 2012-05-28 2018-01-16 Mellanox Technologies, Ltd. Prioritized handling of incoming packets by a network interface controller
US8828998B2 (en) 2012-06-25 2014-09-09 Infinity Pharmaceuticals, Inc. Treatment of lupus, fibrotic conditions, and inflammatory myopathies and other disorders using PI3 kinase inhibitors
US9130885B1 (en) * 2012-09-11 2015-09-08 Mellanox Technologies Ltd. End-to-end cache for network elements
US9481667B2 (en) 2013-03-15 2016-11-01 Infinity Pharmaceuticals, Inc. Salts and solid forms of isoquinolinones and composition comprising and methods of using the same
KR101467942B1 (ko) * 2013-04-24 2014-12-02 주식회사 윈스 고속 어플리케이션 인지 시스템 및 처리 방법
US20160050701A1 (en) * 2013-05-31 2016-02-18 Alexander Pyattaev Efficient user, service, or content representation for device communication
WO2015051241A1 (en) 2013-10-04 2015-04-09 Infinity Pharmaceuticals, Inc. Heterocyclic compounds and uses thereof
ES2900806T3 (es) 2013-10-04 2022-03-18 Infinity Pharmaceuticals Inc Compuestos heterocíclicos y usos de los mismos
JP6701088B2 (ja) 2014-03-19 2020-05-27 インフィニティー ファーマシューティカルズ, インコーポレイテッド Pi3k−ガンマ媒介障害の治療で使用するための複素環式化合物
US10454991B2 (en) 2014-03-24 2019-10-22 Mellanox Technologies, Ltd. NIC with switching functionality between network ports
US20150320755A1 (en) 2014-04-16 2015-11-12 Infinity Pharmaceuticals, Inc. Combination therapies
CN103942161B (zh) * 2014-04-24 2017-02-15 杭州冰特科技有限公司 只读缓存的去冗余系统及方法以及缓存的去冗余方法
US9413659B2 (en) * 2014-06-11 2016-08-09 Cisco Technology, Inc. Distributed network address and port translation for migrating flows between service chains in a network environment
US9708348B2 (en) 2014-10-03 2017-07-18 Infinity Pharmaceuticals, Inc. Trisubstituted bicyclic heterocyclic compounds with kinase activities and uses thereof
US9807204B2 (en) * 2015-03-06 2017-10-31 Ixia Optimized message processing
JP6592595B2 (ja) * 2015-06-25 2019-10-16 エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー コンピューティングネットワークにおけるデータトラフィックを管理する方法およびシステム
US10193905B2 (en) * 2015-09-03 2019-01-29 Samsung Electronics Co., Ltd Method and apparatus for adaptive cache management
US10160761B2 (en) 2015-09-14 2018-12-25 Infinity Pharmaceuticals, Inc. Solid forms of isoquinolinones, and process of making, composition comprising, and methods of using the same
WO2017105417A1 (en) * 2015-12-16 2017-06-22 Hewlett Packard Enterprise Development Lp Dynamic allocation of hash table resources
WO2017161116A1 (en) 2016-03-17 2017-09-21 Infinity Pharmaceuticals, Inc. Isotopologues of isoquinolinone and quinazolinone compounds and uses thereof as pi3k kinase inhibitors
US10919914B2 (en) 2016-06-08 2021-02-16 Infinity Pharmaceuticals, Inc. Heterocyclic compounds and uses thereof
EP3474856B1 (de) 2016-06-24 2022-09-14 Infinity Pharmaceuticals, Inc. Kombinationstherapie
CN107797942B (zh) * 2016-08-31 2020-11-20 深圳市中兴微电子技术有限公司 减少大容量转发表访问次数的方法及其装置
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
US11088744B1 (en) 2020-02-07 2021-08-10 Keysight Technologies, Inc. Methods, systems, and computer readable media for 5G digital beamforming testing
US11323372B2 (en) * 2020-04-21 2022-05-03 Mellanox Technologies Ltd. Flexible steering
CN111478855B (zh) * 2020-06-23 2020-09-18 翱捷科技(上海)有限公司 基于LwIP协议栈的网络设备快速转发的方法及系统
US11398979B2 (en) 2020-10-28 2022-07-26 Mellanox Technologies, Ltd. Dynamic processing trees
JP7529270B2 (ja) * 2021-02-08 2024-08-06 Necプラットフォームズ株式会社 ネットワーク装置、パケット処理方法、及びプログラム
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
WO2023018552A1 (en) * 2021-08-11 2023-02-16 Cisco Technology, Inc. Application awareness in a data network
US11924160B2 (en) 2021-08-11 2024-03-05 Cisco Technology, Inc. Application awareness in a data network with network address translation
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
US6233702B1 (en) * 1992-12-17 2001-05-15 Compaq Computer Corporation Self-checked, lock step processor pairs
US6243667B1 (en) * 1996-05-28 2001-06-05 Cisco Systems, Inc. Network flow switching and flow data export
US6141692A (en) * 1996-07-01 2000-10-31 Sun Microsystems, Inc. Directory-based, shared-memory, scaleable multiprocessor computer system having deadlock-free transaction flow sans flow control protocol
US6353614B1 (en) * 1998-03-05 2002-03-05 3Com Corporation Method and protocol for distributed network address translation
US6182226B1 (en) * 1998-03-18 2001-01-30 Secure Computing Corporation System and method for controlling interactions between networks
US6101589A (en) * 1998-04-01 2000-08-08 International Business Machines Corporation High performance shared cache
US6430184B1 (en) 1998-04-10 2002-08-06 Top Layer Networks, Inc. System and process for GHIH-speed pattern matching for application-level switching of data packets
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6128623A (en) * 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6418476B1 (en) * 1998-06-29 2002-07-09 Nortel Networks, Limited Method for synchronizing network address translator (NAT) tables using the open shortest path first opaque link state advertisement option protocol
US6266705B1 (en) * 1998-09-29 2001-07-24 Cisco Systems, Inc. Look up mechanism and associated hash table for a network switch
US6298411B1 (en) * 1999-01-05 2001-10-02 Compaq Computer Corporation Method and apparatus to share instruction images in a virtual cache
US6587113B1 (en) * 1999-06-09 2003-07-01 3Dlabs Inc., Ltd. Texture caching with change of update rules at line end
US7061500B1 (en) * 1999-06-09 2006-06-13 3Dlabs Inc., Ltd. Direct-mapped texture caching with concise tags
US6650641B1 (en) * 1999-07-02 2003-11-18 Cisco Technology, Inc. Network address translation using a forwarding agent
US6631419B1 (en) * 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US6751583B1 (en) * 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6754784B1 (en) * 2000-02-01 2004-06-22 Cirrus Logic, Inc. Methods and circuits for securing encached information
US6697806B1 (en) * 2000-04-24 2004-02-24 Sprint Communications Company, L.P. Access network authorization
US6754662B1 (en) * 2000-08-01 2004-06-22 Nortel Networks Limited Method and apparatus for fast and consistent packet classification via efficient hash-caching
US7228350B2 (en) * 2000-08-04 2007-06-05 Avaya Technology Corp. Intelligent demand driven recognition of URL objects in connection oriented transactions
US6661799B1 (en) * 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
US6883099B2 (en) * 2001-01-04 2005-04-19 Troika Networks, Inc. Secure virtual interface
US20030009585A1 (en) * 2001-07-06 2003-01-09 Brian Antoine Dynamic policy based routing
US7058642B2 (en) * 2002-03-20 2006-06-06 Intel Corporation Method and data structure for a low memory overhead database

Also Published As

Publication number Publication date
WO2003028341A2 (en) 2003-04-03
GB0407365D0 (en) 2004-05-05
WO2003028341A3 (en) 2003-08-28
US20030065812A1 (en) 2003-04-03
GB2396079A (en) 2004-06-09
DE10297269B4 (de) 2009-06-04
TWI257223B (en) 2006-06-21
HK1062753A1 (en) 2004-11-19
CN1561625A (zh) 2005-01-05
GB2396079A9 (en) 2004-08-17
GB2396079B (en) 2004-12-08
US7269663B2 (en) 2007-09-11
CN1561625B (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE69328666T2 (de) Verfahren und Gerät um eine Anzahl Rechner als einen einzigen Host auf dem Netz erscheinen zu lassen
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE602004011219T2 (de) Anordnung und verfahren zur behandlung von geteilten diensten durch eine adressenumsetzung mit weiterleitung von virtual routes
DE69934192T2 (de) Verfahren und Einrichtung zur Netzverbindung mittels Brücken
DE69531337T2 (de) Weglenkung von Transaktionsnachrichten in einem digitalen Kommunikationsnetz
DE60024228T2 (de) Dynamische zuweisung verkehrsklassen an einer prioritätswarteschlange in einer paketbeförderungsvorrichtung
DE69505010T2 (de) Leitweglenkung in datennetzwerken
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE60217253T2 (de) Centrale und regelbasierte Verkehrsverwaltung
DE60311800T2 (de) Verfahren und vorrichtung zur verbesserung der netzwerkleitweglenkung
DE69830491T2 (de) Cut-through -durchschaltung und paketfilterung in einem rechnersystem
DE69434330T2 (de) Übertragungsvorrichtgung und verfahren
DE68927508T2 (de) Zeitweilige Zustandsbewahrung für einen verteilten Dateidienst
DE69929268T2 (de) Verfahren und System zur Überwachung und Steuerung der Netzzugriffe
DE69838180T2 (de) Verfahren und rechnerprogrammprodukt zur klassifizierung von in einem netzwerkstack verarbeiteten netzübertragungspaketen
DE10022431B4 (de) Integriertes IP-Netzwerk
DE69405405T2 (de) Objektorientiertes, auf regeln basiertes protokollsystem
DE69330675T2 (de) Verbesserte Paketstruktur für Netzschicht
DE112008002550B4 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE69916928T2 (de) Zugriffsverfahren und Server für Netzwerkverzeichnis
DE60009819T2 (de) Netzwerkgerätskonfigurationsverfahren und Vorrichtung
DE60311297T2 (de) Gemeinsame port adressenumsetzung in einem router der als nat & nat-pt gateway agiert
DE69419534T2 (de) Multi-Protokoll Paketvermittlungsnetz
DE60124643T2 (de) Paketenübertragungsmodel mit einem mobilen Knoten und mit einem Router zur Verhinderung von Angriffen basiert auf einer globalen Adresse

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140401