JP4091665B2 - スイッチ・ネットワーク要素における共用メモリ管理 - Google Patents

スイッチ・ネットワーク要素における共用メモリ管理 Download PDF

Info

Publication number
JP4091665B2
JP4091665B2 JP50579599A JP50579599A JP4091665B2 JP 4091665 B2 JP4091665 B2 JP 4091665B2 JP 50579599 A JP50579599 A JP 50579599A JP 50579599 A JP50579599 A JP 50579599A JP 4091665 B2 JP4091665 B2 JP 4091665B2
Authority
JP
Japan
Prior art keywords
buffer
buffers
shared memory
packet
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP50579599A
Other languages
English (en)
Other versions
JP2002508126A (ja
Inventor
ミュラー,シモン
ヘンデル,エアリエル
タンギララ,ラヴィ
バーグ,カート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2002508126A publication Critical patent/JP2002508126A/ja
Application granted granted Critical
Publication of JP4091665B2 publication Critical patent/JP4091665B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3036Shared queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory

Landscapes

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

Description

関連出願への相互参照
本出願は、1997年6月30日出願の「Shared Memory Management in a Switched Network Element」(整理番号082225.P2354)という名称の米国特許同時係属出願第08/885,118号の一部継続出願である。
発明の分野
本発明は、一般に、コンピュータ・ネットワーク・デバイスにおけるパケット中継の分野に関するものである。より詳細には、本発明はスイッチ・ネットワーク要素における共用メモリ管理に関するものである。
発明の背景
ユーザが増え、たとえば、マルチメディア・アプリケーションを使ってインターネットやWorld Wide Webにアクセスする機会が増えたことで、既存のネットワークの帯域幅を拡大しなければならなくなっている。したがって、将来のネットワークは非常に高い帯域幅と多数のユーザをサポートできなければならない。さらに、このようなネットワークでは、データ、音声、映像など、通常異なる帯域幅を必要とする複数のトラフィック・タイプをサポートできなければならない。
統計調査により、ネットワーク・ドメイン、つまり相互接続されたローカル・エリア・ネットワーク(LAN)のグループは、それぞれのLANに接続された個々の端局の数とともに、将来急激に増大することがわかっている。したがって、こうした増加に対応するため、ネットワーク帯域幅を増やし、リソースの使用効率を高める必要がある。
従来のスイッチ・ネットワーク要素における非効率の共通の原因は、パケット・バッファリングのためのメモリ管理機構である。パケット・バッファリングは、通常、パケットの損失を防ぐためスイッチ・ネットワーク要素に必要なものである。輻輳の潜在的要因の1つに、入力ポートと出力ポートの間の速度の不整合がある。たとえば、高速な入力ポート(たとえば、1000Mb/s)から低速な出力ポート(たとえば、10Mb/s)へトラフィックを中継する場合、低速な出力ポートは、高速な入力ポートでのパケット受信速度でパケットをネットワークに送信することはできない。そのため、パケットをバッファリングしなければならず、さもないとパケットが取りこぼされることになる。特定のトラフィック・パターンもまた、輻輳の原因となりうる。スイッチ・ネットワーク要素を横断するトラフィック・パターンでは、たとえば、複数の入力ポートからデータを同じ出力ポートに中継する必要がある。その結果、出力ポートに一時的輻輳が発生することがある。さらに、複数の入力ポートに到着したマルチキャスト・トラフィックを多数の出力ポートに中継する必要がある場合もある。すると、トラフィックが増大し、複数の出力ポートで一時的輻輳が発生する可能性がある。最後に、共通リソースの競合も輻輳に寄与することがある。たとえば、パケット中継に必要な共通リソースにより、着信トラフィックが複数の入力ポートに滞留する場合がある。他の入力ポートが中継データベースなどの特定の共通リソースにアクセスしている最中にパケットを特定の入力ポートでバッファリングする必要がある。
通常、必要なパケット・バッファリングを実現するために2つの方法のうちの1つを用いる。第1の方法は、入力ポート・バッファリングであり、適切な出力ポートに中継できるようになるまで一時的にパケット・データを格納しておくためパケット(バッファ)メモリを入力ポート関連付けるというものである。第2の方法は、出力ポート・バッファリングであり、接続されているリンクに送信できるようになるまでパケットを一時的に格納しておくためパケット・メモリを出力ポートに関連付けるというものである。
高性能スイッチ・ネットワーク要素を実装するうえでのアーキテクチャ面の主要な問題点は、各ポートのパケット・バッファリングの正しい量を決定するということである。パケット・メモリの容量が不適切だと、複数のポートのうちの1つであっても、スイッチ全体に対し性能に重大な影響を及ぼすおそれがある。他方、バッファリングの容量があまり多すぎても、スイッチング構造のコストばかりが嵩み、メリットはまったくないということになる。ポートごとに必要なバッファリング容量を見積もるのは困難であるため、多くの実装が高価すぎたり、あまりよい性能を発揮しなかったり、あるいはその両方であったりする。
前記に基づき、効率改善の一候補として、ネットワーキング・デバイスのメモリ管理機構が挙げられる。さらに、リソース共用は本質的に効率がよいものだという点と、ネットワーク・トラフィックには爆発的に増大する性質があるという点を認識すると、動的なパケット・メモリ管理方式を使用して、パケット・バッファリングのためにすべての入出力ポート間の共通パケット・メモリの共用をしやすくすることが望ましい。
発明の概要
スイッチ・ネットワーク要素における共用メモリ管理の方法と装置について説明する。本発明の一様態によれば、パケット中継デバイス用の共用メモリ・マネージャは共用メモリ内の多数のバッファのそれぞれについてのバッファ使用度に関する情報を格納しているポインタ・メモリを備えている。ポインタ・メモリにはエンコーダが結合されている。エンコーダは、複数の空きバッファを含む一組のバッファを示す出力を生成するように設定されている。さらに共用メモリ・マネージャは、ポインタ・ジェネレータを備えている。ポインタ・ジェネレータは、エンコーダに結合され、その一組のバッファ内に空きバッファを配置するように設定されている。ポインタ・ジェネレータはさらに、エンコーダの出力とその一組のバッファ内の空きバッファの配置に基づいて空きバッファへのポインタを生成するように設定されている。
本発明の他の様態によれば、パケット中継デバイスには、パケットをネットワーク上に送信するための多数の出力ポートと、ネットワークからパケットを受信し、パケットをバッファリングし、パケットを複数の出力ポートに中継するための出力ポートに結合されている多数の入力ポートが備えられている。パケット中継デバイスはさらに、出力ポートと入力ポートに結合された共用メモリも備えている。共用メモリは、一時的にパケットをバッファリングするためいくつかのバッファにセグメント分割されている。しかし、与えられた任意の時点において、共用メモリに格納されるのは高々1つの与えられたパケットのコピーである。パケット中継デバイスはさらに、入力ポートと出力ポートに結合されている共用メモリ・マネージャも備えている。共用メモリ・マネージャは、入力ポートの代わりにバッファを動的に割り当てて、入力ポートと出力ポートが提供する情報に基づきそれぞれのバッファの所有カウントを追跡する。
本発明の他の様態により、パケット中継の方法が実現される。この方法には、共用メモリ内の複数のバッファを識別する複数のバッファ・ポインタを動的に割り当てる方法が含まれる。パケットを受信すると、パケットは複数のバッファ内に格納される。次に、中継決定に基づいて、バッファ・ポインタが伝送される。最後に、バッファからパケットを受信した後、パケットが送信される。
本発明の他の特徴は、添付の図面と後述の詳細な説明から明白である。
【図面の簡単な説明】
本発明について、限定的なものではなく、例示的なものとして、添付の図面の図で説明する。同じ参照番号は同じ要素を指している。
第1図は、本発明の一実施形態によるスイッチの図である。
第2図は、第1図のスイッチで使用できるスイッチング要素の例を示す簡単なブロック図である。
第3A図は、本発明の一実施形態による第2図の共用メモリの論理図である。
第3B図は、本発明の一実施形態による第2図の共用メモリ・マネージャのブロック図である。
第4図は、本発明の一実施形態による第3B図のバッファ追跡プロセスのブロック図である。
第5図は、本発明の一実施形態によるバッファ割り当て処理を示す流れ図である。
第6図は、本発明の一実施形態によるバッファ所有伝送処理を示す流れ図である。
第7図は、本発明の一実施形態によるバッファ戻り処理を示す流れ図である。
詳細な説明
スイッチ・ネットワーク要素における共用メモリ管理のための方法と装置について説明する。以下の説明では、説明のため多数の具体的詳細を提示し、本発明が完璧に理解されるようにしている。ただし、当業者にとっては、本発明がこうした具体的詳細のいくつかがないとしても実施可能であることは明白である。他の場合については、よく知られている構造とデバイスをブロック図形式で示す。
本発明は多数のステップから成り立っており、以下の段ではこれについて説明する。本発明のステップは後述のハードウェア部品によって実行するのが好ましいが、それとは別に、メモリ、CD−ROM、フロッピディスク、またはその他の記憶媒体などの機械読取り可能媒体に格納されている機械実行可能命令によって実現し、これらの命令を使ってプログラムされている汎用または専用プロセッサでこれらのステップを実行することもできる。さらに、本発明の実施形態について、高速イーサネット・スイッチに関して説明する。ただし、ここで説明する方法と装置は、他の種類のネットワーク・デバイスおよびプロトコルにも等しく適用可能である。
ネットワーク要素の例
本発明の教示に従って動作するネットワーク要素の一実施形態の概要が第1図に示されている。ネットワーク要素を使用して、さまざまな形態で多数のノードと端局を相互接続する。特に、多層分散ネットワーク要素(MLDNE)の応用例では、イーサネットとも呼ばれるIEEE802.3規格などの同種データ・リンク層上で定義済みプロトコルによりパケットを中継する。他のプロトコルも使用可能である。
MLDNEの分散アーキテクチャは、知られている、あるいは将来のさまざまな中継アルゴリズムに従ってメッセージ・トラフィックを中継するように設定することが可能である。好ましい実施形態では、MLDNEは、インターネット・プロトコル・スート、より詳細にはイーサネットLAN規格とメディア・アクセス制御(MAC)データ・リンク層上の伝送制御プロトコル(TCP)およびインターネット・プロトコル(IP)を使用してメッセージ・トラフィックを処理するように設定されている。TCPはここでは第4層プロトコルとも呼ばれ、IPは第3層プロトコルと呼ばれる。説明のために、本発明で層といった場合には、通常、国際標準化機構(ISO)によって策定された開放型システム相互接続(OSI)7層モデルのことを意味する。
MLDNEの実施形態において、ネットワーク要素は分散方式でパケット中継機能を実施するように設定されている、つまり機能の異なる部分はMLDNEの異なるサブシステムによって実行されるが、機能の最終結果はノードと端局の両方に対して透過的であるということである。以下の説明と、第1図の図からわかるように、MLDNEのアーキテクチャはスケーラブルであり、設計者は予測しながらサブシステムを追加して行くことで外部の接続数を増やすことができ、したがってMLDNEをスタンドアローンのルータとしてかなり自由に定義することが可能である。
第1図のブロック図形式で示されているように、MLDNE101は多数の内部リンク141を使用して相互接続されている多数のサブシステム110を含み、さらに大きなスイッチを構成する。一実施形態によれば、サブシステム110は2つのサブシステムの間に少なくとも1つの内部リンクを用意することにより完全にメッシュ化することができる。それぞれのサブシステム110は、中継データベースとも呼ばれる中継およびフィルタ処理メモリ140に結合されているスイッチング要素100を備える。中継およびフィルタ処理データベースには、中継メモリ113および連想メモリ114を含めてもよい。中継メモリ(またはデータベース)113は、受信パケットのヘッダとの一致を調べるために使用されるアドレス表を格納する。連想メモリ(またはデータベース)は、MLDNEを介してパケットを中継する場合に中継属性を識別するのに使用される中継メモリ内の各エントリと関連付けられたデータを格納する。入力機能と出力機能を持つ多数の外部ポート(図には示されていない)が外部接続117とインタフェースする。一実施形態において、それぞれのサブシステムは複数のギガビット・イーサネット・ポート(ここで使用しているギガネット・イーサネットという用語はキャリア検知多重アクセス/衝突検出(CSMA/CD)をメディア・アクセス方法として採用しているネットワークに適用されるものであり、一般に、各種媒体上で1000Mb/sの中継速度で動作し、イーサネット形式または電気電子技術者協会(IEEE)規格802.3形式のデータ・パケットを送信する)、高速イーサネットポート(ここで使用する高速イーサネットという用語は、CSMA/CDをメディア・アクセス方式として採用しているネットワークに適用されるものであり、一般に、各種媒体上で100Mb/sの中継速度で動作し、イーサネット形式またはIEEE規格802.3形式のデータ・パケットを送信する)、およびイーサネット・ポート(ここで使用するイーサネットという用語は、CSMA/CDをメディア・アクセス方式として採用しているネットワークに適用されるものであり、一般に、各種媒体上で10Mb/sの転送速度で動作し、イーサネット形式またはIEEE規格802.3形式のデータ・パケットを送信する)をサポートしている。内部リンク141を使用して、内部ポート(図には示されていない)を結合する。内部リンクを使用すると、MLDNEは複数のスイッチング要素同士を接続して、1つのマルチギガビット・スイッチを構成することができる。
MLDNE101はさらに、Peripheral Components Interconnect(PCI)などの通信バス151を介して個々のサブシステム110に結合されている中央処理システム(CPS)160を備える。PCIは、単に通信バスの例として言及したものであり、当業者であればバスの種類は実装ごとに異なることがあることを理解できるであろう。CPS160は、中央メモリ163に結合されている中央処理装置(CPU)161を備える。中央メモリ163には、さまざまなサブシステム110の個々の中継メモリ113に格納されているデータのコピーが収められる。CPS160は、各サブシステム110との直接制御および通信インタフェースを備えており、スイッチング要素100の間の通信および制御を中央で一括して行うことができる。
スイッチング要素の例
第2図は、第1図のスイッチング要素のアーキテクチャ例を示す簡単なブロック図である。図のスイッチング要素100は、中央処理装置(CPU)インタフェース215、スイッチ構造ブロック210、ネットワーク・インタフェース205、カスケード・インタフェース225、および共用メモリ・マネージャ220を備える。
パケットは、これら3つのインタフェース205、215、および225のうちの1つを介してネットワーク・スイッチング要素100を出入りする。簡単にいうと、ネットワーク・インタフェース205はイーサネットなどのネットワーク通信プロトコルによ従って動作し、ネットワーク(図には示されていない)からパケットを受信し、それぞれ複数の入力ポートおよび出力ポートを介してネットワーク上にパケットを送信する。スイッチング要素100の相互接続のためオプションのカスケード・インタフェース225に複数の内部リンク226を装備して、さらに大きなスイッチを構成することができる。たとえば、それぞれのスイッチング要素100を完全メッシュ・トポロジで他のスイッチング要素100と接続して、上記の多層スイッチを構成することができる。それとは別に、スイッチにカスケード・インタフェース225を備える、あるいは備えない単一のスイッチング要素100を装備することもできる。
CPU161は、CPUインタフェース215を介してネットワーク・スイッチング要素100にコマンドやパケットを送ることができる。この方法で、CPU161上で動作している複数のソフトウェア・プロセスが、新規エントリの追加や不要なエントリの削除など、外部の中継およびフィルタ処理データベース140のエントリを管理することができる。しかし、他の実施形態では、CPU161を中継およびフィルタ処理データベース140に直接アクセスできるようにすることもできる。いかなる場合も、パケット中継のために、CPUインタフェース215のCPUポートはスイッチング要素100への汎用ポートに似ており、単なる他の外部のネットワーク・インタフェース・ポートであるかのように取り扱うことができる。しかし、CPUポートへのアクセスはPeripheral Components Interconnect(PCI)バスなどのバス上で発生するので、CPUポートはメディア・アクセス制御(MAC)機能を必要としない。
ネットワーク・インタフェース205に戻り、入力パケット処理と出力パケット処理の主要な2つの作業について簡単に説明する。入力パケット処理はネットワーク・インタフェース205の複数の入力ポートで実行することができる。入力パケット処理には、(1)着信したイーサネットパケットを受信し確認する、(2)適切な場合にパケット・ヘッダを修正する、(3)着信パケットの格納のため共用メモリ・マネージャ220にバッファ・ポインタを要求する、(4)スイッチ構造ブロック210に中継決定を要求する、(5)外部の共用メモリ230に一時的に格納するため着信パケット・データを共用メモリ・マネージャ220に中継する、(6)中継決定を受信したら、中継決定によって指示されている出力ポート206にバッファ・ポインタを中継する、というステップが含まれる。出力パケット処理は、ネットワーク・インタフェース205の複数の出力ポート206によって実行できる。出力処理には、共用メモリ・マネージャ220にパケット・データを要求する、ネットワーク上にパケットを送信する、パケットの送信後バッファ割り当て解放を要求する、というステップを含めることができる。
ネットワーク・インタフェース205、CPUインタフェース215、およびカスケード・インタフェース225は、共用メモリ・マネージャ220とスイッチ構造ブロック210に結合されている。共用メモリ・マネージャ220は、着信パケットをバッファリングするため、外部の共用メモリ230との効率のよい中央インタフェースを用意している。スイッチ構造ブロック210は、CPU161の助けを借りて中継およびフィルタ処理データベース140をサーチし保守するためのサーチ・エンジンおよび学習ロジックを備えている。
スイッチ構造ブロック210は、インタフェース205、215、または225の代わりに中継およびフィルタ処理データベース140にアクセスするためのサーチ・エンジンを備える。パケット・ヘッダ突合わせ検査、学習、パケット中継、フィルタ処理、および経過時間処理は、スイッチ構造ブロック210で実行可能な機能の例である。それぞれの入力ポート206は、受信パケットに対する中継決定を受信するためスイッチ構造ブロック210と結合されている。中継決定は、送出ポート(たとえば、外部のネットワーク・ポートまたは内部のカスケード・ポート)を指示し、これに基づいて対応するパケットを送信しなければならない。MAC DA交換のための新しいMAC受信者側アドレス(DA)などのハードウェア経路制御機能をサポートするため追加情報も中継決定に含めることができる。さらに、スイッチング要素100を介してパケット・トラフィックの優先順位付けを簡単に行えるようにするため優先順位指示も中継決定に含めることができる。
本実施形態では、イーサネットパケットは共用メモリ・マネージャ220によって中央で一括してバッファリングされる。共用メモリ・マネージャ220は、すべての入力ポートおよび出力ポート206をインタフェースし、それぞれに代わって動的メモリ割り当ておよび解放を実行する。入力パケット処理中に、複数のバッファを外部共用メモリ230内で割り当て、共用メモリ・マネージャ220はたとえばネットワーク・インタフェース205から受信したコマンドに応答して着信パケットを格納する。その後、出力パケット処理中に、共用メモリマネージャ220は外部共用メモリ230からパケットを取り出して、使用されなくなったバッファを解放する。複数のポートが与えられたバッファを所有できるので、すべての出力ポート206が格納されているデータの送信を完了するまでバッファを解放しないようにするため、共用メモリ・マネージャ220はバッファの所有状況を追跡するのも好ましい。
パケット・スイッチングの概要
本発明の一実施形態によれば、本発明のスイッチング要素100は、3つのインタフェース215、205、および225の間でイーサネット、高速イーサネット、ギガビット・イーサネットのパケットの経路制御および中継をワイヤ・スピードで行うことができる。「ワイヤ・スピード」は、与えられた入力ポート206上で受信したパケットの中継決定がつぎのパケットがその入力ポート206に到着する前に完了していることを意味する用語である。
中継は、入力ポートから出力ポート206にポインタを受け渡すことで実行される。共用メモリ・マネージャ220は、パケット・データ自体をローカルで格納するのではなくパケット・データを格納するバッファにポインタをローカルで格納することにより入力ポートおよび出力ポート206によって利用されるあるレベルのインダイレクションを実現する。たとえば、入力および出力キューは、入力および出力パケット処理中にポインタを一時的に格納するためにそれぞれ入力および出力ポート206で保持することができる。着信パケットをバッファリングするためのメモリをスイッチング要素100のすべての入力ポートおよび出力ポート206によって共有されている共通メモリ・プール(たとえば共用メモリ230)から割り当てる。
簡単にいうと、パケット中継プロセスが始まると、まずスイッチング要素の入力ポート206のうちの1つでパケットを受信する。予め定められている個数のバッファ・ポインタを確保しておき受信パケット・データを即座に格納できるようにしておくことで、入力ポート206は常に次のパケットを受信する準備ができていることに注意することが重要である。スイッチング要素の100初期化時にこれらのバッファ・ポインタを予め割り当て、その後、ポインタ数が予め定められているしきい値を下回ったらこれらのバッファ・ポインタを共用メモリ・マネージャ220に要求することができる。この例に戻り、受信パケットの一部を入力ポート206で一時的にバッファリングし、その一方で、パケットの中継先である出力ポート206に関して決定を下すことができる。したがって、フィルタ処理対象のパケットは共用メモリ230に格納する必要はない。
特定のパケットに関する中継決定を受信した後、入力206はパケットに対応する複数のバッファの所有権を適切な出力ポート206に伝送する。所有権の伝送には、入力ポート206がパケットを送信しなければならない出力ポート206の個数を共用メモリ・マネージャ220に通知すること、および入力ポート206が適切なポインタを出力ポート206に中継することが含まれる。
バッファ・ポインタを受信すると、出力ポート206は接続されているリンクに送信できるようになるまでポインタを出力キューに格納しておく。出力ポート206が特定のバッファからのパケット・データの送信を完了すると、バッファ操作の終了したことを共用メモリ・マネージャ220に通知する。次に共用メモリ・マネージャ220はバッファ所有者の数を追跡するために使用される内部カウントを更新し、適切であればバッファを空きプールに戻す(たとえば、バッファが出力キュー内に残っていない場合)。
上記の概要から、バッファ・ポインタを使用すると、中継は入力ポート206から複数の出力ポート206への複数のバッファ・ポインタの中継で済むようになることが理解されるであろう。さらに、パケット・データを複製する必要がないためマルチキャスト・パケットのブルード(一斉送り)と処理を効率よく行える。実際、特定のパケットを中継する出力ポートの数に関係なく、共用メモリ230にはパケット・データのコピーが1つだけ存在することになる。したがって、本実施形態の一利点として、バッファ・メモリを相応に増やすことなく増加するポート数に対応することによりアーキテクチャを徐々に拡張できるという点が挙げられる。
共用メモリの編成
従来のスイッチング要素では一定容量のメモリを各ポートと関連付けていた。その結果与えられたポートを介してトラフィックの実際の容量に関係しないメモり割り当ておよびバッファリングが非効率的なものとなっている場合がある。さらに、バッファ・メモリは分散するので、バッファ管理のロジックはポートごとに複製される。それとは対照的に、共用メモリ・マネージャ220では、着信パケットのバッファリング用の共有パケット・メモリ・プールへの効率のよい中央インタフェースを用意している。さらに、本発明で実現しているメモリ管理機構は、与えられたポートを介してトラフィックの量に比例するポートごとにバッファリングの効率的な割り当てを行うように設計されている。一実施形態によれば、この比例バッファリングは、動的バッファ割り当て方式と組み合わせて共用メモリ230を採用することで実現されている。共用メモリ230は、受入インタフェース(たとえば、ネットワーク・インタフェース205、カスケード・インタフェース225、またはCPUインタフェース215内の入力ポート206)から複数の送出インタフェース(たとえば、ネットワーク・インタフェース205、カスケード・インタフェース225、またはCPUインタフェース215内の出力ポート206)へ流れるパケット・データを一時的に格納するために使用されるバッファのプールである。本質的に、共用メモリ230は着信帯域幅条件と送信帯域幅条件との間で折り合いを付けるための伸び縮みするバッファとして使用される。
この時点で、バッファ・サイズ、アドレス空間、および出力/入力ポインタ・キュー・サイズなどのいくつかの共用メモリ・パラメータの間のトレードオフの関係について説明すると都合がよいと思われる。たとえば、バッファ・サイズが大きければ、パケットの一部ではなくパケット全体を収められる可能性が高くなる。しかし、パケット・サイズがバッファ・サイズの整数倍になっていないと、無駄になるバッファ・メモリが多くなる可能性がある。一方、バッファ・サイズが小さいと、分解度が細かくなるためこのような状況ではメモリの節約になる。しかし、バッファを一意的に識別するために多くのアドレスが必要になる場合があり、それぞれのパケットに対し格納用のバッファを増やす必要があると思われる。さらに、1パケットあたりのバッファ数を増やすと、入力ポートと出力ポート206の両方でさらに多くのポインタをキューに入れなければならなくなるかもしれない。さらに、環境が予めわかっていない場合には、プログラム可能なリソースを用意し、バッファ・サイズ、共用メモリ・サイズ、キュー・サイズ、およびその他のパラメータを特定の実装に合わせて最適化できるようにするのが望ましい。たとえば、イーサネット実装では、512バイトのバッファ・サイズでは通常、1パケットあたり3つのバッファのうちの1つを使用することになる。
本発明の一実施形態により、共用メモリ・マネージャ220はパケット・メモリの共有プールと動的バッファ割り当て方式を利用するバッファリング・アーキテクチャを備えている。この実施形態では、共用メモリ・マネージャ220は共用メモリ230内の空きバッファの共有プールを管理する役割を持つ。これは、バッファ消費者(たとえば、入力ポート206)およびバッファ提供者(たとえば、出力ポート206)という2つのカテゴリのクライアントを処理する。バッファ消費者は、着信パケットの受信中の適切な時期に共用メモリ・マネージャ220に空きバッファを要求する。次に、パケット中継処理中に、バッファ所有権が2つのクライアント・タイプの一方から他方に移る。最後に、パケット送信中の適切な時期に、バッファ提供者によってバッファが共用メモリ・マネージャ220に戻される。
そこで第3A図に戻り、多数のバッファ内でパケット・データを格納している共用メモリ230の論理図を説明する。この例では、共用メモリ230はプログラム可能なサイズの多数のバッファ(ページ)に分割されている。バッファはすべて、同じサイズであってもよく、あるいはそれとは別に、個々のバッファ・サイズが異なっていてもよい。他の実施形態では、バッファはさらに多数のメモリ・ラインに分割することができる。それぞれのラインをパケット・データの格納に使用することができる。他の実施形態では、さらに制御情報をメモリ・ラインのそれぞれと関連付けることもできる。制御情報には、パケット・フィールドの終わりなどのパケット・データに効率よくアクセスするための情報を含めてもよい。制御情報とデータとを分離することで、共用メモリ230に対するアクセスの効率を高めることができる。
与えられたパケットのデータは、複数のバッファに格納することができる。この例では、パケット#1は3つのバッファ350−352に分散され、パケット#2のデータは3つのバッファ360−362に格納され、パケット#3は1つのバッファ370内にまるまる収められている。この例ではさらに、特定のパケットのバッファとパケット自体が共用メモリ230内で特定の順序で並んでいる必要はないことがわかる。この方法により、特定のバッファが空いたら、それを次のバッファ要求に応えるために即座に使用することができる。さらに、特定のバッファ内に格納されるパケット・データを1つのパケットに制限すると都合がよい場合もある。つまり、1つのバッファ内に複数のパケットを混在させないようにすることで、実装が簡単になることがある。この実施形態ではパケットが複数のバッファのリストとして表されることが理解されるであろう。したがって、入力ポート206から出力ポート206にパケット#1を中継した場合には、バッファ350−352へのポインタを入力ポートの入力キューから除去し、それらを出力ポート206の出力キューに伝送することが必要になる。
共用メモリ・マネージャの例
第3B図は、本発明の一実施形態による第2図の共用メモリ・マネージャのブロック図である。本実施形態によれば、共用メモリ・マネージャ220はバッファ追跡ユニット329と共用メモリ・インタフェース330を備えている。共用メモリ・インタフェース330は、共用メモリ230への効率のよい中央インタフェースを実現している。バッファ追跡ユニット329はさらに、バッファ・マネージャ325を備えている。バッファ・マネージャ325は、パケット・データ自体をキューに入れるのではなくパケット・データを含むバッファへのポインタをキューに入れることにより、入力ポートおよび出力ポート206によって利用されるあるレベルのインダイレクションを実現している。したがって、本発明で規定しているバッファリング機能は入力パケット・バッファリングや出力パケット・バッファリングなどの従来のバッファリング・カテゴリに入らない。むしろ、ここで説明したバッファリング・アーキテクチャは、たとえば、出力キューイング機能を持つ共用メモリ・バッファリングに最適である。ポインタはポートでキューに入れられるため、本実施形態による中継の動作は、入力ポート206から複数の出力ポート206の出力キューに複数のバッファ・ポインタを伝送するという形に簡素化されている。
さらに、この自由度の高い方法を用いると、共用メモリ230内の各バッファを異なる時点に複数の異なるポートで「所有」することができ、しかもパケット・データを複製しなくて済む。たとえば、マルチキャスト・パケットのバッファ・ポインタのコピーが複数の出力ポート・キュー内にあっても、パケット・データのコピーを1つだけ共用メモリ230内に置くだけでよい。
バッファ追跡ユニット329はさらに、ポインタ・ランダム・アクセス・メモリ(PRAM)320を備える。PRAM320は、共用メモリ230のバッファに対する使用度カウンタを格納するポインタ表であって、チップ内蔵でも外付けでもよい。本発明の譲受人はそれぞれのスイッチング要素100を単一の特定用途向け集積回路(ASIC)として実装すると都合がよいことを見いだしているため、オンチップで保持し望ましい高い集積度の回路実装を容易にするためポインタ表をコンパクトに保つのが好ましい。
いかなる場合も、PRAM320を参照すると、与えられた時間でのバッファ所有者の数はバッファ・マネージャ325によって認識されており、バッファ・マネージャ325は動的バッファ割り当てに関してリアルタイムで効率よく空きバッファを判別し、最後の出力ポート206による解放後にバッファの解放処理を効率よく行える。メモリが使用可能な場合に、バッファ追跡ユニット329によって次の空きバッファを常に確保し、要求入力ポート206へ即座に送信できるようにすることが重要である。以下の段ではバッファの割り当て、バッファ所有権の伝送、バッファの解放に関わる処理について詳述する。
バッファ追跡プロセスの例
第4図は、本発明の一実施形態による第3B図のバッファ追跡ユニット329のブロック図である。説明する実施形態において、バッファ追跡ユニット329はアービタ470、アレイ・コントローラ450、アドレス/データ・ジェネレータ460、PRAM320、優先順位エンコーダ410、およびポインタ・ジェネレータ440を備えている。
本実施形態によれば、PRAM320はさらに、カウント・アレイ430とタグ・アレイ420を備えている。カウント・アレイ430は、共用メモリ230内の対応するバッファを現在使用しているポートの個数を表しているカウントを格納するメモリである。一実施形態では、カウント・アレイ430内の与えられたカウント・フィールドの位置は共用メモリ230内の対応するバッファの開始アドレスを表している。この方法では、同じポインタを使用して、バッファ所有権カウントを決定し、パケット・データの格納、取り出しを行うことができる。
一実施形態では、カウント・アレイ430を行と列に分割する。それぞれの行は、複数のカウント・フィールドのうち複数の組を格納することができる。この例では、タグ・アレイ420はカウント・アレイ430と同じ数の行を含み、カウント・アレイ430の対応する行においてバッファが使用可能かどうかを示すフィールドを備えるメモリである。つまり、たとえば、カウント・アレイ430の対応する行内のカウント・フィールドが0である、つまり所有者がいなければ、タグ・フィールドは1、つまりバッファが使用可能であるということである。このインデックス付け機構を使用して空きバッファのリアルタイム表示を行うようにすると都合がよい。他の構成について考察する。たとえば、他の実施形態では、カウント・アレイ430およびタグ・アレイ420は同じメモリを共有することができる。
アービタ470は入力ポートと出力ポート206との間のアービトレーションを行い、与えられた時間にPRAM320にアクセスできるのはただ1つのポートに限られるようにする。アービタ470は、アレイ・コントローラ450に結合されており、選択された単一のポートがPRAM320にアクセスすることができる。アレイ・コントローラ450は、PRAM320の読み書き動作をスケジュールし、タグ・アレイ420およびカウント・アレイ430の両方にアクセスできるようにする。
アドレス/データ・ジェネレータ460は、カウント・フィールドとタグ・フィールドの修正が簡単に行えるように、PRAM320で採用している特定の一つまたは複数のメモリのための制御信号を発生する。入力ポートおよび出力ポート206のハンドシェーク信号も、後述のようにアドレス/データ・ジェネレータ460によって生成される。さらに、アドレス/データ・ジェネレータ460は、バッファ・ポインタからカウント・アレイ430内の行アドレスに変換する機能を持つことができる。
優先順位エンコーダ410は、タグ・アレイ420の各要素に対応する入力を備えている。一実施形態では、これはタグ・アレイ420の第1の0でないタグ・ビットの位置を示す出力を生成する。優先順位エンコーダ410の出力は、ポインタ・ジェネレータ440への入力となっている。一実施形態によれば、ポインタ・ジェネレータ440は優先順位エンコーダ410によって指示されている行からのエントリを比較し、使用可能なバッファの位置を表すエンコーディングを追加して、入力ポート206の1つに対するバッファ・ポインタを生成する。
バッファ割り当て処理
第5図は、本発明の一実施形態によるバッファ割り当て処理を説明する流れ図である。ステップ505では、次の空きバッファ・ポインタがポインタ・ジェネレータ440によって生成される。一実施形態では、ポインタ・ジェネレータ440はバッファ要求を即時処理できるように複数のポインタを使用可能な状態に保持しようとする。
ステップ510で、生成されたポインタに対応するカウント・フィールドが更新される。一実施形態では、これは、最大値などの予め設定されている値をカウント・フィールドに書き込むことにより行われる。たとえば、4ビット・カウンタに対する最大値は15つまり1111bである。
ステップ515で、ステップ510の更新後、カウント・フィールドの現在の行に空きバッファがない場合、ステップ520で、この行に対応するタグが更新され、そのように指示される。そうでない場合には、処理はステップ525を継続する。
ステップ525で、バッファ追記ユニット329は、複数の入力ポート206がバッファ・ポインタを要求するまで待つ。複数の要求を検出すると、処理はステップ530から継続する。
ステップ530で、バッファ追跡ユニット329による処理のため1つの入力ポート要求が選択される。一実施形態では、入力ポート要求はアービタ470が受信する。アービタ470はバッファ追跡ユニット329による処理に関する入力ポート要求の1つのを選択する。他の実施形態では、バッファ追跡ユニット329は高速なネットワーク・リンクに優先順位を設定することにより混合ポート速度をサポートできる。たとえば、各N回の高速なインタフェース(たとえば、ギガビット・イーサネット・ポート)の処理ごとに低速なインタフェース(たとえば高速イーサネットポートなど)を処理することにより高速なインタフェースに優先順位を付けるという優先順位付きラウンド・ロビン方式でアービタ470がバッファ・ポインタの間のアービトレーションを行うように設定することができる。
ステップ535で、3つのバッファ・ポインタが、ステップ530で選択された入力ポート206に戻される。バッファ割り当て処理は、ステップ505−535を繰り返すことで継続することができる。
バッファ所有権移転処理
第6図は、本発明の一実施形態によりバッファ所有権移転処理を説明する流れ図である。ステップ610で、入力ポート206によってスイッチ構造210から受信した中継決定に基づいてパケットが中継されるポートの個数を決定する。
パケットのデータが格納されているバッファごとに、入力ポート206はステップ620−640を実行する。ステップ620で、入力ポート206はバッファ・ポインタを中継決定指示されている出力ポート206に送る。ステップ630で、入力ポート206は、バッファが正常にバッファ・マネージャ325に伝送された出力ポートの個数を通知することにより入力ポート206から出力ポート206へのバッファの所有権移転をバッファ・マネージャ325に通知する。
ステップ640で、現在のバッファと関連するカウント・フィールドが更新され、バッファを送信する出力ポートの個数を反映する。本発明の発明者は、バッファ・アカウンティングを無競合にする必要のない方法で動作するようにここで説明した更新機構を設計したということが重要である。新規の更新機構を説明する前に、更新機構によって解決される競合状態について簡単に説明する。
容易にわかるように、入力ポート206が特定のバッファ・ポインタの伝送先の出力ポートの個数をバッファ・マネージャ325に通知する前に、入力ポート206は、たとえば出力キュー満杯通知を検査することにより、出力ポート206が追加バッファ・ポインタを受け入れるかどうかを判別する。入力ポート206が出力ポートの総数をバッファ・マネージャ325に通知する前に、複数の出力ポート206がバッファ・ポインタを受信し、そのバッファ・ポインタと関連するパケット・データを送信し、バッファ・カウントを更新することが可能である。
上述の競合状態を処理する更新機構について説明する。一実施形態によれば、バッファ・マネージャ325は、単にカウント・フィールドを入力ポート206で指示される数に設定するのではなく、カウント・フィールドに対して読込み/修正/書込みを実行するように設定することができる。一実施形態によれば、バッファ割り当てプロセスにおいて、カウント・フィールドはバッファ割り当て後カウント・フィールドの最大値(たとえば、Fh)などの予め定められている値に設定されることに注意されたい。したがって、バッファ所有権移転処理では、カウント・フィールドは更新され、適切なカウント・フィールドの現在の内容を読み込み、入力ポート206によって与えられた数値を現在の内容プラス予め設定された値に加えてバッファ・ポインタの割り当て時にバッファ追跡ユニット329によって書き込まれた初期値を補正し、結果をカウント・フィールドに書き戻すことによりバッファを送信する出力ポートの現在の個数を反映することができる。都合がよいのは、この方法で、カウント・フィールドが、以下の表1に示されているように複数の出力ポート206によってカウント・フィールドが予め減分されているかどうかに関係なくバッファ・ポインタの出力ポートの現在の個数を正確に反映するということである。表1は、第1の列内でのそれぞれのアクションの後のカウント・フィールドの値を示している。
Figure 0004091665
ステップ650で、パケットのすべてのバッファが処理されたかどうかを判別する。処理されていれば、このパケットの所有権移転は完了である。そうでない場合には、処理はステップ620から継続する。
バッファ戻し処理
第7図は、本発明の一実施形態によるバッファ戻り処理を説明する流れ図である。出力ポート206が特定のバッファの内容の送信を完了した後、出力ポート206はバッファ・ポインタを戻し、上述のバッファ割り当て処理で再利用できるようにする。
本実施形態では、ステップ710で、複数の出力ポート206がバッファを戻すよう要求する。ステップ720で、アービタ470は処理する要求を選択する。
ステップ730で、バッファ・カウントを更新して、1つ小さい出力ポート206がバッファを所有しているという事実を反映させる。たとえば、読込み/修正/書込み操作を実行してバッファ・カウントを減分することができる。
ステップ740で、バッファが現在空いている場合、処理はステップ750から継続する。このバッファへのポインタが出力キューのどれかで保留になっている出力ポート206がなければバッファは空いている。一実施形態では、バッファはカウント・フィールドが減分されて0になることに基づいて空いていると判断される。ただし、他の実施形態では、他の表示を使用することもできる。
ステップ750で、現在のバッファが属しているバッファの組に対応するタグが更新され、このバッファの組の中のバッファを使用できるかどうかを示す。一実施形態では、バッファの組ごとに単一のビットを格納するタグ・アレイを採用している。
共用メモリ管理のための方法と装置の例を説明してきたが、次に構成要素間のインタフェースについて説明する。
バッファ・マネージャ/入力ポート・インタフェース
一実施形態によれば、以下の信号を使用して、バッファ・マネージャ325と入力ポート206の間のハンドシェークを実現することができる。
(1)Br_Ptr_IP−入力ポート・バッファ・ポインタ・データ・バスのバス要求
この信号は、入力ポート206によってバッファ・マネージャ325に対しアサートされる。入力パケット受信中の適切な時期に、入力ポート206はこの信号をアサートして、バッファ・ポインタが必要であることをバッファ・マネージャ325に指示する。それへの応答としてバス要求肯定応答(以下のBr_Ptr_IP_Ackを参照)がバッファ・マネージャ325によってアサートされることが期待される。
(2)Br_Ptr_IP_Ack−バッファ・ポインタ肯定応答
この信号は、バッファ・マネージャ325によってバッファ・ポインタを受信する入力ポート206に対しアサートされる(以下のBr_Ptr_Data_BM_to_IP[X:0]を参照)。この信号は、バッファ・ポインタ要求に対し肯定応答を送るものである(上のBr_Ptr_IPを参照)。バッファ・マネージャ325は、入力ポートのさまざまな要求のアービトレーションを行い、バス要求肯定応答とバッファ・ポインタを同じサイクルで駆動する。
(3)Br_Ptr_Data_BM_to_IP[X:0]−バッファ・マネージャから入力ポート・バッファ・ポインタへのデータ・バス
このデータ・バスは、すべての入力ポート206によって共有されている。バス要求肯定応答(上のBr_Ptr_IP_Ackを参照)を受信した入力ポート206にバッファ・ポインタを着信パケットに使用することを指示する。
(4)Br_Count−カウント・データ・バスのバス要求
この信号は、入力ポート206によってバッファ・マネージャ325に対しアサートされる。入力ポート206は、スイッチ構造210から受信した中継決定に基づいてパケットを受信する出力ポートの個数を決定する。入力ポート206はこの信号をアサートして、バッファ・ポインタのポートの数が使用できる状態にあることをバッファ・マネージャ325に指示する。それへの応答としてバス要求肯定応答(下のBr_Count_Ackを参照)がバッファ・マネージャ325によってアサートされることが期待される。
(5)Br_Count_Ack−バッファ・カウント肯定応答
この信号は、バッファ・マネージャ325によって、特定のバッファ・ポインタのポートの個数(以下のnt[Y:0]を参照)を与える入力ポート206に対しアサートされる(以下のBr_Ptr_Data_IP_to_BM[X:0]を参照)。この信号は、カウント・データ・バス要求(上のBr_Countを参照)に対し肯定応答するものである。バス・マネージャ325は、入力ポートのさまざまな要求のアービトレーションを行い、アービトレーションによって選択された入力ポート206へのバス要求肯定応答を駆動する。
(6)Dropped_Ptrs−ポインタを受信できなかったポートの数
この信号は、入力ポート206によって、バッファ・マネージャ325に対してアサートされる。何らかの条件(たとえば、出力キューが満杯)により、入力ポート206がバッファ・ポインタを中継決定で指示されたすべての出力ポート206に送ることができない場合、入力ポート206はポートの数を伝送するときにこの情報をバッファ・マネージャ325に伝送する。バッファ・マネージャ325は、指示されているバッファ・ポインタを所有する出力ポートの個数を格納するときにこれを考慮する。
(7)Br_Ptr_Data_IP_to_BM[X:0]−入力ポートからバッファ・マネージャ・バッファ・ポインタへのデータ・バス
このデータ・バスは、すべての入力ポート206によって共有される。これは、ポートの数(下のCnt[Y:0]を参照)が伝送される際のバッファ・ポインタをバッファ・マネージャ325に指示する。
(8)Cnt[Y:0]−ポートのカウント
このデータは・バスは、すべての入力ポート206によって共有される。これは、バッファ・ポインタ(上のBr_Ptr_Data_IP_to_BM[X:0]を参照)の転送先のポートの数をバッファ・マネージャに指示する。
バッファ・マネージャ/出力ポート・インタフェース
一実施形態によれば、次の信号を使用してバッファ・マネージャ325と出力ポート206との間のハンドシェークを実施することができる。
(1)Br_Ptr_OP−出力ポート・バッファ・ポインタ・データ・バスのバス要求
この信号は、出力ポート206によってバッファ・マネージャ325に対してアサートされる。出力パケット処理中の適切な時期に、出力ポート206はこの信号をアサートして、バッファ・ポインタが戻されていることをバッファ・マネージャ325に指示する。それへの応答としてバス要求肯定応答(下のBr_Ptr_OP_Ackを参照)はバッファ・マネージャ325によってアサートされることが期待される。
(2)Br_Ptr_Data_OP_to_BM[X:0]−出力ポートからバッファ・マネージャへのバッファ・ポインタ・データ・バス
このデータ・バスは、すべての出力ポート206によって共有されている。バッファ・ポインタが戻されていることをバッファ・マネージャ325に指示する。対応するバッファに格納されているデータを送信した後、出力ポート206はバッファ・ポインタを戻す。
(3)Br_Ptr_OP_Ack−バッファ要求肯定応答
この信号は、バッファ・マネージャ325によって、そのバッファ・ポインタを戻す出力ポート206に対してアサートされる(上のBr_Ptr_Data_OP_to_BM[X:0]を参照)。この信号は、バス要求に対して肯定応答するものである(上のBr_Ptr_OPを参照)。バッファ・マネージャ325は出力ポート206のさまざまな要求のアービトレーションを行い、アービトレーション・ロジックによって選択された出力ポート206へのバス要求肯定応答を駆動する。
入力ポート/出力ポート・インタフェース
一実施形態によれば、以下の信号を使用して入力ポート206から出力ポート206にパケット所有権を移転することができる。
(1)Arb_OP_Ptr−アービトレーションが行われた出力ポート・バッファ・ポインタ・データ・バス
この多重化データ・バスは、出力バス・アービタによって駆動される。これは、バッファ・ポインタ所有権情報の伝送のためすべての出力ポート206によって共有される。
(2)OP_Que_Full−出力ポート・キュー満杯
この信号は、出力ポート206によって入力ポート206に対してアサートされる。この信号は、パケット・ポインタをブロードキャストするときにフィルタ処理決定を下すために入力ポート206によって使用される。つまり、指定された出力ポート206にパケットを中継し、出力ポートのキューが満杯であることを中継決定が示している場合、パケット・ポインタはその出力ポート206には伝送されず、バッファ・マネージャ325に取りこぼしたパケット・ポインタ(上のDropped_Ptrsを参照)を通知することができる。それとは別に、バッファ・マネージャ325に対しては単に、特定のパケット・ポインタを与えられた出力ポートの総数を通知できるだけである。
例として、出力キューを1つだけ仮定している。ただし、他の実施形態では、複数の出力キューをそれぞれの出力ポート206について採用することもできる。この場合、追加出力キューごとにキュー満杯表示を用意することができる。
こうして、パケット・メモリの共有プールに受信パケットの一時記憶領域を確保し、与えられたポートを介するトラフィックの量に比例するポートごとのバッファリングを効率よく割り当てるバッファリング・アーキテクチャについて説明した。
明細書では、特定の実施形態に関して本発明を説明した。しかし、本発明の広範な精神と範囲から逸脱することなくさまざまな修正および変更を加えられることは明白であろう。したがって明細書と図面は、制限を目的とするものではなく説明を目的とするものであるとみなされる。

Claims (12)

  1. パケット中継デバイスで使用する共用メモリ・マネージャであって、
    共用メモリ内にバッファ使用度に関する情報を格納するように構成されているポインタ・メモリと、
    ポインタ・メモリに結合されたエンコーダであって、複数の空きバッファを含むバッファの複数の組のうちの一組のバッファを示す出力を生成するように構成されているエンコーダと、
    エンコーダに結合されているポインタ・ジェネレータであって、その一組のバッファ内の空きバッファを特定し、エンコーダの出力とその一組のバッファ内の空きバッファの位置に基づいて空きバッファへのポインタを生成するポインタ・ジェネレータと
    を備え、
    前記バッファ使用度に関する情報に複数のバッファのそれぞれの使用度カウントが含まれる、
    共用メモリ・マネージャ。
  2. ポインタ・メモリがさらに使用度カウントを格納するように設定された複数のエントリーを含むカウント・アレイを備え、複数のエントリのそれぞれが複数のバッファのうちの1つに対応し、使用度カウントが対応するバッファへのポインタを保持するポートの数を表す、請求項に記載の共用メモリ・マネージャ。
  3. カウント・アレイ内の与えられたエントリの位置が共用メモリ内の対応するバッファのアドレスを表す、請求項に記載の共用メモリ・マネージャ。
  4. ポインタ・メモリがさらにカウント・アレイに結合されているタグ・アレイを備え、タグ・アレイはバッファの複数の組のうちの各組のバッファに対応する指示を含み、この指示が対応するバッファの組の複数のバッファが使用可能かどうかを示す請求項に記載の共用メモリ・マネージャ。
  5. 複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数のバッファを動的に割り当てるステップであって、複数の空きバッファ・ポインタのそれぞれが複数のバッファのうちの1つに対応し、割り当ては共用メモリ内の複数のバッファの位置によって制約されないステップと、
    第1の接続されているネットワーク・セグメントからパケットを受信するステップと、
    複数のバッファにパケットを格納するステップと、
    中継決定に基づいて入力ポートから複数の出力ポートに複数のバッファ・ポインタの所有権を移転するステップと、
    複数のバッファからパケットを取り出すステップと、
    パケットを第2の接続されているネットワーク・セグメントに送信するステップと
    を含むパケット中継方法であって、
    複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数のバッファを動的に割り当てるステップがさらに、複数の空きバッファ・ポインタのそれぞれに対応する使用度カウントを更新するステップを含む、
    パケット中継方法。
  6. 空きバッファ・ポインタに対応する使用度カウントを更新するステップが使用度カウントの処理における潜在的競合状態に対処できるように予め設定されている値に使用度カウントを設定するステップを含む請求項に記載の方法。
  7. 複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数のバッファを動的に割り当てるステップであって、複数の空きバッファ・ポインタのそれぞれが複数のバッファのうちの1つに対応し、割り当ては共用メモリ内の複数のバッファの位置によって制約されないステップと、
    第1の接続されているネットワーク・セグメントからパケットを受信するステップと、
    複数のバッファにパケットを格納するステップと、
    中継決定に基づいて入力ポートから複数の出力ポートに複数のバッファ・ポインタの所有権を移転するステップと、
    複数のバッファからパケットを取り出すステップと、
    パケットを第2の接続されているネットワーク・セグメントに送信するステップと
    を含むパケット中継方法であって、
    中継決定に基づき入力ポートから複数の出力ポートに複数のバッファ・ポインタの所有権を移転するステップがさらに、
    複数のバッファのバッファごとに、
    キューから外す操作を実行して、入力キューから対応するバッファ・ポインタを除去するステップと、
    キューに入れる操作を実行して、中継決定で指示されている複数の出力ポートの出力キューにバッファ・ポインタを挿入するステップと、
    バッファ・ポインタが正常にキューに入れられた、出力ポートの個数を共用メモリ・マネージャに通知するステップと、
    バッファ・ポインタに対応する使用度カウントを更新するステップと
    を含むパケット中継方法。
  8. バッファ・ポインタに対応する使用度カウントを更新するステップが使用度カウントの現在値を決定するステップと、
    入力ポートの個数を共用メモリ・マネージャに通知するステップを実行する前に解放されている可能性のあるバッファを考慮するように現在値を修正するステップと、
    バッファ・ポインタのコピーを現在保持している出力ポートの数を反映する修正値で使用度カウントを置き換えるステップを含み、
    競合状態の悪影響を、修正ステップで解放されている可能性のあるバッファを考慮することにより回避する請求項に記載の方法。
  9. 中継決定により複数の出力ポートからなるポートの組を識別し、この方法がさらに複数のバッファ・ポインタを伝送する先の複数の出力ポートの組のサブセットを決定するステップを含む請求項に記載の方法。
  10. さらに、複数の出力ポートでキュー状態指示を生成するステップを含み、
    複数のバッファ・ポインタの伝送先の複数の出力ポートの組のサブセットを決定するステップが複数の出力ポートによって生成されるキュー状態指示に基づく請求項に記載の方法。
  11. 命令シーケンスを表すデータを格納している機械読取り可能媒体であって、前記命令シーケンスがプロセッサによって実行されると、
    複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数のバッファを動的に割り当て、複数の空きバッファ・ポインタのそれぞれが複数のバッファの1つに対応し、割り当てが共用メモリ内の複数のバッファの位置によって制約されないステップと、
    第1の接続されているネットワーク・セグメントからパケットを受信するステップと、
    パケットを複数のバッファに格納するステップと、
    中継決定に基づいて複数のバッファ・ポインタの所有権を入力ポートから複数の出力ポートに伝送するステップと、
    複数のバッファからパケットを取り出すステップと、第2の接続されているネットワーク・セグメントにパケットを送信するステップと
    を前記プロセッサが実行する、機械読取り可能媒体であって、
    複数の空きバッファ・ポインタを決定することにより共用メモリ内に1つ以上のバッファを動的に割り当てるステップと、
    複数の空きバッファ・ポインタのそれぞれに対応する使用度カウントを更新するステップと
    を前記プロセッサがさらに実行する、機械読取り可能媒体。
  12. 命令シーケンスを表すデータを格納している機械読取り可能媒体であって、前記命令シーケンスがプロセッサによって実行されると、
    複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数のバッファを動的に割り当て、複数の空きバッファ・ポインタのそれぞれが複数のバッファの1つに対応し、割り当てが共用メモリ内の複数のバッファの位置によって制約されないステップと、
    第1の接続されているネットワーク・セグメントからパケットを受信するステップと、
    パケットを複数のバッファに格納するステップと、
    中継決定に基づいて複数のバッファ・ポインタの所有権を入力ポートから複数の出力ポートに伝送するステップと、
    複数のバッファからパケットを取り出すステップと、第2の接続されているネットワーク・セグメントにパケットを送信するステップと
    を前記プロセッサが実行する、機械読取り可能媒体であって、
    中継決定に基づき入力ポートから複数の出力ポートに複数のバッファ・ポインタの所有権を伝送するステップがさらに、
    複数のバッファのバッファごとに、
    キューから出る操作を実行して、入力キューから対応するバッファ・ポインタを除去するステップと、
    キューに入る操作を実行して、中継決定で指示されている複数の出力ポートの出力キューにバッファ・ポインタを挿入するステップと、
    バッファ・ポインタが正常にキューに入った、出力ポートの個数を共用メモリ・マネージャに通知するステップと、
    バッファ・ポインタに対応する使用度カウントを更新するステップと
    を含む、機械読取り可能媒体。
JP50579599A 1997-06-30 1998-06-25 スイッチ・ネットワーク要素における共用メモリ管理 Expired - Lifetime JP4091665B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US88511897A 1997-06-30 1997-06-30
US08/885,118 1997-06-30
US08/987,914 US6021132A (en) 1997-06-30 1997-12-09 Shared memory management in a switched network element
US08/987,914 1997-12-09
PCT/US1998/013365 WO1999000939A1 (en) 1997-06-30 1998-06-25 Shared memory management in a switched network element

Publications (2)

Publication Number Publication Date
JP2002508126A JP2002508126A (ja) 2002-03-12
JP4091665B2 true JP4091665B2 (ja) 2008-05-28

Family

ID=27128750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50579599A Expired - Lifetime JP4091665B2 (ja) 1997-06-30 1998-06-25 スイッチ・ネットワーク要素における共用メモリ管理

Country Status (4)

Country Link
US (1) US6021132A (ja)
EP (1) EP1005739B1 (ja)
JP (1) JP4091665B2 (ja)
WO (1) WO1999000939A1 (ja)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275491B1 (en) * 1997-06-03 2001-08-14 Texas Instruments Incorporated Programmable architecture fast packet switch
GB2331659A (en) * 1997-11-21 1999-05-26 Ericsson Telefon Ab L M Resource reservation
US6363075B1 (en) * 1998-01-23 2002-03-26 Industrial Technology Research Institute Shared buffer management mechanism and method using multiple linked lists in a high speed packet switching system
EP0964558A1 (en) 1998-06-08 1999-12-15 THOMSON multimedia Method for accessing internet applications from home network devices
US6430188B1 (en) 1998-07-08 2002-08-06 Broadcom Corporation Unified table for L2, L3, L4, switching and filtering
US6424659B2 (en) * 1998-07-17 2002-07-23 Network Equipment Technologies, Inc. Multi-layer switching apparatus and method
US6970419B1 (en) * 1998-08-07 2005-11-29 Nortel Networks Limited Method and apparatus for preserving frame ordering across aggregated links between source and destination nodes
US6230191B1 (en) * 1998-10-05 2001-05-08 Alcatel Internetworking (Pe), Inc. Method and apparatus for regulating the amount of buffer memory requested by a port in a multi-port switching device with shared buffer memory
US6526452B1 (en) 1998-11-17 2003-02-25 Cisco Technology, Inc. Methods and apparatus for providing interfaces for mixed topology data switching system
US6665673B1 (en) 1998-11-17 2003-12-16 Cisco Technology, Inc. Channel communication system
US6463065B1 (en) 1998-11-17 2002-10-08 Cisco Technology, Inc. Mixed topology data switching system
US6484207B1 (en) * 1998-11-17 2002-11-19 Cisco Technology, Inc. Switching system having interconnects dedicated to store and retrieve data including management of dedicated memory segments allocated when a general memory is depleted
US6975637B1 (en) * 1999-01-27 2005-12-13 Broadcom Corporation Apparatus for ethernet PHY/MAC communication
US7899052B1 (en) * 1999-01-27 2011-03-01 Broadcom Corporation Memory structure for resolving addresses in a packet-based network switch
US7120117B1 (en) 2000-08-29 2006-10-10 Broadcom Corporation Starvation free flow control in a shared memory switching device
US7366171B2 (en) 1999-03-17 2008-04-29 Broadcom Corporation Network switch
US6996099B1 (en) * 1999-03-17 2006-02-07 Broadcom Corporation Network switch having a programmable counter
US7643481B2 (en) * 1999-03-17 2010-01-05 Broadcom Corporation Network switch having a programmable counter
US6810037B1 (en) 1999-03-17 2004-10-26 Broadcom Corporation Apparatus and method for sorted table binary search acceleration
DE60031515T2 (de) * 1999-03-17 2007-08-23 Broadcom Corp., Irvine Netzwerkvermittlung
US6421756B1 (en) * 1999-05-06 2002-07-16 International Business Machines Corporation Buffer assignment for bridges
AU5586400A (en) * 1999-05-21 2000-12-12 Broadcom Corporation Stacked network switch configuration
US6813268B1 (en) * 1999-05-21 2004-11-02 Broadcom Corporation Stacked network switch configuration
US7031302B1 (en) 1999-05-21 2006-04-18 Broadcom Corporation High-speed stats gathering in a network switch
KR20020015691A (ko) * 1999-05-21 2002-02-28 추후보정 플릿 캐쉬 방식의 패브릭 라우터
US7315552B2 (en) 1999-06-30 2008-01-01 Broadcom Corporation Frame forwarding in a switch fabric
US6859454B1 (en) 1999-06-30 2005-02-22 Broadcom Corporation Network switch with high-speed serializing/deserializing hazard-free double data rate switching
US6567400B1 (en) * 1999-07-02 2003-05-20 Cisco Systems, Inc. Hardware assisted DSP data transfer
US6760337B1 (en) * 1999-08-17 2004-07-06 Conexant Systems, Inc. Integrated circuit that processes communication packets with scheduler circuitry having multiple priority levels
WO2001019040A1 (en) 1999-09-03 2001-03-15 Broadcom Corporation Apparatus and method for enabling voice over ip support for a network switch
US6578086B1 (en) * 1999-09-27 2003-06-10 Nortel Networks Limited Dynamically managing the topology of a data network
US6678813B1 (en) * 1999-10-28 2004-01-13 Hewlett-Packard Development Company, L.P. Dynamically adaptive buffer mechanism
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
US7143294B1 (en) 1999-10-29 2006-11-28 Broadcom Corporation Apparatus and method for secure field upgradability with unpredictable ciphertext
US7131001B1 (en) 1999-10-29 2006-10-31 Broadcom Corporation Apparatus and method for secure filed upgradability with hard wired public key
ATE252298T1 (de) 1999-11-16 2003-11-15 Broadcom Corp Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung
US7539134B1 (en) 1999-11-16 2009-05-26 Broadcom Corporation High speed flow control methodology
EP1232612B1 (en) 1999-11-18 2006-11-02 Broadcom Corporation Table lookup mechanism for address resolution in a packet network switch
US6839349B2 (en) 1999-12-07 2005-01-04 Broadcom Corporation Mirroring in a stacked network switch configuration
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
US7009973B2 (en) 2000-02-28 2006-03-07 Broadcom Corporation Switch using a segmented ring
US6678678B2 (en) 2000-03-09 2004-01-13 Braodcom Corporation Method and apparatus for high speed table search
US6467075B1 (en) * 2000-03-24 2002-10-15 Nec Corporation Resolution of dynamic memory allocation/deallocation and pointers
DE10015683B4 (de) * 2000-03-29 2006-07-13 Infineon Technologies Ag Datenübertragungsspeicher
US7236489B1 (en) 2000-04-27 2007-06-26 Mosaid Technologies, Inc. Port packet queuing
US7103053B2 (en) 2000-05-03 2006-09-05 Broadcom Corporation Gigabit switch on chip architecture
US6826561B2 (en) 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7009968B2 (en) 2000-06-09 2006-03-07 Broadcom Corporation Gigabit switch supporting improved layer 3 switching
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
EP1168726B1 (en) 2000-06-19 2007-02-14 Broadcom Corporation Switch with memory management unit for improved flow control
US7126947B2 (en) 2000-06-23 2006-10-24 Broadcom Corporation Switch having external address resolution interface
US7007071B1 (en) 2000-07-24 2006-02-28 Mosaid Technologies, Inc. Method and apparatus for reducing pool starvation in a shared memory switch
US6999455B2 (en) 2000-07-25 2006-02-14 Broadcom Corporation Hardware assist for address learning
US7227862B2 (en) 2000-09-20 2007-06-05 Broadcom Corporation Network switch having port blocking capability
US7120155B2 (en) 2000-10-03 2006-10-10 Broadcom Corporation Switch having virtual shared memory
US6851000B2 (en) 2000-10-03 2005-02-01 Broadcom Corporation Switch having flow control management
US7020166B2 (en) 2000-10-03 2006-03-28 Broadcom Corporation Switch transferring data using data encapsulation and decapsulation
US7420977B2 (en) 2000-10-03 2008-09-02 Broadcom Corporation Method and apparatus of inter-chip bus shared by message passing and memory access
US6988177B2 (en) 2000-10-03 2006-01-17 Broadcom Corporation Switch memory management using a linked list structure
US7274705B2 (en) 2000-10-03 2007-09-25 Broadcom Corporation Method and apparatus for reducing clock speed and power consumption
US7424012B2 (en) 2000-11-14 2008-09-09 Broadcom Corporation Linked network switch configuration
US7035286B2 (en) 2000-11-14 2006-04-25 Broadcom Corporation Linked network switch configuration
US6850542B2 (en) 2000-11-14 2005-02-01 Broadcom Corporation Linked network switch configuration
US7035255B2 (en) 2000-11-14 2006-04-25 Broadcom Corporation Linked network switch configuration
US6999454B1 (en) * 2001-02-09 2006-02-14 Nortel Networks Limited Information routing system and apparatus
US7324509B2 (en) 2001-03-02 2008-01-29 Broadcom Corporation Efficient optimization algorithm in memory utilization for network applications
US20020138655A1 (en) * 2001-03-21 2002-09-26 Jenison Lucas M. Reducing memory copies by a network controller
US6904057B2 (en) * 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US6901052B2 (en) 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US7042848B2 (en) * 2001-05-04 2006-05-09 Slt Logic Llc System and method for hierarchical policing of flows and subflows of a data stream
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US7151774B1 (en) * 2001-06-13 2006-12-19 Advanced Micro Devices, Inc. Method and apparatus for trunking links having different transmission rates
US7133893B2 (en) * 2001-08-03 2006-11-07 Hewlett-Packard Development Company, L.P. Opportunistic transmission of portably stored digital data
US6920485B2 (en) * 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
US20030069949A1 (en) * 2001-10-04 2003-04-10 Chan Michele W. Managing distributed network infrastructure services
US6999998B2 (en) * 2001-10-04 2006-02-14 Hewlett-Packard Development Company, L.P. Shared memory coupling of network infrastructure devices
US7355970B2 (en) 2001-10-05 2008-04-08 Broadcom Corporation Method and apparatus for enabling access on a network switch
GB2381407B (en) * 2001-10-24 2004-06-30 Zarlink Semiconductor Ltd Dynamic buffering in packet systems
US6877048B2 (en) * 2002-03-12 2005-04-05 International Business Machines Corporation Dynamic memory allocation between inbound and outbound buffers in a protocol handler
US7525940B2 (en) * 2002-04-26 2009-04-28 Nokia Siemens Networks Oy Relocation of content sources during IP-level handoffs
US7093038B2 (en) 2002-05-06 2006-08-15 Ivivity, Inc. Application program interface-access to hardware services for storage management applications
US7110415B1 (en) * 2002-05-17 2006-09-19 Marvell International Ltd. Apparatus and method for dynamically limiting output queue size in a quality of service network
US7733888B2 (en) * 2002-06-04 2010-06-08 Alcatel-Lucent Usa Inc. Pointer allocation by prime numbers
US7043559B2 (en) * 2002-06-27 2006-05-09 Seiko Epson Corporation System for distributing objects to multiple clients
US7269180B2 (en) * 2002-11-04 2007-09-11 World Wide Packets, Inc. System and method for prioritizing and queuing traffic
GB2396447A (en) * 2002-12-21 2004-06-23 Robert Clive Roust Data flow processing technique
US7650413B2 (en) * 2003-02-07 2010-01-19 Fujitsu Limited Managing shared memory resources in a high-speed switching environment
US7302681B2 (en) * 2003-02-27 2007-11-27 Dell Products L.P. Method and system for customized information handling system support updates
EP2077648A1 (en) * 2003-04-22 2009-07-08 Agere Systems, Inc. Method and apparatus for shared multi-bank memory
WO2004109995A1 (ja) * 2003-06-03 2004-12-16 Fujitsu Limited 流量制御方法及びその装置
US7529252B2 (en) 2003-06-27 2009-05-05 Broadcom Corporation Weighted queuing scheme for managing datagrams within a network device using single port double buffer (ping-pong) memory
US7974284B2 (en) 2003-06-27 2011-07-05 Broadcom Corporation Single and double tagging schemes for packet processing in a network device
WO2005008981A1 (en) * 2003-07-03 2005-01-27 Sinett Corporation Apparatus for layer 3 switching and network address port translation
US7296100B1 (en) 2003-10-06 2007-11-13 Redpine Signals, Inc. Packet buffer management apparatus and method
JP4311312B2 (ja) * 2004-09-10 2009-08-12 日本電気株式会社 時系列データ管理方法およびプログラム
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7415035B1 (en) 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US7779164B2 (en) * 2005-04-04 2010-08-17 Oracle America, Inc. Asymmetrical data processing partition
US7529245B1 (en) 2005-04-04 2009-05-05 Sun Microsystems, Inc. Reorder mechanism for use in a relaxed order input/output system
US7865624B1 (en) 2005-04-04 2011-01-04 Oracle America, Inc. Lookup mechanism based on link layer semantics
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
US7443878B2 (en) * 2005-04-04 2008-10-28 Sun Microsystems, Inc. System for scaling by parallelizing network workload
US7992144B1 (en) 2005-04-04 2011-08-02 Oracle America, Inc. Method and apparatus for separating and isolating control of processing entities in a network interface
US7353360B1 (en) 2005-04-05 2008-04-01 Sun Microsystems, Inc. Method for maximizing page locality
US7567567B2 (en) * 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US8762595B1 (en) 2005-04-05 2014-06-24 Oracle America, Inc. Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness
US7843926B1 (en) 2005-04-05 2010-11-30 Oracle America, Inc. System for providing virtualization of network interfaces at various layers
US7889734B1 (en) 2005-04-05 2011-02-15 Oracle America, Inc. Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system
US8510491B1 (en) 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
US7664127B1 (en) 2005-04-05 2010-02-16 Sun Microsystems, Inc. Method for resolving mutex contention in a network system
US8665892B2 (en) * 2006-05-30 2014-03-04 Broadcom Corporation Method and system for adaptive queue and buffer control based on monitoring in a packet network switch
EP1953959A1 (en) * 2007-02-01 2008-08-06 British Telecommunications Public Limited Company Data communication
US8612693B2 (en) * 2009-03-19 2013-12-17 Qualcomm Incorporated Optimized transfer of packets in a resource constrained operating environment
US8443051B2 (en) * 2009-08-28 2013-05-14 Oracle America, Inc. Direct memory access buffer management
KR20110072023A (ko) * 2009-12-22 2011-06-29 삼성전자주식회사 휴대 단말기의 프로세서 간 데이터 통신 방법 및 장치
US8627036B2 (en) * 2011-09-12 2014-01-07 Microsoft Corporation Memory management techniques
US8745291B2 (en) * 2011-10-04 2014-06-03 Qualcomm Incorporated Inter-processor communication apparatus and method
WO2013066301A1 (en) 2011-10-31 2013-05-10 Hewlett-Packard Development Company, L.P. Reducing tcp timeouts due to incast collapse at a network switch
US10812416B2 (en) 2017-12-27 2020-10-20 International Business Machines Corporation Reduced number of counters for reliable messaging
US11221976B2 (en) 2019-01-25 2022-01-11 Microchip Technology Incorporated Allocation of buffer interfaces for moving data, and related systems, methods and devices

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4539637A (en) * 1982-08-26 1985-09-03 At&T Bell Laboratories Method and apparatus for handling interprocessor calls in a multiprocessor system
GB8407102D0 (en) * 1984-03-19 1984-04-26 Int Computers Ltd Interconnection of communications networks
US4641302A (en) * 1985-06-24 1987-02-03 Racal Data Communications Inc. High speed packet switching arrangement
JPS62243057A (ja) * 1986-04-16 1987-10-23 Hitachi Ltd フアイル転送管理方式
US4737953A (en) * 1986-08-04 1988-04-12 General Electric Company Local area network bridge
GB8915137D0 (en) * 1989-06-30 1989-08-23 Inmos Ltd Message routing
US5163046A (en) * 1989-11-30 1992-11-10 At&T Bell Laboratories Dynamic window sizing in a data network
US5159685A (en) * 1989-12-06 1992-10-27 Racal Data Communications Inc. Expert system for communications network
US5309437A (en) * 1990-06-29 1994-05-03 Digital Equipment Corporation Bridge-like internet protocol router
US5353412A (en) * 1990-10-03 1994-10-04 Thinking Machines Corporation Partition control circuit for separately controlling message sending of nodes of tree-shaped routing network to divide the network into a number of partitions
US5490260A (en) * 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
US5420862A (en) * 1991-06-14 1995-05-30 Digital Equipment Corporation Router using remote address resolution to enable bridge like data forwarding
US5500860A (en) * 1991-06-14 1996-03-19 Digital Equipment Corporation Router using multiple hop redirect messages to enable bridge like data forwarding
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5313454A (en) * 1992-04-01 1994-05-17 Stratacom, Inc. Congestion control for cell networks
US5432907A (en) * 1992-05-12 1995-07-11 Network Resources Corporation Network hub with integrated bridge
JPH066362A (ja) * 1992-06-23 1994-01-14 Hitachi Ltd Lanにおけるホストシステムのメッセージ処理負荷分散方式
US5404538A (en) * 1992-10-28 1995-04-04 International Business Machines Corporation Method and apparatus for multilevel bus arbitration
JPH07118717B2 (ja) * 1993-01-05 1995-12-18 日本電気株式会社 マルチプロトコル対応のパケット網構成方法
US5365514A (en) * 1993-03-01 1994-11-15 International Business Machines Corporation Event driven interface for a system for monitoring and controlling a data communications network
US5402415A (en) * 1993-04-22 1995-03-28 Washington University Multicast virtual circuit switch using cell recycling
US5396602A (en) * 1993-05-28 1995-03-07 International Business Machines Corp. Arbitration logic for multiple bus computer system
GB9312135D0 (en) * 1993-06-11 1993-07-28 Inmos Ltd Generation of checking data
US5515376A (en) * 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
US5509123A (en) * 1994-03-22 1996-04-16 Cabletron Systems, Inc. Distributed autonomous object architectures for network layer routing
US5493564A (en) * 1994-03-25 1996-02-20 Sprint International Communications Corp. Method and apparatus for global routing of electronic messages
EP0676878A1 (en) * 1994-04-07 1995-10-11 International Business Machines Corporation Efficient point to point and multi point routing mechanism for programmable packet switching nodes in high speed data transmission networks
DE69433109D1 (de) * 1994-04-28 2003-10-09 Hewlett Packard Co Mehrfachsendeeinrichtung
EP0680178A1 (en) * 1994-04-28 1995-11-02 Hewlett-Packard Company Cell switch fabric chip
EP0681381A1 (en) * 1994-05-06 1995-11-08 International Business Machines Corporation Method and apparatus for modifying frame check sequences in intermediate high speed network nodes
US5615340A (en) * 1994-07-21 1997-03-25 Allied Telesyn Int'l Corp. Network interfacing apparatus and method using repeater and cascade interface with scrambling
US5837021A (en) * 1994-12-09 1998-11-17 L'air Liquide, Societe Anonyme Pour L'etude Et L'exploitation Des Procedes Georges Claude Installation for the treatment of at least one fluid, by passage through two adjacent masses of material
US5550816A (en) * 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5566170A (en) * 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
US5563878A (en) * 1995-01-05 1996-10-08 International Business Machines Corporation Transaction message routing in digital communication networks
US5633865A (en) * 1995-03-31 1997-05-27 Netvantage Apparatus for selectively transferring data packets between local area networks
US5561791A (en) * 1995-04-10 1996-10-01 Digital Equipment Corporation Method and apparatus for conditioning timed program independent of transport timing
US5608726A (en) * 1995-04-25 1997-03-04 Cabletron Systems, Inc. Network bridge with multicast forwarding table
JP3515263B2 (ja) * 1995-05-18 2004-04-05 株式会社東芝 ルータ装置、データ通信ネットワークシステム、ノード装置、データ転送方法及びネットワーク接続方法
JP2770782B2 (ja) * 1995-05-31 1998-07-02 日本電気株式会社 Lan間接続装置
US5815737A (en) * 1995-06-05 1998-09-29 Pmc-Sierra, Inc. Approach for identifying a subset of asynchronous transfer mode (ATM) VPI/VCI values in the complete VPI/VCI range
US5751971A (en) * 1995-07-12 1998-05-12 Cabletron Systems, Inc. Internet protocol (IP) work group routing
US5651002A (en) * 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
US5633810A (en) * 1995-12-14 1997-05-27 Sun Microsystems, Inc. Method and apparatus for distributing network bandwidth on a media server
US5689506A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Multicast routing in multistage networks
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US5812527A (en) * 1996-04-01 1998-09-22 Motorola Inc. Simplified calculation of cell transmission rates in a cell based netwook
US5748631A (en) * 1996-05-09 1998-05-05 Maker Communications, Inc. Asynchronous transfer mode cell processing system with multiple cell source multiplexing
US5872783A (en) * 1996-07-24 1999-02-16 Cisco Systems, Inc. Arrangement for rendering forwarding decisions for packets transferred among network switches
US5835491A (en) * 1996-11-21 1998-11-10 Xerox Corporation Method for supporting multicast capabilities in switching networks with a reservation ring
US5859849A (en) * 1997-05-06 1999-01-12 Motorola Inc. Modular switch element for shared memory switch fabric
US5856977A (en) * 1997-05-15 1999-01-05 Yang; Muh-Rong Distribution network switch for very large gigabit switching architecture

Also Published As

Publication number Publication date
EP1005739B1 (en) 2008-08-13
EP1005739A4 (en) 2006-03-22
US6021132A (en) 2000-02-01
JP2002508126A (ja) 2002-03-12
EP1005739A1 (en) 2000-06-07
WO1999000939A1 (en) 1999-01-07

Similar Documents

Publication Publication Date Title
JP4091665B2 (ja) スイッチ・ネットワーク要素における共用メモリ管理
US7248593B2 (en) Method and apparatus for minimizing spinlocks and retaining packet order in systems utilizing multiple transmit queues
US6246680B1 (en) Highly integrated multi-layer switch element architecture
US6389480B1 (en) Programmable arbitration system for determining priority of the ports of a network switch
US5884040A (en) Per-packet jamming in a multi-port bridge for a local area network
US5923654A (en) Network switch that includes a plurality of shared packet buffers
JP5640234B2 (ja) マネージド・ネットワークでのレイヤ2のパケット集約及び断片化
JP4002336B2 (ja) ネットワーク・スイッチのためのマルチポート・ポーリング・システム
US6222840B1 (en) Method and system for performing concurrent read and write cycles in network switch
US6912604B1 (en) Host channel adapter having partitioned link layer services for an infiniband server system
US6308218B1 (en) Address look-up mechanism in a multi-port bridge for a local area network
US6260073B1 (en) Network switch including a switch manager for periodically polling the network ports to determine their status and controlling the flow of data between ports
US6430626B1 (en) Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses
US6233246B1 (en) Network switch with statistics read accesses
US6201789B1 (en) Network switch with dynamic backpressure per port
US7461180B2 (en) Method and apparatus for synchronizing use of buffer descriptor entries for shared data packets in memory
US20030058876A1 (en) Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues
US20030115350A1 (en) System and method for efficient handling of network data
JPH10215266A (ja) 別のカットスルー・バッファを持つネットワーク・スイッチ
JPH06334652A (ja) 通信システムにおいてデータをマルチキャストする方法及び装置
US7124231B1 (en) Split transaction reordering circuit
JP4554139B2 (ja) 遠隔要求を処理する方法および装置
US7209489B1 (en) Arrangement in a channel adapter for servicing work notifications based on link layer virtual lane processing
US6816889B1 (en) Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node
US6442168B1 (en) High speed bus structure in a multi-port bridge for a local area network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070724

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071024

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080229

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120307

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130307

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130307

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140307

Year of fee payment: 6

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