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

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

Info

Publication number
JP2002508126A
JP2002508126A JP50579599A JP50579599A JP2002508126A JP 2002508126 A JP2002508126 A JP 2002508126A JP 50579599 A JP50579599 A JP 50579599A JP 50579599 A JP50579599 A JP 50579599A JP 2002508126 A JP2002508126 A JP 2002508126A
Authority
JP
Japan
Prior art keywords
buffer
buffers
shared memory
packet
ports
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.)
Granted
Application number
JP50579599A
Other languages
English (en)
Other versions
JP4091665B2 (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

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)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 スイッチ・ネットワーク要素(100)における共用メモリ管理(200)の方法と装置を実現する。本発明の一様態によれば、パケット中継デバイス(140)用の共用メモリ・マネージャ(220)は共用メモリ(230)内の多数のバッファのそれぞれについてのバッファ使用度(たとえば、使用度カウント)に関する情報を格納しているポインタ・メモリ(320)を備えている。ポインタ・メモリ(320)にはエンコーダ(410)が結合され、空きバッファを含む一組のバッファを示す出力を生成する。共用メモリ・マネージャ(220)は、さらに、ポインタ・ジェネレータ(440)を備えており、これはエンコーダ(410)に結合され、その一組のバッファ内に空きバッファを配置する。ポインタ・ジェネレータ(440)はさらに、エンコーダ(410)の出力とその一組のバッファ内の空きバッファの配置に基づいて空きバッファへのポインタを生成するように構成されている。本発明の他の様態によれば、パケット中継デバイス(100)には、パケットをネットワーク上に送信するための多数の出力ポート(117)と、ネットワークからパケットを受信し、パケットをバッファリングし、パケットを複数の出力ポート(117)に中継するための出力ポートに結合されている多数の入力ポート(117)が備えられている。パケット中継デバイス(100)はさらに、一時的にパケットをバッファリングするためいくつかのバッファ(140)にセグメント分割されている共用メモリ(230)を備えている。共用メモリ(230)に格納されるのは高々1つの与えられたパケットのコピーである。パケット中継デバイス(100)はさらに、入力ポート(117)の代わりにバッファを動的に割り当て、それぞれのバッファの所有カウントを追跡する共用メモリ・マネージャ(220)を備える。

Description

