DE69803364T2 - Verfahren und vorrichtung zur selektiven verwerfung von paketen für blockierte ausgangswarteschlangen in einer netzvermittlung - Google Patents

Verfahren und vorrichtung zur selektiven verwerfung von paketen für blockierte ausgangswarteschlangen in einer netzvermittlung

Info

Publication number
DE69803364T2
DE69803364T2 DE69803364T DE69803364T DE69803364T2 DE 69803364 T2 DE69803364 T2 DE 69803364T2 DE 69803364 T DE69803364 T DE 69803364T DE 69803364 T DE69803364 T DE 69803364T DE 69803364 T2 DE69803364 T2 DE 69803364T2
Authority
DE
Germany
Prior art keywords
section
port
queue
ports
pointer
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
DE69803364T
Other languages
English (en)
Other versions
DE69803364D1 (de
Inventor
Chandan Egbert
Bahadir Erimli
Denise Kerstein
Jefferson Runaldue
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE69803364D1 publication Critical patent/DE69803364D1/de
Publication of DE69803364T2 publication Critical patent/DE69803364T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0213Standardised network management protocols, e.g. simple network management protocol [SNMP]
    • 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/255Control mechanisms for ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54575Software application
    • H04Q3/54591Supervision, e.g. fault localisation, traffic measurements, avoiding errors, failure recovery, monitoring, statistical analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1868Measures taken after transmission, e.g. acknowledgments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • 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/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3054Auto-negotiation, e.g. access control between switch gigabit interface connector [GBIC] and link
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/45Arrangements for providing or supporting expansion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1316Service observation, testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13162Fault indication and localisation

Landscapes

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

Description

    Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Gebiet von Kommunikationen und insbesondere auf ein Verfahren und eine Vorrichtung zum Übermitteln von Mehrfachkopien von Daten von mehreren Ports einer Vorrichtung.
  • Technischer Hintergrund
  • Bei vielen Netzwerksystemen, wie beispielsweise paketvermittelten Netzwerken (z. B. Ethernet-Netzwerken) ist es für eine einzige Endstation häufig wünschenswert, die gleichen Daten an mehrere weitere Endstationen auf dem Netzwerk zu senden. Beispielsweise kann bei einem herkömmlichen E-Mail- System ein Anwender wünschen, die gleiche E-Mail-Nachricht an vier unterschiedliche, mit dem E-Mail-System verbundene Anwender zu senden.
  • Bei einem paketvermittelten Netzwerk trifft ein Schalter die Weiterleitungs- Entscheidung, wenn er Datenabschnitte von einer Endstation durch einen Port des Schalters empfängt. Wenn der Abschnitt zu einer Anzahl von Endstationen zu übertragen ist, muss der Schalter die Weiterleitungs-Entscheidung treffen, um eine Kopie dieses Abschnitts an die richtigen Ports weiterzuleiten.
  • Bei fast jedem System können Fälle auftreten, bei denen die Ressourcen des System überbeansprucht sind. Beispielsweise kann bei einem Netzwerkschalter mit mehreren Ports der abgehende Verkehr an einem oder mehreren der Ports auf einem solchen Niveau sein, dass ein Überlastung bei bestimmten Ports auftritt, was diese Ports mindestens vorübergehend zum Übermitteln von Verkehr unverfügbar macht. Weitere Ports können zum Übermitteln von Kopien des Verkehrs offen bleiben. Daher können Fälle auftreten, wobei einige der zur Übermittlung einer Kopie der gleichen Daten gekennzeichneten Ports blockiert sind, während weitere gekennzeichnete Ports nicht blockiert sind.
  • Bei herkömmlichen Mehrport-Netzwerkschalter werden, wenn alle Ports, die gekennzeichnet sind, um eine Datenkopie zu übermitteln, blockiert sind, die Daten gelöscht, und das Management wird über die gelöschten Daten in Kenntnis gesetzt. Die gleiche Löschprozedur wird ebenfalls durchgeführt, wenn nur einige der gekennzeichneten Ports blockiert sind, während andere nicht blockiert sind. Mit anderen Worten werden in dieser Situation die Daten vollständig gelöscht und keine Kopien ausgesendet, sogar wenn nur ein Port blockiert ist und zehn Ports nicht blockiert sind. Diese Prozedur kann bewirken, dass eine relativ große Datenmenge zu Zeiten einer Überlastung gelöscht werden, da die Überlastung bei nur einem gekennzeichnetem Port dazu führt, dass verhindert wird, dass Daten an die verbleibenden Ports des Schalters geliefert werden.
  • Zusammenfassung der Erfindung
  • Es gibt einen Bedarf für eine Anordnung und ein Verfahren zum Steuern der Übermittlung von Datenkopien von mehreren Ports einer Vorrichtung, die mehr Datenübermittlungen und weniger Löschen von Datenkopien vorsieht.
  • Diese und weitere Bedürfnisse werden von einer Ausführungsform der vorliegenden Erfindung erfüllt, die ein Verfahren zum Steuern der Übermittlung von Kopien eines Datenabschnitts durch eine Mehrzahl von Ports bereitstellt, die ein Kennzeichnen der Ports, von denen die Abschnittskopien zu übermitteln sind, umfasst. Es wird dann bestimmt, welche der gekennzeichneten Ports nicht verfügbar sind, um eine der Abschnittskopien zu übermitteln. Kopien des zu übermittelnden Abschnitts werden an die gekennzeichneten Ports geliefert, die verfügbar sind, um eine der Abschnittskopien zu übermitteln. Diejenigen Kopien des von den designierten Ports zu übertragenden Abschnitts, die jedoch nicht verfügbar sind, um eine der Abschnittskopien zu übermitteln, werden gelöscht.
  • Ein Vorteil der vorliegenden Erfindung ist, dass Abschnittskopien durch diejenigen gekennzeichneten Ports übermittelt werden, die imstande sind, eine Kopie zu übermitteln. Die einzigen gelöschten Kopien sind diejenigen, die von dem gekennzeichneten Ports zu übertragen sind, die aus einem Grund nicht imstande sind, eine Kopie zu übermitteln. Dies liefert mehr Durchsatz von Daten durch die Ports und an die Endstationen als wenn lediglich der gesamte Abschnitt gelöscht wird. Somit wird eine Überlastung an einem Port nicht verhindern, dass Abschnittskopien an so viele der gekennzeichneten Ports wie möglich geliefert werden, so dass die Abschnittsdaten von so vielen beabsichtigten Empfängern wie möglich empfangen werden.
  • Die vorher angegebenen Bedürfnisse werden ebenfalls durch eine weitere Ausführungsform der vorliegenden Erfindung erfüllt, die einen Mehrport-Netzschalter bereitstellt, der mehrere Kopien eines einzigen Datenabschnitts übermittelt. Der Netzwerkschalter weist eine Mehrzahl von Ports auf, von denen Datenabschnitte übermittelt werden. Ein Portvektor-Generator erzeugt einen Portvektor, der kennzeichnet, von welchen Ports Abschnittskopien zu übermitteln sind. Eine Übermittlungsanordnung wird bereitgestellt, die ausgestaltet ist, um die Verfügbarkeit jedes von dem Portvektor gekennzeichneten Ports zu bestimmen, um eine Abschnittskopie zu übermitteln. Die Übermittlungsanordnung übermittelt Kopien der Abschnitte durch die gekennzeichneten Port, die verfügbar sind, um eine Abschnittskopie zu übertragen, und löscht Kopien der zu übertragenden Abschnitte von den gekennzeichneten Ports, die nicht verfügbar sind, eine Abschnittskopie zu übermitteln.
  • Ein Vorteil der obigen Ausführungsform der Erfindung ist, dass der Schalter so viele Abschnittskopien in einem Netzwerk wie möglich weiterleitet und nicht automatisch den gesamten Abschnitt löscht, wenn nur einige der Ports nicht verfügbar sind, um Abschnittskopien zu übermitteln. Dies erhöht die Menge von nützlichen Daten, die über das Netzwerk übermittelt werden, und verhindert, dass die Anfangsübermittlung des Abschnitts an den Netzwerkschalter zum Weiterleiten eine vollständige Verschwendung von Netzwerkressourcen wird.
  • Die vorstehenden und weiteren Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung der vorliegenden Erfindung in Verbindung mit den beigefügten Zeichnungen offensichtlicher werden.
  • Kurzbeschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm eines paketvermittelten Systems, das in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Fig. 2 ist ein Blockdiagramm eines Mehrport-Schalters, der in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist und bei dem paketvermittelten System von Fig. 1 verwendet wird.
  • Fig. 3 ist eine schematische Darstellung eines Schalter-Subsystems des Mehrport-Schalters von Fig. 3, das in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Fig. 4 ist ein Blockdiagramm einer einzelnen Ausgangs-Warteschlange des Schalter-Subsystems von Fig. 4, die in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Fig. 5 ist eine Einzelheit einer ersten Art einer Ausgangs-Warteschlange in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
  • Fig. 6 ist eine Einzelheit einer zweiten Art einer Ausgangs-Warteschlange in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
  • Fig. 7 ist eine Einzelheit eines Überlaufbereichs des externen Speichers, der in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ausgestaltet ist.
  • Fig. 8 ist ein Blockdiagramm einer Datenstruktur einer verknüpften Liste, die bei der vorliegenden Erfindung verwendet wird.
  • Fig. 9 stellt schematisch ein Abschnittspuffer-Header-Format in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dar.
  • Fig. 10 ist eine Einzelheit des Mehrfachkopie-, Regenerierungs- und freien Puffer-Bereichs des Schalter-Subsystems von Fig. 4, der in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Fig. 11 ist ein Blockdiagramm einer Pool-Struktur eines freien Puffers, der in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Fig. 12 ist ein Blockdiagramm einer Mehrfachkopie-Warteschlange, die in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ausgestaltet ist.
  • Fig. 13 ist eine schematische Darstellung des Mehrfachkopie-Cache-Speichers, der in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Fig. 14 ist ein Blockdiagramm eines Warteschlangenblocks des Puffermanagers des Schalter-Subsystems und eines Portvektor-FIFOs, die in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung aufgebaut sind.
  • Ausführliche Beschreibung von veranschaulichenden Ausführungsformen
  • Die vorliegende Erfindung wird mit dem Beispiel eines Schalters in einem paketvermittelten Netzwerk, wie beispielsweise einem Ethernet (IEEE 802.3) Netzwerk beschrieben. Es wird jedoch offensichtlich sein, dass die vorliegende Erfindung ebenfalls auf weitere paketvermittelte Systeme, wie es ausführlich nachstehend beschrieben ist, sowie auch auf weitere Arten von Systemen im allgemeinen, anwendbar ist.
  • Fig. 1 ist ein Blockdiagramm eines beispielhaften Systems, in dem die vorliegende Erfindung in vorteilhafter Weise benutzt werden kann. Das beispielhafte System 10 ist ein paketvermitteltes Netzwerk, wie beispielsweise ein Ethernet-Netzwerk. Das paketvermittelte Netzwerk umfasst einen integrierten Mehrport-Schalter (IMS = integrated multiport switch) 12, der eine Kommunikation von Datenpaketen zwischen Netzwerkstationen ermöglicht. Das Netzwerk kann Netzwerkstationen mit unterschiedlichen Konfigurationen aufweisen, beispielsweise vierundzwanzig (24) Netzwerkstationen mit 10 Megabit pro Sekunde (Megabit/s) 14, die Daten mit einer Netzwerk-Datenrate von 10 Megabit/s senden und empfangen, und zwei Netzwerkstationen mit 100 Megabit/s 22, die Datenpakete mit einer Netzwerkgeschwindigkeit von 100 Megabit/s senden und empfangen. Folglich leitet der Schalter 12 von den Netzwerkstationen 14 oder 22 empfangene Datenpakete selektiv an die passende Bestimmung basierend auf dem Ethernet-Protokoll weiter.
  • Gemäß der offenbarten Ausführungsform senden und empfangen die Netzwerkstation 10 Megabit/s 14 Datenpakete an und von dem Schalter 12 über ein Medium 17 und gemäß dem Halbduplex-Ethernet-Protokoll. Das Ethernet- Prokoll ISO/IEC 8802-3 (ANSI/IEEE Standard 802.3, 1993 Ed.) definiert ein Halbduplex-Medien-Zugriffs-Mechanismus, der es allen Stationen 14 ermöglicht, auf den Netzwerkkanal mit Gleichheit zuzugreifen. Der Verkehr in einer Halbduplex-Umgebung ist gegenüber dem Medium 17 nicht charakterisiert oder priorisiert. Anstatt dessen umfasst jede Station 14 eine Ethernet- Schnittstellen-Karte, die CSMA/CD (carrier-sense multiple access with collision detection) verwendet, um auf Verkehr auf dem Medium zu horchen. Die Abwesenheit von Netzwerkverkehr wird durch Abfüllen einer Deaktivierung eines Empfangsträgers auf dem Medium erfasst. Jede Station 14, die zu sendende Daten aufweist, wird versuchen, auf den Kanal durch Warten einer vorbestimmten Zeit nach der Deaktivierung eines Empfangsträgers auf dem Medium zuzugreifen, die als Zwischenpaket-Abstandsintervall (IPG = interpacket gap interval) bekannt ist. Wenn eine Mehrzahl von Stationen 14 auf dem Netzwerk zu sendende Daten aufweisen, wird jede der Stationen versuchen, als Antwort auf die abgefühlte Deaktivierung des Empfangsträgers auf dem Medium und nach dem IPG-Intervall zu übermitteln, was zu einer Kollision führt. Folglich wird die übermittelnde Station die Medien überwachen, um zu bestimmen, ob ein Kollision infolge einer weitere Station, die Daten zur gleichen Zeit sendet, aufgetreten ist. Wenn eine Kollision erfasst wird, halten beide Stationen an, Warten einen Zufalls-Zeitbetrag, und versuchen die Übermittlung erneut.
  • Die Netzwerkstationen mit 100 Megabit/s 22 arbeiten vorzugsweise im Vollduplex-Modus gemäß dem vorgeschlagenen Ethernet-Standard IEEE 802.3x "Full-Duplex with Flow Control - Working Draft (0.3)". Die Vollduplex- Umgebung liefert eine Zweifach-Punkt-zu-Punkt-Kommunikations-Verknüpfung zwischen jeder Netzwerkstation mit 100 Megabit/s 22 und dem Schalter 12, wobei der Schalter 12 und die jeweiligen Stationen 22 gleichzeitig Datenpakete ohne Kollisionen übermitteln und empfangen können. Die Netzwerkstationen mit 100 Megabit/s 22 sind jeweils mit Netzwerkmedien 17 über physikalische(PHY) Vorrichtungen mit 100 Megabit/s 20 vom 100 Base- TX-, 100 Base-T4- oder 100 Base-FX-Typ gekoppelt. Der Schalter 12 umfasst eine medien-unabhängige Schnittstelle (MII) 24 die eine Verbindung mit den physikalischen Vorrichtungen 20 bereitstellt. Die Netzwerkstationen mit 100 Megabit/s 22 können als Server oder als Router zur Verbindung mit weiteren Netzwerken implementiert sein.
  • Wie es in Fig. 1 gezeigt ist, umfasst das Netzwerk 10 eine Reihe von Schalter-Transceivern 26, die eine Zeit-Multiplex-Bildung und Zeit-Multiplex- Auflösung für zwischen dem Schalter 10 und den 10 Megabit/s Stationen 14 übermittelten Datenpaketen durchführen. Ein magnetisches Transformator- Modul 19 behält die Signalverlauf-Formen auf den Medien 17 bei. Der Schalter 12 umfasst eine Transceiver-Schnittstelle 18, die Datenpakete an jeden Schalter-Transceiver 16 mit einem zeitgemultiplexten Protokoll über eine einzige serielle NRZ-Schnittstelle (non-return-to-zero-interface) 23 übermittelt und von diesem empfängt. Der Schalter-Transceiver 16 empfängt Pakete von der seriellen NRZ-Schnittstelle 23, demultiplext die empfangenen Pakete und gibt die Pakete an die passende Endstation 14 über die Netzwerkmedien 17 aus. Gemäß der offenbarten Ausführungsform umfasst jeder Schalter- Transceiver 16 vier unabhängige verdrillte Port-Leitungspaare mit 10 Megabit/s und verwendet 4 : 1-Multiplexbildung über die serielle NRZ- Schnittstelle, wobei eine vierfache Verringerung in der von dem Schalter 12 verlangten PINs möglich wird.
  • Der Schalter 12 enthält eine Entscheidungsbildungs-Maschine, eine Schaltmaschine, eine Pufferspeicher-Schnittstelle, Konfigurations/Steuer/Status- Register, Managementzähler und eine MAC(media access control)-Protokollschnittstelle, um das Routing von Datenpaketen zwischen den die Netzwerkstation 14 und 22 bedienenden Ethernet-Ports zu unterstützen. Der Schalter 12 weist ferner eine verbesserte Funktionalität auf, um intelligente Schaltentscheidungen zu treffen und um statistische Netzwerkinformation in der Form von Management-Informations-Basis-Objekten (MIB objects = management Information base objects) an ein nachstehend beschriebenes externes Managementelement zu liefern. Der Schalter 12 umfasst ferner Schnittstellen, um die externe Speicherung von Datenpaketen zu ermöglichen, und Schaltlogik, um die Chipgröße des Schalters 12 zu minimieren. Beispielsweise umfasst der Schalter 12 eine SDRAM-Schnittstelle (synchronische dynamischer RAM-Schnittstelle) 34, die einen Zugriff auf einen externen Speicher 36 zum Speichern von empfangenen Abschnittsdaten, Speicherstrukturen und MIB-Zähler-Information bereitstellt. Der Speicher 36 kann ein 80, 100 oder 120 MHz synchroner DRAM mit einer Speichergröße von 2 oder 4 Mb sein.
  • Der Schalter 12 umfasst ferner einen Managementport 30, der es einem externen Managementelement ermöglicht, den Gesamtbetrieb des Schalters 12 durch eine Management-MAC-Schnittstelle 32 zu steuern. Der Schalter 12 weist ferner eine PCI-Schnittstelle 26 auf, die Zugriff durch das Managementelement über einen PCI-Host und Brücke 28 ermöglicht. Alternativ kann der PCI-Host und Brücke 28 als ein Erweiterungsbus für eine Mehrzahl von Schaltervorrichtungen 12 dienen.
  • Der Schalter 12 umfasst eine interne Entscheidungsbildungs-Maschine (Fig. 2), die die von einer Quelle empfangenen Datenpakete selektiv an mindestens eine Bestimmungsstation übermittelt. Die interne Entscheidungsbildungs- Maschine kann durch eine externe Regelprüfvorrichtung ersetzt werden. Der Schalter 12 umfasst eine externe Regelprüfvorrichtungs-Schnittstelle (ERCI = external rules checker interface) 40, die die Verwendung einer externen Regelprüfvorrichtung 42 ermöglicht, um Abschnitts-Weiterleitungs-Entscheidungen anstelle der internen Entscheidungsbildungs-Maschine zu treffen. Somit können Abschnitts-Weiterleitungs-Entscheidungen entweder von der internen Schaltmaschine oder der externen Regelprüfvorrichtung 42 getroffen werden.
  • Der Schalter 12 umfasst ferner eine LED-Schnittstelle 44, die den Status von Zuständen pro Port austaktet und die externe LED-Logik 46 ansteuert. Die externe LED-Logik 46 steuert ihrerseits LED-Anzeige-Elemente 48 an, die von Menschen lesbar sind. Ein Oszillator 38 liefert einen 40 MHz-Takteingang für die Systemfunktionen des Schalters 12.
  • Fig. 2 ist ein Blockdiagramm des integrierten Mehrport-Schalters (IMS = integrated multiport switch) 12 von Fig. 1. Der Schalter 12 umfasst vierundzwanzig (24) Medien-Zugriffs-Steuerports (MAC-Ports = media access control ports) mit 10 Megabit/s 50 zum Senden und Empfangen von Datenpaketen im Halbduplex zwischen jeweiligen Netzwerkstationen mit 10 Megabits 14 (Ports 1 bis 24) und zwei MAC-Ports mit 100 Megabit/s 53 zum Senden und Empfangen von Datenpaketen in Vollduplex zwischen den jeweiligen 100 Megabit/s Netzwerkstationen (Ports 25, 26). Wie es oben beschrieben ist, arbeitet die Managementschnittstelle 30 ebenfalls gemäß dem MAC-Schicht-Protokoll (Port 0). Jeder der MAC-Ports 50, 53 und 30 umfasst einen FIFO-Puffer 52 und einen Sende-FIFO 54. Datenpakete von einer Netzwerkstation werden von dem entsprechenden MAC-Port empfangen und in dem entsprechenden Empfangs-FIFO 52 gespeichert. Das empfangene Datenpaket wird von dem entsprechenden Empfangs-FIFO 52 an die externe Speicherschnittstelle 34 zum Speichern in dem externen Speicher 36 ausgegeben.
  • Der Header des empfangenen Pakets wird ebenfalls an eine Entscheidungsbildungs-Maschine weitergeleitet, entweder der internen Regelprüfvorrichtung 58 oder der externen Regelprüfvorrichtungs-Schnittstelle 40, um zu bestimmen, welche MAC-Ports die Datenpakete ausgeben werden. Genauer gesagt wird der Paket-Header an die interne Regelprüfvorrichtung 58 oder die externe Regelprüfvorrichtungs-Schnittstelle 40 abhängig davon weitergeleitet, ob der Schalter 12 konfiguriert ist, um mit der internen Regelprüfvorrichtung 58 oder der externen Regelprüfvorrichtung 42 zu arbeiten. Die interne Regelprüfvorrichtung 58 und die externe Regelprüfvorrichtung 42 liefern die Entscheidungsbildungs-Logik zum Bestimmen des MAC-Bestimmungsports für ein gegebenes Datenpaket. Die Entscheidungsbildungs-Maschine kann somit ein gegebenes Datenpaket an entweder einen einzelnen Port, mehrere Ports oder alle Ports (d. h. Rundfunk) ausgeben. Beispielsweise umfasst jedes Datenpaket einen Header mit Ursprungs- und Bestimmungsadresse, wobei die Entscheidungsbildungs-Maschine den passenden MAC-Ausgangsport basierend auf der Bestimmungsadresse kennzeichnen kann. Alternativ kann die Bestimmungsadresse einer virtuellen Adresse entsprechen, die die passende Entscheidungsbildungs-Maschine als einer Mehrzahl von Netzwerkstationen entsprechend kennzeichnet. Alternativ kann das empfangene Datenpaket einen gekennzeichneten Abschnitt eines VLAN (virtuelles LAN) gemäß dem IEEE 802.1d-Protokoll umfassen, das ein weiteres Netzwerk (über einen Router an eine der Stationen mit 100 Megabit/s 22) oder einer vorgeschriebenen Gruppe von Stationen spezifiziert. Somit wird entweder die interne Regelprüfvorrichtung 58 oder die externe Regelprüfvorrichtung 42 über die Schnittstelle 40 entscheiden, ob ein vorübergehend in dem Pufferspeicher 36 gespeicherter Abschnitt an einen einzelnen MAC-Port oder mehrere MAC-Ports ausgegeben werden sollte.
  • Die Verwendung der externen Regelprüfvorrichtung 42 liefert Vorteile, wie beispielsweise eine erhöhte Kapazität - eine zufallsbasierte Reihenfolge in der Entscheidungs-Warteschlange, die es ermöglicht, dass Abschnitts-Weiterleitungs-Entscheidungen durchgeführt werden, bevor der Abschnitt vollständig im externen Speicher gepuffert ist, und es ermöglicht, Entscheidung in einer Reihenfolge unabhängig von der Reihenfolge, in der die Abschnitte von dem Schalter 12 empfangen wurden, durchzuführen.
  • Die Entscheidungsbildungs-Maschine (d. h. interne Regelprüfvorrichtung 58 oder externe Regelprüfvorrichtung 42) gibt eine Weiterleitungs-Entscheidung an ein Schalter-Subsystem 56 in der Form eines Portvektor aus, der jeden MAC-Port kennzeichnet, der das Datenpaket empfangen sollte. Der Portvektor von der Regelprüfvorrichtung umfasst den Adressenplatz, der das Datenpaket in dem externen Speicher 36 speichert, und die Identifikation der MAC-Ports, um die Datenpakete zur Übermittlung (z. B. MAC-Ports 0 bis 26) zu empfangen. Das Schalter-Subsystem S6 ruft das in dem Portvektor gekennzeichnete Datenpaket aus den externen Speicher 36 über die externe Speicherschnittstelle 34 ab, und liefert das ausgelesene Datenpakte an den passenden Sende-FIFO 54 der gekennzeichneten Ports.
  • Zusätzliche Schnittstellen liefern Management- und Steuerinformation. Beispielsweise ermöglicht eine Managementdaten-Schnittstelle 59 dem Schalter 12, Steuer- und Statusinformation mit dem Schalter-Transceivern 16 und den physikalischen Vorrichtungen mit 10 Megabit/s 200 gemäß der MII-Managementspezifikation (IEEE 802.3u) auszutauschen. Beispielsweise gibt die Managementdaten-Schnittstelle 59 einen Managementdaten-Takt (MCD = management data clock) aus, der einen Timing-Bezug auf dem bidirektionalen Managementdaten-E/A-(MDIO)-Signalpfad ausgibt.
  • Die PCI-Schnittstelle 26 ist eine 32-Bit-Slave-Schnittstelle gemäß PCI Revision 2.1 für den Zugriff durch den PCI-Host-Prozessor 28 auf die internen IMS- Status- und -Konfigurations-Register 60 und für den Zugriff auf den externen Speicher 36. Die PCI-Schnittstelle 26 kann ebenfalls als ein Erweiterungsbus für mehrere Schaltungsvorrichtungen dienen. Der Managementport 30 ist mit einer externen MAC-Maschine durch eine standardmäßige invertierte serielle Siebendraht-GPSI-Schnittstelle verbunden, die einem Host-Controller Zugriff auf den Schalter 12 über ein Standard-MAC-Schicht-Protokoll ermöglicht.
  • Fig. 3 stellt das Schalter-Subsystem 56 von Fig. 2 ausführlicher gemäß ein beispielhaften Ausführungsform der vorliegenden Erfindung dar. Weitere Elemente des Mehrport-Schalters 12 von Fig. 2 sind in Fig. 3 wiedergegeben, um die Verbindungen des Schalter-Subsystems 56 zu diesen weiteren Elementen zu veranschaulichen. Das Schalter-Subsystem 56 enthält die Kern-Schaltmaschine zum Empfangen und Weiterleiten von Abschnitten. Die Hauptfunktionsblöcke, die verwendet werden, um die Schaltmaschine zu implementieren, umfassen: einen Portvektor-FIFO 70, einen Puffermanager 72, eine Mehrzahl von Port-Ausgangs-Warteschlangen 74, eine Managementport-Ausgangs-Warteschlange 75, eine Erweiterungsbus-Port-Ausgangs- Warteschlange 77, einen freien Puffer-Pool 104, eine Mehrfachkopie-Warteschlange 90, einen Mehrfachkopie-Cache-Speicher 96 und eine Regenerierungs-Warteschlange 98. Der Arbeitsweise und der Aufbau dieser Funktionsblöcke wird ausführlicher beschrieben, wobei jedoch zuerst ein kurzer Überblick des Schalter-Subsystems 56 von Fig. 3 präsentiert wird, um einen Kontext zu der späteren Erläuterung der einzelnen Elemente zu liefern.
  • Es gibt zwei Grundtypen von Abschnitten, die von den Ports in den Mehrport- Schalter 12 eintreten: Einfachkopie-Abschnitte und Mehrfachkopie-Abschnitte. Ein Einfachkopie-Abschnitt ist ein Abschnitt, der an einem Port empfangen wird, der von dem Mehrport-Schalter 12 nur an einen weiteren Port zu übermitteln ist. Im Gegensatz dazu ist ein Mehrfachkopie-Abschnitt ein Abschnitt, der an einem Port zur Übermittlung an mehr als einen weiteren Port empfangen wird. In Fig. 3 ist jeder Port durch eine getrennte MAC 50 dargestellt, die ihr eigenes Empfangs-FIFO 52 und Sende-FIFO 54 aufweist.
  • Abschnitte, egal ob Einfachkopie oder Mehrfachkopie, werden von den internen MAC-Maschinen 50 empfangen. Wenn das Abschnittspaket an dem Port empfangen wird, wird es in das Empfangs-FIFO 52 platziert. Jeder Abschnitt umfasst einen Header, der an eine Regelprüfvorrichtung, entweder der internen Regelprüfvorrichtung 58 oder der externen Regelprüfvorrichtung 42, geliefert wird. Die Regelprüfvorrichtung 42 oder 58 bestimmt basierend auf der Information in dem Header, von wo das Abschnittspaket gesendet wird, d. h. durch welchen Port oder Ports das Abschnittspaket übermittelt wird.
  • Zur gleichen Zeit, wenn die Regelprüfvorrichtung 42 oder 58 ihre Weiterleitungsbestimmung durchführt, erhält der Puffermanager 72 einen freien Pufferzeiger von dem freien Puffer-Pool 104. Dieser freier Pufferzeiger ist der Platz im externen Speicher 36, bei dem der Abschnitt von dem Empfangs-FIFO 52 gespeichert wird. Sobald der freie Pufferzeiger von dem freien Puffer-Pool 104 von dem Puffermanager 72 erhalten wird, wird der Puffer, auf den von dem freien Pufferzeiger gezeigt wird, nicht länger als frei angesehen. Die Abschnittsdaten werden über den Datenbus 80 von dem Empfangs-FIFO 52 an den externen Speicher 36 in einer DMA-Transaktion (Direktspeicherzugriffs- Transaktion) übertragen. Der Abschnitt wird an dem Platz, auf den von den freien Pufferzeiger gezeigt wird, der von dem freien Puffer-Pool 104 erhalten wurde, gespeichert, obgleich eine Anzahl weiteren Puffern verwendet werden kann, um einen Abschnitt zu speichern, wie es beschrieben wird.
  • Zusätzlich zu den Header-Daten empfängt die Regelprüfvorrichtung 42 oder 58 ebenfalls den freien Pufferzeiger von dem Puffermanager 72. Dieser freie Pufferzeiger wird nun als ein Abschnittszeiger bezeichnet, da er auf den Speicherplatz in dem externen Speicher 36 zeigt, wo der Abschnitt gespeichert ist. Die Regelprüfvorrichtung 42 oder 58 verwendet die Header-Information, um die Weiterleitungs-Entscheidung durchzuführen und einen Weiterleitungsbefehl in der Form eines "Portvektors" zu erzeugen. Bei der beispielhaften dargestellten Ausführungsform ist der Portvektor ein 28-Bit-Vektor mit einem für jeden Ausgangsport gesetzten Bit, an den der Abschnitt weitergeleitet werden sollte. Es sei für dieses Überblicksbeispiel angenommen, dass der empfangene Abschnitt ein Einfachkopie-Abschnitt ist. Demgemäß wird nur ein Bit in dem von der Regelprüfvorrichtung 42 oder 58 erzeugten Portvektor gesetzt. Das Bit, das in dem Portvektor gesetzt ist, entspricht einem der bestimmten Ports.
  • Die Regelprüfvorrichtung 42 oder 58 platziert den Portvektor und den Abschnittszeiger (so wie auch einen Steuer-Opcode und einen VLAN-Index) in den Portvektor-FIFO 70. Der Portvektor wird von dem Portvektor-FIFO 70 geprüft, um zu bestimmen, in welche bestimmte Ausgangsport-Warteschlange 74 (oder Ausgangs-Warteschlangen) der dem Portvektor zugeordnete Abschnittszeiger eingegeben werden sollte. Der Portvektor-FIFO 70 platziert den Abschnittszeiger oben in die passende Ausgangs-Warteschlange 74. Dies platziert die Übermittlung des Abschnitts in die Warteschlange.
  • Zu einem Zeitpunkt erreicht der Abschnittszeiger den Boden der Ausgangs- Warteschlange 74 nach Durchlaufen durch die Ausgangs-Warteschlange 74. Der Puffermanager 72 nimmt den Abschnittszeiger, wenn er an dem Boden der Ausgangs-Warteschlange 74 ankommt, und leitet den Abschnittszeiger an den passenden Sende-FIFO 54 des richtigen Ports über den aus Abschnittszeiger-Lesebus 86 weiter. Dies plant die Übermittlung des Abschnitts. Die bei einer DMA-Transaktion aus dem Platz im externen Speicher 36 gelesenen Abschnittsdaten werden, auf die durch den Abschnittszeiger gezeigt wird, werden in das passende Sende-FIFO 54 platziert, und dann übermittelt.
  • Eine Mehrfachkopie-Übermittlung ist ähnlich der Einfachkopie-Übermittlung, mit der Ausnahme, dass der Portvektor mehrere gesetzte Bits aufweist, die die mehreren Ports kennzeichnen, von denen der Abschnitt übermittelt wird. Der Abschnittszeiger wird in jede der passenden Ausgangs-Warteschlangen 74 platziert und von den entsprechenden Sende-FIFOs 54 übermittelt.
  • Der Puffermanager 72 verwendet die besonderen Steuer-Warteschlangen, d. h. den freien Puffer-Pool 104, Mehrfachkopie-Warteschlange 90 und die Regenerierungs-Warteschlange 98 und dem Mehrfachkopie-Cache-Speicher 96, um den Prozess des Zuordnens von Puffern, um empfangene Abschnitte zu speichern, und zum Wiederherstellen von Puffern zur erneuten Verwendung zu verwalten, sobald der Abschnitt an seinem gekennzeichneten Ausgangsport(s) gesendet wurde. Der Puffermanager 72 unterhält ferner "Überlauf"-Bereiche im externen Speicher 36 für die Ausgangs-Warteschlangen 74 und die Steuer- Warteschlangen 104, 90 und 98, wie es ausführlicher später beschrieben wird.
  • Mit diesem Betriebsüberblick als Hintergrund, werden nun die einzelnen Sektionen und verschiedenen Aspekte des Schalter-Subsystems 56 ausführlicher erläutert. Der erste dieser Aspekte, der beschrieben wird, ist der Aufbau der verschiedenen Ausgangs-Warteschlangen 74 der vorliegenden Erfindung. Zusätzlich den den 10 Megabit/s-Ausgangsports und den 100 Megabit/s- Ausgangsports zugewiesenen Ausgangs-Warteschlangen 74 wird eine Ausgangs-Warteschlange 75 für den Managementport 30 und eine Ausgangs- Warteschlange 77 für den Erweiterungsport 26 bereitgestellt. Diese Ausgangs- Warteschlangen 75, 77 weisen den gleichen externen Aufbau wie die Ausgangs-Warteschlangen 74 jedoch unterschiedliche interne Konfigurationen auf, wie es beschrieben wird.
  • Fig. 4 ist ein Blockdiagramm des externen Aufbaus einer Ausgangs-Warteschlange 74 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung. Wie es aus Fig. 4 ersichtlich ist, weist die Ausgangs- Warteschlange 74 der vorliegenden Erfindung eine dreiteilige Konfiguration auf. Für die höchste Leistung ist es vorzuziehen, alle Warteschlangen- Strukturen auf dem Chip beizubehalten (mit Bezug auf den Mehrport-Schalter 12), wobei jedoch die Fläche auf einem Chip sehr kostspielig ist. Dies stellt ein Dilemma dar, wenn der Chip ausgestaltet ist, zu schalten, und eine große Anzahl von Einträgen in eine Warteschlange platzieren muss. Die vorliegende Erfindung löst dieses Dilemma durch Bereitstellen einer einzigen Ausgangs- Warteschlange, die einen Hochleistungs-Niedrigkapazität-Abschnitt, der chipintern ist, und einen Überlaufbereich, der chipextern ist, umfasst. Der Überlaufbereich ermöglicht der Warteschlange, als eine Warteschlange mit großer Kapazität, obgleich mit einer relativ niedrigeren Leistung als der chipinterne Teil, wie benötigt, zu dienen.
  • Eine einzige logische Ausgangs-Warteschlange 74 der vorliegenden Erfindung umfasst gemäß der Ausführungsform von Fig. 4 drei physikalische Sektionen. Diese umfassen eine Ausgangs-Warteschlangen-Schreibseite 76, eine Ausgangs-Warteschlangen-Leseseite 78 und einen in dem externen Speicher 36 situierten Ausgangs-Warteschlangen-Überlaufbereich (allgemein als 110 gekennzeichnet). Zugriff auf den externen Speicher 36 für alle Ausgangs- Warteschlangen 74 ist durch die externe Speicherschnittstelle 34 gegeben, wie es vorher beschrieben wurde. Die vorliegende Erfindung macht sich die bündelartige Natur aktueller externer Speicher zunutze, so dass die Daten (z. B. Abschnittszeiger) auf und von dem Chip an den Überlauf-Warteschlangen-Bereich 110 in Bündeln (bursts) über den Bus 84 gesendet werden, der den Chip 12 mit dem externen Speicher 36 verbindet.
  • Die Ausgangs-Warteschlangen-Schreibseite 76 und die Ausgangs-Warteschlangen-Leseseite 78 sind auf dem Chip 12 angeordnet. Die Schreibseite 76 und die Leseseite 78 werden als kleine kostspielige Ressourcen angesehen. Im Gegensatz dazu ist der Überlaufbereich 110, der den dritten Teil der Ausgangs-Warteschlange 74 bildet, groß und preiswert. Die Schreibseite 76 und die Leseseite 78 liefern eine hohe Leistung, während der Pfad durch den Überlaufbereich einen Pfad mit Niedrigleistung und großer Kapazität bereitstellt.
  • Im Betrieb empfängt die Ausgangs-Warteschlangen-Schreibseite 76 einen Eintrag. Bei der beispielhaften Ausführungsform eines Mehrport-Schalters 12 gemäß der vorliegenden Erfindung ist der Eintrag ein Abschnittszeiger, der auf dem ersten Puffer im externen Speicher zeigt, in dem die ersten 256 Bytes eines Abschnitts gespeichert sind. Es sollte jedoch Fachleuten offensichtlich sein, dass die Ausgangs-Warteschlangen-Struktur 74 nicht auf Abschnittszeiger als Einträge begrenzt ist, sondern vielfach auf Warteschlangen mit anderer Arten von Einträgen, sowohl bei Mehrport-Schaltern als auch in anderen Technologien anwendbar ist.
  • Nachdem der Eintrag durchläuft und den Boden der Ausgangs-Warteschlangen-Schreibseite 76 erreicht, trifft die der Ausgangs-Warteschlange 74 zugeordnete Steuerlogik eine Entscheidung, was mit dem Eintrag zu tun ist. Wenn es Platz in der Ausgangs-Warteschlangen-Leseseite 78 gibt, und der Überlaufbereich 110 für diese Ausgangs-Warteschlange 74 leer ist, dann werden ein oder mehrere Einträge direkt von der Ausgangs-Warteschlangen- Schreibseite 76 an die Ausgangs-Warteschlangen-Leseseite 78 geleitet. Diese Leitung des Eintrags oder der Einträge direkt von der Schreibseite 76 an die Leseseite 78 wird vollständig auf dem Chip 12 durchgeführt, und ist daher ein schneller Durchlauf eines Eintrag mit niedriger Latenzzeit.
  • Wenn die Ausgangs-Warteschlangen-Leseseite 78 voll ist, und es mindestens eine Datenmenge von Bündel-Größe (z. B. 16 Bytes von Einträgen) in der Ausgangs-Warteschlangen-Schreibseite 76 gibt, dann werden die Daten bündelartig in einen Überlaufbereich 110 für diese Ausgangs-Warteschlange 74 geschrieben. Wenn die Ausgangs-Warteschlangen-Leseseite 78 voll ist, wobei es jedoch noch nicht eine Datenmenge von Bündelgröße in der Ausgangs- Warteschlangen-Schreibseite 76 gibt, bleibt der Eintrag in der Ausgangs- Warteschlangen-Schreibseite und es wird nichts weiter getan. Schließlich wird, wenn die Ausgangs-Warteschlangen-Leseseite 78 leer wird, und wenn die Ausgangs-Warteschlangen-Leseseite 78 genug Platz aufweist, um einen Datenmenge von Bündelgröße aufzunehmen, und es Daten in dem Überlaufbereich 110 gibt, wird ein Datenbündel von dem Überlaufbereich 110 in die Ausgangs-Warteschlangen-Leseseite 78 geliefert.
  • Bei der Ausgangs-Warteschlangen-Struktur verhält sich die Leseseite 78 meistens wie eine herkömmliche Warteschlange, da es von diesem Teil ist, das Einträge einzeln genommen werden. Die Ausgangs-Warteschlangen-Schreibseite 76 dient meistens als eine Sammelfunktion, um die Daten in Bündeln zum Schreiben in den externen Speicher 36 anzuordnen. Daher transformiert die vorliegende Erfindung einzelne Ereignisse (Platzieren eines Eintrags in die Ausgangs-Warteschlange 74) in ein Bündelereignis. Die Schreibseite 76 ermöglicht eine Akkumulierung von Daten, um sie dann, falls notwendig, in den Überlaufbereich 110 in dem externen Speicher 36 zu übertragen (burst). Der Überlaufbereich 110 liefert eine preiswerte Speicherung zu Zeiten einer Überlastung, und ordnet einer Funktion, die nur in relativ seltenen Fällen benötigt wird, keine kostspieligen Chipressourcen zu. Obgleich die vorliegende Erfindung einen Überlaufbereich 110 verwendet, der chipextern ist, wird der Zugriff auf diesen Bereich 110 auf eine Art durchgeführt, die wirksam ist, indem eine Anzahl von Bytes von Information zu einer Zeit übertragen werden. Dies ist im Gegensatz zu herkömmlichen Warteschlangen-Strukturen, bei denen einzelne Einträge in die Warteschlange geschrieben und aus dieser gelesen werden.
  • Während des Betriebs werden, wenn es eine Menge von Einträgen gibt, die an der Warteschlange 74 ankommen, diese Einträge in den Überlaufbereich 110 platziert, um ein Überlaufen der chipinternen Warteschlange 78 zu vermeiden.
  • Folglich wird das Löschen von Abschnitten größtenteils mit der Warteschlangen-Struktur der vorliegenden Erfindung verhindert. Ferner kann der Gesamtbetrag des den Überlaufbereichen 110 zugeordneten Speichers ohne weiteres durch Ändern der Größe des externen Speichers 36 geändert werden. Außerdem sind die Größen der einzelnen spezifischen Überlaufbereiche 110 programmierbar, um die Warteschlangen-Größen kundenspezifisch anzupassen, ohne sich auf die Leistung der Ausgangs-Warteschlangen 74 auszuwirken.
  • Typischerweise ist eine Warteschlange eine geordnete Struktur mit einer Zuerst-Hinein/Zuerst-Hinaus-Anordnung. Bei einigen Arten von Warteschlangen, wie beispielsweise der Regenerierungs-Warteschlange 98 und dem freien Puffer-Pool 104, spielt jedoch die Reihenfolge von Einträgen keine Rolle. Es ist möglich, Daten direkt von der Schreibseite 100 an die Leseseite 102 zu senden, wobei es die vorliegende Erfindung es möglich macht, dass Information direkt auf dieser Route gesendet wird, wobei der Überlaufbereich für die Warteschlange umgangen wird. Dies ist sogar dann erlaubt, wenn es Information in dem zugeordneten Überlaufbereich gibt, solange wie die Information nicht reihenfolge-empfindlich ist. Beispielsweise ist die Regenerierung von Puffern nicht reihenfolge-empfindlich, da jede Reihenfolge, mit der die Puffer schließlich in die freie Liste in dem freien Puffer-Pool 104 zurückkehren, nachdem der Puffer nicht länger benötigt wird, um den Abschnitt zu speichern, annehmbar ist. Somit wird, um das Aufsichziehen der Bandbreite eines Schreibvorgangs in dem Überlaufbereich 110 für die Regenerierungs- Warteschlange 98 in dem externen Speicher 36 zu vermeiden, wenn die Daten nicht reihenfolge-empfindlich sind, die Information direkt von der Schreibseite 100 an die Leseseite 102 geleitet, wobei angenommen wird, dass die Leseseite 102 Platz für mehr Einträge aufweist. Die Regenerierungs-Warteschlange 98 ist ein Beispiel einer Art einer Warteschlange, die Daten in Warteschlangen platziert, die nicht reihenfolge-empfindlich sind. Es gibt jedoch viele weitere Arten von Daten bei unterschiedlichen Anwendungen, die ebenfalls nicht reihenfolge-empfindlich sind, so dass dieses Merkmal der vorliegenden Erfindung bei Warteschlangen Anwendung findet, die diese anderen Arten von Daten in Warteschlangen platzieren.
  • Bei dem Mehrport-Schalter einer beispielhaften Ausführungsform der vorliegenden Erfindung, wie es in Fig. 1 und 2 dargestellt ist, gibt es achtundzwanzig Ausgangs-Warteschlangen, die jeweils einem Ausgangsport zugeordnet sind: vierundzwanzig für die 10 Megabit/s-Anwenderports, zwei für die 100 Megabit/s-Serverports, einen für den Managementport und einen für den Erweiterungsbus-Port. Die Ausgangs-Warteschlangen 74, 75 und 77 sehen eine vorübergehende Speicherung für Abschnittszeiger vor, wenn sie zur Übertragung in Warteschlangen platziert werden. Das Platzieren in Warteschlangen nimmt die Form des Portvektor-FIFOs 70 an, der Abschnittszeiger in die verschiedenen Ausgangs-Warteschlangen 74, 75 und 77 schreibt, die in einem Weiterleitungs-Portvektor angegeben sind.
  • Bei bestimmten bevorzugten Ausführungsformen der Erfindung enthalten die verschiedenen Ausgangs-Warteschlangen 74, 75 und 77 verschiedene oder alle der folgenden Gebiete: Einfachkopie-Bit, Abschnittszeiger, Steuer-Opcode oder Steuersignale und VLAN-Index (virtual local area network index). Das Einfachkopie-Bit kennzeichnet einen Abschnitt, der an nur einen Ausgangsport weiterzuleiten ist, durch ein Flag. Der Abschnittszeiger zeigt auf den Abschnitt im externen Speicher 36. Der Steuer-Opcode kennzeichnet besondere Information über den Abschnitt (d. h. neu gelernter Abschnitt, etc.). Die Steuersignale verwenden Information von dem Steuer-Opcode, um anzugeben, wie die Ports Abschnitte vor der Übermittlung handhaben werden. Der VLAN-Index liefert den Bezug auf eine VLAN-Markierung, die in den abgehenden Abschnitt eingefügt werden sollte (falls notwendig). Diese Felder sind jedoch nur beispielhaft, da die vorliegende Erfindung auf weitere Ausgangs-Warteschlangen mit unterschiedlichen Arten von Feldern anwendbar ist.
  • Die interne Struktur einer beispielhaften Ausführungsform einer ersten Art einer Ausgangs-Warteschlange 74, der 10 Megabit/s-Port-Ausgangs-Warteschlange, ist in Fig. 5 dargestellt. Die 10 Megabit/s-Ausgangs-Warteschlangen 74 halten Einträge für Abschnitte, die an die 10 Megabit/s-Ports weiterzuleiten sind. Die Ausgangs-Warteschlangen-Schreibseiten 76 für diese Warteschlangen halten zweiunddreißig Einträge, und die Ausgangs-Warteschlangen-Leseseiten 78 halten sechzehn Einträge bei der beispielhaft dargestellten Ausführungsform, obgleich weitere Größen in Betracht gezogen werden und innerhalb des Schutzumfangs der Erfindung sind. Jeder Eintrag in einer 10 Megabit/s-Ausgangs-Warteschlange 74 umfasst ein Einfachkopie-Bit und einen Abschnittszeiger (14 Bits). Bei der beispielhaften Ausführungsform des Mehrport-Schalters der vorliegenden Erfindung ist der VLAN-Index nicht notwendig, da es keine VLAN-Markierung an 10 Megabit/s-Ports gibt.
  • Die interne Struktur einer beispielhaften Ausführungsform einer zweiten Art der Ausgangs-Warteschlange 74, der 100 Megabit/s-Port-Ausgangs-Warteschlange, ist in Fig. 6 dargestellt. Die 100 Megabit/s-Port-Ausgangs- Warteschlangen halten Einträge für Abschnitte, die an die 100 Megabit/s-Ports weiterzuleiten sind. Die Ausgangs-Warteschlangen-Schreibseite 76 hält vierundsechzig Einträge in dieser Art einer Ausgangs-Warteschlange, und die Ausgangs-Warteschlangen-Leseseite hält sechzehn Einträge. Jeder Eintrag umfasst einen VLAN-Index, einen Teil-Steuer-Opcode (Bits 4-0), ein Einfachkopie-Bit und einen Abschnittszeiger.
  • Eine beispielhafte Abbildung des externen Speichers 36 ist in Fig. 7 dargestellt. Die Gesamtkapazität des externen Speichers 36 kann beispielsweise 4 Mb sein, obgleich weitere Kapazitätsspeicher bei unterschiedlichen Ausführungsformen benutzt werden. Die Verwendung eines externen Speichers 36 für die Überlaufbereiche gemäß der vorliegenden Erfindung ermöglicht ein Erhöhen oder Verringern der Größe der Ausgangs-Warteschlangen, in dem einfach die Größe des externen Speichers geändert wird. Dies ist ein Vorteil gegenüber Systemen, bei denen die Warteschlangen- Struktur vollständig auf dem Chip ist, da die Gesamt-Warteschlangen- Kapazität bei der Herstellung des Chips eingestellt wird.
  • Um die Speicheranforderungen des Schalters 12 zu erfüllen, ordnet eine beispielhafte Ausführungsform dem externen Speicher 36 Platz für die folgenden Bereiche zu: Freier Puffer-Pool-Überlauf 120, Regenerierungs- Warteschlangen-Überlauf 122, Mehrfachkopie-Warteschlangen-Überlauf 124, Managementport-Ausgangs-Warteschlangen-Überlauf 126, einzelne Ausgangs- Warteschlangen-Überlaufe 128 für jeden der 10 Megabit/s- und 100 Megabit/s-Bestimmungsports, Erweiterungsbus-Port-Ausgangs-Warteschlangen- Überlauf 130, die MIB-Zähler 132 und den Globalen-Abschnitts-Puffer-Pool 134.
  • Die BASE-Adresse für den gesamten Speicherbereich ist in einem Speicher- Basis-Adressenregister unter den Registern 60 auf dem Chip programmierbar. Die BASE-Adresse für jeden Bereich in der externen Speicherabbildung ist in dem Registersatz programmierbar. Kein Längenregister ist erforderlich, wobei die Länge für einen gegebenen Bereich gleich dem Bereich von dieser BASE- Adresse zu der BASE-Adresse des nächsten Bereichs in der Abbildung ist.
  • Da die Länge (und daher die Kapazität) jeder der einzelnen Überlaufbereiche programmierbar ist, ist die Gesamtkapazität jeder Warteschlange programmierbar. Diese Merkmal der vorliegenden Erfindung ermöglicht eine Anpassung an den Kunden des Schalters, um bestimmte Ausgangs-Warteschlangen mit erhöhter Kapazität bereitzustellen, wenn es benötigt wird.
  • Die folgenden Überlaufbereiche speichern Einträge, die nicht in die Steuer- Warteschlangen auf dem Chip 12 passen, und daher in den externen Speicher 36 platziert werden. Der freie Puffer-Pool-Überlaufbereich 120 speichert die Adressenzeiger an gegenwärtig unbenutzten Puffern in dem globalen Abschnitts-Puffer-Pool 134. Der Regenerierungs-Warteschlangen-Überlauf 122 speichert Abschnittszeiger an verknüpften Listenketten, die nicht länger benötigt werden. Der Mehrfachkopie-Warteschlangen-Überlaufbereich 124 speichert Abschnittszeiger mit Kopienzahl "≥1" (für in Warteschlangen platzierte Zeiger) und Abschnittszeiger mit Kopienzahl "-1" (für erfolgreich übermittelte Abschnitts).
  • Die folgenden Überlaufbereiche speichern Einträge für Ausgangs-Warteschlangen, die nicht auf den Chip passen. Der Managementport-Ausgangs-Warteschlangen-Überlaufbereich 126 speichert Abschnittszeiger, die auf die Übermittlung an den Managementport Warten. Die Ausgangs-Warteschlangen- Überlaufbereiche 128 speichern Abschnittszeiger, die auf die Übermittlung an den passenden 10 Megabit/s-Port oder 100 Megabit/s-Port warten. Der Erweiterungsbus-Port-Ausgangs-Warteschlangen-Überlaufbereich 130 speichert Abschnittszeiger, die auf die Übermittlung an den Erweiterungsbus-Port warten.
  • Der MIB-Zähler-Bereich 132 enthält alle die pro Port-Statistik, die periodisch von dem Schalter 12 aktualisiert wird. Der Schalter 12 unterhält 8-Bit- und 16-Bit-Zähler chipintern zum Speichern vom MIB-Statistik. Der Schalter 12 aktualisiert die 32-Bit- oder 64-Bit-MIB-Zähler im externen Speicher 36 mit der Frequenz, die erforderlich ist, um den Verlust von MIB-Daten zu verhindern.
  • Der globale Abschnittspuffer-Pool 134 enthält Puffer in verknüpften Listen, die empfangenen Abschnittsdaten speichern. Zu einer beliebigen gegebenen Zeit enthalten diese verknüpften Listen gültige Abschnittsdaten, veraltete Puffer, die von dem Puffermanager 72 an den freien Puffer-Pool 104 zurückgegeben oder im Besitz des PCI-Host-Prozessors 28 sind.
  • Mit Bezug nun auf Fig. 8 werden von einem beliebigen MAC-Port oder dem PCI-Bus empfangene Abschnittsdaten im externen Speicher 36 in einem verknüpften Listen-Datenstruktur-Format bei einer beispielhaften Ausführungsform der vorliegenden Erfindung gespeichert. Die Puffer 140, die verwendet werden, um die verknüpfte Liste zu erzeugen, weisen eine Länge von 256 Bytes auf, obgleich andere dimensionierte Pufferlängen in unterschiedlichen Ausführungsformen der Erfindung benutz werden. Adressenzeiger an jeden dieser Puffer 140 werden von dem freien Puffer-Pool 104 in dem Schalter 12 gespeichert.
  • Wenn ein Abschnitt an einem der Ports des Schalters 12 empfangen wird, fordert der Puffermanager 72 Adressenzeiger aus dem freien Puffer-Pool 104 zum Verknüpfen von Puffern 140 an, um den Abschnitt zu speichern. Der Adressenzeiger an dem ersten Puffer im externen Speicher 36, der den Abschnitt speichert, wird der erste Abschnittszeiger für diesen Abschnitt. Der Abschnittszeiger wird in dem Schalter-Subsystem 56 zum Platzieren in Warteschlangen von Abschnitten, die zu senden sind, verwendet.
  • Die Puffer 140 werden durch Adressenzeiger in jedem Puffer-Header 142 zusammengekettet, die den Platz des nächsten Puffers im Speicher angeben, Die Puffer-Header 142 enthalten ebenfalls weitere Information über die in dem Puffer 140 enthaltenen Abschnittsdaten. Der erste Header des Puffers ist 12 Bytes, wie es bei dem beispielhaften Puffer-Header-Format von Fig. 9a dargestellt ist. Jeder Header eines nachfolgenden Puffer ist 4 Bytes, wie es in Fig. 9b dargestellt ist. Die externen Speicherbündel sind zwei Bänke mal 16 Bytes lang, so dass die tatsächliche Abschnittsspeicherkapazität in jedem Puffer 256B - 16B = 240B ist.
  • Wie es in Fig. 9a und 9b dargestellt ist, enthalten die ersten und nachfolgenden Puffer-Header-Formate die folgenden Felder:
  • Puffer-Format-Bit: Gibt an, welches Pufferformat in Gebrauch ist. Eine Eins gibt das Format des ersten Puffers an, dessen Länge 12 Bytes ist. Eine Null gibt das Format eines nachfolgenden Puffers an, das 4 Byte ist. Es wird für jeden der verbleibenden Puffer beim Verketten von Puffern verwendet.
  • E-Bit (Abschnittsendemarkierer): Gibt an, dass dies der letzte Puffer für einen Abschnitt ist. Wenn das E-Bit gesetzt ist, gibt es keine weiteren Puffer in der Kette.
  • C-Bit (CRC Fehler erfasst): Gibt einen CRC-Fehler an, der von dem Empfänger erfasst wurde. Wenn das C-Bit erfasst ist, wird die Übermittlungsfunktion absichtlich ein invertiertes CRC senden.
  • L-Bit (Ausrichtungsfehler): Gibt an, dass ein Abschnitts-Ausrichtungsfehler (zusammen mit einem CRC-Fehler) in dem Empfangsabschnitt erfasst wurde.
  • O-Bit (Empfangs-FIFO-Überlauf) Gibt an, dass das Empfangs-FIFO übergelaufen ist und dass die Daten in dem Puffer nicht gültig sein können.
  • Pufferlänge: Die Gesamtanzahl von Bytes, die in den Datenfeld des Puffers gültig sind, beginnend mit dem ersten Byte nach dem Puffer-Header. Diese Länge sollte nicht den Offset-Byte-Wert enthalten.
  • Nächste-Puffer-Zeiger: Der Zeiger auf den nächsten Puffer. Der Nächste- Puffer-Zeiger ist nicht gültig, wenn das E-Bit gesetzt ist.
  • Offset-Byte-Zählwert: Gibt an, wo das erste Byte des Abschnitts in der Abschnittsdaten-Sektion des Puffers beginnt. Ein Offset von Null bedeutet, dass die Daten an dem ersten Byte nach dem Puffer-Header 142 beginnen werden. Ein Offset von Null gibt an, dass Abschnittsdaten an dem Byte nach dem 16ten Byte in dem Puffer beginnen werden. Für Nicht-Null-Werte des Offsets werden Abschnittsdaten nach 16B + Offset von dem Anfang des Puffers beginnen. Die Übermittlungsfunktion wird die Anzahl von Bytes, die in dem Offset-Byte-Feld angegeben sind, überspringen.
  • P-Bit (Port-Typ): Gibt den Port-Typ des ankommenden Empfangsabschnitts an. Eine Null gibt einen 10 Megabit/s-Port und eine Eins gibt einen 100 Megabit/s-Port an. Dieses Bit wird von dem Host 28 in Verbindung mit dem Zeitstempel-Feld verwendet, wenn er den Schalter 12 programmiert, um Abschnitte an den Erweiterungsbus weiterzuleiten, bevor der Abschnitt vollständig empfangen und an dem externen Speicher 36 gepuffert ist.
  • T-Bit: Gibt die Art des empfangenen Abschnitts an: markiert oder unmarkiert. Eine Eins gibt einen markierten Abschnitt an, und das VLAN-Identifizierer-Feld enthält die empfangene VLAN-ID. Eine Null gibt einen nicht markierten Abschnitt an, und die VLAN-ID ist nicht gültig.
  • Empfangsport-Nummer: Die Nummer des Ports, von dem der Abschnitt empfangen wurde.
  • VLAN-Identifizierer: Die VLAN-ID, die von einem "markierten" Port empfangen wurde. Wenn der Abschnitt von einem nicht markierten Port empfangen wurde, ist dieses Feld ungültig.
  • R-Bit (CRC neuberechnen): Gibt an, dass die CRC abgelöst und bei der Übermittlungsfunktion neu berechnet werden muss. Der Schalter 12 setzt diese Bit, wenn ein markierter Abschnitt empfangen wird. Ausserdem sollte, wenn der Host 28 den Inhalt eines Abschnitts modifiziert, der Host 28 dieses Bit setzen. Wenn der Schalter 12 ein Abschnitt sendet, wird er dieses Bit prüfen, um zu bestimmen, ob die existierende CRC zu senden oder abzulösen und die CRC neu zu berechnen ist.
  • A-Bit (CRC hinzufügen): Gibt an, dass es keine CRC an dem Ende der Abschnittsdaten gibt. Der Host kann einem Abschnitt im Speicher (ohne eine CRC) erzeugen und dann dieses Bit setzen. Der Schalter 12 wird eine CRC erzeugen und hinzufügen, wenn der Abschnitt gesendet wird. Wenn das A-Bit gesetzt ist, sollte die Abschnittslänge nicht die CRC enthalten.
  • F-Bit (Formatbit): Kennzeichnet das Abschnittlängen/Zeitstempel-Feld. Eine Null gibt an, dass das Feld der Zeitstempel des ankommenden Abschnitts ist. Eine Eins gibt an, dass das Feld die Abschnittslänge des empfangenen Abschnitts ist.
  • Abschnittslänge/Zeitstempel: Abhängig vom F-Bit. Wenn das F-Bit gelöscht ist, gibt dieses Feld den Zeitstempel von dem Anfang des empfangenen Abschnitts an. Der Zeitstempel weist eine Auflösung von 1 us auf. Wenn das F-Bit gesetzt ist, gibt es die Gesamtlänge des empfangenen Abschnitts einschließlich der CRC und jeder empfangenen VLAN-Markierung an. Wenn ein Abschnitt empfangen wird, markiert der Schalter 12 dieses Feld mit dem Zeitstempel (aus dem Zeitgeber-Register). Wenn der Host 28 den Schalter 12 programmiert hat, um Erweiterungsbus-Abschnitte weiterzuleiten, bevor der Abschnitt vollständig empfangen wurde, kann er den Zeitstempel verwenden (zusammen mit der Geschwindigkeit des Empfangsports), um abzuschätzen, wie viele Daten er aus dem externen Speicher 36 ohne Überlesen der Abschnittsdaten abrufen kann. Sobald der gesamte Abschnitt empfangen wurde, schreibt der Schalter 12 die Abschnittslänge in dieses Feld und setzt das F- Bit.
  • Kopienzahl: Wird verwendet, um die Zahl von Kopien anzugeben, die erfolgreich zur Übermittlung von dem Portvektor-FIFO 70 in eine Warteschlange platziert wurden. Dieses Feld wird verwendet, um die Kopienzahl für einen Abschnittszeiger zu speichern, wenn der Puffermanager 72 in dem Mehrfachkopie-Cache-Speicher 96 Platz für neue Einträge schaffen muss.
  • Fig. 10 ist eine ausführliche Darstellung einiger der Elemente des Schalter- Subsystems 56 von Fig. 3. Diese Elemente werden verwendet, um die Puffer zum Speichern von Abschnitten bereitzustellen, und diese Puffer zu regenerieren und sie der erneuten Verwendung verfügbar zu machen, sobald die Puffer nicht länger zum Speichern des Abschnitts benötigt werden. Wie es vorher beschrieben wurde, leitet jede Ausgangs-Warteschlange 74, 75, (mit Ausnahme der Ausgangs-Warteschlange 77) Abschnittszeiger an den Puffermanager 72, der Übermittlungen der Abschnitte plant, auf die von den Abschnittszeigern gezeigt wird. Der Puffermanager 72 steuert die folgenden Funktionen: 1) Verwalten der internen Busse des Schalters 12; 2) Ermöglichen des Platzierens/Deplatzierens in Warteschlangen und Platzierens von Abschnittszeigern in/aus den Ausgangs-Warteschlangen 74; 3) Verwalten der Steuer-Warteschlangen 90, 98, um Puffer zu lokalisieren und sie an den freien Puffer-Pool 104 zurückzugeben; 4) Steuern des Flusses von Daten zu und von dem externen Speicher 36; und 5) Beibehalten der Speicherstrukturen einschließlich MIBs und Überlaufbereiche. Der Puffermanager 72 enthält eine Planungsfunktion zum Zuordnen aller Zugriffe auf den externen Speicher 36. Diese Zugriffe umfassen 1) ein Schreiben von empfangenen Abschnittsdaten in Speicherpuffer 140, 2) das Lesen von Abschnittsdaten aus den Speicherpuffern 140 zur Übermittlung und 3) Beibehalten (d. h. Schreiben und Lesen) der Abschnittszeiger in jedem der Überlaufbereiche für die Ausgangs-Warteschlangen 74 und die Steuer-Warteschlangen 90, 98 und 4) Aktualisieren von MIB-Zählern.
  • Nachdem der Puffermanager 72 einen gegebene Abschnittszeiger an die (alle) passende(n) Ausgangs-Warteschlange(n) 74, 75 kopiert hat, berechnet der Portvektor-FIFO 70 die Zahl von Kopien (die "Kopienzahl") und platziert den Abschnittszeiger und die Kopienzahl in die Schreibseite 92 der Mehrfachkopie- Warteschlange 90. Die Kopienzahl kann eine "0" sein, was angibt, dass der Abschnitt nicht weitergeleitet werden sollte, eine "1", was eine Einfachkopie- Übermittlung angibt oder eine Zahl "> 1" sein, was eine Mehrfachkopie- Übermittlung angibt. Diese drei Fälle werden nachstehend beschrieben.
  • Wenn die Kopienzahl "0" ist, was bedeutet, dass der Abschnittszeiger einen Null-Weiterleitungs-Portvektor mit keinen gesetzten Bits aufweist, leitet der Portvektor-FIFO 70 den Abschnittszeiger direkt an die Schreibseite 100 der Regenerierungs-Warteschlange 98. Wenn der Puffermanager 72 die Regenerierungs-Warteschlange 98 bedient, wie es beschrieben wird, bricht der Puffermanager 72 die verknüpfte Liste von Ketten von Puffern auf und gibt den Adressenzeiger für jeden "freien" Puffer an die Schreibseite 106 des freien Puffer-Pools 104 zurück.
  • Wenn die Kopienzahl "1" ist, eine Einfachkopie-Übermittlung, kopiert der Portvektor-FIFO 70 den Abschnittszeiger, einen Steuersignale/Steuer-Opcode und den VLAN-Index an der Ausgangs-Warteschlange 74 des passenden Ports. Der Portvektor-FIFO 70 setzt das Einfachkopie-Bit in der Ausgangs- Warteschlange 74 (siehe Fig. 5 und 6), um anzugeben, dass dies eine einzige Übermittlung ist. Wenn der Puffermanager 72 den Abschnittszeiger und das Einfachkopie-Bit aus der Ausgangs-Warteschlange 74 des Ports liest, plant er die Übermittlung, wie es vorher erläutert wurde. Der Puffermanager 72 verwendet den Abschnittszeiger, um den ersten Puffer im externen Speicher 36 zu lokalisieren, in dem der Abschnitt gespeichert ist. Der Puffermanager 72 liest den Puffer-Header aus diesem ersten Puffer, erfasst Daten aus dem ersten Puffer und platziert diese Daten in den passenden MAC- Sende-FIFO 54. Die Verknüpfungen mit nachfolgenden Puffern beliefern, unter der Voraussetzung, das der Abschnitt mehrere Puffer überspannt, den Puffermanager 72 mit der Adresse, um alle Puffer in der Kette für diesen Abschnitt zu finden und zu senden. Sobald die Daten in dem FIFO 54 zur Übermittlung platziert wurden, ist der Puffer veraltet und wird an den freien Puffer-Pool 104 zur schließlichen Neuzuordnung geschickt, um Daten eines weiteren Abschnitts zu speichern.
  • Wenn die Kopienzahl größer als Eins ist, kopiert der Portvektor-FIFO 70 den Abschnittszeiger, den VLAN-Index und den Steuersignal/Steuer-Opcode an jede der passenden Ausgangs-Warteschlangen 74. (Wenn auf Warteschlangen 74 Bezug genommen wird, wird ebenfalls auf die Warteschlangen 75, 77 Bezug genommen). Der Portvektor-FIFO 70 löscht das Einfachkopie-Bit für die passenden Abschnittszeiger in den Ausgangs-Warteschlangen 74 und platziert den Abschnittszeiger mit einer Kopienzahl von "> 1" in die Schreibseite 92 der Mehrfachkopie-Warteschlange 90.
  • Wann immer der Puffermanager 72 einen Abschnittszeiger und ein gelöschtes Einfachkopie-Bit aus einer der Ausgangs-Warteschlangen 74 liest, plant der Puffermanager 72 die Übermittlung des Abschnitts, wobei er jedoch ebenfalls der Mehrfachkopie-Cache-Speicher 96 nach einen Eintrag mit einem Abschnittszeiger mit einer Kopienzahl von "1" prüft. Wenn ein Abschnittszeiger mit einer Kopienzahl von "1" in dem Mehrfachkopie-Cache-Speicher 96 gefunden wird, dann plant der Puffermanager 72 den Abschnitt zur Übermittlung ein und regeneriert die Puffer während der Übermittlung auf die gleiche Art und Weise wie bei der Einfachkopie-Übermittlung eines Abschnitts. Wenn jedoch der Abschnittszeiger nicht in dem Mehrfachkopie-Cache-Speicher 96 ist oder die Kopienzahl des Abschnittszeigers in dem Mehrfachkopie-Cache- Speicher 96 größer als Eins ist, dann sendet der Puffermanager 72 den Abschnitt, wobei er jedoch die Puffer nicht regeneriert. Nach einer erfolgreiche Übermittlung platziert der Puffermanager 72 eine Kopie des Abschnittszeigers zusammen mit einer Kopienzahl von "-1" in die Schreibseite 92 der Mehrfachkopie-Warteschlange 90.
  • Jedesmal, wenn ein Mehrfachkopie-Abschnitt gesendet wird, platziert der Puffermanager 72 eine Kopie des Abschnittszeigers in die Mehrfachkopie- Warteschlange 90, vorausgesetzt dass der Puffermanager 72 den Abschnittszeiger in dem Mehrfachkopie-Cache-Speicher 96mit einer Kopienzahl von "1" nicht gefunden hat. Folglich kann zu einer beliebigen gegebenen Zeit die Mehrfachkopie-Warteschlange 90 den Abschnittszeiger mit einer Kopienzahl, die "> 1" ist, und/oder mehrere Kopien des gleichen Abschnittszeigers jeweils mit einer Kopienzahl von -1 enthalten.
  • Der Puffermanager 72 bedient fortwährend die Mehrfachkopie-Warteschlange 90 und den Mehrfachkopie-Cache-Speicher 96, um veraltete Puffer zu regenerieren. Wenn er die Mehrfachkopie-Warteschlange 90 bedient und einen Abschnittszeiger mit einer Kopienzahl "> 1" liest, versucht der Puffermanager 72 diesen neuen Eintrag (Abschnittszeiger und Kopienzahl) in den Mehrfachkopie-Cache-Speicher 96 zu platzieren. Wenn der Mehrfachkopie-Cache- Speicher 96 voll ist, schafft der Puffermanager 72 Platz für den neuen Abschnittszeiger. Der Puffermanager 72 liest einen "älteren" Mehrfachkopie- Cache-Eintrag, aktualisiert die Kopienzahl für diesen Eintrag in seinen Puffer- Header in dem externen Speicher 36, löscht dann den Eintrag aus dem Mehrfachkopie-Cache-Speicher 96. Wenn Platz in dem Mehrfachkopie-Cache- Speicher 96 verfügbar wird, ist der Puffermanager 72 imstande, den neuen Eintrag aus der Mehrfachkopie-Warteschlange 90 in den Mehrfachkopie-Cache- Speicher 96 zu platzieren.
  • Wenn der Puffermanager 72 die Mehrfachkopie-Warteschlange 90 bedient und einen Abschnittszeiger mit einer Kopienzahl von "-1" liest, durchsucht er den Mehrfachkopie-Cache-Speicher 96, wobei nach einer übereinstimmenden Abschnittszeiger-Adresse mit einer Kopienzahl "≥1" gesucht wird, um zu dekrementieren oder zu löschen. Wenn der Puffermanager 72 eine Abschnittszeiger- Übereinstimmung findet, wird der Puffermanager 72 : 1) Den Abschnittszeiger des Mehrfachkopie-Cache-Speichers dekrementieren, wenn die Kopienzahl "> 1" ist, oder 2) den Abschnittszeiger/Kopienzahl-Eintrag des Mehrfachkopie- Cache-Speichers löschen und den Abschnittszeiger in die Regenerierungs- Warteschlange 98 platzieren, wenn die Kopienzahl "1" ist.
  • Wenn der Puffermanager 72 keinen übereinstimmenden Abschnittszeiger findet, durchsucht der Puffermanager 72 den Puffer-Header des Abschnittszeiger im externen Speicher 36 (siehe Fig. 9) nach der Kopienzahl. Wenn die Kopienzahl im Speicher "1" ist, platziert der Puffermanager 72 den Abschnittszeiger in die Regenerierungs-Warteschlange 98. Wenn die Kopienzahl im Speicher "> 1" ist, platziert der Puffermanager 72 den Abschnittszeiger mit dieser Kopienzahl in den Mehrfachkopie-Cache-Speicher 96 und dekrementiert dann die Kopienzahl.
  • Der Puffermanager 72 bedient fortwährend die Regenerierungs-Warteschlange 98 durch Lesen von Abschnittszeigern, wobei dann die verknüpfte Listenkette "abgelaufen" wird, um Puffer in den freien Puffer-Pool 104 zurückzugeben. Diese Aktivität gibt Puffer nur für Abschnitte zurück, die Null-Portvektoren aufweisen und in die Regenerierungs-Warteschlange durch den Portvektor- FIFO 70 platziert wurden, oder für Abschnitte mit einem Mehrfachkopie- Weiterleitungsvektor, und die die Übermittlungen aller Kopien beendet haben. Für Einfachkopie-Abschnitte verknüpfte Puffer werden direkt in den freien Puffer-Pool 104 zurückgegeben, wenn der Abschnitt gesendet wird, wie es oben beschrieben ist.
  • Wenn der Portvektor-FIFO 70 nicht imstande ist, einen Abschnittszeiger für einen Einfachkopie-Weiterleitungs-Vektor in eine Ausgangs-Warteschlange 74 zu platzieren, da diese Ausgangs-Warteschlange 74 und ihr Überlaufbereich 110 im externen Speicher 36 voll sind, wird der Abschnitt gelöscht. Der Abschnittszeiger wird an die Regenerierungs-Warteschlange 98 zurückgegeben, und das Löschen des Abschnitts wird von den Managementressourcen des Schalters notiert.
  • Wenn der Portvektor-FIFO 70 nicht imstande ist, einen oder mehrere Abschnittszeiger für einen Mehrfachkopie-Weiterleitungsvektor zu platzieren, da eine oder mehrere der Ausgangs-Warteschlangen 74 und ihre Überlaufbereiche 110 im externen Speicher 36 voll sind, wird der Abschnitt nur an die Ausgangs-Warteschlangen mit verfügbaren Platz weitergeleitet, die in die Mehrfachkopie-Warteschlange 90 platzierte Kopienzahl wird nur die erfolgreich platzierten Abschnittszeiger widerspiegeln, Die Nichtplatzierung des Abschnittszeigers wird von den Schalter-Managementressourcen für jeden der Ports notiert, für die die Abschnittszeiger nicht in Warteschlangen platziert werden konnten. Wenn der Portvektor-FIFO 70 nicht imstande ist, irgendeinen der Abschnittszeiger für einen Mehrfachkopie-Weiterleitungsvektor zu platzieren, da alle Ausgangs-Warteschlangen 74 und ihre Überlaufbereiche 110 im externen Speicher 36 voll sind, wird der Abschnittszeiger an die Regenerierungs-Warteschlange 98 geleitet, und die Schalter-Managementressourcen werden ordnungsgemäß benachrichtigt.
  • Die Logik zum Implementieren der oben beschriebenen, von dem Portvektor- FIFO 70 unternommenen Maßnahmen, die beispielsweise bestimmen, welche der Ausgangs-Warteschlangen voll sind, und die Platzierung der Abschnittszeiger in nur diejenigen Warteschlangen, die nicht voll sind, und Löschen des Restes wird ohne weiteres von gewöhnlichen Fachleuten geliefert, die mit dieser Funktionsbeschreibung versehen sind. Beispielsweise kann der Füllgrad der Ausgangs-Warteschlangen durch einen Vergleich der Zahl von Abschnittszeigern in einer bestimmten Ausgangs-Warteschlange (wie es in einem der Register 60 verfolgt wird) und Vergleichen dieser Zahl mit einer Schwellenzahl, die angibt, dass die Warteschlange voll ist, bestimmt werden. Bei dieser Erkennung löscht der Portvektor-FIFO 70 einfach den Abschnittszeiger, der in diese Ausgangs-Warteschlange geladen werden sollte, und erhöht einen Zählwert (in einem weiteren Register 60 gehalten) der Zahl gelöschter Abschnittszeiger für diesen Mehrfachkopie-Abschnitt.
  • Die Mehrfachkopie-Warteschlange 90 ist eine Warteschlange mit hoher Priorität, die von dem Puffermanager 72 verwendet wird, um zu verfolgen, wie viele Übermittlungen eines bestimmten Mehrfachkopie-Abschnitts abgeschlossen sein müssen, bevor alle Puffer (d. h. Adressenzeiger), die verwendet werden, um den Abschnitt zu speichern, in den freien Puffer-Pool 104 zurückgegeben werden können. Die Schreibseite 92 und die Leseseite 94 dieser Ausgangs-Warteschlangen halten 64 bzw. 16 Einträge. Die Mehrfachkopie-Warteschlange 90 speist des Mehrfachkopie-Cache-Speicher 96, der von dem Puffermanager 72 verwendet wird, um zu bestimmen, wann Puffer zu regenerieren sind. Der interne Aufbau der Mehrfachkopie-Warteschlange ist in Fig. 12 dargestellt.
  • Der Portvektor-FIFO 70 platziert eine Kopie eines Abschnittszeigers eines Abschnitts und die Kopienzahl, die "> 1" ist, basierend auf der Anzahl der Abschnittszeiger, die er erfolgreich in die Ausgangs-Warteschlange 74 platziert hat, in die Mehrfachkopie-Warteschlange 90. Wenn eine bestimmte Ausgangs- Warteschlange 74 des Ports voll ist, kann der Portvektor-FIFO 70 keine Kopie des Abschnittszeigers in die Ausgangs-Warteschlange 74 platzieren, folglich kann er dies nicht als ein erfolgreiches Ereignis beim Bestimmen der Kopienzahl aufnehmen.
  • Jedesmal, wenn der Puffermanager 72 einen Ausgangs-Warteschlangen-Abschnittszeiger liest und findet, dass das Einfachkopie-Bit "0" (d. h. eine Mehrfachkopie) ist, prüft er den Mehrfachkopie-Cache-Speicher nach dem Abschnittszeiger mit einer Kopienzahl von "1", die angibt, dass dies die letzte Übermittlung ist. Wenn diese Übereinstimmung gefunden ist, sendet der Puffermanager 72 den Abschnitt und regeneriert die Puffer auf die gleiche Art und Weise wie bei der Einfachkopie-Übermittlung durch Liefern des veralteten Puffer an den freien Puffer-Pool 104 nach der Übermittlung des Inhalts jedes Puffers. Wenn die Übereinstimmung nicht gefunden ist, sendet der Puffermanager 72 den Mehrfachkopie-Abschnitt und platziert eine Kopie des Abschnittszeigers mit einer Kopienzahl von "-1" in die Mehrfachkopie- Warteschlange 90. Wenn ein Host die Verwendung eines Mehrfachkopie- Abschnittszeiger für einen Abschnitt abgeschlossen hat, der in die Warteschlange in der Erweiterungsbus-Ausgangs-Warteschlange 75 oder der Managementport-Ausgangs-Warteschlange 7T platziert wurde (durch die PCI- Schnittstelle 26), schreibt der Host eine Kopie des Abschnittszeigers mit einer Kopienzahl von "-1" in die Mehrfachkopie-Warteschlange durch ein Abschnittszeiger-Register. Dieses Register ist eines der in den Block von Registern 60 in Fig. 2 dargestellten Register.
  • Auf ähnliche Weise wie die Ausgangs-Warteschlangen 74 ist die Mehrfachkopie-Warteschlange 90 mit einem Eingangspfad und einem Ausgangspfad aufgebaut. Der Eingangspfad, oder die Schreibseite, ermöglicht es dem Portvektor-FIFO 70 und dem Puffermanager Abschnittszeiger/Kopienzahlen in die Mehrfachkopie-Warteschlange 90 zu platzieren. Der Ausgangspfad oder Leseseite ermöglicht es der Mehrfachkopie-Warteschlange 90, Abschnittszeiger/Kopienzahlen in den Mehrfachkopie-Cache-Speicher 96 zu platzieren. Zusätzlicher Speicher für Abschnittszeiger/Kopienzahlen, die als Mehrfachkopie-Warteschlangen-Überlauf 124 bezeichnet werden, wird im externen Speicher 36 bereitgestellt.
  • Wenn die Abschnittszeiger/Kopienzahlen in eine leere Mehrfachkopie-Warteschlange 90 geschrieben werden, laufen sie von der Schreibseite 92 zu der Leseseite 94, bis die Leseseite 94 voll ist. Zusätzliche Abschnittszeiger/- Kopienzahlen, die in die Schreibseite 92 der Mehrfachkopie-Warteschlange 90 geschrieben werden, werden in den Mehrfachkopie-Warteschlangen-Überlaufbereich 124 in externen Speicher 36 platziert. Sobald die Leseseite 94 der Mehrfachkopie-Warteschlange 90 und ihr Überlaufbereich 124 voll sind, beginnen zusätzliche Abschnittszeiger/Kopienzahlen, die in die Mehrfachkopie- Warteschlange platziert sind, die Schreibseite 92 zu füllen.
  • Die Ordnung der durch die Mehrfachkopie-Warteschlange 90 laufenden Abschnittszeiger wird beibehalten, so dass, wenn der Platz in der Mehrfachkopie- Warteschlangen-Leseseite 94 leer wird, die Abschnittszeiger/Kopienzahlen von dem Mehrfachkopie-Warteschlangen-Überlaufbereich 124 in die Mehrfachkopie-Warteschlangen-Leseseite 94 und von der Mehrfachkopie-Warteschlangen-Schreibseite 92 in den Mehrfachkopie-Warteschlangen-Überlaufbereich 124 bewegt werden.
  • Der Mehrfachkopie-Cache-Speicher 96 ist der Mehrfachkopie-Warteschlange 90 ähnlich, wobei er jedoch eine durchsuchbare Bereich zum Abtasten von Abschnittszeigers/Kopienzahlen bereitstellt. Der Mehrfachkopie-Cache-Speicher 96 hält bis zu 256 Einträge. Der Puffermanager 72 liest einen Abschnittszeiger aus der Mehrfachkopie-Warteschlange 90 und platziert ihn entweder in den Mehrfachkopie-Cache-Speicher 96 oder verarbeitet ihn abhängig davon, ob die Kopienzahl "> 1" oder "-1" ist.
  • Ausserdem plant jedesmal, wenn der Puffermanager 72 einen Abschnittszeiger aus der Leseseite 78 einer Ausgangs-Warteschlange 74 liest, plant der Puffermanager 72 die Übermittlung. Wenn das Einfachkopie-Bit "0" ist (was ein Mehrfachkopie-Abschnitt bedeutet), tastet der Puffermanager 72 den Mehrfachkopie-Cache-Speicher 96 nach dem Abschnittszeiger mit einer Kopienzahl von "1" ab, die angibt, dass dies die letzte Übermittlung dieses Abschnitts ist. Wenn es eine Übereinstimmung gibt, entfernt der Puffermanager 72 den Eintrag und gibt Puffer an den freien Puffer-Pool während einer Abschnittsübermittlung zurück. Wenn es keine Übereinstimmung gibt, platziert der Puffermanager 72 den Abschnittszeiger mit einer Kopienzahl von "-1" in die Mehrfachkopie-Warteschlange 90 bei Beendigung der Übermittlung.
  • Der Puffermanager 72 bedient periodische die Mehrfachkopie-Warteschlange 90 durch Lesen eines Abschnittszeigers/einer Kopienzahl und durch Platzieren desselben/derselben in den Mehrfachkopie-Cache-Speicher 96 oder durch Verarbeiten desselben/derselben. Dies wird unabhängig von der Abschnittsübermittlung durchgeführt. Es folgen zwei Fälle abhängig davon, ob der 7 Puffermanager einen Abschnittszeiger mit einer Kopienzahl "> 1" oder "-1" liest:
  • 1) Der Puffermanager 72 liest einen Abschnittszeiger mit einer Kopienzahl "> 1" aus der Mehrfachkopie-Warteschlange 90. Vorausgesetzt, dass es in dem Mehrfachkopie-Cache-Speicher 96 Platz gibt, schreibt er einen neuen Eintrag. Wenn der Mehrfachkopie-Cache-Speicher 96 voll ist, muss der Puffermanager 72 in dem Cache-Speicher 96 Platz freimachen. Dies wird durch Lesen eines/einer der älteren Abschnittszeiger/Kopienzahlen aus der Mehrfachkopie-Cache-Speicher 96 durchgeführt, wobei der Puffer-Header dieses Abschnittszeigers im externen Speicher 36 mit der Kopienzahl in dem Mehrfachkopie-Cache-Speicher 96 aktualisiert wird, wobei dann dieser Cache-Eintrag gelöscht wird. Sobald es Platz gibt, wird der neue Abschnittszeiger/die neue Kopienzahl in den Mehrfachkopie-Cache- Speicher 96 geschrieben.
  • 2) Der Puffermanager 72 liest einen Abschnittszeiger mit einer Kopienzahl "- ≥1" aus der Mehrfachkopie-Warteschlange 90. Der Puffermanager 72 durchsucht den Mehrfachkopie-Cache-Speicher 96 nach einem übereinstimmenden Abschnittszeiger mit einer Kopienzahl "≥1". Es folgen zwei Fälle abhängig davon, ob der Puffermanager 72 eine Abschnittszeiger-Übereinstimmung in dem Mehrfachkopie-Cache-Speicher 96 findet:
  • a) Der Puffermanager 72 findet eine Abschnittszeiger-Übereinstimmung. Wenn die Kopienzahl des Eintrags des Mehrfachkopie-Cache-Speichers 96 "1" ist, löscht der Puffermanager 72 den Mehrfachkopie-Cache- Eintrag und platziert den Abschnittszeiger in die Regenerierungs- Warteschlange 98. Wenn die Kopienzahl des Cache-Eintrags "> 1" ist, dekrementiert der Puffermanager 72 die Kopienzahl um "1".
  • b) Der Puffermanager 72 findet keine Abschnittszeiger-Übereinstimmung in dem Mehrfachkopie-Cache-Speicher 96. Dies bedeutet, dass der übereinstimmende Abschnittszeiger vorher in den Puffer-Header der verknüpften Listenkette des Abschnitts im externen Speicher 36 bewegt wurde. Der Puffermanager 72 muss zu dem Puffer-Header gehen und die Kopienzahl lesen. Wenn dieser Wert (im Speicher) "1" ist, wird der Abschnitt nicht länger benötigt, und der Puffermanager 72 platziert den Abschnittszeiger in die Regenerierungs-Warteschlange 98. Wenn dieser Wert (im Speicher) "> 1" ist, platziert der Puffermanager 72 eine Kopie des Abschnittszeigers/der Kopienzahl (die im externen Speicher 36 war) in den Mehrfachkopie-Cache-Speicher 96 und dekrementiert die Kopienzahl um "1". Wenn der Mehrfachkopie-Cache-Speicher 96 voll ist, macht der Puffermanager Platz frei, indem einer der älteren Abschnittszeiger/Kopienzahlen in den externen Speicher 36 bewegt werden.
  • Die Regenerierungs-Warteschlange 98 hält die Abschnittszeiger an den verknüpften Listenketten, die nicht länger benötigt werden. Der Puffermanager 72 schreibt einen Abschnittszeiger in die Regenerierungs-Warteschlänge, wenn er den Mehrfachkopie-Cache-Speicher bedient und entdeckt, dass die Kopienzahl des Abschnittszeigers "1" ist (d. h. die letzte Übermittlung des Abschnitts wurde erfolgreich beendet). Ausserdem schreibt der Portvektor-FIFO 70 Abschnittszeiger in die Regenerierungs-Warteschlange 98 unter den folgenden Bedingungen: 1) Ein Portvektor des Abschnittszeigers ist Null oder 2) der Abschnittszeiger konnte nicht in eine Warteschlange platziert werden, da alle Ausgangs-Warteschlangen des Weiterleitungsvektors voll waren. Schließlich schreibt der Host einen Abschnittszeiger in die Regenerierungs-Warteschlange 98 (mit einem Abschnittszeiger-Register), wenn er damit fertig ist, einen Einfachkopie-Bit-Abschnitt zu verwenden, der in die Erweiterungsbus-Ausgangs-Warteschlange 77 oder die Managementport-Ausgangs-Warteschlange 75 platziert wurde.
  • Wenn der Puffermanager 72 Regenerierungs-Warteschlangen-Einträge verarbeitet, läuft er durch eine verknüpfte Listenkette eines Abschnittszeigers, um jeden Puffer an den freien Puffer-Pool 104 zurückzugeben. Der interne Aufbau der Regenerierungs-Warteschlangen-Struktur ist nicht dargestellt, sondern enthält nur die Abschnittszeiger (14 Bit) bei der beispielhaften Ausführungsform der Erfindung. Die Schreibseite der Regenerierungs-Warteschlange 100 hält 64 Einträge, und die Schreibseite der Regenerierungs- Warteschlange 102 hält 16 Einträge.
  • Die Regenerierungs-Warteschlange 98 ist ähnlich der Ausgangs-Warteschlangen 74 mit einem Eingangspfad und einem Ausgangspfad aufgebaut. Der Eingangspfad oder die Schreibseite 100 ermöglicht es dem Puffermanager 72, Abschnittszeiger in die Regenerierungs-Warteschlange 98 zu platzieren. Der Ausgangspfad oder die Leseseite 102 ermöglicht es dem Puffermanager 72, einen Abschnittszeiger zu lesen und alle zugeordneten Puffer in den freien Puffer-Pool 104 zurückzugeben. Zusätzlicher Speicher für Abschnittszeiger wird in dem Regenerierungs-Warteschlangen-Überlaufbereich 122, der im externen Speicher 36 vorgesehen ist, bereitgestellt.
  • Wenn Abschnittszeiger in eine leere Regenerierungs-Warteschlange 98 geschrieben werden, laufen sie von der Schreibseite 100 zu der Leseseite 102, bis die Leseseite 102 voll ist. Zusätzliche in die Schreibseite 100 der Regenerierungs-Warteschlange 98 geschriebene Abschnittszeiger werden in den Regenerierungs-Warteschlangen-Überlaufbereich 122 im externen Speicher 36 platziert. Sobald die Leseseite 102 und der Überlaufbereich 122 der Regenerierungs-Warteschlange 98 voll sind, beginnen zusätzliche, in die Warteschlange 98 platzierte Abschnittszeiger die Schreibseite 100 zu füllen.
  • Fig. 11 stellt eine beispielhafte Ausführungsform der internen Struktur des freien Puffer-Pools 104 dar. Der freie Puffer-Pool 104 ist ein FIFO, der Adressenzeiger an allen freien Puffern 140 im externen Speicher 36 enthält. Wenn Abschnitte empfangen werden, erfasst der Puffermanager 72 verfügbare Adressenzeiger aus dem freien Puffer-Pool 104, um eingehende Daten zu speichern. Der Puffermanager 72 ordnet ferner Adressenzeiger aus dem freien Puffer-Pool 104 dem Host-Prozessor 28 zu (wenn angefordert). Der Host kann Adressenzeiger anfordern oder diese an den freien Puffer-Pool 104 durch Lesen oder Schreiben eines freien Puffer-Pool-Registers unter den Registern 60 im direkten Eingangs-/Ausgangs-Raum anfordern oder zurückgeben. Die Schreibseite 104 und die Leseseite 108 des freien Puffer-Pools 104 halten jeweils 64 Einträge bei einer beispielhaften Ausführungsform der Erfindung.
  • Der freie Puffer-Pool 104 ist mit einem Eingangspfad und einem Ausgangspfad (ähnlich den Ausgangs-Warteschlangen 74) aufgebaut. Der Eingangspfad oder Schreibseite 106 ermöglicht es dem Puffermanager 72 oder dem Host 28, Adressenzeiger in den freien Puffer-Pool 104 zu platzieren. Der Ausgangspfad oder Leseseite 108 des freien Puffer-Pools 104 ermöglicht es dem Puffermanager 72, Adressenzeiger an den Host 28 zu liefern oder Abdressenzeiger aus dem Pool 104 zum Speichern von Empfangs-Abschnittsdaten zu ziehen. Zusätzlicher Speicher für verfügbare Adressenzeiger, der freie Puffer-Pool-Überlaufbereich 120, ist im externen Speicher 36 vorgesehen, wie es vorher beschreiben wurde.
  • Beim Einschalten des Schalters 12 erzeugt der freie Puffer-Pool Adressenzeiger aus der Leseseite 108. Wenn Abschnitte ankommen, wird die freie Liste in dem freien Puffer-Pool 104 gelesen. Wenn es nicht genug Pufferzeiger in der Schreibseite 106 gibt, um Verkehrsanforderungen zu handhaben, wird auf den Überlaufbereich 120 zugegriffen, um mehr Pufferzeiger zu erhalten.
  • Bestimmte Ausführungsformen der vorliegenden Erfindung liefern eine vorteilhafte Anordnung und Verfahren zum Bereitstellen der Pufferzeiger beim Einschalten des Schalters 12. Wenn der Schalter 12 zuerst hochfährt, ist es für den Überlaufbereich 120 im externen Speicher 36 nicht erforderlich, Pufferzeiger zu enthalten. Anstatt dessen werden die Pufferzeiger während des Betriebs erzeugt. Der Schalter 12 könnte beim Hochfahren die Pufferzeiger erzeugen und in den Überlaufbereich 120 platzieren, wobei es jedoch 16 000 oder 32 000 derartige Zeiger geben kann, und dies würde die Hochfahr- Prozedur des Schalters 12 verlangsamen. Die vorliegende Erfindung zieht aus der Tatsache nutzen, dass beim Hochfahren alle Puffer frei sind, und die Identitäten dieser Puffer bekannt sind. Daher werden die Pufferzeiger, wenn sie benötigt werden, nach dem Hochfahren unter Verwendung eines Zählers 180 erzeugt, wie es in Fig. 10 dargestellt ist.
  • Der Freie-Listen-Zählwert-Generator 180 ist mit dem Eingang eines Multiplexers 182 verbunden. Da die freie Liste in dem freien Puffer-Pool 104 beim Anfahren leer ist, erzeugt der freie Listenzähler 180 die Pufferzeiger. Sobald die freie Liste den höchsten Zählwert erreicht, wird er keine weiteren Pufferzeiger erzeugen.
  • Wenn ein Abschnittspaket in dem Schalter 12 empfangen wird, wird das Abschnittspaket in Puffer fester Länge aufgebrochen. Typischerweise variieren Abschnitte in der Größe. Die Puffer weisen eine Größe von 256 Byte und der Datenabschnitt eines Puffers eine Größe von 240 Bytes auf. Nach der Übermittlung des Inhalt eines Puffers werden die Pufferzeiger in die Regenerierungs-Warteschlange 98 oder, wenn die Pufferkette durchlaufen werden kann, direkt in die freie Liste des freien Puffer-Pools 104 gebracht. Während des Betriebs des Schalters 12 laufen alle von dem freien Puffer-Pool 104 zurückgegebenen Adressenzeiger von der Schreibseite 106 zu der Leseseite 108. Wenn die Leseseite 108 voll wird, werden zusätzliche Adressenzeiger in den Überlaufbereich 120 geleitet. Sobald die Leseseite 108 und der Überlaufbereich 120 voll sind, werden zusätzliche Adressenzeiger, die in den Puffer-Pool 104 platziert sind, beginnen, die Schreibseite 106 des Pools 104 erneut zu füllen.
  • Fig. 13 stellt eine schematische Darstellung der internen Anordnung des Mehrfachkopie-Cache-Speichers 96 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dar. Wie es vorher kurz erläutert wurde, wird die zeitliche Reihenfolge der Einträge in dem Mehrfachkopie-Cache- Speicher 96 beibehalten. Bei der vorliegenden Erfindung wird diese Beibehaltung einer zeitlichen Reihenfolge nicht nur durch Zeitstempeln, wie beim Stand der Technik, sondern durch physische Ordnung in einem Speicher durchgeführt. Der Mehrfachkopie-Cache-Speicher 96 der vorliegenden Erfindung vermeidet ferner die Verwendung von Validierungsbits und codiert anstatt dessen die Validität, wie es erläutert wird.
  • Mit Bezug auf Fig. 13 ist der Mehrfachkopie-Cache-Speicher 96 als ein Vierweg-teilassoziativer Speicher aufgebaut. Ein Eintrag in dem Mehrfachkopie-Cache-Speicher 96 umfasst einen Abschnittszeiger und seine Kopienzahl, wie es vorher erläutert wurde. Die niedrigsten sechs Bits des Abschnittszeigers bestimmen die Reihe in dem teilassoziativen Cache-Speicher 96, in dem der Eintrag gespeichert wird. Bei der veranschaulichten Ausführungsform der Erfindung gibt es vierundsechzig Reihen in dem Cache- Speicher 96, obgleich weitere Anzahlen von Reihen nicht begrenzt sind, wenn die Cache-Größe größer gemacht wird.
  • Der teilassoziative Cache-Speicher 96 ist in vier Spalten aufgeteilt, wobei jede dieser parallel durchsucht werden kann. Wenn der Puffermanager 72 einen Eintrag in dem Cache-Speicher 96 speichert, geht der Eintrag immer in die erste Spalte, den obersten (51 : 39) Bits der durch die sechs niederstwertigen Bits des Abschnittszeiger angegebenen Reihe. Die Reihe wird gelesen, alle Einträge werden nach rechts um dreizehn Bits verschoben, und die Reihe wird zurückgeschrieben. Der Eintrag, der tatsächlich in den Cache-Speicher 96 geschrieben wird, umfasst die oberen acht Bits des Abschnittszeigers, die eine Adressenmarkierung bilden, und die dem Abschnittszeiger zugeordnete Fünf- Bit-Kopienzahl. Wenn der Eintrag aus dem Cache-Speicher 96 gelesen wird, wird der Abschnittszeiger mit der Adressenmarkierung und den Bits, die die Reihennummer des Cache-Speichers 96 indizieren, umgeformt.
  • Der älteste Eintrag in dem Cache-Speicher 96 wird aus dem Cache-Speicher 96 entfernt, wenn die Reihe voll ist, und ein neuer Eintrag wird in die Reihe geschrieben. Wie es vorher mit Bezug auf die Puffer-Header 142 beschrieben wurde, ist die Kopienzahl, die dem Abschnittszeiger zugeordnet ist, der entfernt wird, in den Puffer-Header 142 des Abschnitts im externen Speicher geschrieben, auf den durch den entfernten Abschnittszeiger gezeigt wurde. Folglich dienen die Abschnitte (d. h. die Puffer 140), die im externen Speicher 36 gespeichert sind, als ein Überlaufbereich für den Mehrfachkopie-Cache- Speicher 96, um Kopienzahlen zu speichern.
  • Eines der vorteilhaften Merkmale der vorliegenden Erfindung besteht darin, dass es kein getrenntes Gültigbit in dem teilassoziativen Cache-Speicher 96 gibt. Wenn die Kopienzahl 00000 ist, dann weiss der Puffermanager 72, dass der Eintrag nicht länger gültig ist und entfernt den Eintrag aus dem Cache- Speicher 96. Dies vereinfacht die Organisation des Cache-Speichers. Ein weiterer Vorteil des Cache-Speichers 96 der vorliegenden Erfindung besteht darin, dass er ermöglicht, das eine sehr schnelle Suche durchgeführt wird, da der Puffermanager 72 nur eine einzige Reihe untersuchen muss, die bereits von dem Abschnittszeiger bestimmt wurde, der die Mehrfachkopie- Warteschlange 90 verlassen hat. Die vier Einträge in der Reihe werden parallel untersucht, was die Geschwindigkeit der Suche weiter erhöht. Obgleich er als ein Vierweg-teilassoziativer Speicher beschrieben wurde, ist dies nur beispielhaft, da der Speicher n-Weg-teilassoziativ sein kann, ohne vom Schutzumfang der Erfindung abzuweichen.
  • Aus der obigen Beschreibung sollte es offensichtlich sein, dass die vorliegende Erfindung eine zeitliche Reihenfolge (Alter) der Cache-Einträge durch physisches Positionieren der Einträge in dem Cache-Speicher auf einer Reihenbasis beibehält. Mit anderen Worten ist die physische Position des Eintrags in dem Cache-Speicher eine Angabe des relativen Alters eines Eintrags. Die Alterung eines Eintrags wird von der physischen Umordnung der Einträge in dem Speicher durchgeführt.
  • Bestimmte Ausführungsformen der vorliegenden Erfindung liefern eine Kundenanpassung der Latenzzeit der von dem Schalter 12 geschalteten Abschnitte auf einer portweisen Grundlage. Mit Bezug auf Fig. 14 prüft der Portvektor- FIFO 70 den programmierten Schaltmodus des Empfangsports, um zu bestimmen, wann der Abschnittszeiger und die zugeordnete Information in die passende Ausgangs-Warteschlange 74 des Übermittlungsports zu platzieren ist. Für einen ersten Modus (Niedriglatenzzeit-Modus) weist der Portvektor- FIFO 70 keine Beschränkungen auf, wann der Abschnittszeiger in die Ausgangs-Warteschlange(n) 74 zu platzieren ist. Für einen zweiten Modus (Zwischenlatenzzeit-Modus) platziert der Portvektor-FIFO 70 den Abschnittszeiger in die Ausgangs-Warteschlange(n) 74 nur nachdem 64-Bytes des Abschnitts empfangen wurden. Für eine dritten Modus (Hochlatenzzeit-Modus) platziert der Portvektor-FIFO 70 den Abschnittszeiger in die Ausgangs-Warteschlange(n) 70 nur nachdem der Abschnitt vollständig empfangen wurde.
  • Es gibt einige besondere Fälle, die das Timing ändern, wenn der Portvektor- FIFO 70 Abschnittszeiger an die Ausgangs-Warteschlangen 74 leitet: 1) Abschnittsweiterleitung von einem 10 Megabit/s-Port eines ersten oder zweiten Modus an einen 100 Megabit/s-Port; 2) Abschnittsweiterleitung an den Managementport 30 und 3) Abschnittsweiterleitung an den Erweiterungsbus- Port. Im Fall 1) erzwingt die Raten-Fehlübereinstimmung des 10 Megabit/s- Port bis 100 Megabit/s-Port, dass der Weiterleitungsmodus ein dritter Modus mit hoher Latenzzeit ist. Im Fall 2) sind alle Abschnitte, die an den Managementport weitergeleitet werden, Abschnitte des dritten Modus. Im Fall 3) verwendet jede Abschnittsweiterleitung an den Erweiterungsbus-Port den Schaltmodus des Erweiterungsbus-Ports 26. Wenn ein Mehrfachkopie- Portvektor einen der Ports des besonderen Falls enthält, wird die Warteschlangen-Platzierung der Abschnittszeiger für den gesamten Portvektor derjenige des in dem Portvektor dargestellten Schaltmodus mit der längsten Latenzzeit. Wenn beispielsweise ein Abschnitt von einem Port eines ersten oder zweiten Modus empfangen wird, wobei sein Mehrfachkopie-Weiterleitungs-Portvektor den Managementport 30 enthält, ist der Schaltmodus der dritte Modus. In dieser Situation wird eine Kopie des Abschnittszeiger in alle Ausgangs-Warteschlangen 74 nur platziert, nachdem der Abschnitt vollständig empfangen wurde.
  • Die Schaltmodi werden nun ausführlicher beschrieben. Der Schaltmodus, der auf den Eingangs-(d. h. Empfangs-)Port Anwendung findet, bestimmt die Weiterleitungs-Latenzzeit (wie zeitig der Schalter 12 einen Abschnitt weiterleiten wird, wenn er einmal beginnt, den Abschnitt zu empfangen) und die Fähigkeit, um Fragment/Fehler-Fortpflanzung an Ausgangsports zu verringern. Der zweite Zwischenlatenzzeit-Modus ist die Voreinstellung für jeden Port; der Schaltmodus ist jedoch auf einer pro Port-Basis in den Registern 60 programmierbar.
  • In allen drei Modi werden die an dem Empfangs-FIFO 52 eines internen MAC- Ports empfangenen Daten an einen Puffer 140 in dem externen Speicher 52 sobald wie möglich weitergeleitet. Zu ungefähr der selben Zeit empfängt die Regelprüfvorrichtung 42 oder 58 die Bestimmungsadresse und die Ursprungsadresse, die Empfangs-Portnummer, den Abschnittszeiger und etwas zusätzliche Information, wobei dann der passende Nachschlagevorgang durchgeführt wird. Sobald der Nachschlagevorgang abgeschlossen ist, gibt die Regelprüfvorrichtung 42 oder 58 den Abschnittszeiger und den Weiterleitungs- Portvektor an den Portvektor-FIFO 70 zurück.
  • Der Portvektor-FIFO 70 platziert den Abschnittszeiger in die Schreibseite 76 der Ausgangs-Warteschlangen 74 für den/die in dem Portvektor gekennzeichneten Ausgangsport(s). Der Schaltmodus des Empfangsports definiert die Latenzzeit als die Zeit zwischen der Zeit, wenn der Portvektor-FIFO 70 den Portvektor (und den Abschnittszeiger) empfängt, und der Zeit, wenn der Abschnittszeiger in die Ausgangs-Warteschlange(n) 74 platziert wird. Dies wird nachstehend für die drei Modi beschrieben. Wenn der Abschnittszeiger zu der Leseseite 78 der Ausgangs-Warteschlangen 74 läuft, liest der Puffermanager 72 den Abschnittszeiger und plant die Übermittlung. Der Puffermanager 72 beginnt Abschnittsdaten aus der von dem Abschnittszeiger spezifizierten Adresse zu bewegen. Sobald der Sende-FIFO 54 des MAC-Ports an seinem Startpunkt vorbereitet wurde (unter der Annahme, dass das Medium zur Übermittlung der Daten verfügbar ist), beginnt die Abschnittsübermittlung.
  • Der erste Modus ist ausgestaltet, um die niedrigste Latenzzeit zu liefern. Abschnitte werden mit Leitungs-bemessener Geschwindigkeit empfangen und weitergeleitet. Bei diesem ersten Modus gibt es keinen Netzwerk-Fehlerschutz, da ein Abschnitt zur Übermittlung in eine Warteschlange platziert wird, bevor bestimmt werden kann, ob der Abschnitt ein Fragment ist (d. h. < 64 Bytes in Länge ist) oder einen CRC-Fehler enthält. Bei dem ersten Modus kann der Abschnittsempfang nicht beendet sein, bevor die Abschnittsübermittlung an den/die Ausgangsport(s) beginnt. Wenn ein Empfangsabschnitt in einen verstümmelten Impuls bzw. Runt oder mit einer ungültigen CRC endet, markiert die Empfangs-MAC den Puffer-Header 142 im externen Speicher 36, um diese Zustände anzugeben. Der Sende-MAC garantiert, dass, wenn eine Übermittlung an einem Abschnitt beginnt, der später als ein Runt oder mit einer ungültigen CRC endet, wird die MAC einen großen CRC-Fehler erzeugen. Wenn die Sende-MAC keine Übermittlung eines Abschnitts begonnen hat, und der Puffer-Header 142 angibt, dass der Abschnitt in einem Runt oder einer ungültigen CRC endet, wird der Puffermanager 72 den Abschnitt nicht an den Ausgangsport weiterleiten.
  • Der zweite Modus liefert eine niedrige Latenzzeit zum Weiterleiten von Abschnitten und etwas Netzwerk-Fehlerschutz. Abschnitte werden empfangen und weitergeleitet, nachdem vierundsechzig oder mehr Bytes empfangen wurden. Dies ermöglicht es dem Schalter 12 Fragmente eines Abschnitts zu filtern (d. h. nicht weiterzuleiten); er filtert jedoch CRC-Fehlerabschnitte, die größer als vierundsechzig Bytes sind, nicht vollständig.
  • Bei dem zweiten Modus werden Abschnittszeiger für Abschnitte, die die vierundsechzig Byteschwelle an dem Empfangs-MAC erreichen, in die passende(n) Ausgangs-Warteschlange(n) 74 platziert. Abschnitte, die versagen, die minimale vierundsechzig Byteschwelle zu erreichen, werden gelöscht, und ihre Abschnittszeiger werden nicht in (eine) Ausgangs-Warteschlange(n) 74 platziert. Wenn ein Empfangsabschnitt, der größer als oder gleich vierundsechzig Bytes ist, mit einer ungültigen CRC endet, markiert die Empfangs-MAC den Puffer-Header 142 im externen Speicher 36, um diesen Zustand anzugeben. Wenn die Übermittlung an einem Abschnitt begonnen hat, der größer als oder gleich vierundsechzig Bytes ist, der später mit einer ungültigen CRC endet, wird die Sende-MAC die Übermittlung mit einem großen CRC-Fehler beenden. Wenn die Übermittlungs-MAC keine Abschnittsübermittlung begonnen hat, und der Puffer-Header 142 angibt, dass der Abschnitt (größer als oder gleich vierundsechzig Bytes) in einer ungültigen CRC geendet hat, gibt der Puffermanager 72 den Abschnittszeiger an die Regenerierungs- Warteschlange 98 (für eine Einfachkopie-Weiterleitung) oder an die Mehrfachkopie-Warteschlange 96 (für eine Mehrfachkopie-Weiterleitung) ohne Weiterleitung an den/die Ausgangsport(s) 74 zurück.
  • Der dritte Modus ist ein Speicher-und-Weiterleitungs-Modus, der den höchsten Grad des Netzwerk-Fehlerschutzes unter den drei Modi bereitstellt, wobei er jedoch eine höhere Weiterleitungs-Latenzzeit aufweist. Abschnitte werden vollständig empfangen, bevor der Schalter 12 sie an Ausgangsports weiterleitet. Bei diesem Modus sortiert der Schalter 12 alle Fragmente und CRC- Fehlerabschnitte vor dem Weiterleiten aus. Bei dem dritten Modus wird, sobald ein gültiger Abschnitt erfolgreich an dem Empfänger endet (d. h. größer als oder gleich vierundsechzig Bytes mit einer gültigen CRC ist), der Abschnittszeiger in die passende(n) Ausgangs-Warteschlange(n) 74 gebracht. Abschnitte, die in einem Empfangsfehler enden (ungültige CRC, Runt (> 64 Bytes) etc.) werden gelöscht, und ihre Abschnittszeiger werden nicht in (eine) Ausgangs-Warteschlange(n) 74 gebracht.
  • Der Portvektor-FIFO 70 trifft die Entscheidung, den Portvektor in eine Ausgangs-Warteschlange 74 abhängig von dem ausgewählten Modus des Empfangsports und der Menge der empfangenen Daten zu platzieren. Bei der oben beschriebenen Ausführungsform gibt es drei Schwellen, obgleich eine unterschiedliche Anzahl von Schwellen bei weiteren Ausführungsformen gibt. Bei der beispielhaften Ausführungsform sind diese Schwellen: 1) Empfangen von n-Bytes (z. B. 6 Bytes), wobei n < 64 Bytes ist; 2) Empfangen von 64 Bytes; und 3) Empfangen des gesamten Abschnitts.
  • Die vorliegende Erfindung leitet Abschnitte an Ausgangs-Warteschlangen 74 basierend auf Schwellen weiter. Der Portvektor-FIFO 70 ordnet die Sequenz der Übermittlung basierend auf der Menge der Arten empfangener Daten und dem Modus, in dem der Port programmiert ist. Obgleich die beispielhaften Ausführungsformen Weiterleitungs-Entscheidungen basierend auf der Menge empfangener Daten trifft, treffen andere Ausführungsformen der Erfindung Weiterleitungs-Entscheidungen basierend auf anderen Faktoren, wie beispielsweise die Arten der empfangenen Daten.
  • Beim Implementieren des Weiterleitungs-Schemas der vorliegenden Erfindung unterhält der Puffermanager 72 eine Tabelle 160 in einem Cache-Speicher (CAM) 161, der einen Abschnittszeiger einem Empfangsport zuordnet. Jedesmal, wenn der Portvektor-FIFO 70 einen neuen Portvektor und Abschnittszeiger von der Regelprüfvorrichtung 42 oder 58 empfängt, führt er eine Zuordnung durch, um zu bestimmen, ob der Empfangsport das Empfangen eines Abschnitts beendet hat, und falls nicht, wieviel des Abschnitts bereits empfangen wurde. Der Portvektor-FIFO 70 empfängt keine Information hinsichtlich der Identität des Empfangsports von der Regelprüfvorrichtung 42 oder 58. Die einzige Information, die der Portvektor empfängt, die irgendeine Identifikation des Ports liefert, sind die Abschnittszeiger.
  • Der Portvektor-FIFO 70 fragt die Adressentabelle 160 mit dem Abschnittszeiger ab. Die Adressentabelle gibt entweder den Empfangsport zurück, wenn der Abschnitt noch empfangen wird, oder die Adressentabelle 160 kann den Abschnittszeiger nicht finden, was bedeutet, dass der Abschnitt bereits empfangen wurde. Sobald der Abschnitt vollständig empfangen ist, wird der Abschnittszeiger aus der Adressentabelle 160 bewegt. Dies bedeutet, dass die dritte Schwelle (der Abschnitt ist vollständig) erfüllt ist. Demgemäß kann der Abschnittszeiger sofort in die Ausgangs-Warteschlange 74 platziert werden.
  • Wenn die Adressentabelle 160 den Empfangsport zurückgibt, platziert der Portvektor-FIFO 70 den Abschnittszeiger und zugeordnete Information in einen Haltebereich 162 und beginnt die Überwachung zweier Signale von diesem Empfangsport. Diese beiden Signale markieren eines von drei Ereignissen mit einem Flag. Das erste Ereignis wird mit einem Flag markiert, wenn der Port n- Bytes empfängt. An diesem Punkt beginnt, wenn dieser Port in dem ersten Modus ist, der Portvektor-FIFO 70 den Abschnittszeiger durch Senden desselben an die passende Ausgangs-Warteschlange 74 zu verarbeiten. Wenn der Empfangsport nicht in dem ersten Modus ist, wartet der Portvektor-FIFO 70, bis es das eine Signal empfängt, dass das Auftreten des zweiten Ereignisses angibt. Wenn dieser Port in dem zweiten Modus ist, dann gibt der Portvektor- FIFO den Abschnittszeiger aus dem Haltebereich 162 frei, um in die passende Ausgangs-Warteschlange 74 einzutreten. Schließlich, wenn der Empfangsport in dem dritten Modus ist, dann wartet der Portvektor-FIFO 70 den Empfang des Flag ab, das angibt, dass der Abschnitt vollständig ist. Jeder Empfangsport (Bezugsziffer 164 in Fig. 14) unterhält dieses Flag und liefert diese Information an den Portvektor-FIFO 70. Es ist Sache des Portvektor-FIFO 70, den dem Abschnittszeiger zugeordneten Port zu bestimmen. Der Portvektor- FIFO 70 unterhält die Information, die den Modus identifiziert, in dem jeder Port ist. Zusammenfassend fragt der Portvektor-FIFO 70 bei Empfang eines Abschnittszeigers zuerst die Adressentabelle 160 des Puffermanagers 72 ab, um den Empfangsport zu bestimmen, bestimmt den Modus für diesen Empfangsport und überwacht dann die Flags von diesem Empfangsport und gibt den Abschnittszeiger gemäß dem Modus in den Flags frei.
  • Obgleich die vorliegende Erfindung ausführlich beschrieben und dargestellt wurde, ist es offensichtlich, dass dasselbe nur mittels Darstellung und Beispiel ist, und nicht als Einschränkung aufzufassen ist, wobei der Schutzumfang der vorliegenden Erfindung nur durch die Bestimmungen der beigefügten Ansprüche begrenzt ist.

