(57)【特許請求の範囲】
【請求項１】
スイッチに宛先を接続する論理リンクを含み、前記論理リンクは複数のポートに接続される複数の物理リンクを含み、さらに
受信データパケットに含まれる宛先アドレスおよびソースアドレスに基づいて、前記受信データパケットから周期冗長検査コードを生成するための生成手段と、
前記周期冗長検査コードの最下位ビットをフローハッシュビットとして選択するための手段とを含み、前記宛先アドレスおよび前記ソースアドレスはデータリンクヘッダ中のタイプフィールドの内容に依存して選択され、さらに
フローハッシュビットに依存してトランクポートエントリを選択するための手段を含み、前記トランクポートエントリは受信データを宛先に転送するための複数の物理リンクの１つを選択する、スイッチ。
【請求項２】
前記複数のポートは前記スイッチ中の利用可能なポートからランダムに選択される、請求項１に記載のスイッチ。
【請求項３】
前記受信データパケットを転送可能なすべてのイーグレスポートを示すイーグレスポートビットを含む論理ポート転送ベクトルと、前記論理ポート転送ベクトルによって特定されるイーグレスポートビットから１つのイーグレスポートを選択する前記トランクポートエントリとに依存して、前記論理リンク中の前記物理リンクの１つにおいて前記受信データを転送するためにポートを選択するための手段をさらに含む、請求項１に記載のスイッチ。
【請求項４】
物理リンクに対応して当該スイッチ中のポートを選択するように構成されたベクトル組合せ論理を含み、
前記ベクトル組合せ論理は、当該スイッチのどのイングレスポートがトランクグループに属するかを示すトランクグループメンバシップベクトルに基づいて、イングレスポートを選択する、請求項３に記載のスイッチ。
【請求項５】
前記受信データが前記論理リンク中の前記物理リンクのいずれか１つにおいて受取られたときには、当該受信データパケットを受け取ったポートは選択されない、請求項４に記載のスイッチ。
【請求項６】
スイッチを通じて受信データパケットを転送するための方法であって、
前記スイッチに宛先を接続する論理リンクを与えるステップを含み、前記論理リンクは複数のポートに接続される複数の物理リンクを含み、さらに
フローハッシュ論理部が、受信データパケットに含まれる宛先アドレスおよびソースアドレスに基づいて、前記受信データパケットから周期冗長検査コードを生成するステップと、
前記フローハッシュ論理部が、前記周期冗長検査コードの最下位ビットをフローハッシュビットとして選択するステップとを含み、前記宛先アドレスおよび前記ソースアドレスはデータリンクヘッダ中のタイプフィールドの内容に依存して選択され、さらに
トランクポートセレクタ論理部が、前記フローハッシュビットに基づいて、トランクポートエントリを選択するステップとを含み、
前記トランクポートエントリは、受信データを前記宛先に転送するための前記複数の物理リンクのうち１つを選択するためのものである、方法。
【請求項７】
前記複数のポートは前記スイッチ中の利用可能なポートからランダムに選択される、請求項６に記載の方法。
【請求項８】
物理リンクに対応して当該スイッチ中のポートを選択するように構成されたベクトル組合せ論理部が、前記受信データパケットを転送可能なすべてのイーグレスポートを示すイーグレスポートビットを含む論理ポート転送ベクトルと、前記論理ポート転送ベクトルによって特定されるイーグレスポートビットから１つのイーグレスポートを選択する前記トランクポートエントリとの組合せに基づいて、前記論理リンク中の前記物理リンクの１つにおいて前記受信データを転送するために前記スイッチ中のポートを選択するステップをさらに含む、請求項６に記載の方法。
【請求項９】
前記選択するステップは、前記ベクトル組合せ論理部が、当該スイッチのどのイングレスポートがトランクグループに属するかを示すトランクメンバシップベクトルに基づいて、イングレスポートを選択するステップを含む、請求項８に記載の方法。
【請求項１０】
前記受信データが前記論理リンク中の前記物理リンクのいずれか１つにおいて受取られたときには、前記受信データを受け取ったポートは選択されない、請求項９に記載の方法。
【請求項１１】
スイッチによって受取られるデータパケットに含まれるソースおよび宛先情報に対して行われる周期冗長検査機能の少なくとも一つの最下位ビットに依存して少なくとも一つのフローハッシュビットを生成するフローハッシュ論理部を含み、前記ソースおよび宛先情報はデータリンクヘッダ中のタイプフィールドの内容に依存して選択され、さらに
論理ポート転送ベクトルを記憶するための転送データベースを含み、各論理ポート転送ベクトルは転送情報を含み、さらに
トランクグループメンバシップベクトルを記憶するためのトランクグループメンバシップテーブルを含み、各トランクグループメンバシップベクトルはどのポートがトランクグループに属するかを示し、さらに
前記論理ポート転送ベクトルと、前記フローハッシュビットに依存して選択されるトランクポートセレクタベクトルと、前記トランクグループメンバシップベクトルとを組合せて、受信データを転送するための単一ポートを選択するベクトル組合せ論理部を含み、
前記トランクポートセレクタベクトルは、前記論理ポート転送ベクトルにおいて可能化されたイーグレスポートの１つを、マスクを与えることにより選択し、当該選択されたイーグレスポートを通じて、前記受信データを転送するように構成されている、データネットワークスイッチ。
【請求項１２】
前記ベクトル組合せ論理は、データが受取られたポートに関連する前記トランクグループメンバシップベクトルに依存して前記単一ポートを選択する、請求項１１に記載のデータネットワークスイッチ。
【請求項１３】
前記受信データが前記単一ポートにおいて受取られたとき、または、前記単一ポートが属する前記トランクグループのいずれかの他のメンバにおいて前記受信データが受取られたときには、前記単一ポートは選択されない、請求項１２に記載のデータネットワークスイッチ。
【請求項１４】
ソースアドレスに対応する論理ポート転送ベクトルを変更するためにトランクグループメンバシップベクトルが用いられ、前記トランクグループメンバシップベクトルは、当該スイッチの各ポートに対するビットを含む、請求項１１に記載のデータネットワークスイッチ。
【請求項１５】
前記スイッチは、前記トランクグループメンバシップベクトルを用いて、前記受信データを初めて受信したポートを、前記転送データベース中の前記論理ポート転送ベクトルに付加するように構成されている、請求項１１に記載のデータネットワークスイッチ。
【請求項１６】
スイッチに宛先を接続する論理リンクを含み、前記論理リンクは前記スイッチ中の複数のポートに接続される複数の物理リンクを含み、さらに
受信データパケットに含まれる宛先アドレスおよびソースアドレスに基づいて、前記受信データパケットから周期冗長検査コードを生成するための生成手段と、
前記周期冗長検査コードの最下位ビットをフローハッシュビットとして選択するフローハッシュセレクタとを含み、前記宛先アドレスおよびソースアドレスはデータリンクヘッダ中のタイプフィールドの内容に基づいて選択され、さらに
前記フローハッシュビットに基づいて、前記受信データパケットを転送するための前記複数の物理リンクの１つを選択するトランクポートセレクタを含み、同じフローに対するデータは前記スイッチによって受信された順に前記宛先へ転送される、スイッチ。
【請求項１７】
スイッチ中の複数のポートに接続される複数の物理リンクを通じて前記スイッチに宛先を接続するための手段と、
受信データパケットに含まれる宛先アドレスおよびソースアドレスに基づいて、前記受信データパケットから周期冗長検査コードを生成するための生成手段と、
前記周期冗長検査コードの最下位ビットをフローハッシュビットとして選択するための手段とを含み、前記宛先アドレスおよびソースアドレスはデータリンクヘッダ中のタイプフィールドの内容に基づいて選択され、さらに
前記フローハッシュビットに基づいて、前記受信データパケットを転送するための前記複数の物理リンクの１つを選択するための手段を含み、同じフローに対するデータは前記スイッチによって受信された順に前記宛先へ転送される、スイッチ。
【発明の詳細な説明】
【０００１】
【発明の背景】
ネットワーキングスイッチは、スイッチに接続されるいくつかのイングレス（ingress）ポートからデータパケットを受取り、そのデータパケットをスイッチに接続されたいくつかのイーグレス（egress）ポートに与える。スイッチは、データパケットに含まれる宛先アドレスに依存して、データパケットが与えられるイーグレスポートを定める。
【０００２】
典型的には、宛先は１つの物理リンクを通じてスイッチ中の１つのイーグレスポートに接続される。宛先に対してイングレスポートにおいて受取られたデータパケットは、スイッチを通じてイーグレスポートに転送される。宛先はコンピュータであっても、別のスイッチまたはルータであってもよい。
【０００３】
宛先に対する帯域幅、すなわちある宛先に対してスイッチを通じて転送できるデータパケットの数を増加させるために、宛先は複数の物理リンクを通じて１つよりも多くのイーグレスポートに接続され、各物理リンクはイーグレスポートにおいて終結していてもよい。複数の物理リンクは、スイッチと宛先との間の論理リンクのメンバである。
【０００４】
複数の物理リンクを宛先に与えることをリンクアグリゲーションまたはトランキングと呼ぶ。ＩＥＥＥ８０２．３に対するリンクアグリゲーションは、ＩＥＥＥ８０２．３ａｄグループによって出版されたチュートリアルにおいて、http://grouper.ieee.org/groups/802/3/trunk-study/tutorialに記載されている。
【０００５】
スイッチ中のイングレスポートに到着するデータパケットは、論理リンクにおける物理リンクのいずれか１つにおいてスイッチを通じて宛先に転送されてもよい。宛先に対するデータパケットが物理リンクに分配されるため、リンク帯域幅が増加する。論理リンクにおいて最大の帯域幅利用を得るために、宛先に対するデータパケットは宛先に対する物理リンクの中で均等に分配される必要がある。
【０００６】
しかし、受取ったデータパケットを物理リンクに分配するとき、データフローに対するデータパケットはスイッチを通じて誤って順序付けることができない。
【０００７】
【発明の概要】
スイッチは、宛先をスイッチに接続する論理リンクを含む。論理リンクは物理リンクを含む。このシステムは、スイッチ中のフローハッシュ論理が、受取ったデータ中に符号化されたデータフローに依存してフローハッシュを索引付けすることを前提とする。スイッチ中のトランクポートセレクタ論理は、フローハッシュに依存してトランクポートエントリを選択する。トランクポートエントリは、受取ったデータを宛先に転送するための物理リンクを選択する。
【０００８】
データフローは、受信データ中のヘッダに記憶される宛先およびソースアドレスにおいて符号化される。ソースおよび宛先アドレスは、イーサネット（Ｒ）ソースおよび宛先アドレスであっても、ＩＰソースおよび宛先アドレスであっても、ＵＤＰソースおよび宛先ポートアドレスであっても、またはＴＣＰソースおよび宛先ポートアドレスであってもよい。
【０００９】
スイッチは、物理リンクに対応してスイッチ中のポートを選択するベクトル組合せ論理を含む。ポートは、論理ポート転送ベクトルとトランクポートエントリとの組合せに依存して選択される。
【００１０】
この発明の前述およびその他の目的、特徴および利点は、添付の図面に例示されるようなこの発明の好ましい実施例の以下のより特定的な説明から明らかになるであろう。図面において、類似の参照符号は異なる図を通じて同じ部分を示す。図面は必ずしも一定の縮尺ではなく、この発明の原理を例示することに重きをおいている。
【００１１】
【詳細な説明】
この発明の好ましい実施例の説明を以下に示す。
【００１２】
図１Ａは、この発明の原理に従ってスイッチ１００に宛先１１２ｃを接続する論理リンク１３４を例示する。論理リンクまたはトランクグループ１３４は物理リンク１３２ｃ−ｅを含む。宛先１１２ｃは物理リンク１３２ｃ−ｅを通じてスイッチに接続される。宛先１１２ｃに対する受信データパケットは、３つの物理リンク１３２ｃ−ｅのいずれか１つにおいて宛先１１２ｃへ転送されてもよい。スイッチ１００は、論理リンク１３４中の各物理リンク１３２ｃ−ｅに対応するイーグレスポートキュー１３０ａ−ｃを含む。このスイッチは、ソース１０２ａから受取ったデータパケットをイーグレスポートキュー１３０ａ−ｃの１つに転送する。
【００１３】
受信データパケットが対応する物理リンク１３２ｃ−ｅに転送される前に記憶されるイーグレスポートキュー１３０ａ−ｃは、データフロー、すなわちデータパケットに含まれるソースアドレスおよび宛先アドレスに依存する。ソースアドレスおよび宛先アドレスに依存して物理リンクを選択することによって、同じデータフローに対するデータパケットは常に同じ物理リンクに転送されるので、スイッチ中で誤って順序付けされない。
【００１４】
たとえば、宛先１１２ｃに転送されるべきデータパケット１４０ａ−ｃは、ソース１０２ａからスイッチによって受取られる。各データパケット１４０ａ−ｃはソース１０２ａに対するソースアドレスと、宛先１１２ｃに対する宛先アドレスとを含む。スイッチは、データパケット１３２ｃ−ｅに記憶されるソースおよび宛先アドレスからデータフローを定める。データパケット１４０ａ−ｃの各々がスイッチ中のメモリに受取られかつ記憶されるとき、メモリ中のデータパケットのアドレスは、それがイーグレスポートキュー１３０ａに受取られた順序で記憶される。データパケット１４０ａ−ｃの各々は、物理リンク１３２ｃ上を宛先１１２ｃへと転送される。よって、ソース１０２ａから宛先１１２ｃへのデータフローに対するデータパケット１４０ａ−ｃは、それらがスイッチ１００によって受取られた順序で宛先１１２に伝送される。
【００１５】
図１Ｂは図１Ａに示したスイッチ１００を例示し、これは複数の物理リンク１３２ｃ−ｅの１つにおけるイングレスポートにおいて受取ったデータパケットを転送するための転送論理１２８を含む。スイッチ１００はイングレスポートエンジン１０４と、パケット記憶マネージャ１０６と、セグメントバッファメモリ１０８と、イーグレスポートエンジン１１０とを含む。物理リンク１３２ｃ−ｅは、スイッチ１００に宛先１１２ｃを接続する論理リンク１３４のメンバである。物理リンク１３２ｆ−ｇは、スイッチ１００に宛先１１２ｄを接続する論理リンク１４０のメンバである。単一の物理リンク１３２ａはスイッチ１００に宛先１１２ａを接続し、単一の物理リンク１３２ｂはスイッチ１００に宛先１１２ｂを接続する。よって、すべての物理リンクが同じ速度であれば、論理リンク１４０は宛先１１２ｄに対して、宛先１１２ａに対する単一物理リンク１３２ａの２倍の帯域幅を与え、論理リンク１３４は、宛先１１２ｂに対する単一物理リンク１３２ｂの３倍の帯域幅宛先１１２ａを与える。
【００１６】
スイッチ１００は、宛先１１２に対する単一物理リンクおよび論理リンクのあらゆる組合せを含んでもよい。論理リンクはあらゆる数の物理リンクを含んでもよい。論理リンク中の物理リンクは宛先１１２に不連続ポートを接続してもよく、たとえば、論理リンク１３４は宛先１１２ｃに不連続イーグレスポート（イーグレスポート２  １３６ｃ、イーグレスポート３  １３６ｄ、およびイーグレスポート５  １３６ｆ）を接続する。代替的には、論理リンクは宛先に連続ポートを接続してもよく、たとえば、論理リンク１４０は宛先１１２ｄに連続イーグレスポート（イーグレスポート６  １３６ｇ、イーグレスポート７  １３６ｈ）を接続する。
【００１７】
よって、すべてのイーグレスポート１３６ａ−ｈが同じ論理リンクのメンバであってもよく、各イーグレスポート１３６ａ−ｈが単一物理リンクであってもよく、またはイーグレスポート１３６ａ−ｈが宛先１１２ａ−ｄに対する論理リンクおよび単一物理リンクの組合せで構成されてもよい。
【００１８】
論理リンクのメンバは同じ速度の物理リンク１３２ａ−ｈに制限されない。たとえば、１ギガビットのイーサネット（Ｒ）イーグレスポートは、１００Ｍビットのイーサネット（Ｒ）イーグレスポートと同じ論理リンクのメンバであってもよい。
【００１９】
イングレスポート１３８ａ−ｃにおいてソース１０２ａ−ｃから受取られたデータパケットは、イングレスポートエンジン１０４において転送論理１２８によって生成された転送ベクトル１１４に依存して、１つまたはそれ以上のイーグレスポート１３６ａ−ｈに転送される。転送ベクトル１１４は、転送論理１２８において実現される転送データベースに記憶される論理ポート転送ベクトルに依存する。
【００２０】
パケット記憶マネージャ１０６は、セグメントバッファメモリ１０８にデータパケットにおいて受取られたイングレスデータ１１６を記憶する。パケット記憶マネージャ１０６はまた、転送ベクトル１１４の状態に依存して、１つまたはそれ以上のイーグレスポートキュー１３０にセグメントバッファメモリ１０８における受信イングレスデータ１１６のアドレスを記憶する。パケット記憶マネージャ１０６は、デビッドＡ．ブラウンによる「インタリーブされた非ブロッキングパケットバッファに対する方法および装置（Method and Apparatus for an Interleaved Non-Blocking Packet Buffer）」と題する、１９９９年８月３１日に提出された同時出願米国特許出願連続番号第０９／３８６，５８９号に記載されており、その全体の教示をここに全体として引用より援用する。
【００２１】
イーグレスポートエンジン１１０は選択信号１２０を通じて、アドレス１２２上の受信イングレスデータ１１６のアドレスをセグメントバッファメモリ１０８に転送するためのイーグレスポートキュー１３０を選択する。セグメントバッファメモリ１０８に記憶されるイングレスデータ１１６は、イーグレスデータ１１８においてイーグレスポート１３６ａ−ｈに転送される。イーグレスデータ１１８が転送されるイーグレスポート１３６ａ−ｈは、転送ベクトル１１４に依存する。
【００２２】
転送ベクトル１１４は、データパケットが記憶されるセグメントバッファメモリ１０８におけるアドレスを記憶するためのイーグレスポートキュー１３０を選択する。イーグレスポートエンジン１１０は選択信号１２０を通じてイーグレスポートキュー１３０を選択する。アドレス１２２はセグメントバッファメモリ１０８に転送される。アドレス１２２に記憶されるイーグレスデータ１１８はイーグレスポートエンジン１１０に転送され、選択されたイーグレスポートキュー１３０に依存してイーグレスポートエンジン１１０からイーグレスポート１３６ａ−ｈに転送される。
【００２３】
宛先１１２ｃは、物理リンク１３２ｃ−ｅを通じて３つのイーグレスポート（ポート２、ポート３、ポート５）１３６ｃ−ｅに接続される。物理リンク１３２ｃ−ｅは、論理リンクまたはトランクグループ１３４のメンバである。論理リンク１３４のメンバは、ここに示される３つのイーグレスポート１３６ｃ−ｅに制限されない。論理リンク１３４のメンバは、スイッチ１００中のイーグレスポート１３６ａ−ｈのあらゆる組合せを含んでもよい。転送ベクトル１１４は、そこを通じて受信データパケットが転送され得る各イーグレスポート１３６ａ−ｈに対するビットを含む。宛先１１２ｃに対する受信データパケットは、３つの物理リンク１３２ｃ−ｅのいずれか１つにおいて宛先１１２ｃに転送されてもよい。転送論理１２８は宛先１１２ｃに対する３つの物理リンク１３２ｃ−ｅのうち１つを選択することによって、１つのソースから宛先へのデータフローに対するデータパケットが常に同じ物理リンク１３２ｃ−ｅにおいて宛先１１２ｃに転送されるようにする。たとえば、ソース１０２ａから受取られたすべてのデータパケットを宛先１１２ｃに転送するために物理リンク１３２ｅが選択されてもよい。
【００２４】
図２Ａは、スイッチ１００（図１Ｂ）に接続されるイングレスポート１３６ａ−ｃ（図１Ｂ）において受取られ得る先行技術のデータパケット２００を例示する。図２Ｂは、図２Ａに示されるデータパケット２００に含まれ得る先行技術のイーサネット（Ｒ）ヘッダを例示する。図２Ｃは、図２Ａに示されるデータパケット２００に含まれ得る先行技術のインターネットプロトコル（“ＩＰ”）ヘッダを例示する。
【００２５】
図２Ａは先行技術のデータパケット２００を示す。データパケット２００はデータペイロード２１０と、ネットワーキング層のためのヘッダ２０２、２０４、２０６、２０８とを含む。ＯＳＩモデルにおける層の４つに対するヘッダが示されており、物理層（Ｌ１）ヘッダ２０２、データリンク層（Ｌ２）ヘッダ２０４、ネットワーキング層（Ｌ３）ヘッダ２０６、およびトランスポート層（Ｌ４）ヘッダ２０８である。たとえば、データリンク層（Ｌ２）ヘッダ２０４はイーサネット（Ｒ）であってもよく、ネットワーキング層（Ｌ３）ヘッダ２０６はＩＰであってもよい。データパケット２００はまたチェックサム２１２を含む。
【００２６】
図２Ｂは、先行技術のイーサネット（Ｒ）データリンク（Ｌ２）ヘッダ２０４のフォーマットを例示する。イーサネット（Ｒ）データリンク（Ｌ２）ヘッダ２０４は、宛先ノード１０４（図１Ｂ）に対する装置アドレス、すなわちＬ２宛先アドレス２１４と、ソースノード１０２（図１Ｂ）に対する装置アドレス、すなわちＬ２ソースアドレス２１６、任意の仮想ローカルエリアネットワーク識別（“ＶＬＡＮ ＩＤ”）フィールド２１８、および長さ／タイプフィールド２２０とを含む。ＶＬＡＮ  ＩＤ２１８は、タグプロトコル識別子（“ＴＰＩ”）フィールド２１８ａと、タグ制御情報（“ＴＣＩ”）フィールド２１８ｂとを含む。ＶＬＡＮ  ＩＤフィールド２１８は、ＩＥＥＥ８０２．１Ｑタグ付けおよびＩＥＥＥ８０２．ＩＤ１９８８（８０２．１ｐ）優先レベルに基づくＶＬＡＮスイッチングに対する支持を提供する。
【００２７】
図２Ｃは、先行技術のＩＰネットワーク層（Ｌ３）ヘッダ２０６のフォーマットを例示する。ＩＰネットワーク層（Ｌ３）ヘッダ２０６は、ソースノード１０２ａ−ｃ（図１Ｂ）に対するネットワークアドレス、すなわちＩＰソースアドレス２４４と、宛先ノード１１２ａ−ｃ（図１Ｂ）に対するネットワークアドレス、すなわちＩＰ宛先アドレス２４６とを含む。ＩＰネットワーク層ヘッダ２０６におけるその他のフィールドは、バージョン２２２、ＨＬＥＮ２２４、タイプオブサービス（“ＴＯＳ”）２２６、全長２２８、識別２３０、フラグ２３２、フラグメントオフセット２３４、生存時間（“ＴＴＬ”）２３６、プロトコルフィールド２４０、ヘッダチェックサム２４２、オプション２４８、およびパッド２５０を含む。
【００２８】
イングレスポート１３８ａ−ｃ（図１Ｂ）においてソースノード１０２ａ−ｃ（図１Ｂ）から受取られたデータパケット２００（図２Ａ）は、イーサネット（Ｒ）データリンク（Ｌ２）ヘッダ２０４（図２Ａ）に記憶される宛先アドレス２１４（図２Ｂ）に依存して１つまたはそれ以上のイーグレスポート１３６ａ−ｈ（図１Ｂ）にブリッジされるか、またはＩＰネットワーク層（Ｌ３）ヘッダ２０６に記憶されるＩＰ宛先アドレス２４６に依存して１つまたはそれ以上のイーグレスポート１３６ａ−ｈ（図１Ｂ）に経路付けされる。
【００２９】
図３は、図１Ｂに示される転送論理１２８を例示する。転送論理１２８は転送データベース３０４を含む。転送データベース３０４はサーチキー３１６の内容に依存して論理ポート転送ベクトル３１４を選択する。転送データベース３０４は、デビッドＡ．ブラウンによる「４ウェイハッシュテーブルに対する方法および装置（Method and Apparatus for a Four-Way Hash Table）」と題する、１９９９年９月３０日に提出された同時出願米国特許出願連続番号第０９／４０９，１８４号に記載されており、その全体の教示をここに全体として引用により援用する。
【００３０】
論理ポート転送ベクトル３１４は、スイッチ１００（図１Ｂ）中の各イーグレスポート１３６ａ−ｈ（図１Ｂ）に対するイーグレスポートビットを含む。イーグレスポートビットは、それぞれのイーグレスポート１３６ａ−ｈ（図１Ｂ）への転送を可能化するために“１”にセットされ、またそれぞれのイーグレスポート１３６ａ−ｈ（図１Ｂ）への転送を不能化するために“０”にセットされ、それによってデータパケットを転送可能なすべてのイーグレスポートを示す。よって、宛先１１２ｃ（図１Ｂ）に対する論理ポート転送ベクトル３１４においては、イーグレスポート２、イーグレスポート３およびイーグレスポート５ビットが“１”にセットされることによって、宛先１１２ｃ（図１Ｂ）に接続されるイーグレスポート１３６ｃ、１３６ｄおよび１３６ｆ（図１Ｂ）にデータパケットを転送することを可能にする。
【００３１】
トランクポートセレクタベクトル３１２は、フローハッシュ論理３００によって生成されるフローハッシュ３１０に依存してトランクポートセレクタ論理３０２によって選択される。トランクポートセレクタベクトル３１２は、論理ポート転送ベクトル３１４において可能化されたイーグレスポート（ポート２、ポート３またはポート５）１３６ｃ−ｅの１つを選択し、そこを通じて受信データパケットを宛先１１２ｃ（図１Ｂ）に転送する。
【００３２】
トランクグループメンバシップテーブル３１８は、スイッチ１００中の各イングレスポート１３８（図２）に対するトランクグループメンバシップベクトル３２０を含む。トランクグループメンバシップベクトル３２０は、スイッチ１００中の各ポートに対するビットを含む。ビットは、同じトランクグループにある他のポートを示すポートのトランクグループメンバシップベクトルにおいて“１”にセットされる。イングレスポートがトランクグループのメンバでないとき、そのイングレスポートのビットは、トランクグループメンバシップベクトルにおいて“１”にセットされる唯一のビットである。
【００３３】
トランキングを支持するスイッチにおいて、ホストはそのホストが存在するトランクに関連するいずれのポートにおいてデータパケットを送信および受信してもよい。パケットが受取られたのと同じトランクグループにどのポートが属しているかを識別する必要がある。その結果、イングレスポートを用いてトランクグループメンバシップテーブルを索引付けすることによって反響抑制を確実にし、すなわち入来するパケットが同じポートまたはその特定のトランクグループの他のポートに転送されないことを確実にする。たとえば、もしイングレスポート０がポート０、２および３からなるトランクグループのメンバであれば、入来するデータパケットはポート０、２または３に転送できない。なぜならそれらはすべて同じトランクグループの部分だからである。トランクグループメンバシップテーブル３１８はこのグループメンバシップ情報を記憶し、このような反響が起こらないことを確実にする。
【００３４】
データパケットを受取ったイングレスポートは、イングレスポート数３２２においてトランクグループメンバシップテーブル３１８に転送される。イングレスポート数３２２は、トランクグループメンバシップテーブル３１８におけるトランクグループメンバシップベクトル３２０に対する索引である。トランクグループメンバシップベクトル３２０は、ベクトル組合せ論理３０６に転送される。
【００３５】
転送データベース３０４中の論理ポート転送ベクトル３１４を変更、リフレッシュまたは付加することによってハードウェア学習を行なうために、トランクグループメンバシップベクトル３２０を用いることができる。学習ポート数３２４は、転送データベースに記憶される各論理ポート転送ベクトル３１４とともに記憶される。学習ポート数３２４は、ソースアドレスが学習されたイングレスポートを識別する。学習ポート数３２４はトランクグループメンバシップテーブル３１８に転送される。トランクグループメンバシップテーブル３１８は、学習ポート数３２４に依存してソースアドレスに対する論理ポート転送ベクトルが変更されるべきかどうかを判断する。そうであれば、トランクグループメンバシップテーブルは更新された論理ポート転送ベクトル３２６を転送データベース３０４に転送する。論理ポート転送ベクトルが更新されるべきかどうかを判断するステップは、図７とともに説明する。
【００３６】
ベクトル組合せ論理３０６は、トランクポートセレクタベクトル３１２と、論理ポート転送ベクトル３１４と、トランクグループメンバシップベクトル３２０とを組合せる。トランクポートセレクタベクトル３１２は論理ポート転送ベクトル３１４に対するマスクを与えることにより、そこを通じて受信データパケットを宛先１１２ｃに転送するための可能化されたイーグレスポートの１つを選択する。
【００３７】
データパケットのヘッダ３０８の部分はフローハッシュ論理３００に転送される。データパケットのヘッダ３０８の部分の内容は、受信データパケットにおいて符号化されたネットワークプロトコルに依存する。受信データパケットが層３ヘッダ、すなわちたとえばＩＰネットワーク層（Ｌ３）ヘッダ２０６（図２Ｃ）を含むとき、データパケットのヘッダ３０８の部分はＩＰソースアドレス２４４（図２Ｃ）と、ＩＰ宛先アドレス２４６（図２Ｃ）と、プロトコルフィールド２４０（図２Ｃ）とを含む。データパケットが層３ヘッダを含まないとき、すなわちたとえばデータパケットがイーサネット（Ｒ）プロトコルデータパケットであるときには、データパケットのヘッダ３０８の部分はＬ２ソースアドレス２１６（図２Ｂ）と、Ｌ２宛先アドレス２１４（図２Ｂ）とを含む。よって、データパケットのヘッダ３０８の部分の内容はソース１０２ａ−ｃ（図１Ｂ）から宛先１１２ａ−ｃ（図１Ｂ）へのデータフローを識別するため、（ソースから宛先への）同じフローに対するデータパケットは、同じイーグレスポート１３６ａ−ｈ（図１Ｂ）を通って同じ物理リンク１３２ｃ−ｅ（図１Ｂ）において宛先１１２ｃへ転送される。
【００３８】
図４は、図３に示されるフローハッシュ論理３００において行なわれる機能の流れ図である。フローハッシュ論理３００（図３）は、データパケットのヘッダ３０８（図１Ｂ）の部分の内容における周期冗長検査（“ＣＲＣ”）を生成する。データパケットのヘッダ３０８（図３）の部分の内容は、データパケットのヘッダから選択され、フローハッシュ論理３００（図３）に転送される。この流れ図は図３とともに説明される。
【００３９】
ステップ４００において、ＣＲＣ変数は、ＣＲＣが生成される前に無効値に初期化される。無効値は、ＣＲＣ変数におけるすべてのビットを“１”にセットすることによって生成されてもよい。ステップ４０２による処理が継続する。
【００４０】
ステップ４０２において、フローハッシュ論理３００（図３）は、データリンク（Ｌ２）ヘッダ２０４（図２Ｂ）中のＬ２長さ／タイプフィールド２２０（図２Ｂ）の内容を調べる。長さ／タイプフィールド２２０（図２Ｂ）がインターネットプロトコルバージョン４（“ＩＰｖ４”）であるとき、データパケットはＩＰネットワーク層（Ｌ３）ヘッダ２０６（図２Ｃ）を含み、ステップ４０４による処理が継続する。そうでなければ、ステップ４１０による処理が継続する。
【００４１】
ステップ４０４において、フローハッシュ論理３００（図３）は、ＩＰネットワーク層（Ｌ３）ヘッダ２０６（図２Ｃ）中の長さフィールド２２８（図２Ｃ）およびプロトコルフィールド２４０を調べる。長さフィールド２２８（図２Ｃ）の内容が“５”であり、かつプロトコルフィールド２４０がユーザデータグラムプロトコル（“ＵＤＰ”）または輸送制御プロトコル（“ＴＣＰ”）を記憶するときには、ステップ４０６による処理が継続する。そうでなければ、ステップ４０８による処理が継続する。
【００４２】
ステップ４０６において、フローハッシュ論理３００（図３）は、データパケットのヘッダに含まれるＩＰネットワーク層（Ｌ３）ヘッダ２０６（図２Ｃ）におけるＩＰソースアドレスフィールド２４４（図２Ｃ）およびＩＰ宛先アドレスフィールド２４６（図２Ｃ）の内容と、トランスポート層（Ｌ４）ヘッダ２０８（図２Ａ）におけるＬ４ソースポートアドレスフィールド（図示せず）の内容と、Ｌ４宛先ポートアドレスフィールド（図示せず）の内容とを用いて、ＣＲＣを生成する。ＣＲＣが生成されてＣＲＣ変数に記憶された後、ステップ４１２による処理が継続する。
【００４３】
ステップ４０８において、フローハッシュ論理３００（図３）は、データパケットのヘッダに含まれるＩＰネットワーク層（Ｌ３）ヘッダ２０６（図２Ｃ）におけるＩＰソースアドレスフィールド２４４（図２Ｃ）およびＩＰ宛先アドレス２４６（図２Ｃ）フィールドの内容を用いて、ＣＲＣを生成する。ＣＲＣが生成されてＣＲＣ変数に記憶された後、ステップ４１２による処理が継続する。
【００４４】
ステップ４１０において、フローハッシュ論理３００（図３）は、データパケットのヘッダに含まれるデータリンク層（Ｌ２）ヘッダ２０６（図２Ｂ）におけるＬ２ソースアドレスフィールド２１６（図２Ｂ）およびＬ２宛先アドレスフィールド２１４（図２Ｂ）の内容を用いて、ＣＲＣを生成する。ＣＲＣが生成されてＣＲＣ変数に記憶された後、ステップ４１２による処理が継続する。
【００４５】
ステップ４１２において、フローハッシュ論理３００（図３）は、記憶されたＣＲＣ変数の最下位ビット（“ＬＳＢ”）をフローハッシュビット３１０（図３）として選択する。フローハッシュビット３１０（図３）はトランクポートセレクタテーブル３０２（図３）に転送される。６つのフローハッシュビット３１０によって、トランクポートセレクタテーブル３０２（図３）に記憶される６４個のトランクポートセレクタテーブルエントリのうち１つの選択が可能になる。
【００４６】
データパケットのヘッダに含まれるソースおよび宛先アドレスに依存してフローハッシュビット３１０を生成することによって、（ソース１０２（図１Ｂ）から宛先１１２（図１Ｂ）への）同じフローに対するデータパケットは、トランクポートセレクタテーブル３０２（図３）における同じトランクポートセレクタテーブルエントリを選択する。また、ソースアドレスおよび宛先アドレスに依存してトランクポートセレクタテーブルエントリを選択することによって、データフローは宛先１１２ｃ（図１Ｂ）に接続される複数の物理リンク１３２ｃ−ｅ（図１Ｂ）に分配される。
【００４７】
図５は、図３に示されるトランクポートセレクタテーブル３０２を例示する。トランクポートセレクタテーブル３０２は、複数のトランクポートセレクタテーブルエントリ５００ａ−ｆを含む。図５においては６つのトランクポートセレクタテーブルエントリ５００ａ−ｆが示される。６つのフローハッシュビット２１０は、トランクポートセレクタテーブル３０２に記憶される５００ａ−ｆを含む６４個のトランクポートセレクタテーブルエントリに対する索引である。各トランクポートセレクタテーブルエントリ５００ａ−ｈは、スイッチ１００（図１Ｂ）中の各イーグレスポート１３６ａ−ｈに対するそれぞれのイーグレスポートビット５０２ａ−ｈを含む。
【００４８】
トランクポートセレクタテーブルエントリ５００ａは８つのイーグレスポートビット５０２ａａ−ａｈを有する。すなわち、スイッチ１００（図１Ｂ）における各イーグレスポート１３６ａ−ｈ（図１Ｂ）に対するイーグレスポートビット５０２ａａ−ａｈである。この発明は８つのイーグレスポート１３６ａ−ｈ（図１Ｂ）を有するスイッチに制限されるものではなく、トランクポートセレクタテーブルエントリ５００ａ−ｈにおける各イーグレスポートに対して１つのイーグレスポートビットを与えることによって、あらゆる数のイーグレスポート１３６（図１Ｂ）が支持されてもよい。トランクポートセレクタテーブルエントリ５００中のイーグレスポートビット５０２の状態は、それぞれのイーグレスポート１３６ａ−ｈ（図１Ｂ）にデータパケットを転送できるかどうかを定める。図５に示される実施例において、トランクポートセレクタテーブルエントリ５００ａ中のそれぞれのイーグレスポートビット５０２が“１”であるときに、データパケットがイーグレスポート１３６ａ−ｈ（図１Ｂ）に転送されてもよい。代替的な実施例においては、トランクポートセレクタテーブルエントリ５００ａ中のそれぞれのイーグレスポートビット５０２が“０”であるときに、データパケットがイーグレスポート１３６ａ−ｈ（図１Ｂ）に転送されてもよい。
【００４９】
イーグレスポート１３６ｃ、１３６ｄ、１３６ｆ（図１Ｂ）に関連するイーグレスポートビット５０２ａｃ、５０２ａｄおよび５０２ａｆは、トランクグループ１３４（図１Ｂ）のメンバである。各トランクポートセレクタテーブルエントリ５００において、トランクグループ１３４（図１Ｂ）のメンバの１つは、“１”にセットされたそれぞれのイーグレスポートビット５０２によって可能化される。トランクポートセレクタテーブルエントリ５００ａにおいて、イーグレスポートビット５０２ａｃは“１”であり、論理リンク１３４（図１Ｂ）におけるイーグレスポート２  １３６ｃ（図１Ｂ）を可能化する。トランクポートセレクタテーブルエントリ５００ｂにおいて、イーグレスポートビット５０２ｂｄは“１”であり、論理リンク１３４（図１Ｂ）におけるイーグレスポート３  １３６ｄ（図１Ｂ）を可能化する。図５に示される実施例において、イーグレスポート５  １３６ｆ（図１Ｂ）はトランクポートセレクタテーブルエントリ５００ｃにおいて可能化され、イーグレスポート２  １３６ｃ（図１Ｂ）はトランクポートセレクタテーブルエントリ５００ｄにおいて可能化され、イーグレスポート３  １３６ｄ（図１Ｂ）はトランクポートセレクタテーブルエントリ５００ｅにおいて可能化され、イーグレスポート５  １３６ｆ（図１Ｂ）はトランクポートセレクタテーブルエントリ５００ｆにおいて可能化される。
【００５０】
ポートセレクタテーブルにおけるポートセレクタテーブルエントリ５００の分配は、論理リンク中の各物理リンクを通じて転送されるデータパケットの数を定める。すべての物理リンクが同じ速度でデータパケットを伝送するとき、データパケットは論理リンク中の各物理リンクを可能化するポートセレクタテーブルエントリ５００の数に依存して均等に分配されてもよい。
【００５１】
代替的には、論理リンクにおける物理リンクを可能化するポートセレクタエントリ５００の数に依存して、より大きなパーセンテージのデータパケットが論理リンク中の特定の物理リンクにおいて転送されてもよい。論理リンクによってスイッチに接続された宛先に対するより大きなパーセンテージのデータパケットが、論理リンク中のその他の物理リンクよりも速い物理リンクにおいて転送されてもよい。
【００５２】
たとえば、物理リンク１３２ｃが秒当り１Ｇビットのリンクであり、物理リンク１３２ｄ−ｅが秒当り１００Ｍビットのリンクであるとき、トランクポートセレクタテーブル３０２に記憶されるポートセレクタテーブルエントリ５００は、データパケットの８０％が物理リンク１３２ｃにおいて転送され、１０％が物理リンク１３２ｄ−ｅの各々において転送されるように生成されてもよい。
【００５３】
よって、論理リンクにおける特定の物理リンクにおいて伝送されるデータパケットの割合は、ポートセレクタテーブル３０２中のポートセレクタテーブルエントリ５００の分配に依存する。
【００５４】
図６は、宛先１１２ｃ（図１）に対してソースポート１０２ａ（図１）から受取られたデータパケットに対する、図５に示されるトランクポートセレクタエントリ５００の１つと、論理ポート転送ベクトルエントリ６００と、トランクグループメンバシップベクトルエントリ６０４との組合せを例示する。トランクポートセレクタエントリ５００ａは、トランクポートセレクタベクトル３１２においてベクトル組合せ論理３０６に転送される。論理ポート転送ベクトルエントリ６００は、論理ポート転送ベクトル３１４においてベクトル組合せ論理３０６に転送される。トランクグループメンバシップベクトルエントリ６０４は、トランクグループメンバシップベクトル３２０においてベクトル組合せ論理３０６に転送される。
【００５５】
トランクグループメンバシップベクトルエントリ６０４は、ソースポート１０２ａ（図１）に対して選択されるベクトルである。ソースポート１０２ａ（図１）は、この例においては単一物理リンクであるイングレスポート０  １３８ａに接続される。よってビット６０４ａは“１”にセットされ、ソースポート１０２ａが接続されたポートを示す。
【００５６】
論理ポート転送ベクトルエントリ６００はビット６００ｆ、６００ｄ、６００ｃを“１”にセットして、データパケットがイーグレスポート１３６ｃ、１３６ｄ、１３６ｆ（図１Ｂ）、すなわち論理リンク１３４中のすべてのイーグレスポート１３６に転送されることを可能にする。その他すべてのビット６００ｇ、６００ｈ、６００ｅ、６００ａ、６００ｂは“０”であり、それぞれのイーグレスポート１３６（図１Ｂ）へのデータパケットの転送を不能化する。トランクポートセレクタエントリ５００ａはビット５０２ａｃを“１”にセットして、イーグレスポート２  １３６ｃ（図１Ｂ）を選択する。
【００５７】
ベクトル組合せ論理３０６はトランクグループメンバシップベクトルエントリ６０４を反転し、ビットに関する論理ＡＮＤ機能を行なって、トランクポートセレクタエントリ５００ａと反転させたトランクグループメンバシップベクトルエントリ６０４とを組合せる。この組合せの結果得られる転送ベクトルエントリ６０２はビット６０２ｃを“１”にセットし、データフローに対するデータパケットがイーグレスポート２  １３６ｃ（図１Ｂ）に転送されることを可能にする。
【００５８】
トランクグループメンバシップベクトル６０４が反転されることによって、すなわちデータパケットが論理リンクにおいて受取られたときに論理リンクにおけるデータパケットの転送を不能化することによって、反響抑制支持が与えられる。たとえば、イングレスポート２  １３８ｃおよびイーグレスポート５  １３６ｆは同じ論理リンク１３４のメンバであるため、イングレスポート２  １３８ｃにおいて受取られたデータパケットはイーグレスポート５  １３６ｆに転送されない。
【００５９】
論理ポート転送ベクトル３１４は論理リンク１３４（図１Ｂ）におけるすべてのイーグレスポートを可能化し、トランクポートセレクタベクトル３１２は論理リンク１３４（図１Ｂ）中の物理リンクの１つを選択する。ベクトル組合せ論理３０６はトランクポートセレクタベクトル３１２と、トランクグループメンバシップベクトル３２０と、論理ポート転送ベクトル３１４とを組合せることによって、転送ベクトル１１４を生成する。
【００６０】
図７は、トランクグループメンバシップベクトル３２０の内容を用いて転送データベース３０４に記憶される論理ポート転送ベクトル３１４を変更するためのステップの流れ図である。このステップは図３に示されるブロック図とともに説明される。
【００６１】
ステップ７００において、受信データパケットに含まれるソースアドレスを含むサーチキー３１６が転送データベースに転送される。また、受信データパケットを受取ったイングレスポート数３２２がトランクグループメンバシップテーブル３１８に転送される。ステップ７０２による処理が継続する。
【００６２】
ステップ７０２において、転送データベースはサーチキー３１６に対応するエントリがあるかどうかを定める。そうであれば、ステップ７０４による処理が継続する。そうでなければ、ステップ７０８による処理が継続する。
【００６３】
ステップ７０４において、サーチキー３１６に対応する転送データベースエントリにおいて記憶される学習ポート数３２４がトランクグループメンバシップテーブル３１８に転送される。学習ポート数３２４は、そこで受信データパケットに含まれるソースアドレスが学習されたイングレスポートである。ステップ７０６による処理が継続する。
【００６４】
ステップ７０６において、トランクグループメンバシップテーブル３１８は、ソースポート数３２２に対するトランクグループメンバシップベクトル３２０において学習ポート数３２４に対応するビットが“１”にセットされているかどうかをチェックする。そうであれば、受信データパケットは新たなポートに受取られなかったため、処理は完了する。そうでなければ、ステップ７０８による処理が継続する。
【００６５】
ステップ７０８において、受信データパケットはそれが最初に学習されたイングレスポート以外のイングレスポートに到着したか、またはデータパケットがソースアドレスから受取られたのはそれが最初である。よって、論理ポート転送ベクトル３１４は、イングレスポート数３２２およびイングレスポート数３２２と同じトランクグループのメンバであるあらゆるその他のポートによって更新される必要があるかもしれない。イングレスポート数３２２に対応するトランクグループメンバシップベクトル３２０は更新３２６において転送されるため、転送データベース３０４はソースアドレスに対応して論理ポート転送ベクトル３１４を変更またはリフレッシュできる。処理は完了する。
【００６６】
この発明について、好ましい実施例を参照しながら特定的に示しかつ説明してきたが、添付の請求項によって包含されるこの発明の範囲から逸脱することなく形および詳細におけるさまざまな変更が行なわれてもよいことが当業者に理解されるであろう。
【図面の簡単な説明】
【図１Ａ】  この発明の原理に従ってスイッチに宛先を接続する論理リンクを例示する図である。
【図１Ｂ】  スイッチに宛先を接続する論理リンクにおける複数のリンクの１つにおけるイングレスポートにおいて受取られたデータパケットを転送するための転送論理を含む、図１Ａに示されるスイッチを例示する図である。
【図２Ａ】  スイッチに接続されたイングレスポートにおいて受取られ得る先行技術のデータパケットを例示する図である。
【図２Ｂ】  図２Ａに示されるデータパケットに含まれ得る先行技術のイーサネット（Ｒ）データリンク層（Ｌ２）ヘッダを例示する図である。
【図２Ｃ】  図２Ａに示されるデータパケットに含まれ得る先行技術のインターネットプロトコル（ネットワーク層（Ｌ３））ヘッダを例示する図である。
【図３】  図１Ｂに示される転送論理を例示する図である。
【図４】  図３に示されるフローハッシュ論理において行なわれる機能を示す流れ図である。
【図５】  図３に示されるトランクポートセレクタテーブルを例示する図である。
【図６】  図５に示されるトランクポートセレクタエントリの１つと、グループメンバシップテーブルベクトルエントリと、論理ポート転送ベクトルエントリとの組合せを例示する図である。
【図７】  トランクグループメンバシップベクトルの内容を用いて転送データベース３０４に記憶される論理ポート転送ベクトルを更新するためのステップを示す流れ図である。
【図１Ａ】
0004768191.tif 000002
【図１Ｂ】
0004768191.tif 000003
【図２Ａ】
0004768191.tif 000004
【図２Ｂ】
0004768191.tif 000005
【図２Ｃ】
0004768191.tif 000006
【図３】
0004768191.tif 000007
【図４】
0004768191.tif 000008
【図５】
0004768191.tif 000009
【図６】
0004768191.tif 000010
【図７】
0004768191.tif 000011