DE60221030T2 - Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern - Google Patents

Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern Download PDF

Info

Publication number
DE60221030T2
DE60221030T2 DE60221030T DE60221030T DE60221030T2 DE 60221030 T2 DE60221030 T2 DE 60221030T2 DE 60221030 T DE60221030 T DE 60221030T DE 60221030 T DE60221030 T DE 60221030T DE 60221030 T2 DE60221030 T2 DE 60221030T2
Authority
DE
Germany
Prior art keywords
packet
encapsulation
procedure
computer program
header
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.)
Expired - Lifetime
Application number
DE60221030T
Other languages
English (en)
Other versions
DE60221030D1 (de
Inventor
Donald Shrewsbury HOOPER
Stephanie Bedford HIRNAK
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 DE60221030D1 publication Critical patent/DE60221030D1/de
Application granted granted Critical
Publication of DE60221030T2 publication Critical patent/DE60221030T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/602Multilayer or multiprotocol switching, e.g. IP switching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/52Multiprotocol routers
    • 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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • 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/12Protocol engines
    • 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/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • 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/22Parsing or analysis of headers

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Diese Erfindung betrifft das Weiterleiten von Netzwerkpaketen zwischen Netzwerkdomänen.
  • Pakete werden durch eine Reihe von Routervorrichtungen geleitet, von denen jede Pakete auf ihrem Weg von einer Quelle zu einem Ziel speichert und weiterleitet. Zum Beispiel kann ein Paket am Anfang ein Internetpaket sein, über einen ATM (asynchronen Übertragungsmoduspfad) weitergeleitet und dann zurück zum Ethernet auf ein gemeinsames Netzwerk zu seinem zugedachten Endempfänger geleitet werden. Während das Netzwerk durch diese Netzwerkdomänen geht, können verschiedene Kopffeldverkapselungen zu dem Paket hinzugefügt oder davon entfernt werden. Manche Verbindungen benutzen Punkt-zu-Punkt-Protokolle (PPP), wohingegen andere das Multiprotocol Label Switching MPLS, das Layer-to-Tunneling-Protokoll LTTP, ATM und so fort benutzen.
  • WO 98/20647 beschreibt eine Anordnung, bei der Mehrparteienkommunikationen in einer digitalen Vorrichtung gemäß einer Datenstruktur gehandhabt werden, bei der ein formatiertes Paket von einem bestimmten Sender in ein gemeinsames Format M umgesetzt wird, das dann erneut in verschiedene Ziele umgesetzt wird. Mit dieser Vorrichtung wird die Handhabung von Gruppenadresspaketen mit kundenspezifischer Schaltung erreicht und Flexibilität erreicht, indem Parameter der Wegeermittlungsroutine im programmierbar veränderbaren Speicher spezifiziert werden können. In einer Variation der Vorrichtung ist die Darstellung einer Gruppe eine kreisförmig verbundene Liste. Jede Partei hat einen Eintrag in der verbundenen Liste, weshalb die gesamte Struktur N untergeordnete Strukturen für N Teilnehmer hat.
  • US-Patentschrift Nr. 5,251,205 betrifft ein Verfahren zum Verbinden eines Netzwerks, so dass TCP/IP- und ISO-8473-Pakete in der gleichen Domäne gesendet werden können. Die Unabhängigkeit der Adressen wird bewahrt: eine Vorrichtung in dem Netzwerk kann nur einer TCP/IP-Adresse zugeordnet sein und andere Vorrichtungen können nur einer ISO-8473-Adresse zugeordnet sein. Darüber hinaus teilen bei solchen Anordnungen alle Router Verbindungszustandsinformation durch Verwenden eines gemeinsamen Verbindungszustandspaketformats (wie dem ISO-10589-Format); auf diese Weise können Wege durch das Netzwerk ungeachtet der Protokolle, die von den Routern entlang des Wegs unterstützt werden, berechnet werden. Gegebenenfalls werden Pakete verkapselt und durch Router weitergeleitet, die in dem Protokoll des Pakets nicht kompetent sind.
  • WO 01/17179 beschreibt eine Netzwerkschaltvorrichtung, Komponenten für solch eine Vorrichtung und Verfahren zum Betreiben solch einer Vorrichtung, in denen die Datenflusshandhabung und Flexibilität durch die Kooperation mehrerer Schnittstellenprozessoren und einer Reihe peripherer Elemente, die auf einem Halbleitersubstrat ausgebildet sind, verbessert werden. Mit dieser Konfiguration bilden die Schnittstellenprozessoren und peripheren Elemente zusammen einen Netzwerkprozessor, der dazu in der Lage ist, mit anderen Elementen, einschließlich einer optionalen Schaltstrukturvorrichtung, bei der Ausführung von Befehlen, die den Datenfluss in dem Netzwerk lenken, zu kooperieren.
  • US-Patentschrift Nr. 5,651,002 betrifft eine Vernetzungsvorrichtung, die eine Paketkopffeldumsetzung zum Umsetzen des Formats eines Kopffeldes, das mit einem Quellennetzwerk verbunden ist, in ein Kopffeldformat, das mit einem Zielnetzwerk eines anderen Typs als dem Quellennetzwerk verbunden ist, bereitstellt. Solch eine Vorrichtung weist einen Speicher zum Speichern eines Adressabschnitts eines empfangenen Paketkopffeldes in einem ersten Block von Pufferstellen und des Restes des empfangenen Pakets in einem zweiten Block von Pufferstellen, die von dem ersten Block von Pufferstellen durch eine Leerstelle beabstandet sind, auf.
  • Die Leerstelle ermöglicht, dass zusätzliche Kopffeldinformation in den Puffer geschrieben werden kann, wenn dies zur Umsetzung notwenig ist. Die Vorrichtung weist ferner einen geteilten Speicher auf, der einen SRAM-Abschnitt und einen DRAM-Abschnitt aufweist, die jedem Puffer zugewiesen sind, wobei sich mindestens der Adressabschnitt eines empfangenen Pakets und die Leerstelle in dem SRAM-Abschnitt befinden.
  • Man wird zu schätzen wissen, dass ein Bedarf an einem generischen Verfahren besteht, das in einem Router umgesetzt werden kann, der eine Vielzahl von Protokolltypen handhaben kann, die keinen übermäßigen Coderaum verbrauchen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß der Erfindung wird ein Verfahren gemäß Anspruch 1, ein Computerprogrammprodukt gemäß Anspruch 19 und eine Vorrichtung gemäß Anspruch 28 bereitgestellt.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines beispielhaften Kommunikationssystems, das einen auf Hardware basierenden mehrfädigen Prozessor einsetzt, der zum Verständnis und zur Umsetzung der Erfindung nützlich ist.
  • 2-1 bis 2-4 sind ein detailliertes beispielhaftes Blockdiagramm eines auf Hardware basierenden mehrfädigen Prozessors aus 1, der zum Verständnis und zur Umsetzung der Erfindung nützlich ist.
  • 3 ist ein Blockdiagramm, das eine funktionelle Anordnung des mehrfädigen Prozessors aus 2 darstellt.
  • 4 ist ein Blockdiagramm, das Datenstrukturen im Speicher darstellt, die für den Prozessor aus 1 benutzt werden.
  • 5 ist ein Blockdiagramm, das Formate zum Weiterleiten von Tabellen darstellt, die in den Tabellen aus 4 benutzt werden.
  • 6 ist ein Flussdiagramm, das einen generischen Paketweiterleitungsprozess darstellt.
  • 7 ist ein Flussdiagramm, das einen alternativen Aspekt des Paketweiterleitungsprozesses aus 6 darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Mit Bezug auf 1 weist ein Kommunikationssystem 10, das für das Verständnis und zur Umsetzung der Erfindung nützlich ist, einen parallelen, auf Hardware basierenden mehrfädigen Prozessor 12 auf. Der auf Hardware basierende mehrfädige Prozessor 12 ist mit einem Bus wie einem PCI-Bus 14, einem Speichersystem 16 und einem zweiten Bus 18 verbunden. Das System 10 ist für Aufgaben, die in parallele untergeordnete Aufgaben oder Funktionen aufgeteilt werden können, besonders nützlich. Der auf Hardware basierende mehrfädige Prozessor 12 ist insbesondere für Aufgaben geeignet, die bandbreitenorientiert und nicht latenzorientiert sind. Der auf Hardware basierende mehrfädige Prozessor 12 weist eine Vielzahl von Mikromaschinen 22 auf, die jeweils gleichzeitig aktiv und auf einer Vielzahl von hardwaregesteuerten Fäden arbeiten können, die unabhängig an einer Aufgabe arbeiten.
  • Der auf Hardware basierende mehrfädige Prozessor 12 weist auch eine zentrale Steuerung 20 auf, die das Laden der Mikrocodesteuerung für andere Ressourcen des auf Hardware basierenden mehrfädigen Prozessors 12 unterstützt und andere Funktionen des Universalrechnertyps wie die Handhabung von Protokollen, Ausnahmen, zusätzliche Unterstützung für die Paketverarbeitung ausführt, wobei die Mikromaschinen die Pakete für eine detailliertere Verarbeitung wie bei Grenzbedingungen weitergeben. In einer Ausführungsform ist der Prozessor 20 eine auf Strong Arm® basierende Architektur. Der Universalmikroprozessor 20 hat ein Betriebssystem. Durch das Betriebssystem kann der Prozessor 20 Funktionen aufrufen, um auf den Mikromaschinen 22a bis 22f zu laufen. Der Prozessor 20 kann jedes beliebige unterstützte Betriebssystem, vorzugsweise ein Echtzeitbetriebssystem wie das Echtzeitbetriebssystem MicrosoftNT, VXWorks benutzen.
  • Der auf Hardware basierende mehrfädige Prozessor 12 weist auch mehrere Funktionsmikromaschinen 22a bis 22f auf. Die funktionellen Mikromaschinen (Mikromaschinen) 22a bis 22f verwalten mehrere Programmzähler in Hardware und Zustände, die mit den Programmzählern verbunden sind. Tatsächlich können mehrere Sätze von Fäden auf jeder der Mikromaschinen 22a bis 22f gleichzeitig aktiv sein, während jeweils nur eine zu einem gegebenen Zeitpunkt tatsächlich in Betrieb ist.
  • In einer Ausführungsform gibt es sechs Mikromaschinen 22a bis 22f, wie dargestellt. Jede Mikromaschine 22a bis 22f hat Leistungsfähigkeiten zum Verarbeiten von vier Hardwarefäden. Die sechs Mikromaschinen 22a bis 22f arbeiten mit gemeinsam benutzten Ressourcen, einschließlich des Speichersystems 16 und der Busschnittstellen 24 und 28. Das Speichersystem 16 weist eine synchrone dynamische wahlfreie Zugriffsspeicher (Synchronous Dynamic Random Access Memory = SDRAM)-Steuerung 26a und eine statische wahlfreie Zugriffsspeicher (Static Random Access Memory = SRAM)-Steuerung 26b auf. Der SDRAM-Speicher 16a und die SDRAM-Steuerung 26a werden in der Regel zum Verarbeiten großer Datenmengen, zum Beispiel zum Verarbeiten von Netzwerknutzdaten aus Netzwerkpaketen benutzt. Die SRAM-Steuerung 26b und der SRAM-Speicher 16b werden in einer Vernetzungsanwendung für Aufgaben mit geringer Latenz und schnellem Zugriff, zum Beispiel zum Zugreifen auf Nachschlagtabellen, Speicher für den Kernprozessor 20 und so fort benutzt.
  • Die sechs Mikromaschinen 22a bis 22f greifen basierend auf den Eigenschaften der Daten entweder auf den SDRAM 16a oder SRAM 16b zu. Folglich werden Daten mit geringer Latenz und geringer Bandbreite in dem SRAM gespeichert und daraus abgerufen, wohingegen Daten mit höherer Bandbreite, für welche die Latenz nicht so bedeutend ist, in dem SDRAM gespeichert und daraus abgerufen werden. Die Mikromaschinen 22a bis 22f können Speicherreferenzbefehle entweder für die SDRAM-Steuerung 26a oder für die SRAM-Steuerung 16b ausführen.
  • Vorteile der Hardwaremehrfädigkeit können durch SRAM- oder SDRAM-Speicherzugriffe erläutert werden. Als ein Beispiel bewirkt ein SRAM-Zugriff, der von einem Faden_0 angefordert wird, von einer Mikromaschine, dass die SRAM-Steuerung 26b einen Zugriff auf den SRAM-Speicher 16b initiiert. Die SRAM-Steuerung steuert die Arbitration für den SRAM-Bus, greift auf den SRAM 16b zu, ruft die Daten aus dem SRAM 16b ab und sendet Daten zurück an eine anfordernde Mikromaschine 22a bis 22b. Wenn die Mikromaschine, zum Beispiel 22a, während eines SRAM-Zugriffs nur einen einzigen Faden hätte, der arbeiten könnte, wäre diese Mikromaschine inaktiv, bis Daten aus dem SRAM zurückgesendet werden. Durch den Einsatz von Hardwarekontextauslagerung innerhalb jeder der Mikromaschinen 22a bis 22f bewirkt die Hardwarekontextauslagerung, dass andere Kontexte mit einzigartigen Programmzählern in der gleichen Mikromaschine ausgeführt werden. Folglich kann ein anderer Faden, zum Beispiel Faden_1, arbeiten, während der erste Faden, zum Beispiel Faden_0, auf die Rücksendung der Lesedaten wartet. Während der Ausführung kann Faden_1 auf den SDRAM-Speicher 16a zugreifen. Während Faden_1 auf der SDRAM-Einheit arbeitet und Faden_0 auf der SRAM-Einheit arbeitet, kann nun ein neuer Faden, zum Beispiel Faden_2, in der Mikromaschine 22a arbeiten. Faden_2 kann für eine bestimmte Zeit arbeiten, bis er auf den Speicher zugreifen oder einen anderen Vorgang mit langer Latenz wie den Zugriff auf eine Busschnittstelle ausführen muss. Folglich kann der Prozessor 12 gleichzeitig einen Busvorgang, SRAM-Vorgang und SDRAM-Vorgang, die alle von einer Mikromaschine 22a ausgeführt oder bearbeitet werden, und einen weiteren Faden aufweisen, der zur Verarbeitung von mehr Arbeit in dem Datenweg verfügbar ist.
  • Die Hardwarekontextauslagerung synchronisiert auch die Vollendung von Aufgaben. Zum Beispiel könnten zwei Fäden auf die gleiche gemeinsame Ressource, zum Beispiel SRAM, treffen. Jede dieser getrennten funktionellen Einheiten, zum Beispiel die FBUS-Schnittstelle 28, die SRAM-Steuerung 26a und die SDRAM-Steuerung 26b, melden ein Flag zurück, das die Vollendung eines Vorgangs signalisiert, wenn sie eine angeforderte Aufgabe von einer der Mikromaschinen-Fadenkontexte vollenden. Wenn das Flag von der Mikromaschine empfangen wird, kann die Mikromaschine bestimmen, welcher Faden aktiviert wird.
  • Ein Beispiel einer Anwendung für den auf Hardware basierenden mehrfädigen Prozessor 12 ist ein Netzwerkprozessor. Als ein Netzwerkprozessor ist der auf Hardware basierende mehrfädige Prozessor 12 mit Netzwerkvorrichtungen wie einer Medienzugriffssteuervorrichtung, zum Beispiel einer Vorrichtung 10/100BaseT Octal MAC 13a oder einer Gigabit-Ethernet-Vorrichtung 13b verbunden. Im Allgemeinen kann der Netzwerkprozess mit jeder beliebigen Art von Kommunikationsvorrichtung oder Schnittstelle verbunden sein, die große Datenmengen empfängt/sendet. Das Kommunikationssystem 10, das in einer Vernetzungsanwendung funktioniert, könnte mehrere Netzwerkpakete von den Vorrichtungen 13a, 13b empfangen und diese Pakete parallel verarbeiten. Mit dem auf Hardware basierenden mehrfädigen Prozessor 12 kann jedes Netzwerkpaket unabhängig verarbeitet werden. Ein anderes Beispiel zur Verwendung des Prozessors 12 ist eine Druckmaschine für einen Postscript-Prozessor oder ein Prozessor für ein untergeordnetes Speichersystem, das heißt, einen RAID-Plattenspeicher. Eine weitere Verwendung ist eine Anpassungsmaschine. In der Sicherheitsbranche zum Beispiel erfordert das Aufkommen des elektronischen Handels die Verwendung elektronischer Anpassungsmaschinen, um die Bestellungen zwischen Käufern und Verkäufern anzupassen. Diese und andere parallele Aufgabentypen können auf dem System 10 erreicht werden.
  • Der Prozessor 12 weist eine Busschnittstelle 28 auf, die den Prozessor mit dem zweiten Bus 18 verbindet. Die Busschnittstelle 28 verbindet den Prozessor 12 in einer Ausführungsform mit dem so genannten FBUS 18 (FIFO-Bus). Die FBUS-Schnittstelle 28 ist für die Steuerung und Verbindung des Prozessors 12 mit dem FBUS 18 verantwortlich. Der FBUS 18 ist ein 64 Bit breiter FIFO-Bus, der zurzeit als der beste Bus für Medienzugriffssteuerungs-(MAC) Vorrichtungen an Akzeptanz gewinnt.
  • Der Prozessor 12 weist eine zweite Schnittstelle, zum Beispiel eine PCI-Busschnittstelle 24 auf, die andere Systemkomponenten, die sich auf dem PCI 14-Bus befinden, mit dem Prozessor 12 verbindet. Die PCI-Busschnittstelle 24 stellt dem Speicher 16, zum Beispiel dem SDRAM-Speicher 16a, einen Hochgeschwindigkeitsdatenweg 24a bereit. Durch diesen Weg können Daten durch den PCI-Bus 14 über Direktspeicherzugriffs (DMA)-Übertragungen schnell aus dem SDRAM 16a bewegt werden. Außerdem unterstützt die PCI-Busschnittstelle 24 Ziel- und Master-Vorgänge. Zielvorgänge sind Vorgänge, bei denen Slave-Vorrichtungen auf dem Bus 14 durch Lese- und Schreibvorgänge, die als ein Slave-zu-Ziel-Vorgang bedient werden, auf SDRAMs zugreifen. Bei Master- Vorgängen sendet der Prozessorkern 20 Daten direkt an die PCI-Schnittstelle 24 oder empfängt sie direkt von dieser.
  • Jede der funktionellen Einheiten ist mit einem oder mehreren internen Bussen verbunden. Der Prozessor weist einen AMBA-Bus auf, der den Prozessorkern 20 mit der Speichersteuerung 26a, 26c und mit einem AMBA-Umsetzer 30 verbindet, der unten beschrieben wird. Der Prozessor weist auch einen privaten Bus 34 auf, der die Mikromaschineneinheiten mit der SRAM-Steuerung 26b, dem AMBA-Umsetzer 30 und der FBUS-Schnittstelle 28 verbindet. Ein Speicherbus 38 verbindet die Speichersteuerung 26a, 26b mit den Busschnittstellen 24 und 28 und dem Speichersystem 16, das den Flash-ROM 16c aufweist, der für Hochfahrvorgänge und so fort benutzt wird.
  • Mit Bezug auf 2-1 bis 2-4 ist ein detailliertes beispielhaftes Blockdiagramm eines auf Hardware basierenden mehrfädigen Prozessors dargestellt, der zum Verständnis und zur Umsetzung der Erfindung nützlich ist, wobei jede der Mikromaschinen 22a bis 22f einen Arbiter aufweist, der Flags untersucht, um die verfügbaren zu verarbeitenden Fäden zu bestimmen. Jeder beliebige Faden von jeder beliebigen der Mikromaschinen 22a bis 22f kann auf die SDRAM-Steuerung 26a, SDRAM-Steuerung 26b oder FBUS-Schnittstelle 28 zugreifen. Die Speichersteuerungen 26a und 26b weisen jeweils mehrere Warteschlangen auf, um ausstehende Speicherreferenzanforderungen zu speichern. Die Warteschlangen behalten entweder die Reihenfolge der Speicherreferenzen bei oder ordnen Speicherreferenzen an, um die Speicherbandbreite zu optimieren. Wenn zum Beispiel ein Faden_0 nicht von einem Faden_1 abhängt oder mit diesem in Beziehung steht, gibt es keinen Grund dafür, dass Faden_1 und 0 ihre Speicherreferenzen bezüglich der SRAM-Einheit nicht in Unordnung vollenden können. Die Mikromaschinen 22a bis 22f erteilen Speicherreferenzanforderungen an die Speichersteuerungen 26a und 26b. Die Mikromaschinen 22a bis 22f über schwemmen die untergeordneten Speichersysteme 26a und 26b mit genug Speicherreferenzvorgängen, so dass die untergeordneten Speichersysteme 26a und 26b für den Betrieb des Prozessors 12 zum Flaschenhals werden.
  • Wenn das untergeordnete Speichersystem 16 mit Speicheranforderungen überschwemmt wird, die von unabhängiger Natur sind, kann der Prozessor 12 eine Speicherreferenzsortierung ausführen. Die Speicherreferenzsortierung verbessert die erreichbare Speicherbandbreite. Die Speicherreferenzsortierung, wie unten beschrieben, verringert die Totzeit oder eine Blase, die bei Zugriffen auf den SRAM auftritt. Mit Speicherreferenzen auf den SRAM ruft das Umschalten der Stromrichtung auf Signalleitungen zwischen Lese- und Schreibvorgängen eine Blase oder eine Totzeit hervor, die darauf wartet, dass sich der Strom auf Leitern absetzt, die den SRAM 16b mit der SRAM-Steuerung 26b verbinden.
  • Das heißt, die Treiber, die den Strom auf dem Bus antreiben, müssen sich vor dem Wechsel der Zustände absetzen. Folglich können sich wiederholende Zyklen eines Lesevorgangs gefolgt von einem Schreibvorgang die Spitzenbandbreite verschlechtern. Eine Speicherreferenzsortierung ermöglicht, dass der Prozessor 12 Referenzen bezüglich des Speichers organisiert, so dass lange Reihungen von Lesevorgängen von langen Reihungen von Schreibvorgängen gefolgt werden können. Dies kann benutzt werden, um die Totzeit in der Pipeline zu minimieren und eine näher am Maximum liegende verfügbare Bandbreite effektiv zu erreichen. Eine Referenzsortierung trägt zur Verwaltung paralleler Hardwarekontextfäden bei. Auf dem SDRAM ermöglicht die Referenzsortierung das Verbergen von Vorladungen von einer Bank zu einer anderen Bank. Insbesondere wenn das Speichersystem 16b in eine ungerade Bank und eine gerade Bank organisiert ist, kann die Speichersteuerung mit dem Vorladen der geraden Bank beginnen, während der Prozessor auf der ungeraden Bank arbeitet. Das Vorladen ist möglich, wenn sich die Speicherreferenzen zwischen ungeraden und geraden Banken abwechseln. Durch Ordnen von Speicherreferenzen, um zwischen Zugriffen auf entgegengesetzte Banken zu wechseln, verbessert der Prozessor 12 die SDRAM-Bandbreite.
  • Die FBUS-Schnittstelle 28 unterstützt Sende- und Empfangsflags für jeden Anschluss, den eine MAC-Vorrichtung unterstützt, zusammen mit einem Unterbrechungsflag, das anzeigt, wenn ein Dienst gewährleistet ist. Die FBUS-Schnittstelle 28 weist auch eine Steuerung 28a auf, die eine Kopffeldverarbeitung hereinkommender Pakete aus dem FBUS 18 ausführt. Die Steuerung 28a extrahiert die Paketkopffelder und führt einen mikroprogrammierbaren Quelle/Ziel/Protokoll-Streuspeichersuchlauf (der zum Adressglätten benutzt wird) in SRAM aus. Wenn die Streuspeicherung nicht erfolgreich ist, wird das Paketkopffeld zur weiteren Verarbeitung an den Prozessorkern 20 gesendet. Die FBUS-Schnittstelle 28 unterstützt die folgenden internen Datentransaktionen:
    • FBUS-Einheit (über AMBA-Bus) zu/von Prozessorkern.
    • FBUS-Einheit (über privaten Bus) zu/von SRAM-Einheit.
    • FBUS-Einheit (über Mbus) zu/von SDRAM.
  • Der FBUS 18 ist ein standardgemäßer Industriebus und weist einen Datenbus, der zum Beispiel 64 Bit breit ist, und eine Seitenbandsteuerung zur Adress- und Lese-/Schreibsteuerung auf. Die FBUS-Schnittstelle 28 stellt die Fähigkeit bereit, mit Hilfe einer Reihe von Eingabe- und Ausgabe-FIFOs 29a bis 29b große Datenmengen einzugeben. Aus den FIFOs 29a bis 29b rufen die Mikromaschinen 22a bis 22f Daten ab oder befehlen der SDRAM-Steuerung 26a, Daten aus einem Empfangs-FIFO, in dem Daten aus einer Vorrichtung auf einem Bus 18 gekommen sind, in die FBUS-Schnittstelle 28 zu bewegen. Die Daten können durch die Speichersteuerung 26a über einen Direktspeicherzugriff an den SDRAM-Speicher 16a gesendet werden. In ähnlicher Weise können die Mikromaschinen Daten von dem SDRAM 26a zu der Schnittstelle 28 zu dem FBUS 18 über die FBUS-Schnittstelle 28 bewegen.
  • Datenfunktionen sind unter den Mikromaschinen verteilt. Die Verbindungsfähigkeit zu dem SRAM 26a, SDRAM 26b und FBUS 28 wird über Befehlsanforderungen ausgeführt. Eine Befehlsanforderung kann eine Speicheranforderung oder eine FBUS-Anforderung sein. Zum Beispiel kann eine Befehlsanforderung Daten aus einem Register, das sich in einer Mikromaschine 22a befindet, zu einer gemeinsamen Ressource, zum Beispiel einer SDRAM-Stelle, SRAM-Stelle, einem Flashspeicher oder einer MAC-Adresse bewegen. Die Befehle werden an jede der funktionellen Einheiten und die gemeinsamen Ressourcen gesendet. Allerdings brauchen die gemeinsamen Ressourcen keine lokale Pufferung der Daten zu verwalten. Vielmehr greifen die gemeinsamen Ressourcen auf verteilte Daten zu, die sich in den Mikromaschinen befinden. Dies befähigt die Mikromaschinen 22a bis 22f dazu, einen lokalen Zugriff auf Daten zu haben anstatt für einen Zugang auf einem Bus zu vermitteln und eine Auseinandersetzung für den Bus zu riskieren. Mit Hilfe dieses Merkmals gibt es keinerlei Zyklusverzögerung, um auf Daten zu warten, die sich in den Mikromaschinen 22a bis 22f befinden.
  • Die Datenbusse, zum Beispiel der AMBA-Bus 30, SRAM-Bus 34 und SDRAM-Bus 38, die die gemeinsamen Ressourcen, zum Beispiel die Speichersteuerungen 26a und 26b verbinden, weisen eine ausreichende Bandbreite auf, so dass keine internen Flaschenhälse vorliegen. Um Flaschenhälse zu vermeiden, weist der Prozessor 12 folglich eine Bandbreitenanforderung auf, bei der jede der funktionellen Einheiten mit mindestens dem Doppelten der maximalen Bandbreite der internen Busse bereitgestellt wird. Als ein Beispiel kann der SDRAM einen 64 Bit breiten Bus bei 83 MHz betreiben. Der SRAM-Datenbus könnte getrennte Lese- und Schreibbusse aufweisen, zum Beispiel könnte er ein 32 Bit breiter Lesebus, der bei 166 MHz läuft, und ein 32 Bit breiter Schreibbus sein, der bei 166 MHz läuft. Im Wesentlichen bedeutet dies 64 Bit, die bei 166 MHz laufen, was effektiv dem Doppelten der Bandbreite des SDRAM entspricht.
  • Der Kernprozessor 20 kann auch auf die gemeinsamen Ressourcen zugreifen. Der Kernprozessor 20 weist eine direkte Verbindung zu der SDRAM-Steuerung 26a, zu der Busschnittstelle 24 und über den Bus 32 zu der SRAM-Steuerung 26b auf. Um jedoch auf die Mikromaschinen 22a bis 22f zuzugreifen und Register zu übertragen, die sich bei irgendeiner der Mikromaschinen 22a bis 22f befinden, greift der Kernprozessor 20 auf die Mikromaschinen 22a bis 22f über den AMBA-Umsetzer 30 über den Bus 34 zu. Der AMBA-Umsetzer 30 kann sich physikalisch in der FBUS-Schnittstelle 28 befinden, ist jedoch logisch eigenständig. Der AMBA-Umsetzer 30 führt eine Adressumsetzung zwischen FBUS-Mikromaschinen-Übertragungsregisterstellen und Kernprozessoradressen (das heißt, AMBA-Bus) aus, so dass der Kernprozessor 20 auf Register zugreifen kann, die zu den Mikromaschinen 22a bis 22c gehören.
  • Der Prozessorkern 20 weist einen RISC-Kern 50 auf, der in einer fünfstufigen Pipeline umgesetzt ist, die eine Einzyklusverschiebung eines Operanden oder zweier Operanden in einem einzigen Zyklus ausführt, stellt eine Multiplikationsunterstützung und 32-Bit-Barrel-Verschiebungsunterstützung bereit. Der RISC-Kern 50 ist eine standardgemäße Strong Arm®-Architektur, ist jedoch aus Gründen der Leistungsfähigkeit mit einer fünfstufigen Pipeline umgesetzt. Der Prozessorkern 20 weist auch einen 16-Kilobyte-Befehlscache 52, einen 8-Kilobyte-Datencache 54 und einen Vorzugriffsstrompuffer 56 auf. Der Kernprozessor 20 führt parallel zu Speicherschreibvorgängen und Befehlsabrufen arithmetische Operationen aus. Der Kernprozessor 20 ist mit anderen funktionellen Einheiten über den ARM-definierten AMBA-Bus verbunden. Der AMBA-Bus ist ein bidirektionaler 32-Bit-Bus 32.
  • Mit Bezug auf 3 ist der Mehrprozessor 12 bei der Ausführung von Netzwerkwegeermittlungsfunktionen dargestellt. In einem Beispiel treten ein asynchroner Transfermodus (ATM), Ethernet und andere Pakettypen durch die Netzwerkschnittstelle in MAC-Vorrichtungen ein und werden an den Netzwerkprozessor 12 gesendet. Diese Pakete werden in einer Anwendung auf einem Universalmikroprozessor 20 oder auf einem anderen Prozessor verarbeitet, der durch die PCI-Busschnittstelle (nicht dargestellt) verbunden ist. Zum Empfang und zur Übertragung solcher Pakete benutzt die Anwendung, die auf diesem Prozessor 20 oder dem Prozessor, der durch den PCI-Bus verbunden ist, einen Netzwerkstapel 72, der Netzwerkverwaltungs-, Steuerungs- und Signalisierungsprozesse 74 aufweist, um Netzwerkkommunikationen zu verwalten.
  • Der Netzwerkstapel 72 und die Anwendung laufen in dem Prozessor 20, der die Mikromaschinen steuert, oder einem anderen Prozessor, der mit dem PCI-Bus verbunden ist. Die Empfangs-, Sende- und Datenweiterleitungswege repräsentieren den Transport von Paketen durch den Prozessor 12. Die Verwaltungssteuerung, Signalisierung und der Netzwerkstapel 72 sind gewöhnlich nicht an der Datenweiterleitung beteiligt. Im Wesentlichen empfängt und sendet der Prozessor 20. Der Prozessor 20 erzeugt neue Pakete, die über das Netzwerk gesendet werden. Der Prozessor 20 kann im Ausnahmefall an der Datenweiterleitung beteiligt sein. Dies würde sehr ungewöhnliche Pakete betreffen, die möglicherweise einer speziellen Handhabung und komplexen Verarbeitung bedürfen.
  • Für Datenweiterleitungsprozesse werden die Mikromaschinen 22a bis 22f benutzt. In einigen Fällen kann die Datenweiterleitung auf der Ebene des Universalprozessors 20 stattfinden. Die Signale Init sind die Schnittstelle des Pro grammierers zur Initialisierung von Mikromaschinencode. Das Signal Fini wird zur Beendigung (um Steuerinformation in einen bekannten Zustand zu versetzen) benutzt. Die Mikromaschinen 22a bis 22f stellen schnelle Speicher- und Weiterleitungsfähigkeiten bereit. Die Maschinen benutzen einen mehrschichtigen generischen Suchlaufprozess, der mit Hilfe paralleler, hardwaregestützter Fäden des Prozesses eine Validierung, Klassifizierung, Kontrolle und Filterung ausführt. Ausnahmen und Steuerpakete werden zur Verarbeitung bei dem Netzwerkstapel 72 an den Prozessor 20 geleitet. Ein ternärer Netzwerkstapel (nicht dargestellt) kann chipextern bei einem Host über den PCI-Anschluss oder Vorrichtungsanschluss angeordnet sein. Dies kann benutzt werden, um den Prozessor 20 oder die zentralisierte Verwaltung und Steuerung für einen Ort zu entlasten. In einigen Ausführungsformen ist die Mikromaschine ein kompakter RISC-Prozessor und kann einen begrenzten Befehlsraum haben. Aus diesem Grund und aus anderen Gründen ist es wünschenswert, die Befehlscodegröße zu verringern, wenn eine Vielzahl von Protokollen ausgeführt wird. Der Netzwerkprozessor 12 setzt einen generischen Weiterleitungsprozess um, der benutzt werden kann, um verschiedene Protokolltypen (sowohl existierende als auch zukünftige Typen) zu handhaben, ohne die Befehlsspeichergrenzen zu überschreiten.
  • Mit Bezug auf 4 ist eine Verwaltungsanordnung 80 zum Weiterleiten von Tabellenstrukturen 90 dargestellt, die im Speicher gespeichert sind. Die Weiterleitungstabellenstrukturverwaltung 80 weist eine Steuer- und Verwaltungsstruktur 82 auf, die eine Netzwerkstapelschnittstelle 84 und Tabellenverwalter 86 aufweist. Die Tabellenverwalter 86 verwalten Wegeermittlungstabellen 90, die im SRAM gespeichert sind, und können mehrere Tabellen aufweisen, wie die in 4 dargestellten, die eine Schicht-4-Verbindungstabelle 92, eine Schicht-3-Zieltabelle 94, eine Schicht-2-Brückentabelle 96 und eine Schicht-2-Verbindungstabelle 98 aufweisen. Außerdem können Datenstrukturen, die im Speicher gespeichert sind, einen Paketpuffer 100 aufweisen, der im DRAM gespeichert ist. Die Mikromaschinen, die als Prozessoren zur Paketdatenweiterleitung fungieren, rufen aus den Wegeermittlungstabellen 90 im SRAM Information ab und speichern und leiten die Paketinformation aus dem Paketpuffer im DRAM weiter. Die Vielzahl von Tabellen 90 wird von dem Steuerverwaltungsprozessor 20 eingerichtet. Zum Beispiel kann eine Schicht-2-Verbindungstabelle 96 für virtuelle ATM-Schaltungen, Rahmenrelaisverbindungs-MPLS-Kennsätze oder andere Verbindungen auf niedriger Stufe benutzt werden. Eine Schicht-2-Brückentabelle 96 könnte zur Ethernetüberbrückung benutzt werden. Eine Schicht-3-Zieltabelle 94 könnte basierend auf einer Ziel-IP-Adresse zur Internetprotokoll (IP)-Weiterleitung benutzt werden. Die Schicht-4-Verbindungstabelle 92 könnte basierend auf Quellen- und Zielanschlüssen, Adressen und Protokollen zur IP-Weiterleitung benutzt werden. All diese Tabellen können erfordern, dass das Paket entkapselt oder verkapselt wird.
  • Sobald die Tabellen 90 in einer im Allgemeinen herkömmlichen Weise mit Weiterleitungsinformation versehen sind, können Paketdatenweiterleitungsprozessoren Pakete empfangen, Tabellensuchläufe ausführen, um Information zu erhalten, und Pakete je nach Erfordernis des Tabelleneintrags umwandeln. Der Steuerverwaltungsprozess richtet die Tabellen 90 zum Zwecke der Verkapselung und Entkapselung mit einem gemeinsamen Format ein.
  • Mit Bezug auf 5 sind beispielhafte Tabelleneinträge, von denen ein untergeordneter Satz in jeder der Tabellen 90 enthalten ist, dargestellt. Die Tabelleneinträge weisen die folgenden Felder auf:
  • Weiterleitungstabellenformat
  • Entkapselungs-Flag. Zeigt an, ob die Bytes von dem Paket abgezogen werden sollten. Wenn das Flag bestätigt wird, befindet sich die Anzahl abzuziehender Bytes in dem Entkapselungs-Bytezählfeld.
  • Entkapselung-zu-Schicht. Dieses Feld spezifiziert die Entkapselung von Kopffeldschichten bis zu der spezifizierten Schicht. Die Länge der Schicht und somit die Entkapselung werden durch syntaktisches Analysieren des Paketkopffeldes bestimmt.
  • Entkapselungs-Bytezählung. Dieses Feld spezifiziert die Anzahl von Bytes, die aus der Vorderseite des Pakets zu entfernen sind. Eine Entkapselung wird durch Einstellen des Paketstartversatzes in dem Paketpuffer ausgeführt.
  • Derzeitige Verkapselung. Dieses Feld spezifiziert einen Identifikator des derzeitigen Paketverkapselungstyps.
  • Verkapselungs-Flag. Zeigt an, ob dem Paket Bytes vorangestellt werden sollen. Wenn dieses Flag bestätigt wird, dann befindet sich die Anzahl von Bytes in dem Verkapselungs-Bytezählfeld und die zu verkapselnden Bytes werden in dem Verkapselungs-Kopffeld verkapselt.
  • Verkapselungs-Bytezählung. Anzahl von Bytes, die dem Paket vorangestellt werden sollen.
  • Verkapselungskopffeld. Die tatsächlichen Bytes, die vorangestellt werden sollen.
  • Nächster Tabellentyp. Falls nicht null, zeigt dies an, dass ein weiterer Suchlauf erforderlich ist. Dies ergibt den Tabellentyp. Zum Beispiel den Schicht-3-Wegeermittlungs- oder Schicht-4-Verbindungstabellentyp. Ein Schicht-3-Wegeermittlungssuchlauf würde mit Hilfe der Ziel-IP-Adresse einen Suchlaufalgorithmus mit Übereinstimmung des längsten Präfixes benutzen. Ein Schicht-4-Verbindungssuchlauf würde unter Verwendung von Quellen- und Zieladressen, Quellen- und Zielanschlüssen und Protokoll einen 104-Bit-Hash-Algorithmus benutzen.
  • Nächste Tabellenadresse. Es kann eine Vielzahl nächster Tabellen und eine Vielzahl nächster Tabellen des gleichen Typs geben. Dieses Feld spezifiziert die Basisadresse der Tabelle.
  • Die Flags werden durch den Verwaltungsprozess gesetzt oder gelöscht. Signalisierungs- und Einrichtungsverbindungen sind Teil des Netzwerksystems, die bestimmen werden, dass ein bestimmter Weg durch das Netzwerk einen Wechsel des Kopffeldes erfordert. Es kann viele Gründe geben, warum ein Kopffeld gewechselt werden kann. Gewöhnlich wird ein Kopffeldwechsel benutzt, wenn das Protokoll von einer Netzwerkdomäne zu einer anderen wechselt.
  • Mit Bezug auf 6 ist ein Prozess 110 zum Verkapseln/Entkapseln generischer Protokolle dargestellt. Anfangs empfängt 112 eine der Mikromaschinen 22a bis 22f ein Paket von der Netzwerkschnittstelle. Das Paket besteht aus einem oder mehreren Kopffeldern, gefolgt von Nutzdaten. Die Mikromaschine, zum Beispiel 22a, kopiert den Nutzdatenabschnitt des Pakets in einen Paketpuffer im DRAM und kann das Paket bei einem Versatz in dem Puffer anordnen, um Raum für neue Kopffelder zu schaffen, die dem Paket zur Paketweiterleitung vorangestellt werden könnten. Der Paketversatzparameter für dieses Paket wird auf einen Standardwert festgelegt, der bei dem Versatz in den Puffer bestimmt wird. Die Mikromaschine liest 114 das erste Kopffeld des Pakets und führt einen Schicht-2-Suchlauf aus. Der Schicht-2-Suchlauf liest die Tabelle Schicht-2-Brückentabelle und/oder Schicht-2-Verbindungstabelle. Die Tabellen senden verschiedene Parameter wie Entkapselungs- oder Verkapselungs-Flags zurück. Der Prozess 110 wird bestimmen 116, ob die Entkapselungs- oder Verkapselungs-Flags gesetzt sind. Wenn die Entkapselungs- und Verkapselungs-Flags gesetzt sind, addiert 118 der Prozess die Entkapselungs-Bytezählung zu dem Paketstartversatz und subtrahiert 120 die Verkapselungs-Bytezählung von dem Paketstartversatz und stellt die Verkapselungsbytes dem Paket voran. Der Prozess 110 überprüft 122, ob eine nächste zu untersuchende Tabelle vorhanden ist, indem ein leeres Feld in einer derzeit gelesenen Tabelle betrachtet wird. Wenn es eine nächste Tabelle gibt, analysiert der Prozess 110 das nächste Kopffeld 124 syntaktisch, ruft die nächste Tabelle ab und liest sie. Der Prozess 110 führt den Suchlauf fort, um die gesetzten Entkapselungs- oder Verkapselungs-Flags zu überprüfen.
  • Falls der Prozess jedoch nicht bestimmt hat, dass die Entkapselungs- und Verkapselungs-Flags gesetzt wurden (116, oben), würde er bestimmen 130, ob das Verkapselungs-Flag oder das Entkapselungs-Flag gesetzt wurden 132. Wenn das Verkapselungs-Flag gesetzt wurde, wird er die Verkapselungs-Flag-Bytezählung von dem Anfangsversatz subtrahieren 120 und dem Paket die Verkapselungsbytes voranstellen. Wenn andererseits das Entkapselungs-Flag nur gesetzt wurde 132, addiert 134 der Prozess eine Entkapselungs-Bytezählung zu dem Pufferversatz und überprüft in jedem Fall die nächste Tabelle 112. Wenn der Prozess bestimmt, dass er am Ende der Überprüfung der Tabellen ist, wird er dann das Paket in herkömmlicher Weise klassifizieren und weiterleiten 136. Das heißt, die "Nein"-Bedingung zeigt an, dass der Prozess klassifizieren und weiterleiten kann. Das Weiterleiten des Kopffeldes kann bedeuten, dass die Mikromaschine das Kopffeld nimmt und es an den Prozessor 20 oder woandershin sendet, so dass es mit den Nutzdaten neu angeordnet werden kann. Das Weiterleiten des Kopffeldes könnte auch das Weiterleiten der Pakete usw. betreffen.
  • Mit Bezug auf 7 werden außerdem Byteverbreitungszählungen spezifiziert, die aus der Nachschlagtabelle erhalten werden. Das Entkapselungs-zu-Schicht-Feld kann in der Nachschlagtabelle gesetzt sein. Dieses Feld spezifiziert, dass der Vorderabschnitt eines Pakets bis zu einer bestimmten Schicht entkapselt werden soll. Bekanntermaßen sind Pakete in Protokollschichten definiert, die in dem siebenschichtigen OSI (Open Systems Interconnect)-Netzwerkprotokoll benutzt werden. Nach Passieren der physikalischen Schicht 1 ist die erste Softwareschicht, die von der Netzwerkprozessorschicht gesehen wird, Schicht 2, die auch als die Verbindungsschicht bezeichnet wird. Die Länge der zu entkapselnden Bytes wird durch syntaktisches Analysieren der Paketschichten vor der Schicht, die der Neustart des Pakets sein soll, bestimmt. Die Länge kann zu dem Paketstartversatz hinzugefügt werden.
  • 7 zeigt eine Variation, wobei die Entkapselungslänge nicht in der Tabelle spezifiziert ist, sondern durch Lesen des Pakets selbst bestimmt wird. Mit anderen Worten wäre dies ein Satz von Routinen, die in die Verarbeitung der verkapselten Ersatzbytezählung von 6 von dem Paket in den Versatz eingefügt würden.
  • Ein Prozess 140 zum Bestimmen dieses Versatzes ist in 7 dargestellt. Zu dem Prozess 140 gehört das Lesen der Tabelle 142, Bestimmen, dass das Entkapselungs-zu-Paketschicht-Bit 144 gesetzt worden ist, und falls es gesetzt worden ist, Abrufen der Länge der zu entfernenden Schicht durch syntaktisches Analysieren des Kopffeldes 146 und Addieren der Länge zu dem Paketstartversatz 148. Wenn die Entkapselungsschicht nicht gesetzt worden ist, dann übergeht der Prozess dies einfach. In jedem Fall kann dieser Prozess dem in Verbindung mit 6 beschriebenen Prozess vorangestellt werden.
  • Eine typische Verwendung eines Entkapselungs-zu-Schicht-Bits ist die Spezifizierung einer Entkapselung bis zu dem Schicht-3-IP-Kopffeld. Wenn die Paketverkapselung ein Multiprotokoll über ein ATM-Netzwerk wie der Standard RFC 1483 ist, wird die Schicht-2-Kopffeldlänge durch syntakti sches Analysieren der Schicht bezüglich des Kopffeldes selbst unter Anwendung der RFC 1483-Längenregeln bestimmt. Wenn die Paketverkapselung jedoch ein klassisches IP ist, wird die Schicht-2-Länge durch Befolgen der klassischen IP-Schichtlängenregeln bestimmt. Die Paketverkapselung kann durch den Anschlusstyp, durch den sie hereinkam, oder durch das vorangestellte benutzerdefinierte Kopffeld aus diesem Anschluss bekannt sein oder von der ersten Nachschlagtabelle in dem derzeitigen Verkapselungsfeld erhalten werden.
  • Anstatt dass jedes Netzwerkprotokoll eine getrennte Protokollumwandlung definiert, stellt diese Technik einen generischen Ansatz bereit. Der Ansatz spart Coderaum und Softwareentwicklungs-Produkteinführungszeit. In einer alternativen Ausführungsform kann diese Technik als eine Softwarebibliothekenroutine, zum Beispiel ein generischer Softwarebildungsblock zur Entkapselung/Verkapselung umgesetzt werden, wobei Kunden ihre firmeneigene Kopffeldverkapselung einfügen können und der Lieferant eines Kunden nicht an den firmeneigenen Protokollgestaltungen des Kunden beteiligt sein muss.
  • Verschiedene Ausführungsformen der Erfindung sind beschrieben worden. Dennoch wird man verstehen, dass verschiedene Modifikationen vorgenommen werden können, ohne den Schutzbereich der Erfindung zu verlassen. Demgemäß liegen andere Ausführungsformen innerhalb des Schutzbereichs der folgenden Ansprüche.

Claims (29)

  1. Verfahren (110) zum Weiterleiten von Paketen über mehrere Netzwerkprotokolle von einer Netzwerkwegeermittlungsvorrichtung, wobei das Verfahren (110) Folgendes umfasst: Empfangen eines Pakets (112); Lesen des Inhalts mindestens eines Kopffeldes des Pakets (112), wobei der Inhalt einem von mehreren Netzwerkprotokollen zugeordnet ist; gekennzeichnet durch Lesen einer Tabelle (114), die dem Inhalt des mindestens einen Kopffeldes zugeordnet ist, wobei die Tabelle mehrere Flags enthält, einschließlich eines Verkapselungs-Flags, und die Tabelle ein Verkapselungskopffeld enthält, wobei das Verkapselungskopffeld Bytes zum Voranstellen vor ein Paket umfasst, um zu bestimmen, welches der mehreren Flags gesetzt oder gelöscht ist; und Ausführen eines Vorgangs (118, 120, 134) bezüglich des Pakets, um das Paket durch Voranstellen (120) des Verkapselungskopfes vor das Paket zu verkapseln, wenn das Verkapselungs-Flag gesetzt ist (116, 130).
  2. Verfahren (110) nach Anspruch 1, wobei die Tabelle mit Weiterleitungsinformation gefüllt wird.
  3. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabelle Weiterleitungstabellenstrukturen mit einer Steuerungs- und Verwaltungsstruktur aufweist, die eine Netzwerkstapelschnittstelle und Tabellenverwalter aufweist.
  4. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabellenverwalter die Wegeermittlung von Tabellen verwalten und mehrere Tabellen aufweisen, die eine Schicht-4-Verbindungstabelle, eine Schicht-3-Zieltabelle, eine Schicht-2-Brückentabelle und eine Schicht-2-Verbindungstabelle aufweisen.
  5. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabelle ein Flag aufweist, um anzuzeigen, ob Bytes von dem Paket abgezogen werden sollen, und ein Feld aufweist, das eine Anzahl von abzuziehenden Bytes anzeigt.
  6. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabelle ein Feld aufweist, das die Entkapselung von Kopffeldschichten bis zu einer spezifizierten Schicht spezifiziert.
  7. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabelle ein Feld aufweist, das einen Identifikator eines derzeitigen Paketverkapselungstyps spezifiziert.
  8. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabelle ferner ein Feld aufweist, das eine Anzahl von zu verkapselnden Bytes spezifiziert.
  9. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei die Tabelle ein Feld Nächster Tabellentyp aufweist, das anzeigt, dass ein weiterer Suchlauf erforderlich ist, und einen Tabellentyp identifiziert.
  10. Verfahren (110) nach einem der vorhergehenden Ansprüche, ferner umfassend, wenn das Verkapselungs-Flag gesetzt wurde (116, 130), das Subtrahieren eines Verkapselungsbytes von einem Paketstartversatz (118).
  11. Verfahren (110) nach Anspruch 1 oder Anspruch 10, wobei das Lesen eines Tabellenschritts (114) das Ausführen eines Schicht-2-Suchlauf-Lesevorgangs einer Verbindungstabelle aufweist, die Parameter zurücksendet.
  12. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Tabelle ein Entkapselungs-Flag enthält, ferner umfassend das Bestimmen (116, 130), ob das Entkapselungs-Flag gesetzt ist.
  13. Verfahren (110) nach Anspruch 12, ferner umfassend, wenn das Entkapselungs-Flag gesetzt wurde (116, 130), das Addieren einer Entkapselungsbytezählung zu einem Paketstartversatz (118).
  14. Verfahren (110) nach Anspruch 12 oder Anspruch 13, wobei, wenn das Entkapselungs-Flag gesetzt wurde, das Verfahren ferner das Addieren einer Entkapselungsbytezählung zu einem Pufferversatz (134) und Überprüfen einer nächsten Tabelle umfasst.
  15. Verfahren (110) nach einem der vorhergehenden Ansprüche, ferner umfassend: Bestimmen, ob eine nächste zu untersuchende (122) Tabelle vorhanden ist, indem ein leeres Feld in einer derzeit gelesenen Tabelle betrachtet wird.
  16. Verfahren (110) nach Anspruch 15, wobei, falls eine nächste Tabelle vorhanden ist, das Verfahren ferner das syntaktische Analysieren eines nächsten Kopffeldes (124) und das Abrufen und Lesen einer nächsten Tabelle umfasst.
  17. Verfahren (110) nach einem der vorhergehenden Ansprüche, wobei das Paket aus einem oder mehreren Kopf feldern gefolgt von Nutzdaten besteht, wobei das Verfahren (110) ferner Folgendes umfasst: Kopieren des Nutzdatenabschnitts des Pakets in einen Paketpuffer.
  18. Verfahren (110) nach Anspruch 17, wobei das Kopieren das Paket bei einem Versatz in dem Puffer anordnet, um Raum für jedes beliebige neue Kopffeld zu schaffen, das dem Paket zur Paketweiterleitung vorangestellt werden könnte.
  19. Computerprogrammprodukt zum Weiterleiten von Paketen über mehrere Netzwerkprotokolle durch eine Netzwerkwegeermittlungsvorrichtung, wobei das Computerprogrammprodukt Befehle umfasst, um einen Computer zu Folgendem zu veranlassen: Empfangen eines Pakets (112); Lesen des Inhalts mindestens eines Kopffeldes des Pakets (112), wobei der Inhalt einem der mehreren Netzwerkprotokolle zugeordnet ist; dadurch gekennzeichnet, dass das Computerprogrammprodukt Befehle umfasst, um einen Computer zu Folgendem zu veranlassen: Lesen einer Tabelle, die dem Inhalt des mindestens einen Kopffeldes (114) zugeordnet ist, wobei die Tabelle mehrere Flags enthält, einschließlich eines Verkapselungs-Flags, und die Tabelle ein Verkapselungskopffeld enthält, wobei das Verkapselungskopffeld Bytes zum Voranstellen vor ein Paket umfasst, um zu bestimmen, welches der mehreren Flags gesetzt oder gelöscht ist; und Ausführen eines Vorgangs bezüglich des Pakets, um das Paket durch Voranstellen des Verkapselungskopffeldes vor das Paket zu verkapseln, wenn bestimmt wurde, dass das Verkapselungs-Flag gesetzt ist.
  20. Computerprogrammprodukt nach Anspruch 19, wobei die Tabelle mit Weiterleitungsinformation gefüllt wird.
  21. Computerprogrammprodukt nach Anspruch 20, wobei die Weiterleitungsinformation eine Steuerungs- und Verwaltungsstruktur aufweist, die eine Netzwerkstapelschnittstelle und Tabellenverwalter aufweist.
  22. Computerprogrammprodukt nach einem der Ansprüche 19 bis 21, wobei, wenn die Entkapselungs- und Verkapselungs-Flags gesetzt sind (116), das Computerprogramm Befehle ausführt, um Folgendes zu veranlassen: Addieren einer Entkapselungsbytezählung zu einem Paketstartversatz (118) und Subtrahieren einer Verkapselungsbytezählung von dem Paketstartversatz (120).
  23. Computerprogrammprodukt nach einem der Ansprüche 19 bis 22, ferner umfassend Befehle, um Folgendes auszuführen: Bestimmen, ob eine nächste zu untersuchende (122) Tabelle vorhanden ist, indem ein leeres Feld in einer derzeit gelesenen Tabelle betrachtet wird.
  24. Computerprogrammprodukt nach Anspruch 23, wobei, wenn eine nächste Tabelle vorhanden ist, das Computerprogramm Befehle ausführt, um Folgendes zu veranlassen: syntaktisches Analysieren des nächsten Kopffeldes (124) und Abrufen und Lesen der nächsten Tabelle.
  25. Computerprogrammprodukt nach einem der Ansprüche 19 bis 24, wobei das Paket aus einem oder mehreren Kopffeldern gefolgt von Nutzdaten besteht, wobei das Computerprogramm ferner Befehle ausführt, um Folgendes zu veranlassen: Kopieren des Nutzdatenabschnitts des Pakets in einen Paketpuffer.
  26. Computerprogrammprodukt nach Anspruch 25, wobei Be fehle zum Kopieren das Paket bei einem Versatz in dem Puffer anordnen, um Raum für jedes beliebige neue Datenfeld zu schaffen, das dem Paket zur Paketweiterleitung vorangestellt werden könnte.
  27. Computerprogrammprodukt nach einem der Ansprüche 19 bis 26, wobei sich das Computerprogrammprodukt auf von einem Computer lesbaren Medien befindet.
  28. Vorrichtung zum Weiterleiten von Paketen über mehrere Netzwerkprotokolle durch eine Netzwerkwegeermittlungsvorrichtung, wobei die Vorrichtung Folgendes umfasst: eine Empfangseinheit zum Empfangen eines Pakets; eine erste Leseeinheit zum Lesen des Inhalts mindestens eines Kopffeldes des Pakets, wobei der Inhalt einem von mehreren Netzwerkprotokollen zugeordnet ist; dadurch gekennzeichnet, dass die Vorrichtung Folgendes umfasst: eine zweite Leseeinheit zum Lesen einer Tabelle, die dem Inhalt des mindestens einen Kopffeldes zugeordnet ist, wobei die Tabelle mehrere Flags enthält, einschließlich eines Verkapselungs-Flags, und die Tabelle ein Verkapselungskopffeld enthält, wobei das Verkapselungskopffeld Bytes zum Voranstellen vor ein Paket umfasst, um zu bestimmen, welches der mehreren Flags gesetzt oder gelöscht ist; und eine Betriebseinheit zum Voranstellen des Verkapselungskopffeldes vor das Paket, wenn bestimmt wird, dass das Verkapselungskopffeld gesetzt ist.
  29. Vorrichtung nach Anspruch 28, wobei die Tabelle Weiterleitungsinformation umfasst.
DE60221030T 2001-09-28 2002-09-12 Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern Expired - Lifetime DE60221030T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US966349 2001-09-28
US09/966,349 US7126952B2 (en) 2001-09-28 2001-09-28 Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
PCT/US2002/029074 WO2003030461A1 (en) 2001-09-28 2002-09-12 Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers

Publications (2)

Publication Number Publication Date
DE60221030D1 DE60221030D1 (de) 2007-08-16
DE60221030T2 true DE60221030T2 (de) 2008-03-20

Family

ID=25511271

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60221030T Expired - Lifetime DE60221030T2 (de) 2001-09-28 2002-09-12 Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern

Country Status (10)

Country Link
US (1) US7126952B2 (de)
EP (1) EP1430658B1 (de)
KR (1) KR100647949B1 (de)
CN (1) CN1593041B (de)
AT (1) ATE366494T1 (de)
CA (1) CA2460530C (de)
DE (1) DE60221030T2 (de)
HK (1) HK1067821A1 (de)
TW (1) TWI239164B (de)
WO (1) WO2003030461A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US7237033B2 (en) 2001-04-30 2007-06-26 Aol Llc Duplicating switch for streaming data units to a terminal
US7124166B2 (en) 2001-04-30 2006-10-17 Aol Llc Duplicating digital streams for digital conferencing using switching technologies
US8572278B2 (en) * 2001-04-30 2013-10-29 Facebook, Inc. Generating multiple data streams from a single data source
US7149218B2 (en) * 2001-12-05 2006-12-12 International Business Machines Corporation Cache line cut through of limited life data in a data processing system
US7529242B1 (en) * 2002-02-15 2009-05-05 Symantec Corporation Routing network packets for multi-processor network flow analysis
TW561740B (en) * 2002-06-06 2003-11-11 Via Tech Inc Network connecting device and data packet transferring method
US8028092B2 (en) 2002-06-28 2011-09-27 Aol Inc. Inserting advertising content
US7136393B2 (en) * 2002-07-19 2006-11-14 Northrop Grumman Coporation Information transmission system and method of data transmission
US7181742B2 (en) * 2002-11-19 2007-02-20 Intel Corporation Allocation of packets and threads
US7346058B1 (en) * 2002-11-27 2008-03-18 Cisco Technology, Inc. Multiprotocol encapsulation system and method
US7042885B2 (en) * 2002-12-05 2006-05-09 Nokia Inc. System and method for implementing a distributed service platform using a system-wide switchtag definition
US7355974B2 (en) * 2003-01-27 2008-04-08 International Business Machines Corporation Method for forwarding data packets by a router
US20040196843A1 (en) * 2003-02-20 2004-10-07 Alcatel Protection of network infrastructure and secure communication of control information thereto
US7644177B2 (en) * 2003-02-28 2010-01-05 Cisco Technology, Inc. Multicast-routing-protocol-independent realization of IP multicast forwarding
US7386010B2 (en) * 2003-06-13 2008-06-10 Corrigent Systems Ltd Multiprotocol media conversion
KR100560761B1 (ko) * 2003-07-08 2006-03-13 삼성전자주식회사 인터페이스 변환 시스템 및 그 방법
US7447203B2 (en) 2003-07-29 2008-11-04 At&T Intellectual Property I, L.P. Broadband access for virtual private networks
US8019841B2 (en) * 2003-09-30 2011-09-13 Nortel Networks Limited Zoning for distance pricing and network engineering in connectionless and connection-oriented networks
JP2007532043A (ja) * 2003-11-04 2007-11-08 ネクストホップ テクノロジーズ,インク ワイドエリアネットワークを横切る安全なスタンダードベースの通信
US7417995B2 (en) * 2004-01-20 2008-08-26 Nortel Networks Limited Method and system for frame relay and ethernet service interworking
US7505466B2 (en) * 2004-01-20 2009-03-17 Nortel Networks Limited Method and system for ethernet and ATM network interworking
US7333508B2 (en) * 2004-01-20 2008-02-19 Nortel Networks Limited Method and system for Ethernet and frame relay network interworking
US7406088B2 (en) * 2004-01-20 2008-07-29 Nortel Networks Limited Method and system for ethernet and ATM service interworking
US8804728B2 (en) * 2004-01-20 2014-08-12 Rockstar Consortium Us Lp Ethernet differentiated services conditioning
KR100604835B1 (ko) * 2004-02-24 2006-07-26 삼성전자주식회사 프로토콜 변환중재회로, 이를 구비하는 시스템과 신호변환중재방법
EP1738545A4 (de) * 2004-04-20 2012-04-04 Nortel Networks Ltd Verfahren und system zur dienstequalitätsunterstützung für ethernet-mehrdienst-interworking über multiprotocol label switching (mpls)
US20060072595A1 (en) * 2004-10-05 2006-04-06 Cisco Technology, Inc. System and method for service tagging for enhanced packet processing in a network environment
US20060215648A1 (en) * 2005-03-22 2006-09-28 Teng-Yi Jen System and method for hardware based protocol conversion between audio-visual stream and ip network
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
US7599364B2 (en) * 2005-09-13 2009-10-06 Agere Systems Inc. Configurable network connection address forming hardware
US8521955B2 (en) 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
JP2007206955A (ja) * 2006-02-01 2007-08-16 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
JP2007235211A (ja) * 2006-02-27 2007-09-13 Fujitsu Ltd データ送受信装置、データ送受信方法およびデータ送受信プログラム
US8543706B2 (en) * 2006-05-23 2013-09-24 Freebit Co., Ltd. Communication module for connecting application program to virtual private network
US7583674B2 (en) * 2006-11-20 2009-09-01 Alcatel Lucent Switch and method for supporting internet protocol (IP) network tunnels
CN101471817B (zh) * 2007-12-27 2011-11-30 华为技术有限公司 一种在无连接ip网络中的流量监测方法、系统及设备
CN103067199B (zh) * 2012-12-19 2015-11-25 华为技术有限公司 深度报文检测结果扩散方法及装置
US9871666B2 (en) 2015-06-25 2018-01-16 AvaLAN Wireless Systems, Inc. Intermediate unicast network and method for multicast data networks
US11481344B2 (en) * 2019-06-19 2022-10-25 Mitsubishi Electric Corporation Instruction conversion device, method, and program
TWI820977B (zh) * 2022-10-21 2023-11-01 中原大學 封包排序與重組電路模組

Family Cites Families (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
US3736566A (en) 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
BE795789A (fr) 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
IT986411B (it) 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
US4016548A (en) 1975-04-11 1977-04-05 Sperry Rand Corporation Communication multiplexer module
CH584488A5 (de) 1975-05-05 1977-01-31 Ibm
US4075691A (en) 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
JPS56164464A (en) 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4831358A (en) 1982-12-21 1989-05-16 Texas Instruments Incorporated Communications system employing control line minimization
US4709347A (en) 1984-12-17 1987-11-24 Honeywell Inc. Method and apparatus for synchronizing the timing subsystems of the physical modules of a local area network
US4890222A (en) 1984-12-17 1989-12-26 Honeywell Inc. Apparatus for substantially syncronizing the timing subsystems of the physical modules of a local area network
US4745544A (en) 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4788640A (en) 1986-01-17 1988-11-29 Intel Corporation Priority logic system
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4890218A (en) 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
FR2625340B1 (fr) 1987-12-23 1990-05-04 Labo Electronique Physique Systeme graphique avec controleur graphique et controleur de dram
US5115507A (en) 1987-12-23 1992-05-19 U.S. Philips Corp. System for management of the priorities of access to a memory and its application
EP0357768B1 (de) 1988-03-14 1994-03-09 Unisys Corporation Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
DE69132495T2 (de) 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5432918A (en) 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5404482A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
US5251205A (en) 1990-09-04 1993-10-05 Digital Equipment Corporation Multiple protocol routing
US5367678A (en) 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
US5557766A (en) 1991-10-21 1996-09-17 Kabushiki Kaisha Toshiba High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank
US5452437A (en) 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
EP0544083A3 (en) 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
US5442797A (en) 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5742760A (en) * 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US5459842A (en) 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
US5404484A (en) 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
DK0627100T3 (da) 1992-12-23 2000-06-26 Ebauchesfabrik Eta Ag Laveffekt-multitaskkontroller
US5404464A (en) 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US6311286B1 (en) 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
CA2122182A1 (en) 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
JPH0740746A (ja) 1993-07-29 1995-02-10 Aisin Seiki Co Ltd 車両用サンルーフ装置のチエツク機構
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US5511003A (en) 1993-11-24 1996-04-23 Intel Corporation Encoding and decoding video signals using spatial filtering
US5809237A (en) 1993-11-24 1998-09-15 Intel Corporation Registration of computer-based conferencing system
US5740402A (en) 1993-12-15 1998-04-14 Silicon Graphics, Inc. Conflict resolution in interleaved memory systems with multiple parallel accesses
US5485455A (en) 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5754764A (en) * 1994-02-22 1998-05-19 National Semiconductor Corp. Combination of input output circuitry and local area network systems
US5490204A (en) 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
JP3547482B2 (ja) 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5721870A (en) 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5544236A (en) 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5781774A (en) 1994-06-29 1998-07-14 Intel Corporation Processor having operating modes for an upgradeable multiprocessor computer system
JP3810449B2 (ja) * 1994-07-20 2006-08-16 富士通株式会社 キュー装置
US5781551A (en) 1994-09-15 1998-07-14 Texas Instruments Incorporated Computer communications system with tree architecture and communications method
US5568476A (en) 1994-10-26 1996-10-22 3Com Corporation Method and apparatus for avoiding packet loss on a CSMA/CD-type local area network using receive-sense-based jam signal
JP3169779B2 (ja) 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5784712A (en) 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for locally generating addressing information for a memory access
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5649157A (en) 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5581729A (en) 1995-03-31 1996-12-03 Sun Microsystems, Inc. Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US5886992A (en) * 1995-04-14 1999-03-23 Valtion Teknillinen Tutkimuskeskus Frame synchronized ring system and method
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
JPH08320797A (ja) 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5828746A (en) 1995-06-07 1998-10-27 Lucent Technologies Inc. Telecommunications network
US5828863A (en) 1995-06-09 1998-10-27 Canon Information Systems, Inc. Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer
US5651002A (en) 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
US5613071A (en) 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5680641A (en) 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5689566A (en) 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
US5809530A (en) 1995-11-13 1998-09-15 Motorola, Inc. Method and apparatus for processing multiple cache misses using reload folding and store merging
KR0150072B1 (ko) 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
US5796413A (en) 1995-12-06 1998-08-18 Compaq Computer Corporation Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering
US5898701A (en) * 1995-12-21 1999-04-27 Cypress Semiconductor Corporation Method and apparatus for testing a device
US5699537A (en) 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
EP0870386B1 (de) * 1995-12-29 2000-04-12 Tixi.Com GmbH Telecommunication Verfahren und mikrocomputersystem zur automatischen, sicheren und direkten datenübertragung
US6201807B1 (en) * 1996-02-27 2001-03-13 Lucent Technologies Real-time hardware method and apparatus for reducing queue processing
US5761507A (en) 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5809235A (en) 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5764915A (en) 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5797043A (en) 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5784649A (en) 1996-03-13 1998-07-21 Diamond Multimedia Systems, Inc. Multi-threaded FIFO pool buffer and bus transfer control system
US6199133B1 (en) * 1996-03-29 2001-03-06 Compaq Computer Corporation Management communication bus for networking devices
KR100219597B1 (ko) * 1996-03-30 1999-09-01 윤종용 씨디-롬 드라이브에서의 큐잉 제어 방법
US5768528A (en) 1996-05-24 1998-06-16 V-Cast, Inc. Client-server system for delivery of online information
JP3541335B2 (ja) * 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5745913A (en) 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
WO1998020647A1 (en) * 1996-11-08 1998-05-14 Integrated Telecom Technology Method and apparatus to translate data streams among multiple parties
US5860158A (en) * 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6256115B1 (en) * 1997-02-21 2001-07-03 Worldquest Network, Inc. Facsimile network
US5742587A (en) 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US5905889A (en) * 1997-03-20 1999-05-18 International Business Machines Corporation Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6067585A (en) * 1997-06-23 2000-05-23 Compaq Computer Corporation Adaptive interface controller that can operate with segments of different protocol and transmission rates in a single integrated device
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6014729A (en) * 1997-09-29 2000-01-11 Firstpass, Inc. Shared memory arbitration apparatus and method
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
EP0918280B1 (de) * 1997-11-19 2004-03-24 IMEC vzw System und Verfahren zur Kontextumschaltung über vorbestimmte Unterbrechungspunkte
US6360262B1 (en) * 1997-11-24 2002-03-19 International Business Machines Corporation Mapping web server objects to TCP/IP ports
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
JPH11203860A (ja) * 1998-01-07 1999-07-30 Nec Corp 半導体記憶装置
US6223238B1 (en) * 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6570850B1 (en) * 1998-04-23 2003-05-27 Giganet, Inc. System and method for regulating message flow in a digital data network
FR2778809B1 (fr) * 1998-05-18 2000-07-28 Inst Nat Rech Inf Automat Installation de transmission de messages a stations perfectionnees, et procede correspondant
US6067300A (en) * 1998-06-11 2000-05-23 Cabletron Systems, Inc. Method and apparatus for optimizing the transfer of data packets between local area networks
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6373848B1 (en) * 1998-07-28 2002-04-16 International Business Machines Corporation Architecture for a multi-port adapter with a single media access control (MAC)
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
US6526451B2 (en) * 1998-09-30 2003-02-25 Stmicroelectronics, Inc. Method and network device for creating circular queue structures in shared memory
DE19846274A1 (de) * 1998-10-08 2000-04-20 Alcatel Sa Verfahren zur Durchführung von kooperativem Multitasking in einem Nachrichtenübertragungsnetz und Netzelement dafür
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6356692B1 (en) * 1999-02-04 2002-03-12 Hitachi, Ltd. Optical module, transmitter, receiver, optical switch, optical communication unit, add-and-drop multiplexing unit, and method for manufacturing the optical module
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
EP1912124B8 (de) * 1999-10-14 2013-01-09 Bluearc UK Limited Vorrichtung und System zur Ausführung von Betriebsfunktionen
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6678746B1 (en) * 2000-08-01 2004-01-13 Hewlett-Packard Development Company, L.P. Processing network packets
US6553406B1 (en) * 2000-08-03 2003-04-22 Prelude Systems, Inc. Process thread system receiving request packet from server thread, initiating process thread in response to request packet, synchronizing thread process between clients-servers.

Also Published As

Publication number Publication date
WO2003030461A1 (en) 2003-04-10
CA2460530A1 (en) 2003-04-10
US7126952B2 (en) 2006-10-24
KR20040019037A (ko) 2004-03-04
CA2460530C (en) 2008-06-17
ATE366494T1 (de) 2007-07-15
EP1430658B1 (de) 2007-07-04
DE60221030D1 (de) 2007-08-16
KR100647949B1 (ko) 2006-11-17
US20030067934A1 (en) 2003-04-10
CN1593041A (zh) 2005-03-09
CN1593041B (zh) 2011-06-29
HK1067821A1 (en) 2005-04-15
TWI239164B (en) 2005-09-01
EP1430658A1 (de) 2004-06-23

Similar Documents

Publication Publication Date Title
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE112008002550B4 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE60026676T2 (de) Paketklassifizierungsautomat
DE69830491T2 (de) Cut-through -durchschaltung und paketfilterung in einem rechnersystem
DE69826680T2 (de) Hochintegrierte mehrschichtige Vermittlungsstellenelementarchitektur
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE112020002498T5 (de) System und verfahren zur erleichterung einer effizienten paketweiterleitung in einer netzwerkschnittstellensteuerung (nic)
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE60021846T2 (de) Leitweglenkungsanordnung
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE60027404T2 (de) Kreditbasiertes flusskontrollverfahren
DE60311677T2 (de) Verfahren und vorrichtung zur durchführung von netzwerkverarbeitungsfunktionen
DE69837272T2 (de) Mechanismus zum ersetzen eines paketfelds in einem mehrschicht-vermittlungsnetzelement
DE60201682T2 (de) Anordnung zur erzeugung mehrerer virtueller warteschlangenpaare aus einer komprimierten warteschlange auf der basis gemeinsamer attribute
DE69737361T2 (de) Schnelle vermittlungsvorrichtung
US6650642B1 (en) Network relaying apparatus and network relaying method capable of high-speed routing and packet transfer
US6683885B1 (en) Network relaying apparatus and network relaying method
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE202016107377U1 (de) Systeme zur Auslagerung von Netzwerkfunktionen über Paket-Trunking
DE112007001529T5 (de) Flexibles und erweiterbares Receive Side Scaling
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden

Legal Events

Date Code Title Description
8364 No opposition during term of opposition