Claims (13)

1. Verfahren zum Steuern der Übermittelung von Kopien eines Datenabschnitts über mehrere Ports (30,50,53) eines Mehrport-Netzwerkschalters (12), mit folgenden Schritten:
Kennzeichnen der Ports (50), von denen die Abschnittskopien übermittelt werden sollen;
Bestimmen, welche der gekennzeichneten Ports (50) nicht zur Übermittlung einer der Abschnittskopien zur Verfügung stehen, und
Übersenden der Abschnittskopien an die gekennzeichneten Ports (50), die zur Übermittlung einer der Abschnittskopien zur Verfügung stehen, und Löschen der Abschnittskopien, die von den gekennzeichneten Ports (50) übersendet werden sollen, die nicht zur Übermittlung einer der Abschnittskopien zur Verfügung stehen.
2. Verfahren nach Anspruch 1, bei dem der Schritt des Kennzeichnens der Ports (50), von denen die Abschnittskopien gesendet werden sollen, das Erzeugen eines Portvektors auf der Basis von Bestimmungsadressen- Informationen in dem Abschnitt umfasst, wobei der Portvektor die gekennzeichneten Ports identifiziert.
3. Verfahren nach Anspruch 2, bei dem jeder Port (50) eine ihm zugeordnete Ausgangs-Warteschlange (74) aufweist, die zum aufeinanderfolgenden Anordnen eines Abschnittzeigers, der auf einen Platz in einem Speicher (36) zeigt, in dem der Abschnitt gespeichert ist, in die Warteschlange dient, wobei das Verfahren ferner das Laden der Abschnittszeiger für die zu übermittelnden Abschnitte in die zugeordneten Ausgangs-Warteschlangen (74) der Ports (50) umfasst, von denen aus die Abschnitte übermittelt werden sollen.
4. Verfahren nach Anspruch 3, ferner mit dem Schritt des Auslesens des Abschnitts aus dem Speicher (36) durch den Port (50), wenn der Abschnittszeiger für diesen Abschnitt die zugeordnete Ausgangs-Warteschlange (74) für diesen Port (50) verlässt.
5. Verfahren nach Anspruch 3 oder 4, bei dem der Schritt des Bestimmens, welche der gekennzeichneten Ports (50) nicht zum Übermitteln einer der Abschnittskopien zur Verfügung steht, das Prüfen der verfügbaren Kapazität der Ausgangs-Warteschlangen (74) umfasst, wobei ein Port (50) dann als nicht zur Übermittlung einer der Abschnittskopien zur Verfügung stehend bestimmt wird, wenn die zugeordnete Ausgangs-Warteschlange (74) dieses Ports (50) keine verfügbare Kapazität besitzt.
6. Verfahren nach Anspruch 3, 4 oder 5, bei dem der Schritt des Löschens der Kopien des zu übermittelnden Abschnitts den Schritt des Löschens der Abschnittszeiger umfasst, die in die zugeordneten Ausgangs-Warteschlangen (74) der gekennzeichneten Ports (50) zu laden sind, welche keine verfügbare Kapazität besitzen.
7. Verfahren nach Anspruch 6, ferner mit dem Schritt des Bestimmens der Anzahl von Abschnittszeigern, die für einen Abschnitt gelöscht worden sind.
8. Mehrport-Netzwerkschalter (12), der mehrere Kopien eines einzelnen Datenabschnitts übermittelt, mit:
mehreren Ports (30,50,53), von denen aus Datenabschnitte übermittelt werden;
einem Portvektor-Generator (42; 58), der einen Portvektor erzeugt, welcher kennzeichnet, von welchen Ports (50) aus Abschnittskopien übermittelt werden sollen, und
einer Übermittlungsanordnung (70,74) zum Bestimmen der Verfügbarkeit jedes Ports (50), der von dem Portvektor für die Übermittlung einer Abschnittskopie gekennzeichnet worden ist, zum Übermitteln von Abschnittskopien über die gekennzeichneten Ports (50), die zum Übermitteln einer Abschnittskopie zur Verfügung stehen, und zum Löschen von Kopien, die von den gekennzeichneten Ports (50) übermittelt werden sollen, welche nicht zur Übermittlung einer Abschnittskopie zur Verfügung stehen.
9. Netzwerkschalter nach Anspruch 8, bei dem die Übermittlungsanordnung mehrere Ausgangs-Warteschlangen (74) aufweist, wobei jede Ausgangs- Warteschlange einem anderen Port zugeordnet ist.
10. Netzwerkschalter nach Anspruch 9, bei dem die Übermittlungsanordnung einen Portvektor-FIFO (70) aufweist, der zum Empfangen des Portvektors vom Portvektor-Generator (42; 58) und zum Bestimmen der verfügbaren Kapazität jeder den gekennzeichneten Ports (50) zugeordneten Ausgangs- Warteschlange (74) dient.
11. Netzwerkschalter nach Anspruch 10, bei dem der Portvektor-FIFO (70) ferner dem Laden eines Abschnittszeigers in die den gekennzeichneten Ports (50) für jede Kopie des zu übermittelnden Abschnitts zugeordneten Ausgangs-Warteschlangen (74) dient, wenn die Ausgangs-Warteschlangen (74) die verfügbare Kapazität besitzen, wobei der Abschnittzeiger auf einen Speicherplatz zeigt, an dem der Abschnitt gespeichert ist und die Abschnittszeiger aufeinanderfolgend in den Ausgangs-Warteschlangen (74) angeordnet sind, und bei dem jeder Port (50) zum Zugreifen auf den Speicherplatz, auf den der Abschnittszeiger zeigt, und zum Übermitteln des an diesem Speicherplatz gespeicherten Abschnitts dient, wenn der Abschnittszeiger die diesem Port (50) zugeordnete Ausgangs- Warteschlange (74) verlässt.
12. Netzwerkschalter nach Anspruch 10 oder 11, bei dem der Portvektor-FIFO (70) ferner zum Löschen der Abschnittszeiger für jede einem gekennzeichneten Port (50) zugeordnete Ausgangs-Warteschlange (74) dient, wenn die Ausgangs-Warteschlange (74) keine verfügbare Kapazität besitzt.
13. Netzwerkschalter nach Anspruch 10, 11 oder 12, bei dem der Portvektor FIFO (70) ferner zum Bestimmen der Anzahl von Abschnittszeigern, die in Ausgangs-Warteschlangen (74) für einen bestimmten Abschnitt geladen sind, und der Anzahl von Abschnittszeigern, die für diesen bestimmten Abschnitt gelöscht werden, dient.
DE69803364T 1997-02-14 1998-01-30 Verfahren und vorrichtung zur selektiven verwerfung von paketen für blockierte ausgangswarteschlangen in einer netzvermittlung Expired - Lifetime DE69803364T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US3802597P 1997-02-14 1997-02-14
US08/992,428 US5953335A (en) 1997-02-14 1997-12-18 Method and apparatus for selectively discarding packets for blocked output queues in the network switch
PCT/US1998/001786 WO1998036529A1 (en) 1997-02-14 1998-01-30 Method and apparatus for selectively discarding packet for blocked output queues in the network switch

