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 netzvermittlungInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 19
- 230000015654 memory Effects 0.000 claims description 95
- 239000013598 vector Substances 0.000 claims description 90
- 230000005540 biological transmission Effects 0.000 claims description 56
- 239000000872 buffer Substances 0.000 description 246
- 230000008929 regeneration Effects 0.000 description 36
- 238000011069 regeneration method Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000012634 fragment Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000009849 deactivation Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 108700010388 MIBs Proteins 0.000 description 1
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0213—Standardised network management protocols, e.g. simple network management protocol [SNMP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/255—Control mechanisms for ATM switching fabrics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q3/00—Selecting arrangements
- H04Q3/42—Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
- H04Q3/54—Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
- H04Q3/545—Circuit 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/54575—Software application
- H04Q3/54591—Supervision, e.g. fault localisation, traffic measurements, avoiding errors, failure recovery, monitoring, statistical analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1863—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
- H04L12/1868—Measures taken after transmission, e.g. acknowledgments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3054—Auto-negotiation, e.g. access control between switch gigabit interface connector [GBIC] and link
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/354—Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/45—Arrangements for providing or supporting expansion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/1316—Service observation, testing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13162—Fault indication and localisation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1997
- 1997-12-18 US US08/992,428 patent/US5953335A/en not_active Expired - Lifetime
-
1998
- 1998-01-30 DE DE69803364T patent/DE69803364T2/de not_active Expired - Lifetime
- 1998-01-30 EP EP98903841A patent/EP0960503B1/de not_active Expired - Lifetime
- 1998-01-30 JP JP53577598A patent/JP4603102B2/ja not_active Expired - Lifetime
- 1998-01-30 WO PCT/US1998/001786 patent/WO1998036529A1/en active IP Right Grant
- 1998-02-13 TW TW087101988A patent/TW453080B/zh active
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 |