(57)【要約】【課題】  振り分け不可能となった複数の出力先に対して、振り分けを防止し、偏りのない振り分けができる技術を提供する。【解決手段】  受信されたパケットに関連付けられたハッシュ値と、振り分け出力先総数Ｎと、不活性出力先数ｘとを用いて、振り分け出力先選択番号を生成する。振り分け出力先選択番号を、Ｎビットの選択番号ビットマップにデコードする。出力先状態ビットマップを参照し、選択番号ビットマップをビットシフト演算することにより、不活性出力先を選択しない選択番号ビットマップを生成する。選択番号ビットマップにより、複数の振り分け出力先の中から、１つの出力先を選択する。【選択図】  図３
2011004025.tif 000002
【特許請求の範囲】
【請求項１】
パケットの送受信を行う情報処理装置においてＮ（Ｎは２以上の自然数）個の出力先のうちのｘ（ｘは１以上の自然数）個の不活性出力先を除いたＮ−ｘ個の出力先の中から１つの出力先を選択するパケット振り分け方法であって、
（ａ）前記情報処理装置が前記受信パケットに関連付けられたハッシュ値に基づいて前記Ｎ−ｘ個の出力先のうちの１つの出力先を選択するための出力先選択番号を生成する工程と、
（ｂ）前記出力先選択番号から、出力先および非出力先を示す情報を含むＮビットの第１の選択番号ビットマップを生成する工程と、
（ｃ）前記Ｎ個の出力先の活性状態を示す情報を参照し、前記第１の選択番号ビットマップの各ビットのうち不活性状態の出力先に対応するビット位置に非出力先を示す情報を挿入し、前記非出力先を示す情報を挿入した位置以降のビットマップをビットシフト演算することにより、第２の選択番号ビットマップを生成する工程と、
（ｄ）前記第２の選択番号ビットマップの出力先を示す情報により、前記Ｎ個の出力先の中から１つの出力先を選択する工程と
を備えることを特徴とするパケット振り分け方法。
【請求項２】
請求項１のパケット振り分け方法であって、さらに、
（ｅ）前記受信パケットに関連付けられたハッシュ値に基づいて前記Ｎ個の出力先のうちの１つの出力先を選択するための第２の出力先選択番号を生成する工程と、
（ｆ）前記第２の出力先選択番号から、出力先および非出力先を示す情報を含むＮビットの第３の選択番号ビットマップを生成する工程と
（ｇ）前記Ｎ個の出力先の活性状態を示す情報を参照し、前記第２の出力先選択番号によって選択される出力先が活性であるか否かを判定する工程と、
（ｈ）前記第２の出力先選択番号によって選択される出力先が活性であると判定された場合に、前記第３の選択番号ビットマップの出力先を示す情報により、前記Ｎ個の出力先の中から１つの出力先を選択する工程と
を備え、
前記工程（ａ）から工程（ｄ）は、前記工程（ｇ）において前記第２の出力先選択番号によって選択される出力先が不活性であると判定された場合に行われる工程であることを特徴とするパケット振り分け方法。
【請求項３】
請求項１のパケット振り分け方法であって、さらに、
（ｉ）前記受信パケットに関連付けられたハッシュ値に基づいて前記Ｎ個の出力先とは別のＭ（Ｍは２以上の自然数）個の出力先うちの１つの出力先を選択するための第３の出力先選択番号を生成する工程と、
（ｊ）前記第３の出力先選択番号から、出力先および非出力先を示す情報を含むＭビットの第４の選択番号ビットマップを生成する工程と
（ｋ）前記Ｍ個の出力先の活性状態を示す情報を参照し、前記第３の出力先選択番号によって選択される出力先が活性であるか否かを判定する工程と、
（ｌ）前記第３の出力先選択番号によって選択される出力先が活性であると判定された場合に、前記第４の選択番号ビットマップの出力先を示す情報により、前記Ｍ個の出力先の中から１つの出力先を選択する工程と
を備え、
前記工程（ａ）から工程（ｄ）は、前記工程（ｋ）において前記第３の出力先選択番号によって選択される出力先が不活性であると判定された場合に行われる工程であることを特徴とするパケット振り分け方法。
【請求項４】
パケットを中継する情報処理装置であって、
回線と接続するための複数のポートを有するとともに、前記回線を介してパケットを送受信するパケット送受信部と、
前記パケット送受信が受信したパケットに含まれる宛先情報に基づいて出力するポートを選択するヘッダ処理部と
を備え、
前記ヘッダ処理部は、さらに、
前記受信パケットに含まれる宛先情報に基づいて、Ｎ（Ｎは２以上の自然数）個の出力ポートのうちのｘ（ｘは１以上の自然数）個の不活性ポートを除いたＮ−ｘ個の出力ポートのうちの１つの出力ポートを選択するための出力ポート選択番号を生成する出力ポート振り分け部と、
前記出力ポート選択番号を、出力ポートおよび非出力ポートを示す情報を含むＮビットの第１の選択番号ビットマップにデコードするデコーダと、
前記Ｎ個の出力ポートの活性状態を示す情報を参照し、前記第１の選択番号ビットマップの各ビットのうち不活性状態の出力ポートに対応するビット位置に非出力ポートを示す情報を挿入し、前記非出力ポートを示す情報を挿入した位置以降のビットマップをビットシフト演算することにより、第２の選択番号ビットマップを生成するビットシフト演算部と、
前記第２の選択番号ビットマップの出力ポートを示す情報により、前記Ｎ個の出力ポートの中から１つの出力ポートを選択する選択制御部と
を備えることを特徴とする情報処理装置。
【請求項５】
受信パケットに関連付けられた宛先情報によって特定される複数の振り分け出力先のうち複数の不活性の振り分け出力先を除いた出力先候補の中から、１つの出力先を選択するパケット振り分け装置であって、
前記受信パケットに関連付けられたハッシュ値と、振り分け出力先総数Ｎ（Ｎは２以上の自然数）と、不活性出力先数ｘ（ｘは１以上の自然数）とを用いて、０〜Ｎ−ｘ−１の範囲から選択番号を生成する不活性対応振り分け部と、
前記不活性対応振り分け部によって生成された選択番号と、複数Ｎの振り分け出力先の活性状態とを参照し、複数存在する不活性出力先を選択しない振り分け出力先選択番号を算出する選択番号演算部と、
前記選択番号演算部によって算出された振り分け出力先選択番号により、複数Ｎの振り分け出力先の中から、１つの出力先を選択する選択制御部と
を備える、パケット振り分け装置。
【請求項６】
請求項５のパケット振り分け装置であって、さらに、
前記受信パケットに関連付けられたハッシュ値と、振り分け出力先総数Ｎとを用いて、０〜Ｎ−１の範囲から選択番号を生成する通常振り分け部を備え、
前記選択制御部は、複数Ｎの振り分け出力先の活性状態を参照し、前記通常振り分け部によって生成された選択番号に対応する出力先が活性であるかを判定し、活性である場合には前記通常振り分け部によって生成された選択番号により、複数Ｎの振り分け出力先の中から１つの出力先を選択し、不活性である場合には前記選択番号演算部によって算出された振り分け出力先選択番号により、複数Ｎの振り分け出力先の中から１つの出力先を選択する、
パケット振り分け装置。
【請求項７】
請求項５のパケット振り分け装置であって、さらに、
前記受信パケットに関連付けられたハッシュ値と、前記振り分け出力先総数Ｎとは別の振り分け出力先総数Ｍ（Ｍは２以上の自然数）とを用いて、０〜Ｍ−１の範囲から選択番号を生成する通常振り分け部を備え、
前記選択制御部は、複数Ｍの振り分け出力先の活性状態を参照し、前記通常振り分け部によって生成された選択番号に対応する出力先が活性であるかを判定し、活性である場合には前記通常振り分け部によって生成された選択番号により、複数Ｍの振り分け出力先の中から１つの出力先を選択し、不活性である場合には前記選択番号演算部によって算出された振り分け出力先選択番号により、複数Ｎの振り分け出力先の中から１つの出力先を選択する、
パケット振り分け装置。
【請求項８】
請求項５ないし請求項７のいずれかのパケット振り分け装置であって、
前記選択番号演算部は、さらに、
前記振り分け出力先選択番号を、Ｎビットの選択番号ビットマップにデコードするデコーダと、
複数Ｎの振り分け出力先の活性状態を示す出力先状態ビットマップを参照し、前記デコーダによってデコードされた選択番号ビットマップの不活性出力先位置に非出力先を示す情報を挿入し、前記非出力先を示す情報を挿入した位置以降のビットマップをビットシフト演算することにより、不活性出力先を選択しない選択番号ビットマップを生成するビットシフト演算器と、
を備える、パケット振り分け装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット伝送におけるパケット振り分け方法及び装置に関するものである。
【背景技術】
【０００２】
コンピュータネットワークの冗長構成において、通信負荷を分散させる場合には、複数の出力先へパケットを振り分ける方法がある。ここで、障害などにより振り分け不可能となった出力先が発生した場合、その出力先を振り分け対象から外し、振り分け先の切り替えを行う必要がある。近年の回線の高速化、データ量の増大の中で、高可用なコンピュータネットワークを構築するには、障害発生時の切り替え時間を短縮し、切り替え後の負荷分散を行うことが求められている。
【０００３】
特許文献１は、受信されたパケットに関連付けられた宛先情報及び送信元情報の少なくとも一方の情報を含む種情報を用いた演算処理を実行し、振り分けパターン毎に振り分け数及び複数の出力先情報を格納するテーブルにより、複数の出力先の中から、受信パケットを送信すべき出力先を、演算結果に基づいて振り分ける技術が記載されている。
【０００４】
特許文献２は、障害などにより振り分け不可能となった１つの出力先に対して、振り分けを防止し、振り分け先の負荷分散を行う方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−４８０１０号公報
【特許文献２】特開２００５−２７７９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の技術では、障害などにより振り分け不可能となった出力先が発生した場合の対応として、振り分け情報を格納する振り分けテーブルの振り分け不可能となった出力先がある全ての振り分けパターンに対して、振り分け数を減らし、振り分け不可能となった出力先情報を削除する方法がある。しかしながら、障害検出から振り分けテーブルの書き換え完了までの間は、障害となっている出力先に振り分ける場合がある。
【０００７】
または、振り分けテーブルの振り分け不可能となった出力先がある全ての振り分けパターンに対して、振り分け不可能となった出力先情報を、振り分け可能な出力先情報に変更する方法がある。しかしながら、振り分け不可能な出力先から変更された振り分け可能な出力先の負荷が高くなる場合がある。
【０００８】
特許文献２の技術では、振り分け不可能となった出力先が２つ以上になると、障害となっている出力先に振り分ける場合がある。
【０００９】
本発明は、上記した課題を踏まえ、振り分け不可能となった複数の出力先に対して、振り分けを防止し、偏りのない振り分けができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【００１１】
［適用例１］  適用例１のパケット振り分け方法は、受信されたパケットに関連付けられた宛先情報に基づいて、複数Ｎの出力先から振り分け不可能となった複数ｘの出力先を除いた複数Ｎ−ｘの出力先の中から前記受信パケットを送信すべき１つの出力先を選択する不活性対応振り分け工程を備えることを特徴とする。もしくは、上記パケット振り分け方法の各工程を実施するネットワーク接続装置を提供することができる。
【００１２】
適用例１のパケット振り分け方法及び装置によれば、振り分けテーブルの書き換え不要で、障害などにより振り分け不可能となった複数の出力先への振り分けを防止し、振り分け先の負荷分散を行うことができる。
【００１３】
［適用例２］  適用例２のパケット振り分け方法は、適用例１に記載のパケット振り分け方法であって、複数Ｎの出力先の中から前記受信パケットを送信すべき１つの出力先を選択する通常振り分け工程を含むとしても良い。もしくは、上記パケット振り分け方法の各工程を実施するネットワーク接続装置を提供することができる。
【００１４】
適用例２のパケット振り分け方法及び装置によれば、通常振り分け部での出力先が振り分け可能であった場合は、通常振り分け部の結果を使用することにより、振り分け不可能となった出力先へのフロー以外は出力先が変化することなく、振り分け不可能となったフローのみを振り分け可能な出力先に切り替えることができる。
【００１５】
［適用例３］  適用例３のパケット振り分け方法は、適用例１に記載のパケット振り分け方法であって、複数Ｎとは別の複数Ｍの出力先の中から前記受信パケットを送信すべき１つの出力先を選択する通常振り分け工程を含むとしても良い。もしくは、上記パケット振り分け方法の各工程を実施するネットワーク接続装置を提供することができる。
【００１６】
適用例３のパケット振り分け方法及び装置によれば、通常振り分け部での出力先が振り分け不可能であった場合は、切り替え時振り分け出力先の中から出力先を選択することにより、通常時振り分け出力先と切り替え時振り分け出力先を異なる出力先に分けることができる。
【００１７】
本発明の形態は、パケット振り分け方法及び装置に限るものではなく、例えば、パケット振り分け装置とは異なる他のネットワーク機器、パケット振り分け装置の機能をコンピュータに実現させるためのプログラムなどの他の形態に適用することもできる。また、本発明は、前述の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。
【発明の効果】
【００１８】
振り分けテーブルの書き換えが不要で、振り分け不可能となった複数の出力先への振り分けを抑止し、更に振り分け切り替え後の負荷分散を行うことにより、障害時高速切替可能なパケット振り分け方法及び装置を実現することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施例としてのスイッチ装置を用いたネットワークシステムを示す構成図である。
【図２】スイッチ装置の構成を示す説明図である。
【図３】第１の実施例における出力先決定部の構成を示す説明図である。
【図４】宛先テーブルと振り分けテーブルと出力先状態テーブルとを示す説明図である。
【図５】宛先検索処理を示すフローチャートである。
【図６】第１の実施例における出力先選択処理を示すフローチャートである。
【図７】第１の実施例における出力先選択番号ビットマップと不活性対応振り分け出力先選択番号とハッシュ値との関係を示す説明図である。
【図８】第２の実施例における出力先決定部の構成を示す説明図である。
【図９】第２の実施例における出力先選択処理を示すフローチャートである。
【図１０】第２の実施例における通常振り分け出力先選択番号とハッシュ値との関係を示す説明図である。
【図１１】第２の実施例における不活性対応振り分け出力先選択番号とハッシュ値との関係を示す説明図である。
【図１２】第２の実施例における出力先選択番号ビットマップとハッシュ値との関係を示す説明図である。
【図１３】第３の実施例における出力先決定部の構成を示す説明図である。
【図１４】第３の実施例における振り分けテーブルを示す説明図である。
【図１５】第３の実施例における出力先選択処理を示すフローチャートである。
【図１６】第３の実施例における不活性対応振り分け出力先選択番号とハッシュ値との関係を示す説明図である。
【図１７】第３の実施例における出力先選択番号ビットマップとハッシュ値との関係を示す説明図である。
【発明を実施するための形態】
【００２０】
以上説明した本発明の構成及び作用を一層明らかにするために、以下本発明を適用したネットワーク接続装置について説明する。
【００２１】
Ａ．第１の実施例：
Ａ１．ネットワーク接続装置の構成：
図１は、本発明の一実施例としてのスイッチ装置を用いたネットワークシステムを示す説明図である。このネットワークシステム１０は、４つのスイッチ装置ＳＷ１０〜ＳＷ４０を有している。スイッチ装置ＳＷ１０〜ＳＷ４０は、ネットワークシステム１０における複数の通信経路を相互に接続する接続装置である。図１の例では、これらのスイッチ装置ＳＷ１０〜ＳＷ４０は、いずれも、いわゆる「レイヤ２スイッチ」として機能している。
【００２２】
第１スイッチ装置ＳＷ１０には、３つのスイッチ装置ＳＷ２０、ＳＷ３０、ＳＷ４０が接続されている。第１スイッチ装置ＳＷ１０と第２スイッチ装置ＳＷ２０とは、８本の回線Ｌ１１〜Ｌ１８によって接続されている。また、第１スイッチ装置ＳＷ１０と第３スイッチ装置ＳＷ３０とは、４本の回線Ｌ３１〜Ｌ３４によって接続され、第１スイッチ装置ＳＷ１０と第４スイッチ装置ＳＷ４０とは、１本の回線Ｌ４１によって接続されている。
【００２３】
各スイッチ装置ＳＷ１０〜ＳＷ４０は、回線との接続のための物理ポートを有している。図１では、物理ポートを識別する物理ポート番号が、記号「＃」と番号との組み合わせによって示されている。例えば、回線Ｌ１１は、第１スイッチ装置ＳＷ１０の第１物理ポート（＃１）と、第２スイッチ装置ＳＷ２０の第２物理ポート（＃２）とに、接続されている。なお、物理ポート番号は、１つのスイッチ装置内で重複の無い、物理ポートに固有な番号である。すなわち、１つのスイッチ装置内では、各物理ポートは、物理ポート番号によって一意的に識別される。
【００２４】
ところで、第１スイッチ装置ＳＷ１０と第２スイッチ装置ＳＷ２０とは、８本の回線Ｌ１１〜Ｌ１８によって接続されている。これらの８本の回線Ｌ１１〜Ｌ１８は、イーサネット（登録商標）におけるリンクアグリゲーション機能によって、仮想的な１本の回線として利用される。リンクアグリゲーション機能とは、複数の物理ポートを集約して仮想的な１つのポート（「論理ポート」とも呼ばれる）として利用する機能である。このリンクアグリゲーション機能は、帯域の拡大や冗長性の確保を実現するために利用される。図１の例では、第１スイッチ装置ＳＷ１０の８つの物理ポート＃１〜＃８が、リンクアグリゲーション機能によって、１つの論理ポートとして利用される。そして、これらのポート＃１〜＃８の接続相手である第２スイッチ装置ＳＷ２０の８つの物理ポート＃２〜＃９も、リンクアグリゲーション機能によって、１つの論理ポートとして利用される。例えば、第１スイッチ装置ＳＷ１０は、第１３物理ポート（＃１３）から受信したパケットの出力先が物理ポート＃１〜＃８を集約した１つの論理ポート（ＬＡ０）である場合、物理ポート＃１〜＃８のいずれかを出力先として決定し、受信したパケットを振り分ける。
【００２５】
以下、リンクアグリゲーション機能によって構成される論理ポート、及び、いずれの論理ポートにも含まれていない物理ポート（以下「単独物理ポート」とも呼ぶ）、のそれぞれのことを「回線ポート」とも呼ぶ。すなわち、スイッチ装置ＳＷにおいては、回線ポートは、独立な１本の回線（仮想的な１本の回線を含む）が接続されるポートとして利用される。
【００２６】
図２は、スイッチ装置ＳＷの構成を示す説明図である。ここで、スイッチ装置ＳＷを主に図１に示す第１のスイッチ装置ＳＷ１０の構成として説明するが、第２〜第４のスイッチ装置ＳＷ２０〜ＳＷ４０も同じ構成である。このスイッチ装置ＳＷは、パケット受信回路／送信回路１００（以下、「インターフェース回路１００」とも呼ぶ）と、ヘッダ処理部２００と、メモリ３００と、を有している。これらの構成要素１００、２００、３００は、図示しないバスによって接続されている。
【００２７】
インターフェース回路１００は、パケットの受信及び送信を行う電子回路であり、回線を接続するための複数の物理ポートを有している。
【００２８】
ヘッダ処理部２００は、受信されたパケットを送信すべき物理ポート（以下「出力物理ポート」とも呼ぶ）を決定する処理（「宛先検索処理」とも呼ぶ）を実行する。ヘッダ処理部２００は、後述する種々の機能を実現するために設計されたＡＳＩＣ（Application Specific Integrated Circuit：特定用途向け集積回路）である。また、このヘッダ処理部２００は、データ検索部２１０と、振り分け出力先検索部２２０と、出力先状態監視部２３０と、ハッシュ値生成部２４０と、出力先決定部２５０と、を有している。
【００２９】
メモリ３００は、宛先検索処理に利用される種々のデータを格納する。図２の例では、メモリ３００は、宛先テーブル３１０と、振り分けテーブル３２０と、出力先状態テーブル３３０と、を格納している。これらのテーブルは、出力先の決定に利用される（詳細は後述）。
【００３０】
図３は、出力先決定部２５０の詳細な構成を示す説明図である。第１の実施例では、出力先決定部２５０は、不活性対応振り分け部２６０と、デコーダ２６１と、ビットシフト演算器２６２と、選択制御部２７０と、を有する。
【００３１】
図４（ａ）は、宛先テーブル３１０の一例を示す説明図である。宛先テーブル３１０は、ＶＬＡＮ−ＩＤと、回線ポート番号と、その回線ポート番号に対応する回線ポートに接続されたネットワーク機器のレイヤ２のアドレス（ＭＡＣアドレス）と、の対応関係を格納する。
【００３２】
ＶＬＡＮ−ＩＤは、ＶＬＡＮ（仮想ＬＡＮ（仮想ローカルエリアネットワーク））の識別番号である。ＶＬＡＮは、レイヤ２レベルで互いに通信可能な１以上の回線ポートで構成されるグループを表している。すなわち、第１実施例では、データ検索部２１０は、異なるＶＬＡＮの間ではパケットを中継せずに、同じＶＬＡＮに属している回線ポートの間でのみパケットを中継する。このように、複数の回線ポートを複数のＶＬＡＮに分割すれば、意図しない回線ポート（他のＶＬＡＮ）に通信負荷が広がることを抑制できる。すなわち、複数の物理ポートによって構成されるネットワークを仮想的な部分ネットワーク（「ネットワークセグメント」とも呼ばれる）に分割することができる。
【００３３】
図４（ａ）の例では、第０論理ポート（ＬＡ＃０）及び第１論理ポート（ＬＡ＃１）及び第１３物理ポート（Ｐｏｒｔ＃１３）のそれぞれのＶＬＡＮ−ＩＤが「１０」に設定されている。ヘッダ処理部２００は、回線ポート番号とＶＬＡＮ−ＩＤとの対応関係を、ユーザの指示に従って設定する。ユーザの指示は、例えば、スイッチ装置ＳＷの操作パネル（図示せず）、あるいは、スイッチ装置ＳＷに接続された管理端末（図示せず）を介して入力され得る。
【００３４】
なお、１台のスイッチ装置で利用されるＶＬＡＮの総数としては「１」に限らず任意の数を採用可能である。また、ＶＬＡＮ−ＩＤとしては、「１０」に限らず任意の番号を採用可能である。
【００３５】
また、この宛先テーブル３１０の回線ポート番号とＭＡＣアドレスとの対応関係は、データ検索部２１０によって自動的に設定される。具体的には、データ検索部２１０は、スイッチ装置ＳＷによって受信されたパケットのヘッダ情報を参照することによって、送信元ＭＡＣアドレスを取得する。そして、データ検索部２１０は、送信元ＭＡＣアドレスと、そのパケットを受信した回線ポートと、の対応関係を宛先テーブル３１０に登録する。パケットを受信した物理ポートが単独物理ポートである場合には、物理ポート番号が登録される。パケットを受信した物理ポートが論理ポートに含まれている場合には、その論理ポートに固有なリンクアグリゲーション番号（「ＬＡ番号」あるいは「振り分け番号」とも呼ぶ）が登録される。図４（ａ）の例では、第０論理ポート（ＬＡ＃０）と第１アドレス（address1）との対応関係と、第１論理ポート（ＬＡ＃１）と第２アドレス（address2）との対応関係と、第１３物理ポート（Ｐｏｒｔ＃１３）と第３アドレス（address3）との対応関係と、が登録されている。
【００３６】
なお、１つの回線ポートには、複数のネットワーク機器が接続され得る。この場合には、１つの回線ポート番号に関連して複数のＭＡＣアドレスが登録され得る。また、宛先テーブル３１０には、さらに、登録されたデータの有効期限を定める期限情報を登録してもよい。有効期限の過ぎたデータを宛先テーブル３１０から削除すれば、ネットワーク構成の変化に応じて宛先テーブル３１０を更新することが容易となる。また、メモリ３００の利用効率を向上させることもできる。このような有効期限としては、登録されてから所定時間の経過時を採用可能である。なお、論理ポートに含まれる物理ポートに関しても、ＬＡ番号の代わりに物理ポート番号を登録してもよい。
【００３７】
図４（ｂ）は、振り分けテーブル３２０の一例を示す説明図である。振り分けテーブル３２０は、論理ポートを定義するテーブルである。振り分けテーブル３２０は、論理ポートに固有なＬＡ番号と、その論理ポートに含まれる振り分け出力先の総数と、その論理ポートに含まれる物理ポートと、の対応関係を定めている。図４（ｂ）に示す例では、第１物理ポート（Ｐｏｒｔ＃１）から第８物理ポート（Ｐｏｒｔ＃８）までの８つの物理ポートの全体が、仮想的な１つのポート（論理ポート）として利用される。そして、その論理ポートのＬＡ番号が「０」に設定されている。
【００３８】
なお、１つの論理ポートに含まれる複数の物理ポートのそれぞれには、各物理ポートを特定するための選択番号が付される。選択番号は０から始まる整数値である。図４（ｂ）の例では、第１物理ポート＃１の選択番号が「０」に設定され、第２物理ポート＃２の選択番号が「１」に設定されている。この選択番号は、後述する出力先選択処理で利用される。
【００３９】
ヘッダ処理部２００は、振り分けテーブル３２０の各項目の値を、宛先テーブル３１０と同様に、ユーザの指示に従って設定する。なお、１つの論理ポートに含まれる物理ポートの総数としては、「８」に限らず、任意の数を採用可能である。また、１台のスイッチ装置ＳＷで利用される論理ポートの総数としては、「１」に限らず、任意の数を採用可能である。
【００４０】
図４（ｃ）は、出力先状態テーブル３３０の一例を示す説明図である。出力先状態テーブル３３０は、出力先の活性状態（リンクアップ状態）を格納するテーブルである。出力先である物理ポートの物理ポート番号（出力先番号）毎に出力先状態を管理している。出力先状態が「１」は活性（リンクアップ）であることを、「０」は不活性（リンクダウン）であることを意味する。図４（ｃ）に示す例では、第２物理ポート（Ｐｏｒｔ＃２）及び第５物理ポート（Ｐｏｒｔ＃５）の状態が「０」に設定されている。ヘッダ処理部２００は、出力先状態テーブル３３０の出力先の活性状態を、宛先テーブル３１０と同様に、ユーザの指示に従って設定する。
【００４１】
また、この出力先状態テーブル３３０の出力先の活性状態（リンクアップ状態）は、出力先状態監視部２３０によって自動的に設定される。出力先状態監視部２３０は、物理ポートの活性状態（リンクアップ状態）を常に監視し、活性状態の変化には、瞬時に対応する。
【００４２】
Ａ２．宛先検索処理：
図５は、スイッチ装置ＳＷのヘッダ処理部２００が実行する宛先検索処理（ステップＳ５０）を示すフローチャートである。最初のステップＳ５００では、データ検索部２１０は、インターフェース回路１００から受信した受信パケットのヘッダ情報と、宛先テーブル３１０とを参照することによって、受信パケットを送信すべき回線ポートを検索する。具体的には、データ検索部２１０は、ヘッダ情報から宛先ＭＡＣアドレスを取得し、その宛先ＭＡＣアドレスの属する回線ポートを宛先テーブル３１０から検索する。この際、パケットを受信した回線ポートと同じＶＬＡＮに含まれる回線ポートの中から回線ポートが検索される。すなわち、異なるＶＬＡＮからは回線ポートは検索されない。データ検索部２１０は、宛先検索結果として、受信パケットの出力先である回線ポートを振り分け出力先検索部２２０およびハッシュ値生成部２４０および出力先決定部２５０に通知する。
【００４３】
なお、検索された回線ポートと、そのパケットを受信した回線ポートとが同じである場合には、パケットの中継が不要であるので、データ検索部２１０はパケットの送信を中止する。また、宛先テーブル３１０から回線ポートが検索されなかった場合には、データ検索部２１０は、そのパケットを受信した回線ポート以外の全ての回線ポートを、パケットを送信すべき回線ポートとして選択する（「フラッディング」とも呼ばれる）。ただし、この場合には、パケットを受信した回線ポートと同じＶＬＡＮに含まれる回線ポートのみが選択される。
【００４４】
次のステップＳ５０１では、出力先決定部２５０は、データ検索部２１０から通知された回線ポートが論理ポート（リンクアグリゲーションポート）と通常ポート（単独物理ポート）とのいずれであるかを判定する。検索された回線ポートが通常のポート（単独物理ポート）である場合には（ステップＳ５０１のＮＯ）、出力先決定部２５０は、その物理ポートを出力物理ポートとして採用する（ステップＳ５０６）。
【００４５】
通知された回線ポートが論理ポートである場合には（ステップＳ５０１のＹＥＳ）、次のステップＳ５０２で、ハッシュ値生成部２４０は、インターフェース回路１００から受信した受信パケットのヘッダ情報、及び、データ検索部２１０から通知された宛先検索結果（回線ポート）に基づいて、ハッシュ値を算出し、出力先決定部２５０に通知する。ハッシュ値は、ハッシュ値の算出に利用されるデータ（種情報）に応じて、種々の値となり得る。具体的には、ハッシュ値生成部２４０は、種情報を、８ビット毎に区切る。そして、ハッシュ値生成部２４０は、８ビットのデータの全てを加算する。この際、桁上げは省略される。そして、ハッシュ値生成部２４０は、８ビットの加算結果のビットの並び順番を逆にした値をハッシュ値として採用する。こうして得られたハッシュ値は８ビットのデータであり、その値域は０〜２５５である。また、ハッシュ値が、送信元を表すデータ（ＭＡＣアドレス、ＩＰアドレス、Ｌ４ポート、受信ＶＬＡＮ）と、宛先を表すデータ（ＭＡＣアドレス、ＩＰアドレス、Ｌ４ポート、送信ＶＬＡＮ）とに基づいて算出される。従って、送信元と宛先との組み合わせ（フロー）に応じて、通信負荷（出力物理ポート）を分散させることができる。
【００４６】
次のステップＳ５０３では、振り分け出力先検索部２２０は、データ検索部２１０から通知された回線ポート（論理ポート）の振り分け番号（ＬＡ番号）と、振り分けテーブル３２０とを参照することによって、その論理ポートに含まれる振り分け出力先の総数と、その論理ポートに含まれる物理ポート番号を検索する。振り分け出力先検索部２２０は、検索した論理ポートに含まれる振り分け出力先の総数と物理ポート番号を出力先状態監視部２３０と出力先決定部２５０に通知する。
【００４７】
次のステップＳ５０４では、出力先状態監視部２３０は、振り分け出力先検索部２２０から通知された振り分け出力先の物理ポート番号と、出力先状態テーブル３３０とを参照することによって、出力先物理ポートの活性状態（リンクアップ状態）を検索する。そして、出力先物理ポートのうちで不活性な物理ポートの数を示す不活性出力先数及び出力先物理ポート毎の活性／不活性の状態を示す出力先状態ビットマップを生成する。出力先状態監視部２３０は生成した不活性出力先数と出力先状態ビットマップを出力先決定部２５０に通知する。
【００４８】
次のステップＳ５０５で、出力先決定部２５０は、その論理ポートに含まれる複数の物理ポートの中から１つの物理ポートを選択する。そして、選択された物理ポートが出力物理ポートとして採用される（ステップＳ５０６）。物理ポートの選択には、ハッシュ値生成部２２０によって生成されたハッシュ値、及び、出力先状態監視部２３０によって検索された出力先物理ポートの活性状態を示す情報などが利用される。
【００４９】
出力物理ポートが決定されたら、ヘッダ処理部２００は、出力情報（出力物理ポート）をインターフェース回路１００に通知する。インターフェース回路１００は、通知された出力物理ポートからパケットを送信する。
【００５０】
図６は、第１の実施例における、出力先決定部２５０がステップＳ５０５において実行する出力先選択処理（ステップＳ６０）を示すフローチャートである。最初のステップＳ６００では、不活性対応振り分け部２６０は、図７（ａ）に示す関係式に従って、ハッシュ値生成部２４０から通知されたハッシュ値と、振り分け出力先検索部２２０から通知された振り分け出力先総数Ｎ（振り分け数Ｎ）と、出力先状態監視部２３０から通知された不活性出力先数ｘとを用いて、振り分け出力先物理ポートの選択番号を生成し、デコーダ２６１に通知する。この選択番号は、０〜Ｎ−ｘ−１の範囲の値である。具体的には、不活性対応振り分け部２６０は、まず、この関係式に従い、「ハッシュ値＊（振り分け出力先総数Ｎ−不活性出力先数ｘ）」を２５６で割ることによって商を算出する。「２５６」は、ハッシュ値の値域の大きさである。つまり、ハッシュ値と選択番号の関係は、ハッシュ値をＮ―ｘ個の領域に分割し、０〜Ｎ−ｘ−１の選択番号を順に割り当てるということである。
【００５１】
図７（ｂ）は、ハッシュ値と選択番号との関係を示す説明図である。図７（ｂ）には、論理ポートに含まれる物理ポートの総数Ｎが８で、不活性出力先数ｘが２の場合の例が示されている。この場合には、「ハッシュ値＊（振り分け出力先総数Ｎ−不活性出力先数ｘ）」は、０〜１５３０の範囲の値である。従って、商は、０〜５のいずれかである。具体的には、ハッシュ値が０〜４２の範囲内である場合には、選択番号が０である。ハッシュ値が４３〜８５の範囲内である場合には、選択番号が１である。ハッシュ値が８６〜１２７の範囲内である場合には、選択番号が２である。ハッシュ値が１２８〜１７０の範囲内である場合には、選択番号が３である。ハッシュ値が１７１〜２１３の範囲内である場合には、選択番号が４である。ハッシュ値が２１４〜２５５の範囲内である場合には、選択番号が５である。つまり、ハッシュ値を活性出力先数である「Ｎ−ｘ」個の選択番号のいずれかに対応させているのである。
【００５２】
次のステップＳ６０１では、デコーダ２６１は、不活性対応振り分け部２６０から通知された振り分け出力先選択番号を、Ｎビットの選択番号ビットマップにデコードし、ビットシフト演算器２６２に通知する。
【００５３】
ビットシフト演算器２６２は、出力先状態ビットマップを参照し、デコーダ２６１から通知された選択番号ビットマップをビットシフト演算することにより、不活性出力先を選択しない選択番号ビットマップを生成する。具体的には、ビットシフト演算器２６２は、まず、ビットマップ参照位置ｉを０に設定し（ステップＳ６０２）、ビットマップ参照位置ｉと出力先状態ビットマップより、対応する出力先状態が活性と不活性とのいずれであるかを判定する（ステップＳ６０３）。その出力先が活性である場合には、参照位置ｉに１加算し、次の参照位置の処理に移行する（ステップＳ６０６）。その出力先が不活性である場合には、ビットシフト後の選択番号ビットマップ(ｉ＋１)〜(Ｎ−１)が、ビットシフト前の選択番号ビットマップ(ｉ)〜(Ｎ−２)になるように１ビットシフトする（ステップＳ６０４）。そして、選択番号ビットマップの現在の参照位置ｉの位置に０を挿入し（ステップＳ６０５）、参照位置ｉに１加算し、次の参照位置の処理に移行する（ステップＳ６０６）。参照位置を移行した後、参照位置が途中と最後とのいずれかであったかを判定をする（ステップＳ６０７）。参照位置ｉがＮより小さい場合には、参照位置が途中であったので、出力先状態の判定（ステップＳ６０３）からの処理を繰り返し実行する。参照位置ｉがＮと等しい場合は、参照位置が最後であったので、ビットシフト演算器２６２は、出力先を選択するための選択番号ビットマップを確定する。ビットシフト演算器２６２は、確定した選択番号ビットマップを選択制御部２７０に通知する。
【００５４】
図７（ｃ）は、選択番号と選択番号ビットマップとの関係を示す説明図である。図７（ｃ）には、論理ポートに含まれる物理ポートの総数Ｎが８で、不活性出力先数ｘが２で、選択番号１と４に対応する出力先の状態が不活性である場合の例が示されている。この場合には、シフト前選択番号ビットマップは、０〜５の選択番号を８ビットのビットマップにデコードしたものであり、シフト後選択番号ビットマップは、シフト前選択番号ビットマップのビット１と４の位置に「０」を挿入し、ビットシフト演算したものである。従って、シフト後選択番号ビットマップでは、ビット１と４が「１」となることはない。なお、図７（ｃ）において、値の先頭に付された符号「０ｂ」は、その値が２進法で表されていることを示している。また、ビットマップのＭＳＢ（最上位ビット）が、ビット０に対応している。他の図面においても同様である。ここでは、符号「０ｂ」以降の８ビットのビットマップの各ビットにおいて、「０」を非出力先を示す情報、「１」を出力先を示す情報として説明したが、逆の意味で「０」と「１」を用いてもよい。
【００５５】
次のステップＳ６０８で、選択制御部２７０は、ビットシフト演算器２６２から通知された選択番号ビットマップに基づいて、振り分け出力先検索部２２０から通知された複数の物理ポート（Ｎ個の出力先情報）の中から１つの物理ポートを選択する。具体的に図７（ｃ）のシフト後選択番号ビットマップに基づいて、図４（ｂ）の振り分けテーブル３２０の第０論理ポート（ＬＡ＃０）の出力先を選択する場合について説明する。シフト後選択番号ビットマップのビット０が１である場合は、第１物理ポート（Ｐｏｒｔ＃１）を選択する。シフト後選択番号ビットマップのビット２が１である場合は、第３物理ポート（Ｐｏｒｔ＃３）を選択する。シフト後選択番号ビットマップのビット３が１である場合は、第４物理ポート（Ｐｏｒｔ＃４）を選択する。シフト後選択番号ビットマップのビット５が１である場合は、第６物理ポート（Ｐｏｒｔ＃６）を選択する。シフト後選択番号ビットマップのビット６が１である場合は、第７物理ポート（Ｐｏｒｔ＃７）を選択する。シフト後選択番号ビットマップのビット７が１である場合は、第８物理ポート（Ｐｏｒｔ＃８）を選択する。
【００５６】
Ａ３．効果：
以上説明した第１の実施例におけるスイッチ装置ＳＷによれば、障害などにより振り分け不可能となった出力先が発生し、振り分け先の切り替えが必要となった場合においても、振り分けテーブルの書き換えが不要となる。その結果、テーブル書き換えのためのリソースを削減することができる。
【００５７】
また、スイッチ装置ＳＷでは、複数出力先の活性状態を常に監視し、活性状態の変化には、瞬時に対応することにより、障害などにより振り分け不可能となった複数の出力先への振り分けを防止することができる。
【００５８】
つまり、複数の出力先が障害になったとしても、振り分けテーブルの書き換えを行うことなく、振り分け先の切り替えを行うことができる。
【００５９】
また、スイッチ装置ＳＷでは、送信元と宛先との組み合わせに応じたハッシュ値と、振り分け出力先総数と、不活性出力先数と、を用いて振り分け出力先を選択することにより、振り分け先切り替え後の振り分け先の負荷分散を行うことができる。
【００６０】
Ｂ．第２の実施例：
Ｂ１．ネットワーク接続装置の構成：
第２の実施例における、ネットワークシステムの構成は、スイッチ装置ＳＷにおける出力先決定部２５０の機能構成が異なる点を除き、第１の実施例と同様である。
【００６１】
図８は、第２の実施例における、出力先決定部２５０の詳細な構成を示す説明図である。第２の実施例における、出力先決定部２５０は、第１の実施例と同様に、不活性対応振り分け部２６０と、デコーダ２６１と、ビットシフト演算器２６２と、選択制御部２７０と、を有する。第２の実施例では、出力先決定部２５０は、さらに、通常振り分け部２８０とデコーダ２８１を有する。
【００６２】
Ｂ２．宛先検索処理：
第２の実施例における、スイッチ装置ＳＷのヘッダ処理部２００が実行する宛先検索処理は、出力先決定部２５０が実行する出力先選択処理が異なる点を除き、第１の実施例と同様である。
【００６３】
図９は、第２の実施例における、出力先決定部２５０がステップＳ５０５において実行する出力先選択処理（ステップＳ９０）を示すフローチャートである。最初のステップＳ９００では、通常振り分け部２８０は、図１０（ａ）に示す関係式に従って、ハッシュ値と、振り分け出力先総数Ｎとを用いて、振り分け出力先物理ポートの選択番号を生成する。なお、このステップ９００で生成した選択番号のことを「通常振り分け選択番号」ともいう。この通常振り分け選択番号は、０〜Ｎ−１の範囲の値である。具体的には、通常振り分け部２８０は、まず、この関係式に従い、「ハッシュ値＊振り分け出力先総数Ｎ」を２５６で割ることによって商を算出する。「２５６」は、ハッシュ値の値域の大きさである。つまり、ハッシュ値と通常振り分け選択番号の関係は、ハッシュ値をＮ個の領域に分割し、０〜Ｎ−１の通常振り分け選択番号を順に割り当てるということである。
【００６４】
図１０（ｂ）は、ハッシュ値と通常振り分け選択番号との関係を示す説明図である。図１０（ｂ）には、論理ポートに含まれる物理ポートの総数Ｎが８の場合の例が示されている。この場合には、「ハッシュ値＊振り分け出力先総数Ｎ」は、０〜２０４０の範囲の値である。従って、商は、０〜７のいずれかである。具体的には、ハッシュ値が０〜３１の範囲内である場合には、通常振り分け選択番号が０である。ハッシュ値が３２〜６３の範囲内である場合には、通常振り分け選択番号が１である。ハッシュ値が６４〜９５の範囲内である場合には、通常振り分け選択番号が２である。ハッシュ値が９６〜１２７の範囲内である場合には、通常振り分け選択番号が３である。ハッシュ値が１２８〜１５９の範囲内である場合には、通常振り分け選択番号が４である。ハッシュ値が１６０〜１９１の範囲内である場合には、通常振り分け選択番号が５である。ハッシュ値が１９２〜２２３の範囲内である場合には、通常振り分け選択番号が６である。ハッシュ値が２２４〜２５５の範囲内である場合には、通常振り分け選択番号が７である。つまり、ハッシュ値を振り分け出力先総数であるＮ個の通常振り分け選択番号のいずれかに対応させているのである。
【００６５】
次のステップＳ９０１では、デコーダ２８１は、通常振り分け部２８０から通知された通常振り分け選択番号を、Ｎビットの選択番号ビットマップにデコードし、選択制御部２７０に通知する。
【００６６】
次のステップＳ９０２では、選択制御部２７０は、出力先状態監視部２３０から通知された出力先状態ビットマップと、デコーダ２８１から通知された選択番号ビットマップとにより選択された出力先の状態が、活性と不活性とのいずれであるかを判定する。選択された出力先が活性である場合には（ステップＳ９０２のＹＥＳ）、選択制御部２７０は、その出力先を出力先選択処理の結果とする（ステップＳ９１１）。
【００６７】
選択された出力先が不活性である場合には（ステップＳ９０２のＮＯ）、次のステップＳ９０３で、不活性対応振り分け部２６０は、図１１（ａ）に示す関係式に従って、ハッシュ値と、通常振り分け選択番号と、振り分け出力先総数Ｎと、不活性出力先数ｘとを用いて、振り分け出力先物理ポートの選択番号を生成する。なお、このステップ９０３で生成した選択番号のことを「不活性対応振り分け選択番号」ともいう。この不活性対応振り分け選択番号は、０〜Ｎ−ｘ−１の範囲の値である。具体的には、不活性対応振り分け部２６０は、まず、この関係式に従い、「（ハッシュ値―通常振り分け選択番号＊２５６／振り分け出力先総数Ｎ）＊（振り分け出力先総数Ｎ−不活性出力先数ｘ）」を「２５６／振り分け出力先総数Ｎ」で割ることによって商を算出する。「２５６」は、ハッシュ値の値域の大きさである。つまり、ハッシュ値と不活性対応振り分け選択番号の関係は、ハッシュ値をＮ個の領域に分割し、さらに、Ｎ個の領域に分割した各領域の中をＮ−ｘの領域に分割し、０〜Ｎ−ｘ−１の不活性対応振り分け選択番号を順に割り当てるということである。
【００６８】
図１１（ｂ）は、ハッシュ値と不活性対応振り分け選択番号との関係を示す説明図である。図１１（ｂ）には、論理ポートに含まれる物理ポートの総数Ｎが８で、不活性出力先数ｘが２の場合の例が示されている。この場合には、「（ハッシュ値―通常振り分け選択番号＊２５６／振り分け出力先総数Ｎ）＊（振り分け出力先総数Ｎ−不活性出力先数ｘ）」は、０〜１８６の範囲の値である。従って、商は、０〜５のいずれかである。つまり、０〜２５５のハッシュ値を８つの領域に分割し、さらに８つに分割した各領域の中を６つの領域に分割し、０〜５の不活性対応振り分け選択番号を順に割り当てる。つまり、ハッシュ値を活性出力先数である「Ｎ−ｘ」個の不活性対応振り分け選択番号のいずれかに対応させているのである。
【００６９】
次のステップＳ９０４では、デコーダ２６１は、不活性対応振り分け部２６０から通知された不活性対応振り分け選択番号を、Ｎビットの選択番号ビットマップにデコードし、ビットシフト演算器２６２に通知する。
【００７０】
ビットシフト演算器２６２は、出力先状態ビットマップを参照し、デコーダ２６１から通知された選択番号ビットマップをビットシフト演算することにより、不活性出力先を選択しない選択番号ビットマップを生成する。具体的には、ビットシフト演算器２６２は、まず、ビットマップ参照位置ｉを０に設定し（ステップＳ９０５）、ビットマップ参照位置ｉと出力先状態ビットマップより、対応する出力先状態が活性と不活性とのいずれであるかを判定する（ステップＳ９０６）。その出力先が活性である場合には、参照位置ｉに１加算し、次の参照位置の処理に移行する（ステップＳ９０９）。その出力先が不活性である場合には、ビットシフト後の選択番号ビットマップ(ｉ＋１)〜(Ｎ−１)が、ビットシフト前の選択番号ビットマップ(ｉ)〜(Ｎ−２)になるように１ビットシフトする（ステップＳ９０７）。そして、選択番号ビットマップの現在の参照位置ｉの位置に０を挿入し（ステップＳ９０８）、参照位置ｉに１加算し、次の参照位置の処理に移行する（ステップＳ９０９）。参照位置を移行した後、参照位置が途中と最後とのいずれかであったかを判定をする（ステップＳ９１０）。参照位置ｉがＮより小さい場合には、参照位置が途中であったので、出力先状態の判定（ステップＳ９０６）からの処理を繰り返し実行する。参照位置ｉがＮと等しい場合は、参照位置が最後であったので、ビットシフト演算器２６２は、出力先を選択するための選択番号ビットマップを確定する。ビットシフト演算器２６２は、確定した選択番号ビットマップを選択制御部２７０に通知する。
【００７１】
図１２は、ハッシュ値と選択番号と選択番号ビットマップとの関係を示す説明図である。図１２には、論理ポートに含まれる物理ポートの総数Ｎが８で、不活性出力先数ｘが２で、選択番号１と４に対応する出力先の状態が不活性である場合の例が示されている。この場合には、通常振り分け選択番号ビットマップ（デコーダ２８１が生成する選択番号ビットマップ）は、０〜７の通常振り分け選択番号を８ビットのビットマップにデコードしたものであり、選択番号０、２、３、５、６、７に対応する出力先は活性であるため、これに対応する選択番号ビットマップが出力先を選択するための選択番号ビットマップとなる。選択番号１、４に対応する出力先は不活性であるため、不活性対応振り分け選択番号を生成する。シフト前選択番号ビットマップは、０〜５の不活性対応振り分け選択番号を８ビットのビットマップにデコードしたものであり、シフト後選択番号ビットマップは、シフト前選択番号ビットマップのビット１と４の位置に０を挿入し、ビットシフト演算したものである。従って、シフト後選択番号ビットマップでは、ビット１と４が１となることはない。
【００７２】
次のステップＳ９１１で、選択制御部２７０は、ビットシフト演算器２６２から通知された選択番号ビットマップにより、振り分け出力先検索部２２０から通知された複数の物理ポートの中から１つの物理ポートを選択する。具体的に図１２のシフト後選択番号ビットマップに基づいて、図４（ｂ）の振り分けテーブル３２０の第０論理ポート（ＬＡ＃０）の出力先を選択する場合について説明する。シフト後選択番号ビットマップのビット０が１である場合は、第１物理ポート（Ｐｏｒｔ＃１）を選択する。シフト後選択番号ビットマップのビット２が１である場合は、第３物理ポート（Ｐｏｒｔ＃３）を選択する。シフト後選択番号ビットマップのビット３が１である場合は、第４物理ポート（Ｐｏｒｔ＃４）を選択する。シフト後選択番号ビットマップのビット５が１である場合は、第６物理ポート（Ｐｏｒｔ＃６）を選択する。シフト後選択番号ビットマップのビット６が１である場合は、第７物理ポート（Ｐｏｒｔ＃７）を選択する。シフト後選択番号ビットマップのビット７が１である場合は、第８物理ポート（Ｐｏｒｔ＃８）を選択する。
【００７３】
Ｂ３．効果：
以上説明した第２の実施例におけるスイッチ装置ＳＷによれば、第１実施例のスイッチ装置ＳＷと同様の作用・効果を得ることができる。
【００７４】
さらに、スイッチ装置ＳＷでは、振り分けを行う上で、振り分け不可能とならない限り、同一フローは同じ出力先に振り分ける場合において、振り分け不可能となったフロー以外のフローは、出力先が変化することなく、振り分け不可能となったフローのみを、振り分け可能な出力先に、振り分けするよう切り替えることができる。
【００７５】
Ｃ．第３の実施例：
Ｃ１．ネットワーク接続装置の構成：
第３の実施例における、ネットワークシステムの構成は、スイッチ装置ＳＷにおける出力先決定部２５０と振り分けテーブル３２０の機能構成が異なる点を除き、第２の実施例と同様である。
【００７６】
図１３は、第３の実施例における、出力先決定部２５０の詳細な構成を示す説明図である。第３の実施例における、出力先決定部２５０は、第２の実施例と同様に、通常振り分け部２８０と、デコーダ２８１と、不活性対応振り分け部２６０と、デコーダ２６１と、ビットシフト演算器２６２と、選択制御部２７０と、を有する。第３の実施例では、さらに、出力先決定部２５０は、切り替え時のＭ個分の出力情報と、切り替え時の振り分け出力先総数Ｍと、切り替え時の不活性出力先数ｙと、切り替え時のＭビットの出力先状態ビットマップを通知される。
【００７７】
図１４は、第３の実施例における、振り分けテーブル３２０の一例を示す説明図である。第３の実施例における、振り分けテーブル３２０は、第２の実施例と同様に、論理ポートを定義するテーブルである。第３の実施例では、さらに、振り分けテーブル３２０は、論理ポートに固有なＬＡ番号と、その論理ポートに含まれる切り替え時の振り分け出力先の総数と、その論理ポートに含まれる切り替え時の物理ポートと、の対応関係を定めている。図１４に示す例では、ＬＡ番号「０」に対応する通常時の振り分け出力先情報として、第１物理ポート（Ｐｏｒｔ＃１）と第３物理ポート（Ｐｏｒｔ＃３）と第５物理ポート（Ｐｏｒｔ＃５）と第７物理ポート（Ｐｏｒｔ＃７）と第８物理ポート（Ｐｏｒｔ＃８）の５つの物理ポートを設定している。切り替え時の振り分け出力先情報として、第２物理ポート（Ｐｏｒｔ＃２）と第４物理ポート（Ｐｏｒｔ＃４）と第６物理ポート（Ｐｏｒｔ＃６）の３つの物理ポートを設定している。
【００７８】
Ｃ２．宛先検索処理：
第３の実施例における、スイッチ装置ＳＷのヘッダ処理部２００が実行する宛先検索処理は、振り分け出力先検索部２２０が実行する振り分け出力先情報検索処理と、出力先決定部２５０が実行する出力先選択処理が異なる点を除き、第２の実施例と同様である。第３の実施例における、ステップＳ５０３では、振り分け出力先検索部２２０は、論理ポートの振り分け番号と、振り分けテーブル３２０とを参照することによって、その論理ポートに含まれる通常時の振り分け出力先の総数と切り替え時の振り分け出力先の総数と、その論理ポートに含まれる通常時の物理ポートと切り替え時の物理ポートとを検索する。
【００７９】
図１５は、第３の実施例における、出力先決定部２５０が実行する出力先選択処理（ステップＳ１５０）を示すフローチャートである。ステップＳ１５００〜ステップＳ１５０２は、第２の実施例におけるステップＳ９００〜Ｓ９０２と同様である。
【００８０】
ステップＳ１５０３で、不活性対応振り分け部２６０は、図１６（ａ）に示す関係式に従って、ハッシュ値と、通常振り分け選択番号と、通常時振り分け出力先総数Ｎと、切り替え時振り分け出力先総数Ｍと、切り替え時不活性出力先数ｙとを用いて、振り分け出力先物理ポートの選択番号を生成する。なお、このステップ１５０３で生成した選択番号のことを「切り替え時不活性対応振り分け選択番号」ともいう。    この切り替え時不活性対応振り分け選択番号は、０〜Ｍ−ｙ−１の範囲の値である。具体的には、不活性対応振り分け部２６０は、まず、この関係式に従い、「（ハッシュ値―通常振り分け選択番号＊２５６／通常時振り分け出力先総数Ｎ）＊（切り替え時振り分け出力先総数Ｍ−切り替え時不活性出力先数ｙ）」を「２５６／通常時振り分け出力先総数Ｎ」で割ることによって商を算出する。「２５６」は、ハッシュ値の値域の大きさである。つまり、ハッシュ値と切り替え時不活性対応振り分け選択番号の関係は、ハッシュ値をＮ個の領域に分割し、さらに、Ｎ個の領域に分割した各領域の中をＭ−ｙの領域に分割し、０〜Ｍ−ｙ−１の選択番号を順に割り当てるということである。
【００８１】
図１６（ｂ）は、ハッシュ値と切り替え時不活性対応振り分け選択番号との関係を示す説明図である。図１６（ｂ）には、論理ポートに含まれる通常時の物理ポートの総数Ｎが５で、切り替え時の物理ポートの総数Ｍが３で、切り替え時の不活性出力先数ｙが１の場合の例が示されている。この場合には、「（ハッシュ値―通常振り分け選択番号＊２５６／通常時振り分け出力先総数Ｎ）＊（切り替え時振り分け出力先総数Ｍ−切り替え時不活性出力先数ｙ）」は、０〜１０２の範囲の値である。従って、商は、０〜１のいずれかである。つまり、０〜２５５のハッシュ値を５つの領域に分割し、さらに５つに分割した各領域の中を２つの領域に分割し、０〜１の選択番号を順に割り当てる。つまり、ハッシュ値を切り替え後の活性出力先数である「Ｍ−ｘ」個の切り替え時不活性対応振り分け選択番号のいずれかに対応させているのである。
【００８２】
次のステップＳ１５０４では、デコーダ２６１は、不活性対応振り分け部２６０から通知された切り替え時不活性対応振り分け選択番号を、Ｍビットの選択番号ビットマップにデコードし、ビットシフト演算器２６２に通知する。
【００８３】
ビットシフト演算器２６２は、切り替え時出力先状態ビットマップを参照し、選択番号ビットマップをビットシフト演算することにより、不活性出力先を選択しない選択番号ビットマップを生成する。具体的には、ビットシフト演算器２６２は、まず、ビットマップ参照位置ｉを０に設定し（ステップＳ１５０５）、ビットマップ参照位置ｉと出力先状態ビットマップより、対応する出力先状態が活性と不活性とのいずれであるかを判定する（ステップＳ１５０６）。その出力先が活性である場合には、参照位置ｉに１加算し、次の参照位置の処理に移行する（ステップＳ１５０９）。その出力先が不活性である場合には、ビットシフト後の選択番号ビットマップ(ｉ＋１)〜(Ｍ−１)が、ビットシフト前の選択番号ビットマップ(ｉ)〜(Ｍ−２)になるように１ビットシフトする（ステップＳ１５０７）。そして、選択番号ビットマップの現在の参照位置ｉの位置に０を挿入し（ステップＳ１５０８）、参照位置ｉに１加算し、次の参照位置の処理に移行する（ステップＳ１５０９）。参照位置を移行した後、参照位置が途中と最後とのいずれかであったかを判定をする（ステップＳ１５１０）。参照位置ｉがＭより小さい場合には、参照位置が途中であったので、出力先状態の判定（ステップＳ１５０６）からの処理を繰り返し実行する。参照位置ｉがＭと等しい場合は、参照位置が最後であったので、ビットシフト演算器２６２は、出力先を選択するための選択番号ビットマップを確定する。
【００８４】
図１７は、ハッシュ値と選択番号と選択番号ビットマップとの関係を示す説明図である。図１７には、論理ポートに含まれる通常時の物理ポートの総数Ｎが５で、切り替え時の物理ポートの総数Ｎが３で、切り替え時の不活性出力先数ｙが１で、通常振り分け選択番号２と切り替え時不活性対応振り分け選択番号０に対応する出力先の状態が不活性である場合の例が示されている。この場合には、通常振り分け選択番号ビットマップは、０〜４の通常振り分け選択番号を５ビットのビットマップにデコードしたものであり、選択番号０、１、３、４に対応する出力先は活性であるため、これに対応する選択番号ビットマップが出力先を選択するための選択番号ビットマップとなる。選択番号２に対応する出力先は不活性であるため、切り替え時不活性対応振り分け選択番号を生成する。シフト前選択番号ビットマップは、０〜１の不活性対応振り分け選択番号を３ビットのビットマップにデコードしたものであり、シフト後選択番号ビットマップは、シフト前選択番号ビットマップのビット０の位置に０を挿入し、ビットシフト演算したものである。従って、シフト後選択番号ビットマップでは、ビット０が１となることはない。
【００８５】
次のステップＳ１５１１で、選択制御部２７０は、ビットシフト演算器２６２から通知された選択番号ビットマップにより、振り分け出力先検索部２２０から通知された複数の物理ポートの中から１つの物理ポートを選択する。具体的に図１７のシフト後選択番号ビットマップにより、図１４の振り分けテーブル３２０の第０論理ポート（ＬＡ＃０）の切り替え時の出力先を選択する場合について説明する。シフト後選択番号ビットマップのビット１が１である場合は、第４物理ポート（Ｐｏｒｔ＃４）を選択する。シフト後選択番号ビットマップのビット２が１である場合は、第６物理ポート（Ｐｏｒｔ＃６）を選択する。
【００８６】
Ｃ３．効果：
以上説明した第３の実施例におけるスイッチ装置ＳＷによれば、第２実施例のスイッチ装置ＳＷと同様の作用・効果を得ることができる。
【００８７】
さらに、スイッチ装置ＳＷでは、通常振り分け部での出力先が振り分け不可能であった場合は、振り分けテーブルに設定された切り替え時振り分け出力先の中から選択することにより、通常時振り分け出力先と切り替え時振り分け出力先を異なる出力先に分けることができる。
【００８８】
Ｄ．その他の実施形態：
以上、本発明の実施の形態について説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。
【００８９】
例えば、前述の実施例では、スイッチ装置ＳＷは、いわゆる「レイヤ２スイッチ」として機能して、リンクアグリゲーション機能により冗長性のある通信経路を構成していたが、他の実施形態において、いわゆる「レイヤ３スイッチ（「ルータ」とも呼ばれる）」として機能して、レイヤ３のルーティング制御における、負荷分散機能であるマルチパス機能により、冗長性のある通信経路を構成し、そのパケット振り分けに適用しても良い。
【００９０】
また、前述の実施例では、ネットワークシステムの構成としては、図１に示したネットワークシステム１０に限らず、任意の構成を採用可能である。スイッチ装置ＳＷの数、及び、回線の数は、任意に選択可能である。また、経路も任意に構築され得る。また、スイッチ装置ＳＷの構成としても、図２に示す構成に限らず、種々の構成を採用可能である。
【００９１】
また、前述の実施例では、複数のスイッチ装置ＳＷ間における、パケット振り分けの例を示したが、他の実施形態において、サーバコンピュータやストレージや負荷分散装置など他のネットワークに接続される機器での、パケット振り分け機能に適用しても良い。
【符号の説明】
【００９２】
１０：ネットワークシステム
１００：インタフェース回路
２００：ヘッダ処理部
２１０：データ検索部
２２０：振り分け出力先検索部
２３０：出力先状態監視部
２４０：ハッシュ値生成部
２５０：出力先決定部
２６０：不活性対応振り分け部
２６１：デコーダ
２６２：ビットシフト演算器
２７０：選択制御部
２８０：通常振り分け部
２８１：デコーダ
３００：メモリ
３１０：宛先テーブル
３２０：振り分けテーブル
３３０：出力先状態テーブル
ＳＷ、ＳＷ１０〜ＳＷ４０：スイッチ装置
【図１】
2011004025.tif 000003
【図２】
2011004025.tif 000004
【図３】
2011004025.tif 000005
【図４】
2011004025.tif 000006
【図５】
2011004025.tif 000007
【図６】
2011004025.tif 000008
【図７】
2011004025.tif 000009
【図８】
2011004025.tif 000010
【図９】
2011004025.tif 000011
【図１０】
2011004025.tif 000012
【図１１】
2011004025.tif 000013
【図１２】
2011004025.tif 000014
【図１３】
2011004025.tif 000015
【図１４】
2011004025.tif 000016
【図１５】
2011004025.tif 000017
【図１６】
2011004025.tif 000018
【図１７】
2011004025.tif 000019