Publications (2)

Publication Number Publication Date
DE69803364D1 DE69803364D1 (de) 2002-02-28
DE69803364T2 true DE69803364T2 (de) 2002-10-17

Family

ID=26714735

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69803364T Expired - Lifetime DE69803364T2 (de) 1997-02-14 1998-01-30 Verfahren und vorrichtung zur selektiven verwerfung von paketen für blockierte ausgangswarteschlangen in einer netzvermittlung

Country Status (6)

Country Link
US (1) US5953335A (de)
EP (1) EP0960503B1 (de)
JP (1) JP4603102B2 (de)
DE (1) DE69803364T2 (de)
TW (1) TW453080B (de)
WO (1) WO1998036529A1 (de)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178483B1 (en) * 1997-02-14 2001-01-23 Advanced Micro Devices, Inc. Method and apparatus for prefetching data read by PCI host
US6061351A (en) * 1997-02-14 2000-05-09 Advanced Micro Devices, Inc. Multicopy queue structure with searchable cache area
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
US6345296B1 (en) 1997-07-02 2002-02-05 Unisys Corporation Method system and computer program product for providing pull model data communication
US6064805A (en) * 1997-07-02 2000-05-16 Unisys Corporation Method, system, and computer program product for intraconnect data communication using buffer pools and buffer pool management
JPH11127188A (ja) * 1997-10-20 1999-05-11 Fujitsu Ltd 蓄積交換型電子会議システムにおける情報伝達装置及び方法並びに情報伝達プログラムを記録した媒体
US6178414B1 (en) * 1997-12-16 2001-01-23 Nortel Networks Limited Method and apparatus for updating and searching an ordered list of values stored within a memory resource
US6560227B1 (en) * 1998-02-23 2003-05-06 International Business Machines Corporation LAN frame copy decision for LAN switches
US6246690B1 (en) * 1998-03-19 2001-06-12 3Com Corporation Method and device for controlling data flow in a computer data network
US6092108A (en) * 1998-03-19 2000-07-18 Diplacido; Bruno Dynamic threshold packet filtering of application processor frames
US6473424B1 (en) 1998-12-02 2002-10-29 Cisco Technology, Inc. Port aggregation load balancing
US6934293B1 (en) 1998-12-02 2005-08-23 Cisco Technology, Inc. Port aggregation load balancing
US6810042B1 (en) * 1999-01-04 2004-10-26 Cisco Technology, Inc. Method of queuing traffic to many destinations covering a wide range of transmission speeds while minimizing buffer size
US6487199B1 (en) * 1999-04-07 2002-11-26 Advanced Micro Devices, Inc. Method and apparatus for maintaining randomly accessible copy number information on a network switch
US7369550B1 (en) 1999-04-22 2008-05-06 Advanced Micro Devices Method and apparatus for locking a table in a network switch
US6529503B1 (en) * 1999-05-21 2003-03-04 Advanced Micro Devices, Inc. Apparatus and method for storing header information in a network switch
US6401147B1 (en) * 1999-05-24 2002-06-04 Advanced Micro Devices, Inc. Split-queue architecture with a first queue area and a second queue area and queue overflow area having a trickle mode and an overflow mode based on prescribed threshold values
US6751191B1 (en) 1999-06-29 2004-06-15 Cisco Technology, Inc. Load sharing and redundancy scheme
US7065779B1 (en) 1999-10-13 2006-06-20 Cisco Technology, Inc. Technique for synchronizing multiple access controllers at the head end of an access network
GB2355374B (en) * 1999-10-15 2001-10-31 3Com Corp Network device including selective discard of packets
US6700897B1 (en) 1999-10-29 2004-03-02 Advanced Micro Devices, Inc. Apparatus and method for identifying data packet types in real time on a network switch port
US6798788B1 (en) 1999-11-24 2004-09-28 Advanced Micro Devices, Inc. Arrangement determining policies for layer 3 frame fragments in a network switch
US6697330B1 (en) * 1999-11-26 2004-02-24 Hewlett-Packard Development Company L.P. Method and system for output flow control in network multiplexers
US6728246B1 (en) 1999-12-07 2004-04-27 Advanced Micro Devices, Inc. Arrangement for reducing layer 3 header data supplied to switching logic on a network switch
US6697380B1 (en) 1999-12-07 2004-02-24 Advanced Micro Devices, Inc. Multiple key lookup arrangement for a shared switching logic address table in a network switch
US6950434B1 (en) 1999-12-07 2005-09-27 Advanced Micro Devices, Inc. Arrangement for searching packet policies using multi-key hash searches in a network switch
US7103035B1 (en) 2000-01-14 2006-09-05 Advanced Micro Devices, Inc. Arrangement for searching network addresses in a network switch using multiple tables based on subnet identifier
US6839829B1 (en) 2000-01-18 2005-01-04 Cisco Technology, Inc. Routing protocol based redundancy design for shared-access networks
US7058007B1 (en) 2000-01-18 2006-06-06 Cisco Technology, Inc. Method for a cable modem to rapidly switch to a backup CMTS
US6574240B1 (en) 2000-01-19 2003-06-03 Advanced Micro Devices, Inc. Apparatus and method for implementing distributed layer 3 learning in a network switch
US6745246B1 (en) * 2000-01-28 2004-06-01 Advanced Micro Devices, Inc. Apparatus and method in a network switch for modifying a bandwidth request between a requestor and a router
US6934260B1 (en) 2000-02-01 2005-08-23 Advanced Micro Devices, Inc. Arrangement for controlling learning of layer 3 network addresses in a network switch
US6711161B1 (en) 2000-02-24 2004-03-23 Advanced Micro Devices, Inc. Arrangement for providing linearly scaleable address forwarding tables within multiple network switch modules
US6760341B1 (en) 2000-02-24 2004-07-06 Advanced Micro Devices, Inc. Segmention of buffer memories for shared frame data storage among multiple network switch modules
US7002955B1 (en) 2000-03-06 2006-02-21 Advanced Micro Devices, Inc. Selective address table aging in a network switch based on application state determined from a received data packet
US6674769B1 (en) 2000-03-07 2004-01-06 Advanced Micro Devices, Inc. Simultaneous searching of layer 3 policy filter and policy cache in a network switch port
US6732209B1 (en) * 2000-03-28 2004-05-04 Juniper Networks, Inc. Data rate division among a plurality of input queues
US6862265B1 (en) 2000-04-13 2005-03-01 Advanced Micro Devices, Inc. Weighted fair queuing approximation in a network switch using weighted round robin and token bucket filter
US6807179B1 (en) 2000-04-18 2004-10-19 Advanced Micro Devices, Inc. Trunking arrangement in a network switch
US7079537B1 (en) 2000-04-25 2006-07-18 Advanced Micro Devices, Inc. Layer 3 switching logic architecture in an integrated network switch
US6571291B1 (en) 2000-05-01 2003-05-27 Advanced Micro Devices, Inc. Apparatus and method for validating and updating an IP checksum in a network switching system
US6693908B1 (en) 2000-05-01 2004-02-17 Advanced Micro Devices, Inc. Apparatus and method for efficient evaluation of equations which generate frame tags in a network switch
US6714542B1 (en) 2000-05-01 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for storing min terms in a central min term memory for efficient sharing by a plurality of network switch ports
US6807183B1 (en) 2000-05-09 2004-10-19 Advanced Micro Devices, Inc. Arrangement for reading a prescribed location of a FIFO buffer in a network switch port
US6742044B1 (en) 2000-05-10 2004-05-25 Cisco Technology, Inc. Distributed network traffic load balancing technique implemented without gateway router
US6789125B1 (en) 2000-05-10 2004-09-07 Cisco Technology, Inc. Distributed network traffic load balancing technique implemented without gateway router
US7502366B1 (en) 2000-05-23 2009-03-10 Advanced Micro Devices, Inc. Arrangement in a network switch for prioritizing data frames based on user-defined frame attributes
US6678272B1 (en) 2000-05-24 2004-01-13 Advanced Micro Devices, Inc. Apparatus and method using a register scheme for efficient evaluation of equations in a network switch
US6757742B1 (en) 2000-05-25 2004-06-29 Advanced Micro Devices, Inc. Computer-based system for validating hash-based table lookup schemes in a network switch
US7395348B1 (en) * 2000-06-05 2008-07-01 Cisco Technology, Inc. Network cache-based content routing
US6981054B1 (en) 2000-06-06 2005-12-27 Advanced Micro Devices, Inc. Flow control arrangement in a network switch based on priority traffic
US6925085B1 (en) 2000-06-07 2005-08-02 Advanced Micro Devices, Inc. Packet classification using hash key signatures generated from interrupted hash function
US6718379B1 (en) 2000-06-09 2004-04-06 Advanced Micro Devices, Inc. System and method for network management of local area networks having non-blocking network switches configured for switching data packets between subnetworks based on management policies
US6678276B1 (en) 2000-06-15 2004-01-13 Advanced Micro Devices, Inc. Apparatus and method for specifying successive byte locations for evaluating data packets in a network switch port
US6741594B1 (en) 2000-06-15 2004-05-25 Advanced Micro Devices, Inc. Arrangement for identifying data packet types from multiple protocol formats on a network switch port
US6711165B1 (en) 2000-06-15 2004-03-23 Advanced Micro Devices, Inc. Apparatus and method for storing min terms in network switch port memory for access and compactness
US6981056B1 (en) 2000-06-28 2005-12-27 Cisco Technology, Inc. Wide area load balancing of web traffic
US7072979B1 (en) 2000-06-28 2006-07-04 Cisco Technology, Inc. Wide area load balancing of web traffic
US7069324B1 (en) 2000-06-30 2006-06-27 Cisco Technology, Inc. Methods and apparatus slow-starting a web cache system
US7062571B1 (en) 2000-06-30 2006-06-13 Cisco Technology, Inc. Efficient IP load-balancing traffic distribution using ternary CAMs
US6807176B1 (en) * 2000-07-13 2004-10-19 Advanced Micro Devices, Inc. Arrangement for switching data packets in a network switch based on subnet identifier
US6693906B1 (en) 2000-07-17 2004-02-17 Advanced Micro Devices, Inc. Apparatus and method for buffer-free evaluation of packet data bytes with multiple min terms
US6714556B1 (en) 2000-07-17 2004-03-30 Advanced Micro Devices, Inc. In-band management of a stacked group of switches by a single CPU
US6885666B1 (en) 2000-08-14 2005-04-26 Advanced Micro Devices, Inc. Apparatus and method in a network switch for synchronizing transfer of a control tag to a switch fabric with transfer of frame data to a buffer memory
US6963565B1 (en) 2000-08-14 2005-11-08 Advanced Micro Devices, Inc. Apparatus and method for identifying data packet at wire rate on a network switch port
US8619793B2 (en) * 2000-08-21 2013-12-31 Rockstar Consortium Us Lp Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
US6407960B1 (en) 2000-09-01 2002-06-18 Advanced Micro Devices Arrangement for programming selected device registers during initialization from an external memory
US6973043B1 (en) 2000-10-20 2005-12-06 Advanced Micro Devices, Inc. Arrangement for converting between a media independent interface and a twisted pair medium using a field programmable gate array
US6634016B1 (en) 2000-12-01 2003-10-14 Advanced Micro Devices, Inc. Arrangement for partitioning logic into multiple field programmable gate arrays
US6564161B1 (en) 2000-12-01 2003-05-13 Advanced Micro Devices, Inc. Arrangement for testing light emitting diode interface of an integrated network device
US6795858B1 (en) 2000-12-29 2004-09-21 Cisco Technology, Inc. Method and apparatus for metric based server selection
US6912202B1 (en) 2001-01-25 2005-06-28 Advanced Micro Device, Inc. Arrangement for testing network switch expansion port using external logic to emulate connected expansion port
US6914892B1 (en) 2001-01-29 2005-07-05 Advanced Micro Devices, Inc. Arrangement for testing network switch expansion port data by converting to media independent interface format
US6678845B1 (en) 2001-01-29 2004-01-13 Advanced Micro Devices, Inc. Arrangement for testing programmed port registers of integrated network device by reading-back values from the port registers
US6816465B1 (en) 2001-01-29 2004-11-09 Advanced Micro Devices, Inc. Arrangement for testing pause frame response in a network switch
US6785849B1 (en) 2001-02-09 2004-08-31 Advanced Micro Devices, Inc. Arrangement for reducing a media independent interface speed in a network switch emulation system
US7024603B1 (en) * 2001-03-05 2006-04-04 Advanced Micro Devices, Inc. Arrangement for verifying that memory external to a network switch and the memory interface are free of defects
US6963536B1 (en) 2001-03-23 2005-11-08 Advanced Micro Devices, Inc. Admission control in a network device
US6954427B1 (en) * 2001-03-28 2005-10-11 Advanced Micro Devices, Inc. Method and apparatus for performing priority-based admission control
US6760277B1 (en) 2001-04-06 2004-07-06 Advanced Micro Devices, Inc. Arrangement for generating multiple clocks in field programmable gate arrays of a network test system
US7080138B1 (en) 2001-04-11 2006-07-18 Cisco Technology, Inc. Methods and apparatus for content server selection
US7062562B1 (en) 2001-04-11 2006-06-13 Cisco Technology, Inc. Methods and apparatus for content server selection
US6940865B2 (en) * 2001-04-17 2005-09-06 Atheros Communications, Inc. System and method for interleaving frames with different priorities
US6892174B1 (en) 2001-05-03 2005-05-10 Advanced Micro Devices, Inc. Arrangement for testing a network device by interfacing a low speed emulation system with high speed CPU
US7536715B2 (en) * 2001-05-25 2009-05-19 Secure Computing Corporation Distributed firewall system and method
US7881208B1 (en) 2001-06-18 2011-02-01 Cisco Technology, Inc. Gateway load balancing protocol
US7085287B1 (en) 2001-06-27 2006-08-01 Cisco Technology, Inc. Map routing technique implemented in access networks
US7349430B1 (en) 2001-06-27 2008-03-25 Cisco Technology, Inc. Addressing scheme implemented in access networks
US7227863B1 (en) 2001-11-09 2007-06-05 Cisco Technology, Inc. Methods and apparatus for implementing home agent redundancy
US7227838B1 (en) 2001-12-14 2007-06-05 Cisco Technology, Inc. Enhanced internal router redundancy
US8635305B1 (en) 2001-12-19 2014-01-21 Cisco Technology, Inc. Mechanisms for providing differentiated services within a web cache
US7720997B1 (en) 2001-12-19 2010-05-18 Cisco Technology, Inc. Path selection system
FR2837586B1 (fr) * 2002-03-22 2005-03-18 St Microelectronics Sa Procede pour associer a une premiere adresse une seconde adresse de taille reduite
US7899924B2 (en) 2002-04-19 2011-03-01 Oesterreicher Richard T Flexible streaming hardware
US7251704B2 (en) * 2002-08-23 2007-07-31 Intel Corporation Store and forward switch device, system and method
US7231664B2 (en) * 2002-09-04 2007-06-12 Secure Computing Corporation System and method for transmitting and receiving secure data in a virtual private group
US7308706B2 (en) * 2002-10-28 2007-12-11 Secure Computing Corporation Associative policy model
US7643502B2 (en) * 2002-12-19 2010-01-05 Intel Corporation Method and apparatus to perform frame coalescing
US7814232B2 (en) 2003-03-28 2010-10-12 Cisco Technology, Inc. Network address translation with gateway load distribution
JP4257509B2 (ja) * 2003-06-27 2009-04-22 日本電気株式会社 ネットワークシステム、ノード装置、冗長構築方法、および冗長構築プログラム
US20040264479A1 (en) * 2003-06-30 2004-12-30 Makaram Raghunandan Method for generating a trie having a reduced number of trie blocks
US7593346B2 (en) * 2003-07-31 2009-09-22 Cisco Technology, Inc. Distributing and balancing traffic flow in a virtual gateway
US7486688B2 (en) * 2004-03-29 2009-02-03 Conexant Systems, Inc. Compact packet switching node storage architecture employing Double Data Rate Synchronous Dynamic RAM
US7840988B1 (en) 2004-05-07 2010-11-23 Cisco Technology, Inc. Front-end structure for access network line card
US8180883B1 (en) 2004-08-02 2012-05-15 Cisco Technology, Inc. Method and system for processing directives included in management events
US8059661B2 (en) * 2004-12-29 2011-11-15 Cisco Technology, Inc. Methods and apparatus for using DHCP for home address management of nodes attached to an edge device and for performing mobility and address management as a proxy home agent
US7623455B2 (en) * 2005-04-02 2009-11-24 Cisco Technology, Inc. Method and apparatus for dynamic load balancing over a network link bundle
EP2109338B1 (de) * 2005-04-25 2010-09-22 Samsung Electronics Co., Ltd. Anzeige des Frame Offsets von Multicast Broadcast Service Datenbursts in einer MBS-MAP Nachricht
US20070198730A1 (en) * 2006-02-17 2007-08-23 Via Technologies Inc. Embedded system with a bus and arbitration method for same
JP4834493B2 (ja) * 2006-08-25 2011-12-14 アラクサラネットワークス株式会社 ネットワーク中継装置、および、ネットワーク中継装置の制御方法
US8667175B2 (en) * 2008-03-13 2014-03-04 Cisco Technology, Inc. Server selection for routing content to a client using application layer redirection
CN101656586B (zh) * 2008-08-20 2013-08-07 中兴通讯股份有限公司 提高同步数字体系虚级联延时补偿缓存效率的方法及装置
CN108370327A (zh) 2015-09-25 2018-08-03 Fsa技术股份有限公司 多干线数据流调节系统和方法
CN113867287B (zh) * 2021-09-28 2023-12-05 浙江华章科技有限公司 一种工业数据采集方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231633A (en) * 1990-07-11 1993-07-27 Codex Corporation Method for prioritizing, selectively discarding, and multiplexing differing traffic type fast packets
US5193110A (en) * 1990-10-09 1993-03-09 Boston Technology, Incorporated Integrated services platform for telephone communication system
JPH05167585A (ja) * 1991-12-16 1993-07-02 Nec Corp ローカルエリアネットワーク同報フレーム通信装置及び方法
US5390299A (en) * 1991-12-27 1995-02-14 Digital Equipment Corporation System for using three different methods to report buffer memory occupancy information regarding fullness-related and/or packet discard-related information
US5276681A (en) * 1992-06-25 1994-01-04 Starlight Networks Process for fair and prioritized access to limited output buffers in a multi-port switch
JP3104429B2 (ja) * 1992-10-08 2000-10-30 株式会社日立製作所 コピー機能を有する共通バッファ形atmスイッチ及びそのコピー方法
GB9309468D0 (en) * 1993-05-07 1993-06-23 Roke Manor Research Improvements in or relating to asynchronous transfer mode communication systems
EP0622922B1 (de) * 1993-04-29 2000-11-29 International Business Machines Corporation Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
US5515376A (en) * 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
US5812792A (en) * 1994-07-22 1998-09-22 Network Peripherals, Inc. Use of video DRAM for memory storage in a local area network port of a switching hub
DE69532448T2 (de) * 1995-10-20 2004-10-21 Ibm Brückenvorrichtung zur Verkehrsfilterung in Kommunikationsnetzen