【発明の詳細な説明】 スイッチ・ネットワーク要素における共用メモリ管理関連出願への相互参照 本出願は、1997年6月30日出願の「Shared Memory Ma nagement in a Switched Network Eleme nt」(整理番号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層プロトコルとも呼ばれ、I Pは第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形式のデータ・パケットを送信する) 、高速イーサネットポート(ここで使用する高速イーサネットという用語は、C SMA/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の個々の中継メモリ11 3に格納されているデータのコピーが収められる。CPS160は、各サブシス テム110との直接制御および通信インタフェースを備えており、スイッチング 要素100の間の通信および制御を中央で一括して行うことができる。 スイッチング要素の例 第2図は、第1図のスイッチング要素のアーキテクチャ例を示す簡単なブロッ ク図である。図のスイッチング要素100は、中央処理装置(CPU)インタフ ェース215、スイッチ構造ブロック210、ネットワーク・インタフェース2 05、カスケード・インタフェース225、および共用メモリ・マネージャ22 0を備える。 パケットは、これら3つのインタフェース205、215、および225のう ちの1つを介してネットワーク・スイッチング要素100を出入りする。簡単に いうと、ネットワーク・インタフェース205はイーサネットなどのネットワー ク通信プロトコルによ従って動作し、ネットワーク(図には示されていない)か らパケットを受信し、それぞれ複数の入力ポートおよび出力ポートを介してネッ トワーク上にパケットを送信する。スイッチング要素100の相互接続のためオ プションのカスケード・インタフェース225に複数の内部リンク226を装備 して、さらに大きなスイッチを構成することができる。たとえば、それぞれのス イッチング要素100を完全メッシュ・トポロジで他のスイッチング要素100 と接続して、上記の多層スイッチを構成することができる。それとは別に、スイ ッチにカスケード・インタフェース225を備える、あるいは備えない単一のス イッチング要素100を装備することもできる。 CPU161は、CPUインタフェース215を介してネットワーク・スイッ チング要素100にコマンドやパケットを送ることができる。この方法で、CP U161上で動作している複数のソフトウェア・プロセスが、新規エントリの追 加や不要なエントリの削除など、外部の中継およびフィルタ処理データベース1 40のエントリを管理することができる。しかし、他の実施形態では、CPU1 61を中継およびフィルタ処理データベース140に直接アクセスできるように することもできる。いかなる場合も、パケット中継のために、CPUインタフェ ース215のCPUポートはスイッチング要素100への汎用ポートに似ており 、単なる他の外部のネットワーク・インタフェース・ポートであるかのように取 り扱うことができる。しかし、CPUポートへのアクセスはPeriphera l Components Interconnect(PCI)バスなどのバ ス上で発生するので、CPUポートはメディア・アクセス制御(MAC)機能を 必要としない。 ネットワーク・インタフェース205に戻り、入力パケット処理と出力パケッ ト処理の主要な2つの作業について簡単に説明する。入力パケット処理はネット ワーク・インタフェース205の複数の入力ポートで実行することができる。入 力パケット処理には、(1)着信したイーサネットパケットを受信し確認する、 (2)適切な場合にパケット・ヘッダを修正する、(3)着信パケットの格納の ため共用メモリ・マネージャ220にバッファ・ポインタを要求する、(4)ス イッチ構造ブロック210に中継決定を要求する、(5)外部の共用メモリ23 0に一時的に格納するため着信パケット・データを共用メモリ・マネージャ22 0に中継する、(6)中継決定を受信したら、中継決定によって指示されている 出力ポート206にバッファ・ポインタを中継する、というステップが含まれる 。出力パケット処理は、ネットワーク・インタフェース205の複数の出力ポー ト206によって実行できる。出力処理には、共用メモリ・マネージャ220に パケット・データを要求する、ネットワーク上にパケットを送信する、パケット の送信後バッファ割り当て解放を要求する、というステップを含めることができ る。 ネットワーク・インタフェース205、CPUインタフェース215、および カスケード・インタフェース225は、共用メモリ・マネージャ220とスイッ チ構造ブロック210に結合されている。共用メモリ・マネージャ220は、着 信パケットをバッファリングするため、外部の共用メモリ230との効率のよい 中央インタフェースを用意している。スイッチ構造ブロック210は、CPU1 61の助けを借りて中継およびフィルタ処理データベース140をサーチし保守 するためのサーチ・エンジンおよび学習ロジックを備えている。 スイッチ構造ブロック210は、インタフェース205、215、または22 5の代わりに中継およびフィルタ処理データベース140にアクセスするための サーチ・エンジンを備える。パケット・ヘッダ突合わせ検査、学習、パケット中 継、フィルタ処理、および経過時間処理は、スイッチ構造ブロック210で実行 可能な機能の例である。それぞれの入力ポート206は、受信パケットに対する 中継決定を受信するためスイッチ構造ブロック210と結合されている。中継決 定は、送出ポート(たとえば、外部のネットワーク・ポートまたは内部のカスケ ード・ポート)を指示し、これに基づいて対応するパケットを送信しなければな らない。MAC DA交換のための新しいMAC受信者側アドレス(DA)など のハードウェア経路制御機能をサポートするため追加情報も中継決定に含めるこ とができる。さらに、スイッチング要素100を介してパケット・トラフィック の優先順位付けを簡単に行えるようにするため優先順位指示も中継決定に含める ことができる。 本実施形態では、イーサネットパケットは共用メモリ・マネージャ220によ って中央で一括してバッファリングされる。共用メモリ・マネージャ220は、 すべての入力ポートおよび出力ポート206をインタフェースし、それぞれに代 わって動的メモリ割り当ておよび解放を実行する。入力パケット処理中に、複数 のバッファを外部共用メモリ230内で割り当て、共用メモリ・マネージャ22 0はたとえばネットワーク・インタフェース205から受信したコマンドに応答 して着信パケットを格納する。その後、出力パケット処理中に、共用メモリマネ ージャ220は外部共用メモリ230からパケットを取り出して、使用されなく なったバッファを解放する。複数のポートが与えられたバッファを所有できるの で、すべての出力ポート206が格納されているデータの送信を完了するまでバ ッファを解放しないようにするため、共用メモリ・マネージャ220はバッファ の所有状況を追跡するのも好ましい。 パケット・スイッチングの概要 本発明の一実施形態によれば、本発明のスイッチング要素100は、3つのイ ンタフェース215、205、および225の間でイーサネット、高速イーサネ ット、ギガビット・イーサネットのパケットの経路制御および中継をワイヤ・ス ピードで行うことができる。「ワイヤ・スピード」は、与えられた入力ポート2 06上で受信したパケットの中継決定がつぎのパケットがその入力ポート206 に到着する前に完了していることを意味する用語である。 中継は、入力ポートから出力ポート206にポインタを受け渡すことで実行さ れる。共用メモリ・マネージャ220は、パケット・データ自体をローカルで格 納するのではなくパケット・データを格納するバッファにポインタをローカルで 格納することにより入力ポートおよび出力ポート206によって利用されるある レベルのインダイレクションを実現する。たとえば、入力および出力キューは、 入力および出力パケット処理中にポインタを一時的に格納するためにそれぞれ入 力および出力ポート206で保持することができる。着信パケットをバッファリ ングするためのメモリをスイッチング要素100のすべての入力ポートおよび出 力ポート206によって共有されている共通メモリ・プール(たとえば共用メモ リ230)から割り当てる。 簡単にいうと、パケット中継プロセスが始まると、まずスイッチング要素の入 力ポート206のうちの1つでパケットを受信する。予め定められている個数の バッファ・ポインタを確保しておき受信パケット・データを即座に格納できるよ うにしておくことで、入力ポート206は常に次のパケットを受信する準備がで きていることに注意することが重要である。スイッチング要素の100初期化時 にこれらのバッファ・ポインタを予め割り当て、その後、ポインタ数が予め定め られているしきい値を下回ったらこれらのバッファ・ポインタを共用メモリ・マ ネージャ220に要求することができる。この例に戻り、受信パケットの一部を 入力ポート206で一時的にバッファリングし、その一方で、パケットの中継先 である出力ポート206に関して決定を下すことができる。したがって、フィル タ処理対象のパケットは共用メモリ230に格納する必要はない。 特定のパケットに関する中継決定を受信した後、入力206はパケットに対応 する複数のバッファの所有権を適切な出力ポート206に伝送する。所有権の伝 送には、入力ポート206がパケットを送信しなければならない出力ポート20 6の個数を共用メモリ・マネージャ220に通知すること、および入力ポート2 06が適切なポインタを出力ポート206に中継することが含まれる。 バッファ・ポインタを受信すると、出力ポート206は接続されているリンク に送信できるようになるまでポインタを出力キューに格納しておく。出力ポート 206が特定のバッファからのパケット・データの送信を完了すると、バッファ 操作の終了したことを共用メモリ・マネージャ220に通知する。次に共用メモ リ・マネージャ220はバッファ所有者の数を追跡するために使用される内部カ ウントを更新し、適切であればバッファを空きプールに戻す(たとえば、バッフ ァが出力キュー内に残っていない場合)。 上記の概要から、バッファ・ポインタを使用すると、中継は入力ポート206 から複数の出力ポート206への複数のバッファ・ポインタの中継で済むように なることが理解されるであろう。さらに、パケット・データを複製する必要がな いためマルチキャスト・パケットのブルード(一斉送り)と処理を効率よく行え る。実際、特定のパケットを中継する出力ポートの数に関係なく、共用メモリ2 30にはパケット・データのコピーが1つだけ存在することになる。したがって 、本実施形態の一利点として、バッファ・メモリを相応に増やすことなく増加す るポート数に対応することによりアーキテクチャを徐々に拡張できるという点が 挙げられる。 共用メモリの編成 従来のスイッチング要素では一定容量のメモリを各ポートと関連付けていた。 その結果与えられたポートを介してトラフィックの実際の容量に関係しないメモ り割り当ておよびバッファリングが非効率的なものとなっている場合がある。さ らに、バッファ・メモリは分散するので、バッファ管理のロジックはポートごと に複製される。それとは対照的に、共用メモリ・マネージャ220では、着信パ ケットのバッファリング用の共有パケット・メモリ・プールへの効率のよい中央 インタフェースを用意している。さらに、本発明で実現しているメモリ管理機構 は、与えられたポートを介してトラフィックの量に比例するポートごとにバッフ ァリングの効率的な割り当てを行うように設計されている。一実施形態によれば 、この比例バッファリングは、動的バッファ割り当て方式と組み合わせて共用メ モリ230を採用することで実現されている。共用メモリ230は、受入インタ フェース(たとえば、ネットワーク・インタフェース205、カスケード・イン タフェース225、またはCPUインタフェース215内の入力ポート206) から複数の送出インタフェース(たとえば、ネットワーク・インタフェース20 5、カスケード・インタフェース225、またはCPUインタフェース215内 の出力ポート206)へ流れるパケット・データを一時的に格納するために使用 されるバッファのプールである。本質的に、共用メモリ230は着信帯域幅条件 と送信帯域幅条件との間で折り合いを付けるための伸び縮みするバッファとして 使用される。 この時点で、バッファ・サイズ、アドレス空間、および出力/入力ポインタ・ キュー・サイズなどのいくつかの共用メモリ・パラメータの間のトレードオフの 関係について説明すると都合がよいと思われる。たとえば、バッファ・サイズが 大きければ、パケットの一部ではなくパケット全体を収められる可能性が高くな る。しかし、パケット・サイズがバッファ・サイズの整数倍になっていないと、 無駄になるバッファ・メモリが多くなる可能性がある。一方、バッファ・サイズ が小さいと、分解度が細かくなるためこのような状況ではメモリの節約になる。 しかし、バッファを一意的に識別するために多くのアドレスが必要になる場合が あり、それぞれのパケットに対し格納用のバッファを増やす必要があると思われ る。さらに、1パケットあたりのバッファ数を増やすと、入力ポートと出力ポー ト206の両方でさらに多くのポインタをキューに入れなければならなくなるか もしれない。さらに、環境が予めわかっていない場合には、プログラム可能なリ ソースを用意し、バッファ・サイズ、共用メモリ・サイズ、キュー・サイズ、お よびその他のパラメータを特定の実装に合わせて最適化できるようにするのが望 ましい。たとえば、イーサネット実装では、512バイトのバッファ・サイズで は通常、1パケットあたり3つのバッファのうちの1つを使用することになる。 本発明の一実施形態により、共用メモリ・マネージャ220はパケット・メモ リの共有プールと動的バッファ割り当て方式を利用するバッファリング・アーキ テクチャを備えている。この実施形態では、共用メモリ・マネージャ220は共 用メモリ230内の空きバッファの共有プールを管理する役割を持つ。これは、 バッファ消費者(たとえば、入力ポート206)およびバッファ提供者(たとえ ば、出力ポート206)という2つのカテゴリのクライアントを処理する。バッ ファ消費者は、着信パケットの受信中の適切な時期に共用メモリ・マネージャ2 20に空きバッファを要求する。次に、パケット中継処理中に、バッファ所有権 が2つのクライアント・タイプの一方から他方に移る。最後に、パケット送信中 の適切な時期に、バッファ提供者によってバッファが共用メモリ・マネージャ2 20に戻される。 そこで第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によって生成される。一実施形態では、ポインタ・ジェネレータ4 40はバッファ要求を即時処理できるように複数のポインタを使用可能な状態に 保持しようとする。 ステップ510で、生成されたポインタに対応するカウント・フィールドが更 新される。一実施形態では、これは、最大値などの予め設定されている値をカウ ント・フィールドに書き込むことにより行われる。たとえば、4ビット・カウン タに対する最大値は15つまり1111bである。 ステップ515で、ステップ510の更新後、カウント・フィールドの現在の 行に空きバッファがない場合、ステップ520で、この行に対応するタグが更新 され、そのように指示される。そうでない場合には、処理はステップ525を継 続する。 ステップ525で、バッファ追記ユニット329は、複数の入力ポート206 がバッファ・ポインタを要求するまで待つ。複数の要求を検出すると、処理はス テップ530から継続する。 ステップ530で、バッファ追跡ユニット329による処理のため1つの入力 ポート要求が選択される。一実施形態では、入力ポート要求はアービタ470が 受信する。アービタ470はバッファ追跡ユニット329による処理に関する入 力ポート要求の1つのを選択する。他の実施形態では、バッファ追跡ユニット3 29は高速なネットワーク・リンクに優先順位を設定することにより混合ポート 速度をサポートできる。たとえば、各N回の高速なインタフェース(たとえば、 ギガビット・イーサネット・ポート)の処理ごとに低速なインタフェース(たと えば高速イーサネットポートなど)を処理することにより高速なインタフェース に優先順位を付けるという優先順位付きラウンド・ロビン方式でアービタ470 がバッファ・ポインタの間のアービトレーションを行うように設定することがで きる。 ステップ535で、3つのバッファ・ポインタが、ステップ530で選択され た入力ポート206に戻される。バッファ割り当て処理は、ステップ505−5 35を繰り返すことで継続することができる。 バッファ所有権移転処理 第6図は、本発明の一実施形態によりバッファ所有権移転処理を説明する流れ 図である。ステップ610で、入力ポート206によってスイッチ構造210か ら受信した中継決定に基づいてパケットが中継されるポートの個数を決定する。 パケットのデータが格納されているバッファごとに、入力ポート206はステ ップ620−640を実行する。ステップ620で、入力ポート206はバッフ ァ・ポインタを中継決定指示されている出力ポート206に送る。ステップ63 0で、入力ポート206は、バッファが正常にバッファ・マネージャ325に伝 送された出力ポートの個数を通知することにより入力ポート206から出力ポー ト206へのバッファの所有権移転をバッファ・マネージャ325に通知する。 ステップ640で、現在のバッファと関連するカウント・フィールドが更新さ れ、バッファを送信する出力ポートの個数を反映する。本発明の発明者は、バッ ファ・アカウンティングを無競合にする必要のない方法で動作するようにここで 説明した更新機構を設計したということが重要である。新規の更新機構を説明す る前に、更新機構によって解決される競合状態について簡単に説明する。 容易にわかるように、入力ポート206が特定のバッファ・ポインタの伝送先 の出力ポートの個数をバッファ・マネージャ325に通知する前に、入力ポート 206は、たとえば出力キュー満杯通知を検査することにより、出力ポート20 6が追加バッファ・ポインタを受け入れるかどうかを判別する。入力ポート20 6が出力ポートの総数をバッファ・マネージャ325に通知する前に、複数の出 力ポート206がバッファ・ポインタを受信し、そのバッファ・ポインタと関連 するパケット・データを送信し、バッファ・カウントを更新することが可能であ る。 上述の競合状態を処理する更新機構について説明する。一実施形態によれば、 バッファ・マネージャ325は、単にカウント・フィールドを入力ポート206 で指示される数に設定するのではなく、カウント・フィールドに対して読込み/ 修正/書込みを実行するように設定することができる。一実施形態によれば、バ ッファ割り当てプロセスにおいて、カウント・フィールドはバッファ割り当て後 カウント・フィールドの最大値(たとえば、Fh)などの予め定められている値 に設定されることに注意されたい。したがって、バッファ所有権移転処理では、 カウント・フィールドは更新され、適切なカウント・フィールドの現在の内容を 読み込み、入力ポート206によって与えられた数値を現在の内容プラス予め設 定された値に加えてバッファ・ポインタの割り当て時にバッファ追跡ユニット3 29によって書き込まれた初期値を補正し、結果をカウント・フィールドに書き 戻すことによりバッファを送信する出力ポートの現在の個数を反映することがで きる。都合がよいのは、この方法で、カウント・フィールドが、以下の表1に示 されているように複数の出力ポート206によってカウント・フィールドが予め 減分されているかどうかに関係なくバッファ・ポインタの出力ポートの現在の個 数を正確に反映するということである。表1は、第1の列内でのそれぞれのアク ションの後のカウント・フィールドの値を示している。 ステップ650で、パケットのすべてのバッファが処理されたかどうかを判別 する。処理されていれば、このパケットの所有権移転は完了である。そうでない 場合には、処理はステップ620から継続する。 バッファ戻し処理 第7図は、本発明の一実施形態によるバッファ戻り処理を説明する流れ図であ る。出力ポート206が特定のバッファの内容の送信を完了した後、出力ポート 206はバッファ・ポインタを戻し、上述のバッファ割り当て処理で再利用でき るようにする。 本実施形態では、ステップ710で、複数の出力ポート206がバッファを戻 すよう要求する。ステップ720で、アービタ470は処理する要求を選択する 。 ステップ730で、バッファ・カウントを更新して、1つ小さい出力ポート2 06がバッファを所有しているという事実を反映させる。たとえば、読込み/修 正/書込み操作を実行してバッファ・カウントを減分することができる。 ステップ740で、バッファが現在空いている場合、処理はステップ750か ら継続する。このバッファへのポインタが出力キューのどれかで保留になってい る出力ポート206がなければバッファは空いている。一実施形態では、バッフ ァはカウント・フィールドが減分されて0になることに基づいて空いていると判 断される。ただし、他の実施形態では、他の表示を使用することもできる。 ステップ750で、現在のバッファが属しているバッファの組に対応するタグ が更新され、このバッファの組の中のバッファを使用できるかどうかを示す。一 実施形態では、バッファの組ごとに単一のビットを格納するタグ・アレイを採用 している。 共用メモリ管理のための方法と装置の例を説明してきたが、次に構成要素間の インタフェースについて説明する。 バッファ・マネージャ/入力ポート・インタフェース 一実施形態によれば、以下の信号を使用して、バッファ・マネージャ325と 入力ポート206の間のハンドシェークを実現することができる。 (1)Br_Ptr_IP−入力ポート・バッファ・ポインタ・データ・バス のバス要求 この信号は、入力ポート206によってバッファ・マネージャ325に対しア サートされる。入力パケット受信中の適切な時期に、入力ポート206はこの信 号をアサートして、バッファ・ポインタが必要であることをバッファ・マネージ ャ325に指示する。それへの応答としてバス要求肯定応答(以下のBr_Pt r_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_Coun tを参照)に対し肯定応答するものである。バス・マネージャ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_P tr_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を参照)。バッファ・マネージャ3 25は出力ポート206のさまざまな要求のアービトレーションを行い、アービ トレーション・ロジックによって選択された出力ポート206へのバス要求肯定 応答を駆動する。 入力ポート/出力ポート・インタフェース 一実施形態によれば、以下の信号を使用して入力ポート206から出力ポート 206にパケット所有権を移転することができる。 (1)Arb_OP_Ptr−アービトレーションが行われた出力ポート・バ ッファ・ポインタ・データ・バス この多重化データ・バスは、出力バス・アービタによって駆動される。これは 、バッファ・ポインタ所有権情報の伝送のためすべての出力ポート206によっ て共有される。 (2)OP_Que_Full−出力ポート・キュー満杯 この信号は、出力ポート206によって入力ポート206に対してアサートさ れる。この信号は、パケット・ポインタをブロードキャストするときにフィルタ 処理決定を下すために入力ポート206によって使用される。つまり、指定され た出力ポート206にパケットを中継し、出力ポートのキューが満杯であること を中継決定が示している場合、パケット・ポインタはその出力ポート206には 伝送されず、バッファ・マネージャ325に取りこぼしたパケット・ポインタ( 上のDropped_Ptrsを参照)を通知することができる。それとは別に 、バッファ・マネージャ325に対しては単に、特定のパケット・ポインタを与 えられた出力ポートの総数を通知できるだけである。 例として、出力キューを1つだけ仮定している。ただし、他の実施形態では、 複数の出力キューをそれぞれの出力ポート206について採用することもできる 。この場合、追加出力キューごとにキュー満杯表示を用意することができる。 こうして、パケット・メモリの共有プールに受信パケットの一時記憶領域を確 保し、与えられたポートを介するトラフィックの量に比例するポートごとのバッ ファリングを効率よく割り当てるバッファリング・アーキテクチャについて説明 した。 明細書では、特定の実施形態に関して本発明を説明した。しかし、本発明の広 範な精神と範囲から逸脱することなくさまざまな修正および変更を加えられるこ とは明白であろう。したがって明細書と図面は、制限を目的とするものではなく 説明を目的とするものであるとみなされる。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP (72)発明者 ヘンデル,エアリエル アメリカ合衆国・95014・カリフォルニア 州・クパーチノ・ニューキャッスル ドラ イブ・7537 (72)発明者 タンギララ,ラヴィ アメリカ合衆国・94040・カリフォルニア 州・マウンテン ビュー・カリフォルニア アベニュウ・2065 (72)発明者 バーグ,カート アメリカ合衆国・94024・カリフォルニア 州・ロス アルトス・エンゼナダ ウエ イ・1370 【要約の続き】 ネットワークからパケットを受信し、パケットをバッフ ァリングし、パケットを複数の出力ポート(117)に 中継するための出力ポートに結合されている多数の入力 ポート(117)が備えられている。パケット中継デバ イス(100)はさらに、一時的にパケットをバッファ リングするためいくつかのバッファ(140)にセグメ ント分割されている共用メモリ(230)を備えてい る。共用メモリ(230)に格納されるのは高々1つの 与えられたパケットのコピーである。パケット中継デバ イス(100)はさらに、入力ポート(117)の代わ りにバッファを動的に割り当て、それぞれのバッファの 所有カウントを追跡する共用メモリ・マネージャ(22 0)を備える。

Claims (1)

  1. 【特許請求の範囲】 1.パケット中継デバイスで使用する共用メモリ・マネージャであって、 共用メモリ内にバッファ使用度に関する情報を格納するように構成されている ポインタ・メモリと、 ポインタ・メモリに結合されたエンコーダであって、複数の空きバッファを含 むバッファの複数の組のうちの一組のバッファを示す出力を生成するように構成 されているエンコーダと、 エンコーダに結合されているポインタ・ジェネレータであって、その一組のバ ッファ内の空きバッファを特定し、エンコーダの出力とその一組のバッファ内の 空きバッファの位置に基づいて空きバッファへのポインタを生成するポインタ・ ジェネレータと を備える共用メモリ・マネージャ。 2.バッファ使用度に関する情報に複数のバッファのそれぞれの使用度カウント が含まれる請求項1に記載の共用メモリ・マネージャ。 3.ポインタ・メモリがさらに使用度カウントを格納するように設定された複数 のエントリーを含むカウント・アレイを備え、複数のエントリのそれぞれが複数 のバッファのうちの1つに対応し、使用度カウントが対応するバッファへのポイ ンタを保持するポートの数を表す請求項2に記載の共用メモリ・マネージャ。 4.カウント・アレイ内の与えられたエントリの位置が共用メモリ内の対応する バッファのアドレスを表す請求項3に記載の共用メモリ・マネージャ。 5.ポインタ・メモリがさらにカウント・アレイに結合されているタグ・アレイ を備え、タグ・アレイはバッファの複数の組のうちの各組のバッファに対応する 指示を含み、この指示が対応するバッファの組の複数のバッファが使用可能かど うかを示す請求項3に記載の共用メモリ・マネージャ。 6.パケットをネットワーク上に送信するように構成されている複数の出力ポー トと、 複数の出力ポートに結合され、ネットワークからパケットを受信し、パケット を複数の出力ポートのうちの複数に中継するように構成されている複数の入力ポ ートと、 複数の出力ポートと複数の入力ポートに結合され、パケットをバッファリング するように構成され、さらに与えられた時点に共用メモリ内の与えられたパケッ トの高々1つのコピーを格納するように構成されている複数のバッファにセグメ ント分割されている共用メモリと、 複数の入力ポートと複数の出力ポートに結合され、複数の入力ポートから受信 した要求に基づいて複数のバッファから複数の入力ポートにバッファを割り当て 、複数の入力ポートと複数の出力ポートから受信した情報に基づいて複数のバッ ファのそれぞれについて所有権カウントを追跡する共用メモリ・マネージャをと 備えるパケット中継デバイス。 7.複数の入力ポートがパケットへの複数のポインタを複数の出力ポートのうち 複数に伝送することにより複数の出力ポートの複数にパケットを中継するように 構成されている請求項6に記載のパケット中継デバイス。 8.複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数の バッファを動的に割り当てるステップであって、複数の空きバッファ・ポインタ のそれぞれが複数のバッファのうちの1つに対応し、割り当ては共用メモリ内の 複数のバッファの位置によって制約されないステップと、 第1の接続されているネットワーク・セグメントからパケットを受信するステ ップと、 複数のバッファにパケットを格納するステップと、 中継決定に基づいて入力ポートから複数の出力ポートに複数のバッファ・ポイ ンタの所有権を移転するステップと、 複数のバッファからパケットを取り出すステップと、 パケットを第2の接続されているネットワーク・セグメントに送信するステッ プと を含むパケット中継方法。 9.&複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数 のバッファを動的に割り当てるステップがさらに、複数の空きバッファ・ポイン タのそれぞれに対応する使用度カウントを更新するステップを含む請求項8に記 載の方法。 10.空きバッファ・ポインタに対応する使用度カウントを更新するステップが 使用度カウントの処理における潜在的競合状態に対処できるように予め設定され ている値に使用度カウントを設定するステップを含む請求項9に記載の方法。 11.中継決定に基づき入力ポートから複数の出力ポートに複数のバッファ・ポ インタの所有権を移転するステップがさらに、 複数のバッファのバッファごとに、 キューから外す操作を実行して、入力キューから対応するバッファ・ポインタ を除去するステップと、 キューに入れる操作を実行して、中継決定で指示されている複数の出力ポート の出力キューにバッファ・ポインタを挿入するステップと、 バッファ・ポインタが正常にキューに入れられた、出力ポートの個数を共用メ モリ・マネージャに通知するステップと、 バッファ・ポインタに対応する使用度カウントを更新するステップと を含む請求項8に記載の方法。 12.バッファ・ポインタに対応する使用度カウントを更新するステップが 使用度カウントの現在値を決定するステップと、 入力ポートの個数を共用メモリ・マネージャに通知するステップを実行する前 に解放されている可能性のあるバッファを考慮するように現在値を修正するステ ップと、 バッファ・ポインタのコピーを現在保持している出力ポートの数を反映する修 正値で使用度カウントを置き換えるステップを含み、 競合状態の悪影響を、修正ステップで解放されている可能性のあるバッファを 考慮することにより回避する請求項11に記載の方法。 13.中継決定により複数の出力ポートからなるポートの組を識別し、この方法 がさらに複数のバッファ・ポインタを伝送する先の複数の出力ポートの組のサブ セットを決定するステップを含む請求項11に記載の方法。 14.さらに、複数の出力ポートでキュー状態指示を生成するステップを含み、 複数のバッファ・ポインタの伝送先の複数の出力ポートの組のサブセットを決定 するステップが複数の出力ポートによって生成されるキュー状態指示に基づく請 求項13に記載の方法。 15.パケットを第2の接続されているネットワーク・セグメントに送信するス テップが、さらに、複数のバッファのうちのそれぞれのバッファについて、 パケット・データをバッファから第2の接続されているネットワーク・セグメ ントに送信するステップと、 バッファ・ポインタを中央バッファ・マネージャに戻すことで対応するバッフ ァ・ポインタを解放し、バッファを他の受信パケットからのパケット・データを 格納するのに使用できるようにするステップを含む請求項8に記載の方法。 16.パケットの高々1つのコピーを共用メモリ内に格納する請求項8に記載の 方法。 17.パケットを受信するステップと、 パケット・データをパケットから複数のバッファに格納するステップと、 出力ポートと複数のミラー・ポートを指示する中継決定を受信するステップと 、 複数のバッファ・ポインタを出力ポートおよび複数のミラー・ポートに伝送し 、出力ポートで送信されたパケットが複数のミラー・ポート上でミラー化される ようにするステップと を含むポートをミラー化する方法。 18.命令シーケンスを表すデータを格納している機械読取り可能媒体であって 、前記命令シーケンスがプロセッサによって実行されると、 複数の空きバッファ・ポインタを決定することにより共用メモリ内に複数のバ ッファを動的に割り当て、複数の空きバッファ・ポインタのそれぞれが複数のバ ッファの1つに対応し、割り当てが共用メモリ内の複数のバッファの位置によっ て制約されないステップと、 第1の接続されているネットワーク・セグメントからパケットを受信するステ ップと、 パケットを複数のバッファに格納するステップと、 中継決定に基づいて複数のバッファ・ポインタの所有権を入力ポートから複数 の出力ポートに伝送するステップと、 複数のバッファからパケットを取り出すステップと、第2の接続されているネ ットワーク・セグメントにパケットを送信するステップと を前記プロセッサが実行する、機械読取り可能媒体。 19.複数の空きバッファ・ポインタを決定することにより共用メモリ内に1つ 以上のバッファを動的に割り当てるステップと、複数の空きバッファ・ポインタ のそれぞれに対応する使用度カウントを更新するステップを特徴とする請求項1 8に記載の機械読取り可能媒体。 20.中継決定に基づき入力ポートから複数の出力ポートに複数のバッファ・ポ インタの所有権を伝送するステップがさらに、 複数のバッファのバッファごとに、 キューから出る操作を実行して、入力キューから対応するバッファ・ポインタ を除去するステップと、 キューに入る操作を実行して、中継決定で指示されている複数の出力ポートの 出力キューにバッファ・ポインタを挿入するステップと、 バッファ・ポインタが正常にキューに入った、出力ポートの個数を共用メモリ ・マネージャに通知するステップと、 バッファ・ポインタに対応する使用度カウントを更新するステップを含む請求 項18に記載の機械読取り可能媒体。 21.パケットを第2の接続されているネットワーク・セグメントに送信するス テップが、さらに、複数のバッファのうちのそれぞれのバッファについて、 パケット・データをバッファから第2の接続されているネットワーク・セグメ ントに送信するステップと、 バッファ・ポインタを中央バッファ・マネージャに戻すことにより対応するバ ッファ・ポインタを解放し、バッファを他の受信パケットからのパケット・デー タを格納するのに使用できるようにするステップを含む請求項18に記載の機械 読取り可能媒体。
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/987,914 US6021132A (en) 1997-06-30 1997-12-09 Shared memory management in a switched network element
US08/987,914 1997-12-09
US08/885,118 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 true JP2002508126A (ja) 2002-03-12
JP4091665B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009077453A (ja) * 2003-04-22 2009-04-09 Agere Systems Inc 共用マルチバンク・メモリのための方法および装置
US7650413B2 (en) 2003-02-07 2010-01-19 Fujitsu Limited Managing shared memory resources in a high-speed switching environment

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
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
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
US7899052B1 (en) * 1999-01-27 2011-03-01 Broadcom Corporation Memory structure for resolving addresses in a packet-based network switch
US6975637B1 (en) * 1999-01-27 2005-12-13 Broadcom Corporation Apparatus for ethernet PHY/MAC communication
US7120117B1 (en) 2000-08-29 2006-10-10 Broadcom Corporation Starvation free flow control in a shared memory switching device
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
EP1161817B1 (en) * 1999-03-17 2006-10-25 Broadcom Corporation Network switch
US7366171B2 (en) 1999-03-17 2008-04-29 Broadcom Corporation Network switch
US6421756B1 (en) * 1999-05-06 2002-07-16 International Business Machines Corporation Buffer assignment for bridges
WO2000072530A2 (en) * 1999-05-21 2000-11-30 Avici Systems Fabric router with flit caching
US7031302B1 (en) 1999-05-21 2006-04-18 Broadcom Corporation High-speed stats gathering in a network switch
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
US6859454B1 (en) 1999-06-30 2005-02-22 Broadcom Corporation Network switch with high-speed serializing/deserializing hazard-free double data rate switching
US7315552B2 (en) 1999-06-30 2008-01-01 Broadcom Corporation Frame forwarding in a switch fabric
US6567400B1 (en) * 1999-07-02 2003-05-20 Cisco Systems, Inc. Hardware assisted DSP data transfer
WO2001013590A1 (en) * 1999-08-17 2001-02-22 Conexant Systems, Inc. Integrated circuit with a core processor and a co-processor to provide traffic stream processing
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
EP1232604B1 (en) 1999-11-16 2003-10-15 Broadcom Corporation Method and network switch with data serialization using hazard-free multilevel glitchless multiplexing
US7539134B1 (en) 1999-11-16 2009-05-26 Broadcom Corporation High speed flow control methodology
US7593953B1 (en) 1999-11-18 2009-09-22 Broadcom Corporation Table lookup mechanism for address resolution
AU2066201A (en) 1999-12-07 2001-06-18 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
EP1162788B1 (en) 2000-06-09 2012-11-21 Broadcom Corporation Trunking and mirroring across stacked gigabit switches
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
US7088713B2 (en) 2000-06-19 2006-08-08 Broadcom Corporation Switch fabric 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
US6988177B2 (en) 2000-10-03 2006-01-17 Broadcom Corporation Switch memory management using a linked list structure
US7420977B2 (en) 2000-10-03 2008-09-02 Broadcom Corporation Method and apparatus of inter-chip bus shared by message passing and memory access
US6851000B2 (en) 2000-10-03 2005-02-01 Broadcom Corporation Switch having flow control management
US7274705B2 (en) 2000-10-03 2007-09-25 Broadcom Corporation Method and apparatus for reducing clock speed and power consumption
US7020166B2 (en) 2000-10-03 2006-03-28 Broadcom Corporation Switch transferring data using data encapsulation and decapsulation
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
US7035255B2 (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
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
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
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
US6901052B2 (en) 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US6904057B2 (en) * 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
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
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
US6920485B2 (en) * 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
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
US7302681B2 (en) * 2003-02-27 2007-11-27 Dell Products L.P. Method and system for customized information handling system support updates
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 日本電気株式会社 時系列データ管理方法およびプログラム
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
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
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
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
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
US7664127B1 (en) * 2005-04-05 2010-02-16 Sun Microsystems, Inc. Method for resolving mutex contention in a network system
US7353360B1 (en) 2005-04-05 2008-04-01 Sun Microsystems, Inc. Method for maximizing page locality
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
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
US7567567B2 (en) * 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
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
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
CN104012056A (zh) * 2011-10-31 2014-08-27 惠普发展公司,有限责任合伙企业 减小归因于网络交换机处的聚播崩溃的tcp超时
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
US11500737B2 (en) * 2019-05-21 2022-11-15 Mellanox Technologies, Ltd. Coherent capturing of shared-buffer status
US20240297854A1 (en) * 2023-03-01 2024-09-05 Nio Technology (Anhui) Co., Ltd. Distributed function-specific buffer arrangement in a communication layer

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
US5500860A (en) * 1991-06-14 1996-03-19 Digital Equipment Corporation Router using multiple hop redirect messages to enable bridge like data forwarding
US5420862A (en) * 1991-06-14 1995-05-30 Digital Equipment Corporation Router using remote address resolution 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
EP0680173B1 (en) * 1994-04-28 2003-09-03 Hewlett-Packard Company, A Delaware Corporation Multicasting apparatus
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
US5651002A (en) * 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
US5751971A (en) * 1995-07-12 1998-05-12 Cabletron Systems, Inc. Internet protocol (IP) work group routing
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7650413B2 (en) 2003-02-07 2010-01-19 Fujitsu Limited Managing shared memory resources in a high-speed switching environment
JP2009077453A (ja) * 2003-04-22 2009-04-09 Agere Systems Inc 共用マルチバンク・メモリのための方法および装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4091665B2 (ja) スイッチ・ネットワーク要素における共用メモリ管理
US6389480B1 (en) Programmable arbitration system for determining priority of the ports of a network switch
US6246680B1 (en) Highly integrated multi-layer switch element architecture
US6430626B1 (en) Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses
US6201789B1 (en) Network switch with dynamic backpressure per port
US5923654A (en) Network switch that includes a plurality of shared packet buffers
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
US6222840B1 (en) Method and system for performing concurrent read and write cycles in network switch
US6233246B1 (en) Network switch with statistics read accesses
JP4002336B2 (ja) ネットワーク・スイッチのためのマルチポート・ポーリング・システム
US6233242B1 (en) Network switch with shared memory system
US7248593B2 (en) Method and apparatus for minimizing spinlocks and retaining packet order in systems utilizing multiple transmit queues
EP0884872A2 (en) Network switch with separate cut-through buffer
JPH02290349A (ja) 星形ローカルエリアネツトワーク用リングバスハブおよびリングバスパケツトを初期設定する方法
JPH04261245A (ja) ネットワークアダプタのためのネットワークコントローラ
JPH06334652A (ja) 通信システムにおいてデータをマルチキャストする方法及び装置
CN113821516A (zh) 一种基于虚拟队列的时间敏感网络交换架构
US7124231B1 (en) Split transaction reordering circuit
JPH10210069A (ja) 異なるバス間にネットワーク・データを転送する多重バス構造とブリッジ・インターフェースとを備えたネットワーク・スイッチ
Todd et al. A Directed Flow Control for Real-Time SCI

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