(57)【特許請求の範囲】
【請求項１】
情報処理装置が送受信するパケットを中継する中継装置において、
前記パケットを送受信する複数のポートと、
前記情報処理装置を示す識別子と当該情報処理装置に送信するパケットを送出するポートとを対応付けて記憶する経路記憶部と、
いずれかのポートが前記パケットを受信した場合には、当該受信したパケットの送信先を示す識別子が前記経路記憶部に記憶されているか否かを判別する判別部と
前記識別子が前記経路記憶部に記憶されていると前記判別部が判別した場合は、当該識別子と対応付けられたポートから前記パケットを送出し、前記識別子が前記経路記憶部に記憶されていないと前記判別部が判別した場合には、前記パケットを受信したポート以外の複数のポートの中から選択される選択ポートから、前記経路記憶部に対応付けて記憶された識別子の数が少ない順番でパケットを送出する送出部と
を有することを特徴とする中継装置。
【請求項２】
いずれかのポートがパケットを受信した場合は、当該パケットの送信元となる情報処理装置を示す識別子と当該パケットを受信したポートとを対応付けて前記経路記憶部に登録し、複数のポートが同一のパケットを受信した場合は、当該パケットの送信元となる情報処理装置を示す識別子と当該パケットを最初に受信したポートとを対応付けて前記経路記憶部に登録する登録部をさらに有することを特徴とする請求項１に記載の中継装置。 
【請求項３】
情報処理装置が送受信するパケットを中継する中継装置において、
前記パケットを送受信する複数のポートと、
前記情報処理装置を示す識別子と当該情報処理装置に送信するパケットを送出するポートとを対応付けて記憶する経路記憶部と、
いずれかのポートが前記パケットを受信した場合には、当該受信したパケットの送信先を示す識別子が前記経路記憶部に記憶されているか否かを判別する判別部と
前記ポート毎に送出するパケットを一時的に記憶する複数のバッファと、
前記バッファが記憶するパケットの数が所定の閾値を超える輻輳が発生した回数を前記ポート毎に計数する輻輳計数部と
前記識別子が前記経路記憶部に記憶されていると前記判別部が判別した場合は、当該識別子と対応付けられたポートから前記パケットを送出し、前記識別子が前記経路記憶部に記憶されていないと前記判別部が判別した場合には、前記パケットを受信したポート以外の複数のポートの中から選択される選択ポートから、前記輻輳計数部が計数した数が少ない順番でパケットを送出する送出部と
を有することを特徴とする中継装置。
【請求項４】
いずれかのポートがパケットを受信した場合は、当該パケットの送信元となる情報処理装置を示す識別子と当該パケットを受信したポートとを対応付けて前記経路記憶部に登録し、複数のポートが同一のパケットを受信した場合は、当該パケットの送信元となる情報処理装置を示す識別子と当該パケットを最初に受信したポートとを対応付けて前記経路記憶部に登録する登録部をさらに有することを特徴とする請求項３に記載の中継装置。 
【請求項５】
情報処理装置が送受信するパケットを中継する中継装置において、
前記パケットを送受信する複数のポートと、
前記情報処理装置を示す識別子と当該情報処理装置に送信するパケットを送出するポートとを対応付けて記憶する経路記憶部と、
いずれかのポートが前記パケットを受信した場合には、当該受信したパケットの送信先を示す識別子が前記経路記憶部に記憶されているか否かを判別する判別部と
所定の時間間隔で、送出したパケットの数の増加数を各ポート毎に測定する測定部を有し、
前記識別子が前記経路記憶部に記憶されていると前記判別部が判別した場合は、当該識別子と対応付けられたポートから前記パケットを送出し、前記識別子が前記経路記憶部に記憶されていないと前記判別部が判別した場合には、前記パケットを受信したポート以外の複数のポートの中から選択される選択ポートから、前記測定部が測定した増加数が少ない順番でパケットを送出する送出部と
を有することを特徴とする中継装置。
【請求項６】
いずれかのポートがパケットを受信した場合は、当該パケットの送信元となる情報処理装置を示す識別子と当該パケットを受信したポートとを対応付けて前記経路記憶部に登録し、複数のポートが同一のパケットを受信した場合は、当該パケットの送信元となる情報処理装置を示す識別子と当該パケットを最初に受信したポートとを対応付けて前記経路記憶部に登録する登録部をさらに有することを特徴とする請求項５に記載の中継装置。
【請求項７】
パケットを送受信する複数のサーバと、
多段階に接続され、前記サーバが送受信するパケットの中継を行う複数の中継装置と
を有する情報処理システムにおいて、
前記中継装置は、
前記パケットを送受信する複数のポートと、
前記サーバを示す識別子と当該サーバに送信するパケットを送出するポートとを対応付けて記憶する経路記憶部と、
いずれかのポートが前記パケットを受信した場合には、当該受信したパケットの送信先を示す識別子が前記経路記憶部に記憶されているか否かを判別する判別部と
前記識別子が前記経路記憶部に記憶されていると前記判別部が判別した場合は、当該識別子と対応付けられたポートから前記パケットを送出し、前記識別子が前記経路記憶部に記憶されていないと前記判別部が判別した場合には、前記パケットを受信したポート以外の複数のポートの中から選択される選択ポートから、前記経路記憶部に対応付けて記憶された識別子の数が少ない順番でパケットを送出する送出部と
を有することを特徴とする情報処理システム。 
【請求項８】
複数のポートを有し、情報処理装置が送受信するパケットを中継する中継装置が、
いずれかのポートが前記パケットを受信した場合には、前記情報処理装置を示す識別子と当該情報処理装置に送信するパケットを送出するポートとを対応付けたテーブルに、該受信したパケットの送信先を示す識別子が登録されているか否かを判別し、
前記識別子が前記テーブルに記憶されていると判別した場合は、当該識別子と対応付けられたポートから前記パケットを送出し、前記識別子が前記テーブルに記憶されていないと判別した場合は、前記パケットを受信したポート以外の複数のポートの中から選択される選択ポートから、前記テーブルに対応付けて登録された識別子の数が少ない順番でパケットを送出する
処理を実行することを特徴とする中継方法。 
【請求項９】
複数のポートを有し、情報処理装置が送受信するパケットを中継する中継装置が有するコンピュータに、
いずれかのポートが前記パケットを受信した場合には、前記情報処理装置を示す識別子と当該情報処理装置に送信するパケットを送出するポートとを対応付けたテーブルに、該受信したパケットの送信先を示す識別子が登録されているか否かを判別し、
前記識別子が前記テーブルに記憶されていると判別した場合は、当該識別子と対応付けられたポートから前記パケットを送出し、前記識別子が前記テーブルに記憶されていないと判別した場合は、前記パケットを受信したポート以外の複数のポートの中から選択される選択ポートから、前記テーブルに対応付けて登録された識別子の数が少ない順番でパケットを送出する
処理を実行させることを特徴とする中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継装置、情報処理システム、中継方法および中継プログラムに関する。
【背景技術】
【０００２】
従来、受信したパケットの送信元のＭＡＣアドレスと、パケットを受信したポートとを対応付けてＦＤＢ（Ｆｏｒｗａｒｄｉｎｇ  Ｄａｔａｂａｓｅ）に登録し、ＦＤＢに基づいて、パケットを送出するポートを選択する中継装置が知られている。
【０００３】
例えば、中継装置は、パケットを受信すると、パケットの送信元のＭＡＣアドレスとパケットを受信したポートとを対応付けてＦＤＢに登録する。また、中継装置は、受信したパケットの送信先のＭＡＣアドレスがＦＤＢに登録されているか否かを判別する。そして、中継装置は、送信先のＭＡＣアドレスがＦＤＢに登録されている場合は、対応付けて登録されたポートからパケットを送出する。
【０００４】
また、中継装置は、受信したパケットの送信先のＭＡＣアドレスがＦＤＢに登録されていない場合には、パケットを受信したポート以外の全てのポートから所定の順にパケットを送出するフラッディングを行う。そして、中継装置は、他の中継装置がフラッディングしたパケットを複数のポートから受信した場合には、パケットを最初に受信したポートと、受信したパケットの送信元のＭＡＣアドレスとを対応付けてＦＤＢに登録する。
【０００５】
以下、中継装置の一例として、ＦＤＢを用いてパケットの送出を行うスイッチについて説明する。図１１は、従来のスイッチの一例を説明するための図である。図１１に示す例では、サーバ３８〜３８ｂと、サーバ３８ｃ〜３８ｅとが送受信するパケットを複数のスイッチ３０〜３７が中継する。
【０００６】
また、各スイッチ３０〜３７は、送信先のＭＡＣアドレスがＦＤＢに登録されていないパケットを受信した場合には、フラッディングを行う。そして、各スイッチ３０〜３７は、他の中継装置がフラッディングしたパケットを最初に受信したポートと送信元のＭＡＣアドレスとを対応付けてＦＤＢに登録することで、最も遅延が少ない経路を学習する。
【０００７】
図１２は、従来のスイッチが実行するフラッディング処理を説明するための図である。図１２に示す例では、スイッチ３０は、複数のポート３９〜４２とＭＡＣ処理部４３とを有する。例えば、ＭＡＣ処理部４３は、ポート３９を介して、サーバ３８からパケットを受信する。
【０００８】
すると、ＭＡＣ処理部４３は、受信したパケットの送信先のＭＡＣアドレスがＦＤＢに登録されているか否かを判別し、登録されていないと判別した場合は、フラッディングを行う。例えば、スイッチ３０は、ポート４０、ポート４１、ポート４２の順番で、パケットを送出する。
【０００９】
すると、図１１に示す例では、各スイッチ３１〜３６は、スイッチ３０が送出したパケットのフラッディングをそれぞれ行うと共に、パケットを最初に受信したポートとサーバ３８とを対応付けてＦＤＢに登録する。この結果、各スイッチ３０〜３７は、サーバ３８を宛先とするパケットを転送する経路のうち、最も遅延が少ない経路を学習する。
【００１０】
その後、各スイッチ３０〜３７は、サーバ３８を宛先とするパケットを受信した場合には、サーバ３８のＭＡＣアドレスと対応付けたポートからパケットを送出する。すなわち、各スイッチ３０〜３７は、サーバ３８を宛先とするパケットを、最も遅延が少ない経路で転送する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００８−１４１６１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、所定の順序でフラッディングを行う技術では、各スイッチは、送信先のＭＡＣアドレスがＦＤＢに登録されていないパケットを受信する度に、各ポートから所定の順序でパケットを送出する。このため、転送遅延が同程度となる経路が複数存在するにも係らず、パケットの転送経路が偏ってしまうという問題がある。
【００１３】
例えば、図１１に示す例では、スイッチ３０とスイッチ３７との間には、ホップ数が同一となる３つの経路が存在する。詳細には、スイッチ３０とスイッチ３７との間には、スイッチ３１、スイッチ３２を経由する経路、スイッチ３３、スイッチ３４を経由する経路、スイッチ３５、スイッチ３６を経由する経路が存在する。ここで、各スイッチ間でパケットを送受信する際の遅延は同程度である。
【００１４】
スイッチ３０は、ポート３９を介して、送信先のＭＡＣアドレスがＦＤＢに登録されていないパケットを受信する度に、ポート４０、ポート４１、ポート４２の順にパケットを送信する。すると、スイッチ３１は、スイッチ３３、および、スイッチ３５よりも先にパケットを受信し、受信したパケットをスイッチ３２に送信する。また、スイッチ３２は、スイッチ３４、および、スイッチ３６よりも先にスイッチ３７にパケットを送信する。
【００１５】
この結果、スイッチ３７は、転送遅延が同程度の経路が複数存在するにも係らず、スイッチ３１、スイッチ３２を経由したパケットを最初に受信する。このため、各スイッチ３０〜３７は、遅延がほぼ同じとなる複数の経路が存在するにも係らず、送信先のＭＡＣアドレスがＦＤＢに登録されていないパケットを転送する度に、スイッチ３２とスイッチ３１とを経由する経路を学習してしまう。
【００１６】
１つの側面では、本発明は、パケットを送受信する経路の偏りを軽減することを目的とする。
【課題を解決するための手段】
【００１７】
１つの側面では、情報処理装置が送受信するパケットを中継する中継装置である。また、中継装置は、パケットを送受信する複数のポートを有する。また、中継装置は、情報処理装置を示す識別子と情報処理装置に送信するパケットを送出するポートとを対応付けて記憶する。そして、中継装置は、いずれかのポートを介してパケットを受信した場合には、受信したパケットの送信先を示す識別子を記憶しているか否かを判別する。そして中継装置は、識別子を記憶していると判別した場合は、識別子と対応付けて記憶するポートからパケットを送出する。また、中継装置は、識別子を記憶していないと判別した場合には、パケットを受信したポート以外のポートから、対応付けて記憶された識別子の数が少ない順番で選択されるポートからパケットを送出する。
【発明の効果】
【００１８】
１実施形態では、パケットを送受信する経路の偏りを軽減できる。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例１に係る情報処理システムを説明するための図である。
【図２】図２は、実施例１に係るスイッチの機能構成を説明するための図である。
【図３】図３は、実施例１に係るＦＤＢの一例を説明するための図である。
【図４】図４は、実施例１に係る統計情報の一例を説明するための図である。
【図５】図５は、実施例１に係る先着学習テーブルの一例を説明するためのである。
【図６】図６は、実施例１に係るスイッチが実行するフラッディング処理を説明するための図である。
【図７】図７は、実施例１に係るスイッチによる経路分散の一例を説明するための図である。
【図８】図８は、実施例１に係るスイッチが実行する処理の流れを説明するためのフローチャートである。
【図９】図９は、多段階構成のファットツリーによる情報処理システムの一例を説明するための図である。
【図１０】図１０は、中継プログラムを実行するコンピュータの一例を説明するための図である。
【図１１】図１１は、従来のスイッチの一例を説明するための図である。
【図１２】図１２は、従来のスイッチが実行するフラッディング処理を説明するための図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して本願に係る中継装置、情報処理システム、中継方法および中継プログラムについて説明する。
【実施例１】
【００２１】
以下の実施例１では、図を用いて、情報処理システムの一例を説明する。図１は、実施例１に係る情報処理システムを説明するための図である。なお、図１に示す情報処理システムは、少なくとも、データセンタ等に設置された情報処理システムであり、多段階に接続された複数のスイッチが、複数のサーバ間でやり取りされるパケットの中継を行うシステムである。
【００２２】
図１に示すように、情報処理システム１は、複数のサーバ２〜５、複数のスイッチ１０〜１０ｉを有する。なお、図１に示す例では、サーバ２〜５以外のサーバについては、図示を省略したが、情報処理システム１は、任意の数のサーバを設置可能である。
【００２３】
図１に示す例では、スイッチ１０〜１０ｆは、サーバ２〜５と接続されるスイッチである。また、スイッチ１０ｇ〜１０ｉは、各スイッチ１０〜１０ｆと接続され、各スイッチ１０〜１０ｆが送受信するパケットの中継を行う上位のスイッチである。すなわち、図１に示す例では、情報処理システム１は、２段のＦＡＴ−Ｔｒｅｅ型に接続した複数のスイッチ１０〜１０ｈが、サーバ２〜５が送受信するパケットの中継を行うシステムである。
【００２４】
サーバ２は、他のサーバ３〜５との間でパケットの送受信を行う情報処理装置である。また、サーバ２には、サーバ２を一意に示す識別子が付与されており、サーバ２を一意に示す識別子を用いて、パケットの送受信を行う。
【００２５】
例えば、サーバ２は、他のサーバ３〜５とパケットの送受信を行うためのＮＩＣ（Network  Interface  Card）を有する。ＮＩＣには、ＮＩＣを一意に示すＭＡＣ（Media  Access  Control）アドレスが付与されている。サーバ２は、パケットを送信する場合には、サーバ２が有するＮＩＣのＭＡＣアドレスを送信元アドレスとして格納し、パケットの送信先のサーバが有するＮＩＣのＭＡＣアドレスを送信先アドレスとして格納する。そして、サーバ２は、送信対象となるデータをパケットに格納し、パケットをスイッチ１０に送信する。なお、サーバ３〜５は、サーバ２と同様の機能を発揮するものとして、説明を省略する。
【００２６】
次に、図２を用いて、情報処理システム１が有するスイッチ１０が実行する処理について説明する。なお、以下の説明では、スイッチ１０が実行する処理を説明し、スイッチ１０ａ〜１０ｉについては、スイッチ１０と同様の機能を発揮するものとして、説明を省略する。
【００２７】
図２は、実施例１に係るスイッチの機能構成を説明するための図である。図２に示す例では、スイッチ２は、接続部１１、ＭＡＣ処理部１２、パケット処理部１３、メモリ１４、ＣＰＵ（Central  Processing  Unit）１５を有する。また、接続部１１は、複数のポート１６、１７、複数の物理層処理部１８、１９を有する。
【００２８】
また、ＭＡＣ処理部１２は、ＭＡＣフレーム処理部２０を有する。また、パケット処理部１３は、パケット転送処理部２１、ＭＡＣ学習処理部２２、先着学習処理部２３、経路分散処理部２４を有する。また、メモリ１４は、ＦＤＢ（Forwarding  Database）２６、統計情報２５、先着学習テーブル２７を記憶する。
【００２９】
まず、図３〜５を用いて、メモリ１４が記憶するＦＤＢ２６、統計情報２５、先着学習テーブル２７について説明する。図３は、実施例１に係るＦＤＢを説明するための図である。図３に示す例では、ＦＤＢ２６は、ポート番号と、ＭＡＣアドレスとを対応付けたエントリを複数有する。
【００３０】
ここで、ポート番号とは、スイッチ１０が有する各ポート１６、１７を識別するための情報である。例えば、ポート番号「１」は、ポート１６を示し、ポート番号「２」は、ポート１７を示す。また、ＭＡＣアドレスとは、いずれかのサーバが有するＮＩＣに付与されたＭＡＣアドレスである。また、ＦＤＢ２６は、スイッチ１０が受信したパケットの送信元を示すＭＡＣアドレスと、このＭＡＣアドレスを送信元とするパケットを最初に受信したポートを示すポート番号とが対応付けて格納されている。
【００３１】
例えば、スイッチ１０は、サーバ２が送信元となるパケットをポート１６から受信した場合には、サーバ２のＮＩＣに付与されたＭＡＣアドレスと、ポート１６を示すポート番号とを対応付けてＦＤＢ２６に格納する。また、スイッチ１０は、サーバ３が送信元となるパケットをポート１７から受信した場合には、サーバ３のＮＩＣに付与されたＭＡＣアドレスと、ポート１７を示すポート番号とを対応付けてＦＤＢ２６に格納する。
【００３２】
詳細な例を挙げるならば、ＦＤＢ２６には、ポート１６を示すポート番号「１」と、サーバ２のＮＩＣに付与されたＭＡＣアドレス「００：００：Ｃ０：１１：１１：１１」とを対応付けたエントリを有する。また、ＦＤＢ２６には、ポート１７を示すポート番号「２」と、サーバ２のＮＩＣに付与されたＭＡＣアドレス「００：００：Ｃ０：２２：２２：２２」とを対応付けたエントリを有する。
【００３３】
次に、図４を用いて、統計情報２５について説明する。図４は、実施例１に係る統計情報の一例を説明するための図である。図４に示す例では、統計情報２５は、ポート番号、送出パケットレート、ＭＡＣ学習数、輻輳検出回数、パケット廃棄数、パケット送出増加数を対応付けたエントリを有する。
【００３４】
送出パケットレートとは、対応付けられたポート番号が示すポートが単位時間ごとに送出するデータ量である。具体的には、ＣＰＵ１０は、所定の時間おきに、各ポート１６、１７が送出したパケットの数を計数し、計数した数とパケットのビット数との積を所定の時間で除算した値を送出パケットレートとして統計情報２５に格納する。
【００３５】
例えば、図４に示す例では、統計情報２５は、ポート番号「１」のポートが「２００Ｍｂｐｓ（Mega  Bit  Par  Second）」でパケットを送出し、ポート番号「２」のポートが「９００Ｍｂｐｓ」でパケットを送出する旨を示す。また、統計情報２５は、ポート番号「３」のポートが８００Ｍｂｐｓでパケットを送出する旨を示す。
【００３６】
ＭＡＣ学習数とは、対応付けられたポート番号と対応付けられたＭＡＣアドレスがいくつＦＤＢ２６に登録されているかを示す情報である。例えば、図４に示す例では、統計情報２５は、ＦＤＢ２６に、ポート番号「１」と対応付けられたＭＡＣアドレスの数が「１０」個存在することを示す。また、統計情報２５は、ＦＤＢ２６に、ポート番号「２」と対応付けられたＭＡＣアドレスの数が「５０」個存在することを示す。また、統計情報２５は、ＦＤＢ２６に、ポート番号「３」と対応付けられたＭＡＣアドレスの数が「４０」個存在することを示す。
【００３７】
輻輳検出回数とは、対応付けられたポート番号が示すポートにおいて、輻輳が発生した回数である。ここで、輻輳について説明する。例えば、各ポート１６、１７は、送信するパケットを一時的に記憶するバッファを有する。そして、ＣＰＵ１０は、各ポート１６、１７が有するバッファが記憶するパケットの数を計数し、計数したパケットの数が所定の数よりも多い場合には、輻輳が発生したと判別する。
【００３８】
例えば、統計情報２５は、ポート番号「１」のポートにおいて輻輳が発生していないことを示す。また、統計情報２５は、ポート番号「２」のポートにおいて、輻輳が「５」回発生したことを示す。また、統計情報２５は、ポート番号「３」のポートにおいて、輻輳が「８」回発生したことを示す。
【００３９】
パケット廃棄数とは、他のスイッチ１０ａ〜１０ｉがフラッディングしたパケットを、各パケットがいくつ廃棄したかを示す情報である。すなわち、ＣＰＵ１０は、ポート１６、１７を解して、他のスイッチ１０ａ〜１０ｉがフラッディングしたパケットを受信する。この際、ＣＰＵ１０は、最初に受信したパケットのみを転送するとともに、２番目以降に受信したパケットについては、廃棄する。そして、ＣＰＵ１０は、各ポート１６、１７ごとに、受信したパケットを廃棄した数を計数し、計数した数を、統計情報２５のパケット廃棄数とする。
【００４０】
例えば、図４に示す例では、統計情報２５は、ポート番号「１」のポートが受信したパケットの廃棄を行っていないことを示す。また、統計情報２５は、ポート番号「２」のポートが受信したパケットを「１０００」個廃棄した旨を示す。また、統計情報２５は、ポート番号「３」のポートが受信したパケットを「２０００」個廃棄した旨を示す。
【００４１】
パケット送出増加数とは、所定の時間おきに、各ポートの送出パケットレートがどれだけ増加したかを示す情報である。すなわち、スイッチ１０は、所定の時間おきに、各ポートの送出パケットレートを更新するとともに、前回の送出パケットレートと、新たな送出パケットレートとの差分をパケット送出増加数として、統計情報２５に格納する。
【００４２】
例えば、図４に示す例では、統計情報２５は、ポート番号「１」のパケットレートが、前回と比較して「５０Ｍｂｐｓ」減少したことを示す。また、統計情報２５は、ポート番号「２」のパケットレートが、前回と比較して「１００Ｍｂｐｓ」増加したことを示す。また、統計情報２５は、ポート番号「３」のパケットレートが、前回と比較して「１００Ｍｂｐｓ」減少したことを示す。
【００４３】
次に、図５を用いて、先着学習テーブル２７について説明する。図５は、実施例１に係る先着学習テーブルの一例を説明するための図である。図５に示す例では、先着学習テーブル２７は、送信元情報、受信ポート番号、受信時刻、ＦＣＳ（Frame  Check  Sequence）とを対応づけたエントリを有する。ここで、送信元情報とは、スイッチ１０以外のスイッチ１０ａ〜１０ｉによってフラッディングされたパケットの送信元を示すＭＡＣアドレスである。
【００４４】
また、受信ポート情報とは、フラッディングされたパケットを最初に受信したポートを示すポート番号である。また、受信時刻とは、フラッディングされたパケットを最初に受信した時刻であり、図５に示す例では月：日：時間：分：秒を記載した。また、ＦＣＳとは、フレームリレーを行う際にエラーを検出するため、各パケットに付与されるチェックサムであり、受信したパケットから算出される値である。
【００４５】
例えば、図５に示す例では、先着学習テーブル２７は、送信元のＭＡＣアドレスが「００：００：Ｃ０：２２：２２：２２」のパケットをポート番号「２」のパケットから時刻１：２５：１３：２５：２１．２１５」に受信した旨を示す。また、先着学習テーブル２７は、受信したパケットのＦＤＳが「ｘｘｘｘｘｘｘｘ」である旨を示す。
【００４６】
図２に戻って、スイッチ１０の機能構成について説明する。ポート１６、１７は、外部装置とパケットを送受信するためのポートであり、それぞれサーバ２、サーバ３と接続されている。また、図２では省略したが、スイッチ１０は、スイッチ１０ｇ、スイッチ１０ｈ、スイッチ１０ｉと接続されたポートを有する。また、ＣＰＵ１５は、プログラムを実行することで、スイッチ１０が有する各種機能を発揮させる演算処理を実行する。
【００４７】
物理層処理部１８、１９は、パケットの送受信を行う際に物理層における処理を実行する。具体的には、物理層処理部１８、１９は、パケットのフレーム符号化、パラレル−シリアル変換、信号波形変換等を行う。例えば、物理層処理部１８、１９は、ポート１６を介して受信した電気信号をデータリンク層レベルのパケットに変換し、変換後のパケットをＭＡＣフレーム処理部２０に出力する。また、物理層処理部１８、１９は、ＭＡＣフレーム処理部２０からパケットを受信すると、受信したパケットを電気信号に変換し、それぞれポート１６、１７から出力する。
【００４８】
また、物理層処理部１８、１９は、各ポート１６、１７から送出するパケットを一時的に記憶するバッファを有する。そして、物理層処理部１８、１９は、所定の時間間隔でバッファが記憶するパケットの数を計数し、計数したパケットの数が所定の閾値よりも多いか否かを判別する。そして、物理層処理部１８、１９は、計数したパケットの数が所定の閾値よりも多い場合には、輻輳が発生した旨をＭＡＣフレーム処理部２０に通知する。また、物理層処理部１８、１９は、各ポート１６、１７から送出したパケットの数を計数し、計数した数をＭＡＣフレーム処理部２０に通知する。
【００４９】
ＭＡＣフレーム処理部２０は、ＭＡＣフレームの解析処理やＩＰパケットのプロトコル解析処理などを行う。具体的には、ＭＡＣフレーム処理部２０は、物理層処理部１８、１９からパケットを受信すると、受信したパケットを解析し、以下の情報を抽出する。
【００５０】
すなわち、ＭＡＣフレーム処理部２０は、パケットの送信元ＭＡＣアドレス、パケットの送信先ＭＡＣアドレス、パケットを受信した時間、パケットを受信したポートを抽出する。また、ＭＡＣフレーム処理部２０は、パケットに格納されたデータからＦＤＳを算出する。そして、ＭＡＣフレーム処理部２０は、抽出した各情報、およびＦＤＳをパケット転送処理部２１に出力する。
【００５１】
また、ＭＡＣフレーム処理部２０は、受信したパケットを送出するポートの通知をパケット転送処理部２１から受信する。すると、ＭＡＣフレーム処理部２０は、通知されたポートの物理層処理部に対して、受信したパケットを出力する。また、ＭＡＣフレーム処理部２０は、パケット転送処理部２１からパケットを廃棄する旨の通知を取得した場合には、受信したパケットを廃棄する。
【００５２】
また、ＭＡＣフレーム処理部２０は、パケットをフラッディングする旨の通知と、パケットを各ポート１６、１７から送出する順序を示す順序リストを受信する。すると、ＭＡＣフレーム処理部２０は、取得した順序リストが示す順序で、同一のパケットを各ポート１６、１７の各物理層処理部１８、１９に出力する。
【００５３】
また、ＭＡＣフレーム処理部２０は、各物理層処理部１８、１９から、輻輳が発生した旨の通知を受信すると、受信した通知をパケット転送処理部２１に転送する。また、ＭＡＣフレーム処理部２０は、各物理層処理部１８、１９から、各ポート１６、１７から送出したパケットの数の通知を受信すると、受信した通知をパケット転送処理部２１に転送する。
【００５４】
パケット転送処理部２１は、各ポート１６、１７が受信したパケットの情報をＭＡＣフレーム処理部２０から取得した場合は、取得したパケットの情報に応じて、受信したパケットを送出するポートを決定する。そして、パケット転送処理部２１は、決定したポートをＭＡＣフレーム処理部２０に通知する。
【００５５】
具体的には、パケット転送処理部２１は、パケットの送信元ＭＡＣアドレス、パケットの送信先ＭＡＣアドレス、パケットを受信した時間、パケットを受信したポート、パケットに格納されたデータから算出されたＦＤＳをＭＡＣフレーム処理部２０から受信する。パケット転送処理部２１は、パケットの送信元ＭＡＣアドレスと、パケットを受信したポートと、ＦＣＳと、パケットを受信した時間とを先着学習処理部２３に通知する。
【００５６】
すると、パケット転送処理部２１は、先着学習処理部２３から、パケットを廃棄する旨の通知、または、パケットを転送する旨の通知を取得する。そして、パケット転送処理部２１は、先着学習処理部２３からパケットを廃棄する旨の通知を取得した場合には、パケットを廃棄する旨の通知をＭＡＣフレーム処理部２０に送信する。そして、パケット転送処理部２１は、経路分散処理部２４に対して、パケットを廃棄した旨を通知する。
【００５７】
また、パケット転送処理部２１は、先着学習処理部２３からパケットを転送する旨の通知を取得した場合には、ＭＡＣ学習処理部２２に対して、パケットの送信元ＭＡＣアドレスと、パケットの送信先ＭＡＣアドレスと、パケットを受信したポートとを通知する。すると、パケット転送処理部２１は、ＭＡＣ学習処理部２２から、パケットを送出するポートの通知、または、パケットの送出先ポートが登録されていない旨の通知を受信する。
【００５８】
パケット転送処理部２１は、パケットを送出するポートの通知を受けた場合は、ＭＡＣ学習処理部２２から通知されたポートをＭＡＣフレーム処理部２０に通知する。一方、パケット転送処理部２１は、パケットの送出先ポートが登録されていない旨の通知を受信した場合は、経路分散処理部２４に対して、順序リストの作成を要求する。
【００５９】
このような場合には、経路分散処理部２４は、所定の方式を用いて作成した順序リストを作成し、作成したリストをＭＡＣフレーム処理部２０に出力する。すると、パケット転送処理部２１は、順序リスト、パケットをフラッディングする旨の通知をＭＡＣフレーム処理部２０に出力する。
【００６０】
また、パケット転送処理部２１は、輻輳が発生した旨の通知を受信すると、輻輳が発生した旨を経路分散処理部２４に通知する。また、パケット転送処理部２１は、各ポート１６、１７が送信したパケットの数の通知を受信すると、各ポート１６、１７が受信したパケットの数を経路分散処理部２４に通知する。
【００６１】
ＭＡＣ学習処理部２２は、パケット転送処理部２１からパケットの送信元ＭＡＣアドレスと、パケットの送信先ＭＡＣアドレスと、パケットを受信したポートとを受信する。すると、ＭＡＣ学習処理部２２は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されているか否かを判別する。
【００６２】
そして、ＭＡＣ学習処理部２２は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されている場合には、受信したパケットの送信先ＭＡＣアドレスと対応付けられたポート番号を取得する。そして、ＭＡＣ学習処理部２２は、取得したポート番号が示すポートをパケット転送処理部２１に通知する。一方、ＭＡＣ学習処理部２２は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されていない場合には、パケットの送出先ポートが登録されていない旨の通知をパケット転送処理部２１に通知する。
【００６３】
また、ＭＡＣ学習処理部２２は、パケット転送処理部２１から受信したパケットの送信元ＭＡＣアドレスとパケットを受信したポートとを対応付けたエントリがＦＤＢ２６に登録されているか否かを判別する。そして、ＭＡＣ学習処理部２２は、パケット転送処理部２１から受信したパケットの送信元ＭＡＣアドレスとパケットを受信したポートとを対応付けたエントリがＦＤＢ２６に登録されている場合は、そのまま処理を終了する。
【００６４】
一方、ＭＡＣ学習処理部２２は、パケット転送処理部２１から受信したパケットの送信元ＭＡＣアドレスとパケットを受信したポートとを対応付けたエントリがＦＤＢ２６に登録されていない場合は、ＦＤＢ２６の登録処理を行う。すなわち、ＭＡＣ学習処理部２２は、パケット転送処理部２１から受信したパケットの送信元ＭＡＣアドレスとパケットを受信したポートとを対応付けたエントリをＦＤＢ２６に登録する。
【００６５】
先着学習処理部２３は、パケットの送信元ＭＡＣアドレスと、パケットを受信したポートと、パケットを受信した時刻とＦＣＳとをパケット転送処理部２１から受信する。すると、先着学習処理部２３は、受信したパケットの送信元ＭＡＣアドレスとＦＣＳとを対応付けたエントリが先着学習テーブル２７に登録されているか否かを判別する。
【００６６】
そして、先着学習処理部２３は、受信したパケットの送信元ＭＡＣアドレスとＦＣＳとを対応付けたエントリが先着学習テーブル２７に登録されている場合には、以下の処理を実行する。すなわち、先着学習処理部２３は、登録されていたエントリに格納されている受信時刻が、パケット転送処理部２１から受信した受信時刻よりも早いか否かを判別する。また、先着学習処理部２３は、エントリに格納されている受信ポート番号が、パケット転送処理部２１から通知されたポート番号と異なるか否かを判別する。
【００６７】
そして、先着学習処理部２３は、エントリに格納されている受信ポート番号が、パケット転送処理部２１から通知されたポート番号と異なり、かつ、エントリの受信時刻が、パケット転送処理部２１から受信した受信時刻よりも早い場合は、以下の処理を実行する。すなわち、先着学習処理部２３は、他のスイッチ１０ａ〜１０ｉによってフラッディングされたパケットを、他のポートから先に受信していると判別し、パケットを廃棄する旨の通知をパケット転送処理部２１に通知する。
【００６８】
一方、先着学習処理部２３は、エントリに格納されている受信ポート番号が、パケット転送処理部２１から通知されたポート番号と同じ、または、エントリの受信時刻が、パケット転送処理部２１から受信した受信時刻よりも遅い場合は、以下の処理を実行する。すなわち、先着学習処理部２３は、パケットを転送する旨の通知をパケット転送処理部２１に通知する。
【００６９】
また、先着学習処理部２３は、エントリに格納されている受信ポート番号が、パケット転送処理部２１から通知されたポート番号と異なり、かつ、エントリの受信時刻が、パケット転送処理部２１から受信した受信時刻よりも早い場合は、以下の処理を実行する。すなわち、先着学習処理部２３は、登録されていたエントリを削除するとともに、パケット転送処理部２１から受信した各情報を用いて、新たなエントリを先着学習テーブル２７に登録する。
【００７０】
経路分散処理部２４は、パケット転送処理部２１から順序リストの作成を要求された場合には、あらかじめ指定された方法で順序リストを作成し、作成した順序リストをパケット転送処理部２１に出力する。具体例を挙げると、経路分散処理部２４は、以下の方法で順序リストを作成する機能を有する。
【００７１】
すなわち、経路分散処理部２４は、統計情報２５に格納されたＭＡＣ学習数の数が少ない順にポートを並べた順序リストを生成する機能を有する。また、経路分散処理部２４は、統計情報２５に格納された送出パケットレートの値が少ない順にポートを並べた順序リストを生成する機能を有する。
【００７２】
また、経路分散処理部２４は、統計情報２５に格納された輻輳検出回数が少ない順にポートを並べた順序リストを生成する機能を有する。また、経路分散処理部２４は、統計情報２５に格納されたパケット送出増加数の値が少ない順にポートを並べた順序リストを生成する機能を有する。また、経路分散処理部２４は、統計情報２５に格納されたパケット廃棄数の数が少ない順にポートを並べた順序リストを生成する機能を有する。
【００７３】
そして、経路分散処理部２４は、上述したいずれかの手法を用いて、順序リストを生成し、生成した順序リストをパケット転送処理部２１に出力する。なお、経路分散処理部２４が用いる手法は、情報処理システム１の利用者が任意のタイミングで設定するようにしてもよい。また、経路分散処理部２４は、順序リストの生成を要求されるたびに、方法をランダムに選択することとしてもよい。
【００７４】
なお、経路分散処理部２４は、輻輳が発生した旨の通知を受信すると、統計情報２５の各エントリのうち、輻輳が発生したポートの輻輳検出回数を１インクリメントする。また、経路分散処理部２４は、各ポート１６、１７が送信したパケットの数の通知を受信すると、各ポート１６、１７が送信したパケットの数に、パケット１つ分の情報量を積算した値を送出パケットレートとして算出する。
【００７５】
また、経路分散処理部２４は、各ポートごとに、統計情報２５に格納されている送出パケットレートから新たに算出した送出パケットレートを減算した値をパケット送出増加数として算出する。そして、経路分散処理部２４は、算出した送出パケットレートと、パケット送出増加数とを統計情報２５に格納する。
【００７６】
また、経路分散処理部２４は、所定の時間間隔でＦＤＢ２６の各エントリを検査し、各ポート番号が登録されている数を計数する。そして、経路分散処理部２４は、計数した数を、各ポートのＭＡＣ学習数として、統計情報２５に格納する。
【００７７】
このように、パケット処理部１３は、受信したパケットの送信元ＭＡＣアドレスとパケットを受信したポートのポート番号とを対応付けてＦＤＢ２６に登録する。また、パケット処理部１３は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されているか否かを判別する。
【００７８】
そして、パケット処理部１３は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されている場合には、登録されているＭＡＣアドレスと対応付けて記憶したポートからパケットを送出させる。また、パケット処理部１３は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されていない場合には、パケットを受信したポート以外のポートから送出するフラッディングを行う。なお、パケット処理部１３は、フラッディングを行う場合には、パケットを各ポートから送出する順序を固定することなくパケットを送出する。
【００７９】
また、パケット処理部１３は、送出する順序を固定することなくパケットを送出する以下の手法のうち、予め設定された手法を用いてパケットを送出する。すなわち、パケット処理部１３は、統計情報２５に格納された送出パケットレートを用いて、各ポート１６、１７が送信したパケットの数が少ない順を識別する。そして、パケット処理部１３は、パケットを受信したポート以外のポートから、送出したパケットの数が少ない順で、パケットを送出する。
【００８０】
また、パケット処理部１３は、パケットを受信したポート以外のポートから、統計情報２５に格納されたＭＡＣ学習数が少ない順で、受信したパケットを送出する。また、パケット処理部１３は、パケットを受信したポート以外のポートから、統計情報２５に格納された輻輳検出回数が少ない順で、受信したパケットを送出する。
【００８１】
また、パケット処理部１３は、パケットを受信したポート以外のポートから、統計情報２５に格納されたパケット送出増加数の値が少ない順で、受信したパケットを送出する。また、パケット処理部１３は、パケットを受信したポート以外のポートから、統計情報２５に格納されたパケット廃棄数の数が少ない順で、受信したパケットを送出する。
【００８２】
このため、パケット処理部１３は、パケットのフラッディングを実行する際に、パケットを各ポート１６、１７から送出する順番を、固定することなく送出することができる。この結果、スイッチ１０は、パケットを送信する経路においてレイテンシが同程度となる経路が複数存在する際に、パケットを転送する経路の偏りを解消することができる。
【００８３】
図６は、実施例１に係るスイッチが実行するフラッディング処理を説明するための図である。図６に示す例では、サーバ２が送信元となるパケットをスイッチ１０がフラッディングする際の処理について記載した。例えば、スイッチ１０は、サーバ２からパケットを受信すると、送信先ＭＡＣアドレスがＦＤＢ２６に記憶されているか否かを判別する。そして、スイッチ１０は、送信先ＭＡＣアドレスがＦＤＢ２６に記憶されていない場合は、フラッディングを実行する。
【００８４】
ここで、スイッチ１０は、各ポートからパケットを送出する順序を固定することなくフラッディングを行う。例えば、スイッチ１０は、図６中（Ａ）、（Ｂ）、（Ｃ）の順でパケットを送出する。このような場合には、スイッチ１０ｇ、スイッチ１０ｈ、スイッチ１０ｉの順にパケットを受信する。すると、各スイッチ１０ｇ〜１０ｉは、スイッチ１０ｇ、スイッチ１０ｈ、スイッチ１０ｉの順にフラッディングを実行する。
【００８５】
また、スイッチ１０は、再度サーバ２から受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に記憶されていない場合には、図６中（Ｂ）、（Ａ）、（Ｃ）の順でパケットを送出する。このような場合には、スイッチ１０ｈ、スイッチ１０ｇ、スイッチ１０ｉの順にパケットを受信する。すると、各スイッチ１０ｇ〜１０ｉは、スイッチ１０ｈ、スイッチ１０ｇ、スイッチ１０ｉの順にフラッディングを実行する。
【００８６】
このように、スイッチ１０は、フラッディングを行う際に、パケットを各ポートから送出する順序を固定せずに、そのつどパケットを送出するポートの順序を判別し、判別した順序でパケットを各ポートから出力する。この結果、スイッチ１０は、パケットを転送する経路を偏らせずに、各経路を解したパケットの転送を行うことができる。
【００８７】
すなわち、従来のスイッチは、パケットをフラッディングする際に、所定の順序で各ポートからパケットを送出するので、レイテンシが同程度の経路が複数存在する場合には、パケットを送信する経路が偏ってしまう。一方、スイッチ１０は、パケットのフラッディングを実行する際に、パケットを各ポートから送出する順序を固定しない。この結果、スイッチ１０は、レイテンシが同程度の経路が複数存在する際は、パケットを転送する経路を偏らせずに、各経路を介したパケットの転送を行うことができる。
【００８８】
図７は、実施例１に係るスイッチによる経路分散の一例を説明するための図である。例えば、図７に示す例では、スイッチ１０にサーバ２、サーバ３、サーバ６が接続され、スイッチ１０ｆにサーバ４、サーバ５、サーバ７が接続されているものとする。ここで、サーバ２は、サーバ４を宛先とするパケットを送信し、サーバ３は、サーバ５を宛先とするパケットを送信し、サーバ６は、サーバ７を宛先とするパケットを送信するものとする。
【００８９】
ここで、図７に示す例では、各サーバ間には、パケットを転送する複数の経路が存在する。例えば、サーバ２、サーバ３、サーバ６とサーバ４、サーバ５、サーバ７との間で送受信するパケットを転送する経路としては、スイッチ１０ｇを経由する経路、スイッチ１０ｈを経由する経路、スイッチ１０ｉを経由する経路が存在する。なお、各経路は、ポップ数がいずれも同じであるため、同程度の遅延でパケットを転送するものとする。
【００９０】
ここで、スイッチ１０は、サーバ２が送信したパケットを受信すると、受信したパケットを各スイッチ１０ｇ〜１０ｉにフラッディングする。例えば、スイッチ１０は、スイッチ１０ｇ、スイッチ１０ｈ、スイッチ１０ｉの順にパケットをフラッディングする。次に、各スイッチ１０ｇ〜１０ｉは、スイッチ１０と接続されたポートとサーバ２のＭＡＣアドレスとを対応付けてＦＤＢ２６に登録するとともに、それぞれスイッチ１０から受信したパケットをフラッディングする。この結果、スイッチ１０ｆは、各スイッチ１０ｇ〜１０ｉがフラッディングしたパケットを受信する。
【００９１】
ここで、スイッチ１０は、スイッチ１０ｇに対して一番最初にパケットを送出した。このため、スイッチ１０ｆは、スイッチ１０ｇからパケットを一番最初に受信するので、スイッチ１０ｇが接続されたポートとサーバ２のＭＡＣアドレスとを対応付けてＦＤＢ２６に登録する。この結果、サーバ２を宛先とするパケットは、スイッチ１０ｆ、スイッチ１０ｇ、スイッチ１０を介する経路で転送される。
【００９２】
次に、スイッチ１０は、サーバ３から受信したパケットをフラッディングする。ここで、従来のスイッチは、サーバ２から受信したパケットをフラッディングした際と同様の順序でパケットを送出するため、サーバ３を宛先とするパケットを転送する経路と、サーバ２を宛先とするパケットを転送する経路とを同じにしてしまう。
【００９３】
しかし、スイッチ１０は、サーバ３からパケットを受信すると、例えば、スイッチ１０ｈ、スイッチ１０ｇ、スイッチ１０ｉの順で送出する。すると、スイッチ１０ｆは、スイッチ１０ｈから最初にパケットを受信する。この結果、各スイッチ１０〜１０ｆは、サーバ３を宛先とするパケットは、スイッチ１０ｆ、スイッチ１０ｈ、スイッチ１０を介する経路で転送される。
【００９４】
次に、スイッチ１０は、サーバ６が送出したパケットをスイッチ１０ｉ、スイッチ１０ｈ、スイッチ１０ｇの順にフラッディングする。この結果、スイッチ１０ｆがスイッチ１０ｉから最初にパケットを受信するため、サーバ６を宛先とするパケットは、スイッチ１０ｆ、スイッチ１０ｉ、スイッチ１０を介する経路で転送される。
【００９５】
このように、スイッチ１０は、パケットをフラッディングする際にパケットを各ポートから送出する順序を固定しないので、先着学習方式のネットワークにおいて同程度の遅延が複数存在する際に、パケットの転送経路を分散させることができる。また、スイッチ１０は、パケットを送出する順序を、各ポートが送出するパケットの数に応じた値に応じて、そのつど決定する。
【００９６】
すなわち、送出パケットレートが多いポートからは、多くのパケットが送出されているので、スイッチ１０は、送出パケットレートが少ない順で各ポートからパケットをフラッディングすることで、経路の偏りを防ぐことができる。また、ＭＡＣ学習数が多いポートからは、多くのパケットが送出される。このため、スイッチ１０は、ＭＡＣ学習数が少ない順で、各ポートからパケットをフラッディングした場合には、経路を分散させることができる。また、輻輳検出回数が多いポートからは、多くのパケットが送出されているので、スイッチ１０は、輻輳検出回数が少ない順で各ポートからパケットをフラッディングすることで、経路の偏りを防ぐことができる。
【００９７】
また、パケット送出増加数が多いポートからは、多くのパケットが送出されているので、スイッチ１０は、パケット送出増加数が少ない順で各ポートからパケットをフラッディングすることで、経路の偏りを防ぐことができる。また、パケット廃棄数が多いポートは、レイテンシが大きいので、スイッチ１０は、パケット送出増加数が少ない順で各ポートからパケットをフラッディングすることで、レイテンシがより少ない経路を介したパケットの転送を行うことができる。
【００９８】
例えば、ポート１６、ポート１７、物理層処理部１８、物理層処理部１９、ＭＡＣフレーム処理部２０、パケット転送処理部２１、ＭＡＣ学習処理部２２、先着学習処理部２３、経路分散処理部２４とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。
【００９９】
また、統計情報２５、ＦＤＢ２６、先着学習テーブル２７とは、メモリ１４に格納されたデータであり、メモリとは、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【０１００】
次に、図８を用いて、スイッチ１０が実行する処理の流れについて説明する。図８は、実施例１に係るスイッチが実行する処理の流れを説明するためのフローチャートである。例えば、スイッチ１０は、いずれかのポートからパケットを受信する（ステップＳ１０１）。すると、スイッチ１０は、受信したパケットが先着パケットであるか否かを判別する（ステップＳ１０２）。すなわち、スイッチ１０は、受信したパケットが他のスイッチがフラッディングしたパケットであって、最初に受信したパケットであるか否かを判別する。
【０１０１】
そして、スイッチ１０は、受信したパケットが先着パケットであると判別した場合は（ステップＳ１０２肯定）、先着学習テーブル２７の登録を先着処理として実行する（ステップＳ１０３）。次に、スイッチ１０は、受信したパケットの送信元ＭＡＣドレスに係るエントリをＦＤＢ２６に登録する（ステップＳ１０４）。
【０１０２】
また、スイッチ１０は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に学習済みであるか否かを判別する（ステップＳ１０５）。そして、スイッチ１０は、送信先ＭＡＣアドレスがＦＤＢ２６に学習済みではないと判別した場合は（ステップＳ１０５否定）、以下の処理を行う。すなわち、スイッチ１０は、パケットを受信したポート以外のポートから、パケットを送出する順序を固定せずに、フラッディングを行い（ステップＳ１０６）、処理を終了する。
【０１０３】
一方、スイッチ１０は、送信先ＭＡＣアドレスがＦＤＢ２６に学習済みであると判別した場合は（ステップＳ１０５肯定）、ＦＤＢ２６に対応付けて登録されたポートから、受信したパケットを送出し（ステップＳ１０７）、処理を終了する。なお、スイッチ１０は、受信したパケットが先着パケットではない場合には（ステップＳ１０２否定）、パケットを廃棄し（ステップＳ１０８）、処理を終了する。
【０１０４】
［実施例１の効果］
このように、スイッチ１０は、受信したパケットの送信元ＭＡＣアドレスとパケットを受信したポートのポート番号とを対応付けてＦＤＢ２６に登録する。また、スイッチ１０は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されているか否かを判別する。そして、スイッチ１０は、受信したパケットの送信先ＭＡＣアドレスがＦＤＢ２６に登録されていない場合には、パケットを各ポートから送出する順序を固定することなく、パケットを送出する。つまり、スイッチ１０は、パケットを受信したポート以外のポートから非固定的な順番で選択されるポートからパケットを送出する。
【０１０５】
ここで、スイッチ１０は、受信したパケットが他のスイッチ１０ａ〜１０ｉがフラッディングした複数のパケットを受信した場合は、一番最初にパケットを受信したポートと、送信元ＭＡＣアドレスとを対応付けてＦＤＢ２６に登録する。このため、スイッチ１０は、レイテンシが最も少ないパケットの転送経路を選択できる。
【０１０６】
なお、スイッチ１０は、送出する順序を固定することなくパケットを送出する以下の手法のうち、予め設定された手法を用いてパケットを送出する。すなわち、スイッチ１０は、統計情報２５に格納された送出パケットレートを用いて、各ポート１６、１７が送信したパケットの数が少ない順を識別する。そして、スイッチ１０は、パケットを受信したポート以外のポートから、送出パケットレートが少ない順、すなわち、送出したパケットの数が少ない順で、パケットを送出する。このため、スイッチ１０は、経路の偏りを軽減できる。
【０１０７】
また、スイッチ１０は、パケットを受信したポート以外のポートから、統計情報２５に格納されたＭＡＣ学習数が少ない順で、受信したパケットを送出するので、経路の偏りを防ぐことができる。また、スイッチ１０は、各ポートの輻輳検出回数を計数し、パケットを受信したポート以外のポートから、輻輳検出回数が少ない順で、受信したパケットを送出するので、経路の偏りを軽減できる。
【０１０８】
また、スイッチ１０は、パケットを受信したポート以外のポートから、統計情報２５に格納されたパケット送出増加数の値が少ない順で、受信したパケットを送出するので、経路の偏りを防ぐことができる。また、スイッチ１０は、パケットを受信したポート以外のポートから、統計情報２５に格納されたパケット廃棄数の数が少ない順、すなわち、経路のレイテンシが少ない順で受信したパケットを送出するので、レイテンシが少ない経路を選択できる。
【０１０９】
このように、スイッチ１０は、パケットのフラッディングを実行する際に、パケットを送出する順番を、固定することなく送出することができる。この結果、スイッチ１０は、パケットを送信する経路においてレイテンシが同程度の経路が複数存在する際に、パケットを転送する経路の偏りを軽減できる。
【実施例２】
【０１１０】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１１１】
（１）情報処理システム１のネットワークについて
上述した情報処理システム１は、図１に示す２Ｄ（Dimension）方のＦＡＴ−Ｔｒｅｅ構造で複数のスイッチ１０〜１０ｉを接続し、エッジとなるスイッチ１０〜１０ｆが、それぞれサーバ２〜７と接続されていた。しかし、実施例はこれに限定されるものではない。
【０１１２】
図９は、多段階構成のファットツリーによる情報処理システムの一例を説明するための図である。図９に示す例では、実施例２に係る情報処理システム１ａは、複数のスイッチを３ｔｉｅｒで接続した。具体的には、情報処理システム１ａは、サーバ２〜５と同様の機能を発揮するサーバ２ａ〜５ａを有する。
【０１１３】
また、情報処理システム１ａは、情報処理システム１と同様に接続したスイッチ１０〜１０ｆを有するネットワーク３０を有し、さらに、ネットワーク３０と同様の機能を発揮する複数のネットワーク３０ａ、ネットワーク３０ｂを有する。そして、情報処理システム１ａは、各ネットワーク３０〜２０ｂのエッジ（葉：リーフ）となるスイッチと各サーバ２ａ〜５ａを接続する。例えば、サーバ２ａは、各ネットワーク３０〜１０ｂのエッジとなるスイッチと接続されている。
【０１１４】
このように、情報処理システム１ａは、ネットワーク３０と同様の機能を発揮するネットワークを増やすことで、システムのスケールを大きくすることができる。例えば、データセンタ等、多くのサーバをネットワークに接続するため、ポート数の多いスイッチを用いる手法が考えられるが、ポート数の多いスイッチは高価であるため、システム構築のコストを増加させてしまう。
【０１１５】
一方、通常のスイッチを多段階に接続した場合には、コストを増加させることなく、多くのサーバが接続可能なネットワークを構築できる。ここで、スイッチを多段階に接続した場合には、各サーバ間がパケットを送受信する経路が複数存在することとなる。また、各パケットを送受信する経路のうち、レイテンシが同程度の経路も複数存在する。しかしながら、従来の先着学習方式のスイッチでは、フラッディングを行う際にパケットを送出する順序が固定されているため、各サーバがパケットを送受信する経路が偏ってしまう。しかし、スイッチ１０〜１０ｉは、フラッディングを行う際に、パケットを送出する順序を固定せずに、各ポートからパケットを送出するので、経路の偏りを防ぐことができる。
【０１１６】
（２）パケット処理部について
上述したパケット処理部１３は、パケット転送処理部２１、ＭＡＣ学習処理部２２、先着学習処理部２３、経路分散処理部２４が協調して処理を行っていた。しかし、実施例は、これに限定されるものではなく、パケット転送処理部２１、ＭＡＣ学習処理部２２、先着学習処理部２３、経路分散処理部２４の機能は、任意に統合、分散させることができる。
【０１１７】
また、上述したスイッチ１０は、パケットを受信したポート以外の全てのポートから、パケットを非固定的な順序で送出したが、実施例はこれに限定されるものではない。例えば、スイッチ１０は、パケットを受信したポート以外のポートからパケットを送出するポートを選択し、選択したポート以外のポートから非固定的な順序でパケットを送出してもよい。このような処理を実行した場合は、スイッチ１０は、例えばサーバ等のスイッチではない装置が接続するポートをフラッディングの対象から除外するので、ネットワークのトラフィック量を削減できる。
【０１１８】
（３）ネットワークについて
上述した情報処理システム１および情報処理システム１ａは、ＦＡＴ−Ｔｒｅｅ型のネットワークを有した。しかし、実施例はこれに限定されるものではなく、任意のトポロジで複数のスイッチ１０〜１０ｉを接続することとしてもよい。すなわち、スイッチ１０は、ネットワークのトポロジによらず、パケットを送受信する経路の偏りを解消することができる。
【０１１９】
（４）プログラム
ところで、実施例１、実施例２に係るスイッチ１０は、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムをスイッチ１０が有するコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図１０を用いて、スイッチ１０と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１０は、中継プログラムを実行するコンピュータの一例を説明するための図である。
【０１２０】
図１０に例示されたコンピュータ１００は、ＲＯＭ（Read  Only  Memory）１１０、ＨＤＤ（Hard  Disk  Drive）１２０、ＲＡＭ（Random  Access  Memory）１３０、ＣＰＵ（Central  Processing  Unit）１４０がバス１６０で接続される。また、図１０に例示されたコンピュータ１００は、パケットを送受信するためのＩ／Ｏ（Input  Output）１５０を有する。
【０１２１】
ＲＡＭ１３０には、中継プログラム１３１があらかじめ保持される。ＣＰＵ１４０が中継プログラム１３１をＲＡＭ１３０から読み出して実行することによって、図１０に示す例では、中継プログラム１３１は、中継プロセス１４１として機能するようになる。なお、中継プロセス１４１は、図２に示した接続部１１、ＭＡＣ処理部１２、パケット処理部１３と同様の機能を発揮する。なお、図１０では省略したが、中継プログラム１３１には、図２に示す統計情報２５、ＦＤＢ２６、先着学習テーブル２７と同様の情報がデータとして含まれる。
【０１２２】
なお、本実施例で説明した中継プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＭＯ（Magneto  Optical  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１２３】
１、１ａ  情報処理システム
２〜５、２ａ〜５ａ  サーバ
１０〜１０ｉ  スイッチ
１１  接続部
１２  ＭＡＣ処理部
１３  パケット処理部
１４  メモリ
１５  ＣＰＵ
１６、１７  ポート
１８、１９  物理層処理部
２０  ＭＡＣフレーム処理部
２１  パケット転送処理部
２２  ＭＡＣ学習処理部
２３  先着学習処理部
２４  経路分散処理部
２５  統計情報
２６  ＦＤＢ
２７  先着学習テーブル
【図１】
0005888036.tif 000002
【図２】
0005888036.tif 000003
【図３】
0005888036.tif 000004
【図４】
0005888036.tif 000005
【図５】
0005888036.tif 000006
【図６】
0005888036.tif 000007
【図７】
0005888036.tif 000008
【図８】
0005888036.tif 000009
【図９】
0005888036.tif 000010
【図１０】
0005888036.tif 000011
【図１１】
0005888036.tif 000012
【図１２】
0005888036.tif 000013