JP4603102B2 - ネットワークスイッチ内のブロックされた出力キューに関するパケットを選択的に廃棄するための方法および装置 - Google Patents
ネットワークスイッチ内のブロックされた出力キューに関するパケットを選択的に廃棄するための方法および装置 Download PDFInfo
- Publication number
- JP4603102B2 JP4603102B2 JP53577598A JP53577598A JP4603102B2 JP 4603102 B2 JP4603102 B2 JP 4603102B2 JP 53577598 A JP53577598 A JP 53577598A JP 53577598 A JP53577598 A JP 53577598A JP 4603102 B2 JP4603102 B2 JP 4603102B2
- Authority
- JP
- Japan
- Prior art keywords
- frame
- port
- copy
- pointer
- queue
- 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 28
- 230000015654 memory Effects 0.000 claims description 91
- 230000005540 biological transmission Effects 0.000 claims description 53
- 239000000872 buffer Substances 0.000 description 241
- 238000012546 transfer Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 7
- 239000012634 fragment Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping 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
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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)
- Small-Scale Networks (AREA)
Description
この発明は通信の分野に関し、特に、デバイスの複数のポートからデータの複数のコピーを送信するための方法および装置に関する。
背景技術
パッケージ交換ネットワーク(たとえばイーサネット網)などの多くのネットワークシステムにおいては、単一の端末局によりネットワーク上の他の複数の端末局に同じデータを送ることがしばしば望まれる。たとえば、従来の電子メールシステムでは、ユーザは電子メールシステムに接続された4人の異なったユーザに同じ電子メールのメッセージを送ることを希望することがある。
パケット交換ネットワークでは、スイッチは、スイッチのポートを介してエンドステーションからデータのフレームを受信したときに転送先を決定する。フレームが多くのエンドステーションに送信される場合、スイッチはそのフレームのコピーを正しいポートに転送するために転送先を決定する必要がある。
ほぼすべてのシステムでは、システムの資源に過度に負担がかかる場合がある。たとえば、複数のポートを有するネットワークスイッチでは、ポートのうち1つまたはそれ以上での外に向かうトラヒックのレベルが高いためにいくつかのポートにおいて輻輳が生じ、これらのポートを少なくとも一時的にトラヒックの送信のためには利用できなくなることがある。他のポートはトラヒックのコピーを送信するために利用できる状態のままである。したがって、同じデータのコピーの送信に指定されたポートのうちいくつかはブロックされ、指定された他のポートはブロックされないという状況になる。
従来のマルチポートネットワークスイッチの場合、データのコピーの送信に指定されたポートのすべてがブロックされると、データは廃棄され、廃棄されたデータが管理者に通知される。指定されたポートのうち数個しかブロックされておらず他のものはブロックされていない場合にも、同じ廃棄手順が行なわれる。換言すると、この状況では、1つのポートしかブロックされておらず10個のポートはブロックされていない場合でもデータは完全に廃棄されコピーは送出されない。この手順により比較的大量のデータが輻輳時に廃棄されるようになる。なぜなら、1つの指定ポートにのみ輻輳が生じた場合でも、スイッチ内の残りのポートにデータが送られないようになるからである。
発明の概要
より多くのデータを送信し、廃棄されるデータのコピー数を少なくする、デバイスの複数のポートからのデータのコピーの送信を制御するための構成および方法が必要である。
この必要性および他の必要性はこの発明の実施例によって満たされ、この発明は、複数のポートを介するデータのフレームのコピーの送信を制御するための方法を提供し、この方法は、フレームのコピーが送信されるポートを指定するステップを含む。その後、フレームのコピーのうち1つを送信するためにどの指定ポートが利用できないかを判断する。送信されるフレームのコピーは、フレームのコピーのうちの1つを送信するのに使用可能な指定ポートに与えられる。しかしながら、フレームのコピーのうち1つを送信するのに使用できない指定ポートから送信されるフレームのコピーは廃棄される。
この発明の利点は、フレームのコピーが、コピーを送信することができる指定ポートを介して送信されることである。廃棄されるコピーは、何らかの理由でコピーを送信することができない指定ポートから送信されるものだけである。これにより、単にフレーム全体を廃棄する場合よりも、ポートを介して端末局へ送られるデータのスループットが高まる。したがって、1つのポートにおける輻輳により、フレームのコピーができるだけ多くの指定ポートに与えられることが妨げられることはなく、このためフレームデータはできるだけ多くの意図される受信者によって受信され得る。
前述の必要性は、データの単一のフレームの複数のコピーを送信するマルチポートネットワークスイッチを提供するこの発明の別の実施例によっても満たされる。ネットワークスイッチは、データのフレームが送信される複数のポートを有する。ポートベクタ発生器はいずれのポートからフレームのコピーが送信されるべきかを指定するポートベクタを発生する。ポートベクタによって指定された各ポートがフレームのコピーを送信するために利用できるかどうかを判断するように構成された送信構成が設けられる。送信構成は、フレームのコピーを送信するのに使用可能な指定ポートを介してフレームのコピーを送信し、フレームのコピーを送信するために使用できない指定ポートから送信されたフレームのコピーを廃棄する。
この発明の上述の実施例の1つの利点は、スイッチによりフレームのコピーができるだけ多くネットワークに転送され、ポートのうち数個しかフレームのコピーの送信に使用可能なものがない場合でもフレーム全体が自動的に廃棄されるのではないということである。これにより、ネットワーク上に送信される有用なデータの量が増加し、転送のためにネットワークスイッチに対して最初にフレーム送信した結果がネットワーク資源の完全な浪費となってしまうことが回避される。
この発明の前述および他の特徴、局面および利点は、添付の図面と関連して読まれるとこの発明の以下の詳細な説明からより明らかとなるであろう。
【図面の簡単な説明】
図1は、この発明の実施例に従って構成されたパケット交換システムのブロック図である。
図2は、この発明の実施例に従って構成され、図1のパケット交換システムに用いられるマルチポートスイッチのブロック図である。
図3は、この発明の実施例に従って構成された、図2のマルチポートスイッチのスイッチサブシステムの概略図である。
図4は、この発明の実施例に従って構成された、図3のスイッチサブシステムの単一の出力キューを示すブロック図である。
図5は、この発明の実施例による第1のタイプの出力キューを詳細に示す図である。
図6は、この発明の実施例による第2のタイプの出力キューを詳細に示す図である。
図7は、この発明の実施例に従って構成された、外部メモリのオーバフロー領域を詳細に示す図である。
図8は、この発明に採用されるリンクトリストデータ構造のブロック図である。
図9は、この発明の実施例によるフレームバッファヘッダフォーマットを概略的に示す図である。
図10は、この発明の実施例に従って構成された、図4のスイッチサブシステムのマルチコピー、リクレームおよびフリーバッファプール領域を詳細に示す図である。
図11は、この発明の実施例に従って構成されたフリーバッファプール構造のブロック図である。
図12は、この発明の実施例に従って構成されたマルチコピーキューのブロック図である。
図13は、この発明の実施例に従って構成されたマルチコピーキャッシュの概略図である。
図14は、この発明の実施例に従って構成された、スイッチサブシステムのバッファマネージャのキュー部およびポートベクタFIFOのブロック図である。
例示的な実施例の詳細な説明
イーサネット(IEEE 802.3)網などのパケット交換ネットワークにおけるスイッチを例に挙げてこの発明を説明する。しかしながら、以下に詳細に説明するように、この発明は他のパケット交換システムおよび一般的な他のタイプのシステムにも適用可能であることが明らかとなるであろう。
図1は、この発明が有利に採用され得る例示的なシステムのブロック図である。例示的なシステム10はイーサネット網などのパケット交換ネットワークである。パケット交換ネットワークは、ネットワークステーション間でのデータパケットの通信を可能にする統合マルチポートスイッチ(IMS)12を含む。ネットワークはたとえば10M\bpsのネットワークデータレートでデータの授受を行なう24個の毎秒10メガビットの速度(M\bps)のネットワークステーション14と、100M\bpsのネットワーク速度でデータパケットの授受を行なう2つの100M\bpsネットワークステーション22といった、種々の構成を有するネットワークステーションを含み得る。したがって、スイッチ12はネットワークステーション14または22から受けたデータパケットをイーサネットプロトコルに基づく適切な宛先に選択的に転送する。
開示される実施例によると、10M\bpsネットワークステーション14は媒体17を介して、かつ半二重イーサネットプロトコルに従って、スイッチ12に対してデータパケットの授受を行なう。イーサネットプロトコルISO/IEC 8802−3(ANSI/IEEE Std.802.3,1993Ed.)は、すべてのステーション14が等しくネットワークチャネルにアクセスできるようにする半二重媒体アクセス機構を規定する。半二重環境のトラヒックは媒体17と区別されたりまたはそれより優先されることはない。各ステーション14はむしろ、媒体上のトラヒックを認識するために搬送波感知多重アクセス/衝突検出(CSMA/CD)を用いるイーサネットインタフェースカードを含む。媒体上の受信搬送波がデアサートされたことを感知することによりネットワークトラヒックの不在が検出される。送信するデータを有するステーション14はすべて、パケット間ギャップ期間(IPG)として公知である、媒体上の受信搬送波がデアサートされた後、予め定められた時間だけ待機することにより、チャネルにアクセスしようとする。複数のステーション14がネットワーク上に送信するデータを有する場合、ステーションの各々が、媒体上の受信搬送波の、デアサートが感知されたことに応答してIPG期間の後に送信を行なおうとするため、衝突が生じる。したがって、送信ステーションは、別のステーションが同時にデータを送信することにより衝突が生じていないかを判断するために媒体を監視する。衝突が検出されれば、両方のステーションが停止し、ランダムな期間だけ待機し、再度送信を試みる。
100M\bpsネットワークステーション22は好ましくは、提案されているフロー制御によるイーサネット規格IEEE 802.3x全二重−草案(0.3)に従う全二重モードで動作する。全二重環境は各100M\bpsネットワークステーション22とスイッチ12との間に双方向ポイントツーポイント通信リンクを設け、スイッチ12およびそれぞれのステーション22は衝突することなくデータパケットの送受信を同時に行なうことができる。100M\bpsネットワークステーション22の各々は、100ベース−TX、100ベース−T4または100ベース−FXタイプの100M\bps物理(PHY)装置20を介してネットワーク媒体17に結合される。スイッチ12は、物理装置20への接続をもたらす媒体独立インタフェース(MII)24を含む。100M\bpsネットワーク22は他のネットワークへの接続のためのサーバまたはルータとして実現され得る。
図1に示されるように、ネットワーク10は、スイッチ12と10M\bpsステーション14との間で送信されたデータパケットの時分割多重化および時分割非多重化を行なう一連のスイッチトランシーバ26を含む。磁気変成器モジュール19は媒体17上の信号の波形を維持する。スイッチ12は、時分割多重化プロトコルを用いて単一のシリアルノンリターンツーゼロ(NRZ)インタフェース23を介して各スイッチトランシーバ16に対するデータパケットの送受信を行なうトランシーバインタフェース18を含む。スイッチトランシーバ16はシリアルNRZインタフェース23からパケットを受信し、受信されたパケットを非多重化し、ネットワーク媒体17を介して適切なエンドステーション14にそのパケットを出力する。開示される実施例によると、各スイッチトランシーバ16は独立した4つの10M\bpsツイストペアポートを有し、スイッチ12が必要とするPINの数が4分の1に減少するようにするシリアルNRZインタフェースを介する4:1多重化を用いる。
スイッチ12は、意思決定エンジン、切換エンジン、バッファメモリインタフェース、構成/制御/状態レジスタ、管理カウンタ、ならびにネットワークステーション14および12のためのイーサネットポート間でデータパケットの経路制御を行なうためのMAC(媒体アクセス制御)プロトコルインタフェースを含む。スイッチ12はまた、インテリジェントな切換決定を行ない、後に説明するように、外部の管理エンティティに管理情報ベース(MIB)オブジェクトの形式で統計的なネットワーク情報を与えるための優れた機能を有する。スイッチ12はさらに、スイッチ12のチップサイズを最小にするためにパケットデータの外部ストアおよびスイッチ論理を可能にするインタフェースを含む。たとえば、スイッチ12は、受信したフレームデータ、メモリ構造およびMIBカウンタ情報をストアするための外部メモリ36へのアクセスをもたらす同期型ダイナミックRAM(SDRAM)インタフェース34を含む。メモリ36は2Mbまたは4Mbのメモリサイズを有する80、100または120MHz同期型DRAMであってもよい。
スイッチ12はさらに、外部管理エンティティが管理MACインタフェース32によってスイッチ12の全体的な動作を制御できるようにする、管理ポート30を含む。スイッチ12は、PCIホストおよびブリッジ28を介して管理エンティティがアクセスできるようにするPCIインタフェース26をさらに含む。これに代えて、PCIホストおよびブリッジ28が複数のスイッチデバイス12に対する拡張バスとしての役割を果たしてもよい。
スイッチ12は、1つのソースから少なくとも1つの宛先ステーションに受信データパケットを選択的に送信する内部意思決定エンジン(図2)を含む。内部意思決定エンジンには外部ルールチェッカが代用されてもよい。スイッチ12は外部ルールチェッカインタフェース(ERCI)40を含み、これは内部意思決定エンジンの代わりにフレーム転送決定を行なうために外部ルールチェッカ42が用いられるようにする。したがって、フレーム転送決定は、内部切換エンジンまたは外部ルールチェッカ42のいずれかによって行なわれ得る。
スイッチ12は、ポートごとのステータスをクロックに合せて出力しLED外部論理46を駆動する、LEDインタフェース44をさらに含む。LED外部論理46は人間が読取ることができるLEDディスプレイエレメント48を駆動する。発振器38はスイッチ12のシステム機能に40MHzのクロック入力を与える。
図2は、図1の統合マルチポートスイッチ(IMS)12のブロック図である。スイッチ12はそれぞれの10M\bpsネットワークステーション14間で半二重のデータパケットの送受信を行なうための24個の10M\bps媒体アクセス制御(MAC)ポート50(ポート1から24)と、それぞれの100M\bpsネットワークステーション間で全二重のデータパケットの送受信を行なうための2つの100M\bps MACポート53(ポート25および26)とを含む。上述のとおり、管理インタフェース30もまたMAC層プロトコル(ポート0)に従って動作する。MACポート50、53および30の各々は、受信先入れ先出し(FIFO)バッファ52と送信FIFO54とを有する。ネットワークステーションからのデータパケットは対応のMACポートで受信され、対応の受信FIFO52にストアされる。受信されたデータパケットは対応の受信FIFO52から外部メモリインタフェース34に出力されて、外部メモリ36にストアされる。
受信されたパケットのヘッダもまた、内部ルールチェッカ58または外部ルールチェッカインタフェース40のいずれかである、意思決定エンジンに転送され、いずれのMACポートからデータパケットが出力されるかを決定する。具体的には、パケットヘッダは、スイッチ12が内部ルールチェッカ58または外部ルールチェッカ42を用いて動作するよう構成されているか否かに依存して、内部ルールチェッカ58または外部ルールチェッカインタフェース40に送られる。内部ルールチェッカ58および外部ルールチェッカ42は、所与のデータパケットに関する宛先MACポートを決定するための意思決定論理を提供する。したがって、意思決定エンジンは、単一ポート、マルチプルポートまたは全ポート(すなわちブロードキャスト)のいずれかに所与のデータパケットを出力し得る。たとえば、各データパケットにはソースおよび宛先アドレスを有するヘッダが含まれ、意思決定エンジンは宛先アドレスに基づいて適切な出力MACポートを特定する。これに代えて、宛先アドレスは、適切な意思決定エンジンが複数のネットワークステーションに対応するものと特定するバーチャルアドレスに対応してもよい。これに代えて、受信されたデータパケットは、(100M\bpsステーション22のうちの1つのルータを介する)別のネットワークまたは所定のグループのステーションを特定するIEEE 802.1dプロトコルに準拠するVLAN(バーチャルLAN)タグ付フレームを含んでもよい。したがって、内部ルールチェッカ58または外部ルールチェッカ42のいずれかがインタフェース40を介して、バッファメモリ36に一時的にストアされたフレームが単一のMACポートまたは複数のMACポートに出力されるべきかを決定する。
外部ルールチェッカ42を使用することにより、容量の増加、およびフレームが外部メモリに完全にバッファされる前にフレーム転送決定を可能にし、かつスイッチ12がフレームを受信する順からは独立した順で決定が行なわれるようにする、決定キューのうちランダムな順序付け、といった利点がもたらされる。
意思決定エンジン(すなわち内部ルールチェッカ58または外部ルールチェッカ42)は、データパケットを受信すべき各MACポートを特定するポートベクタの形式で転送決定をスイッチサブシステム56に出力する。ルールチェッカからのポートベクタは、外部メモリ36にデータパケットをストアするアドレス場所と、データパケットを受信して送信するためのMACポート(たとえばMACポート0から26)の識別子とを含む。スイッチサブシステム56はポートベクタに特定されたデータパケットを外部メモリインタフェース34を介して外部メモリ36から取出し、取出されたデータパケットを特定されたポートの適切な送信FIFO54に与える。
付加的なインタフェースにより管理および制御情報が与えられる。たとえば、管理データインタフェース59は、MII管理仕様(IEEE 802.3u)に従うスイッチトランシーバ16および100M\bps物理装置20と制御およびステータス情報をスイッチ12が交換できるようにする。たとえば、管理データインタフェース59は、双方向管理データIO(MDIO)信号経路に時間基準を与える管理データクロック(MDC)を出力する。
PCIインタフェース26は、PCIホストプロセッサ28によって内部IMSステータスおよび構成レジスタ60にアクセスし、かつ外部メモリ36にアクセスするための、32ビットPCI改訂2.1に適合したスレーブインタフェースである。PCIインタフェース26は複数のスイッチデバイスのための拡張バスとしての役割も果たし得る。管理ポート30は標準7ワイヤ反転シリアルGPSIインタフェースを介して外部MACエンジンにインタフェースされ、標準MAC層プロトコルによりホストコントローラがスイッチ12にアクセスできるようにする。
図3は、この発明の例示的な実施例に従う、図2のスイッチサブシステム56をより詳細に説明する図である。図2に示されるマルチポートスイッチ12の他のエレメントは、スイッチサブシステム56とこれらの他のエレメントとの接続を示すために図3に再度示される。スイッチサブシステム56はフレームの受信および転送を行なうためのコアスイッチングエンジンを含む。スイッチングエンジンを実現するために用いられる主な機能ブロックは、ポートベクタFIFO70と、バッファマネージャ72と、複数のポート出力キュー74と、管理ポート出力キュー75と、拡張バスポート出力キュー77と、フリーバッファプール104と、マルチコピーキュー90と、マルチコピーキャッシュ96と、リクレームキュー98とを含む。これらの機能ブロックの動作および構成は後により詳細に説明するが、まず、個々のエレメントに関する後の説明に関連性を持たせるために、図3のスイッチサブシステム56の全体像を簡単に説明する。
ポートからマルチポートスイッチ12に入るフレームには基本的に2つのタイプがある。すなわち、単一コピーフレームとマルチコピーフレームとである。単一コピーフレームは、マルチポートスイッチ12によって他の1つのポートにのみ送られることとなる、ポートで受信されたフレームである。これとは対照的に、マルチコピーフレームは、1つのポートで受信され、1つより多い数のポートに送信されるフレームである。図3では、各ポートは別個のMAC50によって表わされ、それ自体の受信FIFO52および送信FIFO54を有する。
単一コピーまたはマルチコピーであるフレームは内部MACエンジン50によって受信される。フレームパケットがポートで受信されると、それは受信FIFO52に置かれる。各フレームはヘッダを有し、これは、内部ルールチェッカ58または外部ルールチェッカ42のいずれかのルールチェッカに与えられる。ルールチェッカ42または58は、ヘッダの情報に基づいて、フレームパケットがどこから送り出されるかを決定し、すなわちいずれのポートを介してフレームパケットが送信されるかを決定する。
ルールチェッカ42または58が転送決定を行なうのと同時に、バッファマネージャ72はフリーバッファプール104からフリーバッファポインタを得る。このフリーバッファポインタは、受信FIFO52によってフレームがストアされることとなる外部メモリ36の場所である。バッファマネージャ72によってフリーバッファポインタがフリーバッファプール104から得られると、フリーバッファポインタによってポイントされるバッファはもはやフリーであるとは考えられない。フレームデータは、直接メモリアクセス(DMA)トランザクションでデータバス80を介して受信FIFO52から外部メモリ36に転送される。フレームはフリーバッファプール104から得られたフリーバッファポインタがポイントする場所にストアされるが、後に説明するように、フレームをストアするために多くの他のバッファが用いられてもよい。
ヘッダデータの他に、ルールチェッカ42または58はバッファマネージャ72からのフリーバッファポインタも受信する。このフリーバッファポインタはここではフレームポインタと呼ばれる。なぜなら、フレームがストアされる外部メモリ36でのメモリ場所をポイントするからである。ルールチェッカ42または58は、転送決定を行ないかつ「ポートベクタ」の形式で転送命令を発生するためにヘッダ情報を用いる。図示される例示的な実施例では、ポートベクタは、フレームが転送されるべき各出力ポートに対してセットされたビットを備えた28ビットベクタである。この全体像での例では、受信されたフレームは単一フレームであると想定する。したがって、ルールチェッカ42または58によって生成されたポートベクタには1つのビットしかセットされない。ポートベクタにセットされたビットはポートのうち特定的なものに対応する。
ルールチェッカ42または58はポートベクタFIFO70にポートベクタおよびフレームポインタ(ならびに制御操作コードおよびVLANインデックス)を置く。ポートベクタはポートベクタFIFO70によって検査され、ポートベクタに関連したフレームポインタがどの特定の出力キュー74に入力されるべきかを決定する。ポートベクタFIFO70は適切な出力キュー74の一番上にフレームポインタを置く。これによりフレームの送信がキューとして維持される。
ある時点で、フレームポインタは出力キュー74を通過した後に出力キュー74の一番下まで到達する。バッファマネージャ72はそれが出力キュー74の一番下まで到達したときにフレームポインタを取り、フレームポインタ書込バス86を介して正しいポートの適切な送信FIFO54にそのフレームポインタを送る。これによりフレームの送信がスケジュールされる。フレームポインタによってポイントされた外部メモリ36での場所からDMAトランザクションにおいて読出されたフレームデータは、適切な送信FIFO54に置かれ後に送信される。
マルチコピー送信は、ポートベクタが、フレームがそれらから送信されることとなるマルチプルポートを示す、セットされた複数のビットを有する点を除いて、単一コピー送信と同様である。フレームポインタは適切な出力キュー74の各々に置かれ、対応の送信FIFO54から送信される。
バッファマネージャ72は特殊な制御キューを用い、すなわち、フリーバッファプール104と、マルチコピーキュー90と、リクレームキュー98と、マルチコピーキャッシュ96とを用いて、受信フレームをストアするためにバッファを割当て、フレームがその指定された出力ポートに送信されると再度使用できるようバッファを取出すプロセスを管理する。後により詳細に説明するが、バッファマネージャ72はまた、出力キュー74ならびに制御キュー104、90および98のために外部メモリ36に「オーバフロー」領域を維持する。
この動作上の全体像を背景として、以下にスイッチサブシステム56の個々のセクションおよびさまざまな局面をより詳細に説明する。これらの局面のうち最初に説明するものは、この発明のさまざまな出力キュー74の構造である。10Mb/sポートおよび100Mb/s出力ポートに指定される出力キュー74の他に、管理ポート30のために出力キュー75が設けられ、拡張ポート26のために出力キュー77が設けられる。これらの出力キュー75および77は出力キュー74と同じ外部構成を有するが、後に説明するように、異なった内部構成を有する。
図4は、この発明の実施例に従う出力キュー74の外部構成を示すブロック図である。図4から明らかなように、この発明の出力キュー74は3部構成である。性能を最も高くするためには、チップ上のキュー構造のすべてを保持することが好ましいが(マルチポートスイッチ12を参照)、チップの占有面積に関する費用は非常に高い。これにより、チップが多数のエントリの切換を行ない、それらをキューとして維持する必要があるときにはジレンマが生じる。この発明は、チップ上に高性能な小容量セクションを含み、チップ外にオーバフロー領域を含む、単一の出力キューを与えることによりこのジレンマを解消する。オーバフロー領域は、チップ上の領域よりも比較的性能が低いにも関わらず、所要の大容量のキューとしてキューが役割を果たすようにする。
図4の実施例に従うこの発明の単一論理出力キュー74は3つの物理セクションを有する。これらには、出力キュー書込側76と、出力キュー読出側78と、外部メモリ36にある出力キューオーバフロー領域(全体が110として示される)とが含まれる。出力キュー74のすべてに関する外部メモリ36へのアクセスは、前述のとおり外部メモリインタフェース34を介するものである。この発明は、現在の外部メモリのバースト的な性質を利用し、(フレームポインタなどの)データが、チップ12を外部メモリ36に接続するバス84を介してバースト状にチップの内外からオーバフローキュー領域110に送られるようにする。
出力キュー書込側76および出力キュー読出側78はチップ12上にある。書込側76および読出側78は小さくて値段の高い資源であると考えられる。これとは対照的に、出力キュー74の第3の部分を形成するオーバフロー領域110は大きくて比較的安価である。書込側76および読出側78により高い性能がもたらされ、オーバフロー領域を通る経路によっては低性能で大容量の経路がもたらされる。
動作時に、出力キュー書込側76はエントリを受信する。この発明に従うマルチポートスイッチ12の例示的な実施例では、エントリは、フレームの最初の256バイトがストアされる外部メモリの第1のバッファをポイントするフレームポインタである。しかしながら当業者には、出力キューの構成74はエントリとしてのフレームポインタに制限されず、マルチポートスイッチおよび他の技術の両方において、他のタイプのエントリをキューとして維持することに広く適用可能であることが明らかであろう。
エントリが出力キュー書込側76内を完全に移動し、その一番下まで到達すると、出力キュー74に関連した制御論理はエントリをどう処理するか決定する。出力キュー読出側78にスペースがあれば、出力キュー74のオーバフロー領域110は空いており、1つまたはそれ以上のエントリが出力キュー書込側76から出力キュー読出側78に直接送られる。書込側76から読出側78に直接エントリを送ることはすべてチップ12上で行なわれるため、エントリは低レイテンシーで素早く完全に送られる。
出力キュー読出側78がいっぱいであり、出力キュー書込側76に少なくとも1バーストサイズの量のデータ(たとえばエントリの16バイト分)があれば、データはその出力キュー74のオーバフロー領域110にバースト状に書込まれる。出力キュー読出側78がいっぱいであり、かつ出力キュー書込側76にはまだ1バーストサイズの量のデータがないときは、エントリは出力キュー書込側に留まりさらに処理は行なわれない。最終的には、出力キュー読出側78は空になり、出力キュー読出側78に1バーストサイズの量のデータを収容する十分なスペースが生まれ、かつオーバフロー領域110にデータがあるときがくると、オーバフロー領域110から出力キュー読出側78に1バーストのデータが与えられる。
出力キュー構成において、読出側78は伝統的なキューとほぼ同様に作用する。なぜなら、エントリが1つずつ取出されるのはこの部分からであるからである。出力キュー書込側76は主に、データをバーストに組立てて外部メモリ36に書込むための回収機能を果たす。したがって、この発明は単一の事象(エントリを出力キュー74に置くこと)をバースト事象に変える。書込側76は、蓄積されたデータが必要に応じて外部メモリ36のオーバフロー領域110にバーストされるようにする。比較的稀な場合にのみ必要となる機能に高価なチップ資源を提供するのではなく、輻輳時にオーバフロー領域110が安価なストレージを提供する。この発明はチップ外のオーバフロー領域110を利用するが、この領域110のアクセスは、1度に多くのバイトの情報をバーストすることにより効率よく行なわれる。これは、単一のエントリがキューに対して書込まれたり読出されたりする従来のキュー構造とは対照的である。
動作時に、出力キュー74に到達するエントリが多ければ、これらのエントリはオーバフロー領域110に置かれ、チップ上のキュー78のオーバフローを回避するようにする。したがって、この発明のキュー構造を用いるとフレームの廃棄が大幅に防止される。また、オーバフロー領域110のためのメモリの合計量は、外部メモリ36のサイズを変更することにより容易に変更可能である。さらに、個々の特定のオーバフロー領域110のサイズは、出力キュー74の性能に影響を及ぼすことなくキューのサイズをカスタマイズするためにプログラム可能である。
典型的に、キューは、先入れ先出し構成を有する順序づけられた構成である。しかしながら、リクレームキュー98およびフリーバッファプール104などのいくつかのタイプのキューでは、エントリの順序は問題ではない。書込側100から読出側102にデータを直接送信することが可能であれば、この発明はそのキューに関するオーバフロー領域を迂回して情報がこの経路に直接送信されるようにする。これは、情報が順番によって影響を受けない限り、関連のオーバフロー領域に情報がある場合でも可能である。たとえば、バッファの再要求は順番によって影響を受けない。なぜなら、バッファがフレームにストアされる必要がなくなった後に、最終的にバッファがフリーバッファプール104のフリーリストに戻される順番は、いかなるものでも許容されるからである。したがって、データが順番によって影響を受けない場合に外部メモリ36のリクレームキュー98のオーバフロー領域110への書込についての帯域幅が生じるのを回避するために、読出側102にさらなるエントリのためのスペースがあるものと想定して、書込側100から読出側102に情報が直接送られる。リクレームキュー98は順番によって影響を受けないデータをキューとして維持するタイプのキューの一例である。しかしながら、順番によって影響を受けない他の多くのタイプのデータが種々の適用例で可能であるため、この発明のこの特徴は、他のタイプのデータをキューとして維持するキューにおいて有用性を見出す。
図1および図2に示されるこの発明の例示的な実施例のマルチポートスイッチには28個の出力キュー(各々が出力ポートと関連する)があり、すなわち、10Mb/sユーザポートに関するものが24個、100Mb/sサバポートに関するものが2つ、管理ポートに関するものが1つ、そして拡張バスポートに関するものが1つある。出力キュー74、75および77は、フレームポインタが送信のためにキューとして維持されるときにそれらに一時的なストレージを提供する。キュー作業は、転送ポートベクタに示されるさまざまな出力キュー74、75および77に対してポートベクタFIFO70がフレームポインタを書込むという形態をとる。
この発明のある好ましい実施例では、さまざまな出力キュー74、75および77は以下のフィールドのうちいくつかまたはすべてを含む。すなわち、単一コピービットと、フレームポインタと、制御操作コードまたは制御信号と、VLAN(バーチャルローカルエリアネットワーク)インデックスとである。単一コピービットは1つの出力ポートにのみ転送されることとなるフレームを示す。フレームポインタは外部メモリ36のフレームをポイントする。制御操作コードはフレームに関する特定的な情報(すなわち新たに得たフレームなど)を識別する。制御信号は制御操作コードからの情報を用いて、送信前にポートによってフレームがいかに処理されるかを示す。VLANインデックスは、外部へのフレームに(必要であれば)挿入されるべきVLANタグに対する基準を与える。しかしながら、この発明は種々のタイプのフィールドを有する他の出力キューにも適用可能であるため、これらのフィールドは例としてのみのものである。
第1のタイプの出力キュー74、すなわち10Mb/sポート出力キューの例示的な実施例の内部構成が図5に示される。10Mb/s出力キュー74は10Mb/sポートに転送されることとなるフレームのエントリを保持する。これらのキューの出力キュー書込側76は32個のエントリを保持し、出力キュー読出側78は図示される例示的な実施例において16個のエントリを保持するが、考えられる他のサイズのものもこの発明の範囲内である。10Mb/s出力キュー74は単一コピービットとフレームポインタ(14ビット)とを含む。この発明のマルチポートスイッチの例示的な実施例では、10Mb/sポートにはVLANタグがないためVLANインデックスは必要ない。
第2のタイプの出力キュー74、すなわち100Mb/sポート出力キューの例示的な実施例の内部構成が図6に示される。100Mb/sポート出力キューは100Mb/sポートに転送されることとなるフレームのエントリを保持する。出力キュー書込側76はこのタイプの出力キューに64個のエントリを保持し、出力キュー読出側は16個のエントリを保持する。各エントリはVLANインデックスと、部分的な制御操作コード(ビット4−0)と、単一コピービットと、フレームポインタとを含む。
外部メモリ36の例示的なマップが図7に示される。外部メモリ36の全体の容量はたとえば4Mbであるが、種々の実施例において他の容量のメモリが採用されてもよい。この発明に従ってオーバフロー領域に外部メモリ36を使用することにより、外部メモリを変更するだけで出力キューのサイズを増減することができる。これは、キューとして維持する容量全体がチップの製造時に設定される、キュー構成がすべてチップ上にあるシステムよりも有利である。
スイッチ12のストア要件を満たすために、外部メモリ36の例示的な実施例は下記の領域にスペースを割当てる。すなわち、フリーバッファプールオーバフロー120と、リクレームキューオーバフロー122と、マルチコピーキューオーバフロー124と、管理ポート出力キューオーバフロー126と、10Mb/sおよび100Mb/s宛先ポートの各々のための個々の出力キューオーバフロー128と、拡張バスポート出力キューオーバフロー130と、MIBカウンタ132と、グローバルフレームバッファプール134とである。
メモリ領域全体のBASEアドレスはチップ上のレジスタ60の中のメモリベースアドレスレジスタ内でプログラム可能である。外部メモリマップ内の各領域のBASEアドレスはレジスタセット内でプログラム可能である。領域長レジスタは不要である。所与の領域の長さは、マッピング内のその領域のBASEアドレスから次の領域のBASEアドレスまでの領域に等しい。
個々のオーバフロー領域の長さ(したがって容量)がプログラム可能であるため、各キューの容量全体がプログラム可能である。この発明のこの特徴により、必要に応じて容量の増大した特定の出力キューを提供するようにスイッチをカスタマイズすることが可能になる。
したがって、チップ12上の制御キューに適合しない後続のオーバフロー領域ストアエントリは外部メモリ36に置かれる。フリーバッファプールオーバフロー領域120はアドレスポインタをグローバルフレームバッファプール134中の未使用のバッファにストアする。リクレームキューオーバフロー領域122は、必要でなくなったリンクトリストチェーンにフレームポインタをストアする。マルチコピーキューオーバフロー領域124は(キューとして維持されたフレームポインタについては)コピーナンバー「≧1」を、かつ(うまく送信されたフレームについては)コピーナンバー「−1」を付してフレームポインタをストアする。
後続のオーバフロー領域は、チップ上に入らない出力キューのエントリをストアする。管理ポート出力キューオーバフロー領域126は管理ポートへの送信を待機するフレームポインタをストアする。出力キューオーバフロー領域128は適切な10Mb/sまたは100Mb/sポートへの送信を待機するフレームポインタをストアする。拡張バスポート出力キューオーバフロー領域130は拡張バスポートへの送信を待機するフレームポインタをストアする。
MIBカウンタ領域132は、スイッチ12によって周期的に更新されるポートごとの統計をすべて含む。スイッチ12はMIB統計をストアするための8ビットおよび16ビットカウンタをチップ上に維持する。スイッチ12はMIBデータの損失を防止するために要求される周波数で、外部メモリ36の32ビットまたは64ビットのMIBカウンタを更新する。
グローバルフレームバッファプール134は、受信されたフレームデータをストアするリンクトリストのバッファを含む。任意の時点で、これらリンクトリストは有効フレームデータと無効になったバッファとを含み、無効になったこれらのバッファは、バッファマネージャ72によってフリーバッファプール104に戻されるか、またはPCIホストプロセッサ28の所有となる。
次に図8を参照して、いずれかのMACポートまたはPCIバスから受信されたフレームデータは、この発明の例示的な実施例におけるリンクトリストデータ構成のフォーマットで外部メモリ36にストアされる。リンクトリストを生成するために用いられるバッファ140の長さは256バイトであるが、発明の種々の実施例では他の長さのバッファ長さが採用されてもよい。これらのバッファ140の各々へのアドレスポインタはスイッチ12内のフリーバッファプール104によってストアされる。
スイッチ12のポートのうち1つにフレームが受信されると、バッファマネージャ72はフリーバッファプール104からアドレスポインタを要求し、バッファ140をリンクしてフレームをストアするようにする。フレームをストアする外部メモリ36の第1のバッファに対するアドレスポインタが、そのフレームに対するフレームポインタになる。フレームポインタは、送信されることとなるフレームをキューとして維持するためのスイッチサブシステム56において用いられる。
バッファ140は、メモリの次のバッファの場所を示す各バッファヘッダ142のアドレスポインタによって互いに繋がれる。バッファヘッダ142はまた、バッファ140に含まれるフレームデータに関する他の情報を含む。図9aの例示的なバッファヘッダフォーマットに示されるように、先頭のバッファのヘッダは12バイトである。図9bに示されるように、後の各バッファのヘッダは4バイトである。外部メモリバーストは、2バンク×16バイトの長さであるため、各バッファの実際のフレームストア容量は256B−16B=240Bである。
図9aおよび図9bに示されるように、先頭および後のバッファヘッダフォーマットは下記のフィールドを含む。
バッファフォーマットビット:どのバッファフォーマットが使用中であるかを示す。1は12バイトの長さの先頭バッファフォーマットを示す。0は4バイトである後のバッファのフォーマットを示す。バッファを繋ぐ際に残りのバッファの各々に関して用いられる。
Eビット(フレームマーカの最後):フレームに関する最後のバッファであることを示す。Eビットがセットされていれば、チェーンにはこれ以上バッファはない。
Cビット(CRCエラー検出):CRCエラーが受信機によって検出されたことを示す。Cビットが検出されると、送信機能は反転されたCRCを意図的に送信する。
Lビット(整列エラー):フレーム整列エラーが(CRCエラーとともに)受信フレームに検出されたことを示す。
Oビット(受信FIFOオーバフロー):受信FIFOがオーバフローし、バッファのデータが有効でないかもしれないことを示す。
バッファ長さ:バッファヘッダの後の最初のバイトから始まる、バッファのデータフィールドにおいて有効なバイトの合計数。この長さにはオフセットバイト値は含まれるべきではない。
次のバッファポインタ:次のバッファに対するポインタ。次のバッファポインタはEビットがセットされているときには有効でない。
オフセットバイト数:バッファのフレームデータセクションにおいてフレームの最初のバイトが始まる場所を示す。0のオフセットは、データがバッファヘッダ142の後の最初のビットで始まることを意味する。0のオフセットは、データがバッファの16番目のバイトに後続するバイトで始まることを示す。オフセットが0でない値の場合、フレームデータは16B+バッファの始まりからのオフセットの後に始まる。送信機能はオフセットバイトフィールドに示されるバイト数だけ飛び越す。
Pビット(ポートタイプ):入来する受信フレームのポートタイプを示す。0は10Mb/sポートを示し、1は100Mb/sポートを示す。このビットは、フレームが完全に受信されて外部メモリ36にバッファされる前に、フレームを拡張バスに転送するようスイッチ12をプログラミングする際に、タイムスタンプフィールドに関連してホスト28によって用いられる。
Tビット:受信されたフレームのタイプを示す。タグ付またはタグ付でない場合がある。1はタグ付のフレームであることを示し、VLAN識別子フィールドは受信VLAN IDを含む。0はタグ付でないフレームを示し、VLAN IDは有効でない。
受信ポート番号:フレームが受信されたポート番号を示す。
VLAN識別子:「タグ付」ポートから受信されたVLAN ID。フレームがタグ付でないポートから受信される場合、このフィールドは無効である。
Rビット(CRC再計算):CRCを除去し送信機能において再計算する必要があることを示す。スイッチ12はタグ付フレームが受信されるとこのビットをセットする。さらに、ホスト28がフレームの内容を修正した場合、ホスト28はこのビットをセットしなければならない。スイッチ12がフレームを送信すると、スイッチ12はこのビットを検査して、既存のCRCを送信するか、CRCを除去してCRCを再計算するかを判断する。
Aビット(CRC追加):フレームデータの最後にCRCがないことを示す。ホストはメモリに(CRCなしの)フレームを生成し、このビットをセットすることができる。スイッチ12はフレームの送信時にCRCを発生して追加する。Aビットがセットされている場合、フレームの長さにはCRCは含まれるべきでない。
Fビット(フォーマットビット):フレーム長/タイムスタンプフィールドを特定する。0はフィールドが入来フレームのタイムスタンプであることを示す。1はフィールドが受信フレームのフレーム長であることを示す。
フレーム長/タイムスタンプ:Fビットに依存する。Fビットがクリアされていると、このフィールドは受信フレームの最初からのタイムスタンプを表わす。タイムスタンプは1μsの分解能を有する。Fビットがセットされている場合には、CRCおよび受信されたVLANタグの全てを含む受信フレームの長さの合計が示される。フレームが受信されると、スイッチ12は(タイマレジスタからの)タイムスタンプでこのフィールドをマークする。フレームが完全に受信される前に拡張バスフレームを転送するようホスト28によってスイッチ12がプログラミングされている場合、フレームデータを過度に読出すことなく外部メモリ36から取出すことができるデータを測定するために(受信ポートの速度とともに)タイムスタンプを用いることができる。フレーム全体が受信されると、スイッチ12はフレーム長をこのフィールドに書込みFビットをセットする。
コピー数:ポートベクタFIFO70によって送信されるようにうまくキューとして維持されたコピーの数を示すために用いられる。このフィールドは、バッファマネージャ72が、新しいエントリのためのマルチコピーキャッシュ96にスペースを設ける必要がある場合に、フレームポインタのコピー数をストアするために用いられる。
図10は図3のスイッチサブシステム56のいくつかの要素を示す詳細図である。これらの要素は、フレーム記憶のためのバッファを与えるため、かつ、バッファがフレーム記憶のためにもはや必要とされなくなるとこれらのバッファを再要求し、再び使用可能にするために用いられる。上述のように、各出力キュー74、75(出力キュー77を除く)はフレームポインタをバッファマネージャ72に渡し、バッファマネージャ72はフレームポインタが指すフレームの送信をスケジュールする。バッファマネージャ72は、1)スイッチ12の内部バスを管理し、2)出力キュー74への/からのフレームポインタのキュー入れ/出しを容易にし、3)バッファの位置を決め、フリーバッファプール104に戻すために制御キュー90、98を管理し、4)外部メモリ36を出入りするデータの流れを制御し、5)MIBおよびオーバーフロー領域を含むメモリ構造を維持するという機能を制御する。バッファマネージャ72は全アクセスを外部メモリ36に割当てるためのスケジューラ機能を含む。これらのアクセスには、1)受信されたフレームデータを記憶バッファ140に書込み、2)送信のために記憶バッファ140からフレームデータを読出し、3)出力キュー74および制御キュー90、98のためのオーバーフロー領域の各々にフレームポインタを維持し(すなわち、書込み、読出す)、4)MIBカウンタを更新することが含まれる。
バッファマネージャ72が所与のフレームポインタを適切な全出力キュー74、75にコピーした後、ポートベクタFIFO70がコピーの数(「コピー数」)を計算し、フレームポインタおよびコピー数をマルチコピーキュー90の書込側に入れる。コピー数は、フレームが転送されるべきでないことを示す「0」、単一コピー送信を示す「1」、またはマルチコピー送信を示す「>1」であり得る。これらの3つの場合を以下に説明する。
コピー数が「0」であり、フレームポインタがセットされたビットのないヌル転送ポートベクタを有することが意味されているとき、ポートベクタFIFO70はフレームポインタをリクレームキュー98の書込側100に直接渡す。バッファマネージャ72がリクレームキュー98を処理するときは、以下に述べるようにバッファマネージャ72がバッファのリンクトリストチェーンを解体し、各「フリー」バッファごとのアドレスポインタをフリーバッファプール104の書込側106に戻す。
コピー数が「1」の単一コピー送信のとき、ポートベクタFIFO70はフレームポインタ、制御信号/制御操作コードおよびVLANインデックスを適切なポートの出力キュー74にコピーする。ポートベクタFIFO70は出力キュー74内の単一コピービットをセットして(図5および図6参照)、これが単一の送信であることを示す。バッファマネージャ72はそのポートの出力キュー74からフレームポインタおよび単一コピービットを読出すと、上述のように送信をスケジュールする。バッファマネージャ72は、フレームがストアされている外部メモリ36において最初のバッファの位置を決めるためにフレームポインタを用いる。バッファマネージャ72はこの最初のバッファからバッファヘッダを読出し、最初のバッファからデータを捕捉し、このデータを適切なMAC送信FIFO54に入れる。フレームが複数バッファにおよぶ場合を想定すると、そのフレームのためのチェーン内の全バッファを見つけ、送信するためのアドレスを、後続バッファへのリングがバッファマネージャ72に与える。データが送信のためにFIFO54に一旦置かれると、バッファは不使用となり、フリーバッファプール104に戻され、結果として別のフレームデータをストアするために再割当される。
コピー数が1よりも大きいとき、ポートベクタFIFO70はフレームポインタ、VLANインデックスおよび制御信号/制御操作コードを適切な出力キュー74の各々にコピーする(キュー74に言及する際には、キュー75、77もまた言及されている)。ポートベクタFIFO70は出力キュー74内の適切なフレームポインタのための単一コピービットをクリアし、コピー数が「>1」であるフレームポインタをマルチコピーキュー90の書込側92に入れる。
バッファマネージャ72がフレームポインタおよびクリアされた単一コピービットを出力キュー74の1つから読出すたびに、バッファマネージャ72はフレームの送信をスケジュールするが、コピー数「1」のフレームポインタを有するエントリがあるかどうかマルチコピーキャッシュ96をも調べる。コピー数「1」のフレームポインタがマルチコピーキャッシュ96に見つかれば、バッファマネージャ72は、フレームの単一コピー送信の場合と同様に、送信のためにフレームをスケジュールし、送信の間にバッファを再要求する。しかしながら、フレームポインタがマルチコピーキャッシュ96にないか、マルチコピーキャッシュ96におけるフレームポインタのコピー数が1よりも大きければ、バッファマネージャ72はフレームを送信するがバッファを再要求しない。送信を成功させた後、バッファマネージャ72はフレームポインタのコピーをコピー数「−1」とともにマルチコピーキュー90の書込側92に入れる。
マルチコピーフレームが送信されるたびに、バッファマネージャ72はマルチコピーキャッシュ96内にコピー数「1」のフレームポインタを見つけられなかったならば、フレームポインタのコピーをマルチコピーキュー90に入れる。したがって、いかなる所与の時間でも、マルチコピーキュー90はコピー数が「1」よりも大きいフレームポインタ、および/または、各々コピー数が「−1」である、同じフレームポインタのいくつかのコピーを含むことができる。
バッファマネージャ72は不使用となったバッファを再要求するためにマルチコピーキュー90およびマルチコピーキャッシュ96を絶えず処理する。バッファマネージャ72はマルチコピーキュー90を処理し、コピー数「>1」のフレームポインタを読出すと、この新しいエントリ(フレームポインタおよびコピー数)をマルチコピーキャッシュ96に入れようと試みる。マルチコピーキャッシュ96がフルであれば、バッファマネージャ72はその新しいフレームポインタのためにスペースを設ける。バッファマネージャ72は「より古い」マルチコピーキャッシュエントリを読出し、外部メモリ36内のそのバッファヘッダ内のこのエントリに対するコピー数を更新し、このエントリをマルチコピーキャッシュ96からクリアする。マルチコピーキャッシュ96内に使用可能な空きができると、バッファマネージャ72はマルチコピーキュー90からの新しいエントリをマルチコピーキャッシュ96に入れることができる。
バッファマネージャ72がマルチコピーキュー90を処理し、コピー数「−1」のフレームポインタを読出すと、それはマルチコピーキャッシュ96を探索して、デクリメントまたはデリートするためにコピー数「≧1」の対応するフレームポインタアドレスを探す。バッファマネージャ72がフレームポインタの一致を見つければ、それは1)コピー数が「>1」であればマルチキャッシュのフレームポインタをデクリメントするし、または2)コピー数が「1」であればマルチコピーキャッシュのフレームポインタ/コピー数エントリをデリートし、フレームポインタをリクレームキュー98に入れる。
一致するフレームポインタが見つからなければ、バッファマネージャ72はコピー数を求めて外部メモリ36(図9参照)におけるフレームポインタのバッファヘッダを探索する。メモリ内のコピー数が「1」であれば、バッファマネージャ72はフレームポインタをリクレームキュー98に入れる。メモリ内のコピー数が「>1」であれば、バッファマネージャ72はこのコピー数のフレームポインタをマルチコピーキャッシュ96に入れ、そのコピー数をデクリメントする。
バッファマネージャ72は、フレームポインタを読出してから、リンクトリストチェーンをたどり、バッファをフリーバッファプール104に戻すことによって、リクレームキュー98を絶えず処理する。この作用は、ヌルポートベクタを有し、ポートベクタFIFO70によってリクレームキューに入れられていたフレームか、マルチコピー転送ベクタを有し、全コピーの送信を完了したフレームかのためのバッファを戻すのみである。単一コピーフレームにリンクされたバッファは、上述のようにそのフレームが送信されるときにフリーバッファプール104へと直接戻される。
出力キュー74と外部メモリ36内のそのオーバーフロー領域110とがフルであるために、ポートベクタFIFO70が単一コピー転送ベクタのためのフレームポインタを出力キュー74に入れることができなければ、そのフレームは廃棄される。フレームポインタはリクレームキュー98に戻され、フレームの廃棄がスイッチの管理資源によって記録される。
1つ以上の出力キュー74と外部メモリ36内のそれらのオーバーフロー領域110とがフルであるために、ポートベクタFIFO70がマルチコピー転送ベクタのための1つ以上のフレームポインタを入れることができなければ、そのフレームは使用可能なスペースのある出力キューへと転送されるのみであり、マルチコピーキュー90に入れられたコピー数はうまく入れられたフレームポインタを反映するのみである。フレームポインタが入れられなかったことは、フレームポインタがキューに入れられなかった各ポートごとにスイッチ管理資源によって記録される。全出力キュー74と外部メモリ36内のそれらのオーバーフロー領域110とがフルであるためにポートベクタFIFO70がマルチコピー転送ベクタのためのどのフレームポインタも入れることができなければ、そのフレームポインタはリクレームキュー98に渡され、スイッチ管理資源にはそれに従い通知される。
どの出力キューがフルであるか判断し、フルでないそれらのキューにのみフレームポインタを入れ、残りを廃棄するような、ポートベクタFIFO70が行なう上述の作用を実現するための論理は、この機能説明があれば当業者によって容易に与えられる。たとえば、出力キューがフルであることは(レジスタ60の1つにおいて追跡される)特定の出力キュー内のフレームポインタの数を比較し、この数をキューがフルであることを示すしきい値数と比較することによって判断可能である。これが認識されると、ポートベクタFIFO70はその出力キューにロードされるはずであったフレームポインタを単に廃棄し、そのマルチコピーフレームのための廃棄されたフレームポインタの数の(別のレジスタ60に維持される)カウントを増加させる。
マルチコピーキュー90は、フレームをストアするために用いられる全バッファ(すなわち、アドレスポインタ)がフリーバッファプール104に戻され得る前に、特定のマルチコピーフレームの何回の送信が完了されなければならないかを追跡するためにバッファマネージャ72が用いる高優先順位キューである。この出力キューの書込側92および読出側94はそれぞれ64エントリおよび16エントリを保持する。マルチコピーキュー90はマルチコピーキャッシュ96に入力を与え、マルチコピーキャッシュ96はいつバッファを再要求するかを決定するためにバッファマネージャ72によって用いられる。マルチコピーキューの内部構造を図12に示す。
出力キュー74にうまく入れることができたフレームポインタの数に基づいて、ポートベクタFIFO70はフレームのフレームポインタコピーと「>1」であるコピー数とをマルチコピーキュー90に入れる。特定のポートの出力キュー74がフルであれば、ポートベクタFIFO70はフレームポインタのコピーをその出力キュー74に入れることができず、したがって、これをコピー数を決定する際の成功した事象として含めることはできない。
バッファマネージャ72が出力キューフレームポインタを読出し、単一コピービットが「0」である(すなわち、マルチコピー)ことを見つけるたびに、それは、これが最後の送信であることを示すコピー数「1」のフレームポインタを求めてマルチコピーキャッシュを調べる。この一致が見つからなければ、各バッファの内容が送信された後に不使用になったバッファをフリーバッファプール104に与えることによって、バッファマネージャ72は単一コピー送信の場合と同様にフレームを送信し、バッファを再要求する。一致が見つかれば、バッファマネージャ72はマルチコピーフレームを送信し、コピー数「−1」のフレームポインタのコピーをマルチコピーキュー90に入れる。拡張バス出力キュー75または管理ポート出力キュー77へとキューに入れられたフレームのためのマルチコピーフレームポインタの(PCIインターフェイス26を介しての)使用をホストが終了すると、ホストはコピー数「−1」のフレームポインタのコピーをフレームポインタレジスタを介してマルチコピーキューへと書込む。このレジスタは図2におけるレジスタ60のブロックに示されるレジスタの1つである。
出力キュー74と同様に、マルチコピーキュー90も入力経路および出力経路を備えて構成される。入力経路または書込側により、ポートベクタFIFO70およびバッファマネージャはフレームポインタ/コピー数をマルチコピーキュー90に入れることができる。出力経路または読出側により、マルチコピーキュー90はフレームポインタ/コピー数をマルチコピーキャッシュ96に入れることができる。マルチコピーキューオーバーフロー124と呼ばれる、フレームポインタ/コピー数のためのさらなるストレージが外部メモリ36に設けられる。
フレームポインタ/コピー数が空のマルチコピーキュー90に書込まれると、それらは読出側94がフルになるまで書込側92から読出側94へと移動する。マルチコピーキュー90の書込側92に書込まれるさらなるフレームポインタ/コピー数は外部メモリ36内のマルチコピーキューオーバーフロー領域124に入れられる。一旦マルチコピーキュー90の読出側94とそのオーバーフロー領域124とがフルになれば、マルチコピーキューに入れられるさらなるフレームポインタ/コピー数が書込側92を満たし始める。
マルチコピーキュー90を通過するフレームポインタの順序は、マルチコピーキューの読出側94のスペースがクリアされると、フレームポインタ/コピー数がマルチコピーキューオーバーフロー領域124からマルチコピーキューの読出側94へと移動し、マルチコピーキューの書込側92からマルチコピーキューオーバーフロー領域124へと移動するようにして維持される。
マルチコピーキャッシュ96はマルチコピーキュー90と同様であるが、フレームポインタ/コピー数をスキャンするための探索可能な領域を設ける。マルチコピーキャッシュ96は256までのエントリを保持する。バッファマネージャ72はマルチコピーキュー90からフレームポインタを読出し、コピー数が「>1」または「−1」のいずれであるかによって、フレームポインタをマルチコピーキャッシュ96に入れるかそれを処理するかする。
さらに、バッファマネージャ72が出力キュー74の読出側からフレームポインタを読出すごとに、バッファマネージャ72は送信をスケジュールする。単一コピービットが「0」である(マルチコピーフレームを意味する)ならば、バッファマネージャ72は、このフレームの最後の送信であることを示すコピー数「1」のフレームポインタを求めてマルチコピーキャッシュ96をスキャンする。一致があれば、バッファマネージャ72はフレーム送信の間にエントリを除去し、バッファをフリーバッファプールに戻す。一致がなければ、バッファマネージャは送信の終了時にコピー数「−1」のフレームポインタをマルチコピーキュー90に入れる。
バッファマネージャ72は周期的に、フレームポインタ/コピー数を読出し、それをマルチコピーキャッシュ96に入れるか処理することによってマルチコピーキュー90を処理する。これはフレーム送信から独立して行なわれる。バッファマネージャがコピー数「>1」のフレームポインタを読出すか、コピー数「−1」のフレームポインタを読出すかによって2つの場合が引き続いて生じる。
1)バッファマネージャ72がマルチコピーキュー90からコピー数「>1」のフレームポインタを読出す。マルチコピーキャッシュ96に空きがあれば、それは新しいエントリを書込む。マルチコピーキャッシュ96がフルであれば、バッファマネージャ72はキャッシュ96内のスペースをクリアしなければならない。これが行われるのは、マルチコピーキャッシュ96からより古いフレームポインタ/コピー数の1つを読出し、外部メモリ36内のフレームポインタのバッファヘッダをマルチコピーキャッシュ96内のコピー数で更新し、このキャッシュエントリをデリートすることによってである。一旦スペースが生じると、新しいフレームポインタ/コピー数がマルチコピーキャッシュ96に書込まれる。
2)バッファマネージャ72がマルチコピーキャッシュ90からコピー数「−1」のフレームポインタを読出す。バッファマネージャ72はコピー数「≧1」の一致するフレームポインタを求めてマルチコピーキャッシュ96を探索する。バッファマネージャ72がマルチコピーキャッシュ96内でフレームポインタの一致を見つけられるかどうかによって2つの場合が続く。
a)バッファマネージャ72がフレームポインタの一致を見つける。マルチコピーキャッシュ96のエントリのコピー数が「1」であれば、バッファマネージャ72はマルチコピーキャッシュエントリをデリートし、フレームポインタをリクレームキュー98に入れる。キャッシュエントリのコピー数が「>1」であれば、バッファマネージャ72はコピー数を「1」だけデクリメントする。
b)バッファマネージャ72がマルチコピーキャッシュ96内でフレームポインタの一致を見つけられない。これは、一致するフレームポインタが外部メモリ36内のフレームのリンクトリストチェーンのバッファヘッダに既に移動されていることを意味する。バッファマネージャ72はバッファヘッダに行って、コピー数を読出さなければならない。(メモリ内の)この値が「1」であれば、フレームはもはや必要ではなく、バッファマネージャ72はフレームポインタをリクレームキュー98に入れる。(メモリ内の)この値が「>1」であれば、バッファマネージャ72は(外部メモリ36内にあった)フレームポインタ/コピー数のコピーをマルチコピーキャッシュ96に入れ、コピー数を「1」だけデクリメントする。マルチコピーキャッシュ96がフルであれば、バッファマネージャはより古いフレームポインタ/コピー数の1つを外部メモリ36に移動させることによってスペースをクリアする。
リクレームキュー98はもはや必要とされないリンクトリストチェーンを指すフレームポインタを保持する。バッファマネージャ72は、マルチコピーキャッシュを処理してフレームポインタのコピー数が「1」である(すなわち、フレームの最後の送信がうまく終った)ことを見出すと、フレームポインタのリクレームキューに書込む。さらに、ポートベクタFIFO70は、1)フレームポインタのポートベクタがヌルであるか、2)転送ベクタの全出力キューがフルであったのでフレームポインタがキューに入れられることができなかったという条件下で、フレームポインタをリクレームキュー98に書込む。最後に、ホストは、拡張バス出力キュー77または管理ポート出力キュー75に対してキューに入れられた単一コピーフレームの使用を終えると、(フレームポインタレジスタを用いて)フレームポインタをリクレームキュー98に書込む。
バッファマネージャ72はリクレームキューのエントリを処理するとき、フレームポインタのリンクトリストチェーンをたどり、各バッファをフリーバッファプール104に戻す。リクレームキュー構造の内部構造は図示されないが、本発明の例示的実施例においてはフレームポインタ(14ビット)のみを含む。リクレームキューの書込側100は64エントリを保持し、リクレームキューの書込側102は16エントリを保持する。
出力キュー74と同様に、リクレームキュー98は入力経路および出力経路を備えて構成される。入力経路または書込側100によってバッファマネージャ72はフレームポインタをリクレームキュー98に入れることができる。出力経路または読出側102によってバッファマネージャ72はフレームポインタを読出し、関連の全バッファをフリーバッファプール104に戻すことができる。フレームポインタのためのさらなるストレージは外部メモリ36内に設けられるリクレームキューオーバーフロー領域122内に設けられる。
フレームポインタが空のリクレームキュー98に書込まれると、これらは読出側102がフルになるまで書込側100から読出側102へと移動する。リクレームキュー98の書込側100に書込まれるさらなるフレームポインタは外部メモリ36内のリクレームキューオーバーフロー領域122に入れられる。一旦リクレームキュー98の読出側102およびオーバーフロー領域122がフルになると、リクレームキュー98に入れられるさらなるフレームポインタが書込側100を満たし始める。
図11はフリーバッファプール104の内部構造の例示的実施例を示す。フリーバッファプール104は、外部メモリ36内の全フリーバッファ140を指すアドレスポインタを含んだFIFOである。フレームが受信されると、バッファマネージャ72は入来するデータをストアするためにフリーバッファプール104から使用可能なアドレスポインタを捕捉する。バッファマネージャ72はまたフリーバッファプール104からのアドレスポインタを(要求される場合)ホストプロセッサ28に割当てる。ホストは、直接入力/出力スペースにおけるレジスタ60の中のフリーバッファプールレジスタを読出すか書込むことによってアドレスポインタを要求するかそれらをフリーバッファプール104に戻すことができる。フリーバッファプール104の書込側106および読出側108は本発明の例示的実施例においては各々64エントリを保持する。
フリーバッファプール104は(出力キュー74と同様に)入力経路および出力経路を備えて構成される。入力経路または書込側106により、バッファマネージャ72またはホスト28はアドレスポインタをフリーバッファプール104へと入れることができる。フリーバッファプール104の出力経路または読出側108により、バッファマネージャ72はアドレスポインタをホスト28に与え、またはプール104からアドレスポインタを引出して受信フレームデータをストアすることができる。使用可能なアドレスポインタのさらなるストレージ、フリーバッファプールのオーバーフロー領域120は上述のように外部メモリ36内に設けられる。
スイッチ12が起動すると、フリーバッファプールは読出側108からアドレスポインタを発生する。フレームが入来するときにフリーバッファプール104内のフリーリストが読出される。書込側106にトラフィック要求を扱うのに十分なバッファポインタがなければ、オーバーフロー領域120がより多くのバッファポインタを得るためにアクセスされる。
本発明のある実施例は、スイッチ12が開始されるとバッファポインタを与える有利な配置および方法を提供する。スイッチ12が初めに電源投入されるとき、外部メモリ36内のオーバーフロー領域120がバッファポインタを含むことは必要とされない。代わりに、バッファポインタはオンザフライで発生される。スイッチ12は電源投入されるとバッファポインタを発生し、それをオーバーフロー領域120に入れることができるが、このようなポインタは16,000個または32,000個存在することがあり、これによってスイッチ12の電源投入手順が遅くなるであろう。本発明は、電源投入時に全バッファがフリーであり、これらのバッファのアイデンティティが既知であるという事実を利用する。したがって、バッファポインタは電源投入後に必要とされるときに図10に示されるようにカウンタ180を用いて発生される。
フリーリストカウント発生器180がマルチプレクサ182の入力に接続される。フリーバッファプール104のフリーリストが開始時に空であるので、フリーリストカウンタ180はバッファポインタを発生する。一旦フリーリストが最高カウントに達すると、それはこれ以上バッファポインタを発生しない。
フレームパケットがスイッチ12において受信されると、フレームパケットは固定長バッファへと分解する。典型的にフレームはさまざまなサイズである。バッファは256バイトのサイズであり、バッファのデータ部分は240バイトである。バッファ内容の送信後、バッファポインタがリクレームキュー98に入れられるか、または、バッファチェーンをたどることができるならばフリーバッファプール104のフリーリストに直接入れられる。スイッチ12の動作の間、フリーバッファプール104に戻されるどのアドレスポインタも書込側106から読出側108へと移動する。読出側108がフルとなれば、さらなるアドレスポインタはオーバーフロー領域120に渡される。一旦読出側108およびオーバーフロー領域120がフルとなると、フリーバッファプール104に入れられるさらなるアドレスポインタがプール104の書込側106を再び満たし始める。
図13は本発明の実施例に従うマルチコピーキャッシュ96の内部配列の概略図である。上で簡単に述べたように、マルチコピーキャッシュ96へのエントリの時間順が維持される。本発明では、このように時間順が維持されるのは先行技術におけるようなタイムスタンプによってではなく、メモリ内の物理的順序によってである。本発明のマルチコピーキャッシュ96はまた有効性ビットの使用を避け、代わりに後述するように有効性を符号化する。
図13を参照すると、マルチコピーキャッシュ96は4ウェイセットアソシアティブメモリとして構成される。マルチコピーキャッシュ96へのエントリは上述のようにフレームポインタとそのコピー数とを含む。フレームポインタの最下位6ビットが、エントリがストアされるセットアソシアティブキャッシュ96内の行を決定する。本発明の図示される実施例では、キャッシュ96には64行が存在するが、キャッシュサイズが大きくされれば他の行数も制限されない。
セットアソシアティブキャッシュ96は4列に分割され、その各々が並行して探索される。バッファマネージャ72がエントリをキャッシュ96へとストアするとき、エントリは常に、第1の列の、フレームポインタの最下位6ビットによって示される行の最上位(51:39)ビットに入る。この行は読出され、全エントリが13ビット分右にシフトされ、行は再び書込まれる。実際にキャッシュ96に書込まれるエントリはフレームポインタの上位8ビットを含み、それはアドレスタグとフレームポインタに関連した5ビットコピー数を形成する。エントリがキャッシュ96から読出されると、フレームポインタはキャッシュ96の行数を指すビットおよびアドレスタグで再形成される。
行がフルであり、その行への新たなエントリが書込まれれば、キャッシュ96内の最も古いエントリがキャッシュ96から除去される。バッファヘッダ142に関して上述したように、除去されるフレームポインタに関連したコピー数は除去されるフレームポインタが指す外部メモリ内のフレームのバッファヘッダ142に書込まれる。したがって、外部メモリ36にストアされるフレーム(すなわち、バッファ140)はコピー数をストアするためのマルチコピーキャッシュ96のためのオーバーフロー領域となる。
本発明の有利な特徴の1つはセットアソシアティブキャッシュ96に別個の有効ビットが存在しないことである。コピー数が00000であるとき、エントリがもはや有効でないことをバッファマネージャ72はわかっており、エントリをキャッシュ96から除去する。これによってキャッシュ構成が簡素化される。本発明のキャッシュ96の別の利点は非常に高速な探索が行なわれ得ることである。これは、バッファマネージャ72がマルチコピーキュー90を出たフレームポンタによって既に定められている単一の行を検査しさえすればよいためである。その行内の4つのエントリが並行して検査され、探索速度をさらに高める。4ウェイセットアソシアティブメモリとして説明しているが、これは例にすぎず、メモリは本発明の範疇から逸脱せずにnウェイセットアソシアティブ方式となり得る。
上の説明から、本発明がキャッシュにおけるエントリの行ごとの物理的位置決めによってキャッシュエントリの時間順(エージ)を維持すると理解されるべきである。すなわち、キャッシュ内のエントリの物理的位置がエントリの相対的エージを示す。エントリはメモリにおけるエントリの物理的再順序付けによってエージングされる。
本発明のある実施例はポートごとにスイッチ12によって切換えられるフレームのレイテンシをカスタマイズする。図14を参照すると、ポートベクタFIFO70が受信ポートのプログラムされたスイッチモードを検査して、いつフレームポインタおよび関連の情報を送信ポートの適切な出力キュー74へと入れるかを決定する。第1のモード(低レイテンシモード)では、ポートベクタFIFO70はいつフレームポインタを出力キュー74に入れるかに対して制限を与えない。第2のモード(中間レイテンシモード)では、ポートベクタFIFO70はフレームの64バイトが受信されて初めてフレームポインタを出力キュー74に入れる。第3のモード(高レイテンシモード)では、ポートベクタFIFO70はフレームが完全に受信されて初めてフレームポインタを出力キュー70に入れる。
いつポートベクタFIFO70がフレームポインタを出力キュー74へと移動するかのタイミングを変えるいくつかの特殊な場合があり、それらは、1)第1または第2のモードの10Mb/sポートから100Mb/sポートへのフレーム転送と、2)管理ポート30へのフレーム転送と、3)拡張バスポートへのフレーム転送とを含む。場合1)では、10Mb/sポートから100Mb/sポートへの速度不一致によって転送モードが強制的に第3の高レイテンシモードとされる。場合2)では、管理ポートへと移動する全フレームが第3のモードのフレームである。場合3)では、拡張バスポートへのどのフレーム転送も拡張バスポート26のスイッチモードを用いる。マルチコピーポートベクタが特殊な場合のポートの1つを含む場合、ポートベクタ全体に対するフレームポインタのキュー入れはポートベクタ内で表わされる最長レイテンシスイッチモードのそれになる。たとえば、フレームが第1または第2のモードのポートによって受信され、そのマルチコピー転送ポートベクタが管理ポート30を含めば、スイッチモードは第3のモードである。この場合、フレームが完全に受信されて初めてフレームポインタのコピーが全出力キュー74に入れられる。
スイッチモードをここでより詳細に説明する。入力(すなわち、受信)ポートに当てはまるスイッチモードが転送レイテンシ(一旦スイッチ12がフレームを受信し始めるとどの程度後にスイッチ12がフレームを転送するか)と出力ポートへのフラグメント/エラー伝搬を低減する能力とを決定する。第2の中間レイテンシモードは各ポートに対するデフォルトであるが、スイッチモードはレジスタ60ではポートごとにプログラム可能である。
これら3つのモデルのすべてにおいて、内部MACポートの受信FIFO52で受信されるフレームデータはできるだけ早く外部メモリ52内のバッファ140に転送される。ほぼ同時に、ルールチェッカ42または58が宛先アドレスおよびソースアドレス、受信ポート数、フレームポインタ、ならびにいくつかの付加的情報を受信し、適切なルックアップを行なう。一旦ルックアップが完了すると、ルールチェッカ42または58はフレームポインタおよび転送ポートベクタをポートベクタFIFO70に戻す。
ポートベクタFIFOはポートベクタ内で識別される出力ポートのための出力キュー74の書込側76にフレームポインタを入れる。受信ポートのスイッチモードは、ポートベクタFIFO70がポートベクタ(およびフレームポインタ)を受取るときから、それがフレームポインタを出力キュー74に入れるときまでの間のレイテンシを規定する。これは以下の3つのモードに対して説明される。一旦フレームポインタが出力キュー74の読出側78に移動すると、バッファマネージャ72はフレームポインタを読出し、送信をスケジュールする。バッファマネージャはフレームポインタによって特定されるアドレスからフレームデータを移動させ始める。一旦MACポートの送信FIFO54がその開始点に設定されると(そして、データ送信のために媒体が使用可能であると想定すると)、フレーム送信が始まる。
第1のモードは最低のレイテンシを与えるように設計される。フレームはライン−レート速度で受信され、転送される。この第1のモードにおいてはネットワークエラーに対する保護がなく、これは、フレームがフラグメント(すなわち、<64バイトの長さ)であるかCRCエラーを含むかが判断され得る前にフレームが送信のためにキューに入れられるためである。第1のモードにおいて、フレーム受信は出力ポートでのフレーム送信が始まるまでに完了していないかもしれない。受信フレームが短すぎる場合または無効なCRCで終る場合、受信MACは外部メモリ36内のバッファヘッダ142に印を付けてこれらの条件を示す。送信MACは、後に短すぎるものか無効なCRCで終るフレームの送信が始まればMACが無効なCRCを発生することを保証する。送信MACがフレーム送信を始めておらず、バッファヘッダ142が短すぎるものか無効なCRCで終るフレームを示している場合、バッファマネージャ72はフレームを出力ポートへと転送しない。
第2のモードはフレームを転送するための低レイテンシとあるネットワークエラーに対する保護とを与える。フレームは64バイト以上が受信された後に受信され、転送される。これによってスイッチ12がフレームのフラグメントをフィルタ処理する(すなわち、転送しない)ことが可能となるが、これは64バイトよりも大きいCRCエラーフレームを完全にはフィルタ処理しない。
第2のモードにおいては、受信MACで64バイトのしきい値を達成したフレームのフレームポインタは適切な出力キュー74に入れられる。最小の64バイトのしきい値を達成できないフレームはデリートされ、それらのフレームポインタは出力キュー74に入れられない。64バイト以上の受信フレームが無効なCRCで終れば、受信MACは外部メモリ36内のバッファヘッダ142に印を付けてこの条件を示す。後に無効なCRCで終る64バイト以上のフレームの送信が開始されるときには、送信MACは不良なCRCで送信を終了する。送信MACがフレーム送信を開始しておらず、バッファヘッダ142が無効なCRCで終るフレーム(64ビット以上)であることを示している場合、バッファマネージャはフレームポインタを(単一コピー転送のための)リクレームキュー98または(マルチコピー転送のための)マルチコピーキュー96へと出力ポート74への転送なしに戻す。
第3のモードは3つのモードの中で最高レベルのネットワークエラー保護を与えるがより高い転送レイテンシを有するストアアンドフォワードモードである。フレームは、スイッチ12がそれらを出力ポートに転送する前に完全に受信される。このモードでは、スイッチ12は転送の前に全てのフラグメントおよびCRCエラーフレームをふるい分ける。第3のモードにおいて、一旦有効フレームが受信側でうまく完了すると(すなわち、有効なCRCを持ち、64バイト以上であると)、フレームポインタが適切な出力キュー74に入れられる。受信エラー(無効CRC、短すぎるもの(>64バイト)等)で終るフレームはデリートされ、それらのフレームポインタは出力キュー74に入れられない。
ポートベクタFIFO70は、受信ポートの選択されたモードと受信されたデータ量とに依存してポートベクタを出力キュー74に入れる決定を行なう。上述の実施例では、3つのしきい値があるが他の実施例では異なる数のしきい値が存在する。例示的実施例では、これらのしきい値は1)n<64バイトであるようなnバイト(たとえば6バイト)の受信、2)64バイトの受信、および3)全フレームの受信である。
本発明はしきい値に基づいてフレームを出力キュー74へと転送する。ポートベクタFIFO70は、受信されるデータタイプの量とポートがプログラムされたモードとに基づいて送信シーケンスを再び順序付ける。例示的実施例は受信されたデータの量に基づいて転送の決定を行なうが、本発明の他の実施例では、受信されるデータタイプのような他の要因に基づいて転送の決定が行われる。
本発明の転送方式を実施するにあたって、バッファマネージャ72はフレームポインタを受信ポートと関連付ける、キャッシュメモリ(CAM)161内のテーブル160を維持する。ポートベクタFIFO70が新しいポートベクタおよびフレームポインタをルールチェッカ42または58から受信するたびに、それは関連付けを行なって受信ポートがフレーム受信を終えたかどうかを判断し、終えていなければどれほどのフレームが既に受信されているかを判断する。ポートベクタFIFO70が受信ポートのアイデンティティに関する情報をルールチェッカ42または58から受信することはない。ポートベクタが受取る唯一のポートの何らかの識別を与える情報はフレームポインタである。
ポートベクタFIFO70はフレームポインタでアドレステーブル160に問合せをする。フレームがなお受信されていればアドレステーブルは受信ポートを戻し、またはアドレステーブル160はフレームポインタを見つけることができないときはフレームが既に受信されたことを意味する。一旦フレームが完全に受信されると、フレームポインタがアドレステーブル160から移動される。これは、第3のしきい値(フレーム完了)が満たされたことを意味する。したがって、フレームポインタは直ちに出力キュー74に入れられ得る。
アドレステーブル160が受信ポートを戻せば、ポートベクタFIFO70がフレームポインタおよび関連の情報を保持領域162に入れ、その受信ポートからの2信号を監視し始める。これらの2信号は3つの事象のうちの1つを示す。第1の事象はポートがnバイトを受信するときに示される。その時点で、そのポートが第1のモードにあれば、ポートベクタFIFO70がフレームポインタを適切な出力キュー74に送ることによってその処理を開始する。受信ポートが第1のモードになければ、ポートベクタFIFO70は第2の事象の発生を示す信号が受信されるまで待機する。このポートが第2のモードにあれば、ポートベクタFIFO70はフレームポインタを保持領域162から解放し、適切な出力キュー74に入れる。最後に、受信ポートが第3のモードにあれば、ポートベクタFIFO70はフレームが完全であることを示すフラグの受信を待つ。各受信ポート(図14の参照番号164)がこのフラグを維持し、この情報をポートベクタFIFO70に提供する。フレームポインタに関連付けられたポートの決定はポートベクタFIFO70次第である。ポートベクタFIFO70は各ポートのモードを識別する情報を維持する。要約すると、フレームポインタが受信されると、ポートベクタFIFO70は最初にバッファマネージャ72のアドレステーブル160に問合せをして受信ポートを決定し、その受信ポートのためのモードを決定し、受信ポートからのフラグを監視し、モードおよびフラグに従ってフレームポインタを解放する。
本発明が詳細に説明され、図示されたが、これは図示および例示のためのものにすぎず、限定するものとは理解されるべきでなく、本発明の範疇が請求の範囲によってのみ限定されることが明らかに理解される。
Claims (12)
- 複数のポートを介するデータのマルチコピーフレームの送信を制御するための方法であって、
マルチコピーフレームが送信されるポートを指定するステップと、
前記指定されたポートのうちいずれが前記マルチコピーフレームのうちの1つを送信するために使用できないかを判断するステップと、
前記マルチコピーフレームのうちの1つを送信するために使用できる前記指定ポートに前記マルチコピーフレームを与え、前記マルチコピーフレームのうちの1つを送信するために使用できない前記指定ポートから送信されるマルチコピーフレームを廃棄するステップとを含み、
前記マルチコピーフレームが送信されるポートを指定するステップが、前記フレームにおける宛先アドレス情報に基づいてポートベクタを発生するステップを含み、前記ポートベクタは前記指定ポートを特定する、方法。 - 前記各ポートが、前記フレームがストアされたメモリ中の場所をポイントするフレームポインタをキューとして維持するように構成された関連の出力キューを有し、前記方法は、前記送信されるフレームに関する前記フレームポインタを、前記フレームが送信される前記ポートの関連の出力キューにロードするステップをさらに含む、請求項1に記載の方法。
- 前記メモリから前記フレームを、そのフレームに関する前記フレームポインタがそのポートに関する前記関連の出力キューから出るときに、各ポートによって取り出すステップをさらに含む、請求項2に記載の方法。
- 前記指定ポートのうちいずれが前記マルチコピーフレームのうちの1つを送信するために使用できないかを判断するステップが、前記出力キューのうち使用可能な容量をチェックするステップを含み、そのポートの前記関連の出力キューに使用可能な容量がない場合、前記マルチコピーフレームのうちの1つを送信するためにポートを使用できないと判断される、請求項3に記載の方法。
- 前記送信されるマルチコピーフレームを廃棄するステップが、使用可能な容量を有さない前記指定ポートの前記関連の出力キューにロードされる前記フレームポインタを廃棄するステップを含む、請求項4に記載の方法。
- フレームに関して廃棄されたフレームポインタの数を決定するステップをさらに含む、請求項5に記載の方法。
- データのマルチコピーフレームを送信するマルチポートネットワークスイッチであって、前記ネットワークスイッチは、
データのフレームが送信される複数のポートと、
いずれのポートからマルチコピーフレームが送信されるかを指定するポートベクタを発生するポートベクタ発生器と、
前記ポートベクタによって指定された各ポートの可用性を決定し、前記マルチコピーフレームを送信するために使用可能な前記指定ポートを介して前記マルチコピーフレームを送信し、かつ前記マルチコピーフレームを送信するために使用できない前記指定ポートから送信されるマルチコピーフレームを廃棄するように構成された送信構成とを含む、ネットワークスイッチ。 - 前記送信構成が複数の出力キューを含み、前記出力キューのうちのそれぞれのものは、前記ポートのうちの異なったものに関連する、請求項7に記載のネットワークスイッチ。
- 前記送信構成が、前記ポートベクタを受け、前記指定ポートに関連する前記出力キューの各々の、使用可能な容量を決定するように構成されたポートベクタFIFOを含む、請求項8に記載のネットワークスイッチ。
- 前記ポートベクタFIFOが、前記出力キューが使用可能な容量を有する場合、送信される前記各マルチコピーフレームに関する前記指定ポートに関連した前記出力キューにフレームポインタをロードするようにさらに構成され、前記フレームポインタは、前記フレームがストアされるメモリ場所をポイントし、前記出力キューは前記フレームポインタをキューとして維持し、前記各ポートは、前記フレームポインタによってポイントされた前記メモリ場所にアクセスし、かつ前記フレームポインタがそのポートに関連した前記出力キューを出るときに、そのメモリ場所にストアされた前記フレームを送信するように構成される、請求項9に記載のネットワークスイッチ。
- 前記ポートベクタFIFOが、前記出力キューが使用可能な容量を有さない場合に、指定されたポートに関連した各出力キューに関する前記フレームポインタを廃棄するようにさらに構成される、請求項10に記載のネットワークスイッチ。
- 前記ポートベクタFIFOが、特定的なフレームに関する出力キューにロードされるフレームポインタの数と、前記特定的なフレームに関して廃棄されたフレームポインタの数とを決定するようにさらに構成される、請求項11に記載のネットワークスイッチ。
Applications Claiming Priority (5)
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 |
US60/038,025 | 1997-12-18 | ||
US08/992,428 | 1997-12-18 | ||
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 (3)
Publication Number | Publication Date |
---|---|
JP2001511978A JP2001511978A (ja) | 2001-08-14 |
JP2001511978A5 JP2001511978A5 (ja) | 2005-09-08 |
JP4603102B2 true JP4603102B2 (ja) | 2010-12-22 |
Family
ID=26714735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53577598A Expired - Lifetime JP4603102B2 (ja) | 1997-02-14 | 1998-01-30 | ネットワークスイッチ内のブロックされた出力キューに関するパケットを選択的に廃棄するための方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5953335A (ja) |
EP (1) | EP0960503B1 (ja) |
JP (1) | JP4603102B2 (ja) |
DE (1) | DE69803364T2 (ja) |
TW (1) | TW453080B (ja) |
WO (1) | WO1998036529A1 (ja) |
Families Citing this family (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175902B1 (en) * | 1997-12-18 | 2001-01-16 | Advanced Micro Devices, Inc. | Method and apparatus for maintaining a time order by physical ordering in a memory |
US6061351A (en) * | 1997-02-14 | 2000-05-09 | Advanced Micro Devices, Inc. | Multicopy queue structure with searchable cache area |
US6185630B1 (en) * | 1997-02-14 | 2001-02-06 | Advanced Micro Devices, Inc. | Device initializing system with programmable array logic configured to cause non-volatile memory to output address and data information to the device in a prescribed sequence |
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 |
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 |
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 |
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 |
US6789125B1 (en) | 2000-05-10 | 2004-09-07 | Cisco Technology, Inc. | Distributed network traffic load balancing technique implemented without gateway router |
US6742044B1 (en) | 2000-05-10 | 2004-05-25 | 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 |
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 |
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 |
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 |
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 |
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 |
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 |
US6816465B1 (en) | 2001-01-29 | 2004-11-09 | Advanced Micro Devices, Inc. | Arrangement for testing pause frame response in a network switch |
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 |
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 |
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 |
US7062562B1 (en) | 2001-04-11 | 2006-06-13 | Cisco Technology, Inc. | Methods and apparatus for content server selection |
US7080138B1 (en) | 2001-04-11 | 2006-07-18 | 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 |
US7349430B1 (en) | 2001-06-27 | 2008-03-25 | Cisco Technology, Inc. | Addressing scheme implemented in access networks |
US7085287B1 (en) | 2001-06-27 | 2006-08-01 | Cisco Technology, Inc. | Map routing technique 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 |
DE602006010136D1 (de) * | 2005-04-25 | 2009-12-17 | 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 | 中兴通讯股份有限公司 | 提高同步数字体系虚级联延时补偿缓存效率的方法及装置 |
EP3353951A1 (en) | 2015-09-25 | 2018-08-01 | FSA Technologies, Inc. | Multi-trunk data flow regulation system and method |
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 |
DE69329709D1 (de) * | 1993-04-29 | 2001-01-04 | Ibm | 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/en not_active Expired - Lifetime
- 1998-01-30 WO PCT/US1998/001786 patent/WO1998036529A1/en active IP Right Grant
- 1998-01-30 JP JP53577598A patent/JP4603102B2/ja not_active Expired - Lifetime
- 1998-02-13 TW TW087101988A patent/TW453080B/zh active
Also Published As
Publication number | Publication date |
---|---|
JP2001511978A (ja) | 2001-08-14 |
EP0960503B1 (en) | 2002-01-02 |
TW453080B (en) | 2001-09-01 |
DE69803364T2 (de) | 2002-10-17 |
US5953335A (en) | 1999-09-14 |
WO1998036529A1 (en) | 1998-08-20 |
EP0960503A1 (en) | 1999-12-01 |
DE69803364D1 (de) | 2002-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4603102B2 (ja) | ネットワークスイッチ内のブロックされた出力キューに関するパケットを選択的に廃棄するための方法および装置 | |
JP4166285B2 (ja) | バッファを再要求するための方法および装置 | |
JP4078446B2 (ja) | 探索可能なキャッシュ領域を備えるマルチコピーキュー構造 | |
JP4078445B2 (ja) | データ識別子を複製することによって複数のコピーを送信するための方法および装置 | |
US6175902B1 (en) | Method and apparatus for maintaining a time order by physical ordering in a memory | |
US6233244B1 (en) | Method and apparatus for reclaiming buffers | |
US6487212B1 (en) | Queuing structure and method for prioritization of frames in a network switch | |
JP4541454B2 (ja) | 受信データの関数としてデータの送信の開始を制御するための方法および装置 | |
US6504846B1 (en) | Method and apparatus for reclaiming buffers using a single buffer bit | |
US6091707A (en) | Methods and apparatus for preventing under-flow conditions in a multiple-port switching device | |
US6618390B1 (en) | Method and apparatus for maintaining randomly accessible free buffer information for a network switch | |
JP4452781B2 (ja) | メモリ内の物理的順序によって時間順を維持するための方法および装置 | |
EP0960510B1 (en) | Split-queue architecture and method of queuing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050114 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070508 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071211 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100628 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100706 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100730 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101001 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131008 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |