DE60005993T2 - Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung - Google Patents

Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung Download PDF

Info

Publication number
DE60005993T2
DE60005993T2 DE60005993T DE60005993T DE60005993T2 DE 60005993 T2 DE60005993 T2 DE 60005993T2 DE 60005993 T DE60005993 T DE 60005993T DE 60005993 T DE60005993 T DE 60005993T DE 60005993 T2 DE60005993 T2 DE 60005993T2
Authority
DE
Germany
Prior art keywords
packet
bit
port
address
data
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
DE60005993T
Other languages
English (en)
Other versions
DE60005993D1 (de
Inventor
J. Michael BOWES
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.)
Broadcom Corp
Original Assignee
Broadcom 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
Priority claimed from US09/528,434 external-priority patent/US6850521B1/en
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of DE60005993D1 publication Critical patent/DE60005993D1/de
Application granted granted Critical
Publication of DE60005993T2 publication Critical patent/DE60005993T2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6402Hybrid switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/13Flow control; Congestion control in a LAN segment, e.g. ring or bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2408Traffic characterised by specific attributes, e.g. priority or QoS for supporting different services, e.g. a differentiated services [DiffServ] type of service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • H04L47/2433Allocation of priorities to traffic types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2458Modification of priorities while in transit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5672Multiplexing, e.g. coding, scrambling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6402Hybrid switching fabrics
    • H04L2012/6408Shared Medium, e.g. memory, bus, ring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • H04L2012/6464Priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • H04L2012/6472Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • H04L2012/6481Speech, voice
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • H04L49/352Gigabit ethernet switching [GBPS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)
  • Near-Field Transmission Systems (AREA)
  • Radio Transmission System (AREA)

Description

  • Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum Hochleistungsvermitteln von Datenpaketen in lokalen Kommunikationsnetzwerken, wie beispielsweise Token-Ring, ATM-, Ethernet-, Fast Ethernet- und Gigabit-Ethernet-Umgebungen, welche alle im allgmeinen als LANs bekannt sind. Insbesondere betrifft die Erfindung eine neue Switch-Architektur in einer integrierte, modularen Ein-Chip-Lösung, welche auf einem Halbleitersubstrat, wie beispielsweise einem Siliciumchip implementiert werden kann.
  • Der Artikel „Architecture for a 10-Gigabit Ethernet Standard" von Shimon Muller, IEEE802.3 High Speed Study Group, 1. Juni 1999, diskutiert die Erfordernisse, die erfüllt sein müssen, um einen Hochgeschwindigkeitsstandard (10-Gigabit) zu erzielen.
  • Die vorliegende Erfindung treibt die Netzwerkvermittlungstechnologie in einem Switch voran, der zur Verwendung in Ethernet-, Fast Ethernet-, Gigabit-Ethernet- und andersartigen Netzwerk-Umgebungen geeignet ist, welches eine Hochleistungsvermittlung von Datenpaketen oder Datenzellen erfordert. Ein Switch, der die offenbarten Elemente verwendet, und ein System, das die offenbarten Schritte durchführt, schafft gegenüber dem Stand der Technik Vorteile im Bezug auf die Kosten und den Betrieb.
  • Die vorliegende Erfindung richtet sich auf eine Switch-On-Chip-Lösung für einen Netzwerk-Switch, der zur Verwendung wenigstens in Ethernet-, Fast Ethernet- und Gigabit-Ethernet-Systemen geeignet ist, wobei die gesamte Vermittlungshardware auf einem einzigen Microchip angeordnet ist. Die vorliegende Erfindung ist zum Maximieren der Fähigkeit der Paketweiterleitung bei der Leitungsgeschwindigkeit und ebenso zum Schaffen einer modularen Konfiguration konfiguriert, wobei eine Mehrzahl von separaten Modulen auf einem gemeinsamen Chip konfiguriert sind, und wobei individuelle Konstruktionsveränderungen an bestimmten Modulen nicht die Beziehung dieser bestimmten Module auf andere Module in dem System beeinträchtigen.
  • Die vorliegende Erfindung betrifft daher einen Netzwerk-Switch mit einem Internet-Port-Schnittstellen-Controller, wobei der Internet-Port-Schnittstellen-Controller einen Speicher und eine Hochleistungsschnittstelle zum Kommunizieren mit anderen Switches und Komponenten durch die Übertragung von Datenpaketen aufweist, die in dem Speicher enthalten sind. Die Hochleistungsschnittstelle beinhaltet einen Datenverbindungsbus, bei dem Daten sowohl bei einer steigenden Flanke als auch bei einer fallenden Flanke eines Taktsignals übertragen werden und wobei der Datenverbindungsbus Ausgangstreiber und eine Multiplex-Schaltung aufweist, die mit den Ausgangstreibern verbunden ist. Die Multiplex-Schaltung weist zwei Ebenen von störimpulsfreien bzw. keinen Glitch aufweisenden Multiplexern, wobei wenigstens ein Ausgangssignal einer anfänglichen ersten Ebene von störimpulsfreien Multiplexern in eine zweite Ebene von störimpulsfreien Multiplexern eingegeben wird, die wenigstens einen störimpulsfreien Multiplexer enthält, um die über die Hochleistungsschnittstelle übertragenen Daten zu Serialisieren.
  • Der Switch beinhaltet zusätzlich Konfigurationen der störimpulsfreien Multiplexer, bei denen das Ausgangssignal der ersten Ebene von störimpulsfreien Multiplexern in einen störimpulsfreien Multiplexer eingegeben wird, der die zweite Ebene bildet. Die Multiplex-Schaltung kann ebenso zusätzliche Multiplexer enthalten, die nicht störimpulsfrei sein müssen, um Daten zu der ersten Ebene von störimpulsfreien Multiplexern zu liefern.
  • Die vorliegende Erfindung richtet sich ebenso auf ein Verfahren zum Serialisieren von Daten, die über eine Hochleistungsschnittstelle eines Netzwerk-Switchess gesendet worden sind, wobei das Verfahren die Schritte des Empfangens von parallelen Daten, die über die Hochleistungsschnittstelle gesendet werden sollen, und des Multiplexen der parallelen Daten beinhaltet. Dann wird ein Teil der parallelen Daten in einem ersten Register gespeichert, das auf einer steigenden Flanke eines Taktsignal getaktet wird, und wird ein anderer Teil in einem zweiten Register gespeichert, das auf einer fallenden Flanke des Taktsignals getaktet wird. Die Teile werden dann in störimpulsfreie Multiplexer der ersten Ebene eingegeben und die Teile werden auf der Grundlage eines Multiplexerauswahlsignals gemultiplext, das in die störimpulsfreien Multiplexer der ersten Ebene eingegeben wird. Die Ausgangssignale der störimpulsfreien Multiplexer der ersten Ebene werden zu einem störimpulsfreien Multiplexer der zweiten Ebene ausgegeben und die Daten werden dann durch abwechselndes Auswählen von Eingängen auf der Grundlage des Multiplexerauswahlsignals gemultiplext, das in den störimpulsfreien Multiplexer der zweiten Ebene eingegeben wird. Jeder der störimpulsfreien Multiplexer der ersten Ebene erzeugt ein Funktionsrisiko, wenn mehr als ein Eingang zu dem störimpulsfreien Multiplexer der ersten Ebene sich gleichzeitig verändert. Das Multiplexen der Daten mittels des störimpulsfreien Multiplexers der zweiten Ebene wird zeitlich so geplant, dass der störimpulsfreie Multiplexer der zweiten Ebene nur Eingaben von einem der Multiplexer der ersten Ebene auswählt, der kein Funktionsrisiko erzeugt.
  • Die Aufgaben und Merkmale der Erfindung werden schneller unter der Bezugnahme auf die folgende Beschreibung und die beigefügten Zeichnungen verstanden werden, in denen:
  • 1 ein allgemeines Blockdiagramm von Elementen eines Netzwerk-Switchess ist, wie es hier erörtert ist;
  • 2 ein detaillierteres Blockdiagramm des Netzwerk-Switchess ist;
  • 3 den Datenfluß auf dem CPS-Kanal des Netzwerk-Switchess zeigt;
  • 4A eine Anforderungspriorität-Round-Robin-Entscheidung für den Zugang zu dem C-Kanal des Netzwerk-Switchess zeigt;
  • 4B den Zugang zu dem C-Kanal auf der Grundlage der in 4A gezeigten Round-Robin-Entscheidung zeigt;
  • 5 Typen von P-Kanal-Nachrichten zeigt;
  • 6 ein Nachrichtenformat für Typen von S-Kanal-Nachrichten zeigt;
  • 7 eine Darstellung des OSI-7-Schicht-Referenzmodells ist;
  • 8 ein Betriebsdiagramm eines EPIC-Moduls zeigt;
  • 9 das Unterteilen eines Datenpakets bei dem Eingang zu einem EPIC-Modul zeigt;
  • 10 eine detaillierte Ansicht von Elementen der MMU ist;
  • 11 das CBM-Zellen-Format zeigt;
  • 12 ein Zulassungsflußdiagramm für internen/externen Speicher zeigt;
  • 13 ein Blockdiagramm eines Ausgangsmanagers 76 zeigt, der in 10 gezeigt ist;
  • 14 mehr Details eines EPIC-Moduls zeigt;
  • 15 ein Blockdiagramm eines Schnell-Filter-Prozessors (FFP) ist;
  • 16 ein Blockdiagramm der Elemente des CMIC 40 ist;
  • 17 eine Reihe von Schritten zeigt, die zur Programmierung eines FFP verwendet werden;
  • 18 ein Flußdiagramm ist, das den Alterungsvorgang für ARL-(L2)-und L3-Tabellen zeigt;
  • 19 Kommunikation unter Verwendung einer Trunk-Gruppe zeigt;
  • 20 eine Tabelle ist, die zahlreiche Felder für verschiedene Pakettypen auflistet;
  • 21A und 21B ein Filtermaskenformat bzw. ein Feldmaskenformat zeigen;
  • 22 ein Flußdiagramm ist, das die Bildung und Anwendung einer Filtermaske zeigt;
  • 23 ein Beispiel eines Formats für eine Regeltabelle zeigt;
  • 24 ein Format für eine IP-Multicast-Tabelle zeigt;
  • 25 ein Flußdiagramm ist, das die Bearbeitung eines IP-Multicast-Pakets zeigt;
  • 26 gestapelte SOC-Switches 10 zeigt;
  • 27A und 27B alternative Konfigurationen des gestapelten SOC 10 zeigen;
  • 28 eine detaillierte Ansicht der Funktionsmodule des IPIC 90 ist;
  • 29 die Paketverarbeitung für Pakete zeigt, die bei der Hochleistungsschnittstelle des IPIC 90 eingehen;
  • 30 eine diffserv-zu-COS-Zuordnungstabelle ist;
  • 31 die Konfiguration der Offsets zeigt;
  • 32 ein primäres Flußdiagramm der Filter-/Meßlogik ist;
  • 33 ein Flußdiagramm der partiellen Übereinstimmung-Logik ist;
  • 34 ein Flußdiagramm der In-Profil-Vorgang-Logik ist;
  • 35 ein Flußdiagramm der Vorgangs-Logik für teilsweise Übereinstimmung für die Bits 3-6;
  • 36 ein Flußdiagramm der Vorgangslogik für teilweise Übereinstimmung für die Bits 1,0 und 10;
  • 37 ein Flußdiagramm der In-Profil-Vorgang-Logik für die Bits 2, 8 und 9 ist;
  • 38 eine erste Konfiguration einer Adresstabelle und einer Suchmaschine zeigt;
  • 39 eine zweite Konfiguration von zwei Adresstabellen und zwei Suchmaschinen zeigt;
  • 40a ein erstes Beispiel von Adresseinträgen zeigt, die in einer einzigen Adresstabelle gespeichert sind;
  • 40b ein zweites Beispiel von Adresseinträgen zeigt, die in zwei getrennten sortierten Adresstabellen gespeichert sind;
  • 41a ein drittes Beispiel von Adresseinträgen zeigt, die in einer einzigen Adresstabelle gespeichert sind;
  • 41b ein viertes Beispiel von Adresseinträgen zeigt, die in zwei getrennten sortierten Adresstabellen gespeichert sind;
  • 42 ein Flußdiagramm der In-Profil-Vorgang-Logik für die Bits 11-13 ist;
  • 43 ein Flußdiagramm der gespiegelten Port-/Abschluss-FFP-Vorgänge ist;
  • 44 ein Flußdiagramm der Aus-Profil-Vorgang-Logik ist;
  • 45 ein Flußdiagramm des Datenflusses eines eingehenden Pakets ist;
  • 46 ein Flußdiagramm der Logik für differenzierte Dienste ist; und
  • 47 ein Flußdiagramm ist, das den Schritt 46-4 expandiert.
  • 48 ist ein Logikdiagramm, das zum Implementieren der risikofreien DDR-Vermittlung verwendet wird;
  • 49 ist ein Timing-Diagramm, das die entstehenden Kurvenformen des in 48 dargestellten Logikdiagramms zeigt.
  • Die folgende Erörterung betrachtet unter Bezugnahme auf die 1 bis 47 Hintergrundwissen, das beim Verständnis der vorliegenden Erfindung nützlich sein wird.
  • Da die Computerleistung in den vergangenen Jahren angestiegen ist, haben sich die Anforderungen an Computernetzwerke signifikant erhöht; schnellere Computerprozessoren und größere Speicherkapazitäten benötigen Netzwerke mit hohen Bandbreitenkapazitäten, um eine Hochgeschwindigkeitsübertragung von umfangreichen Datenmengen zu ermöglichen. Die wohlbekannte Ethernet-Technologie, die auf zahlreichen IEEE-Ethernet-Standards gegründet ist, ist ein Beispiel einer Computernetzwerktechnologie, die modifiziert und verbessert werden konnte, um eine überlebensfähige Computertechnolgie zu bleiben. Eine vollständiger Erörterung von Netzwerksystemen kann beispielsweise in SWITCHESS AND FAST Ethernet von Breyer und Riley (Ziff-Davis, 1996) und zahlreichen IEEE-Veröffentlichungen in Verbindung zu den IEEE-802-Standards gefunden werden. Auf der Grundlage des Open Systems Interconnect (OSI)7-Schichten Referenzmodells, sind die Netzwerkkapazitäten durch die Entwicklung von Repeatern, Bridges, Routern und eher kürzlich Switchess gewachsen, die mit verschiedenen Typen von Kommunikationsmedien arbeiten. Thickwire, thinwire, twisted pair und optische Fasern sind Beispiele von Medien, die für Computernetzwerke verwendet worden sind. Switchess, insoweit sie sich auf Computernetzwerke und Ethernet beziehen, sind hardwarebasierte Einrichtungen, die den Fluß von Datenpaketen oder Zellen auf der Grundlage einer Zieladressinformation steuern, die in jedem Paket verfügbar ist. Ein auf geeignete Weise konstruierter und implementierter Switch sollte in der Lage sein, ein Paket zu empfangen und das Paket an einen geeigneten Ausgangs-Port bei einer Geschwindigkeit zu vermitteln, auf die als Leitungsgeschwindigkeit oder Kabelgeschwindigkeit Bezug genommen wird, welches die höchste Geschwindigkeitskapazität des bestimmten Netzwerks ist. Die Kabelgeschwindigkeit von dem Basis-Ethernet ist bis zu 10 Megabit pro Sekunde und die des Fast-Ethernet ist bis zu 100 Megabit pro Sekunde. Gigabit-Ethernet ist in der Lage, Daten über ein Netzwerk bei einer Rate von bis zu 1000 Megabit pro Sekunde zu übertragen. Da die Geschwindigkeit sich erhöht, sind die Konstruktionszwänge und Konstruktionserfordernisse mehr und mehr komplex im Bezug auf das Befolgen einer geeigneten Konstruktion und der Protokollregeln und das Bereitstellen einer kommerziell funktionsfähigen Lösung bei geringen Kosten geworden. Beispielsweise erfordert die Hochgeschwindigkeitsvermittlung einen Hochgeschwindigkeitsspeicher, um geeignetes Puffern der Paketdaten zur Verfügung zu stellen; herkömmlicher dynamischer Schreib-Lese-Speicher (DRAM) ist relativ langsam und erfordert hardwaregetriebenen Refresh. Die Geschwindigkeit von DRAMs als Pufferspeicher bei der Netzwerkvermittlung führt daher dazu, dass wertvolle Zeit verloren wird und es nahezu unmöglich wird, den Switch oder das Netzwerk bei Leitungsgeschwindigkeit zu betreiben. Weiterhin sollte das Einbeziehen der externen CPU vermieden werden, da das Einbeziehen der CPU es ebenso unmöglich macht, den Switch bei Leitungsgeschwindigkeit zu betreiben. Da Netzwerk-Switches immer komplizierter dahingehend geworden sind, dass sie Regeltabellen und eine Speichersteuerung benötigen, wird zusätzlich eine komplexe Multichip-Lösung benötigt, welches eine Logikschaltung erfordert, auf die manchmal als Verbindungslogikschaltung Bezug genommen wird, um den verschiedenen Chips die Kommunikation untereinander zu ermöglichen. Zusätzlich sind Kosten-Nutzen-Kompromisse im Bezug auf teure aber schnelle SRAMs gegenüber billigen aber langsamen DRAMs notwendig. Weiterhin erfordern DRAMs aufgrund deren dynamischer Natur das Refreshen der Speicherinhalte, um deren Verlust zu vermeiden. SRAMs leiden nicht an dem Erfordernis des Refresh und besitzen einen verringerten Betriebs-Overhead im Vergleich zu den DRAMs, wie beispielsweise die Beseitigung von Seitenverlusten usw. Auch wenn DRAMs eine geeignete Geschwindigkeit beim Zugriff auf Bereiche auf der gleichen Seite besitzen, wird die Geschwindigkeit verringert, wenn auf andere Seiten zugegriffen werden muss.
  • Unter Bezugnahme auf das zuvor erörterte OSI 7-Schichten Referenzmodell und wie es in 7 dargestellt ist, besitzen die höheren Schichten üblicherweise mehr Informationen. Zahlreiche Typen von Produkten sind erhältlich, um die vermittlungsbezogenen Funktionen bei verschiedenen Ebenen des OSI-Modells durchzuführen. Hubs oder Repeater arbeiten bei Layer 1 und kopieren und senden eingehende Daten zu einer Mehrzahl von Speichen bzw. Zweigen des Hubs. Vermittlungsbezogene Vorrichtungen bei Schicht zwei werden üblicherweise als Multi-Port-Bridges bezeichnet und sind in der Lage, zwei getrennte Netzwerke miteinander zu verbinden. Bridges können eine Tabelle von Weiterleitungsregeln aufbauen, die darauf gründen, welche MAC-(media access controller)-Adressen an welchen Ports der Bridge existieren, und können Pakte weiterleiten, die für eine Adresse bestimmt sind, die auf einer entgegengesetzten Seite der Bridge angeordnet sind. Bridges verwenden üblicherweise einen als überspannender-Baum-Alogrithmus bekannten Algorithmus, um mögliche Datenschleifen zu entfernen; eine Datenschleife ist eine Situation, in der ein Paket bei der Suche nach einer bestimmte Adresse endlos in einem Netzwerk Schleifen dreht. Der überspannende-Baum-Algorithmus definiert ein Protokoll zum Verhindern von Datenschleifen. Schicht-3-Switches, auf die manchmal als Router Bezug genommen wird, können Pakte auf der Grundlage der Zielnetzwerkadresse weiterleiten. Schicht-3-Switches sind in der Lage, Adressen zu lernen und Tabellen davon aufrecht zu erhalten, die Port-Zuordnungen entsprechen. Die Verarbeitungsgeschwindigkeit für Schicht-3-Switches kann verbessert werden, indem spezialisierte Hochleistungshardware verwendet wird und indem die Host-CPU ausgelagert wird, sodass Anweisungsentscheidungen nicht die Weiterleitung von Paketen verzögern.
  • 1 zeigt eine Konfiguration, in der ein Switch-On-Chip (SOC) 10 funktional an externe Einrichtungen 11, einem externen Speicher 12, Fast-Ethernet-Ports 13 und Gigabit-Ethernet-Ports 15 gekoppelt ist. Die Fast-Ethernet-Ports 13 werden als langsame Ethernet-Ports betrachtet, da sie in der Lage sind, bei Geschwindigkeiten zwischen 10 Megabit pro Sekunde und 100 Megabit pro Sekunde zu funktionieren, wohingegen die Gigabit-Ethernet-Ports 15, die schnelle Ethernet-Ports sind, in der Lage sind, bei 1000 Megabit pro Sekunde zu funktionieren. Externe Einrichtungen 11 können andere Vermittlungseinrichtungen zum Ausdehnen der Vermittlungsfähigkeiten oder andere Einrichtungen sein, die von einer besonderen Anwendung erfordert werden. Der externe Speicher 12 ist zusätzlicher Off-Chip-Speicher, welches zusätzlich zu einem internen Speicher ist, der auf dem SOC 10 angeordnet ist, wie es nachstehend erörtert wird. Die CPU 52 kann nach Notwendigkeit verwendet werden, um das SOC 10 mit Regeln zu programmieren, die zur Steuerung der Paketverarbeitung geeignet sind.
  • Sobald jedoch das SOC 10 geeignet programmiert oder konfiguriert ist, arbeitet das SOC 10 soweit es geht auf eine frei laufende Weise, ohne mit der CPU 52 zu kommunizieren. Da die CPU 52 nicht jeden Aspekt des Betriebs des SOCs 10 steuert, sind die Leistungsanforderungen an die CPU 52 wenigstens im Bezug auf das SOC 10 ziemlich niedrig. Eine leistungsschwächere und daher günstigere CPU 52 kann daher im Vergleich zu bekannten Netzwerk-Switchess verwendet werden. Wie es ebenso nachstehend erörtert werden wird, benutzt das SOC 10 externen Speicher 12 auf eine effiziente Weise, sodass die Anforderungen an die Kosten und die Leistung des Speichers 12 verringert werden können. Der interne Speicher auf dem SOC 10 ist, wie es nachstehend erörtert werden wird, ebenso zur Maximierung des Vermittlungsdurchsatzes und zur Minimierung der Kosten konfiguriert.
  • Es soll angemerkt werden, dass jede beliebige Anzahl von Fast-Ethernet-Ports 13 und Gigabit-Ethernet-Ports 15 bereitgestellt werden können. In einem Ausführungsbeispiel kann ein Maximum von 24 Fast-Ethernet-Ports 13 und 2 Gigabit-Ports 15 bereitgestellt werden. Auf ähnliche Weise können zusätzliche Zwischenverbindungen zu zusätzlichen externen Einrichtungen 11, externem Speicher 12 und CPUs 52 nach Notwendigkeit bereitgestellt werden.
  • Die 1 zeigt ebenso, dass das SOC 10 zahlreiche interne modulare Komponenten beinhaltet, wie beispielsweise wenigstens einen Ethernet-Port-Schnittstellen-Controller (EPIC) 20, von denen mehrere als 20a, 20b,... 20x bezeichnet werden, eine Mehrzahl von Gigabit-Port-Schnittstellen-Controller (GPIC) 30, auf die hier als 30a, 30b,... 30x Bezug genommen wird, einen Internet-Port-Schnittstellen-Controller (IPIC) 90, einen gemeinsamen Puffer-Pool (CBP) 50, eine Speicher-Management-Einheit (MMU) 70 und einen CPU-Management-Schnittstellen-Controller (CMIC) 40. Der CPS-Kanal 80 verläuft durch das SOC 10 und ermöglicht die Kommunikation zwischen den modularen Elementen des SOC 10.
  • Die 2 zeigt ein detaillierteres Blockdiagramm der Funktionselemente des SOG 10. Wie aus 2 ersichtlich ist und wie oben bemerkt worden ist, beinhaltet das SOC 10 eine Mehrzahl von modularen Systemen auf dem Chip, wobei jedes modulare System funktionell von den anderen modularen Systemen getrennt ist, auch wenn es auf dem gleichen Chip ist. Daher kann jedes Modul effizient parallel mit den anderen Modulen arbeiten und ermöglicht diese Konfiguration ein beträchtliches Maß an Freiheit beim Aktualisieren und Verändern der Konstruktion des SOC 10.
  • Das SOC 10 beinhaltet eine Mehrzahl von Ethernet-Port-Schnittstellen-Controllern 20a, 20b, 20c, etc., eine Mehrzahl von Gigabit-Port-Schnittstellen-Controllern 30a, 30b, usw., einen CPU-Management-Schnittstellen-Controller 40, einen gemeinsamen Pufferspeicherpool 50, eine Speichermanagementeinheit 70 einschließlich eines gemeinsamen Puffermanagers CBM (71) und eine systemweite Bus-Struktur, auf die als CPS-Kanal 80 Bezug genommen wird. Die MMU 70 kommuniziert mit dem externen Speicher 12, welcher einen externen Globel-Puffer-Speicher-Pool (GBP) 60 umfasst. Der CPS-Kanal 80 umfasst einen C-Kanal 81, einen P-Kanal 82 und einen S-Kanal 83. Auf dem CPS-Kanal wird ebenso als Zellen-Protokoll-Seitenwand-Kanal Bezug genommen und ist ein 70 Gigabit pro Sekunde/Kanal, der die verschiedenen Module miteinander verbindet bzw. ankoppelt. Wie es ebenso in 2 dargestellt ist, ist ebenso ein Internet-Port-Schnittstellen-Controller (IPIC) 90 umfasst, der eine Mehrzahl von Tabellen 91 und einen Netzwerk-Puffer-Pool (NBP) 92 darauf aufweist. Ebenso ist in dem IPIC 90 wie später erörtert eine Mehrzahl von Komponenten beinhaltet, die der Befähigung des IPIC 90 zugeordnet sind, mit anderen Switchess oder anderen Komponenten durch eine Hochgeschwindigkeitsschnittstelle zu kommunizieren. Der IPIC 90 ermöglicht die Erzeugung von hocheffizienten Stapelkonfigurationen.
  • Wie nachstehend erörtert werden wird, ist jeder EPIC 20a, 20b und 20c, auf dem im gemeinen als EPIC 20 Bezug genommen wird und der GPIC 30a und 30b, auf die im allgemeinen als GPIC 30 Bezug genommen wird, eng verknüpft mit geeigneter Adress-Auflösungs-Logik und Layer-3-Vermittlungstabellen 21a, 21b, 21c, 31a und 31b, Regeltabellen 22a, 22b, 22c, 31a und 31b und VLAN-Tabellen 23a, 23b, 23c, 31a, 31b. Auf diese Tabellen wird im allgemeinen als 21, 31, 22, 32, 23 bzw. 33 Bezug genommen. Diese Tabellen sind wie andere Tabellen auf dem SOC 10 in Silicium als zwei dimensionale x-mal- y-Arrays implementiert, wobei jedes Array (x–y) Speicherablageorte darauf aufweist.
  • In einer beispielhaften Ausführungsform unterstützt jeder IPIC 20 acht Fast-Ethernet-Ports 13 und vermittelt Pakete zu und/oder von diesen Ports nach Notwendigkeit. Die Ports sind daher an das Netzwerkmedium angeschlossen (koaxial, twisted-pair, Faser, usw.), wobei bekannte Medienverbindungstechnologie angewendet wird, und kommunizieren mit dem CPS-Kanal 80 an dessen anderer Seite. Die Schnittstelle von jedem EPIC 20 zu dem Netzwerkmedium kann über eine interne Reduced-Media-Schnittstelle (RMII) bereitgestellt werden, die die direkte Medienverbindung zum SOC 10 ermöglicht. Wie es im Stand der Technik bekannt ist, ist die Selbstauswahl ein Aspekt von Fast-Ethernet, bei dem das Netzwerk in der Lage ist, die höchste Kommunikationsgeschwindigkeit zwischen einer Quelle und einem Ziel auf der Grundlage der Fähigkeiten der entsprechenden Vorrichtungen auszuwählen. Die Kommunikationsgeschwindigkeit kann wie zuvor erwähnt zwischen 10 Megabit pro Sekunde und 100 Megabit pro Sekunde variieren; die Fähigkeit zur Selbstauswahl ist daher direkt in jedes EPIC-Modul eingebaut. Die Adressauflösungslogik (ARL) und die Schicht-3-Tabellen (ARL/L3) 21a, 21b, 21c, die Regeltabellen 22a, 22b und 22c und die VLAN-Tabellen 23a, 23b und 23c sind so konfiguriert, dass sie Teil von oder Schnittstelle zu dem zugeordneten EPIC in einer effizienten und zweckmäßigen Weise sind und ebenso Paketfluß bei Leitungsgeschwindigkeit unterstützen.
  • Jeder EPIC 20 besitzt getrennte Eingangs- und Ausgangsfunktionen. Auf der Eingangsseite kann selbstinitiiertes und CPU-initiiertes Lernen der Ebene-2-Adressinformation auftreten. Die Adressauflösungslogik (ARL) wird zur Unterstützung dieser Aufgabe verwendet. Die Adressalterung ist als ein Merkmal eingebaut, um die Speicherung von Adressinformationen zu verhindern, die nicht mehr länger gültig oder nützlich sind. Der EPIC 20 führt ebenso Ebene-2-Spiegeln durch, ein schneller Filterprozessor (FFP) 141 (vgl. 14) ist in jedem EPIC und GPIC eingefügt, um die Weiterleitung der Pakete zu beschleunigen und den Paketfluß zu verbessern. Die Eingangsseite von jedem EPIC und GPIC, die in 8 als Eingangs-Submodul 14 dargestellt ist, besitzt ein beträchtliches Maß an Komplexität, um in der Lage zu sein, eine beträchtliche Anzahl von verschiedenen Typen von Paketen geeignet zu verarbeiten, die an dem Port eingehen, um bei Leitungsgeschwindigkeit zu Puffern und dann auf geeignete Weise zu dem Ausgang zu übertragen. Funktionell weist jeder Port auf jedem Modul des SOC 10 ein getrenntes Eingangs-Submodul 14 auf, das diesem zugeordnet ist. Aus der Perspektive der Implementierung jedoch werden, um das Ausmaß an auf dem Single-Chip-SOC 10 implementierter Hardware zu minimieren, gemeinsame Hardware-Elemente auf dem Silicium verwendet, um eine Mehrzahl von Eingangs-Sub-Modulen auf jedem bestimmten Modul zu implementieren. Die Konfiguration des SOC 10, die hier erörtert wird, ermöglicht Look-Up-Vorgänge und Filtern gleichzeitig, und ermöglicht daher die Verarbeitung von bis zu 6,6 Millionen Paketen pro Sekunde. Schicht-2-Look-Up-Vorgänge, Schicht-3-Look-Up-Vorgänge und das Filtern geschehen gleichzeitig, um dieses Ausmaß an Leistung zu erzielen. Auf der Ausgangsseite ist der EPIC in der Lage, Paket-Polling zu unterstützen, das entweder als Ausgangsmanagement oder als Klasse-von-Diensten-(COS)-Funktion basiert ist. Es kann das Rerouting/die zeitliche Planung der zu übermittelnden Pakete vorgenommen werden, genauso wie die Mitteilung einer Head-Of-Line-(HOL)-Blockierung, die Paketalterung, das Wiederzusammensetzen von Zellen und andere Funktionen, die mit der Ethernet-Port-Schnittstelle zusammen hängen.
  • Jeder GPIC 30 ist ähnlich zu jedem EPIC 20, aber unterstützt nur einen Gigabit-Ethernet-Port und verwendet eine port-spezifische ARL Tabelle anstelle der Verwendung einer ARL Tabelle, die mit anderen Ports geteilt wird. Zusätzlich ist jeder GPIC-Port im Gegensatz zu einem RMII mit dem Netzwerkmedium unter Verwendung einer unabhängigen Gigabit-Medium-Schnittstelle (GMII) verbunden.
  • Der CMIC 40 arbeitet als Gateway zwischen dem SOC 10 und der Host-CPU. Die Kommunikation kann beispielsweise entlang eines PCI-Buses oder eines anderen akzeptierbaren Kommunikationsbuses sein. Der CMIC 40 kann sequenzielle direkt zugeordnete Zugriffe zwischen der Host-CPU 52 und dem SOC 10 bereitstellen. Die CPU 52 ist über den CMIC 40 in der Lage, auf zahlreiche Resourcen auf dem SOC 10 zuzugreifen, einschließlich MIB-Zählern, programmierbaren Registern, Status- und Steuerregistern, Konfigurationsregistern, ARL-Tabellen, port-basierten VLAN-Tabellen, IEEE 802.1q-VLAN-Tabellen, Schicht-3-Tabellen, Regeltabellen, CBP-Adress- und Datenspeicher sowie GBP-Adress- und Datenspeicher. Optional kann der CMIC 40 eine DMA-Unterstützung, eine DMA-Verkettung und -Zerstreuen/-Sammeln, sowie Master- und Ziel-PCI 64.
  • Der gemeinsame Pufferspeicherpool oder CBP 50 kann als On-Chip-Datenspeicher betrachtet werden. Der CBP 50 ist ein Ebene-1-Hochgeschwindigkeitsspeicher des Typs SRAM, um die Leistung zu maximieren und die Anforderungen an den Hardware-Overhead zu minimieren. Die CBP 50 kann beispielsweise eine Größe von 720 Kilobyte aufweisen und bei einer Geschwindigkeit von 132 MHZ funktionieren. Die in dem CBP 50 gespeicherten Pakete sind üblicherweise als Reihen von verketteten Zellen, anstelle von Paketen, gespeichert. Die Pakete werden innerhalb des SOC 10 als Zellen gespeichert und verschoben und als Pakete wieder zusammengefügt, bevor sie an geeignete Ausgangsports ausgesendet werden. Wie in der Figur dargestellt ist, beinhaltet die MMU 70 ebenso den gemeinsamen Puffer-Manager (CBM) 71 darauf. Der CBM 71 behandelt das Schlangen-Managmement und ist verantwortlich für die Zuordnung von Zellen-Zeigern für eingehende Zellen, genauso wie das Zuordnen von gemeinsamen Paket-Ids (CPIDs) sobald das Paket vollständig in den CBP geschrieben ist. Der CBM 71 behandelt ebenso das Management von einem freien Adresszeigerpool auf dem Chip, kann aktuelle Datentransfer zu und von dem Datenpool steuern und kann das Management des Speicherbudgets zur Verfügung stellen.
  • Der globale Speicherpufferpool oder GBP 60 arbeitet als Ebene-2-Speicher und kann auf dem Chip oder außerhalb des Chips angeordnet sein. Der GBP 60 ist außerhalb des Chips in Bezug auf das SOC 10 angeordnet. Wenn er außerhalb des Chips angeordnet ist, wird der GBP 60 als Teil des gesamten externen Speicher 12 angesehen. Als Ebene-2-Speicher muss der GBP nicht ein teuerer Hochgeschwindigkeits-SRAM sein und kann ein langsamerer kostengünstiger Speicher wie beispielsweise DRAM sein. Der GBP ist eng mit der MMU 70 gekoppelt und arbeitet ähnlich zu der GBP dahingehend, dass Pakete als Zellen gespeichert werden. Zum Senden und Mehrfachsenden von Nachrichten, wird nur eine Kopie des Pakets in dem GBP 60 gespeichert.
  • Wie in den Figuren dargestellt ist, ist die MMU 70 zwischen dem GBP 60 und dem CPS-Kanal 80 angeordnet und wirkt als Schnittstelle des externen Speichers. Um die Verwendung des Speichers zu optimieren, beinhaltet die MMU 70 mehrfache Lese- und Schreibpuffer und unterstützt zahlreiche Funktionen einschließlich des globalen Schlangen-Managements, welches allgemein die Zuordnung von Zellenzeigern für umgeleitete eingehende Pakete die Wartung der globalen FAP, das zeitoptimierte Zellenmanagement, das globale Speicherbudgetmanagement, die GPID-Zuordnung und die Ausgangsmanagerbenachrichtigung, das Schreibpuffermanagement, das Lesen von Vorabrufen auf der Grundlage des Ausgangsmanagers/der Art von Dienstanforderungen und die Smart-Speicher-Steuerung umfassen.
  • Wie in 2 dargestellt ist, besteht der CPS-Kanal 80 derzeit aus drei getrennten Kanälen, auf die als C-Kanal, P-Kanal und S-Kanal Bezug genommen wird. Der C-Kanal ist 128 Bit breit und läuft bei 132 MHZ. Der Pakettransport zwischen Ports geschieht auf dem C-Kanal. Nachdem dieser Kanal nur für den Datentransfer verwendet wird, gibt es keinen Overhead, der mit seiner Benutzung in Beziehung steht. Der P-Kanal oder Protokoll-Kanal ist synchron oder mit dem C-Kanal gerastet. Während der Zellentransfers wird der Nachrichten-Header über den P-Kanal mittels der MMU geschickt. Der P-Kanal ist 64 Bit breit und läuft bei 132 MHZ.
  • Der S- oder Seitenbandkanal läuft bei 132 MHZ und ist 32 Bit breit. Der S-Kanal wird für Funktionen verwendet, wie beispielsweise zum Überbringen des Port-Verbindungs-Status zum Empfangen des Signals Port-voll, der Port-Statistiken, der ARL-Tabellen-Synchronisation, Speicher- und Registerzugriff zur CPU und anderen CPU-Management-Funktionen, und dem Signal globaler-Speicher-voll und gemeinsamer-Speicher-voll.
  • Ein geeignetes Verständnis des Betriebs des SOC 10 erfordert ein geeignetes Verständnis des Betriebs des CPS-Kanals 80. Unter Bezugnahme auf 3 kann ersehen werden, dass in dem SOC 10 an dem Eingang Pakete, die an dem EPIC oder GPIC ankommen, von der EPIC 20 oder dem GPIC 30 in 64-Byte-Zellen unterteilt werden. Die Verwendung von Zellen auf dem Chip anstelle von Paketen erleichtert es, das SOC so anzupassen, dass es mit zell-basierten Protokollen arbeitet, wie beispielsweise der asynchrone Transfermodus (ATM). Derzeit verwendet ATM jedoch Zellen, die 53 Byte lang sind, wobei 58 Byte für die Nutzdaten und 5 Byte für den Header sind. In dem SOC werden eingehende Pakete in Zellen unterteilt, die 64 Byte lang sind, wie es oben erörtert worden ist, und die Zellen werden weiterhin in 4 separate 16 Byte Zellbläcke Cn0... Cn3 unterteilt. Mit dem C-Kanal gerastet ist der P-Kanal, der den Betriebs-Code synchronisiert mit Cn0 rastet. Ein Port-Bitmap wird in dem P-Kanal während der Phase Cn1 eingefügt. Das unmarkierte Bitmap wird in den P-Kanal während der Phase Cn2 eingeführt und ein Zeitstempel wird auf dem P-Kanal in Cn3 angeordnet. Unabhängig von Vorgängen auf dem C- und P-Kanal wird der S-Kanal als Seitenband verwendet und ist daher von den Aktivitäten auf dem C- und P-Kanal entkoppelt.
  • Der IPIC 90 kommuniziert mit dem CPS-Kanal 80 und funktioniert im wesentlichen wie ein Port. Pakete, die in den IPIC von außerhalb des SOC 10 kommen, kommen entweder von einem anderen IPIC-Modul von einem anderen SOC 10 kommen oder von anderen Verbindungen über eine Hochleistungsschnittstelle. Der IPIC ist daher von einem EPIC-Modul 20 unterscheidbar, da jeder EPIC üblicherweise eine Mehrzahl von Ports aufweist, wohingegen der IPIC einen einzigen Port hat. Wie detaillierter erörtert werden wird, beinhaltet der IPIC einen internen Speicherpuffer, der Netzwerkpufferpool oder NBP genannt wird, und der in den 1 und 2 als NBP 92 dargestellt ist. Der IPIC 90 beinhaltet ebenso eine Mehrzahl von Tabellen 91 zum Bearbeiten der Pakete, wie beispielsweise eine VLAN-Tabelle 802.1q, Trunkierungstabellen usw.. Der IPIC 90 hat keine ARL-Tabellen, da die Zielportnummer in dem Modul-Header verfügbar ist. Pakete, die im SOC 10 über entweder einen EPIC 20 oder einen GPIC 30 eingehen und für den IPIC 90 bestimmt sind, werden nicht in dem CBP oder GBP gespeichert, sondern werden stattdessen zu dem NBP 92 innerhalb des IPIC 90 selbst geleitet und dort gespeichert.
  • Zelle oder C-Kanal
  • Die Entscheidungen für den CPS-Kanal geschehen außerhalb des Bandes. Jedes Modul (EPIC, GPIC, IPIC, usw.) überwacht den Kanal und das Zuordnen von Zielports entspricht den geeigneten Transaktionen. Der Entscheidungsvorgang für den C-Kanal ist ein Round-Robin-Entscheidungsmechanismus mit Anforderungspriorität. Wenn keine Anforderungen aktiv sind, kann jedoch das Default-Modul, das während der Konfiguration des SOC 10 ausgewählt werden kann, auf dem Kanal parken und vollständigen Zugriff darauf haben. Wenn alle Anfragen aktive sind, ist die Konfiguration des SOC 10 so, dass der MMU jedem anderen Zellzyklus Zugriff gewährt wird, und der EPIC 20, der GPIC 30 und der IPIC 90 gleichen Zugriff auf den C-Kanal auf einer Round-Robin-Basis teilen. Die 4A und 4B zeigen einen Entscheidungsmechanismus für den C-Kanal, bei dem der Bereich A die MMU ist und der Bereich B aus zwei GPICs, drei EPICs und einem IPIC besteht. Die Teile wechseln den Zugriff ab und da die MMU das einzige Modul in dem Bereich A ist, gewinnt er jeden anderen Zykluszugriff. Die Module im Bereich B erhalten Zugriff auf einer Round-Robin-Basis, wie zuvor ausgeführt.
  • Das Entscheidungsschema für den C-Kanal 81, lautet Round-Robin mit Anforderungspriorität, wie es zuvor erörtert worden ist und in den 4A und 4B gezeigt ist. Jedes I/O-Modul, EPIC 20, GPIC 30, CMIC 40 und IPIC 90 neben der MMU 70 können eine Anforderung für Zugriff auf den C-Kanal auslösen. Wenn keine Anforderungen zu keiner beliebigen gegebenen Zeit herrschen, bekommt das Default-Modul, das mit einer hohen Priorität ausgestattet worden ist, vollständigen Zugriff auf den C-Kanal 81. Wenn ein beliebiges einzelnes I/O-Modul oder die MMU 70 Zugriff auf den C-Kanal 81 anfordert, bekommt das einzelne Modul auf Anfrage Zugriff auf den C-Kanal 81.
  • Wenn die EPIC-Module 20a, 20b, 20c und die GPIC-Module 30a und 30b, der IPIC 90 und der der CMIC 40 gleichzeitig Zugriff auf den C-Kanal anfordern, wird der Zugriff in der Art eines Round-Robin gewährt. Für einen bestimmten Entscheidungszeitraum würde jedem der I/O-Module Zugriff auf den C-Kanal 81 gewährt werden. Beispielsweise würde jedem GPIC-Modul 30a und 30b Zugriff gewährt werden, gefolgt von den EPIC-Modulen und schließlich von der CMIC 40. Nach jedem Entscheidungszeitraum würde dem nächsten I/O-Modul mit einer gültigen Anforderung der Zugriff auf den C-Kanal 81 gegeben werden. Dieses Muster würde so lange fortfahren, wie die I/O-Module eine aktive Anforderung auf Zugriff auf den C-Kanal 81 liefern.
  • Protokoll oder P-Kanal
  • Unter Bezugnahme noch einmal auf den Protokoll- oder P-Kanal können eine Mehrzahl von Nachrichten auf dem P-Kanal angeordnet werden, um auf geeignete Weise den Datenstrom zu leiten, der auf dem C-Kanal fließt. Da der P-Kanal 82 64 Bit breit ist und eine Nachricht üblicherweise 128 Bit erfordert, sind zwei kleinere 64-Bit-Nachrichten zusammengefügt, um eine komplette P-Kanal-Nachricht zu bilden. Die folgende Liste zeigt die Felder, die Funktion und die verschiedenen Bit-Zähler der 128 Bit-Nachricht auf dem Bit-Kanal an.
    IP/IPX-Bits – 2 Bit lang – IP/IPX-Bits – Enthalten Informationen über den Pakettyp. Wert 0 ist L2-geschaltetes Paket. Wert 1 – das Paket ist ein IP-geschaltetes Paket. Wert 2 – das Paket ist ein IPX-geschaltetes Paket. Wert 3 – das Paket ist ein IP-Multicast-Paket.
    Nächste Zelle – 2 Bit lang – Nächste Zelle hat das einzige Erfordernis, den Zellen-Header zu erfüllen: Wert 01 – wenn die gültigen Bytes in dieser Zelle zwischen 1 und 16 liegen. Wert 02 – wenn die gültigen Bytes in dieser Zelle zwischen 17 und 32 sind. Wert 03 – wenn die gültigen Bytes in dieser Zelle zwischen 33 und 48 sind. Wert 00 – wenn die gültigen Bytes in dieser Zelle zwischen 49 und 64 sind. Für die erste Zelle sind alle vier Zyklen gültig.
    Quell-Ziel-Port – 6 Bit lang – Die Port Nummer, die die Nachricht sendet oder die Nachricht empfängt. Die Auslegung der Quelle oder des Ziels hängt von dem Betriebs-Code ab.
    Cos – 3 Bit lang – COS – Art des Dienstes für dieses Paket.
  • J Bit – 1 Bit lang – J Bit in der Nachricht identifiziert, dass das Paket ein Jumbo-Paket ist.
    S Bit – 1 Bit lang – S Bit wird verwendet, um anzuzeigen, dass dieses die erste Zelle des Pakets ist. Wenn S Bit gesetzt ist, sind alle vier Zyklen gültig.
    E Bit – 1 Bit lang – E Bit wird verwendet, um anzuzeigen, dass dieses die letzte Zelle des Pakets ist. Wenn das E Bit gesetzt ist, enthält das Längenfeld die Anzahl der gültigen Bytes bei der Übertragung.
    CRC Bits – 2 Bit Lang – Wert 0x01 – ist Zusatz zum CRC Bit. Wenn es gesetzt ist, sollte der Ausgangsport das CRC zu dem Paket anhängen. Wert 0x02 – ist das Regenerations-CRC-Bit. Wenn dieses Bit gesetzt ist, sollte der Ausgangsport das CRC regenerieren. Wert 0x00 – keine Veränderung beim CRC. Wert 0x03 – nicht verwendet.
    P Bit – 1 Bit lang – Wenn dieses Bit gesetzt ist, sollte die MMU das gesamte Paket entfernen.
    Len – 7 Bit lang – Die Len-Bits werden verwendet, um die gültige Anzahl von Bytes bei dieser Übertragung anzuzeigen. Dieses Feld ist für jede Zelle gültig.
    O Bits – 2 Bit lang – Optimierungsbits werden für die CPU bereitgestellt, sodass diese das Paket effizienter verarbeiten kann. Wert 0 – nicht verwendet. Wert 1 – wird gesetzt, wenn das Paket zu der CPU als Ergebnis gesendet wird, dass das C-Bit in der Default-Router-Tabelle gesetzt ist. Wert 2 – fehlende Übereinstimmung des Frame-Typs – wenn dieses Bit gesetzt ist, stimmt der IPX-Frame-Pakettyp nicht mit dem Pakettyp in der IPX-L3-Tabelle überein. Wert 3 – reserviert.
    Bx/Mx Bitmap – 31 Bit lang – Sende- und Multicast-Bitmap. Dieses Feld identifiziert alle Ausgangsports, an die die Pakete gesendet werden sollen.
    Unmarkierte Bits/Quellport (bit 0..5) – 31/5 Bit lang. Wenn der Betriebs-Code 0x02 ist, d. h. das Paket wird von dem Port zur MMU übertragen, dann wird dieses Feld als nicht markiertes Bitmap interpretiert. Aber wenn der Betriebs-Code 0x01 ist, d. h., dass das Paket von der MMU zum Ausgangsport überfragen wird, dann werden die letzten sechs Bit dieses Feldes als Quell-Port-Feld interpretiert. Unmarkierte Bits – diese Bits identifizieren alle Ausgangsports, welche anzunehmenderweise den Markierungs-Header entfernen.
    Quellport (Bit 0..5) – die Quell-Port-Nummer, d. h. die Port-Nummer, an den das Paket in den Switch gelangt ist.
    U Bit – 1 Bit lang – U Bit – Dieses Feld besitzt nur eine Bedeutung, wenn der Betriebs-Code 0x01 ist, d. h. das Paket wird von der MMU zum Ausgang übertragen. Wenn dieses Bit gesetzt ist, dann soll das Paket aus dem Port als nicht markiert ausgehen, d. h. die MAC muss die Markierung entfernen.
    Zeitstempel – 14 Bit lang – Der Zeitstempel ist ein 14 Bit breiter, laufender Zähler, den das System in dieses Feld packt, wenn das Paket ankommt. Der Zeitstempel wird mit der Auflösung von einer Mikrosekunde implementiert.
    Vlan Id – 12 Bit lang – VLAN-Identifizierer. Anmerkung: Bei Orion-SA werden alle Pakete auf dem CP-Kanal als markierte Pakete übertragen, d. h., die VLAN Id wird mit dem Paket geschickt, wohingegen in dem Orion-SM die VLAN Id auf dem P-Kanal weitergeleitet wird. Das bedeutet, dass jedes Paket (nicht markiert oder markiert) so wie es ist auf den Zellkanal geht.
    Übereinstimmende Filter – 4 Bit lang – Regeln für übereinstimmende Filter – Dieses Feld identifiziert das übereinstimmende Filter, wenn das Paket zu der CPU als Ergebnis einer Filterübereinstimmung gehen soll. Dieses Feld ist nur gültig, wenn das Bit 0 des CPU-Betriebscodes gesetzt ist. Wenn das MSB (Bit 4) 0 ist, dann ist es Filtersatz 1, aber wenn das MSB (Bit 4) 1 ist, dann ist es der Filtersatz 2.
    CPU Betriebscodes – 18 Bit lang – CPU Betriebscodes: Wir haben diese Bits zum effizienten Verarbeiten des Pakets durch die CPU zur Verfügung gestellt. Diese Bits werden gesetzt, wenn das Paket aus verschiedenen Gründen zu der CPU geschickt wird. Die folgenden Betriebscodes sind definiert: Bit 0 – Filterübereinstimmungsbit – Dieses Bit wird als Ergebnis einer Filterübereinstimmung gesetzt und eine der Aktionen des Filters ist es, das Paket zu der CPU zu senden. Bit 1 – Dieses Bit wird gesetzt wenn 1) das CPU-Lern-Bit in der portbasierten VLAN-Tabelle gesetzt ist und die Quell-MAC-Adresse in der ARL-Tabelle gelernt ist oder 2) das CM Bit in der PVLAN-Tabelle gesetzt ist und es ein SLF ist oder 3) die eingehende VLAN Id nicht in der 802.1Q VLAN-Tabelle gefunden worden ist. Bit 2 – Dieses Bit ist gesetzt, wenn das Quellroutingbit Bit 40 der Quell-MAC-Adresse ist. Bit 3 – dieses Bit wird gesetzt, wenn 1) es ein Ziel-Look-Up-Fehler ist oder 2) es eine L3-Stations- Bewegung gibt. Bit 4 – Steuerframe Bit; dieses Bit ist gesetzt, wenn das Paket ein BPDU, GVRP, GMRP ist oder eine der reservierten Adressen. Bit 5 – IP-Paket-Bit – Dieses Bit ist gesetzt, wenn das Paket IP-geschaltet werden muß. Bit 6 – IPX-Paket-Bit – Dieses Bit ist gesetzt, wenn Paket IPX-geschaltet werden muß. Bit 7 – IP-Optionen-Vorhanden-Bit – Dieses Bit ist gesetzt, wenn die IP-Optionen vorhanden sind. Bit 8 – Dieses Bit ist gesetzt, wenn das Paket ein Klasse-D-IP-Multicast-Paket ist. Bit 9 – Dieses Bit ist gesetzt, wenn die TTL nach der Decrementierung 0 oder weniger ist. Bit 10 – Sendebit – Wenn dieses Bit gesetzt ist, dann ist das Paket ein Sende-Paket. Bit 11 – Multicast-Paket – Dieses Bit ist gesetzt, wenn das Paket ein Multicast-Paket ist.
    Neue-IP-Prüfsumme – 16 Bit lang – Neue-IP-Prüfsumme – Diese Feld wird nur für Ebene-3-vermittelte-IP-Multicast-Pakete verwendet. Dieses Feld enthält die neue IP-Prüfsumme, die beim Eingang nach dem Dekrementieren des TTL-Feldes berechnet wird.
    L3-Port-Bitmap – 31 Bit lang – L3 Port-Bitmap – identifiziert alle L3-vermittelten Ports für ein IP-Multicast-Paket.
  • MODULSPEZIFISCHE FELDER
    • C Bit – 1 Bit lang – Steuerbit – Das Steuerbit zeigt an, ob dies ein Steuerframe oder ein Datenframe ist. Das Bit ist für einen Steuerframe zu 1 gesetzt und für einen Datenframe zu 0 gesetzt.
    • Mod Betriebscodes – 3 Bit lang – Mod Betriebscodes – werden verwendet um den Pakettyp zu identifizieren. Wert 00 – identifiziert, dass das Paket ein Paket mit einem einzigen Adressaten ist und der Ausgangsport einzig von dem Modul-Id-Bitmap (in diesem Feld wird nur ein Bit gesetzt) und der Ausgangs-Port-Nummer identifiziert wird. Wert 01 – identifiziert, dass das Paket ein Sendungs- oder Ziel-Look-Up-Fehler (DLF) ist und an mehrfache Ports auf dem gleichen Modul oder mehrfache Ports auf verschiedenen Modulen adressiert ist. Der Ausgangsport ist in diesem Fall kein gültiges Feld. Wert 02 – identifiziert, dass das Paket ein Multicast-Paket ist und an mehrfache Ports adressiert ist. Wert 03 – identifiziert, dass das Paket ein IP-Multicast-Paket ist und an mehrfache Ports adressiert ist.
    • TGID – 3 Bit lang – TGID Bits – TGID identifiziert den Trunk-Gruppen-Identifizierer des Quellports. Dieses Feld ist nur gültig, wenn T Bit gesetzt ist.
    • T – 1 Bit lang – Wenn dieses Bit gesetzt ist, ist TGID ein gültiges Feld.
    • MT-Modul-Id – 5 Bit lang – MT-Modul-Id ist die „gespiegelt zu"-Modul-Id. Dieses Feld wird verwendet, um das Paket an einen gespiegelten Port zu schicken, der auf einem entfernten Modul angeordnet ist. Diese Feld ist nur gültig, wenn M-Bit gesetzt ist.
    • M Bit – 1 Bit lang – M Bit – Wenn dieses Bit gesetzt ist, ist die MT-Modul-Id ein gültiges Feld.
    • Entfernter Port – 6 Bit lang – Entfernter Port ist die Portnummer des entfernten Moduls, welches anzunehmender Weise dieses Paket empfängt.
    • Quellport – 6 Bit lang – Quellport ist der Quellport des Pakets.
    • PFM Bits – 2 Bit lang – PFM Bits ist der Port-Filter-Modus des Quellports. Diese Bits sind nur gültig für Multicast-Pakete.
    • Mod Id Bitmap – 32 Bit lang – Das Bitmap aller Module, die dieses Paket bekommen sollen.
  • Das Betriebscodefeld der P-Kanal-Nachrichten definiert den Typ der aktuell gesendeten Nachricht. Während der Betriebscode derzeit so dargestellt ist, als ob er eine Breite von 2 Bit hat, kann das Betriebscodefeld wie gewünscht erweitert werden, um neue Arten von Nachrichten in der Zukunft definieren zu können. Der oben definierte P-Kanal-Nachrichten-Typ ist jedoch graphisch in 5 dargestellt.
  • Eine frühe Abbruch-Nachricht wird verwendet, um dem CBM 71 anzuzeigen, dass das aktuelle Paket abzuschließen ist. Während des Betriebs, wie es nachstehend detailliert erörtert werden wird, ist das Statusbit (S)-Feld in der Nachricht gesetzt, um den Wunsch anzuzeigen, das aktuelle Paket von dem Speicher zu entfernen. In Abhängigkeit des Status-Bits würden ebenso alle anwendbaren Ausgangsports das aktuelle Paket vor der Übertragung entfernen.
  • Das Quell-Ziel-Port-Feld der P-Kanal-Nachricht definiert, wie oben ausgeführt, die Zielportadresse bzw. die Quellportadresse. Jedes Feld ist sechs Bit breit und erlaubt daher die Adressierung von 64 Ports.
  • Das CRC-Feld der Nachricht ist zwei Bit breit und definiert die CRC-Aktionen. Bit 0 des Felds liefert eine Anzeige, ob der zugeordnete Ausgangsport eine CRC an das aktuelle Paket anhängen soll. Ein Ausgangsport würde dann eine CRC an das aktuelle Paket anhängen, wenn Bit 0 des CRC-Felds zu logisch 1 gesetzt ist. Bit 1 des CRC-Felds liefert eine Anzeige, ob der zugeordnete Ausgangsport eine CRC für das aktuelle Paket regenerieren soll. Ein Ausgangsport würde eine CRC regenerieren, wenn Bit 1 des CRC-Felds zu logisch 1 gesetzt ist. Das CRC-Feld ist nur für die letzte übertragene Zelle gültig, wie es von dem E-Bit-Feld der P-Kanal Nachricht definiert ist, das zu logisch 1 gesetzt ist.
  • So wie das CRC Feld sind auch das Statusbitfeld (st), das Len Feld und das Zellenzählfeld für die Nachrichten nur für die letzte Zelle eines Paket gültig, das gesendet wird, wie es durch das E-Bit-Feld der Nachricht definiert wird.
  • Da das SOC 10 zum effizienten Stapeln von Konfigurationen eingerichtet ist, sind auf den Protokollkanalnachrichten 32 Bit für ein Modul-Id-Bitmap vorgesehen, welches ein Bitmap aller Module eines Stapels sind, die das Paket bekommen sollen. Aufgrund der Wichtigkeit der Modul-Id im SOC 10 sind die Modul-Id und die Portnummer (aus dem Entferne-Port-Feld bestimmbar) wichtig für einen richtigen Paketfluß in einem Stapel.
  • Das Zeitstempelfeld der Nachricht hat eine Auflösung von einer Mikrosekunde und ist nur für die ersten Zelle des Pakets gültig, das von dem S-Bit-Feld der Nachricht definiert wird. Eine Zelle wird als erste Zelle eines empfangenen Pakets definiert, wenn das S-Bit-Feld der Nachricht auf einen logischen 1-Wert gesetzt ist.
  • Wie nachstehend detaillierter beschrieben werden wird, sind der C-Kanal 81 und der P-Kanal 82 synchron derart miteinander verbunden, dass Daten auf dem C-Kanal 81 über den CPS-Kanal 80 übertragen werden, während eine entsprechende P-Kanal-Nachricht gleichzeitig übertragen wird.
  • S-Kanal oder Seitenbandkanal
  • Der S-Kanal 83 ist ein 32 Bit breiter Kanal, der einen getrennten Kommunikationspfad innerhalb des SOC schafft. Der S-Kanal 83 wird zur Steuerung mittels der CPU 52, der internen Flußsteuerung des SOC 10 und der Zwischenmodulbenachrichtigung im SOC 10 verwendet. Der S-Kanal 83 ist ein Seitenbandkanal des CPS-Kanal 80 und ist elektrisch und physikalisch von dem C-Kanal 81 und dem P-Kanal 82 isoliert. Es ist wichtig anzumerken, dass da der S-Kanal getrennt und verschieden von dem C-Kanal 81 und dem P-Kanal 82 ist, der Betrieb auf dem S-Kanal 83 ohne Leistungsverschlechterung bezogen auf den Betrieb des C-Kanals 81 und des P-Kanals 82 fortgesetzt werden kann. Da umgedreht der C-Kanal nicht zur Übertragung von Systemnachrichten verwendet wird, sondern nur für Daten, gibt es keinen Overhead, der dem C-Kanal 81 zugeordnet ist und daher ist der C-Kanal 81 in der Lage, wie benötigt frei zu laufen, um eingehende und ausgehende Paketinformation zu bearbeiten.
  • Der S-Kanal 83 des CPS-Kanals 80 schafft einen systemweiten Kommunikationspfad zum Übertragen von Systemnachrichten, beispielsweise um der CPU 52 Zugang zu der Steuerstruktur des SOC 10 zu verschaffen. Systemnachrichten beinhalten Port-Status-Informationen einschließlich Portverbindungsstatus, Empfangsport-voll und Portstatistiken, die Synchronisation der ARL-Tabelle, Zugang der CPU 52 auf den GBP 60 und den CBP 50 Speicherpuffer und die SOC 10-Steuerregister und Speichervollbenachrichtigung entsprechend dem GBP 60 und/oder CBP 50.
  • 6 zeigt ein Nachrichtenformat für eine S-Kanal Nachricht auf dem S-Kanal 83. Die Nachricht wird aus vier 32-Bit Worten gebildet; die Bits der Felder der Wörter sind wie folgt definiert:
    Betriebscode – 6 Bit lang – Identifiziert den Typ der Nachricht, der auf dem S-Kanal vorliegt;
    Ziel-Port – 6 Bit lang – Definiert die Portnummer, an die die aktuelle S-Kanal Nachricht adressiert ist;
    Quellport – 6 Bit lang – Definiert die Portnummer, von dem die aktuelle S-Kanal Nachricht stammt;
    COS – 3 Bit lang – Definiert die Klasse des Dienstes, die der aktuellen S-Kanal-Nachricht zugeordnet ist; und
    C-Bit – 1 Bit lang – Definiert logisch, ob die aktuelle S-Kanal Nachricht für die CPU 52 gedacht ist.
    Fehlercode – 2 Bit lang – Definiert einen gültigen Fehler, wenn das E-Bit gesetzt ist;
    Datenlänge – 7 Bit lang – Definiert die Gesamtanzahl von Datenbytes in dem Data-Feld;
    E-Bit – 1 Bit lang – zeigt logisch an, ob ein Fehler bei der Ausführung des aktuellen Befehls aufgetreten ist, wie er durch den Betriebscode definiert ist;
    Adresse – 32 Bit lang – Definiert die Speicheradresse, die dem aktuellen Befehl zugeordnet ist, wie er im Betriebscode definiert ist;
    Daten –0–127 Bit lang – Enthält die Daten, die dem aktuellen Betriebscode zugeordnet sind.
  • Mit der Konfiguration des CPS-Kanals 80, wie sie oben ausgeführt worden ist, ist die Entkopplung des S-Kanals von dem C-Kanal und dem P-Kanal derart, dass die Bandbreite auf dem C-Kanal für den Zellentransfer reserviert werden kann und ein Überladen des C-Kanals nicht die Kommunikation auf dem Seitenbandkanal beeinträchtigt.
  • SOC-Betrieb
  • Die Konfiguration des SOC 10 unterstützt Fast-Ethernet-Ports, Gigabit-Ports und erweiterbare Zwischenverbindungen, wie es zuvor ausgeführt worden ist. Die SOC-Konfiguration kann ebenso wie zuvor angemerkt gestapelt sein, wobei auf diese Weise eine signifikante Portausdehnungs-Fähigkeit ermöglicht wird. Wenn einmal Pakete von dem SOC 10 empfangen worden sind, in Zellen unterteilt worden sind und auf den CPS-Kanal 80 gesetzt worden sind, können die SOC-Module mit dem CPS-Kanal eine Schnittstelle bilden, den Kanal beobachten und die geeigneten Informationen nach Notwendigkeit extrahieren. Wie nachstehend erörtert wird, tritt ein signifikantes Ausmaß von gleichzeitigen Look-Ups und Filterungen auf, sowie die Pakete in die Eingangssubmodule 14 einer EPIC 20 oder GPIC 30 eintreffen, bezüglich Ebene-2 und Ebene-3 Look-Ups und schneller Filterung.
  • Unter Bezugnahme nun auf die 8 und 9 wird die Verarbeitung eines Datenpakets beschrieben. Zum Zwecke der Erklärung wird angenommen, dass die zu empfangenden Ethernet-Daten an einen der Ports 24a des EPIC 20a eintreffen. Es wird angenommen, dass das Paket zu einem User an einem der Ports 24c des EPIC 20c weitergeleitet werden soll. Alle EPIC 20 (20a, 20b, 20c, usw.) besitzen ähnliche Merkmale und Funktionen, wobei jedes individuell auf der Grundlage des Paketflusses arbeitet.
  • Ein Eingangsdatenpaket 112, das auf den Port 24a angewendet wird, ist dargestellt. Das Datenpaket 112 ist in diesem Beispiel durch die aktuellen Standards für 10/100 Mbps-Ethernet-Übertragung definiert und kann jede beliebige Länge oder Struktur aufweisen, die von diesem Standard definiert wird. Diese Erörterung wird annehmen, dass die Länge des Datenpakets 112 1024 Bit oder 128 Byte ist.
  • Es soll angemerkt werden, dass jeder EPIC 20 und jeder GPIC 30 ein Eingangssubmodul 14 und ein Ausgangssubmodul 16 aufweist, die die portspezifischen Eingangs- und Ausgangsfunktionen zur Verfügung stellen. Die gesamte Verarbeitung von eingehenden Paketen geschieht in dem Eingangs-Submodul 14 und Merkmale wie beispielsweise der Prozessor für schnelles Filtern, die Ebene 2 (L2)- und Ebene 3 (L3)-Look-Ups, das Ebene-2-Lernen, sowohl das selbstinitiierte als auch das von der CPU 52 initiierte Ebene-2-Tabellenmanagement, die Ebene 2 Vermittlung, das Unterteilen der Pakete, die Anwendung eines Off-Sets und das Kanalabsenden geschieht in dem Eingangssubmodul 14. Nach den Look-Ups, der Verarbeitung der schnellen Filterung und dem Unterteilen in Zellen, wie es oben erwähnt und nachstehend erörtert werden wird, wird das Paket von dem Eingangssubmodul 14 in die Absendeeinheit 18 gesetzt und dann auf den CPS-Kanal 80 gesetzt, wobei das Speichermanagement von der MMU 70 besorgt wird. In der Sendeeinheit 18 sind eine Anzahl von Eingangspuffern vorgesehen, um die richtige Bearbeitung der Pakete/Zellen sicherzustellen. Wenn einmal die Zellen oder die in Zellen umgewandelten Pakete auf den CPS-Kanal 80 gesetzt worden sind, hat das Eingangssubmodul mit dem Paket abgeschlossen. Der Eingang ist nicht an der dynamischen Speicherzuordnung oder dem spezifischen Pfad beteiligt, den die Zellen zu deren Ziel nehmen werden. Das Ausgangssubmodul 16, das in 8 als Submodul 16a des EPIC 20a dargestellt ist, beobachtet den CPS-Kanal 80 und sucht kontinuierlich nach Zellen, die für einen Port des bestimmten EPIC 20 bestimmt sind. Wenn die MMU 70 ein Signal empfängt, dass ein Ausgang, der einem Ziel eines Pakets im Speicher zugeordnet ist, bereit zum Empfangen von Zellen ist, ruft die MMU 70 Zellen aus dem Speicher ab, die dem Paket zugeordnet sind, wie nachstehend erörtert werden wird, und setzt die Zellen auf den CPS-Kanal 80, mit dem Ziel des geeigneten Ausgangssubmoduls. Ein FIFO in dem Ausgangssubmodul 16 sendet kontinuierlich ein Signal auf den CPS-Kanal 80, dass er bereit zum Empfangen von Paketen ist, wenn es Platz in dem FIFO für zu empfangende Pakete oder Zellen gibt. Wie zuvor erwähnt, ist der CPS-Kanal 80 zum Bearbeiten von Zellen konfiguriert, es werden jedoch Zellen von einem bestimmten Paket immer zusammen bearbeitet, um zu vermeiden, dass die Pakete beschädigt oder durcheinander gebracht werden.
  • In einer beispielhaften Ausführungsform, wenn das Datenpaket 112 von dem EPIC Modul 20a empfangen wird, bestimmt das Eingangssubmodul 14a innerhalb des EPIC 20a als Eingangsfunktion das Ziel des Pakets 112. Spezifisch werden die ersten 64 Byte des Datenpakets 112, die die Headerinformation bilden, von dem Eingangs-Submodul 14a gepuffert und mit Daten verglichen, die in den ARL/L3-Tabellen 21a gespeichert sind, um den Zielport 24c des Datenpakets 112 zu bestimmen. Ebenso als Eingangsfunktion unterteilt das Eingangsmodul 14a das Datenpaket 112 in eine geeignete Anzahl von 64 Byte Zellen. In diesem Fall ist das beispielhafte 128 Byte Paket in zwei 64 Byte Zellen 112a und 112b unterteilt. Auch wenn das beispielhafte Datenpaket 112, das in diesem Beispiel gezeigt ist, exakt zwei 64 Byte Zellen 112a und 112b ist, kann ein aktuelles eingehendes Datenpaket – und das geschieht oft – eine beliebige Anzahl von Zellen beinhalten, wobei wenigstens eine dieser Zellen eine Länge von weniger als 64 Byte hat. In diesen Fällen werden Stopfbytes zu den unvollständigen Zellen hinzugefügt, um die vollständigen 64 Byte der Zelle zu füllen. In derartigen Fällen läßt das Eingangs-Submodul 14a die Stopfbytes innerhalb der Zelle außer Betracht und verarbeitet das Paket wie jedes beliebige andere. Weitere Erörterungen der Paketbearbeitung nehmen auf das Paket 112 und/oder Zellen 112a und 112b Bezug. Ein typisches Zellformat ist in 11 dargestellt.
  • Um Probleme bei der Verschlechterung des Datenflusses zu überwinden, die mit der Overhead-Benutzung des C-Kanals 81 in Zusammenhang stehen, wird das gesamte L2-Lernen und L2-Tabellenmanagement durch Verwendung des S-Kanals 83 erreicht. Selbstinitiiertes L2-Lernen wird erreicht, indem die Quelladresse eines Benutzers an einem gegebenen Eingangsport 24 entschlüsselt wird, wobei die Paket=s-zugeordnete Adresse verwendet wird. Sobald die Identität des Benutzers an dem Eingangsport 24 bestimmt ist, werden die ARL/L3-Tabellen 21a aktualisiert, um die neue Benutzer-Identifikation wiederzuspiegeln. Die ARL/L3-Tabellen 21 von jedem anderen EPIC 20 und GPIC 30 werden aktualisiert, um die neu erworbene Benutzer-Identifikation in einem Synchronisierungsschritt zu reflektieren, wie es nachstehend erörtert werden wird. Als Ergebnis kann, während der Eingang des EPIC 20a bestimmen kann, dass ein bestimmter Benutzer an einem bestimmten Port 24a ist, der Ausgang des EPIC 20b, dessen Tabelle 21b mit der Benutzer = s-Identifikation am Port 24a aktualisiert worden ist, Informationen an den Benutzer an Port 24a liefern, ohne erneut lernen zu müssen, an welchem Port der Benutzer angeschlossen war, welches die Effizienz beim Look-Up der ARL des SOC 10 erhöht.
  • Das Tabellenmanagement kann auch durch die Benutzung der CPU 52 erreicht werden. Die CPU 52 kann mittels des CMIC 40 dem SOC 10 Softwarefunktionen zur Verfügung stellen, die zu der Bezeichnung der Identifikation eines Benutzers an einem bestimmten Port 24 führen. Wie es zuvor ausgeführt worden ist, ist es jedoch nicht wünschenswert für die CPU 52, kontinuierlich Zugriff auf die gesamten Paketinformationen zu haben, da dies zu einer Verschlechterung der Leistung führen würde. Vielmehr wird das SOC 10 im allgemeinen von der CPU 52 mit Identifikationsinformation programmiert, die den Benutzer betreffen. Danach kann das SOC 10 den Datenstrom in Echtzeit aufrechterhalten, da die Tabellen-Daten-Kommunikation zwischen der CPU 52 und dem SOC 10 ausschließlich auf dem S-Kanal 83 stattfindet. Obwohl das SOC 10 die CPU 52 mit direkten Paketinformationen mittels des C-Kanals 81 versorgen kann, ist eine solche Organisation des Systems aus den oben genannten Gründen nicht wünschenswert. Wie oben ausgeführt, wird als eine Eingangsfunktion ein Adress-Auflösungs-Look-Up durch Untersuchung der ARL-Tabelle 21a durchgeführt. Wenn das Paket an einen der Ebene-drei(L3)-Switchess des SOC 10 adressiert ist, führt dann das Eingangssubmodul 14a den L3- und Default-Look-Up durch. Wenn einmal der Zielport bestimmt worden ist, setzt der EPIC 20a ein Fertig-Flag in der Sendeeinheit 18a, welches dann für den C-Kanal 81 entscheidet.
  • Wenn alle der I/O-Module einschließlich der MMU 70, einen Zugriff auf den C-Kanal 81 anfordern, wird die MMU 70 wie in 4B der Zugriff gewährt, da die MMU einen kritischen Datenpfad für alle Module auf dem Switch schafft. Nach dem Erhalt des Zugriffs auf dem Kanal 81 fährt die Sendeeinheit 18a (9) fort, indem das empfangene Paket 112, jeweils eine Zelle gleichzeitig, an dem C-Kanal 81 weitergeleitet wird.
  • Unter Bezugnahme wieder auf 3 sind die individuellen C-, P- und S-Kanäle des CPS-Kanals 80 dargestellt. Wenn einmal der Sendeeinheit 18a die Erlaubnis zum Zugriff auf den CPS-Kanal 80 während des ersten Zeitraums Cn0 erteilt worden ist, setzt die Sendeeinheit 18a die ersten 16 Byte der ersten Zelle 112a des empfangenen Pakets 112 auf den C-Kanal 81. Gleichzeitig setzt die Sendeeinheit 18a die erste P-Kanal-Nachricht ab, die der aktuell gesendeten Zelle entspricht. Wie oben ausgeführt, definiert die erste P-Kanal-Nachricht u. a. den Nachrichtentyp. Daher ist dieses Beispiel so, dass die erste P-Kanal-Nachricht die aktuelle Zelle als eine Nachricht des Typs Unicast bzw. Einfachsendung definiert, die zu dem Zielausgangsport 21c geleitet werden soll.
  • Während des zweiten Taktzyklusses Cn1 werden die zweiten 16 Byte (16:31) der aktuell übermittelten Datenzelle 112a auf den C-Kanal 81 gesetzt. Ebenso wird während des zweiten Taktzyklusses Cn1 das Bc/Mc-Port-Bitmap auf den P-Kanal 82 gesetzt.
  • Wie bei der Darstellung der S-Kanal 83 Daten während der Zeiträume Cn0 bis Cn3 in 3 angegeben, ist der Betrieb des S-Kanal 83 von dem Betrieb des C-Kanal 81 und des P-Kanal 82 entkoppelt. Beispielsweise kann die CPU 52 mittels des CMIC 40 Nachrichten auf Systemebene an nicht aktive Module weiterleiten, während ein aktives Modul Zellen auf dem C-Kanal 81 weiterleitet. Wie zuvor ausgeführt, ist dies ein wichtiger Aspekt des SOC 10, da der Betrieb des S-Kanals eine parallele Aufgaben-Verarbeitung erlaubt, wobei die Übertragung von Zellendaten auf den C-Kanal 81 in Echtzeit ermöglicht wird. Wenn einmal die erste Zelle 112a des eingehenden Pakets 112 auf den CPS Kanal 80 gesetzt worden ist, bestimmt die MMU 70, ob die Zelle an einen Ausgangsport 81 gesendet werden soll, der lokal auf der SOC 10 ist.
  • Wenn die MMU 70 bestimmt, dass die aktuelle Zelle 112a auf den C-Kanal 81 für einen Ausgangsport auf dem SOC 10 bestimmt ist, übernimmt die MMU 70 die Steuerung des Zellendatenflusses.
  • Die 10 zeigt detaillierter die funktionalen Ausgangs-Gesichtspunkte der MMU 70. Die MMU 70 beinhaltet den CBM 71 und bildet eine Schnittstelle zwischen dem GBP 60, dem CBP 50 und einer Mehrzahl von Ausgangsmanager (EgM) 76 von Ausgangs-Submodulen 18, wobei ein Ausgangsmanager 76 für jeden Ausgangsport vorgesehen ist. Die CBM 71 ist mit jedem Ausgangsmanager 76 in einer parallelen Konfiguration mittels des R-Kanal-Datenbuses 77 verbunden. Der R-Kanal-Datenbus 77 ist ein 32 Bit breiter Bus, der von dem CBM 71 und den Ausgangsmanagern 76 bei der Übertragung von Speicher-Zeigern und Systemnachrichten verwendet wird. Der Ausgangsmanager 76 ist ebenso mit dem CPS-Kanal 80 für den Transfer von Datenzellen 112a und 112b verbunden.
  • Zusammenfassend führt die CBM 71 die Funktionen des On-Chip FAP-(freier Adresspool)-Managment, des Transfers von Zellen zum CBP 50, das Paket-Zusammenfügen und die Benachrichtigung des entsprechenden Ausgangsmanagers, das Umleiten von Paketen zum GBP 60 mittels eines globalen Puffer-Managers sowie das Bearbeiten des Paketflusses von dem GBP 60 zum CBP 50 durch. Das Aufräumen des Speichers, das Speicherbudgetmanagement, die Kanalschnittstelle und die Zuordnung von Zellzeigern sind ebenso Funktionen des CBM 71. Im Bezug auf den freien Adresspool verwaltet der CBM 71 den freien Adresspool und weist eingehenden Zellen freie Zellzeiger zu. Der freie Adresspool wird ebenso mittels dem CBM 71 zurückgeschrieben, sodass die frei werdenden Zellzeiger der verschiedenen Ausgangsmanager auf geeignete Weise gelöscht werden. Unter der Annahme, dass es genügenden im CBP 50 verfügbaren Speicher und genügend freie Adresszeiger gibt, hält der CBM 71 wenigstens zwei Zellenzeiger pro Ausgangsmanager 76, der verwaltet wird. Die erste Zelle des Pakets trifft an einem Ausgangsmanager 76 an und der CBM 71 schreibt diese Zelle zu der CBM-Speicherzuteilung an der Adresse, auf die der erste Zeiger zeigt. In dem nächsten Zellen-Header-Feld ist der zweite Zeiger geschrieben. Das Format der Zelle wird in dem CBP 50 gespeichert, wie es in 11 dargestellt ist; wobei jede Zeile 18 Bit breit ist. Die Zeile 0 enthält die geeigneten Informationen im Bezug auf die Information zur ersten Zelle und zur letzten Zelle, zu Broadcast/Multicast, zur Anzahl von Ausgangsports für Broadcast oder Multicast, zur Zellenlänge im Bezug auf die Anzahl von gültigen Bites in der Zelle, dem nächsten Zellenzeiger, der gesamten Zellenanzahl in dem Paket und zum Zeitstempel. Die verbleibenden Zeilen enthalten die Zellendaten als 64 Byte Zellen. Der freie Adresspool innerhalb der MMU 70 speichert alle freien Zeiger für den CBP 50. Jeder Zeiger in dem freien Adresspool zeigt auf eine 64 Byte Zelle in dem CBP 50; wobei die aktuelle in dem CBP gespeicherte Zelle insgesamt 72 Byte aufweist, wobei 64 Byte Daten sind und 8 Byte Steuerinformationen sind. Funktionen wie beispielsweise HOL-Blockierungen, welche obere und untere Grenzwerte blockiert, Out-Queue-Budget-Register, die Zuteilung von CPID und andere Funktionen werden wie erklärt wird in dem CBM 71 bearbeitet.
  • Wenn die MMU 70 bestimmt, dass die Zelle 112a für einen geeigneten Ausgangsport auf dem SOC 10 bestimmt ist, steuert die MMU 70 den Zellenfluß von dem CPS-Kanal 80 zum CBP 50. Sowie das Datenpaket 112 von der MMU 70 vom CPS 80 empfangen worden ist, bestimmt der CBM 71, ob oder ob nicht genügend Speicher im CBP 50 für das Datenpaket 112 verfügbar ist. Ein freier Adresspool (nicht dargestellt) kann wenigstens zwei Zellenzeiger pro Ausgangsmanager 76 pro Dienstklasse speichern. Wenn genügend Speicher im CBP 50 zum Speichern und zur Identifikation des eingehenden Datenpakets verfügbar ist, setzt der CBM 71 die Datenzelleninformationen auf den CPS-Kanal 80. Die Datenzelleninformationen werden von dem CBM 71 an den CBP 50 bei einer zugeteilten Adresse geliefert. Sowie neue Zellen von der MMU 70 empfangen werden, teilt der CBM 71 Zellzeiger zu. Der anfängliche Zeiger für die erste Zelle 112a zeigt auf den Ausgangsmanger 76, der dem Ausgangsport entspricht, an dem das Datenpaket 112 gesendet werden wird, nachdem es im Speicher abgelegt worden ist. Bei dem Beispiel der 8 kommen Pakete an dem Port 24a des EPIC 20a an und sind für den Port 24c des EPIC 20c bestimmt. Für jede zusätzliche Zelle 112b teilt der CBM 71 einen entsprechenden Zeiger zu. Der entsprechende Zellzeiger wird als zwei Byte oder 16 Bit-Wert-NC_Header an einem geeigneten Ort einer Steuernachricht gespeichert, zusammen mit dem ursprünglichen Zeiger auf den entsprechenden Ausgangsmanager 76 und nachfolgenden Zellzeigern als Teil jedes Zellheaders, wobei eine verbundene Liste von Speicherzeigern gebildet wird, die das Paket 112 definiert, wenn das Paket mittels des geeigneten Ausgangsports übertragen wird; in diesem Fall der Port 24c. Sobald das Paket vollständig in den CBP 50 geschrieben ist, wird ein entsprechender CBP-Paketidentifizierer (CPID) an den geeigneten Ausgangsmanager 76 geliefert; wobei dieser CPID auf den Speicherort der anfänglichen Zelle 112a zeigt. Der CPID für das Datenpaket wird dann verwendet, wenn das Datenpaket 112 zu dem Zielausgangsport 24c gesendet wird. Aktuell hält der CBM 71 zwei Puffer, die CBP-Zellenzeiger enthalten, wobei der Zugang zu dem CBP sich nach einer Anzahl von Faktoren richtet. Ein Beispiel der Zugangslogik zum CBP 50 wird nachstehend unter Bezugnahme auf 12 erörtert.
  • Da der CBM 71 den Datenstrom innerhalb des SOC 10 steuert, kann der Datenstrom, der jedem beliebigen Eingangsport zugeordnet ist, beliebig gesteuert werden. Wenn das Paket 112 in dem CBP 50 empfangen und gespeichert worden ist, wird ein CPID an den zugeordneten Ausgangsmanager 76 geliefert. Die Gesamtanzahl von Datenzellen, die dem Datenpaket zugeordnet sind, wird in einem Budgetregister (nicht dargestellt) gespeichert. Je mehr Datenpakete empfangen werden und zum Senden an den gleichen Ausgangsmanager 76 bestimmt werden, umso öfter wird der Wert des Budgetregisters, der dem zugeordneten Ausgangsmanager 76 entspricht, mittels der Datenzellen 112a, 112b der neuen empfangenen Datenzellen erhöht. Das Budgetregister stellt daher dynamisch die Gesamtanzahl von Zellen dar, die zum Senden von einem bestimmten Ausgangsport auf einem EPIC 20 bestimmt sind. Der CBM 71 steuert den Eingangsstrom von zusätzlichen Datenpaketen, in dem das Budgetregister für den gleichen Ausgang mit einem oberen Grenzwert des Registerwerts oder einem unteren Grenzwert des Registerwerts verglichen wird.
  • Wenn der Wert des Budgetregisters den oberen Grenzwert übersteigt, wird der zugeordnete Eingangsport disabled. Auf ähnliche Weise wird, wenn Datenzellen eines Ausgangsmanagers 76 mittels des Ausgangsports gesendet werden und das entsprechende Budgetregister sich auf einen Wert unter dem unteren Grenzwert verringert, der Eingangsport wieder enabled. Wenn der Ausgangsmanager 76 die Sendung des Paket 112 initiiert, teil der Ausgangsmanager 76 dies dem CBM 71 mit, der dann das Budgetregister um die Anzahl der gesendeten Datenzellen verringert. Die spezifischen oberen Grenzwerte und unteren Grenzwerte können von dem Benutzer mittels der CPU 52 programmiert werden. Dies verleiht dem Benutzer die Steuerung über den Datenstrom eines jeden beliebigen Ports von jedem beliebigen EPIC 20 oder GPIC 30 und des IPIC 90.
  • Der Ausgangsmanager 76 ist ebenso in der Lage, den Datenstrom zu steuern. Jeder Ausgangsmanager 76 besitzt die Fähigkeit, die Paketidentifikationsinformation in einem Paketzeigerbudgetregister zu verfolgen; sowie ein neuer Zeiger von dem Ausgangsmanager 76 empfangen wird, wird das zugeordnete Paketzeigerbudgetregister erhöht. Sowie der Ausgangsmanager 76 ein Datenpaket 112 aussendet, wird das Paketzeigerbudgetregister verringert. Wenn eine Speichergrenze, die dem Register zugeordnet ist, erreicht wird, entsprechend einem vollen Paketidentifikationspool, wird eine Anzeigenachricht an alle Eingangsports des SOC 10 geschickt, wobei angezeigt wird, dass der Zielausgangsport nicht erreichbar ist, der von diesem Ausgangsmanager gesteuert wird. Wenn das Paketzeigerbudgetregister unterhalb des oberen Grenzwerts für den Paketpool verringert wird, wird eine Anzeigenachricht gesendet, dass der Zielausgangsport nun verfügbar ist. Die Anzeigenachrichten werden von dem CBM 71 auf dem S-Kanal 83 gesendet.
  • Wie zuvor ausgeführt, wird die Flußsteuerung von dem CBM 71 und ebenso von dem Eingangssubmodul 14 von entweder einem EPIC 20, einem GPIC 30 oder dem IPIC 90 zur Verfügung gestellt. Die Eingangssubmodule 14 überwachen die Zellenübertragung in den Port 24. Wenn ein Datenpaket 112 an einem Port 24 empfangen wird, erhöht das Eingangssubmodul 14 ein Empfangen-Budget-Register um die Zellenanzahl des eingehenden Datenpakets. Wenn ein Datenpaket 112 gesendet wird, verringert der entsprechende Eingang 14 das Empfangen-Budget-Register um die Zellenanzahl des ausgehenden Datenpakets 112. Das Budgetregister 72 wird von dem Eingang 14 in Abhängigkeit einer Verringere-Zellen-Anzahl-Nachricht verringert, die von dem CBM 71 initiiert wird, wenn ein Datenpaket 112 erfolgreich von dem CBP 50 übertragen worden ist.
  • Eine effiziente Behandlung des CBP 50 und des CBP 60 ist erforderlich, um den Durchsatz zu maximieren, ein Knappwerden der Ports und einen Underrun der Ports zu verhindern. Für jeden Eingang gibt es einen unteren Grenzwert und einen oberen Grenzwert; wenn die Zellenanzahl unterhalb des unteren Grenzwerts ist, wird das Paket von dem CBP zugelassen, wobei auf diese Weise ein knapp werden der Ports verhindert wird, indem dem Port ein geeigneter Anteil am Raum des CBP gegeben wird.
  • Die 12 zeigt im allgemeinen die Bearbeitung bzw. Handling eines Datenpakets 112, wenn es an einem geeigneten Eingangsport empfangen wird. Die Figur zeigt die dynamische Speicherzuordnung an einem einzelnen Port und ist für jeden Eingangsport des SOC 10 anwendbar. Im Schritt 12-1 wird die länge des eingehenden Pakets ermittelt, indem die Zellenanzahl auf der Grundlage der Eingangsmanageranzahl zuzüglich der eingehenden Zellenanzahl ermittelt wird. Nachdem diese Zellenanzahl ermittelt ist, wird im Schritt 12-2 die aktuelle Zellenanzahl des GBP 60 überprüft, um zu ermitteln, ob der GBP 60 leer ist oder nicht. Wenn die Zellenanzahl des GBP 0 ist, wobei auf diese Weise angezeigt wird, dass der GBP 60 leer ist, geht das Verfahren zu Schritt 12-3 über, bei dem ermittelt wird, ob oder nicht die ermittelte Zellenanzahl von Schritt 12-2 geringer als der Zulassungsgrenzwert des CBP 50 ist. Der untere Zulassungsgrenzwert ermöglicht den Empfang von 9 Paketen 112 in dem CBP 50, wenn die gesamte Anzahl von Zellen in dem zugeordneten Ausgang unterhalb des unteren Zulassungsgrenzwerts ist. Wenn die Zellenanzahl geringer als der untere Zulassungsgrenzwert des CBP 50 ist, wird das Paket in den CBP 50 im Schritt 12-5 aufgenommen. Wenn die ermittelte Zellenanzahl nicht unter dem unteren Zulassungsgrenzwert ist, muß der CBM 71 zur Zuordnung von CBP-Speicher im Schritt 12-4 mit anderen Eingangsports von anderen EPIC oder GEPIC entscheiden bzw. als Schiedsrichter fungieren. Wenn der Entscheidungsvorgang nicht erfolgreich war, wird das eingehende Paket zu einem Weitervermittlungsvorgang geschickt, auf den in 12 als A Bezug genommen wird, welcher das (Paket zu dem GBP 60 umleitet. Wenn alternativ der Entscheidungsvorgang erfolgreich war, wird das Paket zum CBP 50 in Schritt 12-5 zugelassen. Die Zulassung des Pakets 112 zum CBP 50 ist bevorzugt, um die Kommunikation bei Leitungsgeschwindigkeit zu erleichtern.
  • Die obige Diskussion richtet sich auf die Situation, in der die GBP-Zellenanzahl als 0 bestimmt wird, welches einen leeren externen Speicher darstellt. Wenn in Schritt 12-2 die GBP Zellenanzahl nicht zu 0 bestimmt wird, fährt das Verfahren mit dem Schritt 12-6 fort, indem die in Schritt 12-1 ermittelte Zellenanzahl mit dem oberen Zulassungsgrenzwert des CBP 50 verglichen wird. Wenn die ermittelte Zellenanzahl größer als der obere Grenzwert des CBP 50 ist, wird das Paket im Schritt 12-7 zu GBP 60 umgeleitet. Wenn die ermittelte Zellenanzahl geringer als der obere Zulassungsgrenzwert ist, wird die ermittelte Zellenanzahl mit dem unteren Zulassungsgrenzwert des CBP 50 im Schritt 12-8 verglichen. Wenn bestimmt wird, dass die ermittelte Zellenanzahl größer als der untere Zulassungsgrenzwert ist, welches bedeutet, dass die ermittelte Zellenanzahl zwischen dem oberen Grenzwert und dem unteren Grenzwert liegt, wird das Paket zum GBP 60 in Schritt 12-7 umgeleitet. Wenn die ermittelte Zellenanzahl unterhalb des unteren Zulassungsgrenzwerts ist, wird die aktuelle GBP Anzahl mit einem Umleitungszellengrenzwert in Schritt 12-9 verglichen. Dieser Umleitungs-Zellen-Grenzwert ist über die CPU 52 von einem Benutzer programmierbar. Wenn die GBP-Anzahl kleiner oder gleich dem Umleitungs-Zellen-Grenzwert bei Schritt 12-9 ist, wird die ermittelte Zellenanzahl und die GBP-Anzahl mit einem ermittelten unteren Zellenanzahlgrenzwert verglichen. Wenn die Kombination der ermittelten Zellenanzahl und der GBP-Anzahl geringer als der ermittelte untere Zellenanzahlgrenzwert ist, wird das Paket in Schritt 12-5 zum GBP 50 zugelassen. Wenn die Summe größer ist als der ermittelte untere Zellenanzahlgrenzwert, wird das Paket in Schritt 12-7 zum GBP 60 umgeleitet. Nach dem Umleiten zu dem GBP 60 wird die GBP Zellenanzahl aktualisiert und die Paketverarbeitung ist abgeschlossen. Es soll erwähnt werden, dass sowohl wenn der CBP 50 als auch der GBP 60 voll sind, das Paket fallengelassen wird. Fallengelassene Pakete werden gemäß den bekannten Ethernet oder Netzwerkkommunikationsverfahren behandelt und wirken sich in einer Verzögerung der Kommunikation aus. Die Konfiguration sorgt jedoch für einen geeigneten Rückdruck, in dem die Grenzwerte über die CPU 52 auf geeignete Pufferwerte auf einer Pro Port Grundlage gesetzt werden, um die Speicherverwendung zu maximieren und die Anzahl der fallengelassenen Pakete zu minimieren. Diese CBP/GBP-Zulassungslogik führt zu einer verteilten, hierarchischen Konfiguration geteilten Speichers, mit einer Hierarche des CBP 50 und dem GBP 60 und Hierarchien innerhalb des CBP 50.
  • Wenn das Paket 112, das oben in Bezug auf 12 erörtert worden ist, für den IPIC bestimmt ist und daher über die Hochleistungsschnittstelle ausgesendet werden soll, dann wird das Paket unmittelbar zu dem IPIC Modul vermittelt, und muß weder von dem CBP 50 oder dem GBP 60 angenommen werden. Nachdem ermittelt ist, dass die Zieladresse dem EPIC zugeordnet ist, wird das Paket auf dem C-Kanal 81 besetzt, wie es in 8 dargestellt ist, und wird von dem IPIC 90 aufgenommen, indem es in dem NBP 92 angeordnet wird. Nachdem die Zieladresse für Ziele auf dem IPIC 90 gelernt worden ist, wird dann ein in den Port 24 eingehendes Paket, das an einen Port an dem IPIC 90 gerichtet ist, in Zellen unterteilt und auf dem CPS-Kanal 80 mit dem direkten Ziel zum NBP 92 und IPIC 90 gesetzt. Die dem Paket zugeordneten Zellen werden nicht von der MMU 70 bearbeitet und sind daher nicht der CBB/GBP-Zulassungslogik unterworfen, wie sie oben erörtert worden ist. Wenn die Zieladresse jedoch noch nicht gelernt worden ist, wird das Paket an alle Ports über die CPB/GBP-Zulassungslogik geschickt und ebenso über den NBP 92. Eine detailliertere Erörterung des NBP 92 und des IPIC 90 wird später zu finden sein.
  • Adressauflösung (L2) + (L3)
  • 14 zeigt einige der gleichzeitigen Filter- und Look-Up-Details eines Pakets, das an dem Eingang eines EPIC 20 eingegangen ist. Die 12 zeigt, wie zuvor diskutiert, die Bearbeitung eines Datenpakets in Bezug auf die Zulassung zu dem verteilten, hierarchischen und geteilten Speicher. Die 14 richtet sich auf die Segmente des SOC 10 zur Anwendung des Filterns, der Flußsteuerung, der Adressauflösung und der Anwendung der Regeln. Diese Funktionen werden gleichzeitig in Bezug auf die Zulassung zum CBP 50 und GBP 60 durchgeführt, wie es oben erörtert worden ist. Wie in der Figur dargestellt ist, wird das Paket 112 an einem Eingangsport 24 des EPIC 20 empfangen und wird dann zum Eingangsfifo 142 geleitet. Sobald die ersten 16 Bytes des Datenpakets in dem Inputfifo 142 ankommen, wird eine Adress-Auflösungs-Anforderung an die ARL-Maschine 143 geschickt, die einen Adress-Look-Up in den ARL/L3-Tabellen 21 initiiert.
  • Eine Beschreibung der Felder innerhalb der ARL/L3-Tabellen 21 ist wie folgt:
    MAC Adresse – 48 Bit lang – Mac Adresse;
    VLAN Tag – 12 Bit lang – VLAN TAG-Identifizierer wie es in den IEEE 802.1q-Standard für markierte Pakete beschrieben ist. Für ein nicht markiertes Paket wird dieser Wert von der portbasierten VLAN-Tabelle aufgenommen.
    CosDst – 3 Bit lang – Dienstart auf der Grundlage der Zieladresse. Die COS identifiziert die Priorität dieses Pakets. Acht Ebenen von Prioritäten, wie es in dem IEEE 802.1p Standard beschrieben ist.
    Portnummer – 6 Bit lang – Portnummer ist der Port, an dem die Mac-Adresse gelernt worden ist.
    SD_Disc Bits – 2 Bit lang – Diese Bits identifizieren, ob das Paket auf der Grundlage der Quelladresse oder der Zieladresse fallengelassen werden soll. Wert 1 bedeutet das Fallenlassen wegen der Quelle. Wert 2 bedeutet das Fallenlassen wegen dem Ziel.
    C Bit – 1 Bit lang – Das C Bit zeigt an, dass das Paket zu dem CPU-Port gegeben werden soll.
    St Bit – 1 Bit lang – Das St Bit zeigt an, dass dies ein statischer Eintrag ist (der nicht dynamisch gelernt worden ist) und dies bedeutet, dass er nicht ausgealtert werden soll. Nur die CPU 52 kann diesen Eintrag löschen.
    Ht Bit – 1 Bit lang – Trefferbit – Dieses Bit wird gesetzt, wenn es eine Übereinstimmung zwischen der Zieladresse gibt. Es wird für den Alterungsmechanismus verwendet.
    CosSrc – 3 Bit lang – Art der Dienste auf der Grundlage der Quelladresse. Die COS zeigt die Priorität dieses Pakets an.
    L3 Bit – 1 Bit lang – L3 Bit – identifiziert, dass dieser Eintrag als Ergebnis der L3 Schnittstellenkonfiguration erzeugt worden ist. Die Mac-Adresse in diesem Eintrag ist die L3-Schnittstellen-Mac-Adresse und dass jedes Paket, das an diese Mac-Adresse gerichtet ist, gerutet werden soll.
    T Bit – 1 Bit lang – Das T Bit zeigt an, dass diese Mac-Adresse von einem der Trunk-Ports gelernt worden ist. Wenn es eine Übereinstimmung bei der Zieladresse gibt, wird der Ausgangsport nicht auf der Grundlage der Port-Nummer in diesem Eintrag entschieden, sondern von dem Trunk-Identifizierungs-Vorgang auf der Grundlage der Regeln entschieden, die von den RTAG Bits und dem Trunk-Gruppen-Identifizierer mittels des TGID entschieden.
    TGID – 3 Bit lang – Der TGID identifiziert die Trunk-Gruppe, wenn das T Bit gesetzt ist. Das SOC 10 unterstützt sechs Trunk-Gruppen pro Switch.
    RTAG – 3 Bit lang – RTAG identifiziert den Trunk-Auswahl-Maßstab, wenn die Zieladresse mit diesem Eintrag übereinstimmt und das T Bit in diesem Eintrag gesetzt ist. Wert 1 – basiert auf der Quell-Mac-Adresse. Wert 2 – basiert auf der Ziel-Mac-Adresse. Wert 3 – basiert auf Quell- und Zieladresse. Wert 4 – basiert auf der Quell-IP-Adresse. Wert 5 – basiert auf der Ziel-IP-Adresse. Wert 6 – basiert auf der Quell- und Ziel-IP-Adresse.
    SCP – 1 Bit lang – Quell-CoS-Prioritäts-Bit – Wenn dieses Bit gesetzt ist (bei übereinstimmenden Quell-Mac-Eintrag), besitzt das Quell-CoS Priorität gegenüber der Ziel-CoS.
    Modul ID – 5 Bit lang – Modul ID identifiziert das Modul, an dem diese Mac-Adresse gelernt ist.
  • Das SOC 10 beinhaltet ebenso eine Multicast-Tabelle zur geeigneten Bearbeitung von Multicast-Paketen. Eine Konfiguration der Multicast-Tabelle würde 256 Bit tief und 128 Bit breit sein. Die Suchfelder der Multicast-Tabelle können wie folgt sein:
    Mac Adresse – 48 Bit lang – Mac Adresse.
    VLAN Tag – 12 Bit lang – ULAN Tag Identifizierer, wie er im IEE802.1q-Standard beschrieben ist.
    CosDst – 3 Bit lang – Art der Dienste auf der Grundlage der Zieladresse. COS identifiziert die Priorität dieses Pakets. Wir unterstützen 8 Ebenen von Prioritäten, wie es in IEEE 802.1p-Standard beschrieben ist.
    Mc Port Bitmap – 31 Bit lang – Port Bitmap identifiziert all die Ausgangsports, an die das Paket gehen soll.
    Untagged Bitmap – 31 Bit lang – Dieses Bitmap identifiziert die Untagged-Mitglieder des VLAN, d. h., ob der Frame, der aus diesen Mitgliederports ausgewählt ist, ohne Tag Header übermittelt werden soll.
    Module Id Bitmap – 32 Bit lang – Modul Id Bitmap identifiziert all die Module, an die die Pakete gehen sollen.
  • Es soll ebenso angemerkt werden, dass die VLAN-Tabellen 23 eine Anzahl von Tabellenformaten beinhalten; wobei nicht alle dieser Tabellen und Tabellenformate hierin diskutiert werden. Als Beispiel jedoch sind die Port-basierten VLAN-Tabellenfelder wie folgt beschrieben:
    Port VLAN Id – 12 Bit lang – Der Port ULAN Identifizierer ist die VLAN Id, die von dem portbasierten VLAN verwendet wird.
    Sp State – 2 Bit lang – Dieses Feld identifiziert den aktuellen Zustand des überspannenden Baums. Wert 0x00 – Port ist im deaktivierten Zustand. Keine Pakete werden in diesem Zustand angenommen, nicht einmal BPDUs. Wert 0x01 – Block ist im blockierenden oder zuhörenden Zustand. In diesem Zustand werden von diesem Port keine Pakete angenommen, mit der Ausnahme von BPDUs. Wert 0x02 – Port befindet sich im Lernzustand. In diesem Zustand werden die Pakete nicht zu einem anderen Port weitergeleitet, aber zum Lernen angenommen. Wert 0x03 – Port ist im Weiterleitungszustand. In diesem Zustand werden die Pakete sowohl zum Lernen als auch zum Weiterleiten angenommen.
    Port-Fallenlaß-Bits – 6 Bit lang – Es gibt sechs Felder in diesem Bit und jedes Bit identifiziert den Maßstab zum Fallenlassen von Paketen, die an diesem Port eingehen. Bemerkung: Bit 0 bis 3 wird nicht verwendet. Bit 4 – Wenn dieses Bit gesetzt ist, werden alle Frames, die an diesem Port eingehen, fallengelassen. Bit 5 – Wenn dieses Bit gesetzt ist, wird jeder auf diesen Port kommende Frame fallengelassen, der 802.1q-Priorität-markiert (vid = 0) und untagged ist.
    J Bit – 1 Bit lang – J Bit bedeutet Jumbo Bit. Wenn dieses Bit gesetzt ist, soll dieser Port Jumbo-Frames annehmen.
    RTAG – 3 Bit lang – RTAG identifiziert den Trunk-Auswahl-Maßstab, wenn die Zieladresse mit diesem Wert übereinstimmt und das T Bit in diesem Eintrag gesetzt ist. Wert 1 – basiert auf der Quell-Mac-Adresse. Wert 2 – basiert auf der Ziel-Mac-Adresse. Wert 3 – basiert auf Quell- und Zieladresse. Wert 4 – basiert auf der Quell-IP-Adresse. Wert 5 – basiert auf der Ziel-IP-Adresse. Wert 6 – basiert auf der Quell- und Ziel-IP-Adresse.
    T Bit – 1 Bit lang – Dieses Bit zeigt an, dass der Port ein Mitglied der Trunk-Gruppe ist.
    C-Lern-Bit – 1 Bit lang – CPU-Lernbit – Wenn dieses Bit gesetzt ist, wird das Paket zu der CPU gesendet, wann immer die Quelladresse gelernt wird.
    PT – 2 Bit lang – Port Typ identifiziert den Port Typ. Wert 0 – 10 Mbit Port. Wert 1 – 100 Mbit Port. Wert 2 – 1 Gbit Port. Wert 3 – CPU-Port.
    VLAN-Port-Bitmap – 28 Bit lang – VLAN-Port-Bitmap identifiziert all die Ausgangsports, an die das Paket gehen soll.
    B-Bit – 1 Bit lang – B-Bit ist das BPDU-Bit. Wenn dieses Bit gesetzt ist, dann weist der Port BPDUs zurück. Dieses Bit wird für Trunk-Ports gesetzt, die nicht BPDUs akzeptieren sollen.
    TGID – 3 Bit lang – TGID – Dieses Feld identifiziert die Trunk-Gruppe, zu der dieser Port gehört.
    Untagged Bitmap – 28 Bit lang – Dieses Bitmap identifiziert die untagged Mitglieder des VLAN, d. h., ob der Frame, der aus diesen Mitgliederports ausgewählt ist, ohne Tag Header übertragen werden soll.
    M Bits – 1 Bit lang – M Bits wird für die Spiegelungsfunktionalität verwendet. Wenn dieses Bit gesetzt ist, ist das Spiegeln des Eingangs ermöglicht.
  • Das SOC 10 kann ebenso eine Mehrzahl von 802.1Q-Tagged-VLAN-Tabellen aufweisen, die verwendet werden können, um alle Mitgliederports des explixit markierten bzw. getaggten VLANs zu bekommen. Diese Tabelle kann beispielsweise 65 Einträge tief und 68 Bit breit sein. Die Felder können wie folgt sein:
    VLAN Tag – 12 Bit lang – VLAN-Tag-Identifizierer, wie es im IEEE 802.1q-Standard beschrieben ist.
    VLAN Port Bitmap – 28 Bit lang – Das VLAN Port Bitmap identifiziert alle die Ausgangsports, an die das Paket gesendet werden soll.
    Untagged Bitmap – 28 Bit lang – Dieses Bitmap identifiziert die Untagged-Mitglieder des VLAN. Daher identifziert dieses Bitmap, ob der Frame von diesen Mitgliederports mit oder ohne Tag-Header übertragen werden soll.
  • Unter Bezugnahme auf die Erörterung der Adressauflösung und ebenso unter Bezugnahme auf 14, liest die ARL-Maschine 143 die Pakete; wenn das Paket ein VLAN-Tag gemäß dem IEEE-Standard 802.1q aufweist, führt die ARL-Maschine 143 einen Look-Up auf der Grundlage der getaggten VLAN-Tabelle 231 durch, die Teil der VLAN-Tabelle 23 ist. Wenn das Paket dieses Tag nicht enthält, führt die ARL-Maschine das VLAN-Look-Up auf der Grundlage der Port-basierten VLAN-Tabelle 232 durch. Wenn einmal das VLAN für das eingehende Paket identifiziert worden ist, führt die ARL-Maschine 143 eine ARL-Tabellen-Suche auf der Grundlage der Quell-Mac-Adresse und der Ziel-Mac-Adresse durch. Wenn die Ergebnisse der Zielsuche eine L3-Schnittstellen-Mac-Adresse ist, wird eine L3-Suche einer L3-Tabelle innerhalb der ARUL3-Tabelle 21 durchgeführt. Wenn die L3-Suche erfolgreich ist, dann wird das Paket gemäß den Paketroutingregeln modifiziert.
  • Zum bessern Verständnis des Look-Ups, des Lernens und des Vermittelns, kann es ratsam sein, noch einmal das Handling des Pakets 112 mit Bezug auf die 8 zu erörtern. Wenn das Datenpaket 112 von einer Quellstation A in den Port 24a des EPIC 20a gesendet wird und an eine Zielstation B an dem Port 24c des EPIC 20c gerichtet ist, unterteilt das Eingangssubmodul 14a das Datenpaket 112 in die Zellen 112a und 112b. Das Eingangssubmodul liest dann das Paket, um die Quell-Mac-Adresse und die Ziel-Mac-Adresse zu ermitteln. Wie zuvor erörtert worden ist, führt das Eingangssubmodul 14a insbesondere die ARL-Maschine 143 das Look-Up der geeigneten Tabellen innerhalb der ARL/L3-Tabellen 21a und der VLAN-Tabelle 23a durch, um zu sehen, ob die Ziel-Mac-Adresse in den ARL/L3-Tabellen 21a existiert. Wenn die Adresse nicht gefunden wird, aber die VLAN-IDs die gleichen für die Quelle und das Ziel sind, sendet das Eingangssubmodul 14a das zu sendende Paket an alle Ports auf dem VLAN. Das Paket wird dann an die geeignete Zieladresse weitergeleitet. Eine Quellsuche und eine Zielsuche geschieht parallel. Wenn die Quelladresse nicht in einem Quell-Look-Up gefunden wird, tritt ein Quell-Look-Up-Fehler (SLF) auf. Nach dem Auftreten eines SLF wird die Quell-Mac-Adresse des eingehenden Pakets „gelernt" und somit zu einer ARL-Tabelle innerhalb der ARL/L3- Tabellen 21a hinzugefügt. Nachdem das Paket von dem Ziel empfangen worden ist, wird eine Bestätigung von der Zielstation D an die Quellstation A geschickt. Da die Quell-Mac-Adresse des eingehenden Pakets von der geeigneten Tabelle von B gelernt worden ist, wird die Bestätigung auf geeignete Weise an den Port gesendet, an dem sich A befindet. Die Zieladresse für das Bestätigungs-Paket oder die Bestätigungs-Pakete ist bekannt, da es zuvor die Quelladresse war, die als Ergebnis des ursprünglichen SLF gelernt worden ist. Wenn die Bestätigung an Port 24a empfangen wird, lernt daher die ARL-Tabelle die Quell-Mac-Adresse von B von dem Bestätigungs-Paket. Es soll angemerkt werden, dass solange die VLAN-Ids (für getaggte Pakete) der Quell-Mac-Adressen und der Ziel-Mac-Adressen die gleichen sind, eine Ebene-2-Vermittlung, wie zuvor erörtert durchgeführt wird. L2-Vermittlung und -Look-Up gründet sich daher auf die ersten 16 Byte eines eingehenden Pakets. Für nicht getaggte Pakete wird das Portanzahlfeld in dem Paket auf die port-basierte VLAN-Tabelle innerhalb der VLAN-Tabelle 23a indexiert und die VLAN-ID kann dann bestimmt werden. Wenn die VLAN-IDs jedoch unterschiedlich sind, ist eine L3-Vermittlung notwendig, bei der die Pakete an verschiedene VLANs geschickt werden. Die L3-Vermittlung jedoch basiert auf dem IP-Header-Feld des Pakets. Der IP-Header beinhaltet die Quell-IP-Adresse, die Ziel-IP-Adresse und die TTL (time-to-live).
  • Wenn das Datenpaket 112 von einer Quellstation A in den Port 24a des EPIC 20a geschickt worden ist und an den IPIC 90 gerichtet worden war, würde der gleiche Lernprozeß bei Auftreten eines SLF und das gleiche Senden des Pakets an alle Ports bei einem Auftreten eines DLF geschehen. Der IPIC 90 wird im wesentlichen wie jeder andere Port auf dem SOC 10 behandelt, mit merklichen Ausnahmen in Bezug auf das Vorhandensein des NBP 92, wie es oben erörtert worden ist und wie es nachstehen erörtert werden wird.
  • Um die Ebene-3-Vermittlung auf dem SOC 10 klarer zu verstehen, wird das Datenpaket 112 von der Quellstation A auf den Port 24a des EPIC 20a gesendet und ist an die Ziel-Station B gerichtet; es wird jedoch angenommen, dass die Station B auf einem verschiedenen VLAN angeordnet ist, wie es von der Quell-Mac-Adresse und der Ziel-Mac-Adresse angezeigt wird, die verschiedene VLAN-IDs haben. Das Look-Up für B würde nicht erfolgreich sein, da B auf einem verschiedenen VLAN angeordnet ist und das einfache Senden des Pakets an alle Ports des gleichen VLANs würde dazu führen, dass B nie das Paket erhält. Die Ebene-3-Vermittlung ermöglicht daher das Überbrücken von VLAN-Grenzen, aber erfordert das Auslesen von mehr Paketinformation, als die Mac-Adressen beim L2-Vermitteln. Zusätzlich zum Lesen der Quell- und Ziel-Mac-Adressen liest daher der Eingang 14a ebenso die IP- Adressen der Quelle und des Ziels. Wie zuvor erwähnt worden ist, sind die Pakettypen von IEEE und anderen Standards definiert und im Stand der Technik bekannt. Durch Lesen der IP-Adresse für das Ziel ist das SOC 10 in der Lage, das Paket an eine geeignete Router-Schnittstelle zu richten, die mit der Ziel-IP-Adresse übereinstimmt. Das Paket 112 wird daher auf dem CPS-Kanal 80 über die Sendeeinheit 18a geschickt und an einen Port gerichtet, der an eine geeignete Router-Schnittstelle (nicht dargestellt und nicht Teil des SOC 10) angeschlossen ist, bei dem das Ziel B sich befindet. Steuer-Frames, die als solche von deren Zieladresse identifiziert werden, werden an die CPU 52 mittels des CMIC 40 geschickt. Die Ziel-Mac-Adresse ist daher die Router-Mac-Adresse für B. Die Router-Mac-Adresse wird durch Mitwirkung der CPU 52 gelernt, die eine ARP-(Adress-Auflösungs-Protokoll)-Anforderung verwendet, um die Ziel-Mac-Adresse für den Router für B auf der Grundlage der IP-Adresse von B anzufordern. Durch die Verwendung der IP-Adresse kann daher das SOC 10 die Mac-Adresse lernen. Durch den Vorgang des Betätigens und des Lernens jedoch ist es nur das erste Paket, das dieser aufgrund der Beteiligung der CPU 52 „langsamen" Behandlung unterworfen ist. Nachdem die geeigneten Mac-Adressen gelernt worden sind, kann die Vermittlung bei Leitungsgeschwindigkeit über die Verwendung der gleichzeitigen Tabellen-Look-Ups stattfinden, da die erforderliche Information von diesen Tabellen gelernt wird. Das Implementieren der Tabellen im Silicium als zweidimensionale Arrays ermöglicht solche schnellen gleichzeitigen Look-Ups. Wenn einmal die Mac-Adresse für B gelernt worden ist, wechselt, wenn Pakete mit einer IP-Adresse für B eintreffen, der Eingang 14a die IP-Adresse zu der Ziel-Mac-Adresse, um eine Vermittlung bei Leitungsgeschwindigkeit zu ermöglichen. Ebenso wird die Quelladresse des eingehenden Pakets zu der Router-Mac-Adresse für A im Gegensatz zu der IP-Adresse für A gewechselt, sodass die Bestätigung von B an A in einer schnellen Weise behandelt werden kann, ohne die Verwendung einer CPU auf den Zielzweck zu erfordern, um die Quell-Mac-Adresse zu identifizieren, die das Ziel für die Bestätigung sein soll. Zusätzlich wird ein TTL-(time-to-live) bzw. Lebenszeit)-Feld auf geeignete Weise gemäß dem IETF (Internet Engineering Task Force) Standard verändert. Ein einzigartiger Gesichtspunkt des SOC 10 ist, dass die gesamte Vermittlung, die Paketverarbeitung und die Tabellen-Look-Ups in Hardware durchgeführt werden, statt dass erfordert wird, dass die CPU 52 oder eine andere CPU Zeit zum Verarbeiten aufwendet. Es soll angemerkt werden, dass die Ebene-3-Tabellen für den EPIC 20 verschiedene Größen haben können; in einem bevorzugten Ausführungsbeispiel sind diese Tabellen in der Lage, bis zu 2000 Adressen zu halten und sind dem Fallenlassen und Löschen von gealterten Adressen unterworfen, wie es hier erklärt ist.
  • Wie zuvor erwähnt, wird wenn ein Datenpaket 112 in das SOC 10 über einen Port 24 eintrifft und zu dem Eingangssubmodul 14 geschickt wird, ein Adressen-Look-Up in der ARUL3-Tabelle 21 durchgeführt, um zu ermitteln, ob diese Adresse bereits gelernt worden ist. Das Look-Up wird logisch auf eine geeignete Tabelle 21 mittels einer Suchmaschine 210 durchgeführt, wie es in 38 dargestellt ist. Look-Ups werden üblicherweise von der Tatsache ermöglicht, dass die Tabellen in einer sortierten Weise gespeichert sind und die Adressen gesucht werden, indem ein binäres Suchverfahren oder ein Suchverfahren des Gleichschritttyps.
  • Es wird ein Verfahren und eine Struktur zum Beschleunigen von Suchen innerhalb einer Adresstabelle 21, wie beispielsweise eine Ebene-2-Tabelle zur Verfügung gestellt. Unter Bezugnahme auf 39 wird eine detailliertere Ansicht einer beschleunigten Look-Up-Konfiguration mit Bezug auf die Adresstabelle 21 und die Suchmaschine 210 offenbart. In einem Beispiel kann die Adresstabelle 21 eine einzelne sortierte 8K-Tabelle sein, die von einer einzigen Suchmaschine 210 durchsucht wird. In dem beschleunigten Beispiel, das in 38 dargestellt ist, wird die einzelne Adresstabelle 21 in zwei Tabellen 211 und 212 mit der halben Größe unterteilt, die jeweils eine Tabelle halber Größe mit 4K-Einträgen haben. Diese Tabelle kann geteilt werden, indem die Tabelle 210 alle geraden Adresseinträge von der ursprünglichen Adresstabelle 21 enthält und die Tabelle 212 alle ungeraden Adresseinträge von der ursprünglichen Adresstabelle 21 enthält. Durch Aufteilen der ursprünglichen Adresstabelle 21 in zwei unterschiedliche Tabellen auf der Grundlage des letzten Bits der Tabellenadresse, bleibt jede der Tabellen 211 und 212 in sortierter Reihenfolge und enthalten die Einträge von dem gesamten Adressbereich der ursprünglichen Tabelle 21. Die Suchmaschine 210 kann dann in zwei getrennte Suchmaschinen unterteilt werden, die erste Suchmaschine 213 und die zweite Suchmaschine 214, wie es in 38 dargestellt ist, die dazu konfiguriert sind, gleichzeitig Adress-Look-Ups für zwei Datenpakete durchzuführen. Im SOC 10 werden die Pakete für das Look-Up in Schlagen gereiht, da jedes EPIC-Modul 20 und/oder GPIC-Modul-30 eine Mehrzahl von Ports aufweist. Gleichzeitige Look-Ups sind möglich, da der Suchalgorithmus der in den SOC 10 implementiert ist, bis zum allerletzten Suchzyklus keinen Unterschied macht zwischen ungeraden und geraden Adresseinträgen. Diese Optimierung ermöglicht es daher, dass ein beträchtliches Ausmaß an Suchen für zwei getrennte Paketadressen gleichzeitig parallel durchgeführt werden, wobei auf diese Weise der Durchsatz nahezu verdoppelt wird, auch wenn die derzeitige Zeit sich nicht verändert, die zur Vervollständigung jedes einzelnen Look-Ups erfordert wird.
  • Wenn daher zwei Paketen in einem EPIC-Modul 20 für den Adress-Look-Up kommen, werden der Quell- und der Ziel-Adressen-Look-Up ineinander geschachtelt, wobei auf diese Weise die Resourcen des SOC 10 für eine höchste Effizienzzeit gemultiplext werden. Die Verwendung von zwei Suchmaschinen 213 und 214 ermöglichen es den Suchmaschinen, gleichzeitig zu arbeiten, da deren Suchtabellen 211 und 212 unterschiedliche Suchschlüssel verwenden. Nur der letzte Vergleich bei der binären Suche wird einen Unterschied zwischen geraden und ungeraden Adressen machen. Daher werden für eine 8K tiefe Adressetabelle 21, die in zwei 4K tiefe Tabellen 211 und 212 unterteilt worden ist, die ersten 12 Suchzyklen für die Adressen des eingehenden Pakets parallel durchgeführt, wohingegen der 13. und abschließende Suchzyklus, der nur durchgeführt wird, wenn die entsprechende Suchmaschine noch nicht eine Übereinstimmung für eine gewünschte Adresse in der Adresstabelle gefunden hat, einen Zugriff auf die andere Adresstabelle erfordert, um die gewünschte Adresse aufzufinden. Unter Bezugnahme auf die 40a ist eine ursprüngliche, nicht geteilte Tabelle als 21 dargestellt. Die 40b zeigt, die die Tabelle 21 in zwei Tabellen 211 und 212 unterteilt wird, in denen die Tabelle 211 gerade Adress-Orte enthält, und die Tabelle 212 ungerade Adress-Orte enthält, wobei beide in sortierter Reihenfolge verbleiben.
  • Für ein erstes Beispiel wird angenommen, dass ein erstes Datenpaket und ein zweites Datenpaket an einem einzigen GPIC 20 auf dem SOC 10 ankommen und zu den Adress-Look-Ups geschickt werden. Es wird angenommen, dass das erste Paket von der Mac-Adresse D kommt und an eine Mac-Adresse AE gerichtet ist. Das zweite Paket kommt von der Mac-Adresse C und ist an die Mac-Adresse AH gerichtet. In einem Switch, der einen Overhead mit vier Taktzyklen benötigt, beginnen die Adress-Look-Ups im wesentlichen gleichzeitig bei Taktzyklus vier, wobei das erste Paket von der ersten Suchmaschine 213 behandelt wird, und das zweite Paket von der zweiten Suchmaschine 214 behandelt wird. Die erste Suchmaschine 213 sucht anfänglich die geraden Adress-Speicher-Orte in der Tabelle 211, wohingegen die zweite Suchmaschine 214 die ungeraden Adress-Speicher-Orte in der Tabelle 212 sucht, wie es durch die 40b dargestellt ist. Die Suchmaschinen sind so konfiguriert, dass sie binäres Suchen initiieren, welches auf eine Gleichschrittweise oder parallele Weise durchgeführt wird, wobei bei dem Mitteleintrag der jeweiligen Tabelle begonnen wird und die Tabellen auf geeignete Weise sortiert sind. Daher beginnt die erste Suchmaschine 213 die Durchsuchung der Tabelle 211 bei dem Speicher-Adress-Ort 16 und vergleicht die Quelladresse D des ersten Datenpakets als Quell-Such-Schlüssel mit dem Eintrag Q, der an dem Speicher-Adress-Ort 16 gespeichert ist, wie es in 40b gezeigt ist. Das Ergebnis dieses Vergleichs ist die Bestimmung, dass die erste Suchmaschine 213 fortfahren soll, die gewünschte Adresse bei niedrigeren Speicher-Adress-Orten zu suchen, da der Adresseintrag Q numerisch größer als die gewünschte Adresse D ist, welches anzeigt, dass die gewünschte Adresse, sofern sie in der Tabelle ist, an einem darunter liegenden Speicher-Adress-Ort gespeichert sein muß. Wie zuvor erörtert, muß sowohl ein Quell-Adress- als auch ein Ziel-Adress-Look-Up für jedes Datenpaket durchgeführt werden. Daher vergleicht beim Taktzyklus 5 die erste Suchmaschine 213 die Ziel-Adresse AE des ersten Datenpakets als Suchschlüssel mit dem Eintrag Q, der an dem mittleren Speicher-Adress-Ort 16 gespeichert ist und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten weitergeführt werden soll, da der Eintrag Q numerisch in Hexadeximal ausgedrückt geringer als die gewünschte Adresse AE ist. Dies zeigt an, dass die gewünschte Zieladresse, sofern sie in der Tabelle ist, an einem darüberliegenden Speicher-Adress-Ort gespeichert sein muß. Bei Taktzyklus 6 schaut die erste Suchmaschine 213 in den Speicher-Adress-Ort 8, wobei der Suchschlüssel D mit dem Eintrag E verglichen wird, und bestimmt, dass die Suche bei der darunterliegenden Speicher-Adress-Orten fortgesetzt werden soll, auf ähnliche Weise wie die oben erörterte. Bei Taktzyklus 7 schaut die erste Suchmaschine 213 in den Speicher-Adress-Ort 24, wobei sie den Ziel-Such-Schlüssel AE mit dem Eintrag Y vergleicht, und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 8 schaut die erste Suchmaschine 213 in den Speicher-Adress-Ort 4, wobei sie den Quell-Such-Schlüssel D mit dem Eintrag E vergleicht, der an diesem Ort gespeichert ist. Als Ergebnis dieses Vergleichs wird bestimmt, dass die Suche an darunter liegenden Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 9 schaut die erste Suchmaschine 213 in den Speicher-Adress-Ort 28, wobei der Ziel-Such-Schlüssel AE mit dem Adresseintrag AC verglichen wird, und bestimmt, dass die Suche bei höheren bzw. darüberliegenden Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 10 schaut die erste Suchmaschine 213 in den Speicher-Adress-Ort 2 und vergleicht den Such-Schlüssel D mit dem Eintrag C und bestimmt, dass die Suche in der ungeraden Adresstabelle 112 bei dem Speicher-Adress-Ort 3 fortgesetzt werden soll. Diese Bestimmung ist ein Ergebnis der ersten Suchmaschine 213, die bestimmt, dass die gewünschte Adresse D in keinem der Speicher-Adress-Orte 2 oder 4 gefunden worden ist, die aufeinanderfolgende Einträge sind, die die gewünschte Adresse numerisch umgeben. Angesichts dieser Situation ist es daher bekannt, dass die gewünschte Adresse nicht in der ersten Tabelle 211 abgelegt ist und daher die erste Suchmaschine 213 versuchen muß, in die zweite Adresstabelle 212 bei dem Speicher-Adress-Ort 3 zu sehen, da dieser Speicher- Adress-Ort im Zwischenraum zwischen den zuvor durchsuchten Speicher-Adress-Orten 2 und 4 angeordnet ist. Bei Taktzyklus 11 schaut die erste Suchmaschine 213 in den Speicher-Adress-Ort 30, den letzten Speicher-Adress-Ort in der geraden Adresstabelle 211, wobei sie den Zielsuchschlüssel AE mit dem Eintrag AE vergleicht und bestimmt bei Takt 12, dass das Ergebnis ein Treffer ist. Da ein Treffer bestimmt worden ist, fährt die erste Suchmaschine 213 nicht fort, nach dem Eintrag AE in der ungeraden Adresstabelle 212 zu suchen, da das Ziel-Adress-Look-Up für das erste Paket vollständig ist. Es ist jedoch die Quelladresse noch nicht gefunden und daher schaut im Taktzyklus 12 die erste Suchmaschine 213 in die ungerade Adresstabelle 212 bei dem Speicher-Adress-Ort 3, wobei sie den Quell-Such-Schlüssel D mit dem Eintrag D vergleicht und bei Taktzyklus 13 bestimmt, dass das Ergebnis ein Treffer ist. So ist das Adress-Look-Up für das erste Paket vollständig, da sowohl die Quell- und Zieladresse innerhalb der entsprechenden Adress-Look-Up-Tabellen gefunden worden sind.
  • Während die Suchmaschine 213 die zuvor genannten Look-Ups durchführt, die der Quell- und der Zieladresse des ersten Datenpakets zugeordnet sind, führt die zweite Suchmaschine 214 gleichzeitig die Look-Ups für die Quell- und Zieladresse des zweiten Datenpakets durch. Beim Taktzyklus 4, gleichzeitig zu dem Vergleich der ersten Suchmaschine 213 des geraden Speicher-Adress-Orts 16 schaut die zweite Suchmaschine 214 in den ungeraden Speicher-Adress-Ort 16, der die Mitte der ungeraden Adresstabelle 212 darstellt. Die zweite Suchmaschine 214 vergleicht den Quell-Such-Schlüssel Z mit dem Adresseintrag R und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten weitergeführt werden soll, da R numerisch kleiner als die gewünschte Adresse ist. Bei Taktzyklus 5 schaut die zweite Suchmaschine 214 in die Speicheradresse 17, wobei sie den Ziel-Adress-Suchschlüssel AH mit dem Eintrag R vergleicht, und bestimmt, dass die Suche bei höhreren Speicher-Adress-Orten fortgeführt werden soll, da die gewünschte Adresse numerisch kleiner als der an dem Speicher-Adress-Ort 17 gespeicherte Eintrag ist. Bei Taktzyklus 6 schaut die zweite Suchmaschine 214 in den Speicher-Adress-Ort 25, wobei sie den Quell-Such-Schlüssel Z mit dem Eintrag Z vergleicht, und bestimmt bei Takt 7, dass das Ergebnis ein Treffer ist. Der Quell-Adress-Look-Up für das zweite Datenpaket ist somit vollständig. Bei Taktzyklus 7 fährt die zweite Suchmaschine 214 fort, nach der Zieladresse zu suchen, indem sie in den Speicher-Adress-Ort 25 schaut und den Ziel-Such-Schlüssel AH mit dem Eintrag Z vergleicht. Dieser Vergleich bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 9 wertet die zweite Suchmaschine 214 die Inhalte des Speicher-Adress-Orts 29 aus, indem sie den Ziel-Such-Schlüssel AH mit dem Eintrag AD vergleicht, und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 11 schaut die zweite Suchmaschine 214 in den Speicher-Adress-Ort 31, vergleicht den Ziel-Such-Schlüssel AH mit dem Eintrag AF und bestimmt bei Takt 12, dass das Ergebnis verfehlt wurde. Der Ziel-Adress-Look-Up für das zweite Paket ist somit vollständig. Der Ziel-Adress-Look-Up für das zweite Paket benötigt kein abschließendes Lesen aus der geraden adressierten Tabelle 213; die Suchmaschine 214 bestimmt einen Fehler, wenn das Ergebnis der abschließenden Suche keinen Zeiger von der Tabelle 212 auf die Tabelle 211 liefert.
  • Als zweites Beispiel wird angenommen, dass ein erstes Datenpaket in einen Port an dem EPIC 20 auf dem SOC 10 von der Mac-Adresse A kommt, das an eine Mac-Adresse JJ gerichtet ist, während ein zweites Datenpaket gleichzeitig in einen anderen Port auf dem EPIC 20 des SOC 10 von der Mac-Adresse G kommt und an die Mac-Adresse CC gerichtet ist. In einem Switch, der wieder einen Overhead von vier Taktzyklen benötigt, beginnen die Adress-Look-Ups bei Taktzyklus 4, wobei das erste Datenpaket von der ersten Suchmaschine 213 behandelt wird und das zweite Datenpaket von der zweiten Suchmaschine 214 behandelt wird. Die erste Suchmaschine 213 durchsucht anfänglich die gerade Adess-Ort-Tabelle 211 und die zweite Suchmaschine 214 durchsucht die ungerade Adress-Ort-Tabelle 212. Die Suchmaschinen sind wieder so konfiguriert, dass sie einen binären Suchvorgang oder einen Suchvorgang des Gleichschritt-Typs bei dem mittleren Adressport der jeweiligen Tabelle zu starten, wobei die Tabellen 211 und 212 von der primären Adresstabelle auf geeignete Weise geteilt und sortiert sind, wie es in den 41a und 41b gezeigt ist. Daher vergleicht bei Taktzyklus 4 die erste Suchmaschine 213 den Quell-Adress-Suchschlüssel A mit dem Eintrag Y, der an dem Speicher-Adress-Ort 16 gespeichert ist, und bestimmt, dass die Suche bei niedrigeren bzw. darunterliegenden Speicher-Adress-Orten fortgesetzt werden soll, da der hexadezimale numerische Wert der gewünschten Adresse größer als der Eintrag ist. Bei Taktzyklus 5 vergleicht die erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel JJ mit dem Eintrag Y und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt werden soll, da der hexadezimale numerische Wert der gewünschten Adresse geringer als der Eintrag ist. Bei Taktzyklus 6 vergleicht die erste Suchmaschine 213 den Quell-Adress-Suchschlüssel mit dem Eintrag M, der an dem Speicher-Adress-Ort 8 gespeichert ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 9 vergleicht die erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel mit dem Eintrag KK, der an dem Speicher-Adress-Ort 28 gespeichert ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 10 vergleicht die erste Suchmaschine 213 den Quell-Adress-Suchschlüssel mit dem Eintrag D, der an dem Speicher-Adress-Ort 2 gespeichert ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 11 vergleicht die erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel mit dem Eintrag GH, der an dem Speicher-Adress-Ort 26 gespeichert ist, und bestimmt, dass die Suche in der ungeraden Adresstabelle 212 bei dem Speicher-Adress-Ort 27 fortgesetzt werden soll. Diese Bestimmung gründet sich auf die Tatsache, dass die Suchmaschine 213 die Einträge in benachbarten Speicher-Adress-Orten 26 und 28 mit dem Ziel-Suchschlüssel verglichen hat und bestimmt hat, dass die gewünschte Adresse, falls sie in der Tabelle ist, in einem Speicher-Adress-Ort zwischen diesen beiden Speicher-Adress-Orten gespeichert sein würde. Als solche ist der einzige verbleibende Speicher-Adress-Ort, der zum Suchen in dem Vorgang nach dem Gleichschritt-Typ verfügbar ist, der Speicher-Adress-Ort 27 in der ungeraden Adresstabelle 212. Bei Taktzyklus 12 vergleicht die erste Suchmaschine 213 den Quell-Adress-Suchschlüssel mit dem Eintrag B, der bei dem Speicherort 0 gespeichert ist und bestimmt, dass die Suche einen Fehler geliefert hat. Insofern als der Eintrag B die niedrigste numerische Adresse in den Tabellen ist, wird ein Fehler bestimmt und danach muss die Quell-Mac-Adresse A gelernt und in die Tabelle an dem geeigneten Ort eingegeben werden, um die sortierte Reihenfolge der Tabelle aufrecht zu erhalten, welches hierin erörtert werden wird. Bei Taktzyklus 13 vergleicht die erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel JJ mit dem Eintrag JJ, der an dem Speicher-Adress-Ort 27 der ungeraden Adresstabelle 212 gespeichert ist, und bestimmt, dass ein Treffer aufgetreten ist.
  • Zur Vervollständigung der oben genannten Schritte wurde daher die Quelladresse des ersten Datenpakets nicht gefunden und musste daher gelernt und in den Adresstabellgen gespeichert werden. Die Zieladresse des ersten Datenpakets jedoch wurde bei dem Speicherort 27 in der ungeraden Adresstabelle 212 gefunden und daher wurde für diese Adresse ein Treffer erklärt. Als solches wurde der Suchvorgang für die Quell- und Zieladresse für das erste Datenpaket abgeschlossen. Wie bei dem ersten Beispiel müssen jedoch ebenso die Quell- und die Zieladresse des zweiten Datenpakets innerhalb der Adresstabellen gesucht werden.
  • Daher unternimmt die zweite Suchmaschine 214 gleichzeitig mit den zuvor genannten Schritten, die der ersten Suchmaschine 213 bei der Durchsuchung der geraden Adresstabelle 211 zugeordnet sind, eine Durchsuchung der ungeraden Adresstabelle 212 nach der Quell- und Zieladresse des zweiten Datenpakets. Die zweite Suchmaschine 214 beginnt bei Taktzyklus 4 mit dem Vergleich des Quell-Adress-Suchschlüssels G mit dem Adresseintrag AA, der an dem Speicher-Adress-Ort 17 in der ungeraden Adresstabelle 212 gespeichert ist. Der Vergleich führt zu der Bestimmung, dass die Suche bei niedrigeren Speicher-Adress-Orten fortgeführt werden sollte, da der Eintrag G numerisch kleiner als der Adresseintrag AA ist. Bei Taktzyklus 5 vergleicht die zweite Suchmaschine 214 den Ziel-Adress-Suchschlüssel CC mit dem Eintrag AA, der an dem Speicher-Adress-Ort 17 gespeichert ist. Dieser Vergleich führt zur Bestimmung, dass die Suche bei höheren Speicher-Adress-Orten fortgeführt werden soll. Bei Taktzyklus 6 vergleicht die zweite Suchmaschine 214 den Quell-Adress-Suchschlüssel G mit dem Eintrag N, der an dem Speicher-Adress-Ort 9 gespeichert ist. Die zweite Suchmaschine 214 bestimmt, dass der Eintrag N numerisch größer als die gewünschte Adresse ist und daher muß die Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden. Bei Taktzyklus 7 vergleicht die zweite Suchmaschine 214 den Ziel-Adress-Suchschlüssel CC mit dem Eintrag CF, der in dem Speicher-Adress-Ort 25 gespeichert ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 8 vergleicht die zweite Suchmaschine 214 den ursprünglichen Adress-Suchschlüssel G mit dem Eintrag J, der an dem Speicher-Adress-Ort 5 gespeichert ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 9 vergleicht die Suchmaschine 214 den Ziel-Such-Adress-Suchschlüssel mit dem Eintrag BC, der an dem Speicher-Adress-Ort 21 gespeichert ist, und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 10 vergleicht die Suchmaschine 214 den Quell-Adress-Suchschlüssel G mit dem Eintrag E, der an dem Speicher-Adresss-Ort 3 gespeichert ist, und bestimmt, dass die gewünschte Adresse numerisch größer als der Eintrag E ist. Da zuvor während des Taktzyklusses C bestimmt worden ist, dass die gewünschte Adresse größer als der Eintrag am ungeraden Speicher-Adress-Ort 3 ist, und bei Taktzyklus 8 bestimmt worden ist, dass er geringer als der Eintrag bei dem ungeraden Speicher-Adress-Ort 5 ist, bestimmt daher die zweite Suchmaschine 214, dass der nächste Vergleich in der geraden Adresstabelle 211 bei dem Speicher-Adress-Ort 4 sein wird. Bei Taktzyklus 11 vergleicht die zweite Suchmaschine 214 den Ziel-Adress-Suchschlüssel CC mit dem Eintrag BE und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt werden soll. Die zweite Suchmaschine 214 hat jedoch bereits den benachbarten höheren Speicher-Adress-Ort, der der Speicher-Adress-Ort 25 war, in Taktzyklus 7 durchsucht. Daher bestimmt die zweite Suchmaschine 214, dass der nächste Vergleich für die Zieladresse in der geraden Adresstabelle 211 bei dem Speicher-Adress-Ort 24 sein wird. Bei Taktzyklus 12 versucht die zweite Suchmaschine 214, die gerade Adresstabelle 211 nach dem Quell-Adress-Suchschlüssel G zu durchsuchen; wobei jedoch, wie zuvor erörtert, die erste Suchmaschine 213 einen Look-Up für den Quell-Adress-Schlüssel A bei dem Speicher-Adress-Ort 0 in der geraden Adresstabelle 211 während dieses bestimmten Taktzyklusses durchführt und somit die zweite Suchmaschine 214 während dieses Taktzyklusses still steht und nicht in der Lage ist, den Vergleich durchzuführen. Bei Taktzyklus 13 hat die erste Suchmaschine 213 ihren Look-Up in der geraden Adresstabelle 211 abgeschlossen und es wird der zweiten Suchmaschine 214 erlaubt, mit dem zuvor ausgesetzten bzw. gestoppten Adress-Look-Up in der geraden Adresstabelle 211 fortzufahren. Daher vergleicht bei Taktzyklus 13 die zweite Suchmaschine 214 den Eintrag G, der in dem Speicherort 4 der geraden Adresstabelle gespeichert ist, mit dem Quell-Adress-Suchschlüssel G. Bei Taktzyklus 14 wird ein Treffer für die Quelladresse bestimmt und die zweite Suchmaschine 214 führt die Suche nach der Zieladresse des zweiten Datenpakets fort, indem der Ziel-Adress-Suchschlüssel CC mit dem Eintrag CC verglichen wird, der in dem Speicher-Adress-Ort 24 in der geraden Adresstabelle 211 gespeichert ist. Bei Taktzyklus 15 wird ein Treffer für die Zieladresse bestimmt.
  • Nach Vervollständigung des Taktzyklusses 15 sind sowohl der Quell- als auch Ziel-Adress-Look-Up für das erste und das zweite Datenpaket abgeschlossen. Die Quelladresse des ersten Datenpakets wurde nicht innerhalb der Tabellen gefunden und mußte daher gelernt und auf geeignete Weise in die Tabellen eingefügt werden. Die verbleibenden Adressen, einschließlich der Zieladresse des ersten Datenpakets und die Quell- und Ziel-Adresse des zweiten Datenpakets wurden innerhalb der Adresstabellen gefunden.
  • In Fällen, in denen wie oben erwähnt eine Adresse gelernt werden muß, folgt ein spezifisches Betriebsverfahren. Als ein Beispiel wird die primäre Adresstabelle, wie in 42 gezeigt, wieder in die erste und zweite Adresstabelle 211 und 212 aufgeteilt, wie es in 240a dargestellt ist. Es wird angenommen, dass die Adresse F als Ergebnis eines Suchvorganges erlernt werden soll, der die Adresse nicht innerhalb der Tabellen findet. Insofern die in den Tabellen gespeicherten Adresseinträge sortiert sind, wird die Adresse F logisch an den Speicher-Adress-Ort 4 gehören, wenn die sortierte Reihenfolge bei Einfügung aufrecht erhalten werden soll. Der Speicher-Adress-Ort 4 ist derzeit jedoch von dem Eintrag G belegt. Um daher Platz zu schaffen, damit die Adresse F gelernt und richtigerweise an dem Speicher-Adress-Ort 4 gespeichert werden kann, muß jeder der Einträge in den Speicher-Adress-Orten 4 bis 26 bewegt oder nach oben zu den benachbarten Speicher- Adress-Orten verschoben werden, wobei auf diese Weise der Speicher-Adress-Ort 4 geöffnet wird. Um diese Verschiebung dieser Adresseinträge zu erreichen, liest eine Lernzustandsmaschine den Adresseintrag GH von dem Speicher-Adress-Ort 26 und den Adresseintrag CF von dem Speicher-Adress-Ort 25 in einem einzigen Taktzyklus. Wieder in dem gleichen Taktzyklus werden der Adresseintrag GH in den Speicher-Adress-Ort 27 geschrieben, wohingegen der Adresseintrag CF in den Speicher-Adress-Ort 26 geschrieben wird. Diese gleichzeitige paarweise Lese-/Schreib-Vorgang wird nach unten durch die Speicher-Adress-Orte innerhalb der Tabellen fortgesetzt, bis die Einträge K und J von den Speicher-Adress-Orten 6 und 5 gelesen werden und in die Speicher-Adress-Orte 7 bzw. 6 gespeichert werden. Zu diesem Zeitpunkt wird der Eintrag G von dem Speicher-Adress-Ort 4 gelesen und in den Speicher-Adress-Ort 5 geschrieben, der in der vorangegangenen Schiebeoperation von der Adresse 9 geräumt worden ist. Dies führt zu dem gewünschten Leerstand an dem Speicher-Adress-Ort 4, wodurch so Platz für die gelernte Speicher-Adresse F geschaffen wird, die in den Speicher-Adress-Ort 4 geschrieben werden soll. Als ein Ergebnis dieser bestimmten Tabellenkonfiguration ist die Lernrate nahezu doppelt so hoch wie die eines Schemas mit einer einzigen Tabelle.
  • In dem Fall, in dem ein einziges Datenpaket von einem Eingang ankommt und eine Adressauflösung benötigt und es keine anderen in der Schlage befindlichen Datenpakete gibt, die auf einen Adress-Look-Up warten, behandelt die Suchmaschine den Adress-Look-Up für das Datenpaket einzeln. Wenn unmittelbar nachdem der Look-Up für das einzelne Datenpaket gestartet worden ist, eine Flut von Datenpaketen von anderen Eingängen ankommt, müssen in dem schlimmsten Fall die neu angekommenen Datenpakete für 30 Taktzyklen warten, während die Quell- und Zieladresse des einzelnen Datenpakets in den Tabellen gesucht wird, bevor die Suchmaschinen den Look-Up für die neu angekommen Datenpakete beginnen können. Wenn ein beliebiges der neu angekommenen Datenpakete von den Gigabit-Ports sind, muß das Entscheidungsschema so konfiguriert sein, dass es diesen Datenpaketen eine höhere Priorität zuteilt, da deren Adress-Look-Ups alle innerhalb von 90 Taktzyklen abgeschlossen sein muß, nachdem die Adress-Look-Ups der einzelnen Datenpakete abgeschlossen sind. Die vorliegende Offenbarung schafft einen klaren Vorteil gegenüber Schemas mit einer einzelnen Adresstabelle, da die große Mehrheit der gleichzeitigen Suchen parallel durchgeführt wird. In dem Fall, indem beide Suchen nur Vergleiche erfordern, wird daher die Leistung verdoppelt, unabhängig von Adress-Einfügungen und -löschungen, da diese Vorgänge von geringerer Priorität sind und keine Auswirkung auf die Leistung haben. Als ein bestimmtes Beispiel wird die Leistung für die parallele Bearbeitung berechnet, indem die Anzahl der Zyklen pro Suche mit der Anzahl der Taktzyklen pro Suchzyklus multipliziert wird und dann der Taktoverhead addiert wird. Diese Rechnung wird durch die folgende Gleichung dargestellt:
    Leistung = (#Parallelzyklen) A (2 Takte/Suchzyklus) + Overhead (1)
  • Daher wird die Leistung für eine 8K-Tabelle folgendermaßen dargestellt:
    (13)A(2)+4 = 30 Taktzyklen für 2 Pakete oder 15 Taktzyklen für ein einzelnes Datenpaket (2)
  • Die Leistung für eine 16K-Tabelle wird folgendermaßen dargestellt:
    (14)A(2)+ 4 = 32 Taktzyklen für 2 Pakete oder
    16 Taktzyklen für ein einzelnes Paket (3)
  • Wenn nur ein einzelnes Datenpaket einen Adress-Look-Up benötigt, stellt das Folgende die Suchzeit zum Durchführen des Look-Ups dar:
    (13)A(2)+4 = 30 Taktzyklen pro Paket (4)
    (14)A(2)+4 = 32 Taktzyklen pro Paket (5)
  • Das Verfahren schafft daher eine wesentliche Erhöhung bei der Leistung der Adress-Look-Up-Zeit gegenüber einer einzigen Tabelle ARL, während nicht die Benutzung von beliebigen zusätzlichen Speicher erfordert wird. Weiterhin wird die Look-Up- und Lern-Latenzzeit gegenüber einer einzigen Tabelle ARL nahezu halbiert, da die Mehrheit der Lesevorgänge und Schreibvorgänge, die damit verbunden sind, parallel durchgeführt werden kann, wobei auf diese Weise die Anzahl der Taktzyklen verringert wird, die zum Vervollständigen des Verschiebens der Speicheradressen und zum Einsetzen einer gelernten Adresse erforderlich sind. Zusätzlich verringert sich die Leistung in dem schlimmsten Fall nur um zwei Taktzyklen, da die Tabellengröße von 8k auf 16k erhöht wird. Weiterhin kann das oben beschriebene Beispiel physikalisch auf mehreren Arten implementiert werden. Beispielsweise können die Adresstabellen und die Suchmaschinen in Hardware implementiert werden, wie beispielsweise auf einem einzigen Halbleitersubstrat zusammen mit verschiedenen Komponenten des SOC 10. Alternativ können die Adresstabellen und die Suchmaschinen als separate diskrete Hardwarekomponenten implementiert werden, die elektrisch mit den Komponenten des SOC 10 verbunden sind. Weiterhin können die Tabellen und die Suchmaschinen, die dem SOC 10 zugeordnet sind, durch Software implementiert und durchsucht werden, beides exklusiv oder teilweise. Auch wenn die vorliegende Vorrichtung und das vorliegende Verfahren im Zusammenhang mit der Adressauflösung in einem Netzwerk-Switch beschrieben ist, wird zusätzlich die Vorrichtung und das Verfahren zum Suchen einer sortierten Tabelle die hier erwähnt sind, dahingehend betrachtet, dass sie auf zahlreiche alternative Anwendungen anwendbar sind.
  • Filterung
  • Unter Bezugnahme wieder auf die Diskussion der 14, wird eine Filteranforderung an den FFP 141 geschickt, sobald die ersten 64 (vierundsechzig) Bytes des Pakets in dem Eingangs-FIFO 142 ankommen. Der FFP 141 beinhaltet einen umfassenden Filtermechanismus, der das SOC 10 in die Lage versetzt, Paketfilter auf jedes beliebige Feld eines Pakets von der Ebene 2 bis zur Ebene 7 des OSI-7-Schichten-Modells zu setzen. Die Filter werden zur Paketklassifikation auf der Grundlage von verschiedenen Protokollfeldern innerhalb der Pakete selbst verwendet. Verschiedene Aktionen können auf der Grundlage der Paketklassifikation durchgeführt werden, einschließlich des Fallenlassen des Pakets, des Senden des Pakets an die CPU, des Senden des Pakets an andere Ports, das Senden des Pakets an bestimmte COS-Prioritäts-Schlangen und des Wechselns der Diensttyp-(TOS)-Präzedenz, beispielsweise. Filter werden ebenso weit verbreitet verwendet, um Sicherheitsmerkmale zu implementieren, da sie so konfiguriert werden können, dass sie einem Paket die weitere Übermittlung nur dann erlauben können, wenn einem Filter entsprochen wird. Wenn es keine Übereinstimmung gibt, können Maßnahmen getroffen werden, die ausschließlichen Filtern zugeordnet sind. Eine weitere Erörterung von Filtern, sowohl einschließliche als auch ausschließliche, wird später vorgestellt werden.
  • Es soll erwähnt werden, dass das SOC 10 die Fähigkeit hat, sowohl tagged als auch untagged bzw. markierte und unmarkierte Pakete zu behandeln, die in dem Switch eingehen. Markierte Pakete sind gemäß den IEEE-Standards markiert und beinhalten ein spezifisches IEEE 802.1p-Prioritätsfeld für das Paket. Nicht markierte Pakete haben keine Markierung und beinhalten daher kein 802.p-Prioritätsfeld. Das SOC 10 kann einen geeigneten Prioritätswert für ein Paket auf der Grundlage entweder des eingehenden Ports oder der Zieladresse zuteilen. Wie bei dem hier erörterten ARL-Tabellenformat erwähnt, ist ein SCP-(Quell-TOS-Prioritäts)-Bit als eines dieser Felder in der Tabelle enthalten. Wenn dieses SCP-Bit gesetzt ist, ordnet das SOC 10 eine Gewichtung auf der Grundlage eines Quell-COS-Werts in der ARL-Tabelle zu. Wenn das SCP nicht gesetzt ist, wird das SOC 10 einen COS für das Paket auf der Grundlage des Ziel-COS-Felds in der ARL-Tabelle zuordnen. Diese COS-Werte sind 3-Bit-Felder in der ARL-Tabelle, wie zuvor in den Beschreibungen des ARL-Tabellenfelds erwähnt worden ist.
  • Der FFP 141 ist im wesentlichen eine programmierbare, von einer Zustandsmaschine angetriebene Regelmaschine. Die Filter, die von dem FFP verwendet werden, sind 64 (vierundsechzig) Byte breit und werden auf ein eingehendes Paket angewendet. In einigen Ausführungsformen kann eine 64-Byte-Filtermaske verwendet werden und auf beliebige ausgewählte 64 Byte oder 512 Bit eines Pakets angewendet werden. Ein Filter kann erzeugt werden, indem ausgewählte Felder eines eingehenden Pakets so analysiert werden, dass eine 64-Byte-Filtermaske erzeugt wird, die selektiv auf interessierende Felder eines eingehenden Pakets angewendet wird. Ein Filter kann erzeugt werden, indem eine vorbestimmte Anzahl von Offsets auf das eingehende Datenpaket 112 angewendet wird, wobei eine vorbestimmte Anzahl an Bytes unmittelbar im Anschluss an jeden einzelnen Offset von dem Paket analysiert werden und danach zusammengefügt werden, um einen Filterwert zu bilden, der in dem Filtervorgang verwendet wird.
  • Wie zuvor ausgeführt, werden Filter hauptsächlich zur Paketklassifikation auf der Grundlage von ausgewählten Protokollfeldern in dem Paket verwendet. Auf der Grundlage der Paketklassifikation kann eine Vielzahl von Aktionen durchgeführt werden. Die Aktionen können das Außerachtlassen der Pakete, das Senden der Pakete an die CPU, das Senden der Pakete an einen gespiegelten Port, das Zuordnen einer Priorität, die Veränderung des TOS-Kennzeichens usw. beinhalten. Der FFP 141 beinhaltet eine Filterlogik 1411, die in 15 dargestellt ist und selektiv vorbestimmte Felder der eingehenden Datenpakete analysiert, wobei auf diese Weise effektiv die Werte der gewünschten Felder von den Mac-, IP-, TCP- und UDP-Headern erhalten werden. Die 20 ist eine Tabelle, die die verschiedenen wichtigen Felder und deren entsprechende Offsets für verschiedene Pakettypen darstellt. Andere Felder, die im Bezug zu IPX und/oder anderen Feldern stehen können, können ebenso in diesem Filterschema durch Auswahl dieser bestimmten Felder verwendet werden, die von dem Paket bei der Filterung analysiert werden.
  • Das SOC 10 beinhaltet eine Filterdatenbank, die eine Mehrzahl von Filtersätzen enthält. In einem Beispiel können zwei Filtersätze vorgesehen sein, wobei jeder acht Filter und eine zugeordnete Regeltabelle aufweist, die 512 Einträge tief ist. Die 21A zeigt das Format für eine Filtermaske, wobei die verschiedenen Felder davon gezeigt werden, einschließlich des Feldmaskenfelds. Die spezifischen Felder der Filtermaske sind wie folgt:
    Feldmaske – 512 Bit lang – Die Feldmaske besteht aus verschiedenen Protokollmasken. Für die Felder, die interessant sind, ist die Maske gesamt zu 1 gesetzt und für andere Felder ist die Maske zu Null gesetzt.
    Ausgangsportmaske – 6 Bit lang – Ausgangsportmaske – Diese Ausgangsportmaske wird nur gesamt zu 1 gesetzt, wenn der Ausgangsport Teil des Filters ist.
    Ausgangs-ModId-Maske – 5 Bit lang – Ausgangs-Modul-Id-Maske – Diese Modul-Id-Maske wird nur gesamt zu 1 gesetzt, wenn die Ausgangs-Modul-Id Teil des Filters ist.
    Eingangs-Port-Maske – 6 Bit lang – Die Eingangs-Port-Maske wird nur gesamt zu 1 gesetzt, wenn der Eingangs-Port Teil des Filters ist.
    Datenoffset 1 – 7 Bit lang – Datenoffset 1 – Der 7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte der Daten 1 irgendwo in den ersten 128 Byte des Pakets zu setzen.
    Datenoffset 2 – 7 Bit lang – Datenoffset 2 – Der 7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte der Daten 2 irgendwo in den ersten 128 Byte des Pakets zu setzen.
    Datenoffset 3 – 7 Bit lang – Datenoffset 3 – Der 7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte der Daten 3 irgendwo in den ersten 128 Byte des Pakets zu setzen.
    Datenoffset 4 – 7 Bit lang – Datenoffset – Der 7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte der Daten 4 irgendwo in den ersten 128 Byte des Pakets zu setzen.
    Nichtübereinstimmungsaktion – 13 Bit lang – Nichtübereinstimmungsaktion – Dieses Feld ist nur gültig, wenn das Enable-Bit für die Nichtübereinstimmungsaktion zu 1 gesetzt ist. Die Nichtübereinstimmungsaktion wird nur angewendet, wenn das Filter mit keinem der Einträge in der Regeltabelle übereinstimmt. Die folgenden Aktionen sind definiert: Bit 0 – Wenn dieses Bit gesetzt ist, dann wechselt die 802.1p-Priorität in dem Paket. Die Priorität wird aus dem 802.1p-Prioritätsfeld aufgenommen. Bit 1 – Wenn dieses Bit gesetzt ist, dann kategorisiere dieses Feld zum Senden an eine Prioritäts-COS-Schlange, aber modifiziere nicht das 802.1p-Prioritätsfeld in dem Paketmarkierungsheader. Wieder wird die Priorität von dem 802.1p-Prioritätsfeld aufgenommen. Bit 2 – Wenn dieses Bit gesetzt ist, dann wechselt die IP-TOS-Präzedenz in dem IP-Header. Der neue TOS-Präzedenz-Wert wird von dem TOS_P-Feld aufgenommen. Bit 3 – Wenn dieses Bit gesetzt ist, dann sende das Paket an die CPU. Bit 4 – Wenn dieses Bit gesetzt ist, dann lasse das Paket außer Acht. Bit 5 – Wenn dieses Bit gesetzt ist, dann wähle den Ausgangsport von dem Portfeld. Wenn das Paket ein Broadcast, Multicast oder ein DLF ist, dann wird diese Aktion nicht angewendet. Bit 6 – Wenn dieses Bit gesetzt ist, dann wird das Paket zu dem gespiegelten Port gesendet. Bit 7 – Ist ein reserviertes Bit. Bit 8 – Wenn dieses Bit gesetzt ist, dann wird der Wert des 802.1 p-Prioritätsfeld von dem TOS-Präzedenzfeld in dem IP-Header aufgenommen (TOS_P → COS). Bit 9 – Wenn dieses Bit gesetzt ist, dann wird der Wert des TOS-Präzedenzfelds in dem IP-Header von dem 802.1 p-Prioritätsfeld aufgenommen (TOS_P → COS). Bit 10 – Wenn dieses Bit gesetzt ist, dann wird der Wert der differenzierten Dienste (DS) von dem Feld für differenzierte Dienste aufgenommen. Bit 11 – Wenn dieses Bit gesetzt ist, dann wähle den Ausgangsport und die Ausgangs-Modul-Id von der Filtermaske unabhängig vom Pakettyp. Bit 12 – Reserviert.
    NMA-Enable – 1 Bit lang – Nichtübereinstimmungsaktions-Enable – Wenn dieses Bit gesetzt ist, dann ist das Nichtübereinstimmungsaktionsfeld ein gültiges Feld. Auch ist die Weise, auf die die Suche in der Regeltabelle durchgeführt wird, ein wenig verschieden.
    802.1p-Prioritätsbits – 3 Bit lang – 802.1p-Prioritätsbits – Der Wert in diesem Feld wird verwendet, um dem Paket die Priorität zuzuweisen. Der 802.1 p-Standard definiert 8 Ebenen von Prioritäten von 0 bis 7. Das Feld wird nur verwendet, wenn Bit 0 oder Bit 1 des Aktionsfelds gesetzt ist.
    TOS_P-Feld – 3 Bit lang – TOS_P-Feld – Der Wert in diesem Feld wird verwendet, um dem TOS-Präzedenzfeld in dem IT-Header den neuen Wert zuzuweisen. Dieses Feld wird nur verwendet, wenn Bit 2 des Aktionsfelds gesetzt ist.
    Differenzierte Dienste – 6 Bit lang – Differenzierte Dienste – Der Wert in diesem Feld wird verwendet, um dem Feld für differenzierte Dienste in dem IP-Header den neuen Wert zuzuweisen.
    Ausgangsport – 6 Bit lang – Dieses Feld identifiziert die Ausgangs-Port-Nummer. Dieser Port hat Vorrang vor dem Ausgangsport, der von der ARL ausgewählt wird.
    Ausgangs-Modul-Id – 5 Bit lang – Dieses Feld identifiziert die Ausgangs-Modul-Nummer. Die Kombination des Ausgangs-Moduls mit dem Ausgangsport hat Vorrang vor dem Ausgangsport und der Modul-Id, die von der ARL ausgewählt worden sind. Dieses Feld ist nur gültig, wenn das Remote-Port-Bit bzw. das Bit für den entfernten Port gesetzt ist.
    Remote-Port-Bit – 1 Bit lang – Wenn dieses Bit gesetzt ist, dann ist der Ausgangsport auf dem entfernten Modul und der Port wird von der Kombination von Ausgangs-Modul-Id und Ausgangsport identifiziert.
    Filter-Enable-Bit – 1 Bit lang – Wenn dieses Bit gesetzt ist, dann ist der Filter enabled bzw. aktiviert.
    Zähler – 5 Bit lang – Zählerindex – Dies ist der Zähler, der implementiert werden muß.
  • 22 ist ein Flußdiagramm, das das Filtern im SOC 10 unter Verwendung des FFP 141 und der oben erörterten Filterkonfiguration zeigt. Ein eingehendes Paket, das an einem Eingang eines EPIC 20 oder GPIC 30 eingeht, wird durch die Adress-Auflösungs-Logik, die bei Schritt 22-1 gezeigt ist, der Adressauflösung unterzogen. Nachdem die Adressauflösung vollständig ist, analysiert der FFP 141 selektiv das Paket des Schritts 22-2 und erhält die Werte der vorausgewählten Felder, die dem Paket zugeordnet sind. In Abhängigkeit von dem Pakettyp, ob es ein Ethernettyp II, 802.3, IP, IPX, TCP, UDP, usw. ist, können die oben aufgelisteten Felder ebenso in dem Analysierungsvorgang gewonnen werden. Ein Feldwert wird bei Schritt 22-3 konstruiert, indem die gewonnenen Felder in der gleichen Reihenfolge aneinander gehängt werden, wie sie in der Feldmaske aufgelistet sind, einschließlich des Eingangsports und des Ausgangsports. Wenn der Ausgangsport nicht bestimmt oder bekannt ist, wird der Portwert auf einen unzulässigen Wert gesetzt, der beispielsweise 0x3f sein kann. Bei Schritt 22-4 geht die Logik 1411 durch alle Filter, bei denen das Filter-Enable-Bit gesetzt ist, und wendet den Maskenteil des Filters auf das Feld an. Das Ergebnis dieses Vorgangs wird bei Schritt 22-5 mit der Filternummer aneinandergehängt, um einen Suchschlüssel zu erzeugen. Der Suchschlüssel wird verwendet, um eine Übereinstimmung zu dem Schlüssel in den Regeltabellen 22 bei Schritt 22.6 zu suchen. Wenn das Nichtübereinstimmungsaktions-(NMA)-Bit zu 0 gesetzt ist, wird das Filter als ein einschließliches Filter betrachtet. Für einschließliche Filter, wie nachstehend erörtert werden wird, muß es eine exakte Übereinstimmung geben, damit die Aktionen ausgeführt werden, die in dem Eintrag der Regeltabelle definiert sind. Wenn es keine exakte Übereinstimmung gibt, wird für dieses bestimmte Filter keine Aktion durchgeführt. Wenn das NMA-Bit zu 1 gesetzt ist, dann ist das Filter ein ausschließliches Filter. Dieser Vorgang wird für jedes einzelne Filter wiederholt, bis alle ausgewählten Filter auf das Paket angewendet worden sind.
  • Wenn eine binäre Suche auf die Regeltabelle 22 durchgeführt wird, wird ein zusätzlicher Vergleich durchgeführt, indem Filterauswahl-, Quellport- und Zielport-Felder verwendet werden, um zu bestimmen, ob ein teilweise Übereinstimmung existiert. Wenn es eine vollständige Übereinstimmung gibt, dann werden die Aktionen von dem Eintrag der Übereinstimmungs-Regel-Tabelle angewendet. Wenn es keine vollständige Übereinstimmung, aber eine teilweise Übereinstimmung gibt, dann werden Aktionen aus dem „Nichtübereinstimmungsaktion"-Feld in der Filtermaske bei Schritt 22-7 angewendet. Wenn es keine vollständige Übereinstimmung und keine teilweise Übereinstimmung gibt, dann wird keine Filteraktion vorgenommen.
  • Die Regeltabelle 22 ist vollständig von der CPU 52 über den CMIC 40 programmierbar. Die Regeltabelle kann beispielsweise 256 tief sein. Die Einträge in der Regeltabelle sind wiederum als Beispiel in aufsteigender Reihenfolge mit dem Filterwert + Ausgangsport + Ausgangsmodul-Id + Eingangsport + Filterauswahl als Schlüssel gespeichert. Der Eingangsport oder Ausgangsport wird nur gesetzt, wenn es die Absicht gibt, das Filtern auf der Portbasis durchzuführen und in dem Fall, dass die zugeordnete Eingangs- und/oder Ausgangsmaske zu den zuvor genannten unzulässigen Wert von 0x3F gesetzt werden soll.
  • Die FFP-Konfiguration verbessert die Behandlung von Echtzeitverkehr, da on-the-fly die Pakete gefiltert und Aktionen durchgeführt werden können. Ohne den FFP 141, müssten die Pakete zu der CPU übertragen werden, damit die geeignete Aktion ausgewertet und durchgeführt wird. Für einschließliche Filter wird eine Aktion durchgeführt, wenn es eine Filterübereinstimmung gibt und es wird keine Aktion durchgeführt, wenn es keine Filterübereinstimmung gibt/wobei jedoch bei einschließlichen Filtern Pakete nicht in Abhängigkeit fallengelassen werden, ob es einen Übereinstimmungs- oder Nichtübereinstimmungsfall gibt.
  • Die 23 zeigt ein Beispiel eines Formats für die Regeltabelle 22. Die Felder dieser Regeltabelle sind wie folgt:
    Filterwert – 512 Bit lang – Für jedes eingehende Paket wird die Filtermaske angewendet und das Ergebnis mit dem Filterwert verglichen. Da das eingehende Paket selbst üblicherweise im Big-Endian-Format ist, sollte der Filterwert im Big-Endian-Format erstellt werden.
    Eingangsport – 6 Bit lang – Eingangsportnummer: Dieses Feld wird nur gesetzt, wenn jemand dieses Filter auf einen bestimmten Eingangsport setzt. Wenn dieses Feld gesetzt ist, dann sollte die Eingangsportmaske in dem Filterregister gesetzt sein.
    Ausgangsport – 6 Bit lang – Ausgangs-Port-Nummer: Dieses Feld ist nur gesetzt, wenn jemand das Filter auf einen bestimmten Ausgangsport setzt. Wenn dieses Feld gesetzt ist, dann sollte die Ausgangsportmaske in dem Filterregister gesetzt sein. In dem Fall von Broadcast, Multicast oder DLF sollte der Filtermechanismus eine unzulässige Portnummer (0x3f) verwenden, sodass es keine Übereinstimmung bei dem Eintrag gibt.
    Ausgangsmodul-Id – 5 Bit lang – Ausgangsmodul-Id – Dieses Feld wird nur gesetzt, wenn jemand das Filter auf einen bestimmten Ausgangsport + Modul-Id setzt. Wenn dieses Feld gesetzt ist, dann sollte die Ausgangsportmaske + Ausgangsmodul-Id in dem Filterregister gesetzt sein. In dem Fall von Broadcast, Multicast oder DLF sollte der Filtermechanismus eine unzulässige Portnummer (0x3f) verwenden, sodass es keine Übereinstimmung bei dem Eintrag gibt. Bemerkung: Remote-Ausgangsport ist eine Kombination des Ausgangsports + Modul-Id. Der einzige Weg, den Remote-Port unzulässig zu machen, ist eine unzulässige Portnummer zu verwenden.
    Filterauswahl – 3 Bit lang – Filterauswahl – Diese Bits werden verwendet, um die Filternummer zu identifizieren, die verwendet wird, um mit diesen Einträgen übereinzustimmen.
    Aktionsbits – 14 Bit lang – Aktionsbits definieren die Aktionen, die im Fall eines übereinstimmenden Eintrags ausgeführt werden müssen. Bit 0 – Wenn dieses Bit gesetzt ist, dann wechselt die 802.1p-Priorität in dem Paket. Die Priorität wird aus dem 802.1 p-Prioritätsfeld aufgenommen. Bit 1 – Wenn dieses Bit gesetzt ist, dann kategorisiere dieses Paket, um es an die Prioritäts-COS-Schlange zu senden, aber verändere nicht das 802.1p-Prioritätsfeld in dem Paketmarkierungs-Header. Wiederum wird die Priorität von dem 802.1 p-Prioritätsfeld aufgenommen. Bit 2 – Wenn dieses Bit gesetzt ist, dann verändere die IP-COS-Präzedenz in dem ID-Header. Der neue TOS-Präzedenzwert wird von dem TOS P-Feld aufgenommen. Bit 3 – Wenn dieses Bit gesetzt ist, dann sende das Paket an die CPU. Bit 4 – Wenn dieses Bit gesetzt ist, dann lasse das Paket außer Acht. Bit 5 – Wenn dieses Bit gesetzt ist, dann wähle den Ausgangsport und die Ausgangsmodul-Id aus dem Regeleintrag. Wenn das Paket ein Broadcast, Multicast oder ein DLF ist, dann wird dieser Vorgang nicht angewendet. Bit 6 – Wenn dieses Bit gesetzt ist, dann sendet das Paket zu dem „gespiegelten" Port. Bit 7 – Wenn dieses Bit gesetzt ist, dann erhöhe den in dem Zählerwert angegebenen Zähler. Der Zählerindex wird von dem Zählerfeld aufgenommen. Bis zu 32 Zähler werden unterstützt. Bit 8 – Wenn dieses Bit gesetzt ist, dann wird der Wert des 802.1p-Prioritätsfeld von dem TOS-Präzedenzfeld in dem IP-Header aufgenommen (TOS_P → COS). Bit 9 – Wenn dieses Bit gesetzt ist, dann wird der Wert des TOS-Präzedenzfelds im IP-Header von dem 802.1p-Prioritätsfeld aufgenommen (COS → TOS_P). Bit 10 – Wenn dieses Bit gesetzt ist, dann wird der Wert für die differenzierten Dienste (DS) von dem Feld für differenzierte Dienste aufgenommen. Bit 11 – Wenn dieses Bit gesetzt ist, dann wähle den Ausgangsport und die Ausgangs-Modul-Id aus dem Regeleintrag. Bit 12 – Resenriert. Bit 13 – Wenn dieses Bit gesetzt ist, dann wird das Paket nicht fallengelassen. Wenn Bit 4 und Bit 13 beide gesetzt sind, dann wird das Paket nicht fallengelassen.
    802.1p Prioritäts-Bits – 3 Bit lang – Der Wert in diesem Feld wird verwendet, um dem Paket eine Priorität zuzuordnen. Der 802.1p-Standard definiert 8 Stufen von Prioritäten von 0 bis 7. Das Feld wird nur verwendet, wenn Bit 0 oder Bit 1 des Aktionsfelds gesetzt ist.
    Differenzierte Dienste – 6 Bit lang – Differenzierte Dienste – Der Wert in diesem Feld wird verwendet, um dem Feld für differenzierte Dienste in dem IP-Header den neuen Wert zuzuordnen.
    TOS_P-Feld – 4 Bit lang – Der Wert in diesem Feld wird verwendet, um dem TOS-Präzedenzfeld in dem IP-Header den neuen Wert zuzuordnen. Dieses Feld wird nur verwendet, wenn Bit 2 des Aktionsfelds gesetzt ist.
    Ausgangsport – 6 Bit lang – Ausgangsport – Dieses Feld identifiziert die Ausgangs-Port-Nummer. Dieser Port hat Vorrang gegenüber dem Ausgangsport, der von der ARL ausgewählt worden ist.
    Ausgangsmodul ID – 5 Bit lang – Ausgangsmodul-Id – Dieses Feld identifiziert die Ausgangsmodulnummer. Die Kombination von Ausgangsmodul und Ausgangsport hat Vorrang gegenüber dem Ausgangsport und der Modul-Id, die von der ARL ausgewählt worden sind. Dieses Feld ist nur gültig, wenn das Remote-Port-Bit gesetzt ist.
    Zähler – 5 Bit lang – Zählerindex ist der Zähler, der implementiert werden muß.
  • In anderen Worten wird eine logische UND-Operation mit der Filtermaske und dem Paket durchgeführt, wobei die ausgewählten Felder aktiviert sind. Wenn es keine Übereinstimmung gibt, werden die übereinstimmenden Einträge auf die Regeltabellen 22 angewendet, um zu bestimmen, welche bestimmte Aktion durchgeführt wird. Da es eine begrenzte Anzahl von Feldern in der Regeltabelle gibt und bestimmte Regeln für verschiedene Typen von Paketen angewendet werden müssen, sind die Anforderungen der Regeltabelle minimiert, indem alle eingehenden Pakete als „markierte" Pakete gesetzt werden; alle nicht markierten Pakete werden daher der Einfügung einer 802.1Q-Markierung unterworfen, um die Anzahl von Einträgen zu verringern, die in der Regeltabelle erforderlich sind. Diese Aktion führt dazu, dass keine Einträge betreffend die Behandlung von nicht markieren Paketen erforderlich sind. Es soll angemerkt werden, dass bestimmte Pakettypen von verschiedenen IEEE-Standards und anderen Netzwerkstandards definiert sind und hierin nicht definiert werden.
  • Wie zuvor angemerkt, sind ausschließliche Filter als Filter definiert, die Pakete ausschließen, für die es keine Übereinstimmung gibt; für ausgeschlossene Pakete werden Aktionen durchgeführt, die den ausschließlichen Filtern zugeordnet sind. Mit einschließlichen Filtern jedoch werden einschließliche Aktionen durchgeführt. Wenn es eine Übereinstimmung gibt, wird die Aktion wie oben erörtert durchgeführt; wenn es keine Übereinstimmung gibt, wird keine Aktion durchgeführt und das Paket läuft auf dem Weiterleitungsprozeß weiter. Unter Bezugnahme auf 15 ist gezeigt, dass der FFP 141 eine Filterdatenbank 1410 umfaßt, die darin Filtermasken enthält, mit einem Logikschaltkreis 1411 zum Bestimmen von Pakettypen kommuniziert und geeignete Filtermasken anwendet. Nachdem die Filtermaske wie oben erwähnt angewendet worden ist, wird das Ergebnis der Anwendung auf die Regeltabelle 22 für den geeigneten Look-Up und die geeignete Aktion angewendet. Es soll angemerkt werden, dass die Filtermasken, die Regeltabellen und die Logik zwar von der CPU 52 programmierbar sind, aber für die Verarbeitung und deren Berechnung nicht auf die CPU 52 angewiesen sind. Nach dem Programmieren wird eine Hardwarekonfiguration geschaffen, die die Filteranwendung und den Look-Up bei Leitungsgeschwindigkeit ermöglicht.
  • Unter Bezugnahme wiederum auf 14 bestimmt die Logik 1411 in dem FFP 141 die geeignete Aktion und führt sie aus, nachdem der FFP 141 die auf geeignete Weise konfigurierten Filter angewendet hat, und von der geeigneten Regeltabelle 22 die Ergebnisse erzielt worden sind. Die Filterlogik kann das Paket außer Acht lassen, das Paket zur CPU 52 schicken, den Paket-Header oder IP-Header verändern und jede beliebigen IP-Prüfsummenfelder erneut berechnen oder eine andere geeignete Aktion im Bezug auf die Header vornehmen. Die Veränderung geschieht bei dem Pufferunterteiler 144 und das Paket wird auf den C-Kanal 81 gesetzt. Die Steuernachricht- und Nachricht-Header-Information wird von dem FFP 141 und der ARL-Maschine 143 angewendet und der Nachrichten-Header wird auf den P-Kanal 82 gesetzt. Die Sendeeinheit 18, die im allgemeinen mit Bezug auf 8 erörtert worden ist, koordiniert alle Sendungen auf den C-Kanal, den P-Kanal und den S-Kanal. Wie zuvor erwähnt, ist jedes EPIC-Modul 20, GPIC-Modul 30, jede MMU 70, jeder IPIC 90 usw. individuell zur Kommunikation mittels des CPS-Kanals konfiguriert. Jedes Modul kann unabhängig modifiziert werden, und so lange die CPS-Kanal-Schnittstellen bleiben, sollten interne Modifikationen für jedes beliebige Modul, wie beispielsweise den EPIC 20a, nicht andere Module wie beispielsweise den EPIC 20b, die GEPICs 30 oder den IPIC 90 betreffen.
  • Wie zuvor erwähnt, wird der FFP 141 durch die CPU 52 von dem Benutzer auf der Grundlage der spezifischen Funktionen programmiert, bei denen gewünscht ist, dass sie von dem FFP behandelt werden. Unter Bezugnahme auf die 17 kann gesehen werden, dass in Schritt 17-1 ein FFP-Programmierschritt von dem Benutzer initiiert wird. Wenn das Programmieren einmal initiiert worden ist, identifiziert der Benutzer in Schritt 17-2 die Protokollfelder des Pakets, die für das Filter interessant sein sollen. In Schritt 17-2 werden der Pakettyp und die Filterbedingungen bestimmt und in Schritt 17-4 wird eine Filtermaske auf der Grundlage des identifizierten Pakettyps und der gewünschten Filterbedingungen konstruiert. Die Filtermaske ist im wesentlichen ein Bitmap, welches angewendet und mit den ausgewählten Feldern des Pakets UND- verknüpft wird. Nachdem die Filtermaske konstruiert worden ist, wird bestimmt, ob das Filter ein einschließliches oder ein ausschließliches Filter sein wird, abhängig von den Problemen, die gelöst werden sollen, den Paketen, die weitergeleitet werden sollen, den Aktionen, die unternommen werden sollen, usw. In Schritt 17-6 wird bestimmt, ob das Filter auf dem Eingangsport ist oder nicht, und in Schritt 17-7 wird bestimmt, ob das Filter auf dem Ausgangsport ist oder nicht. Wenn das Filter auf dem Eingangsport ist, wird in Schritt 17-8 eine Eingangsportmaske verwendet. Wenn bestimmt wird, dass das Filter auf dem Ausgangsport ist, wird in Schritt 17-9 eine Ausgangsmaske verwendet. Auf der Grundlage dieser Schritte wird dann ein Regeltabelleneintrag für die Regeltabellen 22 konstruiert und der Eintrag oder die Einträge werden in der geeigneten Regeltabelle angeordnet (Schritte 17-10 und 17-11). Diese Schritte werden durchgeführt, indem der Benutzer bestimmte Sätze von Regeln und Informationen in die CPU 52 mittels einer geeigneten Eingabevorrichtung vorgibt und die CPU 52 die geeignete Aktion in Bezug auf das Erzeugen des Filters vornimmt, über den CMIC 40 und die geeigneten Eingangs- oder Ausgangssubmodule auf einem geeigneten EPIC-Modul 20 oder GPIC-Modul 30.
  • In einem anderen Beispiel wird die Filterlogik des vorigen Beispiels modifiziert. In diesem Beispiel, welches rückwärts kompatibel im Bezug auf die Implementierung mit der zuvor erörterten ist, sind vier 16-Byte-Felder speziell innerhalb des Paket-Headers definiert, wobei jedes dieser Felder dessen eigenen konfigurierbaren Offset hat. Diese vier 16-Byte-Felder werden kombiniert, um die zuvorgenannte 64 Byte/512 Bit-Feldmaske zu bilden. In diesem Ausführungsbeispiel jedoch sind die Offsets auf so eine Weise konfiguriert, dass die Filtermaske effektiv in den Paket-Header bis zu 120 Byte tief schauen kann. Auch wenn die 20 zeigt, dass ein wesentlicher Teil der relevanten Filterinformationen innerhalb der ersten 64 Byte des Paket-Headers enthalten ist, wird, wenn der Produkt- und Technologiefortschritt dafür sorgt, dass die Bytes 64 bis 120 des Paket-Headers substantielle Relevanz für das Filtern bekommen, das Verfahren so konfiguriert, dass es unter Verwendung dieses Header-Formats filtert.
  • Wie zuvor ausgeführt, wird der 64 Byte-Paket-Schlüssel in eine vorbestimmte Anzahl von Subfeldern aufgeteilt. Als ein Beispiel kann der 64 Byte-Paket-Schlüssel in bis zu 4 16 Byte-Subfelder geteilt werden. Jedes Subfeld hat eine 3 Bit-Maske, die ihr zugeordnet ist und ein Mehrfaches von 8 Byte für den Offset von jedem Subfeld anzeigt, wie es in 31 dargestellt ist. Wenn daher beispielsweise die ersten 64 Byte des Pakets interessant sind, dann würde ein Offsetfeld von 000 für alle vier der 16 Byte-Subfelder verwendet werden.
  • Dies würde bewirken, dass der erste Offset die 16 Byte beginnend mit Byte 0 und fortlaufend bis Byte 15 ausliest/überprüft. Der zweite Offset würde die 16 Byte beginnend mit Byte 16 und fortlaufend bis Byte 31 auslesen und auf ähnliche Weise würde der dritte Offset die Bytes 32 bis 47 auslesen und der vierte Offset würde die Bytes 48 bis 63 auslesen, wobei auf diese Weise die vollständigen ersten 64 Byte umfaßt sind. Als zweites Beispiel würden die Subfelder wie folgt definiert werden, wenn die Offsets als erster Offset bei 001, zweiter Offset bei 011, dritter Offset bei 100 und vierter Offset bei 110 gesetzt sind. Der erste Offset bei 001 würde das erste Subfeld als beginnend mit der Bytenummer 8 in dem Paketheader und fortlaufend für 16 Byte bis Byte 23 definieren. Der zweite Offset bei 011 würde das zweite Subfeld als beginnend bei Byte 40 und für 16 Byte fortlaufend bis Byte 55 definieren. Der dritte Offset bei 100 würde das dritte Subfeld als beginnend mit Byte 64 und fortlaufend bis Byte 79 definieren. Schließlich würde der vierte Offset das vierte Subfeld als beginnend bei Byte 96 und fortlaufend bis Byte 111 definieren. Danach werden die vier einzelnen 16 Byte-Subfelder, die durch die Anwendung der vier Offsets erzeugt worden sind, in einem einzigen 64-Byte-Feld-Wert aneinandergehängt. Wieder muß das Aneinanderhängen des Feldwerts das Eingangsport-, Ausgangsport- und Ausgangsmodul-Id-Feld beinhalten, wenn das Ausgangs-Modul-Id-Feld oder das Ausgangsportfeld nicht bestimmt sind, dann werden diese Felder wieder auf einen unzulässigen Wert gesetzt, wie beispielsweise 0x3f. Die Filterlogik geht dann durch all die Filter, die gesetzt sind, und wendet den Maskenteil des Filters auf den Filterwert und die Filtermaske an. Das Ergebnis dieses Vorgangs wird wieder mit der Filternummer aneinandergehängt, um den Suchschlüssel zu erzeugen, der dann verwendet wird, um nach einer Übereinstimmung in den Regeltabellen 22 zu suchen. Wenn alle Nicht-Übereinstimmungsaktionsbits zu Null gesetzt sind, dann wird das Filter als ein einschließliches Filter betrachtet, welches anzeigt, dass es eine exakte Übereinstimmung geben muß, damit die Aktionen durchgeführt werden, die in dem Regeltabelleneintrag definiert sind. Wenn irgend etwas geringeres als eine vollständige Übereinstimmung vorliegt, dann wird keine Aktion unter einem einschließlichen Filter ausgeführt. Wenn jedoch wenigstens eines der Aktionsbits zu 1 gesetzt ist, dann wird das Filter als ein ausschließliches Filter angenommen.
  • Beim Ausführen von Aktionen von den Regeltabelleneinträgen und den Nichtübereinstimmungsaktionen von dem Filter, wird speziellen Regeln gefolgt, um ein geeignetes Filter und eine geeignete Ausführung der Aktionen sicherzustellen. Die relevanten Regeln zum Ausführen von Aktionen von Regeltabelleneinträgen und Nichtübereinstimmungsaktionen von den Filtern sind wie folgt.
    • – Wenn eine binäre Suche in der Regeltabelle durchgeführt wird, wird ein zusätzlicher Vergleich durchgeführt, in dem { Filterauswahl + Ausgangsmodul-Id + Eingangsport + Ausgangsport }-Felder zum Bestimmen einer teilweisen Übereinstimmung verwendet werden.
    • – Eine vollständige Übereinstimmung tritt auf, wenn die Filterauswahl + Ausgangsmodul-Id + Eingangsport + Ausgangsport + Paketformat + Filterwert mit einem Eintrag in der Regeltabelle übereinstimmen. Wenn daher eine vollständige Übereinstimmung vorliegt, dann werden die zugeordneten Aktionen von dem übereinstimmenden Regeltabelleneintrag angewendet.
    • – Wenn es keine vollständige Übereinstimmung und keine teilweise Übereinstimmung gibt, dann wird keine Aktion durchgeführt
    • – Wenn es keine vollständige Übereinstimmung gibt, aber eine teilweise Übereinstimmung, dann werden die Aktionen von dem Nichtübereinstimmungsaktionsfeld angewendet. Diese Nichtübereinstimmungsaktion wird von dem Filtermaskenfeld abgeleitet
    • – Wenn es eine teilweise Übereinstimmung mit einem Filter gibt, werden die Aktionen durchgeführt, die der Filtermaske zugeordnet sind. Wenn es eine vollständige Übereinstimmung mit einem höheren Filterwert gibt, dann werden die Aktionen durchgeführt, die dem Regeleintrag zugeordnet sind. Wenn ein bestimmtes Aktionsbit von dem Nichtübereinstimmungsaktionsfeld gesetzt ist und die volle Übereinstimmung auf eine andere Filtermaske nicht das gleiche Aktionsbit setzt, dann wird die Aktion durchgeführt, da die teilweise Übereinstimmung und die volle Übereinstimmung bei verschiedenen Filtern sind.
    • – Wenn es eine teilweise Übereinstimmung und eine vollständige Übereinstimmung gibt, werden die Zähler nur für die vollständige Übereinstimmung gemäß der Regeltabelle aktualisiert. Wenn es nur eine teilweise Übereinstimmung gibt, dann werden die Zähler gemäß der Aktion in der Filtermaske aktualisiert. Wenn alle Filter eine vollständige Übereinstimmung in der Regeltabelle haben und die Aktion das Inkrementieren des gleichen Zählers ist, dann wird der Zähler nur einmal inkrementiert. Wenn alle Filter eine teilweise Übereinstimmung haben und die Aktion das Inkrementieren des gleichen Zählers ist, dann wird der Zähler nur einmal inkrementiert.
  • Paketflußsteuerung
  • Zusammen mit den Filterfunktionen ermöglicht die Konfiguration des SOC 10 eine Verkehrs-Konditionierungs-Funktion, die Datenpakete messen, formen, überwachen, fallenlassen oder erneut markieren kann, wenn es notwendig ist, um sicherzustellen, dass die Pakete oder der Datenverkehr, der in die Domäne der differenzierten Dienste (diffserv) eintritt, den vorbestimmten Erfordernissen für die bestimmte Implementierung entspricht. Die Messfunktionen messen im allgemeinen die zeitlichen Eigenschaften, im allgemeinen die Rate oder den Durchfluß des Stroms an Paketen, die von einem Klassifizierer ausgewählt worden sind. Ein Ratenzählerfeld für einen Codepunkt in einer diffserv-zu-COS-Zuordnungstabelle wird jedes Mal implementiert, wenn ein Paket in den Switch mit dem bestimmten Codepunkt eintrifft, wobei auf diese Weise ein Bestimmen der Rate des Verkehrs ermöglicht wird. Eine Formfunktion dient zum Verzögern von einigen oder allen der Pakete in einem Verkehrsstrom, um dem Verkehrsstrom in Übereinstimmung mit einem vorbestimmten Verkehrsprofil zu bringen. Das vorliegende Verfahren implementiert eine Formfunktionalität für jede COS-Schlange, die von dem COS-Manager an jedem individuellen Ausgang behandelt wird. Die Funktion des Fallenlassens der Meßlogik ist zum außer Acht lassen von einigen oder allen der Pakete in einem Datenstrom verantwortlich, um den Datenstrom in Übereinstimmung mit einem vorbestimmten Verkehrsprofil zu bringen. Einfach ausgedrückt wird, wenn der vorgenannte Ratenzähler für einen bestimmten Codepunktwert die Ratenzählerschwelle überschreitet, die in der diftserv-zu-COS-Tabelle gesetzt ist, die Option zur Verfügung gestellt, unter Verwendung der neuen Codepunkt-Aktions-Bits das Paket von dem Datenstrom zu entfernen. Die Funktion des erneuten Markierens erlaubt es, den Codepunkt eines Pakets in Abhängigkeit der Charakteristiken des Verkehrsprofils zurückzusetzen. Die Vorrichtung zum erneuten Markieren kann zum erneuten Markieren aller Pakete zu einem einzigen Codepunkt konfiguriert sein, oder kann zum Markieren eines Pakets zu einem von einem Satz von Codepunkten konfiguriert sein. Spezifisch wird, wenn der zuvor genannte Ratenzähler für einen Codepunkt die Ratenzählerschwelle in der diffserv-zu-COS-Tabelle überschreitet, die Option zur Verfügung gestellt, dass der Codepunkt unter Verwendung der neuen Codepunkt-Aktons-Bits erneut markiert wird und eine neue COS-Schlange für das Paket ausgewählt wird, zusätzlich zum Verändern der 802.1p-Priorität des Pakets, wobei beides eine direkte Auswirkung auf die Flußgrenze des Pakets hat.
  • Auch wenn das Verfahren mehrfache Steueralternativen für den Paketstrom bereitstellt, wird das Messen im allgemeinen von dem Zählerfeld der Regeltabelle 22 zur Verfügung gestellt. Unter Verwendung des Zählers und der COS-Schlagen können Pakete in einem bestimmten Verkehrsstrom wie benötigt verzögert werden, um den Verkehrsstrom in Übereinstimmung mit dem gewünschten Verkehrsprofil zu bringen. Dies kann durch die Verwendung des COS-Managers 133 und die Transaktions-FIFO 132 gesteuert werden, wie es in 13 dargestellt ist. Paketzeiger, die von dem Codepunkt der differenzierten Dienste (DSCP) abhängen, werden in einer der COS-Schlagen in der Transaktions-FIFO 132 angeordnet und die Planungseinrichtung 134 nimmt das nächste Paket in Abhängigkeit der Prioritätsbestimmung des COS-Managers 133 auf. Die Algorithmen zur Schlagenplanung können in dem COS-Manager 133 wie es für die bestimmte Anwendung geeignet ist programmiert sein. Es kann ein streng prioritätsbasiertes Planen implementiert werden, wobei Pakete in der COS-Schlange mit einer hohen Priorität zuerst zum Senden aufgenommen werden. Dies kann jedoch zu einem Knappwerden der COS-Schlangen mit geringer Priorität führen. Eine Option zum Beheben dieser Schwierigkeit ist daher das Implementieren eines Planungsschemas auf der Grundlage einer gewichteten Priorität, bei dem eine minimale Bandbreite für alle COS-Schlangen zur Verfügung gestellt wird, sodass keine Schlange als Ergebnis einer Prioritätszuordnung knapp wird. Die Bandbreite ist ein programmierbarer Parameter in dem COS-Manager 133 und kann auf der Grundlage der Switch-Anwendung programmiert werden. Echtzeitanwendungen können mittels eines Parameters zur maximal erlaubten Latenzzeit implementiert werden, der es dem COS-Manager 133 ermöglicht, die Paketübertragung so zu planen, dass die Pakete auf einer bestimmten COS-Schlange nicht für mehr als die maximal erlaubbare Latenzzeit verzögert werden.
  • MESSUNG UNTER VERWENDUNG DER DSCP
  • Der allgemeine Fluß eines eingehenden Pakets, wie er durch die verschiedenen Funktionen des SOC 10 in Bezug auf die differenzierten Dienste ist, ist in 45 dargestellt. Eine Verbesserung der differenzierten Dienste für das Internetprotokoll wird verwendet, um eine skalierbare Dienstunterscheidung zu ermöglichen, ohne Operationen pro Flußzustand und des Anzeigens bei jedem Satz bzw. Hop zu erfordern. Daher können verschiedene Dienste von einem kleinen, gut definierten Satz von Aufbaublöcken aufgebaut werden, die bereits innerhalb der Netzwerk-Switch-Konfiguration eingesetzt sind. Die differenzierten Dienste können konstruiert werden durch eine Kombination von: Erstens, zu setzenden Bits in dem IP-Headerfeld bei Netzwerkgrenzen; zweitens, unter Verwendung dieser Bits zu bestimmen, wie Pakete von dem Knoten innerhalb des Netzwerks weitergeleitet werden; und drittens, durch Konditionieren der markierten Pakete bei Netzwerkgrenzen gemäß den vorbestimmten Erfordernissen oder Regeln des Dienstes. Das Verfahren verwendet den Codepunkt der differenzierten Dienste, um den Verkehr zu klassifizieren und weiterzuleiten, der in den Switchströmen auf der Grundlage von vorbestimmten Verfahrensweisen, die direkt im Bezug mit dem DSCP stehen, das nachstehend erörtert ist.
  • Die Paketklassifikation wählt Pakete in einem Verkehrsstrom auf der Grundlage der Inhalte von speziellen Feldern in dem Paket-Protokoll-Header aus. In dem Aufbau der differenzierten Dienste gibt es zwei Typen von Paketklassifizierern: erstens, die Mehrfach-Feld-Klassifizierer; und zweitens die Verhaltens-Sammel-Klassifizierer. Die Mehrfach-Feld-Klassifizierer klassifizieren die Pakete, die in den Switch gelangen, auf der Grundlage der Inhalte von speziellen Feldern in dem Protokoll-Header. Die interessierenden speziellen Felder sind wie folgt:
    • 1) Quell-IP-Adresse
    • 2) Ziel-IP-Adresse
    • 3) DS-Feld
    • 4) Protokoll-ID
    • 5) Quell-TCP-Port
    • 6) Ziel-TCP-Port
    • 7) Quell-UDP-Port
    • 8) Ziel-UDP-Port
    • 9) Eingangsschnittstellennummer
    • 10) Anwendungstyp, d. h. Telnet, HTTP, FTP, RTP, RTCP, usw.
  • Bei der Verwendung von Mehrfachfeldklassifizierern verwendet das SOC 10 den FFP-Mechanismus 141, um die Mehrfachfeld-(MF)-Klassifikationen zu implementieren, die bei den Netzwerkgrenzen erreicht werden. Die Fähigkeit für MF-Klassifizierer wird unter Verwendung der FFP-Maschine 141 implementiert, wobei die Filtermaske und die entsprechende Regeltabelle gemäß den Vorgehensweisen, die im Bezug zu den entsprechenden differenzierten Diensten stehen, programmiert, um einen neuen Codepunkt zuzuordnen oder den Wechsel des Codepunkts des Pakets zuzuordnen. Der gleiche Regeleintrag kann verwendet werden, um die 802.1p-Priorität des Pakets in Abhängigkeit der bestimmten Vorgehensweise zu verändern.
  • Alternativ werden die Pakete nur unter Verwendung des DSCP klassifiziert, wenn ein Verhaltenssammel-(BA)-Klassifizierer verwendet wird, und die BA-Klassifizierer sind in Switchess, die nicht nur an den DS-Domänen Grenzen eingesetzt werden, sondern ebenso innerhalb der DS-Domäne selbst. Der BA-Klassifizierer wird innerhalb der Eingangslogik implementiert. Auch wenn zahlreiche komplexere Paketklassifizierer und Vorgehensweisen mittels der Übereinkunft zwischen einem Kunden und einem Dienst-Provider definiert werden können, ist die folgende Tabelle eine beispielhafte Paketklassifikation.
  • Figure 00670001
  • Spezifisch ausgedrückt, wenn das DS-Feld in dem eingehenden Paket nicht Null ist, dann holt die Eingangslogik den COS-Schlangenwert von dem DS-Feld unter Verwendung der diffserv-zu-COS-Zuordnungstabelle, wie es in 30 dargestellt ist. Die vorliegenden Felder sind in 30 dargestellt und nachstehend detaillierter beschrieben.
    COS-Schlangenwert – 3 Bit lang – COS-Schlangenwert wird verwendet, wenn das Paket zu dem Ausgangsport gesendet wird.
    Verändere-Prioritätsfeld-(CPF)-Bit – 1 Bit lang – Wenn das CPF-Bit gesetzt ist, dann wird das 802.1p-Prioritätsfeld in dem Paket zu einer neuen Priorität verändert. Das neue Prioritätsfeld wird von dem „802.1p-Prioritäts"-Feld aufgenommen.
    Neue Codepunkt-Aktion-(NCA)-Bits – 2 Bit lang – Neue Codepunkt-Aktionen werden nur ausgeführt, wenn der Ratenzähler die Ratenzählergrenze überschreitet. Wert 00 – keine Aktion. Wert 01 – Ordne neuen Codepunkt zu. Der neue Codepunkt-Wert wird von dem Feld „neuer Codepunkt" augenommen. Wert 02 – Weise neuen Codepunkt zu und verändere ebenso die 802.1 p-Priorität des Pakets. Das neue 802.1 p-Prioritätsfeld wird von dem Feld „neue 802.1 p-Priorität" aufgenommen. Wert 03 – Lasse das eingehende Paket fallen.
    802.p-Priorität – 3 Bit lang – Dieses Prioritätsfeld wird nur verwendet, wenn das CPF-Bit gesetzt ist.
    Ratenzähler – 12 Bit lang – Dieser Zähler wird jedes Mal implementiert, wenn ein Paket mit diesem Codepunkt ankommt. Dieser Zähler wird alle 1 ms zurückgesetzt.
    Ratenzähler-Grenze – 12 Bit lang – Ist ausgedrückt als Anzahl von Paketen pro 1 ms. Wenn der Ratenzähler diese Grenze überschreitet, dann ist das Paket ein Kandidat für einen neuen Codepunkt.
    Raten-Verwerf-Schwelle – 12 Bit lang – Die Raten-Verwerf-Schwelle ist ausgedrückt als Anzahl von Paketen pro 1 ms. Wenn die Raten-Verwerf-Schwelle überschritten wird, dann werden die Pakete verworfen bzw. außer Acht gelassen, wenn der NCA-Bitwert zu 03 gesetzt ist.
    Neuer Codepunkt – 6 Bit lang – Wenn der Ratenzähler die Ratenzählerschwelle überschreitet und der NCA-Bitwert 01 ist, dann wird der neue Codepunktwert von diesem Feld aufgenommen.
    Neue COS-Schlange – 3 Bit lang – Wenn der Ratenzähler die Ratenzählerschwelle überschreitet und der NCA-Bitwert 01 ist, dann wird der neue COS-Schlangenwert von diesem Feld aufgenommen.
    Neue 802.1p-Priorität – 3 Bit lang – Wenn der Ratenzähler die Ratenzählerschwelle überschreitet und der NCA-Bitwert gleich 01 ist, dann wird der neue 802.1p-Prioritätswert des Pakets von diesem Feld aufgenommen.
  • Die oben dargestellte Zuordnungstabelle bietet ebenso die Option der Modifizierung des 802.1p-Prioritätsfeld des eingehenden Pakets. Für jedes beliebige Paket, auch markierte oder prioritätsmarkierte mit einem 802.1p-Prioritätsfeld, bekommt der COS-Schlangenwert, der als Ergebnis der Zuordnungstabellen für differenzierte Dienste ausgewählt worden ist, Vorrang gegenüber der Priorität, die von den 802.1p-Vorgehensweisen ausgewählt worden ist.
  • Ein Flußdiagramm der Logik für differenzierte Dienste, welches die vorbestimmten Vorgehensweisen darstellt, die dem DSCP zugeordnet sind, ist die 46 dargestellt. Das Flußdiagramm der Logik für differenzierte Dienste beginnt bei Schritt 46-1, in dem die Logik nachsieht, ob das Paket ein IP-Paket ist und ob der Pakettyp 4 ist. Wenn nicht, dann fährt die Logik zu Schritt 46-4 fort, der hier detaillierter beschrieben werden wird; wenn schon, dann fährt die Logik zu Schritt 46-2 fort, in dem, wenn FFP DSCP gesetzt ist, dann der Wert des DSCP von dem FFP verwendet wird. Wenn FFP DSCP nicht gesetzt ist, und das DSCP-Flag zu 1 gesetzt ist, dann wird der zugeordnete DSCP-Wert verwendet, um in der DiffServ-Tabelle zu indexieren, ansonsten wird der DSCP-Wert von dem IP-Header verwendet. Nach der Durchführung der geeigneten Aktion bei Schritt 46-2 fährt die Logik fort zu Schritt 46-3, in dem bestimmt wird, ob der Ratenzähler kleiner oder gleich dem DSCP-Schwellwert ist. Wenn der Ratenzähler nicht größer oder gleich der DSCP-Verwerf-Schwelle ist, dann fährt die Flußlogik zu Schritt 46-9 fort. Wenn der Ratenzähler größer oder gleich zu der DSCP-Verwerf-Schwelle ist, dann fährt die Logik zu Schritt 46-5 fort, indem bestimmt wird, ob der DF-Wert 1 ist. Wenn der DF-Wert 1 ist, dann wird das Portbitmap zu Null gesetzt, und wenn der C-Zustand oder eine Kopie des Pakets zu der CPU gehen soll, dann wird das Portbitmap zu 1 gesetzt, viel geringer als die CPU, und die Logik springt zu Schritt 46-4. Wenn der DF-Wert nicht gleich 1 ist, dann fährt die Logik zu Schritt 46-7 fort, indem bestimmt wird, ob der DF-Wert gleich 2 ist. Wenn herausgefunden wird, dass der DF-Wert gleich 2 ist, dann wird das CNG-Bit in den P-Kanal gesetzt und die Logik fährt zu Schritt 46-9 fort. Wenn der DF-Wert nicht gleich 2 ist, dann fährt die Logik direkt zu Schritt 42-9 ohne Veränderung des CNG-Bits fort. Bei Schritt 46-9 bestimmt die Logik, ob der DSCP Ratenzähler geringer oder gleich zu der DSCP-Schwelle für erneute Markierung ist. Wenn dies so ist, dann fährt die Logik zu Schritt 46-10 fort, wohingegen die Logik zu Schritt 46-11 fortfährt, wenn dies nicht so ist. Bei Schritt 46-10 bestimmt die Logik, ob der RMF-Wert gleich 0 oder 3 ist. Wenn dies so ist, dann fährt die Logik fort zu Schritt 46-11, und wenn dies nicht so ist, dann überprüft die Logik in Schritt 46-12 ob der RMF-Wert gleich 2 ist. Wenn der RMF-Wert gleich 2 ist, dann holt sich die Logik die 802.1p-Priorität von dem neu der DSCP zugeordneten 802.1p-Prioritätsfeld. Wenn der RMF-Wert nicht gleich 2 ist, dann fährt die Logik direkt zu Schritt 46-17 fort, ohne die Priorität zu verändern. Bei Schritt 46-17, wird das DSCP-Feld zu dem neuen DSCP-Feld verändert, wird die IP-Prüfsumme erneut berechnet und wird der CRC regeneriert. Nach Vervollständigung dieser Aktionen fährt die Logik zu Schritt 46-4 fort.
  • Es wird zurückgekehrt zum Schritt 46-10; wenn der RMF-Wert nicht gleich 0 oder 3 ist, dann fährt die Logik zu Schritt 46-11 fort, in dem die Logik überprüft, ob der NP-Wert gleich 1x ist. Wenn dies so ist, dann holt sich die Logik die 802.1p-Paketpriorität von dem 802.1 p-Prioritätsfeld, bevor sie bei Schritt 46-18 weitermacht. Wenn bei Schritt 46-11 herausgefunden wird, dass der NP-Wert nicht gleich 1x ist, dann überprüft die Logik in Schritt 46-15, ob der NP-Wert gleich 1 ist. Wenn der NP-Wert gleich 1 ist, dann nimmt die Logik den COS-Schlangenwert von der DSCP-Prioritätsschlange auf, bevor sie zu Schritt 46-18 fortfährt. Wenn bei Schritt 46-15 der NP-Wert nicht gleich 1 ist, dann fährt die Logik direkt zu Schritt 46-18 ohne Veränderung der COS-Schlange fort. Wenn bei Schritt 46-18 der FFP-DSCP gleich 1 ist oder das DSCP Flag gleich 1 ist, dann wird das DSCP-Feld verändert, die IP-Prüfsumme erneut berechnet und der CRC regeneriert. In diesem Schritt kommt das DSCP-Feld von der FFP-Logik, wenn FFP DSCP gleich 1 ist, wenn dies nicht so ist, dann kommt der Wert von der DSCP-Logik. Nach Vervollständigung dieser Aktionen fährt die DSCP-Logik bei Schritt 46-4 fort.
  • Die 47 zeigt ein detailliertes Flußdiagramm der Logik, die in dem Schritt 42-4 der 42 enthalten ist. Bei Schritt 47-1 holt die Logik das Portbitmap und führt eine logische UND-Verknüpfung mit diesem Wert und dem Weiterleitungsportregister durch, wobei dieser Wert ebenso UND-verknüpft mit dem aktiven Portregister wird, das der ausgewählten COS-Schlange entspricht, nachdem sie durch die COS-Zuordnung unter Verwendung des COS- Auswahlregisters gegangen ist. Dieser Wert wird ebenso mit dem HOL-Registerwert UNDverknüpft, der dem aktiven Portregister 8 entspricht, um das Portbitmap bei diesem Schritt zu erhalten. Die Logik sucht ebenso in diesem Schritt auf die M-Bits der portbasierten VLAN. Nach Vervollständigung der Aktionen von Schritt 47-1 fährt die Logik bei Schritt 47-2 fort. Wo die Logik überprüft, ob der Eingangsport gespiegelt wird, d. h., ob das M-Bit 0 ist, oder ob das Stapelverbindungs- und das M-Bit gesetzt ist. Wenn dies so ist, dann wird das Paket zu dem entsprechenden gespiegelten Port bei Schritt 47-3 gesendet, wenn dies dagegen nicht so ist, dann fährt die Logik bei Schritt 47-4 fort, ohne jegliche Spiegelportaktion durchzuführen. Bei Schritt 47-4 überprüft die Logik, ob die Spiegelung sich auf die Filterlogik gründet. Wenn dies so ist, dann wird das Paket in Schritt 47-5 an den geeigneten gespiegelten Port gesendet, wenn dies hingegen nicht so ist, dann fährt die Logik zu Schritt 47-6 fort, ohne eine Spiegelportaktion durchzuführen. Bei Schritt 47-6 überprüft die Logik, ob der Ausgangsport gespiegelt ist, indem in das Ausgangsspiegelregister geschaut wird. Wenn der Ausgangsport gespiegelt ist, dann wird das Paket zu dem gespiegelten Port gesendet, bevor mit dem Schritt 47-8 fortgefahren wird. Wenn das Paket nicht gespiegelt ist, dann fährt die Logik einfach direkt zu Schritt 47-8 fort, ohne jegliche Spiegelportaktion durchzuführen. Der Schritt 47-8 fährt mit der Spiegelportlogik fort und wird daher nicht in dem Teil erörtert werden. Nichtsdestoweniger wurde das DSCP bei dieser Stufe der Logik entsprechend derart modifiziert, dass der Paketfluß auf geeignete Weise geformt und/oder über den Ausgang gemessen werden kann.
  • MESSEN UNTER VERWENDUNG DER MESS-ID
  • In einem weiteren Ausführungsbeispiel ist die Paketflußsteuerlogik in die Filterlogik eingefügt und daher arbeitet die Paketflußsteuerlogik zusammen mit der Filterung. In diesem Ausführungsbeispiel arbeitet die Filter-/Fluß-Logik in drei Stufen: zuerst führt die Logik Aktionen aus, die unabhängig von dem Paketprofil sind, d. h., dass die Aktionen nicht von der Klassifikation des Pakets als innerhalb des Profils oder außerhalb des Profils abhängen; zweitens nimmt die Filter-/Fluß-Logik die Meß-Id auf, die eine 6 Bit-Nummer ist, die dem Paket zugeordnet ist und in der Regeltabelle gespeichert ist, und führt jegliche angezeigte Innerhalb-Des-Profils-Aktionen durch, die gesetzt sind, und drittens nimmt die Filter-/Fluß-Logik jegliche angezeigte Außerhalb-Des-Profils-Aktionen durch. Beginnend mit den vom Profil unabhängigen Aktionen bei Anwendungen von jeder individuellen Filtermaske, die im allgemeinen in aufsteigender numerischer Reihenfolge übernommen werden, wird von der Filter-/Fluß-Logik eine Bestimmung vorgenommen, ob es eine übereinstimmende Regel gibt, wie es in 32 dargestellt ist. Diese Bestimmung bestimmt im wesentlichen, ob es eine volle Übereinstimmung gibt oder nicht, wie zuvor definiert, welches in der 32 bei Schritt 32-1 gezeigt ist. Wenn bestimmt wird, dass es eine vollständige Übereinstimmung für die bestimmte Maske bei Schritt 32-1 gibt, dann wird das erste Aktionsbit bei Schritt 32-2 überprüft. Wenn bei Schritt 32-1 eine vollständige Übereinstimmung nicht bestimmt wird, dann bestimmt die Logik bei Schritt 32-3, ob es eine teilweise Übereinstimmung für die Maske gibt oder nicht. Wenn in Schritt 32-3 eine teilweise Übereinstimmung gefunden worden ist, dann fährt die Logik mit dem Verfahren zur teilweisen Übereinstimmung fort, welches in 33 dargestellt ist und nachstehend weiter erörtert wird. Es wird nun zu Schritt 32-2 zurückgekehrt, wenn bestimmt wird, dass Bit 1 der Aktionsbits gesetzt ist, dann wird bei Schritt 32-4 die Klasse der Dienste von diesem Regeleintrag ausgewählt. Wenn Bit 1 der Aktionsbits nicht gesetzt ist, dann fährt die Logik zu Schritt 32-5 fort und überprüft, ob Bit 0 des Aktionsfelds gesetzt ist. Wenn Bit 0 gesetzt ist, dann wird die Klasse der Dienste für diesen Eintrag von dem Regeleintrag erhalten, wird das Paket zum prioritätsmarkierten Feld geändert und das Regeneriere-CRC-Bit bei Schritt 52-5 gesetzt. Wenn das Bit 0 nicht gesetzt ist, dann fährt die Logik zu Schritt 32-6 fort, welches im allgemeinen den Beginn der Fluß-Steuer-Logik darstellt, und das Ende der vom Profil unabhängigen Aktionen, da das Aktionsbit 0 und das Aktionsbit 1 von der Flußsteuerung unabhängige Aktionen sind. Einfach ausgedrückt, werden die vom Profil unabhängigen Aktionen bei Schritt 32-1 bis Schritt 32-5 ausgeführt und beginnen die vom Profil abhängigen Aktionen beginnend bei Schritt 32-6. Bei Schritt 32-6 wird die Meß-Id für die bestimmte Maske von der Regeltabelle erhalten. Bei Schritt 32-7 bestimmt die Logik, ob die von der Regeltabelle erhaltene Meß-Id 0 ist. Wenn die Meß-Id 0 ist, dann wird das Paket automatisch als innerhalb des Profils bewertet und die geeigneten Aktionen für innerhalb des Profils werden sofort bei Schritt 32-8 ausgeführt. Wenn die Meß-Id nicht 0 ist, dann erfaßt die Logik die Meß-Id in der Meßtabelle bei Schritt 32-9, um den Profilstatus des Pakets zu bestimmen. Bei Schritt 32-10 bestimmt die Logik nach dem Indexieren in der Meßtabelle, ob das Paket in der Tat innerhalb des Profils ist und es werden, wenn dies so ist, die Innerhalb-Des-Profils-Aktionen von Schritt 32-8 ausgeführt. Wenn das Paket nicht als innerhalb des Profils bestimmt wird, dann wird das Paket als Vorgabe bei Schritt 32-11 als außerhalb des Profils bestimmt. Nach der Bestimmung, dass das Paket außerhalb des Profils ist, werden daher die geeigneten Außerhalb-Des-Profils-Aktionen bei Schritt 32-12 durchgeführt.
  • Die Aktionen für teilweise Übereinstimmung, die bei Schritt 32-3 erörtert worden sind und Teil der vom Profil unabhängigen Aktionen sind, sind weiterhin in 33 detailliert angegeben. Wenn eine teilweise Übereinstimmung nicht in Schritt 32-3 gefunden worden ist, dann bestimmt die Logik, ob es andere zu vergleichende Masken gibt. Wenn es andere zu vergleichende Masken gibt, dann kehrt die Logik zu Schritt 32-1 in 32 zurück. Wenn es keine anderen zu vergleichenden Masken gibt, dann fährt die Logik fort, gespiegelte Ports und abschließende FFP-Aktionen zu überprüfen, wie es in 34 dargestellt ist. Wenn jedoch bei Schritt 32-3 eine teilweise Übereinstimmung gefunden worden ist, dann fährt die Logik in 33 zu Schritt 33-1 fort. Bei Schritt 33-1 bestimmt die Logik, ob Bit 8 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist. Wenn Bit 8 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist, dann nimmt die Logik die IEEE 802.1p-Prioritätswerte von dem TOS-Präzedenzfeld in den Paket-Header bei Schritt 33-2 auf und fährt zu Schritt 33-3 fort. Wenn Bit 8 der Nicht-Übereinstimmungs-Aktions-Bits nicht gesetzt ist, dann fährt die Logik direkt zu Schritt 33-3 ohne Aktion fort. Bei Schritt 33-3 wird Bit 9 der Nicht-Übereinstimmungs-Aktions-Bits überprüft. Wenn Bit 9 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist, dann wird der TOS-Präzedenzwert von dem IEEE 802.1p-Prioritätsfeld aufgenommen, die IP-Prüfsumme erneut berechnet und es wird die regenerierte CRC in die Nachricht gesetzt. Danach fährt die Logik zu Schritt 33-5 fort. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 9 nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 33-5 ohne das Ausführen irgendeiner Aktion fort. Bei Schritt 33-5 überprüft die Logik, ob Bit 2 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist. Wenn Bit 2 gesetzt ist, dann ersetzt die Logik das TOS-Präzedenzfeld in dem IP-Header mit dem IP-Header mit dem TOS_P-Feld von der Filtermaske, wird die IP-Prüfsumme erneut berechnet und wird die regenerierte CRC in die Nachricht gesetzt. Nach dem Ausführen dieser Aktionen fährt die Logik in 35 zu Schritt 35-1 fort. Wenn das Nicht-Übereinstimmungs-Aktions-Bit nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 35-1 ohne das Ausführen irgendeiner Aktion fort.
  • Die 35 zeigt die Fortführung der Logik für Aktionen bei teilweiser Übereinstimmung, die wieder Teil der vom Profil abhängigen Aktionen sind, beginnend mit Schritt 35-1. Bei Schritt 35-1 überprüft die Logik, ob das Nicht-Übereinstimmungs-Aktions-Bit 3 gesetzt ist. Wenn das Bit gesetzt ist, dann wird eine Kopie des Pakets zur CPU geschickt und Bit 0 der CPU-Betriebscodes wird gesetzt, bevor zu Schritt 35-3 fortgeschritten wird. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 3 nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 35-3 fort, ohne irgendeine Aktion durchzuführen. Bei Schritt 35-3 überprüft die Logik, ob das Nicht-Übereinstimmungs-Aktions-Bit 6 gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 6 gesetzt ist, dann wird eine Kopie des Pakets an den gespiegelten Port bei Schritt 35-4 geschickt und die Logik fährt zu Schritt 35-5 fort. Wenn das Nicht- Übereinstimmungs-Aktions-Bit 6 bei Schritt 35-3 nicht gesetzt ist, fährt die Logik einfach zu Schritt 35-5 fort ohne irgendeine Aktion auszuführen. Bei Schritt 35-5 überprüft die Logik, ob das Nicht-Übereinstimmungs-Aktions-Bit 4 gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 4 gesetzt ist, dann läßt die Logik das Paket bei Schritt 35-6 fallen und fährt zu Schritt 35-7 fort. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 4 bei Schritt 35-5 nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 35-7 fort, ohne irgendeine Aktion auszuführen. Bei Schritt 35-7 überprüft die Logik, ob Bit 5 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 5 gesetzt ist, dann werden bei Schritt 35-8 der Ausgangs-Port und die Ausgangs-Modul-Id von dem Feld in der Filtermaske als Ausgangs-Port und das Ausgangsmodul gesetzt, gemeinsam mit dem entsprechenden Satz des Port-Bitmaps. Danach fährt die Logik zu Schritt 36-1 fort, wie es in 36 gezeigt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 5 nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 36-1 fort, ohne irgendeine Aktion auszuführen, die dem Nicht-Übereinstimmungs-Aktions-Bit 5 zugeordnet ist.
  • Die 36 zeigt die Fortsetzung der Logik für teilweise Übereinstimmung, die wiederum Teil der profilunabhängigen Aktionen sind, beginnend mit Schritt 36-1. Bei Schritt 36-1 überprüft die Logik, ob Bit 1 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 1 gesetzt ist, dann wählt die Logik das COS von dem Feld in der Filtermaske bei Schritt 36-2 aus und fährt zu Schritt 36-3 fort. Wenn Bit 1 der Nicht-Übereinstimmungs-Aktions-Bits nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 36-3 fort, ohne irgendeine Aktion durchzuführen. Bei Schritt 36-3 überprüft die Logik, ob Bit 0 in den Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist. Wenn Bit 0 gesetzt ist, dann holt die Logik das COS von dem Feld in der Filtermaske, modifiziert das Paket für das prioritätsmarkierte Feld, setzt das Bit für regeneriertes CRC und fährt zu Schritt 36-5 fort. Wenn Bit 0 nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 36-5 fort, ohne irgendeine Aktion durchzuführen, die dem Nicht-Übereinstimmungs-Aktions-Bit 0 zugeordnet ist. Bei Schritt 36-5 überprüft die Logik, ob das Nicht-Übereinstimmungs-Aktions-Bit 10 gesetzt ist. Wenn Bit 10 gesetzt ist und wenn die COS nicht von einer höheren Filtermaske modifiziert worden ist, dann wird bei Schritt 36-6 der DSCP von dem Ein-DSCP-Feld der Filtermaske aufgenommen, die IP-Prüfsumme erneut berechnet und das Bit Regeneriere-CRC in der Nachricht gesetzt. Nach dem Durchführen dieser Aktion und wenn bei Schritt 36-5 das Bit 10 der Nicht-Übereinstimmungs-Aktions-Bits nicht als gesetzt ermittelt werden konnte, dann fährt die Logik zu Schritt 36-7 fort. Bei Schritt 36-7 überprüft die Logik, ob Bit 11 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist. Wenn das Bit 11 gesetzt ist, dann wählt die Logik den Ausgangsport und das Ausgangsportmodul von der Filtermaske als den Ausgangsport und das Ausgangsmodul t in Schritt 36-8 aus. Weiter wird das Port-Bitmap bei Schritt 36-8 dementsprechend gesetzt. Wenn in Schritt 35-7 das Bit 11 nicht als gesetzt ermittelt werden konnte oder wenn die Nicht-Übereinstimmungs-Aktionen für Bit 11 vorgenommen worden sind, dann fährt die Logik fort, zu prüfen, ob es nicht noch irgendwelche Masken zum Vergleichen gibt und wenn dies so ist, fährt sie fort, indem sie mit Schritt 33-1 für die nächste Maske beginnt und jeden der oben genannten Schritte wiederholt. Wenn es keine weiteren Masken zu vergleichen gibt, dann fährt die Logik fort zu Schritt 43-1, wie es in 43 gezeigt ist.
  • Bei Schritt 43-1 wird das Port-Bitmap zu Null gesetzt, wenn das Paket aufgrund der durchzuführenden Aktionen fallengelassen werden soll, sowie es von den Filterverfahren bestimmt ist. Bei Schritt 43-2 holt die Logik das Port-Bitmap und UND-verknüpft diesen Wert mit dem Weiterleitungs-Port-Register und UND-verknüpft dies mit dem Aktiver-Port-Register entsprechend der ausgewählten COS-Schlange nach dem Durchlaufen der COS-Zuordnung unter Verwendung des COS-Auswahlregisters und der UND-Verknüpfung mit dem HOL-Register um das Ausgangs-Port-Bitmap zu erhalten. Zusätzlich schaut bei Schritt 43-2 die Logik auf die M-Bits der portbasierten VLAN-Tabelle, bevor sie zu Schritt 43-3 fortschreitet. Bei Schritt 43-3 bestimmt die Logik, ob der Eingangsport gespiegelt ist, welches dem M-Bit 0 entspricht, oder ob die Stapel-Verbindungs- und die M-Bits gesetzt sind. Wenn dies so ist, dann wird das Paket bei Schritt 43-4 zu dem gespiegelten Port gesendet, bevor mit der Logik bei Schritt 43-5 fortgefahren wird. Wenn die Bits bei Schritt 43-4 nicht gesetzt sind, dann fährt die Logik direkt zu Schritt 43-5 fort, ohne das Paket zu dem gespiegelten Port weiterzuleiten. Bei Schritt 43-5 bestimmt die Logik, ob das Spiegeln auf die Filterlogik gegründet ist. Wenn nicht, dann fährt die Logik direkt zu Schritt 43-7 fort. Wenn dies so ist, dann sendet die Logik wieder das Paket zu dem gespiegelten Port, bevor sie zu Schritt 43-7 fortschreitet. Bei Schritt 43-7 bestimmt die Logik vom Überprüfen des Ausgangs-Spiegel-Registers, ob der Ausgangsport gespiegelt ist. Wenn das Ausgangs-Spiegel-Port-Register es vorgibt, dann wird das Paket zu dem gespiegelten Port gesendet. Wenn nicht, fährt die Logik durch die Spiegelprozesse hindurch fort, die durch Block M bezeichnet sind, der hier im Detail nicht erörtert werden wird.
  • Sobald einmal die vom Profil unabhängigen Aktionen durchgeführt sind, fährt die Logik durch die vom Profil abhängigen Aktionen hindurch fort, beginnend bei 32-8 in 32. Bei Schritt 32-8 wurde bereits bestimmt, dass das zu behandelnde Paket als innerhalb des Profils klassifiziert worden ist und als solches ernennt Schritt 32-8 die vom Paket abhängigen Aktionen. Die spezifischen Innerhalb-Des-Profils-Aktionen, die in Schritt 32-8 angegeben sind, werden ab 36 detaillierter dargestellt. Bei Schritt 34-1 in 34 überprüft die Filter-/Fluß-Steuerlogik das Innerhalb-Des-Profils- bzw. das In-Profil-Aktions-Bit 8, um zu sehen, ob dieses Bit gesetzt ist. Wenn dieses Bit nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 34-3 fort, ohne irgendeine Aktion auf dieses Paket anzuwenden. Wenn jedoch dieses Bit gesetzt ist, dann führt die Logik die In-Profil-Aktionen aus, die diesem Bit zugeordnet sind. Spezifischer ausgedrückt, wenn Bit 8 gesetzt ist, dann nimmt bei Schritt 34-2 die Logik den 802.1p-Prioritätswert von dem TOC-Präzedenz-Feld in dem IP-Header auf und das regenerierte CRC-Bit in der Nachricht wird gesetzt. Nach dem Durchführen dieser Aktionen schreitet die Logik zu Schritt 34-3 fort, in dem die Logik überprüft, ob das In-Profil-Aktions-Bit 9 gesetzt ist. Wenn das Bit nicht gesetzt ist, dann fährt die Logik zu Schritt 34-5 fort, ohne irgendeine Aktion auf dieses Paket anzuwenden. Wenn Bit 9 gesetzt ist, dann führt bei Schritt 34-4 die Logik die geeigneten In-Profil-Aktionen aus, die dem In-Profil-Aktions-Bit 9 zugeordnet sind. Spezifisch ausgedrückt, wird bei Schritt 34-6 der TOS-Präzedenzwert von dem 802.1p-Prioritätsfeld aufgenommen, die IP-Prüfsummer erneut errechnet und das regenerierte CRP-Bit in der Nachricht gesetzt. Danach schreitet die Logik zu Schritt 34-5 fort, in den das In-Profil-Aktions-Bit 2 geprüft wird. Wenn Bit 2 gesetzt ist, dann fährt die Logik zu Schritt 37-1 fort, wie in 37 gezeigt ist.
  • Der Schritt 37-1 zeigt, wie die Filter-/Fluß-Steuerlogik überprüft, ob das In-Profil-Aktons-Bit 3 gesetzt ist. Wenn nicht, dann fährt die Logik zwischen Bit 37-3 fort; wenn dies so ist, dann sendet die Logik eine Kopie des Pakets an CPU und setzt bei Schritt 37-2 das Bit 0 der CPU-Betriebscodes, bevor sie zu Schritt 37-3 fortfährt. Bei Schritt 37-3 überprüft die Filter/Flußlogik das In-Profil-Aktions-Bit 6. Wenn dieses Bit nicht gesetzt ist, dann fährt die Logik zu Schritt 37-5 fort, ohne eine Aktion durchzuführen, jedoch wenn dieses Bit gesetzt ist, dann wird eine Kopie des Pakets zu dem gespiegelten Port bei Schritt 37-4 gesendet, bevor zu Schritt 37-5 fortgefahren wird. Bei Schritt 37-5 überprüft die Filter-/Fluß-Steuer-Logik ob das Aktionsbit 4 gesetzt ist. Wenn Bit 4 gesetzt ist, dann wird das Paket bei Schritt 37-6 fallengelassen, jedoch fährt die Logik fort, die verbleibenden Aktionsbits zu überprüfen. Wenn Bit 4 nicht gesetzt ist, dann fährt die Logik zu Schritt 37-7 fort, indem das Aktionsbit 5 zusammen mit dem Zielport überprüft wird. Wenn das Aktionsbit 5 gesetzt ist, und der Zielport zu 0x3f, dem von dem SOC 10 gesetzten, unzulässigen Vorgabewert, gesetzt ist, dann wähle den Ausgangsport und die Ausgangs-Modul-Id von dem Regeleintrag als Ausgangsport und Ausgangsmodul und setze das Port-Bitmap entsprechend. Wenn das Aktionsbit 5 und der Zielport nicht auf die gewünschten Werte gesetzt ist, dann fährt die Logik zu Schritt 37-9 fort, indem das Aktionsbit 7 überprüft wird. Wenn das Aktionsbit 7 gesetzt ist, dann wird der Zähler implementiert, der in dem Zählerfeld der Regel angegeben ist, wenn nicht der Zähler bereits für dieses Paket von einem vorangegangenen Aktionsbit oder einer vorangegangenen Regel bei Schritt 37-10 implementiert worden ist. Danach fährt die Logik zu Schritt 37-11 fort, indem das Aktionsbit 10 überprüft wird. Wenn das In-Profil-Aktons-Bit 10 gesetzt ist und die COS nicht von einer höheren Filtermaske modifiziert worden ist, dann wird das DSCP von dem In-DSCP-Feld der Regeltabelle aufgenommen, die IP-Prüfsumme erneut berechnet und das regenerierte CRC in dem Paket bei Schritt 37-12 gesetzt. Danach fährt die Logik durch die In-Profil-Aktions-Bits fort, wie es in 42 dargestellt ist.
  • Bei Schritt 42-1 überprüft die Filter-/Fluß-Steuer-Logik das In-Profil-Aktions-Bit 11 und die Zielportadresse. Wenn das Aktionsbit 11 gesetzt ist und die Zielportadresse gleich 0x3f ist, dann werden der Ausgangsport und das Ausgangsmodul von dem Regeleintrag als der Ausgangsport und das Ausgangsmodul gesetzt und das Port-Bitmap entsprechend aktualisiert, all dies in Schritt 42-2. Nach Vervollständigung der dem Aktionsbit 11 zugeordneten Aktionen oder wenn das Aktionsbit nicht gesetzt ist, fährt die Filter-/Fluß-Steuer-Logik zu Schritt 42-3 fort. Bei Schritt 42-3 überprüft die Logik das In-Profil-Aktions-Bit 12. Wenn das Bit gesetzt ist, wird das Fallenlassen-Präzedenz-Bit zu 1 gesetzt und das CNG-Bit in dem P-Kanal gesetzt. Nach dem Durchführen dieser Aktion oder wenn das Aktionsbit 12 nicht ursprünglich gesetzt ist, fährt die Logik zu Schritt 42-5 fort. Bei diesem Schritt überprüft die Filter-/Fluß-Steuer-Logik das In-Profil-Aktions-Bit 13. Wenn dieses Bit gesetzt ist, dann wird das Paket bei Schritt 42-6 fallengelassen. Nach dem Fallenlassen des Pakets oder wenn Bit 13 nicht ursprünglich gesetzt ist, dann fährt die Logik fort, alle nicht überprüften Masken zu überprüfen, in dem die Logikschritte für die nicht markierten Masken beginnend bei Schritt 33-1 wiederholt werden.
  • Es wird auf 32 zu Schritt 32-12 zurück Bezug genommen; wenn das zu beurteilende Paket außerhalb des Profils bzw. Aus-Profil ist, dann werden die Aus-Profil-Aktionen gemäß 44 durchgeführt. Die Aus-Profil-Aktionen beginnen bei Schritt 44-1, in dem die Filter/Fluß-Steuer-Logik überprüft, ob das Aus-Profil-Aktions-Bit 0 gesetzt ist. Wenn dieses Bit gesetzt ist, dann wird das Paket zu der CPU gesendet und das Bit 0 der CPU-Betriebscodeds gesetzt, bevor die Logik zu Schritt 44-3 fortfährt. Wenn das Aus-Profil-Aktions-Bit 0 nicht gesetzt ist, dann fährt die Logik zu Schritt 44-3 fort, ohne irgendeine Aktion auf das Paket anzuwenden. Bei Schritt 44-3 überprüft die Filter-/Fluß-Steuer-Logik, ob Bit 1 der Aus-Profil-Aktons-Bits gesetzt ist. Wenn dieses Bit gesetzt ist, dann wird das Paket fallengelassen, bevor die Logik durch die verbleibenden Aktionsbits fortfährt. Wenn Bit 1 nicht gesetzt ist, dann fährt die Logik einfach zu Schritt 44-5 fort, ohne irgendeine Aktion auszuführen. Bei Schritt 44-5 überprüft die Logik Aktionsbit 2 und wenn dieses Bit gesetzt ist, dann übernimmt die Logik bei Schritt 44-6 den DSCP von dem Aus-DSCP-Feld der Regel auf, wenn die COS nicht geändert ist. Die IP-Prüfsumme wird ebenso bei Schritt 44-6 erneut berechnet, zusammen mit dem Setzen des CRC-Regenerierungs-Bit. Nach dem Vervollständigen der Aktionen, die dem Aktionsbit 2 zugeordnet sind oder wenn Bit 2 nicht gesetzt ist, fährt die Logik zu Schritt 44-7 fort, indem das Aktionsbit 3 des Aktionsfelds überprüft wird. Wenn das Bit gesetzt ist, dann wird in Schritt 44-8 das Fallenlassen-Präzedenz-Bit und das CNG-Bit in dem P-Kanal gesetzt. Nach dem Durchführen dieser Aktionen oder wenn Aktionsbit 3 nicht ursprünglich gesetzt ist, dann fährt die Logik zu Schritt 44-9 fort, in dem das Bit 4 überprüft wird. Wenn Bit 4 gesetzt ist, dann wird das Paket bei Schritt 44-10 nicht fallengelassen, trotz vorheriger Aktionsbits. Wenn Bit 4 nicht gesetzt ist, dann werden alle vorher ausgeführten Aktionsbits, die das Paket fallenlassen würden, nicht verändert und es wird zugelassen, dass das Paket fallengelassen wird. Bei Schritt 44-11 sind die Aus-Profil-Aktionen für eine Maske vollständig und die Logik bestimmt, ob es irgendwelche anderen zu vergleichenden Masken gibt. Wenn es weitere Masken gibt, dann fährt die Logik bei Schritt 32-1 in 32 mit der nächsten Maske fort. Wenn es keine weiteren zu überprüfenden Masken gibt, dann fährt die Logik mit Schritt 43-1 in 43 fort.
  • Allgemein ausgesprochen soll angemerkt werden, dass das Blockdiagramm des SOC 10 in 2 zeigt, dass jeder GPIC 30 seine eigene ARL/L3-Tabellen 31, Regeltabellen 32 und VLAN-Tabellen 33 hat und dass auch jeder EPIC 20 seine eigenen ARL/L3-Tabellen 31, Regeltabellen 22 und VLAN-Tabellen 23 hat. Es wird jedoch ebenso betrachtet, dass zwei getrennte Module eine gemeinsame ARUL3-Tabelle und eine gemeinsame VLAN-Tabelle sich teilen können. Jedes Modul hat jedoch im allgemeinen seine eigene Regeltabelle 22. Daher kann beispielsweise der GPIC 30a die ARUL3-Tabelle 21a und die VLAN-Tabelle 23a mit dem EPIC 20a teilen. Auf ähnliche Weise kann der GPIC 30b die ARL-Tabelle 21b und die VLAN-Tabelle 23b mit dem EPIC 20b teilen. Dieses Teil von Tabellen verringert die Anzahl von Gates, die erforderlich sind, um das Verfahren zu implementieren, und vereinfacht das Look-Up und die Synchronisierung, wie nachstehend erörtert werden wird.
  • Tabellen-Synchronisierung und -alterung
  • Das SOC 10 verwendet ein einzigartiges Verfahren der Tabellensynchronisierung und -alterung, um sicherzustellen, dass nur aktuelle und aktive Adressinformationen in den Tabellen gehalten werden. Wenn die ARL/L3-Tabellen aktualisiert werden, um eine neue Quelladresse zu beinhalten, wird ein „Trefferbit" innerhalb der Tabelle von dem „Besitzer" oder dem sich verschaffenden Modul gesetzt, um anzuzeigen, dass auf die Adresse zugegriffen worden ist. Ebenso wenn eine neue Adresse gelernt und in der ARL-Tabelle angeordnet worden ist, wird eine S-Kanal-Nachricht auf den S-Kanal 83 als eine ARL-Einfügenachricht gesetzt, wobei alle ARL/L3-Tabellen auf dem SOC 10 angewiesen werden, diese neue Adresse zu lernen. Der Eintrag in den ARL/L3-Tabellen beinhaltet eine Identifizierung des Ports, der ursprünglich das Paket empfangen hat und die Adresse gelernt hat. Wenn daher der EPIC 20a den Port enthält, der ursprünglich das Paket empfangen hat und daher ursprünglich die Adresse gelernt hat, wird der EPIC 20a der „Besitzer" der Adresse. Nur der EPIC 20a kann daher die Adresse von der Tabelle löschen. Die ARL-Einfüge-Nachricht wird von allen anderen Modulen empfangen und die Adresse wird in alle anderen ARL/L3-Tabellen auf dem SOC 10 eingefügt. Der CMIC 40 wird ebenso die Adressinformation zur CPU 52 senden. Wenn jedes Modul die Adressinformation empfängt und lernt, wird eine Bestätigungs- oder ACK-Nachricht zurück zum EPIC 20a gesendet; da dem Besitzer weiterer ARL-Einfüge-Nachrichten nichts von dem EPIC 20a gesendet werden kann, bis alle ACK-Nachrichten von all den Modulen empfangen worden sind. Der CMIC 40 sendet keine ACK-Nachricht, da der CMIC 40 darauf keine Eingangs-/Ausgangsmodule umfaßt, sondern nur mit der CPU 52 kommuniziert. Wenn mehrfache SOC 10 Switches in einer gestapelten Konfiguration bereitgestellt werden, würden alle ARL/L3-Tabellen aufgrund der Tatsache synchronisiert werden, dass der CPS-Kanal 80 durch die gestapelten Module hindurch geteilt wird.
  • Unter Bezugnahme auf 18 wird der ARL-Alterungsvorgang erörtert. Ein Alterungs-Timer wird in jedem EPIC-Modul 20 und jedem GPIC Modul 30 bei Schritt 18-1 bereitgestellt und es wird bestimmt, ob der Alterungs-Timer abgelaufen ist. Wenn der Timer abgelaufen ist, beginnt der Alterungsprozeß mit dem Untersuchen des ersten Eintrags in der ARL-Tabelle 21. Bei Schritt 18-2 wird bestimmt, ob der Port, auf den in dem ARL-Eintrag Bezug genommen wird, zu dem bestimmten Modul gehört oder nicht. Wenn die Antwort nein ist, fährt der Prozeß zu Schritt 18-3 fort, in dem bestimmt wird, ob der Eintrag der letzte Eintrag in der Tabelle ist oder nicht. Wenn die Antwort bei Schritt 18-3 ja ist, dann wird der Alterungs-Timer erneut gestartet und der Prozeß wird bei Schritt 18-4 vervollständigt. Wenn dies nicht der letzte Eintrag in der Tabelle ist, dann wird der Prozeß zum nächsten ARL-Eintrag bei Schritt 18-5 zurückgeführt. Wenn jedoch bei Schritt 18-2 ermittelt wird, dass der Port zu diesem bestimmten Modul gehört, dann wird bei Schritt 18-6 ermittelt, ob das Trefferbit gesetzt ist oder nicht, oder ob dies ein statischer Eintrag ist. Wenn das Trefferbit gesetzt ist, wird das Trefferbit bei Schritt 18-7 zurückgesetzt und das Verfahren fährt zu Schritt 18-3 fort. Wenn das Trefferbit nicht gesetzt ist, wird der ARL-Eintrag bei Schritt 18-8 gelöscht und eine Lösche-ARL-Eintrag-Nachricht wird auf dem CPS-Kanal zu den anderen Modulen einschließlich des CMIC 40 gesendet, sodass die Tabelle wie zuvor angemerkt, auf geeignete Weise synchronisiert werden kann. Dieser Alterungsprozeß kann auf die ARL(Ebene 2)-Einträge ausgeführt werden, ebenso wie auf die Ebene-3-Einträge, um sicherzustellen, dass gealterte Pakete auf geeignete Weise aus den Tabellen von den Eigentümern der Einträge gelöscht werden. Wie zuvor angemerkt, wird der Alterungsprozeß nur auf Einträge angewendet, bei denen der Port, auf den Bezug genommen wird, zu dem bestimmten Modul gehört, welches den Alterungsprozeß durchführt. Zu diesem Zweck wird daher das Trefferbit nur in dem Eigentümer-Modul gesetzt. Das Trefferbit wird nicht für Einträge in Tabellen von anderen Modulen gesetzt, die die ARL-Einfüge-Nachricht empfangen. Das Trefferbit ist daher immer in den synchronisierten Nicht-Eigentümer-Tabellen zu Null gesetzt.
  • Der Zweck der Quell- und Zielsuchen und der gesamten Look-Ups ist es, die Portnummer innerhalb des SOC 10 zu identifizieren, an die das Paket gerichtet werden soll, nachdem es entweder bei dem CBP oder dem GBP 60 plaziert worden ist. Selbstverständlich entsteht ein Quell-Look-Up-Fehler beim Lernen der Quelle von der Quell-Mac-Adressinformation in dem Paket; wobei jedoch ein Ziel-Look-Up-Fehler dazu führt, dass das Paket zu allen Ports auf dem SOC 10 geschickt wird, da kein Port identifiziert werden würde. So lange die Ziel-VLAN-ID die gleiche wie die Quell-VLAN-ID ist, wird das Paket sich in dem VLAN verbreiten und das letztendliche Ziel erreichen, an welchem Punkt ein Bestätigungspaket empfangen wird, wobei auf diese Weise die ARL-Tabelle in die Lage versetzt wird, den Ziel-Port zur Verwendung bei folgenden Paketen zu lernen. Wenn die VLAN-Ids verschieden sind, wird ein L3-Look-Up und -Lernprozeß durchgeführt, wie zuvor erörtert. Es soll angemerkt werden, dass jeder EPIC und jeder GPIC eine FIFO-Schlange enthält, um die ARL-Einfüge-Nachrichten zu speichern, da eine Schlange zum geeigneten Behandeln der Nachrichten bereitgestellt werden muß, wenn jedes Modul eine Einfüge-Nachricht sendet, auch wenn jedes Modul nur eine Nachricht gleichzeitig senden kann.
  • Port-Bewegung
  • Nach dem ARL/L3-Tabellen Einträge in sich tragen, kann manchmal der Fall eintreten, in dem ein bestimmter Benutzer oder eine Station den Ort von einem Port zu einem anderen Port verändert. Um Übertragungsfehler zu verhindern, beinhaltet das SOC 10 daher die Fähigkeit zum Identifizieren einer solchen Bewegung und zum geeigneten Aktualisieren der Tabelleneinträge. Wenn beispielsweise Station A, die beispielsweise sich an Port 1 befindet, mit Station B kommunizieren will, dessen Einträge anzeigen, dass Benutzer B sich an Port 26 befindet. Wenn Station B dann zu einem verschiedenen Port, beispielsweise Port 15, bewegt wird, tritt ein Ziel-Look-Up-Fehler auf und das Paket wird an alle Ports gesendet. Wenn das Paket von Station B bei Port 15 empfangen wird, wird Station B eine Bestätigungs-(ACK)-Nachricht senden, die von dem Eingang des EPIC/GPIC-Moduls daraufhin empfangen wird, das in Port 1 enthalten ist. Ein Quell-Look-Up (der Bestätigungs-Nachricht) wird einen Treffer auf die Quell-Adresse ergeben, aber die Port-Information wird nicht übereinstimmen. Der EPIC/GPIC der das Paket von B empfängt, muß daher den alten Eintrag von der ARL/L3-Tabelle löschen und ebenso eine ARL/L3-Lösch-Nachricht auf dem S-Kanal senden, sodass alle Tabellen synchronisiert werden. Dann wird die neue Quell-Information mit dem richtigen Port in die ARL/L3-Tabelle eingefügt und eine ARL/L3-Einfüge-Nachricht wird auf den S-Kanal gesetzt, wobei auf diese Weise die ARL/L3-Tabellen mit der neuen Information synchronisiert werden. Die aktualisierte ARL-Einfüge-Nachricht kann nicht gesendet werden, bis alle Bestätigungs-Nachrichten bezüglich der ARL-Lösch-Nachricht gesendet worden sind, um eine richtige Tabellensynchronisierung sicherzustellen. Wie zuvor ausgeführt, können die typischen ARL-Einfüge- und Lösch-Befehle nur von dem Eigentümer-Modul initiiert werden. In dem Fall jedoch einer Port-Bewegung, können die Lösch- und Einfüge-Nachricht in Verbindung mit der Port-Bewegung von jedem beliebigen Modul initiiert werden, da die Port-Bewegung bei jedem beliebigen Modul identifiziert werden kann, das ein Paket an den bewegten Port sendet.
  • Trunkieren
  • Während des Konfigurationsvorgangs, bei dem ein lokales bzw. ein Local-Area-Netzwerk von einem Administrator von einer Mehrzahl von Switchess, usw. konfiguriert wird, können zahlreiche Ports „trunkiert" werden, um die Bandbreite zu erhöhen. Wenn beispielsweise der Verkehr zwischen einem ersten Switch SW1 und einem zweiten Switch SW2 voraussehbar hoch ist, kann das LAN so konfiguriert werden, dass eine Mehrzahl von Ports, beispielsweise Ports 1 und 2, zusammen verbunden werden können. In einer Umgebung von 100 Megabit pro Sekunde, schafft das Trunkieren von zwei Ports effektiv eine erhöhte Bandbreite von 200 Megabit pro Sekunde zwischen den zwei Ports. Die zwei Ports 1 und 2 werden daher als Trunk-Gruppe identifiziert und die CPU 52 wird verwendet, um die Behandlung der Trunk-Gruppe richtig zu konfigurieren. Wenn einmal eine Trunk-Gruppe identifiziert ist, wird sie als Mehrzahl von Ports behandelt, die als ein logischer Port arbeitet. Die 19 zeigt eine Konfiguration, in der SW1, der eine Mehrzahl von Ports darauf enthält, eine Trunk-Gruppe mit Ports 1 und 2 von SW2 aufweist, wobei die Trunk-Gruppe 2 Kommunikations-Leitungen sind, die die Ports 1 und 2 von jedem von SW1 und SW2 verbindet. Dies bildet die Trunk-Gruppe T. In diesem Beispiel will Station A die an Port 3 von SW1 angeschlossen ist, mit Station B kommunizieren oder ein Paket dorthin senden, die sich bei Port 26 von Switch SW2 befindet. Das Paket muß daher durch die Trunk-Gruppe T von Port 3 von SW1 zu Port 26 von SW2 reisen. Es soll angemerkt werden, dass die Trunk-Gruppe jede beliebige Anzahl von Ports zwischen den Switchess umfassen kann. Da der Verkehrs-Fluß zwischen SW1 und SW2 steigt, könnte die Trunk-Gruppe T von dem Administrator so rekonfiguriert werden, dass sie mehr Ports umfasst, wobei auf diese Weise effektiv die Bandbreite erhöht wird. Zusätzlich zum Bereitstellen von erhöhter Bandbreite verschafft das Trunkieren Redundanz im Fall eines Fehlers von einer der Verbindungen zwischen den Switchess. Wenn einmal die Trunk-Gruppe erzeugt ist, programmiert ein Benutzer das SOC 10 über die CPU 52 mit Trunk-Gruppen-Identifikations-(TGID)-Information, um die geeignete Trunk-Gruppe oder Trunk-Gruppen zu erkennen. Ein Trunk-Gruppen-Port-Bitmap wird für jede TGID vorbereitet, und eine Trunk-Gruppen-Tabelle, die für jedes Modul auf dem SOC 10 bereitgestellt ist, wird zum Implementieren der Trunk-Gruppe verwendet, die ebenso als Port-Bündel bezeichnet werden kann. Eine Trunk-Gruppen-Bitmap-Tabelle wird ebenso bereitgestellt. Diese zwei Tabellen werden pro Modul bereitgestellt und werden wie die Tabellen 21, 22 und 23 im Silicium als zweidimensionale Arrays implementiert. In einem Ausführungsbeispiel des SOC 10 können sechs Trunk-Gruppen unterstützt werden, wobei jede Trunk-Gruppe bis zu 8 Trunk-Ports darin aufweist. Für die Kommunikation jedoch muß der gleiche Port für den Paket-Fluß verwendet werden, um das Out-Of-Order von Paketen oder Frames zu verhindern. Die Identifikation des Ports, der für die Kommunikation verwendet wird, wird auf eine der folgenden Informationen gegründet: Quell-Mac-Adresse, Ziel-Mac-Adresse, Quell-IP-Adresse, Ziel-IP-Adresse oder Kombinationen der Quell- und Ziel-Adressen. Wenn die Quell-Mac verwendet wird, wenn beispielsweise Station A an Port 3 von SW1 ein Paket an die Station B an Port 26 von SW2 senden will, dann werden die letzten 3 Bits der Quell-Mac- Adresse von Station A, die in dem Quell-Adressfeld des Pakets sind, verwendet, um einen Trunk-Port-Index zu erzeugen. Der Trunk-Port-Index wird dann in der Trunk-Gruppen-Tabelle von dem Eingangs-Submodul 14 des bestimmten Ports auf dem Switch eingesehen, um zu bestimmen, welcher Port der Trunk-Gruppe für die Kommunikation verwendet wird. In anderen Worten ausgedrückt, wenn ein Paket von der Station A zu Station B gesendet werden soll, wird die Adressauflösung wie oben ausgeführt durchgeführt. Wenn das Paket über eine Trunk-Gruppe behandelt werden soll, dann wird ein T-Bit in dem ARL-Eintrag gesetzt, der mit der Ziel-Adresse übereinstimmt. Wenn das T-Bit oder Trunk-Bit gesetzt ist, dann wird die Ziel-Adresse von einem der Trunk-Ports gelernt. Der Ausgangsport wird daher nicht von der Portnummer gelernt, die von dem ARL-Eintrag erhalten wird, sondern wird statt dessen von der Trunk-Gruppen-ID und der Regelmarkierung (RTAG) gelernt, die von dem ARL-Eintrag aufgenommen wird und die verwendet werden kann, um den Trunk-Port auf der Grundlage des Trunk-Port-Index zu identifizieren, der in der Trunk-Gruppen-Tabelle enthalten ist. Die RTAG und TGID, die in dem ARL-Eintrag enthalten sind, definieren daher, welcher Teil des Pakets zum Erzeugen des Trunk-Port-Index verwendet wird. Wenn beispielsweise der RTAG-Wert 1 ist, dann werden die letzten 3 Bits der Quell-Mac-Adresse verwendet, um den Trunk-Port-Index zu identifizieren; unter Verwendung der Trunk-Gruppen-Tabelle kann der Trunk-Port-Index dann verwendet werden, um den geeigneten Trunk-Port zur Kommunikation zu identifizieren. Wenn der RTAG-Wert 2 ist, dann sind es die letzten 3 Bits der Ziel-Mac-Adresse, die zum Erzeugen des Trunk-Port-Index verwendet werden. Wenn die RTAG 3 ist, dann werden die letzten 3 Bits der Quell-Mac-Adresse XORverknüpft mit den letzten 3 Bits der Ziel-Mac-Adresse. Das Ergebnis dieses Vorgangs wird zum Erzeugen des Trunk-Port-Index verwendet. Für IP-Pakete werden zusätzliche RTAG-Werte verwendet, sodass die Quell-IP- und Ziel-IP-Adressen für den Trunk-Port-Index verwendet werden, anstelle der Mac-Adressen.
  • Das SOC 10 wird so konfiguriert, dass wenn ein Trunk-Port abgeschaltet wird oder aus irgend einem Grund versagt, eine Benachrichtigung durch den CMIC 40 an die CPU 52 gesendet wird. Die CPU 52 wird dann so konfiguriert, dass sie automatisch die Trunk-Gruppen-Tabelle und die VLAN-Tabellen überprüft, um sicherzustellen, dass die geeigneten Port-Bitmaps geändert werden, um der Tatsache zu entsprechen, dass ein Port abgeschaltet worden ist und daher entfernt worden ist. Wenn entsprechenderweise der Trunk-Port oder die Verbindung wieder hergestellt worden ist, muß das Verfahren umgedreht werden und eine Nachricht muß an die CPU 52 gesendet werden, sodass die VLAN-Tabellen, die Trunk- Gruppen-Tabellen, usw. aktualisiert werden können, um das Vorhandensein des Trunk-Ports wiederzuspiegeln.
  • Weiterhin soll angemerkt werden, dass die Trunk-Gruppe zum Empfangen von Steuer-Frames und Steuer-Paketen, die ebenso als BPDUs bekannt sind, konfiguriert sind, jedoch nur einer der Trunk-Ports, da die Trunk-Gruppe als eine einzige logische Verbindung behandelt wird. Die port-basierte VLAN-Tabelle muß daher so konfiguriert sein, dass sie eingehende BPDUs von nicht spezifizierten Trunk-Ports zurückweist. Diese Zurückweisung kann einfach gesetzt werden, indem ein B-Bit in der VLAN-Tabelle gesetzt wird. Der IEEE-Standard 802.1d definiert einen Algorithmus, der als Aufgespannter-Baum-Algorithmus bzw. Spanning-Tree-Algorithmus bekannt ist, um Datenschleifen in Switchess zu vermeiden, in denen Trunk-Gruppen existieren. Unter Bezugnahme auf 19 könnte eine logische Schleife zwischen Ports 1 und 2 der Switchess SW1 und SW2 existieren. Der Spanning-Tree-Algorithmus definiert vier getrennte Zustände, wobei diese Zustände Deaktivieren, Blockieren, Zuhören, Lernen und Weiterleiten umfassen. Die Port-basierte VLAN-Tabelle ist so konfiguriert, dass sie die CPU 52 in die Lage versetzt, die Ports für einen spezifischen ARL-Zustand zu programmieren, sodass die ARL-Logik die geeignete Aktion auf die eingehenden Pakete anwendet. Wie zuvor erwähnt, schafft das B-Bit in der VLAN-Tabelle die Fähigkeit, BPDUs zurückzuweisen. Das St-Bit in der ARL-Tabelle ermöglicht es der CPU, die statischen Einträge zu lernen; wie in 18 erwähnt ist, werden die statischen Einträge nicht von dem Alterungsprozeß gealtert. Das Trefferbit in der ARL-Tabelle ermöglicht es, wie zuvor erwähnt, der ARL-Maschine 143, zu erfassen, ob es auf diesen Eintrag einen Treffer gab oder nicht. In anderen Worten verwendet das SOC 10 eine einzigartige Konfiguration von ARL-Tabellen, VLAN-Tabellen, Modulen, usw., um effiziente auf Silicium basierte Implementierung der Spanning-Tree-Zustände zu schaffen.
  • In bestimmten Situationen, wie beispielsweise bei einem Ziel-Look-Up-Fehler (DLF), in dem ein Paket in alle Ports auf einem VLAN gesendet wird oder bei einem Multicast-Paket, wird die Trunk-Gruppen-Bitmap-Tabelle so konfiguriert, dass sie die geeignete Port-Information aufnimmt, sodass das Paket nicht zu den Mitgliedern der gleichen Quell-Trunk-Gruppe zurückgesetzt wird. Dies verhindert unnötigen Verkehr auf dem LAN und erhält die Effizienz bei der Trunk-Gruppe.
  • IP/PX
  • Unter Bezugnahme wiederum auf 14 kann jeder EPIC 20, GPIC 30 oder IPIC 90 so konfiguriert werden, dass sie sowohl die Unterstützung des IP- als auch des IPX-Protokolls bei Leitungsgeschwindigkeit ermöglichen. Diese Flexibilität wird bereitgestellt, ohne irgendeine nachteilige Auswirkung auf die Systemleistung zu haben und verwendet eine Tabelle, die in Silicium implementiert ist und für das IP-Protokoll, das IPX-Protokoll oder eine Kombination von IP-Protokoll und IPX-Protokoll ausgewählt werden kann. Diese Fähigkeit wird innerhalb der Logik-Schaltung 1411 zur Verfügung gestellt und verwendet einen Cage-Look-Up nach dem längsten IP-Präfix (IP_LPC) und einen Cage-Look-Up nach dem längsten IPX-Präfix (IPS_LPC). Während des Layer-3-Look-Ups wird eine Anzahl von gleichzeitigen Suchen durchgeführt; ein schneller L3-Look-Up und der Cage-Look-Up nach dem längsten IP-Präfix werden gleichzeitig durchgeführt, wenn das Paket mittels des Paket-Headers als ein IP-Paket identifiziert worden ist. Wenn der Paket-Header das Paket als ein IPX-Paket identifiziert, werden der schnelle L3-Look-Up und der Cage-Look-Up nach dem längsten IPX-Präfix gleichzeitig durchgeführt. Es soll angemerkt werden, dass die ARL/L3-Tabellen 21/31 der EPICs 20 und GEPICs 30 eine IP-Vorgabe-Router-Tabelle beinhalten, die für einen Cage-Look-Up nach dem längsten IP-Präfix verwendet wird, wenn das Paket als IP-Paket identifiziert wird, und ebenso eine IPX-Vorgabe-Router-Tabelle beinhaltet, die verwendet wird, wenn der Paket-Header das Paket als IPX-Paket identifiziert. Geeignete Hexadezimalcodes werden verwendet, um die Pakettypen zu bestimmen. Wenn das Paket weder als IP-Paket noch als IPX-Paket identifiziert wird, wird das Paket zur CPU 52 mittels des CPS-Kanals 80 und dem CMIC 40 geleitet. Es soll angemerkt werden, dass wenn das Paket als ein IPX-Paket identifiziert ist, es jedes beliebige der vier Typen von IPX-Paketen sein kann. Die vier Typen, wie zuvor erwähnt, sind Ethernet 802.3, Ethernet 802.2, Ethernet SNAP und Ethernet II.
  • Der gleichzeitige Look-Up von L3 und entweder IP oder IPX ist wichtig für die Leistung des SOC 10. In einem Ausführungsbeispiel des SOC 10 würde die L3-Tabelle einen Teil enthalten, der IP-Adress-Information enthält, und einen anderen Teil, der IPX-Information hat, als Vorgabe-Router-Tabellen. Diese Vorgabe-Router-Tabellen, wie zuvor erwähnt, werden in Abhängigkeit davon durchsucht, ob das Paket ein IP-Paket oder ein IPX-Paket ist. Um diese Tabellen deutlicher zu zeigen, ist das L3-Tabellen-Format für eine L3-Tabelle innerhalb der ARL/L3-Tabellen 21 wie folgt:
    IP- oder IPX-Adresse – 32 Bit lang – IP- oder IPX-Adresse – Ist eine 32-Bit-IP- oder IPX-Adresse. Die Ziel-IP- oder -IPX-Adresse in einem Paket wird als Schlüssel beim Durchsuchen dieser Tabelle verwendet.
    Mac-Adresse – 48 Bit lang – Die Mac-Adresse ist wirklich die nächste Hop-Mac-Adresse. Die Mac-Adresse wird als Ziel-Mac-Adresse bei dem weitergeleiteten IP-Paket verwendet.
    Port-Nummer – 6 Bit lang – Port-Nummer – Ist die Port-Nummer, an die das Paket auszugehen hat, wenn die Ziel-IP-Adresse mit der IP-Adresse dieses Eintrags übereinstimmt.
    L3-Schnittstellen-Nummer – 5 Bit lang – L3-Schnittstellen-Nummer – Diese L3-Schnittstellen-Nummer wird verwendet, um die Router-Mac-Adresse von der L3-Schnittstellen-Tabelle zu erhalten.
    L3-Trefferbit – 1 Bit lang – L3-Trefferbit – Wird verwendet, um zu überprüfen, ob es einen Treffer auf diesen Eintrag gab. Das Trefferbit wird gesetzt, wenn die Quell-IP-Adress-Suche mit diesem Eintrag übereinstimmt. Der L3-Alterungsprozeß altert diesen Eintrag, wenn dieses Bit nicht gesetzt ist.
    Frame-Typ – 2 Bit lang – Frame-Typ zeigt den Typ des IPX-Frames an (802.2, Ethernet II, SNAP und 802.3), der von diesem IPX-Knoten angenommen wird. Der Wert 00 – Ethernett II-Frame. Wert 01 – SNAP-Frame. Wert 02 – 802.2-Frame. Wert 03 – 802.3-Frame.
    Reserviert – 4 Bit lang – Reserviert für zukünftige Benutzung.
  • Die Felder in der Vorgabe-IP-Router-Tabelle sind wie folgt:
    IP-Subnet-Adresse – 32 Bit lang – IP-Subnet-Adresse – Ist eine 32 Bit-IP-Adresse des Subnetzes.
    Mac-Adresse – 48 Bit lang – Mac-Adresse ist wirklich die nächste Hop-Mac-Adresse und in diesem Fall die Mac-Adresse des Vorgabe-Routers.
    Port-Nummer – 6 Bit lang – Port-Nummer ist die Port-Nummer, an den das weitergeleitete Paket auszugehen hat.
    Modul-ID – 5 Bit lang – Identifiziert das Modul in einem Stapel, an das das Paket nach der Übereinstimmung des längsten Präfix gehen muß.
    L3-Schnittstellen-Nummer – 5 Bit lang – L3-Schnittstellen-Nummer ist die L3-Schnittstellen-Nummer.
    IP-Subnetz-Bits – 5 Bit lang – IP-Subnetz-Bits ist die gesamte Zahl von Subnetz-Bits in der Subnetz-Maske. Diese Bits werden UND-verknüpft mit der Ziel-IP-Adresse, vor dem Vergleich mit der Subnetz-Adresse.
    C-Bit – 1 Bit lang – C-Bit – Wenn dieses Bit gesetzt ist, dann wird das Paket auch zur CPU gesendet.
  • Die Felder der Vorgabe-IPX-Router-Tabelle innerhalb der ARL/L3-Tabellen 21 sind wie folgt:
    IPX-Subnetz-Adresse – 32 Bit lang – IPS-Subnetz-Adresse ist eine 32-Bit-IPX-Adresse des Subnetzes.
    Mac-Adresse – 48 Bit lang – Mac Adresse ist wirklich die nächste Hop-Mac-Adresse und ist in diesem Fall die Mac-Adresse des Vorgabe-Routers.
    Port-Nummer – 6 Bit lang – Port-Nummer ist die Port-Nummer, an den das weitergeleitete Paket auszugehen hat.
    Modul-ID – 5 Bit lang – Identifiziert das Modul in einem Stapel, an dem das Paket nach der Übereinstimmung mit dem längsten Präfix gehen muß.
    L3-Schnittstellen-Nummer – 5 Bit lang – L3-Schnittstellen-Nummer ist die L3-Schnittstellen-Nummer.
    IPX-Subnetz-Bits – 5 Bit lang – IPX-Subnetz-Bits ist die Gesamtanzahl von Subnetz-Bits in der Subnetz-Maske. Diese Bits werden UND-verknüpft mit der Ziel-IPX-Adresse vor dem Vergleich mit der Subnetz-Adresse.
    C-Bit – 1 Bit lang – C-Bit – Wenn dieses Bit gesetzt ist, dann wird das Paket ebenso zur CPU gesendet.
  • Wenn in der L3-Tabelle für die Ziel-IP-Adresse keine Übereinstimmung gefunden worden ist und die Übereinstimmung des längsten Präfix für den Vorgabe-IP-Router fehlschlägt, dann wird das Paket an die CPU gegeben. Wenn auf ähnliche Weise in der L3-Tabelle für eine Ziel-IPX-Adresse keine Übereinstimmung gefunden wird und die Übereinstimmung für den längsten Präfix des Vorgabe-IPX-Routers fehlschlägt, dann wird das Paket an die CPU gegeben. Die Look-Ups werden parallel durchgeführt, aber wenn die Ziel-IP- oder IPX-Adresse in der L3-Tabelle gefunden wird, dann werden die Ergebnisse des Vorgabe-Router-Tabellen-Look-Ups aufgegeben.
  • Der Cage-Look-Up nach dem längsten Präfix, sowohl für IP als auch IPX beinhaltet wiederholte Übereinstimmungsversuche von Bits, der IP-Subnetz-Adresse. Die Übereinstimmung für den längsten Präfix besteht in der UND-Verknüpfung der Ziel-Adresse mit der Nummer der IP- oder der IPX Subnetzbits und dem Vergleichen des Ergebnisses mit der IP-Subnetz-Adresse. Wenn eine Zuordnung des längsten Präfix gefunden ist, dann werden, so lange die TTL nicht gleich 1 ist, die geeigneten IP-Prüfsummen erneut berechnet, die Ziel-Mac-Adresse mit der nächsten Hop-Mac-Adresse ersetzt und die Quell-Mac-Adresse mit der Router-Mac-Adresse der Schnittstelle ersetzt. Die VLAN-ID wird von der L3-Schnittstellen-Tabelle erhalten und das Paket wird entweder markiert oder unmarkiert gesendet, wie es angezeigt ist. Wenn das C-Bit gesetzt ist, wird eine Kopie des Pakets an die CPU gesendet, wie es zum Lernen oder für andere CPU-bezogene Funktionen erforderlich sein kann.
  • Es soll daher angemerkt werden, dass wenn ein Paket ankommt, dass an eine Mac-Adresse gerichtet ist, die einer Ebene-3-Schnittstelle für ein ausgewähltes VLAN zugeordnet ist, der Eingang nach einer Übereinstimmung auf der IP/IPX-Ziel-Subnetz-Ebene sucht. Wenn es keine Übereinstimmung bei dem IP/IPX-Ziel-Subnetz gibt, wird das Paket zur CPU 52 zum geeigneten Routing weitergeleitet. Wenn jedoch eine IP/IPX-Übereinstimmung gemacht ist, dann wird die Mac-Adresse des nächsten Hop und die Ausgangs-Port-Nummer identifiziert und das Paket auf geeignete Weise weitergeleitet.
  • In anderen Worten ausgedrückt wird der Eingang des EPIC 20 oder GPIC 30 in Bezug auf die ARL/L3-Tabellen 21 so konfiguriert, dass wenn ein Paket in das Eingangs-Submodul 14 kommt, der Eingang identifizieren kann, ob das Paket ein IP-Paket oder ein IPX-Paket ist. IP-Pakete werden zu einem IP/ARL-Look-Up geleitet und IPX-konfigurierte Pakete werden zu einem IPX/ARL-Look-Up geleitet. Wenn eine L3-Übereinstimmung während des L3-Look-Up gefunden worden ist, dann werden die Look-Ups für Zuordnungen des längsten Präfix aufgegeben.
  • IP Multicast
  • Das SOC 10 ist zur Unterstützung von IP-Multicast-Anwendungen konfiguriert, wie beispielsweise Multimedia-Konferenzen, Echtzeitvideo, Echtzeitaudio, usw. Diese Anwendungen sind sehr stark von der Punkt-Zu-Mehrfachpunkt-Lieferung von Diensten abhängig bzw. der Punkt-Zu-Multipunkt-Lieferung. Einige IP-Protokolle, die zur Unterstützung von IP-Multicast eingesetzt worden, beinhalten DVMRP (distance vector multicast routing protocol), Protokoll-Independent Multicast-Dense Mode, Protokoll-Independent Multicast-Sparse Mode, Multicast Extensions zu SOSPF, usw. Um solche Konfigurationen zu implementieren, ist jeder EPIC, GPIC und mögliche andere Module auf dem SOC 10 mit einer IP-Multicast-Tabelle versehen. Die Eingangslogik 14 und die Ausgangslogik 16 sind zum Behandeln von IP-Multicast-Paketen konfiguriert.
  • Jede Multicast-Tabelle kann beispielsweise 256 Einträge tief und 128 Bit breit sein. Die Tabelle ist sortiert und der Suchschlüssel ist die Quell-IP-Adresse zuzüglich der Multicast-IP-Adresse. Die 24 zeigt das Format für eine IP-Multicast-Tabelle. Die Felder für so eine Tabelle können wie folgt sein:
    Quell-IP-Adresse – 32 Bit lang – Quell-IP-Adresse ist eine 32-Bit-IP-Adresse der Quellstation.
    Multicast-IP-Adresse – 32 Bit lang – Multicast-IP-Adresse – Ist eine 32 Bit-IP-Multicast-Adresse. Anmerkung: IP-Multicast-Adresse ist eine Klasse-D-Adresse; die ersten 3 MSBs sind alle eins.
    L3-Port-Bitmap – 31 Bit lang – L3-Port-Bitmap identifiziert all die Ports, an die das Paket ausgehen soll.
    L3-Modul-Bitmap – 32 Bit lang – L3-Bit-Modul-Bitmap identifiziert alle Module, an die das Paket ausgehen soll.
    Quell-Port – 6 Bit lang – Quell-Port ist der Port, der der nächste zu der Quell-Station ist. In anderen Worten sendet die Quell-Station, die von der Quell-IP-Adresse identifiziert wird, den Multicast-Verkehr durch diesen Port.
    TTL-Schwelle – 5 Bit lang – Wenn das eingehende Multicast-Paket eine TTL unter der TTL-Schwelle hat, dann wird das Paket fallengelassen.
  • Die 25 zeigt ein Flußdiagramm, wie der Eingang 14 eines SOC 20 ein IP-Multicast-Paket behandeln würde, das an einem Port darauf ankommt. In Schritt 25-1 wird das Paket untersucht, um festzustellen, ob es ein IP-Multicast-Paket ohne irgendwelche Optionsfelder ist. Wenn es Optionsfelder gibt, wird das Paket zur CPU 52 zur weiteren Behandlung gesendet. In Schritt 25-2 wird die IP-Prüfsumme validiert. In Schritt 25-3 wird die Ziel-IP-Adresse untersucht, um zu sehen, ob es eine Klasse-D-Adresse ist. Eine Klasse-D-Adresse ist eine Adresse, bei der die ersten 3 signifikantesten Bits alle zu 1 gesetzt sind. Wenn die Ziel-IP-Adresse keine Klasse-D-Adresse ist, dann wird das Paket fallengelassen. Wenn dies so ist, wird bei Schritt 25-4 die IP-Multicast-Tabelle mit dem Schlüssel als die Quell-IP-Adresse + die Ziel-IP-Adresse durchsucht. Wenn der Eintrag nicht gefunden wird, wird das Paket zur CPU 52 gesendet. Wenn bei Schritt 25-5 eine Übereinstimmung gefunden wird, wird die TTL (time-to-live) gegen den TTL-Grenzwert in dem IP-Multicast-Eintrag bei Schritt 25-6 geprüft. Wenn der TTL-Wert kleiner als der Grenzwert ist, wird das Paket fallengelassen. Wenn der TTL-Wert nicht unter der Schwelle liegt, dann wird der Quell-Port mit dem Quell-Port in dem Eintrag bei Schritt 25-7 verglichen. Wenn es keine Übereinstimmung gibt, dann wird das Paket fallengelassen. Wenn es eine Übereinstimmung gibt, wird das Paket auf geeignete Weise über den C-Kanal 81 des CPS-Kanals 80 bei Schritt 25-8 gesendet, wobei die geeigneten P-Kanal-Nachrichten damit gerastet sind. Das Paket wird mit dem L2-Port-Bitmap und dem L2-Unmarkiert-Bitmap, das als Ergebnis von der L2-Suche erhalten worden ist, und dem L3-Port-Bitmap als ein Ergebnis der IP-Multicast-Suche gesendet. Zusätzlich wird das IP-Multicast-Bit in der P-Kanal-Nachricht gesetzt, welches anzeigt, dass das Paket ein IP-Multicast-Paket ist und dass der Ausgang nach Empfang des Pakets den IP-Header auf geeignete Weise verändern muß. Von dem CPS-Kanal 80 wird daher das Paket zu dem geeigneten Puffer-Pool gesendet, bis er von dem geeigneten Ausgangs-Port erhalten wird.
  • Wenn der geeignete Ausgangs-Port das Paket von dem Speicher erhält, wenn der Ausgangsport Teil des L3-Port-Bitmaps ist, muß das Paket dann verändert werden. Der TTL-Wert muß verringert werden und die IP-Header-Prüfsumme wird erneut berechnet. Die Quell-Mac-Adresse in dem Paket muß verändert werden, um die L3-Schnittstellen-Mac-Adresse zu sein. Wenn die L3-Schnittstelle, die dem Port zugeordnet ist, markiert ist, dann muß der VLAN-Markierungs-Header mit der VLAN-Id ersetzt werden, die für die Schnittstelle konfiguriert ist.
  • Es soll angemerkt werden, dass wenn es mehrfache L3/Schnittstellen gibt, die einem Port zugeordnet sind, mehrfache Pakete an diesen Port gesendet werden müssen. Das CPU-Bit in dem IP-Multicast-Eintrag kann in diese Situation gesetzt sein, sodass das Paket an die CPU zusammen mit dem Port-Bitmap gegeben wird, auf das das Paket bereits gesendet worden ist. Die CPU kann dann mehrfache Kopien des Pakets an den Port mit den mehrfachen L3-Schnittstellen senden. Diese Konfiguration minimiert daher die Komplexität und maximiert die Geschwindigkeit auf dem SOC 10, aber liefert die erhöhte Flexibilität der Beteiligung der CPU, wenn es erforderlich ist.
  • Ein anderes wichtiges Feld des Filtermaskenformats ist der Zählerindex oder das Zählerfeld. Dieses 5-Bit-Feld wird jedes mal inkrementiert, wenn es eine Übereinstimmung mit der bestimmten Filtermaske gibt. Die Zählerdaten werden für eine Anzahl von verschiedenen Zwecken verwendet, einschließlich dem Finden von Paket-Zählungen für bestimmte Typen von Paketen, Paket-Statistiken, usw. Wenn ein Netzwerkadministrator beispielsweise eine bestimmte Rate eines bestimmten Pakettyps oder eine Paketfrequenz oder Pakete von einer bestimmten IP-Adresse überwachen will, kann der Zähler konfiguriert sein, dass er so incrementiert wird. Schwellen können von dem Netzwerkadministrator so gesetzt werden, dass vorbestimmte Aktionen durchgeführt werden können, nachdem eine ausgewählte Schwelle überschritten wird. Eine solche Aktion kann das Wechseln der Prioriät der Pakete, das Fallenlassen von weiteren Paketen oder eine andere Aktion sein.
  • Bemerkenswerte Aspekte des Regel-Tabellen-Formats für das SOC 10 sind Felder von Aktionsbits, die es ermöglichen, dass die Priorität oder die Präzedenz von TOS zu COS gewechselt werden, und umgekehrt. Unter Bezugnahme auf die in 23 dargestellte Regeltabelle, und das Filtermaskenformat, ermöglichen Bits 8 und 9 des Aktionsbitfelds diese Umwandlung. Wenn Bit 8 gesetzt ist, dann wird das 802.1p-Prioritätsfeld von dem COS-Präzedenz-Feld in dem IP-Header aufgenommen. Wenn Bit 9 gesetzt ist, dann wird der Wert des COS-Präzedenz-Felds von dem 802.1p-Prioritäts-Feld aufgenommen. Dies schafft den beträchtlichen Vorteil, eine wertvolle Information zu schaffen, die sowohl von Routern als auch von Switchess gelesen werden kann. Switchess, die bei Ebene 2 arbeiten, werden auf das 802.1p-Prioritäts-Feld (Erfinder – bitte bestätigen) schauen, wohingegen Router, die bei Ebene 3 arbeiten, auf das TOS-Präzedenzfeld schauen. Wenn ein Paket in der Switch-Domäne von der Router-Domäne in einem LAN eintrifft, kann die Präzedenz von dem SOC 10 auf geeignete Weise von dem 802.1p-Prioritätsfeld zu dem TOS-Präzedenz-Feld und umgekehrt bewegt werden.
  • HOL-Blockierung
  • SOC 10 beinhaltet einige einzigartige Daten-Fluß-Merkmale, um die Effizienz und die Schaltgeschwindigkeit zu maximieren. Bei Netzwerk-Kommunikationen tritt ein Konzept auf, das als Head-Of-Line oder HOL-Blockierung bekannt ist, wenn ein Port versucht, ein Paket an einen überfüllten Port zu senden, und unmittelbar hinter dem Paket ein anderes Paket ist, das an einen nicht überfüllten Port gesendet werden soll. Die Überfüllung an dem Ziel-Port des ersten Pakets würde zu einer Verzögerung der Übertragung des zweiten Pakets zu dem nicht überfüllten Port führen. Jeder EPIC 20, GPIC 30 und IPIC 90 innerhalb des SOC 10 beinhaltet einen einzigartigen HOL-Blockierungs-Mechanismus, um den Duchsatz zu maximieren und die negativen Auswirkungen zu minimieren, die ein einzelner überfüllter Port auf den Verkehr haben würde, der zu nicht überfüllten bzw. verstopften Ports geht. Wenn beispielsweise ein Port auf einem GPIC 30 mit einer Datenrate von beispielsweise 1000 Megabit versucht, Daten zu einem anderen Port 24a auf den EPIC 20a zu senden, würde der Port 24a sofort verstopft werden. Jeder Port auf jedem IPIC 90, GPIC 30 und EPIC 20 wird von der CPU 52 so programmiert, dass er einen oberen Grenzwert und einen unteren Grenzwert pro Port pro Dienstklasse (COS) hat, im Bezug auf den Puffer-Raum innerhalb des CBP 50. Die Tatsache, dass der Head-Of-Line-Blockierungs-Mechanismus per Port eine per COS-Head-Of-Line-Blockierungs-Verhinderung ermöglicht, ermöglicht einen effizienteren Datenfluß, als er im Stand der Technik bekannt ist. Wenn die Ausgangs-Schlange für einen bestimmten Port den vorprogrammierten oberen Grenzwert innerhalb des zugeteilten Puffers im CBP 50 trifft, sendet die MMU 70 auf dem S-Kanal 83 eine COS-Schlangen-Status-Benachrichtigung an das geeignete Eingangsmodul auf dem geeigneten GEPIC 30 oder EPIC 20. Wenn die Nachricht empfangen wird, wird das Aktive-Port-Register entsprechend zu dem in der Nachricht angegebenen COS aktualisiert. Wenn das Port-Bit für diesen bestimmten Port zu Null gesetzt wird, wird der Eingang so konfiguriert, dass er alle Pakete fallen läßt, die zu diesem Port gehen. Auch wenn die fallengelassenen Pakete eine nachteilige Auswirkung auf die Kommunikation zu dem verstopften Port haben, ermöglicht es das Fallenlassen der für die verstopften Ports bestimmten Pakete den Paketen, die zu nicht verstopften Ports gehen, dass sie prompt dorthin weitergeleitet werden. Wenn die Ausgangs-Schlange unter den vorprogrammierten unteren Grenzwert geht, sendet die MMU 70 eine COS-Schlangen-Status-Benachrichtigungs-Nachricht auf dem Seitenband-Kanal mit dem Bit, das für den Port gesetzt ist. Wenn der Eingang diese Nachricht bekommt, wird das Bit, das dem Port in dem Aktiver-Port-Register entspricht, für das Modul gesetzt, sodass das Paket zu der geeigneten Ausgangsschlange gesendet werden kann. Durch das Warten, bis die Ausgangsschlange unter den unteren Grenzwert geht, bevor der Port wieder aktiviert wird, wird eine Hysterese in das System eingebaut, um eine stetige Aktivierung und Deaktivierung des Ports wegen dem Weiterleiten von nur einem Paket oder einen kleinen Anzahl von Paketen zu verhindern. Es soll angemerkt werden, dass jedes Modul ein Aktiver-Port-Register aufweist. Als ein Beispiel kann jede COS pro Port vier Register zum Speichern des oberen Grenzwerts und des unteren Grenzwerts aufweisen; diese Register können Daten speichern, die in einer Anzahl von Zellen auf der Ausgangsschlange ausgedrückt sind oder in einer Anzahl von Paketen auf der Ausgangsschlange ausgedrückt sind. In dem Fall einer Unicast-Nachricht wird das Paket nur fallengelassen. In dem Fall Multicast- oder Mehrempfänger-Nachrichten, wird die Nachricht im Bezug auf die verstopften Ports fallengelassen, aber zu den nicht verstopften Ports weitergeleitet. Die MMU 70 beinhaltet die gesamte Logik, die zum Implementieren dieses Mechanismus zum Verhindern von HOL-Blockieren im Bezug auf das Budgetieren von Zellen und Paketen erforderlich ist. Die MMU 70 beinhaltet ein HOL-Blockierungs-Markierungs-Register, um den Mechanismus auf der Grundlage der Zellen zu implementieren. Wenn die Zählung lokaler Zellen zuzüglich der Zählung globaler Zellen für einen bestimmten Ausgangsport den HOL-Blockierungs-Markierungs-Register-Wert übersteigt, dann sendet die MMU 70 die HOL-Status-Benachrichtigungs-Nachricht. Die MMU 70 kann ebenso eine frühe HOL-Benachrichtigung implementieren, durch die Benutzung eines Bits in dem MMU-Konfigurations-Register, auf welches als Benutzer-Früh-Warnung-Bit Bezug genommen wird. Wenn dieses Bit gesetzt ist, sendet die MMU die HOL-Benachrichtigungs-Nachricht, wenn die Zählung lokaler Zellen zuzüglich der Zählung globaler Zellen zuzüglich Einhunderteinundzwanzig (121) größer als der Wert in dem HOL-Blockierungs-Markierungs-Register ist. 121 ist die Anzahl von Zellen in einem Jumbo-Frame.
  • In Bezug auf die oben erörterte Hysterese soll angemerkt werden, dass die MMU 70 sowohl eine räumliche als auch eine zeitliche Hysterese implementiert. Wenn die Zählung lokaler Zählung zuzüglich der Zählung globaler Zellen unter den Wert in dem HOL-Blockierungs-Markierungs-Register fällt, dann wird ein Wilderer-Timer-Wert (Poaching-Timer-Wert) von einem MMU-Konfigurations-Register verwendet, um ihn in einen Zähler zu laden. Der Zähler wird alle 32 Taktzyklen dekrementiert. Wenn der Zähler Null erreicht, sendet die MMU 70 die HOL-Status-Nachricht mit dem neuen Port-Bitmap. Das Bit entsprechend dem Ausgangsport wird zu Null gesetzt, um anzuzeigen, dass es keine HOL-Blockierung auf dem Ausgangsport gibt. Um die Verhinderung der HOL-Blockierung auf der Grundlage von Paketen durchzuführen, wird ein Rollen-Markierungs-Wert in dem MMU-Konfigurations-Register definiert. Wenn die Anzahl von Transaktions-Schlangen-Einträgen zuzüglich dem Rollen-Markierungs-Wert größer als die maximale Transaktions-Schlange-Größe pro COS ist, dann sendet die MMU 70 die COS-Schlangen-Status-Nachricht auf dem S-Kanal. Wenn einmal der Ausgangsport diese Nachricht empfängt, wird der Eingangsport stoppen, Pakete für diese bestimmte Port- und COS-Kombination zu senden. In Abhängigkeit der Konfiguration und der für den Ausgangsport empfangenen Paketlänge kann entweder die Head-Of-Line-Blockierung für den oberen Zell-Grenzwert oder die Head-Of-Line-Blockierung für den oberen Paket-Grenzwert als erstes erreicht werden. Diese Konfiguration verhindert daher, dass entweder eine kleine Reihe von sehr großen Paketen oder eine große Reihe von sehr kleinen Paketen HOL-Blockierungs-Probleme erzeugen.
  • Der untere Grenzwert, der zuvor im Bezug auf die CBP-Zulassung-Logik erörtert worden ist, ist zu dem Zweck, um sicherzustellen, dass unabhängig von den Verkehrsbedingungen jeder Port einen geeigneten Puffer-Raum hat, der in dem CBP zugeteilt ist, um das Verstopfen des Ports zu verhindern, und um sicherzustellen, dass jeder Port in der Lage ist, mit jedem anderen Port bis zu dem Umfang zu kommunizieren, in dem das Netzwerk eine solche Kommunikation unterstützen kann.
  • Es wird erneut auf die MMU 70 Bezug genommen, wobei der CBM 71 so konfiguriert ist, dass er die Verfügbarkeit der Adress-Zeiger maximiert, die den eingehenden Paketen von einem freien Adresspool zugeordnet werden. Der CBM 71 speichert, wie zuvor erwähnt, den ersten Zell-Zeiger, bis ein eingehendes Paket 112 empfangen und entweder in dem CBP 50 oder dem GBP 60 zusammengebaut wird. Wenn das Säuberungs-Flag für die entsprechende P-Kanal-Nachricht gesetzt ist, säubert der CBM 71 das eingehende Datenpaket und bewirkt daher, dass die Adress-Zeiger GPBI/CPID, die dem eingehenden Paket zugeordnet sind, wieder verfügbar sind. Wenn das Säuberungs-Flag gesetzt ist, spült oder säubert der CBM 71 im wesentlichen das Paket von der Verarbeitung des SOC 10, wobei auf diese Weise eine folgende Kommunikation mit dem zugeordneten Ausgangsmanager 76 verhindert wird, der dem gesäuberten Paket zugeordnet ist. Der CBM 71 ist so konfiguriert, dass er mit den Ausgangsmanagern 76 zum Löschen von gealterten und verstopften Paketen kommuniziert. Gealterte und verstopfte Pakete werden zu dem CBM 71 auf der Grundlage der zugeordneten Start-Adress-Zeiger geleitet und die Zurückforderungs-Einheit innerhalb des CBM 71 befreit die Zeiger, die den zu löschenden Paketen zugeordnet sind; dies wird im wesentlichen durch Modifizierung des freien Adresspools zum Wiederspiegeln dieses Wechsels erreicht. Der Speicher-Budget-Wert wird aktualisiert, indem der aktuelle Wert des zugeordneten Speichers mittels der Anzahl von Datenzellen decrementiert wird, die gesäubert werden.
  • Um es zusammenzufassen, werden aufgeschlüsselte Pakete auf dem C-Kanal 81 von dem Eingangs-Submodul 14 angeordnet, wie es mit Bezug auf die 8 erörtert ist. Der CBM 71 bildet eine Schnittstelle zu dem CPS-Kanal und jedes Mal, wenn es eine an den Ausgangsport adressierte Zelle/Paket gibt, weist der CBM 71 Zell-Zeiger zu und verwaltet die verbundene Liste. Eine Mehrzahl von Maschinen zum gleichzeitigen Wiederzusammenfügen ist vorgesehen, mit einer Maschine zum Wiederzusammenfügen für jeden Ausgangsmanager 76, und zum Verfolgen des Frame-Status. Wenn einmal eine Mehrzahl von Zellen, die ein Paket darstellen, vollständig in den CBP 50 geschrieben ist, sendet der CBM 71 CPIDs an die entsprechenden Ausgangsmanager aus, wie es oben erörtert ist. Die CPIDs zeigen auf die erste Zelle des Pakets in dem CBP; der Paket-Fluß wird dann von den Ausgangsmanagern 76 zu Transaktions-MACS 140 gesteuert, wenn einmal die Zuordnung der CPID/GPID durch den CBM 71 abgeschlossen ist. Das Budgetregister (nicht dargestellt) des entsprechenden Ausgangsmanagers 76 wird auf geeignete Weise mittels der Anzahl von Zellen dekrementiert, die dem Ausgang zugeordnet sind, nachdem das vollständige Paket in dem CBP 50 geschrieben ist. Der EGM 76 schreibt die geeigneten PIDs in deren Transaktions-FIFO. Da es mehrere Klassen von Diensten (COSs) bzw. Dienstklassen gibt, schreibt der Ausgangsmanager 76 die PIDs in die ausgewählte Transaktions-FIFO entsprechend dem ausgewählten COS. Wie nachstehend mit Bezug auf 13 erörtert werden wird, hat jeder Ausgangsmanager 76 seine eigene Planungs-Schnittstelle zu dem Transaktions-Pool oder der Transaktions-FIFO auf einer Seite, und dem Paket-Pool oder der Paket-FIFO auf der anderen Seite. Die Transaktions-FIFO beinhaltet alle PIDs und der Paket-Pool oder die Paket-FIFO beinhaltet nur CPIDs. Die Paket-FIFO bildet eine Schnittstelle zu der Transaktions-FIFO und initiiert die Sendung auf der Grundlage von Anforderungen von der Sende-MAC. Wenn das Senden einmal gestartet ist, werden Daten von dem CBP 50 auf der Grundlage der Transaktions-FIFO-Anforderungen mit einer Zelle auf einmal gelesen.
  • Wie zuvor erwähnt, gibt es einen Ausgangsmanager für jeden Port von jedem EPIC 20 und GPIC 30 und er ist dem Ausgangs-Submodul 18 zugeordnet. Es soll erwähnt werden, dass der IPIC 90 den Ausgang in einer unterschiedlichen Weise zu den EPICs 20 und den GPICs 30 verwaltet, da der IPIC 90 die Pakete von dem NBP 92 holt.
  • Die 13 zeigt ein Blockdiagramm eines Ausgangsmanagers 76, der mit dem R-Kanal 77 kommuniziert. Für jedes Datenpaket 112, das durch ein Eingangssubmodul 14 eines EPIC 20 des SOC 10 empfangen worden ist, weist der CBM 71 eine Zeiger-Identifizierung (PID) zu; wenn das Paket 112 zu dem CBP 50 zugelassen wird, teilt der CBM 71 eine CPID zu, und wenn das Paket 112 zu dem GBP 60 zugelassen wird, teilt der CBM 71 eine GPID-Nummer zu. Zu diesem Zeitpunkt benachrichtigt der CBM 71 den entsprechenden Ausgangsmanager 76, der das Paket 112 behandeln wird und leitet die PID an den entsprechenden Ausgangsmanager 76 durch den R-Kanal 77. In dem Fall eines Unicast-Pakets würde nur ein Ausgangsmanager 76 die PID empfangen. Wenn jedoch das eingehende Paket ein Multicast- oder Rundsende-Paket war, wird jeder Ausgangsmanager 76, an den das Paket geleitet wird, die PID empfangen. Aus diesem Grund muß ein Multicast- oder Rundsende-Paket nur einmal in dem geeigneten Speicher gespeichert werden, entweder in dem CBP 50 oder dem GBP 60.
  • Jeder Ausgangsmanager 76 beinhaltet eine R-Kanal-Schnittstellen-Einheit (RCIF) 131, eine Transaktions-FIFO 132, einen COS-Manager 133, eine Planungs-Einrichtung 134, eine beschleunigte Paket-Spül-Einheit (APF) 135, eine Speicher-Lese-Einheit (MRU) 136, eine Zeit-Stempel-Überprüfungs-Einheit (TCU) 137 und eine Entmarkierungs-Einheit 128. Die MRU 136 kommuniziert mit dem CBP-Speicher-Controller (CMC) 79, der mit dem CPB 50 verbunden ist. Die Planungseinrichtung 134 ist mit einer Paket-FIFO 139 verbunden. Die RCIF 131 behandelt alle Nachrichten zwischen dem CBM 71 und dem Ausgangsmanager 76. Wenn ein Paket 112 in dem SOC 10 empfangen und gespeichert wird, leitet der CBM 71 die Paketinformation an die RCIF 131 des zugeordneten Ausgangsmanagers 76. Die Paketinformation beinhaltet eine Angabe, ob das Paket in dem CBP 50 oder dem GBP 70 gespeichert ist, die Größe des Pakets und die PID. Die RCIF 131 reicht die empfangene Paketinformation an die Transaktions-FIFO 132 weiter. Die Transaktions-FIFO 132 ist eine FIFO mit einer festen Tiefe mit acht COS-Prioritäts-Schlangen und ist als eine Matrix mit einer Anzahl von Zeilen und Spalten eingerichtet. Jede Spalte der Transaktions-FIFO 132 stellt eine Klasse von Diensten (COS) dar, und die Gesamtanzahl an Reihen bzw. Zeilen ist gleich der Anzahl von Transaktionen, die für jede Klasse von Diensten erlaubt ist. Der COS-Manager 133 arbeitet zusammen mit der Planungseinrichtung 134, um eine Taktik-basierte Dienstqualität (QOS) auf der Grundlage der Ethernet-Standards zur Verfügung zu stellen. Da Datenpakete in eine oder mehrere der COS-Prioritäts-Schlangen der Transaktions-FIFO 132 ankommen, leitet die Planungseinrichtung 134 einen ausgewählten Paketzeiger von einer der Prioritäts-Schlangen zu der Paket-FIFO 139. Die Auswahl des Paketzeigers gründet sich auf einen Schlangen-Planungs-Algorithmus, der von einem Benutzer über die CPU 52 innerhalb des COS-Managers 133 programmiert ist. Ein Beispiel einer COS-Aufgabe ist Video, welches eine größere Bandbreite als Textdokumente benötigt. Ein Datenpaket 112 von Videoinformation kann daher an die Paket-FIFO 139 vor einem Paket geleitet werden, das einem Textdokument zugeordnet ist. Der COS-Manager 133 würde daher die Planungseinrichtung 134 anweisen, den Paketzeiger auszuwählen, der dem Paket von Videodaten zugeordnet ist.
  • Der COS-Manager 133 kann ebenso unter Verwendung eines strikt prioritätsbasierten Planungsverfahrens programmiert sein, oder eines gewichteten prioritätsbasierten Planungsverfahrens zum Auswählen des nächsten Paketzeigers in der Transaktions-FIFO 132. Unter Verwendung eines strikt prioritätsbasierten Planungsverfahrens ist jede der acht COS-Prioritäts-Schlangen mit einer Priorität im Bezug auf eine andere COS-Schlange versehen. Jegliche Pakete, die in der COS-Schlange mit der höchsten Priorität sind, werden von der Transaktions-FIFO 132 zum Senden extrahiert. Unter Verwendung andererseits eines gewichteten prioritätsbasierten Planungsverfahrens ist jede COS-Prioritäts-Schlange mit einer programmierbaren Bandbreite versehen. Nach dem Zuordnen der Schlangen-Priorität von jeder COS-Schlange wird jeder COS-Prioritäts-Schlange eine minimale und eine maximale Bandbreite gegeben. Die Werte für die minimale und maximale Bandbreite sind benutzerprogrammierbar. Wenn einmal die Schlangen mit höherer Priorität ihren minimalen Bandbreitenwert erreichen, teilt der COS-Manager 133 jede verbleibende Bandbreite zu, auf der Grundlage jedes beliebigen Auftretens eines Überschreitens der maximalen Bandbreite für jegliche Prioritätsschlange. Diese Konfiguration garantiert, dass eine maximale Bandbreite von den Schlangen mit hoher Priorität erreicht wird, wohingegen die Schlangen mit niedriger Priorität mit einer geringeren Bandbreite bereitgestellt werden.
  • Die programmierbare Natur des COS-Managers erlaubt es, dass das Planungsverfahren auf der Grundlage der spezifischen Bedürfnisse des Benutzers modifiziert werden kann. Beispielsweise kann der COS-Manager 133 einen Wert für die maximale Paketverzögerung in Betracht ziehen, der von einer Transaktions-FIFO-Schlange erfüllt werden muß. In anderen Worten ausgedrückt kann der COS-Manager 133 erfordern, dass ein Paket beim Senden nicht mit dem maximalen Paket-Verzögerungs-Wert verzögert wird; dies stellt sicher, dass der Paketfluß von Hochgeschwindigkeitsdaten wie beispielsweise Audio, Video und andere Echtzeitdaten kontinuierlich und gleichmäßig übertragen wird.
  • Wenn das angeforderte Paket sich in dem CBP 50 befindet, wird die CPID von der Transaktions-FIFO 132 zur Paket-FIFO 139 geleitet. Wenn das angeforderte Paket sich in dem GBP 60 befindet, iniziiert die Planungseinrichtung das Holen des Pakets von dem GBP 60 zum CBP 50; die Paket-FIFO 139 verwendet nur gültige CPID-Informationen und verwendet nicht GBIP-Informationen. Die Paket-FIFO 139 kommuniziert nur mit dem CBP und nicht mit dem GBP. Wenn der Ausgang ein Paket holen will, kann das Paket nur von dem CBP geholt werden; wenn das angeforderte Paket sich in dem GBP 50 befindet, holt die Planungseinrichtung aus diesem Grund das Paket so, dass der Ausgang das Paket richtigerweise von dem CBP holen kann.
  • Der APF 135 überwacht den Status der Paket-FIFO 139. Nachdem die Paket-FIFO 139 für eine bestimmte Zeitdauer voll ist, räumt der APF 135 die Paket-FIFO aus. Die CBM-Rückforderungs-Einheit wird von dem APF 135 mit den Paketzeigern versehen, die in der Paket-FIFO 139 gespeichert sind, und die Rückforderungs-Einheit wird von dem APF 135 angeweisen, die Paket-Zeiger als Teil des freien Adresspools freizugeben. Der APF 135 deaktiviert auch den Eingangsport 21, der dem Ausgangsmanager 76 zugeordnet ist.
  • Während die Paket-FIFO 139 die Paket-Zeiger von der Planungseinrichtung 134 empfängt, extrahiert die MRU 136 die Paket-Zeiger zum Abschicken an den richtigen Ausgangsport. Nachdem die MRU 136 den Paket-Zeiger empfängt, leitet sie die Paket-Zeiger-Information an den TMC 79, der jede Datenzelle von dem CBP 50 holt. Die MRU 136 leitet die erste Datenzelle 112a, die die Zell-Header-Information behinhaltet, an die TCU 137 und die Entmarkierungs-Einheit 138. Die CCU 137 bestimmt, ob das Paket gealtert ist, indem es die innerhalb der Datenzelle 112a gespeicherten Zeitstempel und die aktuelle Zeit vergleicht. Wenn die Speicherzeit größer als eine programmierbare Ablage-Zeit, dann wird das Paket 112 als gealtertes Paket abgelegt bzw. aufgegeben. Wenn es zusätzlich eine anhängige Anforderung zum Entmarkieren der Datenzelle 112a gibt, wird die Entmarkierungs-Einheit 138 den Markierungs-Header vor dem Ablegen des Pakets entfernen. Die Markierungs-Header sind in dem IEEE-Standard 802.1q definiert.
  • Der Ausgangsmanager 76 bildet durch die MRU 136 Schnittstellen zur der Übertragungs-FIFO 140, welches eine Übertragungs-FIFO für einen geeigneten Medien-Zugangs-Decoder (MAC) ist; Medien-Zugangs-Decoder sind in dem Ethernet Stand der Technik bekannt. Die MRU 136 holt vorab das Datenpaket 112 von dem geeigneten Speicher und sendet das Paket zu der Übertragungs-FIFO 140, wobei sie den Beginn und das Ende des Pakets markiert bzw. mit einem Flag versieht. Wenn nötig wird die Übertragungs-FIFO 140 das Paket ausstopfen, sodass das Paket eine Länge von 64 Byte hat. Wie in 9 gezeigt ist, wird das Paket 112 unterteilt oder segmentiert in eine Mehrzahl von 64-Byte-Datenzellen zum Behandeln innerhalb des SOC 10. Die Segmentierung des Pakets in Zellen vereinfacht dessen Behandlung und verbessert die Granularität, genauso wie sie es vereinfacht, das SOC 10 an Zell-basierte Protokolle anzupassen, wie beispielsweise ATM. Bevor die Zellen jedoch aus dem SOC 10 übertragen werden, müssen sie in das Paketformat zur richtigen Kommunikation gemäß dem geeigneten Kommunikationsprotokoll wieder zusammengefügt werden. Eine Maschine (nicht dargestellt) zum Zusammenfügen der Zellen ist in jedem Ausgang des SOC 10 beinhaltet, um die unterteilten Zellen 112a und 112b in ein auf geeignete Weise verarbeitetes und weitergeleitetes Paket zur weiteren Kommunikation zusammen zu fügen.
  • Die 16 ist ein Blockdiagramm, das einige der Elemente der CPU-Schnittstelle oder des CMIC 40 zeigt. In einem bevorzugten Ausführungsbeispiel stellt der CMIC 40 eine 32-Bit-66 MHZ-PCI-Schnittstelle zur Verfügung, genauso wie eine 12C-Schnittstelle zwischen dem SOC 10 und der externen CPU 52. Die PCI-Kommunikation wird von dem PCI-Kern 41 gesteuert, und die 12C-Kommunikation wird von dem 12C-Kern 42 durchgeführt, über den CMIC-Bus 167. Wie in der Figur gezeigt ist, kommunizieren viele Elemente des CMIC 40 untereinander über den CMIC-Bus 167. Die PCI-Schnittstelle wird üblicherweise zur Konfiguration und Programmierung von Elementen des SOC 10 verwendet, wie beispielsweise Regeltabellen, Filtermasken, der Paketbehandlung usw., sowie zum Bewegen von Daten zu und von der CPU oder anderer PCI-Uplink. Die PCI-Schnittstelle ist geeignet für High-End-Systeme, in denen die CPU 52 eine leistungsfähige CPU ist und einen ausreichenden Protokollstapel abarbeitet, wie es zum Unterstützen von Ebene-2 und Ebene-3-Switching-Funktionen erfordert wird. Die 12C-Schnittstelle ist für Low-End-Systeme geeignet, bei denen die CPU 52 in erster Linie zur Initialisierung verwendet wird. Low-End-Systeme würden selten die Konfiguration des SOC 10 wechseln, nachdem der Switch eingeschaltet ist und läuft.
  • Die CPU 52 wird von dem SOC 10 wie jeder andere Port behandelt. Daher muß der CMIC 40 die erforderlichen Port-Funktionen ebenso wie andere oben definierte Port-Funktionen zur Verfügung stellen. Der CMIC unterstützt alle S-Kanal-Befehle und -Nachrichten, wobei er auf diese Weise es der CPU 52 ermöglicht, auf den gesamten Paketspeicher und den Registersatz zuzugreifen; dies ermöglicht ebenso der CPU 52 Einträge in die ARL/L3-Tabellen einzufügen und zu löschen, CFAP/SFAP-Befehle zu initialisieren, Speicherbefehle und ACKs zu Lesen/schreiben, Registerbefehle und ACKs zu lesen/schreiben, usw. Intern in Bezug auf das SOC 10 bildet der CMIC 40 eine Schnittstelle zu dem C-Kanal 81, dem P-Kanal 82 und dem S-Kanal 83, und ist in der Lage, als S-Kanal-Master sowie als S-Kanal-Slave zu arbeiten. Zu diesem Zweck muß die CPU 52 32-Bit-D-Worte lesen oder schreiben. Zum Einfügen oder Löschen in der ARL-Tabelle unterstützt der CMIC 40 das Puffern von vier Einfüge/Lösch-Nachrichten, die laufend abgefragt oder von einem Interrupt getrieben werden. Die ARL-Nachrichten können ebenso direkt in den CPU-Speicher über einen DMA-Zugang unter Verwendung eines ARL-DMA-Controllers 161 angeordnet werden. Der DMA-Controller 161 kann einen Interrupt bei der CPU 52 nach dem Transfer von einer beliebigen ARL-Nachricht verursachen, oder wenn alle angeforderten ARL-Pakete in dem CPU-Speicher angeordnet worden sind.
  • Die Kommunikation zwischen dem CMIC 40 und dem C-Kanal 81/P-Kanal-82 wird über die Verwendung von CP-Kanal-Pufferr 162 zum Puffern der C- und P-Kanal-Nachrichten und die CP-Bus-Schnittstelle 163 durchgeführt. Die S-Kanal-ARL-Nachricht-Puffer 164 und die S-Kanal-Bus-Schnittstelle 165 ermöglichen die Kommunikation mit dem S-Kanal 83. Wie zuvor angemerkt, werden PIO-(programmierbare Eingangs-/Ausgangs-)-Register verwendet, wie es durch die SCH PIO-Register 166 und die PIO-Register 168 dargestellt ist, um auf den S-Kanal zuzugreifen, sowie um andere Steuer-, Status-, Adress- und Daten-Register zu programmieren. Die PIO-Register 168 kommunizieren mit dem CMIC-Bus 167 über die 12C-Slave-Schnittstelle 42a und die 12C-Master-Schnittstelle 42b. Der DMA-Controller 161 ermöglicht das Verketten, im Speicher, wobei er es auf dieser Weise der CPU 52 ermöglicht, mehrfache Pakete von Daten ohne kontinuierliche CPU-Beteiligung zu übertragen. Jeder DMA-Kanal kann daher programmiert sein, um eine Lese- oder Schreib-DMA-Operation durchzuführen. Spezifische Beschreiberformate können als geeignet ausgewählt werden, um eine gewünschte DMA-Funktion gemäß den Anwendungsregeln auszuführen. Zum Empfangen von Zellen von der MMU 70 zum Transfer an den Speicher, wirkt der CMIC 40 wenn geeignet als Ausgangsport und folgt dem Ausgangsprotokoll, wie es zuvor erörtert worden ist. Zum Übertragen von Zellen zur MMU 70 arbeitet der CMIC 40 als ein Eingangsport und folgt dem Eingangsprotokoll wie es zuvor erörtert worden ist. Der CMIC 40 überprüft aktive Ports, die Verfügbarkeit einer COS-Schlange und andere Eingangsfunktionen, sowie die Unterstützung des oben erörterten HOL-Blockierungs-Mechanismus. Der CMIC 40 unterstützt Einzel- und Burst-PIO-Vorgänge; wobei jedoch ein Burst auf die S-Kanal-Puffer und die ARL-Einfüge/Lösch-Nachrichten-Puffer begrenzt sein sollten. Unter Bezugnahme wieder auf die 12C-Slave-Schnittstelle 42a ist der CMIC 40 so konfiguriert, dass er eine 12C-Slave-Adresse aufweist, sodass ein externer 12C-Master auf Register des CMIC 40 zugreifen kann. Der CMIC 40 kann umgekehrt als ein 12C-Master wirken und somit auf andere 12C-Slaves zugreifen. Es soll angemerkt werden, dass der CMIC 40 ebenso MIIM über die MIIM-Schnittstelle 169 unterstützen kann. MIIM-Unterstützung ist durch den IEEE-Standard 802.3u definiert und wird hier nicht weiter erörtert. Auf ähnliche Weise sind andere Betriebsaspekte des CMIC 40 außerhalb des Bereichs dieser Erörterung.
  • Ein einzigartiger und vorteilhafter Aspekt des SOC 10 ist die Fähigkeit, gleichzeitige Look-Ups im Bezug auf Ebene 2 (ARL), Ebene 3 und das Filtern durchzuführen. Wenn ein eingehendes Paket zu einem Eingangs-Submodul 14 von entweder einem EPIC 20 oder einem GPIC 30 kommt, wie zuvor erörtert, ist das Modul in der Lage, gleichzeitig einen Adress-Look-Up durchzuführen, um zu bestimmen, ob die Ziel-Adresse innerhalb des gleichen VLAN wie die Quell-Adresse ist; wenn die VLAN-IDs die gleichen sind, sollte ein Ebene-2- oder ARL-Look-Up ausreichend sein, um das Paket richtig in einer Speicher- und Weiterleitungskonfiguration zu vermitteln. Wenn die VLAN-IDs verschieden sind, dann muß eine Ebene-3-Vermittlung auf der Grundlage einer geeigneten Identifikation der Ziel-Adresse geschehen und das Vermitteln an einen geeigneten Port, um zu dem VLAN der Ziel-Adresse zu gelangen. Die Ebene-3-Vermittlung muß daher durchgeführt werden, um VLAN-Grenzen zu überschreiten. Sobald einmal das SOC 10 bestimmt, dass L3-Vermittlung erforderlich ist, identifiziert das SOC 10 die MAC-Adresse eines Ziel-Routers, auf der Grundlage des L3-Look-Up. Der L3-Look-Up wird bestimmt auf der Grundlage eines Lesevorgangs in dem beginnenden Abschnitt des Pakets, abhängig davon, ob das L3-Bit gesetzt ist oder nicht. Wenn das L3-Bit gesetzt ist, dann ist ein L3-Look-Up erforderlich, um die geeigneten Routing-Anweisungen zu identifizieren. Wenn der Look-Up nicht erfolgreich ist, wird eine Anforderung an die CPU 52 gesendet, und die CPU 52 nimmt die geeigneten Schritte vor, um das geeignete Routing für das Paket zu identifizieren. Wenn einmal die CPU die geeigneten Routing-Informationen erhalten hat, wird die Information in der L3-Look-Up-Tabelle gespeichert und für das nächste Paket wird der Look-Up erfolgeich sein und das Paket wird in der Speicher- und Weiterleitungs-Konfiguration vermittelt.
  • Verbindungsfähigkeit
  • Der IPIC 90 des SOC 10 schafft eine beträchtliche Funktionalität in Bezug auf die Verbindbarkeit. Insbesondere ermöglicht der IPIC 90 ein beträchtliches Ausmaß an Flexibilität und Leistung in Bezug auf das Stapeln einer Mehrzahl von SOC 10 Chips. Unter Verwendung der zuvor erörterten Hochleistungsschnittstelle können zwei SOC 10 Chips oder Switch-Module über deren jeweilige IPIC 90-Module verbunden werden. Solch eine Konfiguration würde es den SOC-Switch-Modulen ermöglichen, deren CMIC 40-Module mit einer gemeinsamen CPU 52 zu verbinden. In so einer Konfiguration, in der jedes SOC 10 drei EPIC 20-Module umfasst, von denen jedes acht Fast-Ethernet-Ports und zwei GPIC-Module, jedes mit: einem Gigabit-Ethernet-Port, umfasst, würde die entstehende Konfiguration 48 Fast-Ethernet-Ports (24 Ports pro SOC 10) und vier Gigabit-Ethernet-Ports haben. Die 26 zeigt eine solche Konfiguration, in der die CPU 52 gemeinsam mit dem CMIC 40(1) und dem CMIC 40(2) des SOC 10(1) bzw. dem SOC 10(2) verbunden ist. Der IPIC 90(1) und der IPIC 90(2) sind über die Hochleistungsschnittstelle 261 verbunden. Die Fast-Ethernet- und Gigabit-Ports sind gemeinschaftlich als Ports 24(1) bzw. 24(2) dargestellt.
  • Andere Stapelkonfigurationen beinhalten eine sogenannte Ring-Konfiguration, bei der eine Mehrzahl von SOC 10-Chips über eine ICM-(Verbindungsmodul)-Schnittstelle mit einem Ring verbunden sind. Eine weitere dritte Stapel-Verbindung besteht darin, dass eine Mehrzahl von SOC 10-Chips oder Switchess über eine ICM mit einem Querverbindungs-Switch auf so eine Weise verbunden ist, dass der Querverbindungs-Switch mit der Mehrzahl von SOC 10-Switchess verbunden ist. Diese zusätzlichen zwei Stapel-Konfigurationen sind in der 27A bzw. 27B dargestellt. Die 27A zeigt das SOC 10(1), das mit dem Ring R über das ICM 271(1) verbunden ist, sowie das SOC 10(2), das mit dem Ring R über das ICM 271(2) verbunden ist. Diese Konfiguration ermöglicht es einer Mehrzahl von SOC 10-Switchess, gestapelt zu werden. In einem Ausführungsbeispiel können bis zu 32 SOC 10-Switchess an den Ring R angebracht werden. Die 27B zeigt eine Querverbindungs-Konfiguration, in der die SOC 10(1) und SOC 10(2) über das ICM 271(1) bzw. 271(2) mit der Querverbindung C verbunden sind. Diese Konfiguration ermöglicht es ähnlich zu der von 27A, dass eine beträchtliche Anzahl von SOC-Switchess gestapelt werden kann. Die Querverbindung C ist eine bekannte Einrichtung, die als Matrix oder Netz arbeitet, die in der Lage ist, eine Mehrzahl von Ports über die Aktivierung einer geeigneten Matrix-Verbindung zu verbinden.
  • Wie in den 1 und 2 dargestellt ist, bildet der IPIC 90 von jedem SOC 10 eine Schnittstelle auf der einen Seite zu dem CPS-Kanal 80 und auf der anderen Seite zu der Hochleistungs-Verbindung 261. Pakete, die in den IPIC 90 kommen und für andere Ports auf dem SOC 10 bestimmt sind, werden im wesentlichen als Pakete behandelt, die zu jedem beliebigen anderen Port auf dem SOC 10 kommen. Aufgrund der Anwesenheit jedoch des Modul-Headers für gestapelte Kommunikationen jedoch, beinhaltet der IPIC 90 einen flachen Speicher, um die eingehenden Pakete zu speichern. Der Modul-Header wird beim Eingang zerlegt; der Modul-Header wird wie zuvor erwähnt an das Paket von dem Quell-Modul angehängt. Der IPIC 90 führt dann die Adressauflösung durch. Die Adressauflösung ist verschieden für Pakete, die in den IPIC 90 kommen, als für Pakete, die in die EPICs 20 oder GPICs 30 kommen, und wird nachstehend erörtert. Nach der Adressauflösung werden die Ziel- oder Ausgangsports bestimmt und das Port-Bitmap konstruiert. Das Paket wird dann in Zellen unterteilt und die Zellen werden zu der MMU 70 über den CPS-Kanal 80 gesendet. Die Zellendaten werden über den C-Kanal 81 gesendet und die geeigneten Nachrichten, einschließlich des Modul-Headers, werden über den P-Kanal 82 gesendet.
  • Für den Fall, in dem Zellen in andere Ports des SOC 10 kommen und an die Hochleistungsschnittstelle 261 gerichtet sind, werden die Zellen auf den CPS-Kanal 80 von dem geeigneten Eingangsport gesetzt, auf den sie von dem IPIC 90 empfangen werden. Die Zellen werden zurück in Pakete in dem NBP 92 geschachtelt und werden daher nicht von der MMU 70 behandelt. Der NBP ist wie zuvor bemerkt ein On-Chip-Speicher, der für die Benutzung nur durch den IPIC 90 bestimmt ist. Der NBP kann getrennt abgetrennter Speicher oder ein reservierter Speicherbereich innerhalb des CBP 50 sein. Die Modul-Header-Information, die an das Paket von der Quelle angehängt wird, wird von dem IPIC 90 von dem P-Kanal empfangen. Der Modul-Header beinhaltet das Modul-ID-Bitmap, COS, Gespiegelt-Zu-Port-Switch-Information, Trunk-Gruppen-ID, usw. Das konstruierte Paket wird dann an die Hochleistungsschnittstelle 261 gesendet. Es soll angemerkt werden, dass üblicherweise zwei Vorrichtungen einen Zugriff auf die Schnittstelle 261 wünschen. Beispielsweise zeigt die 26 eine Konfiguration, in der der IPIC 90(1) und IPIC 90(2) den Zugang zu der Schnittstelle 261 aushandeln müssen. In diesen Konfigurationen der 27A und 27B muß der geeignete IPIC 90 über den Zugriff auf die Schnittstelle 261 mit dem geeigneten ICM 271 entscheiden. Der Entscheider ist beispielsweise in 28 als Entscheider 93 dargestellt.
  • Die 28 ist ein Überblick über die Funktionselemente eines IPIC 90. Zusätzlich zu den Tabellen 91, dem NBP 92 und dem Entscheider 93, beinhaltet der IPIC 90 eine Fluß-Steuer-Logik 94, die mit dem ICM 271 verbunden ist, um es dem IPIC 90 zu ermöglichen, bei von dem ICM eingehendem Verkehr den Betrieb aufrecht zu erhalten. Unter Verwendung eines Pause-/Wiederaufnahme-Signals, tauschen das ICM und die Fluß-Steuer-Logik 94 Pause-/Wieder-Aufnahme-Signale aus, um auf geeignete Weise den Fluß zu steuern. In Situationen, in denen der ICM-Speicher voll ist, wendet der ICM das Pause-/Wieder-Aufnahme-Signal als Pause an, um dem IPIC 90 mitzuteilen, keine weiteren Pakete an den ICM 271 zu senden. In den Fällen, in denen der IPIC 90 Pakete von dem ICM 271 empfängt, dann wird, wenn der IPIC nicht länger Pakete empfangen kann, weil beispielsweise der CBP 50 und der GBP 60 voll sind, der IPIC das Pause-/Wiederaufnahme-Signal als ein Pause-Signal für den ICM anwenden. Sobald es angezeigt ist, den Fluß in eine der Richtungen wieder aufzunehmen, wird das Signal zurückgenommen, um den Verkehrs-Fluß wiederaufzunehmen. Es soll angemerkt werden, dass wenn der ICM voll ist und weiterhin Pakete von dem CPS-Kanal 80 bei dem IPIC 90 ankommen, der zuvor erörterte HOL-Blockierungs-Verhinderungs-Mechanismus aktiviert wird.
  • Unter Bezugnahme wieder auf die Funktion des Entscheiders 93, steuert der Entscheider 93 die Bandbreite auf der Hochleistungsschnittstelle 261. Unter Verwendung eines Konfigurationsregisters kann die Priorität zur Behandlung der Pakete von dem IPIC 90 zu dem ICM 271 geschaltet werden und umgekehrt, nach vorbestimmten Zeitdauern. In Situationen, in denen es keine ICM gibt und in denen der IPIC 90(1) mit dem IPIC 90(2) kommuniziert, würde eine Master-CPU, die die Funktionen in einer gestapelten Konfiguration steuert, den Entscheider 93 und die Fluß-Steuer-Logik 94 steuern. Die Master-CPU würde eine der CPU 52 der Mehrzahl von CPUs 52 sein, die einer Mehrzahl von SOC-Switchess 10 zugeordnet sind.
  • Es soll ebenso angemerkt werden, dass der NBP-Manager 95 das Speichermanagment für den NBP 92 steuert. Der NBP-Manager 95 führt daher viele Funktionen aus, die spezifisch für den IPIC 90 sind, aber die ähnlich zu der Funktion der MMU 70 in Bezug auf das SOC 10 sind. Es gibt jedoch bemerkenswerte Unterschiede dahingehend, dass es keine CBP/GBP-Zulassungs-Logik gibt, da der NBP 92 als ein Speicher-Puffer-Pool behandelt wird.
  • Pakete, die bei dem IPIC 90 von der Hochleistungsschnittstelle 261 ankommen, werden darauf immer einen Modul-Header aufweisen. Der Modul-Header wird von dem Quell-SOC eingefügt, wenn das Paket gesendet wird, auf welchen als Source-Switch Bezug genommen wird. Die Felder des Modul-Headers sind wie folgt:
    C Bit – 1 Bit lang – Steuerbit – Das Steuerbit identifiziert, ob dies ein Steuerframe oder ein Datenframe ist. Dieses Bit ist zu 1 für einen Steuerframe und zu 0 für einen Datenframe gesetzt.
    Betriebscodes – 3 Bit lang – Betriebscodes werden verwendet, um den Pakettyp zu identifizieren. Wert 00 – identifiziert, dass das Paket ein Unicast-Paket ist und der Ausgangsport einzig durch das Modul-Id-Bitmap (nur ein Bit wird in diesem Feld gesetzt sein) und die Ausgangsportnummer identifiziert ist. Wert 01 – identifiziert, dass das Paket eine Rundsendung ist oder ein Ziel-Look-Up-Fehler (DLF) und an mehrere Ports auf dem gleichen Modul oder mehrere Ports auf verschiedenen Modulen gerichtet ist. Der Ausgansport ist nicht ein gültiges Feld in diesem Fall. Wert 02 – identifiziert, dass das Paket ein Multicast-Paket ist und an mehrere Ports adressiert ist. Wert 03 – identifiziert, dass das Paket ein IP-Multicast-Paket ist und an mehrere Ports adressiert ist.
    TGID – 3 Bit lang – TGID-Bits – TGID identifiziert den Trunk-Gruppen-Identifizierer des Quell-Ports. Dieses Feld ist nur gültig, wenn das T-Bit gesetzt ist.
    T-Bit – 1 Bit lang – T-Bit – Wenn dieses Bit gesetzt ist, dann ist TGID ein gültiges Feld.
    MT-Modul-Id-Bitmap – 5 Bit lang – MT-Modul-Id ist die „gespiegelt zu"-Modul-Id. Dieses Feld wird verwendet, um ein Paket zu einem „gespiegelt zu"-Port zu senden, der sich auf einem entfernten Modul befindet. Dieses Feld ist nur gültig, wenn das M-Bit gesetzt ist.
    M Bit – 1 Bit lang – M-Bit – Wenn dieses Bit gesetzt ist, dann ist MT-Modul-Id ein gültiges Feld.
    Datenlänge – 14 Bit lang – Datenlänge – Identifziert die Datenlänge des Pakets. CoS – 3 Bit lang – CoS-Bits – Identifizieren die CoS-Priorität dieses Frames.
    CRM – 1 Bit lang – CoS-Re-Map-Bit – Dieses Bit wird verwendet, um den CoS erneut zuzuordnen auf der Grundlage der Quell-Modul-Id + Quell-Port-Nummer. Dieses Merkmal ist für Module nützlich, die keine Fähigkeit zur CoS-Zuordnung haben.
    Modul-Id-Bitmap – 32 Bit lang – Modul-Id-Bitmap – Bitmap von allen Modulen, die anzunehmenderweise das Paket empfangen.
    Neue IP-Prüfsumme – 16 Bit lang – Neue IP-Prüfsumme – Dies wird hauptsächlich für den IP-Multicast-Switchesd-Verkehr verwendet.
    PFM – 2 Bit lang – Port-Filter-Mode-Bits; dies ist der Port-Filter-Modus für den Quellport.
    Quellport – 6 Bit lang – Quellport ist die Quellport-Nummer des Pakets.
    CRC-Bits – 2 Bit lang – CRC-Bits – Dies sind die gleichen CRC-Bits von der P-Kanal-Nachricht, die hier kopiert werden. Wert 0x01 ist das Anhängen-CRC-Bit. Wenn es gesetzt ist, dann soll der Ausgangsport die CRC an das Paket anhängen. Wert 0x02 – Ist das Regeneriere-CRC-Bit. Wenn dieses Bit gesetzt ist, dann soll der Ausgangsport den CRC regenerieren. Wert 0x00 – kein Wechsel beim CRC. Wert 0x03 – nicht verwendet.
    Quell-Mod-Id – 5 Bit lang – Quell-Mod-Id – Ist die Quellmodul-Id des Pakets.
    Daten – N Bit lang – Datenbytes – Die Datenbytes können den CRC enthalten. Es müssen die CRC-Bits untersucht werden, um herauszufinden, ob die Daten den CRC enthalten. Wenn die CRC-Bits zum Anhängen des CRC gesetzt sind, dann enthalten die Daten nicht CRC-Bytes. Wenn die CRC-Bits zum Regenerieren des CRC gesetzt sind, dann enthalten die Daten CRC-Bytes, aber es ist keine gültige CRC. Wenn der CRC-Wert 00 ist, dann enthalten die Daten CRC und es ist ein gültiger CRC.
    CRC von (Modul-Header + Daten) – 4 Bit lang – CRC-Wert einschließlich der Daten und des Modul-Headers.
  • Damit der IPIC die Adressauflösung geeignet durchführen kann, müssen zahlreiche Tabellen in die Tabellen 91 eingefügt werden. Diese Tabellen beinhalten eine 802.1q-VLAN-Tabelle, eine Multicast-Tabelle, eine IP-Multicast-Tabelle, eine Trunk-Gruppen-Bitmap-Tabelle, eine Priorität-Auf-COS-Schlangen-Zuordnungs-Tabelle und eine Port-Zu-COS-Zuordnungs-Tabefle. Die ARL-Logik für den IPIC 90 unterscheidet sich von der zuvor erörterten EPIC/GPIC-Adress-Auflösungs-Logik aus zahlreichen Gründen. Zuerst beginnt das Paket nach den 16 Bytes des Modul-Headers; der Modul-Header enthält Informationen im Bezug darauf, ob das Paket ein Steuerframe oder ein Datenframe ist. Steuerframes werden immer an die CPU gesendet, nachdem der Modul-Header zerlegt worden ist. Der Modul-Header enthält die Trunk-Gruppen-Identifizierungs-Information, die Gespiegelt-Zu-Port-Information, die Ausgangsportinformation, usw. Jedes Mal, wenn das C-Bit in dem Modul-Header gesetzt ist, wird das Paket zu der CPU gesendet. Das C-Bit und die TGID-Bits sind in dem Modul-Header vorgesehen, um das Trunkieren quer über die Module zu unterstützen. Das Spiegeln wird von dem MP-Modul-ID-Bitmap und dem M-Bit gesteuert. Das CRM- oder COS-Wiederzuordnungs-Bit ermöglicht die erneute Zuordnung des COS auf der Grundlage der Quell-Modul-ID und der Quell-Port-Nummer. Dieses erneute Zuordnen kann in Situationen erforderlich werden, in denen Switchess von verschiedenen Verkäufern geliefert werden.
  • Unter Bezugnahme auf die 29, ist die Adressauflösung für ein Paket, das von einer Hochleistungsschnittstelle 271 in den IPIC 90 kommt, wie folgt:
    Das Paket, das von der Schnittstelle 261 zu dem IPIC 90 kommt, wird in einem flachen Puffer 96 gespeichert, in dem die IPIC-ARL-Logik 97 bei Schritt 29-1 bestimmt, ob der GBP 60 voll ist. Wenn dies so ist, dann wird das Paket bei Schritt 29-2 fallengelassen. Wenn dies nicht so ist, bestimmt die Logik 97 bei Schritt 29-3, ob das M-Bit in dem Modul-Header gesetzt ist und überprüft ebenso, ob die Modul-ID für das „gespiegelt zu"-Modul gleich der vorliegenden Modul-ID ist. Wenn dies so ist, wird der gespiegelte Port von dem Port-Spiegel-Register für das SOC 10 erhalten und ein Bit wird in dem Port-Bitmap gesetzt, das dem gespiegelten Port entspricht und das Paket wird bei Schritt 29-4 an den gespiegelten Port gesendet. Wenn im Bezug auf das M-Feld die Antwort nein ist, prüft die ARL-Logik 97 nach dem Senden des Pakets an den gespiegelten Port bei Schritt 29-5, ob das C-Bit gesetzt ist. Wenn dies so ist, wird das Paket bei Schritt 29-6 zur CPU gesendet. Das CPU-Bit in dem Port-Bitmap wird ebenso gesetzt, um sicherzustellen, dass das Paket zu der CPU gesendet wird. Wenn das C-Bit nicht gesetzt ist oder nachdem das Paket auf geeignete Weise zu der CPU gesendet worden ist, bestimmt die ARL-Logik 97 bei Schritt 29-7, ob das Paket ein Unicast-Paket ist oder nicht. Wenn dies so ist, wird das Paket auf geeignete Weise auf den CPS-Kanal 80 gesetzt, wobei das Bit, das dem Ausgangsport entspricht, auf geeignete Weise in dem Port-Bitmap gesetzt wird. Wenn das T-Bit gesetzt ist, dann wird das letztendliche Bitmap auf der Grundlage des Trunk-Gruppen-Bitmaps und der TGID gesetzt. Wenn das CRM-Bit gesetzt ist, dann wird die Port-Zu-COS-Zuordnungs-Tabelle durchsucht, um die geeignete COS-Schlange zu bekommen. Im anderen Fall wird die COS von dem Modul-Header aufgenommen. Dieser Sendeschritt geschieht bei Schritt 29-8. Wenn bestimmt wird, dass das Paket kein Unicast-Paket ist, bestimmt dann die IPIC-ARL-Logik 97 bei Schritt 29-9, ob das Paket ein Multicast-Paket ist. Diese Unterscheidung wird wie zuvor erwähnt, durch Untersuchen der Zieladresse gemacht, um zu sehen, ob es eine Klasse-D-Adresse ist. Die Klasse-D-Klassifikation ist eine, in der die ersten drei MSBs der Multicast-IP-Adresse zu 1 gesetzt sind. Wenn bestimmt wird, dass es in der Tat ein IP-Multicast-Paket ist, dann werden zwei getrennte und gleichzeitige Verfahren durchgeführt. In Schritt 29-10 wird eine Suche in der IP-Multicast-Tabelle mit der Quell-IP-Adresse und der Ziel-IP-Adresse als Suchschlüssel durchgeführt. Wenn es einen Treffer oder eine Übereinstimmung gibt, dann wird die TTL in dem IP-Header mit dem TTL-Grenzwert bei Schritt 29-11 verglichen. Wenn die TTL unter dem Grenzwert liegt, wird das Paket zu der CPU gesendet. Wenn die TTL nicht unterhalb des TTL-Grenzwerts ist, dann wird das L3-Port-Bitmap erhalten und es wird bestimmt, ob das L3-Port-Bitmap ein Mitglied des Aktiver-Port-Registers entsprechend der COS für das Paket ist. Die neue IP-Prüfsumme von dem Modul-Header wird auf dem P-Kanal gesendet und das Paket wird auf dem C-Kanal gesendet. Dieses Verfahren ist als L3-Switching-Schritt 29-13 dargestellt. Wenn die Suche von Schritt 29-10 nicht zu einem Treffer führt, dann wird das Paket bei Schritt 29-12 zu der CPU gesendet und Bit 8 der CPU-Betriebscodes wird gesetzt.
  • Das zweite Verfahren, das nach der Bestimmung, ob das Paket ein Multicast-Paket ist oder nicht, durchgeführt wird, beinhaltet eine Ebene-2-Vermittlung. Das SOC 10 ermöglicht daher eine hybride Multicast-Behandlung. D. h., dass daher das gleiche Paket auf Ebene 2 und Ebene 3 vermittelt bzw. geSwitchesd werden kann. Bei Schritt 29-14 wird nach Schritt 29-9 bestimmt, dass das Paket ein Multicast-Paket ist und untersucht daher die ARL-Logik 97 die PFM-(Port-Filter-Modus)-Bits des Modul-Headers. Wenn der PFM zu 0 gesetzt ist, dann wird das Paket an alle Ports weitergeleitet. Das Port-Bitmap wird von der Port-VLAN-Tabelle erhalten, der geeignete Ausschluß des IPIC-Ports wird gemacht, der Trunk-Port wird auf geeignete Weise identifiziert, die COS wird aufgenommen und das Paket wird bei Schritt 29-15 auf geeignete Weise weitergleitet. Wenn der PFM nicht zu 0 gesetzt ist, dann wird die Mulitcast-Tabelle bei Schritt 29-16 unter Verwendung des Zielschlüssels durchsucht, der aus der Ziel-Adresse und der VLAN-ID gebildet wird. Wenn es keine Übereinstimmung gibt, dann untersucht die Logik 97 noch einmal den PFM bei Schritt 29-17 für den Eingangsport. Wenn der PFM zu 2 gesetzt ist, wird das Paket fallengelassen. Wenn der PFM nicht zu 2 gesetzt ist, wird bei Schritt 29-19 das Port-Bitmap von der VLAN-Tabelle erhalten und das Paket wird bei Schritt 29-20 weitergeleitet. Wenn die Zielsuche des Schritts 29-16 ein Treffer ist, wird das Port-Bitmap von der Multicast-Tabelle bei Schritt 29-18 erhalten und das Paket bei Schritt 29-20 weitergeleitet. Bei Schritt 29-20 werden die geeigneten Port-Register auf der Grundlage des T-Bit, des COS, des Spiegelns usw. gesetzt und das Paket wird zu den geeigneten Zielen weitergeleitet. Diese Konfiguration ermöglicht wie zuvor erwähnt eine einzigartige hybride Multicast-Behandlung, sodass ein Multicast-Paket auf geeignete Weise bei Ebene 2 und/oder Ebene 3 vermittelt werden kann.
  • Unter Bezugnahme noch einmal auf 28 wird der Zugang zu dem NBP 92 durch den NBP-Manager 95 gesteuert. Pakete, die in den IPIC 90 auf der Hochleistungsschnittstelle 261 kommen, werden wieder als erstes in dem flachen Puffer 96 gespeichert, der beispielsweise 3 Zellen tief sein kann. Der Modul-Header, der 16 Byte lang ist, und eine vorbestimmte Anzahl von zu Paketen verarbeiteten Zellen (wie beispielsweise 14 Byte) kommen herein und die oben erörterte Adressauflösung wird von der ARL-Logik 97 durchgeführt. Die VLAN-Tabelle, die Multicast-Tabelle und die IP-Multicast-Tabelle, die die Tabellen 91 bilden, werden für verschiedene Look-Ups verwendet. Es werden keine ARL-Tabellen zur Verfügung gestellt, da der Modul-Header über die Entfernter-Port-Nummer Informationen in Bezug auf Unicast, Multicast, usw. zur Verfügung stellt. Die Entfernter-Port-Nummer ist die Modul-ID zuzüglich der Ziel-Port-Nummer. Da die Ziel-Port-Nummer verfügbar ist, ist eine ARL-Tabelle, wie sie in dem EPICs 20 und dem GPICs 30 verwendet wird, unnötig. Die PFM-Bits des Modul-Headers werden gemäß dem 802.1p-Standard definiert und ermöglichen die Adressauflösung für Multicast, wie es oben erörtert ist. Daher werden Pakete die an der Schnittstelle 261 eingehen, in dem flachen Puffer zur Adressauflösung angeordnet. Nach der Adressauflösung wird das Paket auf den CPS-Kanal 80 gesetzt, wo es zu der MMU 70 zur geeigneten Speicherentscheidung und zur Speicherung gesendet wird, bevor es von dem geeigneten Ausgang aufgenommen wird. Pakete, die an den IPIC 90 gerichtet sind und von den EPICs 20 und dem GPICs 30 kommen, werden direkt auf den CPS-Kanal 80 in den NBP 92 gesendet. Durch die Verwendung des NBP-Managers 95, sendet der IPIC 90 geeignete S-Kanal-Nachrichten in Bezug auf den Betrieb des NBP 92 und des IPIC 90 im allgemeinen. Solche S-Kanal-Nachrichten können enthalten NBP-Voll, GBP-Voll, HOL-Benachrichtigung, COS-Benachrichtigung, usw. Der NBP-Manager 95 verwaltet daher den FAP (Freie-Adresszeiger-Pool) für den NBP, behandelt den Zellentransfer für den NBP, weist Zellenzeiger für die eingehenden Zellen zu, fügt die Zellen zu Paketen zusammen, schreibt die Paketzeiger in die Paket-FIFO 98 und überwacht die Aktivitäten der Planungseinrichtung 99. Die Planungseinrichtung 99 arbeitet zusammen mit dem NBP 92 der Paket-FIFO 98 und dem Entscheider 93, um das nächste Paket zur Übertragung auf der Hochleistungsschnittstelle 261 zu planen. Die Planungseinrichtung 99 bewertet die COS-Schlangen in der Paket-FIFO 98 und wenn Pakete in der Paket-FIFO existieren, dann wird das Paket für die Übertragung auf der Hochleistungs-Schnittstelle 261 aufgenommen. Die Übertragung wird von dem Status des Zuteilungssignals in Bezug auf den ICM gesteuert, wie es von dem Entscheider 93 gesteuert wird. Wie es in 28 gezeigt ist, muß die Planungseinrichtung 99 auf geeignete Weise acht COS-Schlangen in der Paket-FIFO 98 behandeln. Geeignetes COS-Management bestimmt, welches das nächste Paket sein wird, das von der Prioritäts-Schlange aufgenommen wird. Die COS-Verwaltung wird durch einen COS-Manager (nicht dargestellt) durchgeführt, der ein Teil der Planungseinrichtung 99 ist. Die Planungseinrichtung 99 kann daher so programmiert sein, dass sie verschiedene Typen von Schlangen-Planungs-Algorithmen ermöglicht, soweit erforderlich. Zwei Beispiele von Planungs-Algorithmen, die verwendet werden können, sind erstens streng prioritätsbasiertes Planen und zweitens gewichtetes prioritätsbasiertes Planen. Beide dieser Algorithmen und zugeordnete Register können auf geeignete Weise programmiert werden.
  • Wenn die Planungseinrichtung 99 ein Paket zum Senden aufnimmt, wird der Paketzeiger von der Paket-FIFO 98 erhalten und auf die erste Zelle des Pakets zeigt der Paketzeiger.
  • Der Zellen-Header enthält all die erforderlichen Informationen und der Modul-Header ist ein gültiges Feld darin. Die zu übertragenden Daten sind von dem 16 Byte an verfügbar und das Modul-Header-Feld wird nicht als gültiges Feld betrachtet. Die geeignete Verkettung der Zellen wird sichergestellt, um sicherzustellen, dass vollständige Pakete wieder zusammengefügt werden und auf der Hochleistungsschnittstelle 261 gesendet werden.
  • Störimpulsfreies Vermitteln
  • Die HiGig-Schnittstelle 261, die in 28 gezeigt ist und oben erörtert worden ist, ist ein Hochgeschwindigkeitsdatenverbindungsbus zur Verwendung beim Aufbauen von Desktop-Switchess für mittlere bis große Unternehmen, die entweder modular (auf der Grundlage eines Chassis) oder stapelbar sind. Sie ist zur Verwendung von Hochgeschwindigkeits-Serialisierungs/Deserialisierungs-(SerDes)-Chips bzw. Hochgeschwindigkeits-Seriell-Parallel-Wandler/Parallel-Seriell-Wandler zu verwenden. Die Datenschnittstelle ist eine 32 Bit Vollduplexverbindung. Der SerDes-Chip serialisiert die parallelen 32-Bit-Daten in einen nibble-breiten seriellen Strom, der bis zu 10 Gb/s beträgt. Dieser serielle Strom wird 8B/10Bcodiert, sodass die 32 Bit breite parallele Schnittstelle Daten bis zu 312.5MB/s übertragen muß.
  • Um die Frequenzen zu begrenzen, die auf dem PC-Board bei einer maximalen Übertragungsrate von 312.5MB/s vorhanden sind, wird ein Double-Data-Rate-Type für den Transfer verwendet. Dies bedeutet einfach, dass die Daten auf beiden Flanken des Taktsignals TXCLK übertragen werden. Die Zeiterfordernisse für die Einrichtung und das Halten werden dann in Bezug auf beide Flanken von TXCLK spezifiziert. Der TXCLK ist in 49 dargestellt. TXCLK wird von der HiGig-Logik von dem SerDes-Chip geliefert. TXCLK besitzt eine Frenquenz von 156.25MHz.
  • Da ein Takt mit der doppelten TXCLK-Frequenz nicht verfügbar ist, muß der 312.5MHz-Takt entweder mit einer PLL oder einer anderen Takterzeugungsschaltung erzeugt werden oder die Daten müssen direkt von TXCLK an beiden Flanken getaktet werden. PLL- und/oder Takterzeugungslösungen führen zahlreiche Risiken und Komplexitäten zu der Konstruktion hinzu, sodass die Erfindung ein Verfahren zum Erzeugen des erforderlichen DDR-Schaltens in einer störimpulsfreien bzw. glitchfreien Weise ohne Benutzung einer PLL oder anderen komplexen Takterzeugungsschaltungen schafft.
  • Wenn ein paralleler Bus von einem Datenwert zu einem anderen schaltet, gibt es die Möglichkeit, dass die Ausgänge einen Störimpuls bzw. Glitch erzeugen, wenn nicht die Ausgänge direkt von den Registern kommen. Wenn ein Ausgang nicht direkt von einem Register kommt, dann kann er im allgemeinen durch einen Multiplexer kommen. Multiplexer können Störimpulse erzeugen, wenn sie schalten. Wenn diese Störimpulse durch einen Ausgangstreiber weitergeführt werden, kann von dem Betreiber beträchtliches EMI (elektromagnetische Interferenz)-Rauschen ausgestrahlt werden. Da die Breite der erzeugten Störimpulse extrem gering sein kann, ist das Frequenzspektrum dieser Störimpulse sehr breit. Daher kann ein sehr breitbandiges EMI-Rauschen erzeugt werden.
  • Da der HiGig-Datenbus auf beiden Flanken von TXCLK (in einem Verfahren der doppelten Datenrate) betrieben werden muß, müssen die Ausgangsdaten durch eine Multiplexer-Schaltung geleitet werden, bevor sie zu den letztendlichen Ausgangstreibern geleitet werden. Es gibt keinen Weg, dass die Daten direkt von den Registern kommen. Somit muß man sich der Möglichkeit der Störimpulse zuwenden.
  • Um das inherente Störimpulsproblem besser zu verstehen, das bei Multiplexern auftritt, werden Verfahren für die Logik in Multiplexer-Schaltungen im allgemeinen betrachtet. Für einen gegebenen Multiplexer mit Dateneingängen a und b muß der Multiplexer ein Auswahlsignal haben, welches später als muxsel bezeichnet wird, wobei der Ausgang als z bezeichnet wird. Die von dem Multiplexer implementierte Logik ist:
    Z = (muxsel UND a) ODER ((NICHT muxsel) UND b);
  • Gewöhnliche Implementierungen eines Multiplexers können einen Störimpuls erzeugen, wenn muxsel wechselt, auch wenn a und b statisch sind. In der Literatur nach dem Stand der Technik wird auf diese Störimpulse als Risiken Bezug genommen. Diese Art von Risiken werden logische Risiken genannt, da deren Vorhandensein in einer Schaltung von der aktuellen Implementierung auf Gate-Ebene abhängt. Es gibt zwei Typen von Logik-Risiken, die in einer gegebenen Schaltung vorhanden sein können. Die gewöhnliche Multiplexer-Implementierung zeigt statische Logik-Risiken. Diese Risiken werden von dem Phänomen von zwei Signalen verursacht, die komplementäre Ruhezustandswerte hat, die vorübergehend den gleichen Wert haben. In dem Fall des Multiplexers sind die zwei betreffenden Signale muxsel und (NICHT muxsel).
  • Es wird eine Situation betrachtet, wenn sowohl a als auch b logisch 1 sind und sich nicht verändern. Dann geht muxsel von 1 zu 0 über. Wenn der Übergang von (NICHT muxsel) von 0 zu 1 geringfügig später als der Übergang von muxsel geschieht, dann gibt es einen Moment, in dem weder muxsel noch (NICHT muxsel) 1 ist. Der Ausgang Z wird vorübergehend von 1 zu 0 gehen, wobei er einen Störimpuls erzeugt.
  • Dieses Logik-Risiko kann entfernt werden, indem der zusätzliche Term (a UND b) der Logik-Gleichung für den Multiplexer hinzugefügt wird. Die entstehende Multiplexer-Logik-Gleichung ist:
    z = (muxsel UND a) ODER ((NICHT muxsel) UND b) ODER (a UND b);
  • Der entstehende Multiplexer ist eine allgemein verstandene und verwendete Schaltung. Auf ihn wird üblicherweise als „störimpulsfreier" Multiplexer Bezug genommen. In der vorliegenden Anmeldung werden folgende Bezugnahme auf einen störimpulsfreien Multiplexer so verstanden, dass sie sich auf diesen Typ von Multiplexer-Schaltung beziehen, die Logik-Risiken eliminiert.
  • Es gibt jedoch einen zusätzlichen Typ von Risiken, die diese Schaltung nicht eliminieren kann. Diese Klasse von Risiken wird Funktionsrisiko genannt. Es tritt auf, wenn mehr als ein Eingang zu der Schaltung gleichzeitig wechselt. In dem Fall von sogenannten störimpulsfreien Multiplexern, deren Logik-Gleichung oben angegeben ist, gibt es viele möglichen Funktionsrisiken.
  • Als ein Beispiel soll das folgende Szenario betrachtet werden. Eingang a ist eine statische 1, b geht von 1 zu 0 über und muxsel geht von 0 zu 1 über. In dieser Situation wird der Ausgang z, wenn b geringfügig vor muxsel übergeht, vorübergehend von 1 zu 0 und dann zurück zu 1 übergehen. Dieser nach unten gehende Störimpuls ist ein Funktionsrisiko. Es gibt keine Möglichkeit, diesen Typ von Risiko aus der Schaltung zu entfernen. Die einzige Option ist es, die Anzahl von gleichzeitig wechselnden Eingängen auf 1 zu begrenzen.
  • Da die HiGig-Schnittstelle 261 Transfers vom Typ doppelte Datenrate (DDR) verwendet, müssen die parallelen Datenausgänge aus Registern kommen, aber durch kombinatorische Logik erreicht werden, bevor sie die Ausgangstreiber erreichen. Daten müssen sowohl im Bezug auf positive und negative Flanken von TXCLK getrieben werden. Um dies zu tun, müssen die "geraden" Daten in einem Register gespeichert werden, das auf der positiven Flanke von TXCLK getacktet wird und die „ungeraden" Daten müssen in einem Register gespeichert werden, das mit der negativen Flanke getaktet wird. Die Logik muß alternativ gerade und ungerade Daten von den zwei Registern bei aufeinanderfolgenden Phasen von TXCLK auswählen. Diese Auswahl kann mit einem störimpulsfreien 2:1-Multiplexer erreicht werden. Ein derartiger Multiplexer ist jedoch, wie oben beschrieben, anfällig für Funktionsrisiken. Nachdem sowohl muxsel als auch die Daten zur selben Zeit wechseln, werden Funktionsrisiken vorhanden sein.
  • Die vorliegenden Erfindung offenbart eine Schaltung, die jegliche Logik- und Funktions-Risiken bei DDR-geschalteten Datenausgängen vermeidet. Der Ansatz verwendet zwei Ebenen von störimpulsfreien 2:1-Multiplexern. Die Daten fließen durch die Multiplexer so, dass die zweite Multiplex-Ebene (d. h. am nächsten zu den Ausgangstreibern) alternativ Eingänge auswählt, die auf die Ausgänge gemultiplext werden sollen. Dies ist in 48 dargestellt.
  • Diese Auswahl wird so getimed, dass der Multiplexer 302a der zweiten Ebene zu jedem gegebenen Moment nur einen Eingang von dem Multiplexer 300a, 300b der ersten Ebene auswählt, dessen Ausgänge keinen Störimpuls erzeugen. Zu diesem Moment erzeugt der andere Multiplexer der ersten Ebene ein Funktionsrisiko. Es wird jedoch nicht der Multiplexer ausgewählt, der den Störimpuls erzeugt, sodass kein Störimpuls zu den Ausgängen des Multiplexers der zweiten Ebene geleitet wird. Der Ansatz „maskiert" daher im wesentlichen die unvermeidbaren Funktionsrisiken und eliminiert Logik-Risiken unter Verwendung sogenannter störimpulsfreier Multiplexer in den ersten und zweiten Stufen des Multiplexens.
  • In dem in 48 dargestellten Logik-Diagramm werden Signalen, die von dem Q der Register 306a bis 306e kommen, der Präfix r_(beispielsweise r_cd) gegeben. Signalen, die von dem Ausgang eines störimpulsfreien Multiplexers 300a, 300b, 302a kommen, wird der Präfix m_(beispielsweise m_cd) gegeben.
  • Die Störimpulse maskierende Funktion der zwei Ebenen von Mulitplexern ist in dem Timing-Diagramm dargestellt, das in 49 gezeigt ist. Potentielle Funktionsrisiken sind bei m_ab und m_cd dargestellt. Wie es jedoch in dem Timing-Diagramm ersehen werden kann, wählt r_ab_vs_cd, welches das Multiplexer-Auswahlsignal für den Multiplexer der zweiten Stufe ist, niemals den Eingang (m_ab oder m_cd) aus, der ein potentielles Funktionsrisiko hat.
  • Stattdessen wählt der Multiplexer der zweiten Stufe den Eingang (m_ab oder m_cd) aus, der frei von Risiken ist. Während dieser risikofreien Zeit können von dem Multiplexer der ersten Stufe keine Störimpulse erzeugt werden. Logik-Risiken können nicht erzeugt werden, da diese Multiplexer sogenannte störimpulsfreie Multiplexer sind. Funktionsrisiken können nicht erzeugt werden, da nur ein Eingang zu dem Multiplexer, d. h. dem ausgewählten Multiplexer, r_a_vs_b zu diesem Zeitpunkt gerade wechselt. Die Dateneingänge zu den Multiplexern (r_a/r_b und r_c/r_d) sind stabil.
  • Als solche sind die Multiplexer zu dem Punkt immer stabil, an dem sie den Funktionsrisiken ausgesetzt werden. Das Ergebnis ist, dass der letztendliche Ausgang m_ab_cd immer risikofrei ist und wechseln wie erfordert bei beiden Flanken von TXCLK. Die Verwendung der oben beschriebenen Konfiguration eliminiert die Notwendigkeit, einen intern erzeugten 312.5MHz-Takt oder einen 312.5MHz-Takt auf dem PC-Port zu erzeugen und schafft eine äquivalente Datenrate im Vergleich zu einem 312.5MB/s-Takt mit Schaltung nur bei positiver Flanke.
  • Die oben erörterte Konfiguration der Erfindung ist in einem bevorzugten Ausführungsbeispiel auf einem Halbleitersubstrat, wie beispielsweise Silicium, mit geeigneten Halbleiterherstellungstechniken und auf der Grundlage eines Schaltungs-Lay-out verwirklicht, welches auf der Grundlage der oben erörterten Ausführungsbeispiele für Fachmänner auf diesem Gebiet ersichtlich sind. Ein Fachmann auf dem Gebiet der Technik des Halbleiter-Designs und der Halbleiter-Herstellung würde in der Lage sein, die verschiedenen Module, Schnittstellen, Tabellen, Puffer, usw. der vorliegenden Erfindung auf einem einzigen Halbleitersubstrat zu implementieren, auf der Grundlage der oben erörterten Architekturbeschreibung. Es würde ebenso innerhalb des Umfangs der Erfindung liegen, die offenbarten Elemente der Erfindung in diskreten Elektronikkomponenten zu implementieren, wobei auf diese Weise Vorteil von den funtionalen Aspekten der Erfindung gezogen wird, ohne die Vorteile durch die Verwendung eines einzigen Halbleitersubstrats zu maximieren.

Claims (5)

  1. Netzwerk-Switch mit einem Internet-Port-Schnittstellen-Controller, wobei der Internet-Port-Schnittstellen-Controller umfaßt: einen Speicher (92); und eine Hochleistungsschnittstelle (261) zum Kommunizieren mit anderen Switches und Komponenten durch die Übertragung von Datenpaketen, die in dem Speicher (92) enthalten sind; wobei die Hochleistungsschnittstelle (261) einen Datenverbindungsbus umfaßt, bei dem Daten sowohl bei einer steigenden Flanke als auch bei einer fallenden Flanke eines Taktsignals übertragen werden und wobei der Datenverbindungsbus Ausgangstreiber und eine Multiplex-Schaltung aufweist, die mit den Ausgangstreibern verbunden ist, dadurch gekennzeichnet, daß die Multiplex-Schaltung zwei Ebenen von störimpulsfreien Multiplexern aufweist, wobei wenigstens ein Ausgangssignal einer anfänglichen ersten Ebene von störimpulsfreien Multiplexern (300) in eine zweite Ebene von störimpulsfreien Multiplexern (302) eingegeben wird, die wenigstens einen störimpulsfreien Multiplexer (302a) enthält, um die über die Hochleistungsschnittstelle (261) übertragenen Daten zu serialisierer.
  2. Netzwerk-Switch nach Anspruch 1, bei dem die erste Ebene von störimpulsfreien Multiplexern (300) zwei störimpulsfreie Multiplexer (300a, 300b) umfaßt, von denen jeder einen ersten Eingang, einen zweiten Eingang, einen Ausgang und einen Steuereingang aufweist, und die Ebene von zweiten störimpulsfreien Multiplexern (302) einen einzigen störimpulsfreien Multiplexer (302a) umfaßt, der zwei Eingänge, einen Ausgang und einen Steuereingang aufweist; und wobei die erste Ebene von störimpulsfreien Multiplexern (300) Daten von den Datenpaketen empfängt, die in dem Speicher (92) enthalten sind und der Ausgang jedes der zwei störimpulsfreien Multiplexer (300a, 300b) mit einem der beiden Eingänge des einzigen störimpulsfreien Multiplexers (302a) verbunden ist.
  3. Netzwerk-Switch nach Anspruch 2, bei dem die Multiplex-Schaltung darüber hinaus zwei weitere Multiplexer (304a, 304b) umfaßt, von denen jeder zwei Eingangsanschlüsse, einen Ausgangsanschluß und einen Steueranschluß aufweist, wobei die von den Datenpaketen empfangenen Daten in die Eingangsanschlüsse der weiteren Multiplexer (304a, 304b) eingegeben werden und der Ausgangsanschluß eines jeden der weiteren Multiplexer mit dem ersten Eingang und dem zweiten Eingang der störimpulsfreien Multiplexer (300) der ersten Ebene verbunden ist.
  4. Netzwerk-Switch nach Anspruch 3, bei dem die Multiplex-Schaltung darüber hinaus mehrere Flip-Flop-Schaltungen (306a bis 306e) umfaßt, von denen jede einen Eingangsport, einen Ausgangsport und einen Takteingang aufweist, der mit dem Taktsignal verbunden ist, um den Datenfluß zu der ersten Ebene von störimpulsfreien Multiplexern (300) und zu den weiteren Multiplexern (304) zu steuern.
  5. Verfahren zum Senden von Daten über eine Hochleistungsschnittstelle eines Netzwerk-Switches, das die folgenden Schritte umfaßt: es werden parallel Daten über die Hochleistungsschnittstelle gesendet; es werden die parallelen Daten multiplexiert; es wird ein Teil der parallelen Daten in einem ersten Register gespeichert, das mit einer positiven Flanke eines Taktsignals getaktet wird; und es wird ein anderer Teil der parallelen Daten in einem zweiten Register gespeichert, das mit einer negativen Flanke des Taktsignals getaktet wird; wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist: es wird der eine Teil in einen ersten, zu einer ersten Ebene gehörenden störimpulsfreien Multiplexer eingegeben; es wird der andere Teil in einen zweiten, zu einer ersten Ebene gehörenden störimpulsfreien Multiplexer eingegeben; es werden der eine Teil und der andere Teil unter Verwendung der störimpulsfreien Multiplexer der ersten Ebene auf der Basis eines Multiplexerauswahlsignals multiplexiert, das in die störimpulsfreien Multiplexer der ersten Ebene eingegeben wird, und es werden die Ausgangssignale der störimpulsfreien Multiplexer der ersten Ebene zu einem störimpulsfreien Multiplexer einer zweiten Ebene ausgegeben; und es werden basierend auf dem in den störimpulsfreien Multiplexer der zweiten Ebene eingegebenem Multiplexerauswahlsignal die Daten multiplexiert, indem die auf den Ausgang des störimpulsfreien Multiplexers der zweiten Ebene zu multiplexierenden Eingänge abwechselnd ausgewählt werden; wobei jeder der störimpulsfreien Multiplexer der ersten Ebene einen Funktionsstörzustand erzeugt, wenn mehr als ein Eingangssignal des entsprechenden störimpulsfreien Multiplexers der ersten Ebene seinen Zustand gleichzeitig ändert; und wobei der Schritt des Multiplexierens der Daten durch Auswählen abwechselnder Eingangssignale so zeitlich gesteuert ist, daß der störimpulsfreie Multiplexer der zweiten Ebene nur das Eingangssinnal von demjenigen der beiden Multiplexer der ersten Ebene auswählt, der nicht den Funktionsstörzustand erzeugt.
DE60005993T 1999-11-16 2000-11-16 Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung Expired - Lifetime DE60005993T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US528434 1995-09-14
US16578799P 1999-11-16 1999-11-16
US165787P 1999-11-16
US09/528,434 US6850521B1 (en) 1999-03-17 2000-03-17 Network switch
PCT/US2000/030140 WO2001037484A2 (en) 1999-11-16 2000-11-16 Serializing data using hazard-free multilevel glitchless multiplexing

Publications (2)

Publication Number Publication Date
DE60005993D1 DE60005993D1 (de) 2003-11-20
DE60005993T2 true DE60005993T2 (de) 2004-07-29

Family

ID=26861710

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60005993T Expired - Lifetime DE60005993T2 (de) 1999-11-16 2000-11-16 Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung

Country Status (6)

Country Link
US (1) US7366208B2 (de)
EP (1) EP1232604B1 (de)
AT (1) ATE252298T1 (de)
AU (1) AU1580301A (de)
DE (1) DE60005993T2 (de)
WO (1) WO2001037484A2 (de)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000056024A2 (en) 1999-03-17 2000-09-21 Broadcom Corporation Network switch
US6760772B2 (en) 2000-12-15 2004-07-06 Qualcomm, Inc. Generating and implementing a communication protocol and interface for high data rate signal transfer
TW576061B (en) * 2001-08-13 2004-02-11 Via Tech Inc Device and method for load balancing of packet switching
US8812706B1 (en) 2001-09-06 2014-08-19 Qualcomm Incorporated Method and apparatus for compensating for mismatched delays in signals of a mobile display interface (MDDI) system
WO2003056775A1 (fr) * 2001-12-30 2003-07-10 Legend (Beijing) Limited. Moyen et procede de commande permettant d'adapter differents supports de liaison de transmission de reseau a une couche physique
US7106740B1 (en) * 2002-01-02 2006-09-12 Juniper Networks, Inc. Nexthop to a forwarding table
US7068673B2 (en) * 2002-02-27 2006-06-27 Annadurai Andy P Circuit and method for processing communication packets and valid data bytes
US7274698B2 (en) * 2002-03-15 2007-09-25 Broadcom Corporation Multilevel parser for conditional flow detection in a network device
US7734812B2 (en) * 2002-06-06 2010-06-08 International Business Machines Corporation Method and apparatus for processing outgoing internet protocol packets
US7809021B2 (en) * 2002-07-10 2010-10-05 Solarflare Communications, Inc. Communication system and encoding method having low overhead
US7782898B2 (en) * 2003-02-04 2010-08-24 Cisco Technology, Inc. Wideband cable system
US7930426B1 (en) * 2003-04-01 2011-04-19 Cisco Technology, Inc. Method for tracking transmission status of data to entities such as peers in a network
KR101168839B1 (ko) 2003-06-02 2012-07-26 퀄컴 인코포레이티드 고속 데이터 레이트를 위한 신호 프로토콜 및 인터페이스의 생성 및 구현
EP2363992A1 (de) 2003-08-13 2011-09-07 Qualcomm Incorporated Signalschnittstelle für höhere Datenübertragungsraten
KR100951158B1 (ko) 2003-09-10 2010-04-06 콸콤 인코포레이티드 고속 데이터 인터페이스
WO2005039148A1 (en) 2003-10-15 2005-04-28 Qualcomm Incorporated High data rate interface
CN101827074B (zh) 2003-10-29 2013-07-31 高通股份有限公司 高数据速率接口
EP2242231A1 (de) 2003-11-12 2010-10-20 Qualcomm Incorporated Hochgeschwindigkeits-Datenschnittstelle mit verbesserter Verbindungssteuerung
BRPI0416895A (pt) 2003-11-25 2007-03-06 Qualcomm Inc interface de alta taxa de dados com sincronização de link melhorada
EP1698146A1 (de) 2003-12-08 2006-09-06 QUALCOMM Incorporated Schnittstelle mit hoher datenrate mit verbesserter streckensynchronisation
MXPA06010312A (es) 2004-03-10 2007-01-19 Qualcomm Inc Aparato y metodo de interfaz de velocidad de datos elevada.
AU2005223960B2 (en) 2004-03-17 2009-04-09 Qualcomm Incorporated High data rate interface apparatus and method
ATE511282T1 (de) 2004-06-04 2011-06-15 Qualcomm Inc Schnittstellenvorrichtung und -verfahren für hohe datenraten
US8650304B2 (en) 2004-06-04 2014-02-11 Qualcomm Incorporated Determining a pre skew and post skew calibration data rate in a mobile display digital interface (MDDI) communication system
US7492759B2 (en) * 2004-11-23 2009-02-17 Inventec Corporation Internally-integrated type computer network switching unit
US8699330B2 (en) 2004-11-24 2014-04-15 Qualcomm Incorporated Systems and methods for digital data transmission rate control
US8692838B2 (en) 2004-11-24 2014-04-08 Qualcomm Incorporated Methods and systems for updating a buffer
US8873584B2 (en) 2004-11-24 2014-10-28 Qualcomm Incorporated Digital data interface device
US8539119B2 (en) 2004-11-24 2013-09-17 Qualcomm Incorporated Methods and apparatus for exchanging messages having a digital data interface device message format
US8667363B2 (en) 2004-11-24 2014-03-04 Qualcomm Incorporated Systems and methods for implementing cyclic redundancy checks
JP4960253B2 (ja) * 2004-11-24 2012-06-27 クゥアルコム・インコーポレイテッド 2倍データレートのシリアル符号器
US8723705B2 (en) 2004-11-24 2014-05-13 Qualcomm Incorporated Low output skew double data rate serial encoder
US8228932B2 (en) * 2005-02-18 2012-07-24 Broadcom Corporation Layout architecture for expandable network device
EP1696637B1 (de) * 2005-02-28 2008-01-02 Siemens AG Verfahren zur Reduktion von Datenpaketverlusten beim Aktualisieren einer Adresstabelle
US8249064B1 (en) 2005-06-29 2012-08-21 Marvell International Ltd. Remote switching
US8692839B2 (en) 2005-11-23 2014-04-08 Qualcomm Incorporated Methods and systems for updating a buffer
US8730069B2 (en) 2005-11-23 2014-05-20 Qualcomm Incorporated Double data rate serial encoder
US20070147394A1 (en) * 2005-12-22 2007-06-28 Keith Iain Wilkinson Method and apparatus for processing timers
US7995543B2 (en) * 2006-05-05 2011-08-09 Marvell World Trade Ltd. Network device for implementing multiple access points and multiple client stations
CN100461732C (zh) * 2006-06-16 2009-02-11 华为技术有限公司 一种以太技术交换和转发的方法、系统和设备
US8966608B2 (en) * 2006-12-22 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Preventing spoofing
US8493974B1 (en) 2008-05-28 2013-07-23 L-3 Communications Protocol-independent switch system and method
US8160098B1 (en) * 2009-01-14 2012-04-17 Cisco Technology, Inc. Dynamically allocating channel bandwidth between interfaces
US8861546B2 (en) * 2009-03-06 2014-10-14 Cisco Technology, Inc. Dynamically and fairly allocating RF channel bandwidth in a wideband cable system
US8204070B1 (en) * 2009-08-28 2012-06-19 Extreme Networks, Inc. Backplane device for non-blocking stackable switches
US9331982B2 (en) * 2009-09-30 2016-05-03 Freescale Semiconductor, Inc. System and method for filtering received data units
GB2542220A (en) * 2013-09-13 2017-03-15 Smg Holdings-Anova Tech Llc Packet sharing data transmission system and relay to lower latency
AU2014318570A1 (en) 2013-09-13 2016-05-05 Smg Holdings-Anova Technologies, Llc Self-healing data transmission system to achieve lower latency
US9473599B2 (en) 2013-09-13 2016-10-18 SMG Holdings—Anova Technologies, LLC High payload data packet transmission system and relay to lower latency
US9471711B2 (en) * 2013-09-23 2016-10-18 Teradata Us, Inc. Schema-less access to stored data
US9755978B1 (en) 2014-05-12 2017-09-05 Google Inc. Method and system for enforcing multiple rate limits with limited on-chip buffering
US10469404B1 (en) 2014-05-12 2019-11-05 Google Llc Network multi-level rate limiter
US9762502B1 (en) * 2014-05-12 2017-09-12 Google Inc. Method and system for validating rate-limiter determination made by untrusted software
US9639396B2 (en) * 2014-09-16 2017-05-02 Nxp Usa, Inc. Starvation control in a data processing system
CN105939309B (zh) * 2015-07-28 2019-08-06 杭州迪普科技股份有限公司 一种虚拟机隔离方法及装置
CN105187388B (zh) * 2015-08-07 2018-05-11 深圳市科陆电子科技股份有限公司 使用集中器实现网络安全隔离的方法及集中器
US11570098B2 (en) 2016-07-05 2023-01-31 Six Impossible Things Before Breakfast Limited Systems, apparatuses and methods for cooperating routers
US10841222B2 (en) 2016-07-05 2020-11-17 Ologn Technologies Ag Systems, apparatuses and methods for network packet management
US10791091B1 (en) * 2018-02-13 2020-09-29 Architecture Technology Corporation High assurance unified network switch
US10880211B2 (en) * 2019-05-06 2020-12-29 Seth Gregory Friedman Transaction encoding and verification by way of data-link layer fields
US10868707B1 (en) 2019-09-16 2020-12-15 Liquid-Markets-Holdings, Incorporated Zero-latency message processing with validity checks
EP4144048A1 (de) 2020-06-08 2023-03-08 Liquid-Markets GmbH Hardwarebasierter transaktionsaustausch

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899334A (en) 1987-10-19 1990-02-06 Oki Electric Industry Co., Ltd. Self-routing multistage switching network for fast packet switching system
EP0439507B1 (de) 1988-10-20 1996-04-24 CHUNG, David Siu Fu Speicherstruktur und verwendung
US5253248A (en) 1990-07-03 1993-10-12 At&T Bell Laboratories Congestion control for connectionless traffic in data networks via alternate routing
GB9023867D0 (en) 1990-11-02 1990-12-12 Mv Ltd Improvements relating to a fault tolerant storage system
JPH04189023A (ja) 1990-11-22 1992-07-07 Victor Co Of Japan Ltd パルス同期化回路
JPH04214290A (ja) 1990-12-12 1992-08-05 Mitsubishi Electric Corp 半導体記憶装置
US5231636A (en) 1991-09-13 1993-07-27 National Semiconductor Corporation Asynchronous glitchless digital MUX
JPH05183828A (ja) 1991-12-27 1993-07-23 Sony Corp 電子機器
EP0556148B1 (de) 1992-01-10 1998-07-22 Digital Equipment Corporation Verfahren zur Verbindung einer Leitungskarte mit einer Adressenerkennungseinheit
US5341249A (en) * 1992-08-27 1994-08-23 Quantum Corporation Disk drive using PRML class IV sampling data detection with digital adaptive equalization
US5390173A (en) 1992-10-22 1995-02-14 Digital Equipment Corporation Packet format in hub for packet data communications system
DE69324204T2 (de) 1992-10-22 1999-12-23 Cabletron Systems Inc Aufsuchen von Adressen bei Paketübertragung mittels Hashing und eines inhaltsadressierten Speichers
US5696899A (en) 1992-11-18 1997-12-09 Canon Kabushiki Kaisha Method and apparatus for adaptively determining the format of data packets carried on a local area network
US5357146A (en) 1992-12-31 1994-10-18 At&T Bell Laboratories Glitch-free clock multiplexer
US5481215A (en) 1993-07-20 1996-01-02 Advanced Micro Devices, Inc. Coherent multiplexer controller
US5473607A (en) 1993-08-09 1995-12-05 Grand Junction Networks, Inc. Packet filtering for data networks
US5499295A (en) 1993-08-31 1996-03-12 Ericsson Inc. Method and apparatus for feature authorization and software copy protection in RF communications devices
US5887187A (en) 1993-10-20 1999-03-23 Lsi Logic Corporation Single chip network adapter apparatus
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US5579301A (en) 1994-02-28 1996-11-26 Micom Communications Corp. System for, and method of, managing voice congestion in a network environment
US5459717A (en) 1994-03-25 1995-10-17 Sprint International Communications Corporation Method and apparatus for routing messagers in an electronic messaging system
US5555398A (en) 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
FR2725573B1 (fr) 1994-10-11 1996-11-15 Thomson Csf Procede et dispositif pour le controle de congestion des echanges sporadiques de paquets de donnees dans un reseau de transmission numerique
EP0719065A1 (de) 1994-12-20 1996-06-26 International Business Machines Corporation Mehrzweck-Paketvermittlungsknoten für ein Datenübertragungsnetz
US5790539A (en) 1995-01-26 1998-08-04 Chao; Hung-Hsiang Jonathan ASIC chip for implementing a scaleable multicast ATM switch
US5644784A (en) 1995-03-03 1997-07-01 Intel Corporation Linear list based DMA control structure
US5664116A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Buffering of data for transmission in a computer communication system interface
JPH0955667A (ja) 1995-08-10 1997-02-25 Mitsubishi Electric Corp マルチプレクサ,及びデマルチプレクサ
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5781549A (en) 1996-02-23 1998-07-14 Allied Telesyn International Corp. Method and apparatus for switching data packets in a data network
US5940596A (en) 1996-03-25 1999-08-17 I-Cube, Inc. Clustered address caching system for a network switch
US6107822A (en) 1996-04-09 2000-08-22 Altera Corporation Logic element for a programmable logic integrated circuit
US5828653A (en) 1996-04-26 1998-10-27 Cascade Communications Corp. Quality of service priority subclasses
US5748631A (en) 1996-05-09 1998-05-05 Maker Communications, Inc. Asynchronous transfer mode cell processing system with multiple cell source multiplexing
US5787084A (en) 1996-06-05 1998-07-28 Compaq Computer Corporation Multicast data communications switching system and associated method
US5802052A (en) 1996-06-26 1998-09-01 Level One Communication, Inc. Scalable high performance switch element for a shared memory packet or ATM cell switch fabric
US5898687A (en) 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
GB9618132D0 (en) 1996-08-30 1996-10-09 Sgs Thomson Microelectronics Improvements in or relating to an ATM switch
US5845081A (en) 1996-09-03 1998-12-01 Sun Microsystems, Inc. Using objects to discover network information about a remote network having a different network protocol
US5831980A (en) 1996-09-13 1998-11-03 Lsi Logic Corporation Shared memory fabric architecture for very high speed ATM switches
US5842038A (en) 1996-10-10 1998-11-24 Unisys Corporation Optimized input/output memory access request system and method
JP3123447B2 (ja) 1996-11-13 2001-01-09 日本電気株式会社 Atm交換機のスイッチ制御回路
US5793236A (en) 1996-12-13 1998-08-11 Adaptec, Inc. Dual edge D flip flop
EP0849917B1 (de) 1996-12-20 2005-07-20 International Business Machines Corporation Vermittlungssystem
US6233246B1 (en) 1996-12-30 2001-05-15 Compaq Computer Corporation Network switch with statistics read accesses
DE19703833A1 (de) 1997-02-01 1998-08-06 Philips Patentverwaltung Koppeleinrichtung
US6452933B1 (en) 1997-02-07 2002-09-17 Lucent Technologies Inc. Fair queuing system with adaptive bandwidth redistribution
US6175902B1 (en) 1997-12-18 2001-01-16 Advanced Micro Devices, Inc. Method and apparatus for maintaining a time order by physical ordering in a memory
US6061351A (en) 1997-02-14 2000-05-09 Advanced Micro Devices, Inc. Multicopy queue structure with searchable cache area
US5892922A (en) 1997-02-28 1999-04-06 3Com Corporation Virtual local area network memory access system
US6011795A (en) 1997-03-20 2000-01-04 Washington University Method and apparatus for fast hierarchical address lookup using controlled expansion of prefixes
US6324679B1 (en) 1997-06-03 2001-11-27 Nec Usa, Inc. Register transfer level power optimization with emphasis on glitch analysis and reduction
US6115378A (en) 1997-06-30 2000-09-05 Sun Microsystems, Inc. Multi-layer distributed network element
US6119196A (en) 1997-06-30 2000-09-12 Sun Microsystems, Inc. System having multiple arbitrating levels for arbitrating access to a shared memory by network ports operating at different data rates
US6021132A (en) 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6016310A (en) 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6246680B1 (en) 1997-06-30 2001-06-12 Sun Microsystems, Inc. Highly integrated multi-layer switch element architecture
US6014380A (en) 1997-06-30 2000-01-11 Sun Microsystems, Inc. Mechanism for packet field replacement in a multi-layer distributed network element
US5909686A (en) 1997-06-30 1999-06-01 Sun Microsystems, Inc. Hardware-assisted central processing unit access to a forwarding database
US6094435A (en) 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US5920566A (en) 1997-06-30 1999-07-06 Sun Microsystems, Inc. Routing in a multi-layer distributed network element
US5918074A (en) 1997-07-25 1999-06-29 Neonet Llc System architecture for and method of dual path data processing and management of packets and/or cells and the like
DE19734028C2 (de) 1997-08-06 1999-06-02 Siemens Ag Schaltung zur glitchfreien Umschaltung digitaler Signale
US6041053A (en) 1997-09-18 2000-03-21 Microsfot Corporation Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards
JP2959539B2 (ja) 1997-10-01 1999-10-06 日本電気株式会社 バッファ制御方法および装置
US6185185B1 (en) 1997-11-21 2001-02-06 International Business Machines Corporation Methods, systems and computer program products for suppressing multiple destination traffic in a computer network
US5982309A (en) 1998-01-09 1999-11-09 Iowa State University Research Foundation, Inc. Parallel-to-serial CMOS data converter with a selectable bit width mode D flip-flop M matrix
US6556583B1 (en) 1998-02-24 2003-04-29 Yokogawa Electric Corporation Communication system and communication control method
US6025744A (en) 1998-04-17 2000-02-15 International Business Machines Corporation Glitch free delay line multiplexing technique
GB2337905B (en) 1998-05-28 2003-02-12 3Com Technologies Ltd Buffer management in network devices
US6081572A (en) 1998-08-27 2000-06-27 Maxim Integrated Products Lock-in aid frequency detector
US6341355B1 (en) * 1999-03-16 2002-01-22 Lsi Logic Corporation Automatic clock switcher

Also Published As

Publication number Publication date
ATE252298T1 (de) 2003-11-15
DE60005993D1 (de) 2003-11-20
WO2001037484A2 (en) 2001-05-25
EP1232604A2 (de) 2002-08-21
WO2001037484A3 (en) 2002-01-24
US20050122966A1 (en) 2005-06-09
EP1232604B1 (de) 2003-10-15
AU1580301A (en) 2001-05-30
US7366208B2 (en) 2008-04-29

Similar Documents

Publication Publication Date Title
DE60005993T2 (de) Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung
DE60031515T2 (de) Netzwerkvermittlung
DE60126222T2 (de) Verbundene Netzvermittlungskonfiguration
DE60133352T2 (de) Gebundene Netzvermittlungskonfiguration
DE60010328T2 (de) Spiegelung in einer netzwerkvermittlungsstapelanordnung
DE60127794T2 (de) Gebundene Netzschalterkonfiguration
DE60126223T2 (de) Anordnung zur Verbindung von Netzvermittlungsstellen
DE60309947T2 (de) Hochgeschwindigkeitsprotokoll für die Verbindung von modularen Netzwerkelementen
US7197044B1 (en) Method for managing congestion in a network switch
US7746854B2 (en) Fast flexible filter processor based architecture for a network device
US6810037B1 (en) Apparatus and method for sorted table binary search acceleration
DE60125678T2 (de) Vermittlungstelle mit Flusssteurungverwaltung
US7099276B1 (en) Apparatus and method for distributing a load across a trunk group
DE60034320T2 (de) Verfahren zur vermeidung von nichtsequentiellen rahmen in einer netzwerkvermittlungsstelle
DE112012002080T5 (de) Switching-Netzwerk-Architektur gemäss dem Distributed Fabric Protocol (DFP)
DE60116401T2 (de) Netzwerkvermittlung mit der Möglichkeit Anschlüsse zu blockieren
DE60112011T2 (de) Verfahren und Vorrichtung zum Filtern von Paketen basierend auf Datenströme unter Verwendung von Addressentabellen
DE60125300T2 (de) Schaltungsanordnung zum Übertragen von Daten mit Datenpacketierung und-Depacketierung
US6859454B1 (en) Network switch with high-speed serializing/deserializing hazard-free double data rate switching
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE60217988T2 (de) System und Verfahren zum zeitschlitzbasierten Erlernen und Durchsuchen von ARL Tabellen mit Blockierung der Einfügung
DE60121727T2 (de) Vermittlungsstelle mit virtuellem geteiltem Speicher
DE60217572T2 (de) System und Verfahren zum zeitschlitzbasierten Erlernen und Durchsuchen von ARL Tabellen unter Verwendung von Schreib-snoop
DE60120072T2 (de) Verfahren und Vorrichtung zur Verteilung eines Zwischenchipbusses für Nachrichtenübertragung und Speicherzugriff
DE60022870T2 (de) Verfahren zur überlastungsverwaltung in einer netzwerkvermittlung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M