Also Published As

Publication number Publication date
TW453080B (en) 2001-09-01
JP4603102B2 (ja) 2010-12-22
EP0960503A1 (de) 1999-12-01
US5953335A (en) 1999-09-14
JP2001511978A (ja) 2001-08-14
WO1998036529A1 (en) 1998-08-20
EP0960503B1 (de) 2002-01-02
DE69803364D1 (de) 2002-02-28

Similar Documents

Publication Publication Date Title
DE69803364T2 (de) Verfahren und vorrichtung zur selektiven verwerfung von paketen für blockierte ausgangswarteschlangen in einer netzvermittlung
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE69823337T2 (de) Vorrichtung und verfahren zur rückgewinnung von puffern
DE69803442T2 (de) Gerät und verfahren zur erzeugung von verwaltungspaketen zur übertragung zwischen einer netzwerkvermittlungsstelle und einer host steuereinheit
DE60111457T2 (de) Vermittlungsanordnung mit redundanten Wegen
DE69803276T2 (de) Verfahren und gerät zur von den empfangenen daten abhängigen steuerung der informationsübertragungsauslösung
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE69732274T2 (de) Flusssteuerungsprotokollsystem und verfahren
DE69428186T2 (de) Mehrfachsendeeinrichtung
DE69033016T2 (de) Lokales Maschennetzwerk hoher Geschwindigkeit
DE69430945T2 (de) Schnelle Paketvermittlungsnetze
DE19929517B4 (de) Vorrichtung und Verfahren zum Zuordnen von VLAN-Markierungen
DE68925557T2 (de) Verfahren zum Zugriff von Daten in einer Tabelle und seine Anwendung zum Lenken von Daten zwischen entfernten Stationen
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE69805762T2 (de) Integriertes mehrfachzugangsvermittlungsmodul mit schnittstelle zu temporärem verwaltungsdaten -(mib)- speicher
DE69022300T2 (de) Verfahren und Vorrichtung zur Wiederanordnung eines maschenverknüpften lokalen Netzes hoher Geschwindigkeit.
DE60125678T2 (de) Vermittlungstelle mit Flusssteurungverwaltung
DE60131380T2 (de) Segmentierung und wiederzusammensetzung von datenrahmen
DE60125300T2 (de) Schaltungsanordnung zum Übertragen von Daten mit Datenpacketierung und-Depacketierung
DE112021000155T5 (de) Vorrichtungen und verfahren für netzwerknachrichtensequenzierung
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE60014178T2 (de) Vorrichtung und verfahren zur speicherteilung in einer konfiguration mit einzelring-datenbusverbindung
DE60217988T2 (de) System und Verfahren zum zeitschlitzbasierten Erlernen und Durchsuchen von ARL Tabellen mit Blockierung der Einfügung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition