(57)【要約】【課題】スイッチの多段接続網における１つのスイッチで学習すべきアドレスの数を削減する。【解決手段】同一階層のスイッチには同一ハッシュ関数を用意し、パケットの送信元アドレスを学習する上位階層スイッチを送信元アドレスのハッシュ値で特定し、パケットの転送を行う上位階層スイッチを宛先アドレスのハッシュ値で特定する。そして、パケットの転送を行う上位階層スイッチについては通常どおりにパケットを出力するが、学習を行う上位階層スイッチには学習用パケットを生成して送信する。これによって、パケットの送信元アドレスの学習を行う上位階層のスイッチ、すなわち自スイッチにパケットを転送してくる上位階層スイッチを、ハッシュ関数によって１つに絞り込むことができ、上位階層スイッチ全体で重複無く送信元アドレスを分担して学習するので、１つのスイッチで学習すべきアドレスの数が削減される。【選択図】図１０
2010288168.tif 000002
【特許請求の範囲】
【請求項１】
スイッチの多段接続網における末端スイッチとして動作するスイッチであって、
複数のポートと、
ポートの識別子と当該ポートに接続されている下層の装置のアドレスとを対応付けて格納するデータベースを含み、前記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部と、
前記ポートで受信したパケットのデータを格納するメモリを有し、前記第１の処理部に従って前記メモリに格納されているパケットのデータを前記ポートに出力する第２の処理部と、
を有し、
前記第１の処理部は、
前記ポートに接続されている下層の装置から受信したパケットの送信元アドレスを前記データベースに登録するための学習処理を実施し、
前記ポートに接続されている下層の装置から受信したパケットの宛先アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応する転送先スイッチが接続されている第１の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを前記第１の出力先ポートへ出力させ、
前記送信元アドレスについて前記所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応し且つ前記送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを学習用パケットとして前記第２の出力先ポートへ出力させる
スイッチ。
【請求項２】
前記第２の出力先ポートが、前記学習用パケットの送出のための帯域を制限する
請求項１記載のスイッチ。
【請求項３】
前記第２の出力先ポートが、複数の学習用パケットのうち同一の前記送信元アドレスのパケットを特定し、当該パケットの出力個数を制限する
請求項１記載のスイッチ。
【請求項４】
スイッチの多段接続網における最上位階層のスイッチとして動作するスイッチであって、
複数のポートと、
ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースを含み、前記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部と、
前記ポートで受信したパケットのデータを格納するメモリを有し、前記第１の処理部に従って前記メモリに格納されているパケットのデータを前記ポートに出力する第２の処理部と、
を有し、
前記複数のポートの各々が、
当該ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別し、前記学習用パケットであれば当該パケットの送信元アドレスを前記第１の処理部に出力し、前記転送すべきパケットであれば当該パケットの宛先アドレスを前記第１の処理部に出力し、
前記第１の処理部は、
前記複数のポートから受信した前記送信元アドレスを前記データベースに登録するための学習処理を実施し、
前記複数のポートから受信した前記宛先アドレスで前記データベースを検索して出力先ポートを特定し、前記第２の処理部に対して前記パケットのデータを前記出力先ポートへ出力させる
スイッチ。
【請求項５】
前記複数のポートの各々が、
受信したパケットに、学習用パケットであることを表すデータが含まれているか否かにより、前記学習用パケットであるか前記転送すべきパケットであるかを識別する
請求項４記載のスイッチ。
【請求項６】
前記複数のポートの各々が、
受信したパケットの送信元アドレスについて１つ下位の階層のスイッチで使用されているハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを前記学習用パケットであると識別し、
当該受信したパケットの宛先アドレスについて前記ハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを前記転送用パケットであると識別する
請求項４記載のスイッチ。
【請求項７】
スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチとして動作するスイッチであって、
複数のポートと、
ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースを含み、前記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部と、
前記ポートで受信したパケットのデータを格納するメモリを有し、前記第１の処理部に従って前記メモリに格納されているパケットのデータを前記ポートに出力する第２の処理部と、
を有し、
前記複数のポートの各々が、
当該ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別し、前記学習用パケットであれば当該パケットの送信元アドレスを前記第１の処理部に出力し、前記転送すべきパケットであれば当該パケットの宛先アドレスを前記第１の処理部に出力し、
前記第１の処理部は、
前記複数のポートから受信した前記送信元アドレスを前記データベースに登録するための学習処理を実施し、
前記複数のポートから受信した前記宛先アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応する転送先スイッチが接続されている第１の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを前記第１の出力先ポートへ出力させ、
前記複数のポートから受信した前記送信元アドレスについて前記所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応し且つ前記送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを前記第２の出力先ポートへ出力させる
スイッチ。
【請求項８】
スイッチの多段接続網における末端スイッチとして動作するスイッチにより実行されるアドレス学習方法であって、
ポートに接続されている下層の装置からパケットを受信した場合、所定のハッシュ関数による当該パケットの宛先アドレスについての第１のハッシュ値から前記パケットの転送先スイッチが接続されている第１の出力先ポートを特定し、前記パケットを前記第１の出力先ポートから出力するステップと、
前記パケットの送信元アドレスを、ポートの識別子と前記ポートに接続されている下層の装置のアドレスと対応付けて格納するデータベースに格納するための学習処理を実施するステップと、
前記所定のハッシュ関数による前記パケットの送信元アドレスについての第２のハッシュ値から前記パケットの送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定し、前記パケットについての学習用パケットを前記第２の出力先ポートから出力するステップと、
を含むアドレス学習方法。
【請求項９】
スイッチの多段接続網における最上位階層のスイッチとして動作するスイッチにより実行されるアドレス学習方法であって、
ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップと、
前記送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップと、
前記転送すべきパケットであれば、当該パケットの宛先アドレスで前記データベースを検索して出力先ポートを特定し、前記転送すべきパケットを前記出力先ポートから出力するステップと、
を含むアドレス学習方法。
【請求項１０】
スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチにより実行されるアドレス学習方法であって、
ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップと、
前記送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップと、
前記送信元アドレスの学習用パケットであれば、前記送信元アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応し且つ前記送信元アドレスを学習すべき上位階層のスイッチが接続されている第１の出力先ポートを特定して、前記パケットのデータを前記第１の出力先ポートから出力するステップと、
前記転送すべきパケットであれば、当該パケットの宛先アドレスについて前記所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応する転送先スイッチが接続されている第２の出力先ポートを特定して、前記パケットのデータを前記第２の出力先ポートから出力するステップと、
を含むアドレス学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、多段接続されたスイッチにおけるアドレス学習に関連する技術に関する。
【背景技術】
【０００２】
ＦＡＴ  Ｔｒｅｅ等のようにスイッチを多段接続する場合には、例えば図１に示すようなネットワークトポロジが採用される。図１の例では、２段構成のネットワークの例を示しており、下位層のリーフスイッチＳＷ１乃至ＳＷｍと、上位層のルートスイッチＳＷ１乃至ＳＷｎとが設けられている。リーフスイッチの各々は、全てのルートスイッチＳＷ１乃至ＳＷｎに接続されている。また、リーフスイッチの各々は、任意の数の端末装置に接続されている。図１の例では、リーフスイッチＳＷ１には、ｋ１個の端末装置Ｔ(1-1)乃至Ｔ(1-k1)が接続されており、リーフスイッチＳＷｍには、ｋｍ個の端末装置Ｔ(m-1)乃至Ｔ(m-km)が接続されている。その他のリーフスイッチについては図示を省略しているだけで、全リーフスイッチＳＷ１乃至ＳＷｍには、全部でｋ個の端末装置が接続されているものとする。
【０００３】
このようなネットワークにおいて、例えば端末装置Ｔ(1-1)から端末装置Ｔ(m-km)へパケットを送信する場合を考える。そうすると、リーフスイッチＳＷ１が端末装置Ｔ(1-1)からのパケットを受信し、例えばルートスイッチＳＷ１に転送する。ルートスイッチＳＷ１は、受信パケットをリーフスイッチＳＷｍに転送する。そして最後にリーフスイッチＳＷｍが端末装置Ｔ(m-km)に出力する。図１のようなネットワークでは経路が冗長化されているので、リーフスイッチＳＷ１は、どのルートスイッチにパケットを転送してもよいが、負荷分散のために例えばルートスイッチＳＷ１に転送先を限定する。しかしながら、複数のルートスイッチが例えば端末装置Ｔ(1-1)にパケットを転送する可能性がある場合には、フラッディングを避けるためには、当該複数のルートスイッチで端末装置Ｔ(1-1)のアドレスを学習する必要がある。すなわち、ルートスイッチＳＷ１乃至ＳＷｎで、端末装置のアドレスを冗長して保持する必要がある。そうすると、端末装置の増加に伴い、大量のアドレスをルートスイッチＳＷ１乃至ＳＷｎで保持しなければならなくなる。逆に、ルートスイッチのメモリ容量には限界があるので、当該メモリ容量によって端末装置の数が制限されてしまう。
【０００４】
なお、アドレステーブルの容量を少なくすることを目的として、以下のような構成を有するスイッチングハブが存在している。具体的には、複数の端末通信用ＬＡＮポート及びスイッチ通信用ＬＡＮポートと、複数の端末とのスイッチングを制御するスイッチング制御手段と、設定によりＬＡＮを複数に分離するＶＬＡＮ制御手段と、スイッチ内のアドレステーブルを管理するアドレステーブル管理手段とを有し、伝送媒体とのアクセス制御方式としてＣＳＭＡ／ＣＤを使用したローカルエリアネットワークを複数接続し、同時にそれぞれポート毎に中継動作し、設定によりＬＡＮを複数に分離する。そして、スイッチ間でＶＬＡＮ内のアドレステーブルを分担するスイッチ間アドレス管理手段と、どのＶＬＡＮに属するフレームか識別するＩＤを中継フレームに付加または削除するＶＬＡＮＩＤ処理手段と、同一ＶＬＡＮ内にフレームの転送を行うＶＬＡＮ内転送処理手段とをさらに有する。しかしながら、このスイッチングハブは、カスケード式にスイッチングハブを接続する際には有効であるが、図１に示すようなネットワークでは効果的ではない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１５０５５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上のような従来技術に鑑み、本技術の目的は、スイッチの多段接続網において１つのスイッチで学習しなければならないアドレスの数を削減するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本技術の第１の態様に係るアドレス学習方法は、スイッチの多段接続網における末端スイッチとして動作するスイッチにより実行されるアドレス学習方法であり、ポートに接続されている下層の装置からパケットを受信した場合、所定のハッシュ関数による当該パケットの宛先アドレスについての第１のハッシュ値からパケットの転送先スイッチが接続されている第１の出力先ポートを特定し、上記パケットを第１の出力先ポートから出力するステップと、上記パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層の装置のアドレスと対応付けて格納するデータベースに格納するための学習処理を実施するステップと、所定のハッシュ関数による上記パケットの送信元アドレスについての第２のハッシュ値から上記パケットの送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定し、上記パケットについての学習用パケットを第２の出力先ポートから出力するステップとを含む。
【０００８】
本技術の第２の態様に係るアドレス学習方法は、スイッチの多段接続網における最上位階層のスイッチとして動作するスイッチにより実行されるアドレス学習方法であり、ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップと、送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップと、転送すべきパケットであれば、当該パケットの宛先アドレスでデータベースを検索して出力先ポートを特定し、転送すべきパケットを出力先ポートから出力するステップとを含む。
【０００９】
本技術の第３の態様に係るアドレス学習方法は、スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチにより実行されるアドレス学習方法であり、ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップと、送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップと、送信元アドレスの学習用パケットであれば、送信元アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応し且つ送信元アドレスを学習すべき上位階層のスイッチが接続されている第１の出力先ポートを特定して、上記パケットのデータを第１の出力先ポートから出力するステップと、転送すべきパケットであれば、当該パケットの宛先アドレスについて所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応する転送先スイッチが接続されている第２の出力先ポートを特定して、上記パケットのデータを第２の出力先ポートから出力するステップとを含む。
【発明の効果】
【００１０】
スイッチの多段接続網において１つのスイッチで学習しなければならないアドレスの数が削減される。
【図面の簡単な説明】
【００１１】
【図１】図１は、従来技術を説明するための図である。
【図２】図２は、第１の実施の形態におけるパケットの流れを説明するための図である。
【図３】図３は、第１の実施の形態におけるスイッチの機能ブロック図である。
【図４】図４は、第１の実施の形態におけるリーフスイッチのスイッチＬＳＩ（Large Scale Integrated circuit）の機能ブロック図である。
【図５】図５は、リーフスイッチのスイッチＬＳＩにおけるＦＤＢ（Forwarding DataBase）に格納されるデータの一例を示す図である。
【図６】図６は、通常のパケットのパケットフォーマットを示す図である。
【図７】図７は、第１の実施の形態における学習用パケットのパケットフォーマットを示す図である。
【図８】図８は、第１の実施の形態におけるルートスイッチのスイッチＬＳＩの機能ブロック図である。
【図９】図９は、ルートスイッチのスイッチＬＳＩにおけるＦＤＢに格納されるデータの一例を示す図である。
【図１０】図１０は、第１の実施の形態におけるネットワーク全体の処理フローを示す図である。
【図１１】図１１は、第２の実施の形態におけるリーフスイッチのスイッチＬＳＩの機能ブロック図である。
【図１２】図１２は、第２の実施の形態におけるルートスイッチのスイッチＬＳＩの機能ブロック図である。
【図１３】図１３は、第３乃至第６の実施の形態におけるリーフスイッチのスイッチＬＳＩの機能ブロック図である。
【図１４】図１４は、第７の実施の形態におけるパケットの流れを説明するための図である。
【図１５】図１５は、第７の実施の形態における中間スイッチのスイッチＬＳＩの機能ブロック図である。
【図１６】図１６は、第７の実施の形態におけるネットワーク全体の処理フローを示す図である。
【図１７】図１７は、実施の形態の第１乃至第３の側面に係るスイッチの機能ブロック図である。
【図１８】図１８は、実施の形態の第４の側面に係る処理の処理フローを示す図である。
【図１９】図１９は、実施の形態の第５の側面に係る処理の処理フローを示す図である。
【図２０】図２０は、実施の形態の第６の側面に係る処理の処理フローを示す図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
第１の実施の形態における、スイッチ（例えばＬ２スイッチ）の多段接続網における動作の概要を図２を用いて説明する。ネットワークトポロジは図１と同じである。本実施の形態では、リーフスイッチＳＷ１乃至ＳＷｍは、全て同じハッシュ関数及びハッシュ値とルートスイッチとの対応関係を保持している。そして、例えば端末装置Ｔ(1-1)から端末装置Ｔ(m-km)宛てにパケットを送信する場合には、パケットを受信したリーフスイッチＳＷ１で、ハッシュ関数によりパケットの宛先アドレス（例えば端末装置Ｔ(m-km)のＭＡＣアドレス）のハッシュ値を算出し、当該ハッシュ値からパケット転送先のルートスイッチ（ここではルートスイッチＳＷ１）を特定する。そして、リーフスイッチＳＷ１は、受信パケットをルートスイッチＳＷ１に転送する。ルートスイッチＳＷ１は、送信元アドレスの学習を行うことなく、アドレスとポート番号との対応付けを格納するアドレステーブル（学習テーブルとも呼ぶ）を宛先アドレスで検索して出力先ポートを特定し、当該出力先ポートに接続されているリーフスイッチＳＷｍに送信する。但し、学習していない場合には、アドレステーブルからは出力先ポートを特定できないので、その場合にはブロードキャストする場合もある。リーフスイッチＳＷｍは、パケットを受信し、宛先アドレスでアドレステーブルを検索して出力先ポートを特定し、受信パケットを出力先ポートに接続されている端末装置Ｔ(m-km)に出力する。
【００１３】
このような動作に加え、リーフスイッチＳＷ１はパケットの送信元アドレス（例えば端末装置Ｔ(1-1)のＭＡＣアドレス）のアドレス学習処理を実施する。さらに、本実施の形態では、リーフスイッチＳＷ１は、ハッシュ関数によりパケットの送信元アドレスのハッシュ値を算出し、当該ハッシュ値からパケットの送信元アドレスの学習を行うルートスイッチ（ここではルートスイッチＳＷ２）を特定する。そして、リーフスイッチＳＷ１は、受信パケットから学習用パケットを生成して、図２で点線矢印で示すように、ルートスイッチＳＷ２に学習用パケットを送信する。ルートスイッチＳＷ２は、学習用パケットを受信すると、転送を行うことなく、送信元アドレスのアドレス学習処理を行う。
【００１４】
逆に、例えば端末装置Ｔ(m-km)から端末装置Ｔ(1-1)宛てにパケットを送信する場合には、パケットを受信したリーフスイッチＳＷｍで、ハッシュ関数によりパケットの宛先アドレス（例えば端末装置Ｔ(1-1）のＭＡＣアドレス）のハッシュ値を算出し、当該ハッシュ値からパケット転送先のルートスイッチ（ここではルートスイッチＳＷ２）を特定する。そして、リーフスイッチＳＷｍは、受信パケットをルートスイッチＳＷ２に転送する。上で述べたように、ルートスイッチＳＷ２では、端末装置Ｔ(1-1)を送信元とする学習用パケットでアドレスの学習を実施しているので、どのポートにパケットを出力すべきかを特定できる。従って、ルートスイッチＳＷ２は、送信元アドレスの学習を行うことなく、アドレステーブルを宛先アドレスで検索して出力先ポートを特定し、当該出力先ポートに接続されているリーフスイッチＳＷ１に送信する。リーフスイッチＳＷ１は、宛先アドレスでアドレステーブルを検索して出力先ポートを特定し、受信パケットを端末装置Ｔ(1-1)に出力する。
【００１５】
また、上で述べたように、リーフスイッチＳＷｍは、ハッシュ関数によりパケットの送信元アドレス（例えば端末装置Ｔ(m-km)のＭＡＣアドレス）のハッシュ値を算出し、当該ハッシュ値からパケットの送信元アドレスの学習を行うルートスイッチ（ここではルートスイッチＳＷ１）を特定する。そして、リーフスイッチＳＷｍは、受信パケットから学習用パケットを生成して、ルートスイッチＳＷ１に学習用パケットを送信する。ルートスイッチＳＷ１は、学習用パケットを受信すると、転送を行うことなく、送信元アドレスのアドレス学習処理を行う。
【００１６】
このように、全てのリーフスイッチＳＷ１乃至ＳＷｍにおいて同一のハッシュ関数及びハッシュ値とルートスイッチとの対応関係とを保持しておき、特定の端末装置宛てのパケットについては、必ず１つのルートスイッチを経由することにする。そのため、そのようなルートスイッチには、特定の端末装置についてのアドレスを学習するための学習用パケットを送信する。このようにすれば、ｎ個のルートスイッチの各々は、ｋ個の端末装置が存在する場合にも、ｋ／ｎだけアドレスを学習すれば良くなるので、学習すべきアドレスの数を削減することができる。
【００１７】
なお、ハッシュ関数は、例えば、ＣＲＣ（Cyclic Redundancy Checking）でよく知られたＣＲＣ３２を用いたＣＲＣ３２（ｘ）％ｎ（ｎはルートスイッチの数であって、ＭＡＣアドレスのＣＲＣ３２の値の法ｎ）や、Ｌビットシフトを用いた（ｘ＜＜Ｌ）％ｍ（ＭＡＣアドレスのＬビット左シフトの値の法ｎ）などを用いることができる。ｎ個の値を出力する他のハッシュ関数であっても良い。
【００１８】
次に、図２に示したような多段接続網に含まれるスイッチの構成について説明する。図３にスイッチの構成の概要を示す。リーフスイッチもルートスイッチも基本的な構成は同じである。本実施の形態に係るスイッチは、スイッチＬＳＩ１００と、スイッチＬＳＩ１００と接続されているスイッチ管理プロセッサ２００とを有する。スイッチ管理プロセッサ２００は、例えばアドレス学習についての処理などを実施するための管理プログラム２１０を実行している。
【００１９】
スイッチＬＳＩ１００は、ＦＤＢ１１０と、スイッチ管理プロセッサ２００とのインタフェースとなる管理部１２０と、ＦＤＢ１１０に接続され且つパケットの入出力についての処理を実施するパケット処理部１３０と、ＦＤＢ１１０及びパケット処理部１３０に接続されている複数のポート（図３ではポートＡ乃至Ｃ）とを含む。パケット処理部１３０は、全ポートで共有する共有メモリ１３１を有する。また、ポートＡ乃至Ｃは、それぞれ入力ポートと出力ポートとを含む。なお、ポート数は３に限定されないが、以下では３つの例を説明する。
【００２０】
本実施の形態では、アドレス学習についての詳細処理は主旨ではないので、説明を省略する。また、これに関連して管理部１２０及びスイッチ管理プロセッサ２００についても説明を省略する。
【００２１】
次に、本実施の形態に係るリーフスイッチのスイッチＬＳＩ１００Ｌ１の構成を図４を用いて説明する。スイッチＬＳＩ１００Ｌ１は、入力ポートＡ乃至Ｃと、出力ポートＡ乃至Ｃと、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているＦＤＢ１１０Ｌ１と、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているパケットデータ処理部１３０Ｌ１とを有する。ＦＤＢ１１０Ｌ１とパケットデータ処理部１３０Ｌ１は接続されている。また、パケットデータ処理部１３０Ｌ１は、共有メモリ１３１Ｌ１を含む。さらに、出力ポートＡはタグ付加部１４１Ａを含み、出力ポートＢはタグ付加部１４１Ｂを含み、出力ポートＣはタグ付加部１４１Ｃを含む。
【００２２】
入力ポートＡ乃至Ｃは、端末装置が接続されている下流ポートからの受信パケットについては、送信元アドレス及び宛先アドレスをＦＤＢ１１０Ｌ１に出力する。ルートスイッチが接続されている上流ポートからの受信パケットについては、宛先アドレスをＦＤＢ１１０Ｌ１に出力する。また、入力ポートＡ乃至Ｃは、受信パケットのデータをパケットデータ処理部１３０Ｌ１に出力して、共有メモリ１３１Ｌ１に格納させる。
【００２３】
ＦＤＢ１１０Ｌ１は、端末装置が接続されている下流ポートからの受信パケットの送信元アドレス及び宛先アドレスを受け取ると、送信元アドレスについては周知のアドレス学習処理を実施する。また、送信元アドレス及び宛先アドレスについて、ハッシュ関数でハッシュ値を算出する。さらに、ルートスイッチが接続されている上流ポートからの受信パケットの宛先アドレスについては、宛先アドレスでアドレステーブルを検索して出力ポートを特定する。
【００２４】
ＦＤＢ１１０Ｌ１は、アドレステーブルとして、ＭＡＣアドレスと出力ポートの識別子（ＩＤ）との対応関係に加え、例えばハッシュ値とルートスイッチのＩＤとの対応関係を保持するようにしても良いが、例えば図５のようなデータを保持するようにしても良い。図５の例では、アドレステーブルは、ＭＡＣアドレス又はハッシュ値と、ポート番号とを対応付けて格納している。図５の例では、ｈａｓｈａやｈａｓｈｂがハッシュ値であり、接続されているルートスイッチのいずれかを表す。ハッシュ値とポート番号の対は、最初に設定しておく。また、ハッシュ値が対応付けられているポートは、上位階層のスイッチが接続されているポートであり、それ以外のＭＡＣアドレスが登録されているのが下位階層の端末装置が接続されているポートである。また、別側面では、登録されるハッシュ値は、送信元アドレスについてのハッシュ値と、宛先アドレスについてのハッシュ値とのいずれかである。送信元アドレスのハッシュ値と、宛先アドレスについてのハッシュ値とは一致している場合もある。
【００２５】
なお、ＦＤＢ１１０Ｌ１は、例えば図２における端末装置Ｔ(1-1)から端末装置Ｔ(1-2)へのパケットも受信する。このような場合には、ルートスイッチにパケットを転送する必要がないが、ルートスイッチからのパケットと同様に、宛先アドレスでアドレステーブルを検索してポート番号を特定する。
【００２６】
ＦＤＢ１１０Ｌ１は、端末装置が接続されている下流ポートからの受信パケットであれば、宛先アドレスのハッシュ値に対応するポート番号及び送信元アドレスのハッシュ値に対応するポート番号を特定すると、パケットデータ処理部１３０Ｌ１に通知して、パケットデータ処理部１３０Ｌ１に前者のポート番号の出力ポート（例えば出力ポートＣ）へ、受信パケットのデータを出力させる。また、パケットデータ処理部１３０Ｌ１に、後者のポート番号の出力ポート（例えば出力ポートＢ）へ、受信パケットと同じ学習用パケットのデータを出力させる。なお、パケットデータ処理部１３０Ｌ１でも、学習用パケットとして加工しても良いが、ここでは受信パケットと同じ学習用パケットのデータを出力させる。
【００２７】
ここでＦＤＢ１１０Ｌ１は、宛先アドレスのハッシュ値に対応するポート番号の出力ポートには、転送用のパケットであることを通知し、送信元アドレスのハッシュ値に対応するポート番号の出力ポートには、学習用パケットであることを通知する。
【００２８】
出力ポートＣは、ＦＤＢ１１０Ｌ１から、転送用のパケットである旨の通知を受けるので、パケットデータ処理部１３０Ｌ１から受け取ったデータを、転送用のパケットであるとして通常どおり出力する。すなわち、タグ付加部１４１Ｃは機能しない。具体的には、図６に示すように、パケットは、宛先アドレス（ＤＡ：Destination Address。１２バイト）と、送信元アドレス（ＳＡ：Source address。１２バイト）と、タイプ（Ｔｙｐｅ。４バイト）と、ペイロード（可変長）、ＦＣＳ（Frame Check Sequence。４バイト）とを含む。
【００２９】
一方、出力ポートＢは、ＦＤＢ１１０Ｌ１から、学習用パケットである旨の通知を受けるので、タグ付加部１４１Ｂは、パケットデータ処理部１３０Ｌ１から受け取ったパケットのデータを、学習用パケットとして加工する。具体的には、図７に示すように、転送用のパケットに含まれるデータに加えて、例えば送信元アドレスＳＡの後に、学習用パケットであることを表すタグＴａｇ（４バイト）を付加する。これによって、ルートスイッチは、受け取ったパケットが学習用パケットであることを容易に判別することができる。
【００３０】
ＦＤＢ１１０Ｌ１は、ルートスイッチに接続されている上流ポートからパケットを受信した場合には、受信パケットの宛先アドレスでアドレステーブルを検索して特定されるポート番号をパケットデータ処理部１３０Ｌ１に通知する。パケットデータ処理部１３０Ｌ１は、受信パケットのデータを、通知されたポート番号の出力ポートに出力する。また、ＦＤＢ１１０Ｌ１は、特定されたポート番号の出力ポートに、転送用のパケットであることを通知する。以下は、上で述べた出力ポートＣの場合の処理と同様である。
【００３１】
次に、図８に、本実施の形態に係るルートスイッチのスイッチＬＳＩ１００Ｒ１の構成を示す。スイッチＬＳＩ１００Ｒ１は、入力ポートＡ乃至Ｃと、出力ポートＡ乃至Ｃと、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているＦＤＢ１１０Ｒ１と、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているパケットデータ処理部１３０Ｒ１とを有する。ＦＤＢ１１０Ｒ１とパケットデータ処理部１３０Ｒ１は接続されている。また、パケットデータ処理部１３０Ｒ１は、共有メモリ１３１Ｒ１を含む。また、入力ポートＡはタグ検出部１５１Ａを含み、入力ポートＢはタグ検出部１５１Ｂを含み、入力ポートＣはタグ検出部１５１Ｃを含む。
【００３２】
入力ポートＡ乃至Ｃのタグ検出部１５１Ａ乃至１５１Ｃは、リーフスイッチＳＷ１乃至ＳＷｍからの受信パケットを検査して、図７に示したようなタグが含まれているか否かを判断する。タグが含まれている場合には学習用パケットであるから、学習用パケットであることを表すデータ及び送信元アドレスをＦＤＢ１１０Ｒ１に出力する。一方、タグが含まれていない場合には転送用パケットであるから、転送用パケットであることを表すデータ及び宛先アドレスをＦＤＢ１１０Ｒ１に出力する。また、入力ポートＡ乃至Ｃは、転送用パケットを受信した場合には、当該パケットのデータをパケットデータ処理部１３０Ｒ１に出力して、共有メモリ１３１Ｒ１に格納させる。なお、学習用パケットを受信した場合には、入力ポートＡ乃至Ｃで破棄しても良いが、転送用パケット及び学習用パケットの区別無くパケットデータ処理部１３０Ｒ１に出力し、入力ポート又はＦＤＢ１１０Ｒ１から学習用パケットであることを通知されればパケットデータ処理部１３０Ｒ１が学習用パケットのデータを破棄するようにしても良い。
【００３３】
ＦＤＢ１１０Ｒ１は、学習用パケットの送信元アドレスを受け取ると、当該送信元アドレスについて周知のアドレス学習処理を実施する。単純には、アドレステーブルに、送信元アドレスを、送信元アドレスを出力した入力ポートのポート番号に対応付けて登録する。
【００３４】
ＦＤＢ１１０Ｒ１は、転送用パケットの宛先アドレスを受け取ると、当該宛先アドレスでアドレステーブルを検索して出力ポートのポート番号を特定する。そして、パケットデータ処理部１３０Ｒ１に当該ポート番号を出力する。
【００３５】
ＦＤＢ１１０Ｒ１が保持するアドレステーブルの一例を図９に示す。図９の例では、ＭＡＣアドレスと出力ポート番号とが対応付けて登録されている。ルートスイッチＳＷ１乃至ＳＷｎでは、ハッシュ値が登録されることはない。上でも述べたように、ｋ個の端末装置が接続されており、ｎ個のルートスイッチが存在する場合には、１つのルートスイッチにはｋ／ｎ個のＭＡＣアドレスがアドレステーブルに登録される。
【００３６】
パケットデータ処理部１３０Ｒ１は、ポート番号をＦＤＢ１１０Ｒ１から受け取ると、対応する転送用パケットのデータを、ポート番号で特定される出力ポートに出力する。この際、ＦＤＢ１１０Ｒ１も、特定されたポート番号の出力ポートに転送を指示する。
【００３７】
上では学習用パケットを入力ポートで破棄する例及びパケットデータ処理部１３０Ｒ１で破棄する例を述べたが、出力ポートで破棄するようにしても良い。すなわち、入力ポート及びパケットデータ処理部１３０Ｒ１の処理については転送用パケットと学習用パケットで区別することなく実施し、ＦＤＢ１１０Ｒ１が、学習用パケットであることを表すデータを、特定されたポート番号の出力ポートに対して出力して、当該学習用パケットであることを表すデータを受け取った出力ポートが、パケットデータ処理部１３０Ｒ１から受け取ったパケットのデータを破棄するものである。
【００３８】
ＦＤＢ１１０Ｒ１によって特定されたポート番号の出力ポートは、パケットデータ処理部１３０Ｒ１から受け取ったデータを、転送用のパケットであるとして通常どおり出力する。
【００３９】
以上のような処理を実施すれば、学習用パケットについては送信元アドレスを従来どおり学習し、一方転送用パケットについては宛先アドレスでアドレステーブルを検索して該当する出力ポートを特定し、当該出力ポートからパケットを出力する通常の処理が行われる。
【００４０】
次に、図２に示したネットワークについて１つのパケットを端末装置が送信した場合の処理について、図１０を用いて説明する。ここでは、上で述べたように図２の端末装置Ｔ(1-1)から端末装置Ｔ(m-km)へパケットを送信する場合の処理を説明する。リーフスイッチＳＷ１の入力ポートは、端末装置Ｔ(1-1)からパケットを受信する（ステップＳ１）。入力ポートは、送信元アドレス及び宛先アドレスをＦＤＢ１１０Ｌ１に出力し、ＦＤＢ１１０Ｌ１は、送信元アドレスについてのハッシュ値Hash(DA)及び宛先アドレスについてのハッシュ値Hash(SA)を算出する。さらに、ＦＤＢ１１０Ｌ１は、ハッシュ値Hash(DA)に対応するポート番号を特定し、パケットデータ処理部１３０Ｌ１に通知すると共に、当該ポート番号の例えば出力ポートＡに転送用パケットであることを通知する。パケットデータ処理部１３０Ｌ１は、入力ポートからパケットのデータを受け取り、共有メモリ１３１Ｌ１に格納し、その後ＦＤＢ１１０Ｌ１から通知されたポート番号の出力ポートＡにパケットのデータを出力し、出力ポートＡは、当該パケットを出力する（ステップＳ３）。
【００４１】
ルートスイッチＳＷ１の入力ポートＡは、ステップＳ３で特定されたリーフスイッチＳＷ１の出力ポートＡに接続されており、転送用パケットを受信する（ステップＳ５）。ルートスイッチＳＷ１の入力ポートＡは、受信パケットから転送用パケットであると識別し、転送用パケットの宛先アドレスをＦＤＢ１１０Ｒ１に出力する。ＦＤＢ１１０Ｒ１は、宛先アドレスでアドレステーブルを検索してポート番号を特定し、パケットデータ処理部１３０Ｒ１に通知する。また、入力ポートＡは、受信パケットをパケットデータ処理部１３０Ｒ１に出力して、パケットデータ処理部１３０Ｒ１は、共有メモリ１３１Ｒ１に格納し、その後ＦＤＢ１１０Ｒ１からポート番号の通知を受けると、当該出力ポート番号の例えば出力ポートＢにパケットのデータを出力する。出力ポートＢは、パケットデータ処理部１３０Ｒ１から受け取ったパケットのデータを出力する（ステップＳ７）。
【００４２】
リーフスイッチＳＷｍの上流ポートである入力ポートＡは、ステップＳ７で特定されたルートスイッチＳＷ１の出力ポートＢに接続されており、転送用パケットを受信する（ステップＳ９）。リーフスイッチＳＷ１の入力ポートＡは、転送用パケットの宛先アドレスをＦＤＢ１１０Ｌ１に出力し、パケットのデータをパケットデータ処理部１３０Ｌ１に出力し、共有メモリ１３１Ｌ１に格納させる。ＦＤＢ１１０Ｌ１は、宛先アドレスでアドレステーブルを検索してポート番号を特定し、パケットデータ処理部１３０Ｌ１に通知する。ＦＤＢ１１０Ｌ１は、さらに特定されたポート番号の出力ポートに、転送用パケットの出力を指示する。パケットデータ処理部１３０Ｌ１は、通知されたポート番号の例えば出力ポートＣに、パケットのデータを出力し、出力ポートＣは、パケットデータ処理部１３０Ｌ１から受け取ったパケットのデータを端末装置Ｔ(m-km)に出力する（ステップＳ１１）。
【００４３】
また、リーフスイッチＳＷ１のＦＤＢ１１０Ｌ１は、受信パケットの送信元アドレスＳＡのアドレス学習処理を実施する（ステップＳ１３）。そして、ＦＤＢ１１０Ｌ１は、送信元アドレスについて算出されたハッシュ値Hash(SA)に対応するポート番号を特定し、パケットデータ処理部１３０Ｌ１に通知すると共に、当該ポート番号の例えば出力ポートＢに学習用パケットであることを通知する。パケットデータ処理部１３０Ｌ１は、共有メモリ１３１Ｌ１に格納されている受信パケットのデータを、ＦＤＢ１１０Ｌ１から通知されたポート番号の出力ポートＢに出力し、出力ポートＢは、受信パケットのデータを学習用パケットとして出力する（ステップＳ１５）。本実施の形態では、出力ポートＢのタグ付加部１３１Ｂが、受信パケットのデータに、学習用パケットであることを表すタグを付加して、出力する。
【００４４】
ルートスイッチＳＷ２の入力ポートＡは、リーフスイッチＳＷ１の出力ポートＢに接続されており、パケットを受信すると、当該パケットが学習用パケットであると特定する（ステップＳ１７）。そして、入力ポートＡは、学習用パケットの送信元アドレスをＦＤＢ１１０Ｒ１に出力する。ＦＤＢ１１０Ｒ１は、受け取った送信元アドレスについてアドレス学習処理を実施する（ステップＳ１９）。転送は行わない。
【００４５】
以上のような処理を実施することによって、１つのルートスイッチで学習すべき送信元アドレスの数を削減することができるようになる。
【００４６】
［実施の形態２］
第１の実施の形態では、リーフスイッチＳＷ１乃至ＳＷｍの出力ポートにおいてタグ付加部１４１がパケットにタグを付加することによって転送用パケットとは異なる学習用パケットを生成していた。しかしながら、リーフスイッチＳＷ１乃至ＳＷｍにおいて明らかに異なる学習用パケットを生成する必要はない。
【００４７】
第２の実施の形態では、リーフスイッチＳＷ１乃至ＳＷｍでは転送用パケットと同じパケットを、学習用パケットとしてルートスイッチに送信し、ルートスイッチ側で学習用パケットであるか転送用パケットであるかを識別するものとする。
【００４８】
具体的には、第２の実施の形態に係るリーフスイッチＳＷ１乃至ＳＷｍは、図１１に示すような構成となる。すなわち図１１のスイッチＬＳＩ１００Ｌ２は、入力ポートＡ乃至Ｃと、出力ポートＡ乃至Ｃと、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているＦＤＢ１１０Ｌ２と、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているパケットデータ処理部１３０Ｌ２とを有する。ＦＤＢ１１０Ｌ２とパケットデータ処理部１３０Ｌ２は接続されている。また、パケットデータ処理部１３０Ｌ２は、共有メモリ１３１Ｌ２を含む。
【００４９】
上で述べたように、出力ポートＡ乃至Ｃは、タグ付加部を含まないので、入力ポートＡ乃至Ｃ、ＦＤＢ１１０Ｌ２及びパケットデータ処理部１３０Ｌ２が第１の実施の形態と同様の処理を実施しても、出力ポートＡ乃至Ｃは、転送用パケットと同じパケットを学習用パケットとして出力する。なお、学習用パケットの送信先のルートスイッチと、転送用パケットの転送先のルートスイッチとが一致する場合には、２つのパケットを送信するのではなく、１つのパケットのみを送信するようにしても良い。
【００５０】
このように転送用パケットと同じパケットを学習用パケットとして出力する場合には、ルートスイッチＳＷ１乃至ＳＷｎ側で特別な処理を実施して学習用パケットであるか転送用パケットであるかを識別しなければならない。
【００５１】
第２の実施の形態においては、図１２に示すような構成をルートスイッチに採用する。スイッチＬＳＩ１００Ｒ２は、入力ポートＡ乃至Ｃと、出力ポートＡ乃至Ｃと、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているＦＤＢ１１０Ｒ２と、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているパケットデータ処理部１３０Ｒ２とを有する。ＦＤＢ１１０Ｒ２とパケットデータ処理部１３０Ｒ２は接続されている。また、パケットデータ処理部１３０Ｒ２は、共有メモリ１３１Ｒ２を含む。さらに、入力ポートＡは種別判定部１６１Ａを含み、入力ポートＢは種別判定部１６１Ｂを含み、入力ポートＣは種別判定部１６１Ｃを含む。
【００５２】
第１の実施の形態と比較すると、タグ検出部１５１の代わりに種別判定部１６１が採用されている。種別判定部１６１は、リーフスイッチ（より正確には１階層下のスイッチ）で用いられているハッシュ関数を保持しており、当該ハッシュ関数により受信パケットの送信元アドレスについてのハッシュ値と宛先アドレスについてのハッシュ値とを算出する。送信元アドレスについてのハッシュ値が自スイッチの識別子（具体的には番号）と一致する場合には、学習用パケットと判別する。一方、宛先アドレスについてのハッシュ値が自スイッチの識別子と一致する場合には、転送用パケットと判別する。送信元アドレスについてのハッシュ値も宛先アドレスについてのハッシュ値も自スイッチの識別子に一致する場合もあり、その場合には転送用パケット及び学習用パケットとして識別する。
【００５３】
このように判別できれば、ＦＤＢ１１０Ｒ２、パケットデータ処理部１３０Ｒ２及び出力ポートＡ乃至Ｃは、基本的に第１の実施の形態と同じ動作を実施する。
【００５４】
従って、各ルートスイッチＳＷ１乃至ＳＷｎにおいて学習すべきアドレスの数を削減することができる。
【００５５】
なお、１つのパケットを受信して送信元アドレスについてのハッシュ値が自スイッチの識別子に一致しており且つ宛先アドレスについてのハッシュ値が自スイッチの識別子に一致している場合には、当該パケットを受信した入力ポートにおいて２つのパケット、すなわち学習用パケット及び転送用パケットを受信したものとして処理を実施すれば、ＦＤＢ１１０Ｒ２、パケットデータ処理部１３０Ｒ２及び出力ポートＡ乃至Ｃは、同じ処理を実施して問題ない。
【００５６】
［実施の形態３］
第１の実施の形態においては学習用パケットについてはタグを付加するような処理を施しているが、第２の実施の形態においてはリーフスイッチで何も処理を行っていない。但し、学習用パケットの分だけ、スイッチの多段接続網を流れるデータの量は増加してしまう。従って、学習用パケットのデータ量を減らす工夫を行うことが好ましい。
【００５７】
第３の実施の形態においては、学習用パケットには不要なペイロードの量を削減する。第３の実施の形態に係るリーフスイッチＳＷ１乃至ＳＷｍの構成を図１３に示す。すなわち図１３のスイッチＬＳＩ１００Ｌ３は、入力ポートＡ乃至Ｃと、出力ポートＡ乃至Ｃと、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているＦＤＢ１１０Ｌ３と、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているパケットデータ処理部１３０Ｌ３とを有する。ＦＤＢ１１０Ｌ３とパケットデータ処理部１３０Ｌ３は接続されている。また、パケットデータ処理部１３０Ｌ３は、共有メモリ１３１Ｌ３を含む。
【００５８】
そして、出力ポートＡは学習用パケット処理部１８１Ａを含み、出力ポートＢは学習用パケット処理部１８１Ｂを含み、出力ポートＣは学習用パケット処理部１８１Ｃを含む。学習用パケット処理部１８１は、学習用パケットであることを示すデータをＦＤＢ１１０Ｌ３から受け取ると、１パケットの最小サイズ（ここでは６４バイト）になるように、パケットのペイロードのデータ量を削減する。図６で示すように、パケットには最後に４バイトのＦＣＳが付加されるので、パケットの先頭からペイロードの末尾までが６０バイトになるように、それより後ろのペイロードのデータを破棄する。このようにペイロードの一部のデータを破棄する場合には、ＦＣＳについては算出し直す必要がある。なお、パケットデータ処理部１３０Ｌ３が、ペイロードの一部を破棄するような処理を行っても良い。
【００５９】
このようにすれば、スイッチの多段接続網を流れる学習用パケットのデータ量を削減することができる。また、本実施の形態は第１の実施の形態及び第２の実施の形態の何れに適用しても良い。
【００６０】
［実施の形態４］
アドレス学習の特性から、全ての学習用パケットの送受信をリーフスイッチとルートスイッチ間で保障する必要はない。従って、輻輳が発生しているような場合には、転送用パケットの方を優先すべきである。
【００６１】
そのため第４の実施の形態では、リーフスイッチＳＷ１乃至ＳＷｍの出力ポートＡ乃至Ｃで、学習用パケットの優先度を転送用パケットの優先度より下げる。例えば、図１３に示した構成において、学習用パケット処理部１８１Ａ乃至１８１Ｃは、出力ポートＡ乃至Ｃが学習用パケットを受け取ると、当該学習用パケットに対して低い優先度を設定する。優先度に応じたパケットの出力制御については従来のとおりであるからこれ以上述べないが、リーフスイッチＳＷ１乃至ＳＷｍから上位階層のスイッチへのリンクの帯域が学習用パケットにより所定レベル以上圧迫される場合には、当該学習用パケットの出力を控えて又は削除して、転送用パケットを優先して出力する。これによって、端末装置間の通常の通信への影響を抑えることができる。
【００６２】
さらに、輻輳が発生している場合にはルートスイッチ側でも入力ポートにおいてパケットが滞留する場合もあるので、ルートスイッチＳＷ１乃至ＳＷｎの入力ポートにおいても学習用パケットについては優先度を下げて、転送用パケットを優先して処理させるようにしても良い。
【００６３】
なお、本実施の形態は、第１乃至第３の実施の形態に適用可能である。
【００６４】
［実施の形態５］
第４の実施の形態はパケットの優先度を設定しているが、リーフスイッチとルートスイッチ間のリンクに、転送用パケット又は学習用パケットのための帯域幅を設定しても良い。例えば、図１３におけるリーフスイッチＳＷ１乃至ＳＷｍの出力ポートＡ乃至Ｃの学習用パケット処理部１８１Ａ乃至１８１Ｃが、例えば管理者などの指示に応じて学習用パケットのための最大帯域の入力を受け付けて設定する。このようにすれば、転送用パケットのための帯域が確保されて、転送用パケットが優先して転送されるようになる。
【００６５】
本実施の形態は、第１乃至第３の実施の形態に適用可能である。
【００６６】
［実施の形態６］
リーフスイッチＳＷ１乃至ＳＷｍの出力ポートＡ乃至Ｃにはバッファが設けられており、そのバッファには複数のパケットのデータが格納される場合がある。転送用パケットであればそれは全て出力すべきであるが、学習用パケットであればアドレス学習の特性から必ずしも出力する必要はない。特に、学習用パケットの重要なデータは送信元アドレスであるから、宛先アドレスが異なっていても送信元アドレスが同一であれば、その学習用パケットを同一視することができる。
【００６７】
例えば、図１３におけるリーフスイッチＳＷ１乃至ＳＷｍの出力ポートＡ乃至Ｃの学習用パケット処理部１８１Ａ乃至１８１Ｃは、同一送信元アドレスを含む複数の学習用パケットをパケットデータ処理部１３０Ｌ３から受け取って保持している場合には、そのうちの１つを選択して、残りを破棄する。このようにすれば、アドレス学習には影響を与えずに、学習用パケットによる帯域消費を抑えることができるようになる。なお、同一送信元アドレスを含む複数の学習用パケットのうち少なくとも１つでも破棄すれば、効果がある。
【００６８】
本実施の形態は、第１乃至第５の実施の形態に適用可能である。
【００６９】
［実施の形態７］
第１乃至第６の実施の形態では、２階層のスイッチ接続網の例を示しているが、当然３階層以上のスイッチ接続網も実現可能である。３階層のスイッチ接続網の一例を図１４に示す。図１４の例では、最下層のスイッチとしてリーフスイッチＳＷ１乃至ＳＷｍが設けられ、中間階層のスイッチとして中間スイッチＳＷ１乃至ＳＷｐが設けられ、最上位階層のスイッチとしてルートスイッチＳＷ１乃至ＳＷｎが設けられている。リーフスイッチＳＷ１の下流には、端末装置Ｔ(1-1)乃至Ｔ(1-k1)が接続されており、リーフスイッチＳＷｍの下流には、端末装置Ｔ(m-1)乃至Ｔ(m-km)が接続されている。他のリーフスイッチにも端末装置が接続されている。また、リーフスイッチＳＷ１乃至ＳＷｍは、それぞれ中間スイッチＳＷ１乃至ＳＷｐに接続されており、中間スイッチＳＷ１乃至ＳＷｐは、それぞれルートスイッチＳＷ１乃至ＳＷｎに接続されている。
【００７０】
このようなネットワークトポロジにおいても、リーフスイッチＳＷ１乃至ＳＷｍ及びルートスイッチＳＷ１乃至ＳＷｎについては、第１乃至第６の実施の形態で示したものと同じものを用いればよい。一方、中間スイッチＳＷ１乃至ＳＷｐでは、下位階層スイッチからの学習用パケットであれば中間スイッチＳＷ１乃至ＳＷｐで共通のハッシュ関数Hashmidにより送信元アドレスのハッシュ値Hashmid(SA)を算出して当該ハッシュ値に対応する上位階層スイッチに転送する。学習用パケットをさらに生成するような処理は行わない。一方、下位階層スイッチからの転送用パケットであれば宛先アドレスのハッシュ値Hashmid(DA)を算出して当該ハッシュ値に対応する上位階層スイッチに転送する。さらに、上位階層スイッチからの転送用パケットであればアドレステーブルを宛先アドレスで検索して出力先ポートを特定し、当該出力先ポートに当該転送用パケットを出力する。
【００７１】
図１４で端末装置Ｔ(1-1)から端末装置Ｔ(m-km)へパケットを送信する処理を説明する。端末装置Ｔ(1-1)からパケットを受信するとリーフスイッチＳＷ１は、宛先アドレスのハッシュ値HashL(DA)を算出し、当該ハッシュ値HashL(DA)に対応する中間スイッチＳＷ２を特定し、転送用パケットを中間スイッチＳＷ２に転送する。中間スイッチＳＷ２は、転送用パケットを受信すると、当該転送用パケットの宛先アドレスについてハッシュ値Hashmid(DA)を算出し、当該ハッシュ値Hashmid(DA)に対応するルートスイッチＳＷ１を特定し、転送用パケットをルートスイッチＳＷ１に転送する。ルートスイッチＳＷ１は、転送用パケットを受信すると、転送用パケットの宛先アドレスでアドレステーブルを検索して出力先ポートを特定し、当該出力先ポートから中間スイッチＳＷｐに転送用パケットを出力する。中間スイッチＳＷｐは、転送用パケットを受信して、当該転送用パケットの宛先アドレスでアドレステーブルを検索して出力先ポートを特定し、当該出力先ポートに転送用パケットを出力する。中間スイッチＳＷｐの特定された出力先ポートはリーフスイッチＳＷｍに接続されており、リーフスイッチＳＷｍは、転送用パケットを受信して、当該転送用パケットの宛先アドレスでアドレステーブルを検索して出力先ポートを特定し、当該出力先ポートから転送用パケットを出力する。リーフスイッチＳＷｍの特定された出力先ポートは端末装置Ｔ(m-km)に接続されており、転送用パケットが宛先アドレスに到達することになる。
【００７２】
第７の実施の形態に係る中間スイッチＳＷ１乃至ＳＷｐのスイッチＬＳＩ１００Ｍ１は、図１５に示すような構成となる。すなわち図１５のスイッチＬＳＩ１００Ｍ１は、入力ポートＡ乃至Ｃと、出力ポートＡ乃至Ｃと、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているＦＤＢ１１０Ｍ１と、入力ポートＡ乃至Ｃ及び出力ポートＡ乃至Ｃに接続されているパケットデータ処理部１３０Ｍ１とを有する。ＦＤＢ１１０Ｍ１とパケットデータ処理部１３０Ｍ１は接続されている。また、パケットデータ処理部１３０Ｍ１は、共有メモリ１３１Ｍ１を含む。また、入力ポートＡは種別判定部１７１Ａを含み、入力ポートＢは種別判定部１７１Ｂを含み、入力ポートＣは種別判定部１７１Ｃを含む。
【００７３】
入力ポートＡ乃至Ｃの種別判定部１７１Ａ乃至１７１Ｃは、リーフスイッチＳＷ１乃至ＳＷｍからの受信パケットが、学習用パケットであるか転送用パケットであるかを判別する。判別する手法は、図６に示すような学習用パケットであれば第２の実施の形態のように下位階層スイッチで用いているハッシュ関数を用いて宛先アドレスについてのハッシュ値及び送信元アドレスについてのハッシュ値のいずれが自スイッチの識別子に一致しているかで判断する。また、図７に示すような学習用パケットであれば第１の実施の形態のように学習用パケットを表すタグが含まれているか否かで判断する。
【００７４】
学習用パケットであれば、学習用パケットであることを表すデータ及び送信元アドレスをＦＤＢ１１０Ｍ１に出力する。一方、転送用パケットであれば、転送用パケットであることを表すデータ及び宛先アドレスをＦＤＢ１１０Ｍ１に出力する。また、入力ポートＡ乃至Ｃは、転送用パケット又は学習用パケットのデータをパケットデータ処理部１３０Ｍ１に出力して、共有メモリ１３１Ｍ１に格納させる。ルートスイッチＳＷ１乃至ＳＷｎとは異なり学習用パケットを破棄することはなく、リーフスイッチＳＷ１乃至ＳＷｍとは異なり学習用パケットを新たに生成することもない。
【００７５】
ＦＤＢ１１０Ｍ１は、学習用パケットの送信元アドレスを受け取ると、当該送信元アドレスについて周知のアドレス学習処理を実施する。単純には、アドレステーブルに、送信元アドレスを、送信元アドレスを出力した入力ポートのポート番号に対応付けて登録する。
【００７６】
さらに、ＦＤＢ１１０Ｍ１は、下位階層スイッチからの転送用パケットの宛先アドレスを受け取ると、ハッシュ値Hashmid(DA)を算出して、例えば当該ハッシュ値Hashmid(DA)でアドレステーブルを検索して出力ポートのポート番号を特定する。そして、パケットデータ処理部１３０Ｍ１に当該ポート番号を出力する。
【００７７】
さらに、ＦＤＢ１１０Ｍ１は、学習用パケットの送信元アドレスを受け取ると、ハッシュ値Hashmid(SA)を算出して、例えば当該ハッシュ値Hashmid(SA)でアドレステーブルを検索して出力ポートのポート番号を特定する。そして、パケットデータ処理部１３０Ｍ１に当該ポート番号を出力する。
【００７８】
ＦＤＢ１１０Ｍ１が保持するアドレステーブルは、図５に示すようなテーブルである。すなわち、ＭＡＣアドレス又はハッシュ値と出力ポート番号とが対応付けて登録されている。但し、ハッシュ値とルートスイッチのＩＤとの対応関係を別に保持するようにしても良い。ｋ個の端末装置が接続されており、ｐ個のルートスイッチが存在する場合には、１つのルートスイッチにはｋ／ｐ個のＭＡＣアドレスと、ルートスイッチＳＷ１乃至ＳＷｎに対応するｎ個のハッシュ値とがアドレステーブルに登録される。
【００７９】
上位階層スイッチからの転送用パケットを受信した場合には、ＦＤＢ１１０Ｍ１は、転送用パケットの宛先アドレスを受け取り、当該宛先アドレスでアドレステーブルを検索して対応する出力ポート番号を特定し、当該出力ポート番号をパケットデータ処理部１３０Ｍ１に通知する。
【００８０】
パケットデータ処理部１３０Ｍ１は、ポート番号をＦＤＢ１１０Ｍ１から受け取ると、対応する転送用パケット又は学習用パケットのデータを、ポート番号で特定される出力ポートに出力する。この際、ＦＤＢ１１０Ｍ１も、特定されたポート番号の出力ポートに転送を指示する。
【００８１】
ＦＤＢ１１０Ｍ１によって特定されたポート番号の出力ポートは、パケットデータ処理部１３０Ｍ１から受け取ったデータを、学習用パケット又は転送用パケットであるとして通常どおり出力する。
【００８２】
以上のような処理を実施すれば、学習用パケットについては送信元アドレスを学習すると共に、送信元アドレスのハッシュ値に基づき上位階層スイッチに転送し、転送用パケットについても宛先アドレスのハッシュ値に基づき上位階層スイッチに転送するような処理が行われるようになる。
【００８３】
次に、図１４に示したネットワークについて１つのパケットを端末装置が送信した場合の処理について、図１６を用いて説明する。ここでは、上で述べたように図１４の端末装置Ｔ(1-1)から端末装置Ｔ(m-km)へパケットを送信する場合の処理を説明する。リーフスイッチＳＷ１の、端末装置Ｔ(1-1)が接続されている下流ポートである入力ポートは、パケットを受信する（ステップＳ３１）。入力ポートは、送信元アドレス及び宛先アドレスをＦＤＢ１１０Ｌ１に出力し、ＦＤＢ１１０Ｌ１は、送信元アドレスについてのハッシュ値HashL(DA)及び宛先アドレスについてのハッシュ値HashL(SA)を算出する。さらに、ＦＤＢ１１０Ｌ１は、ハッシュ値HashL(DA)に対応するポート番号を特定し、パケットデータ処理部１３０Ｌ１に通知すると共に、当該ポート番号の例えば出力ポートＡに転送用パケットであることを通知する。パケットデータ処理部１３０Ｌ１は、入力ポートからパケットのデータを受け取り、共有メモリ１３１Ｌ１に格納し、その後ＦＤＢ１１０Ｌ１から通知されたポート番号の出力ポートＡにパケットのデータを出力し、出力ポートＡは、当該パケットを出力する（ステップＳ３３）。
【００８４】
中間スイッチＳＷ２の例えば入力ポートＡは、ステップＳ３３で特定されたリーフスイッチＳＷ１の出力ポートＡに接続されており、転送用パケットを受信する（ステップＳ３５）。中間スイッチＳＷ２の入力ポートＡは、受信パケットから転送用パケットであると識別し、転送用パケットの宛先アドレスをＦＤＢ１１０Ｍ１に出力する。ＦＤＢ１１０Ｍ１は、宛先アドレスのハッシュ値Hashmid(DA)を算出し、当該ハッシュ値Hashmid(DA)に対応するポート番号を特定し、パケットデータ処理部１３０Ｍ１に通知する。入力ポートＡは、受信パケットをパケットデータ処理部１３０Ｍ１に出力して、パケットデータ処理部１３０Ｍ１は、共有メモリ１３１Ｍ１に格納し、その後ＦＤＢ１１０Ｍ１からポート番号の通知を受けると、当該出力ポート番号の例えば出力ポートＢにパケットのデータを出力する。出力ポートＢは、パケットデータ処理部１３０Ｍ１から受け取ったパケットのデータを出力する（ステップＳ３７）。
【００８５】
ルートスイッチＳＷ１の例えば入力ポートＣは、ステップＳ３７で特定された中間スイッチＳＷ２の出力ポートＢに接続されており、転送用パケットを受信する（ステップＳ３９）。ルートスイッチＳＷ１の入力ポートＣは、受信パケットから転送用パケットであると識別し、転送用パケットの宛先アドレスをＦＤＢ１１０Ｒ１に出力する。ＦＤＢ１１０Ｒ１は、宛先アドレスでアドレステーブルを検索してポート番号を特定し、パケットデータ処理部１３０Ｒ１に通知する。入力ポートＣは、受信パケットをパケットデータ処理部１３０Ｒ１に出力して、パケットデータ処理部１３０Ｒ１は、共有メモリ１３１Ｒ１に格納し、その後ＦＤＢ１１０Ｒ１からポート番号の通知を受けると、当該出力ポート番号の出力ポートＡにパケットのデータを出力する。出力ポートＡは、パケットデータ処理部１３０Ｒ１から受け取ったパケットのデータを出力する（ステップＳ４１）。
【００８６】
中間スイッチＳＷｐの上流ポートである例えば入力ポートＢは、ステップＳ４１で特定されたルートスイッチＳＷ１の出力ポートＡに接続されており、転送用パケットを受信する（ステップＳ４３）。中間スイッチＳＷｐの入力ポートＢは、転送用パケットの宛先アドレスをＦＤＢ１１０Ｍ１に出力し、パケットのデータをパケットデータ処理部１３０Ｍ１に出力し、共有メモリ１３１Ｍ１に格納させる。ＦＤＢ１１０Ｍ１は、宛先アドレスでアドレステーブルを検索してポート番号を特定し、パケットデータ処理部１３０Ｍ１に通知する。ＦＤＢ１１０Ｍ１は、さらに特定されたポート番号の出力ポートに、転送用パケットの出力を指示する。パケットデータ処理部１３０Ｍ１は、通知されたポート番号の出力ポートＣに、パケットのデータを出力し、出力ポートＣは、パケットデータ処理部１３０Ｍ１から受け取ったパケットのデータを出力する（ステップＳ４５）。
【００８７】
リーフスイッチＳＷｍの上流ポートである例えば入力ポートＡは、ステップＳ４５で特定された中間スイッチＳＷｐの出力ポートＣに接続されており、転送用パケットを受信する（ステップＳ４７）。リーフスイッチＳＷ１の入力ポートＡは、転送用パケットの宛先アドレスをＦＤＢ１１０Ｌ１に出力し、パケットのデータをパケットデータ処理部１３０Ｌ１に出力し、共有メモリ１３１Ｌ１に格納させる。ＦＤＢ１１０Ｌ１は、宛先アドレスでアドレステーブルを検索してポート番号を特定し、パケットデータ処理部１３０Ｌ１に通知する。ＦＤＢ１１０Ｌ１は、さらに特定されたポート番号の出力ポートに、転送用パケットの出力を指示する。パケットデータ処理部１３０Ｌ１は、通知されたポート番号の出力ポートＣに、パケットのデータを出力し、出力ポートＣは、パケットデータ処理部１３０Ｌ１から受け取ったパケットのデータを出力する（ステップＳ４９）。これによって、パケットが宛先である端末装置Ｔ(m-km)に到達する。
【００８８】
また、リーフスイッチＳＷ１のＦＤＢ１１０Ｌ１は、受信パケットの送信元アドレスＳＡのアドレス学習処理を実施する（ステップＳ５１）。そして、ＦＤＢ１１０Ｌ１は、送信元アドレスについて算出されたハッシュ値HashL(SA)に対応するポート番号を特定し、パケットデータ処理部１３０Ｌ１に通知すると共に、当該ポート番号の出力ポートＢに学習用パケットであることを通知する。パケットデータ処理部１３０Ｌ１は、共有メモリ１３１Ｌ１に格納されている受信パケットのデータを、ＦＤＢ１１０Ｌ１から通知されたポート番号の例えば出力ポートＢに出力し、出力ポートＢは、受信パケットのデータを学習用パケットとして出力する（ステップＳ５３）。例えば、出力ポートＢのタグ付加部１３１Ｂが、受信パケットのデータに、学習用パケットであることを表すタグを付加して、出力する。また、第２の実施の形態に従うようにしてもよい。
【００８９】
中間スイッチＳＷ１の例えば入力ポートＣは、リーフスイッチＳＷ１の出力ポートＢに接続されており、パケットを受信すると、当該パケットが学習用パケットであると識別する（ステップＳ５５）。そして、入力ポートＣは、学習用パケットの送信元アドレスをＦＤＢ１１０Ｍ１に出力する。ＦＤＢ１１０Ｍ１は、受け取った送信元アドレスのハッシュ値Hashmid(SA)を算出し、当該ハッシュ値Hashmid(SA)に対応するポート番号を特定し、パケットデータ処理部１３０Ｍ１に通知する。入力ポートＣは、受信した学習用パケットをパケットデータ処理部１３０Ｍ１に出力して、パケットデータ処理部１３０Ｍ１は、共有メモリ１３１Ｍ１に格納し、その後ＦＤＢ１１０Ｍ１からポート番号の通知を受けると、当該出力ポート番号の出力ポートＡにパケットのデータを出力する。出力ポートＡは、パケットデータ処理部１３０Ｍ１から受け取った学習用パケットのデータを出力する（ステップＳ５７）。そして、ＦＤＢ１１０Ｍ１は、受け取った送信元アドレスについてアドレス学習処理を実施する（ステップＳ５９）。
【００９０】
ルートスイッチＳＷ２の例えば入力ポートＢは、中間スイッチＳＷ１の出力ポートＡに接続されており、パケットを受信すると、当該パケットが学習用パケットを特定する（ステップＳ６１）。そして、入力ポートＢは、学習用パケットの送信元アドレスをＦＤＢ１１０Ｒ１に出力する。ＦＤＢ１１０Ｒ１は、受け取った送信元アドレスについてアドレス学習処理を実施する（ステップＳ６３）。転送は行わない。
【００９１】
以上のような処理を実施することによって、３階層のスイッチ接続網においても、１つのルートスイッチの学習すべきアドレスの数を削減することができる。また、中間スイッチについても１つの中間スイッチが学習すべきアドレスの数は少なくなっている。さらに、負荷分散も図られている。
【００９２】
スイッチ接続網が３層以上になっても基本的な動作は同じである。すなわち、中間スイッチの層が増加するだけで、中間スイッチの動作は上で述べたものと同様である。より具体的には、下位階層のスイッチが接続されている下流ポートから学習用パケットを受信した場合には、当該階層において共通のハッシュ関数で送信元アドレスのハッシュ値を算出し、当該ハッシュ値に対応する出力ポートから学習用パケットを転送する。下流ポートから転送用パケットを受信した場合には、当該階層において共通のハッシュ関数で宛先アドレスのハッシュ値を算出し、当該ハッシュ値に対応する出力ポートから転送用パケットを転送する。一方、上位階層スイッチが接続されている上流ポートから転送用パケットを受信した場合には、転送用パケットの宛先アドレスでアドレステーブルを検索して出力ポートを特定し、当該出力ポートから転送用パケットを転送する。
【００９３】
また、本実施の形態は、第１乃至第６の実施の形態を適用することができる。具体的には、第１の実施の形態のようにリーフスイッチＳＷ１乃至ＳＷｍの出力ポートにタグ付加部を採用する場合には、中間スイッチＳＷ１乃至ＳＷｐ及びルートスイッチＳＷ１乃至ＳＷｎの入力ポートにもタグ検出部を採用する。また、第２の実施の形態のようにルートスイッチＳＷ１乃至ＳＷｎの入力ポートに種別判定部を導入する場合には、中間スイッチＳＷ１乃至ＳＷｐの入力ポートにも種別判定部を導入する。種別判定部は下位階層のハッシュ関数及び本階層のスイッチの数を保持して、算出する。
【００９４】
さらに、第３の実施の形態においてリーフスイッチＳＷ１乃至ＳＷｍの出力ポートで学習用パケットのサイズを小さくする場合には、そのような学習用パケットを中間スイッチＳＷ１乃至ＳＷｐはそのまま転送する。
【００９５】
また、第４乃至第６の実施の形態における優先度の変更、帯域の制限、重複パケットの削減については、中間スイッチＳＷ１乃至ＳＷｐの出力ポートでも同様に実施してもよい。
【００９６】
以上本技術の実施の形態を説明したが本技術はこれらに限定されるものではない。例えば、図１０及び図１６の処理フローは一例であって、処理結果が変わらない限りにおいて処理の順番を入れ替えることが可能であり、並列に実行しても良い。特に転送用パケットの出力及び学習用パケットの出力の順番は入れ替え可能である。送信元アドレスの学習も並列して実行可能である。
【００９７】
さらに、リーフスイッチＳＷ１乃至ＳＷｍ、中間スイッチＳＷ１乃至ＳＷｐ及びルートスイッチＳＷ１乃至ＳＷｎ並びにそれらのスイッチＬＳＩの機能ブロック図は、一例であって必ずしも実際の回路構成とは一致しない場合もある。但し上で述べた機能を実現できれば問題はない。
【００９８】
以上本実施の形態をまとめると以下のようになる。
【００９９】
実施の形態の第１の側面に係るスイッチは、スイッチの多段接続網における末端スイッチ（例えば実施の形態におけるリーフＳＷ。図１７。）として動作するスイッチであり、複数のポート（入力ポートと出力ポートのセット）３００１乃至３００３と、ポートの識別子と当該ポートに接続されている下層の装置のアドレスとを対応付けて格納するデータベース３１０１を含み、上記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部３１００と、上記ポートで受信したパケットのデータを格納するメモリ３２０１を有し、第１の処理部３１００に従ってメモリ３２０１に格納されているパケットのデータを上記ポートに出力する第２の処理部３２００とを有する。そして、第１の処理部３１００は、上記ポートに接続されている下層の装置から受信したパケットの送信元アドレスをデータベース３１０１に登録するための学習処理を実施する。また、第１の処理部３１００は、上記ポートに接続されている下層の装置から受信したパケットの宛先アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応する転送先スイッチが接続されている第１の出力先ポートを特定して、第２の処理部３２００に対して上記パケットのデータを第１の出力先ポートへ出力させる。さらに、第１の処理部３１００は、送信元アドレスについて所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応し且つ送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定して、第２の処理部３２００に対して上記パケットのデータを学習用パケットとして第２の出力先ポートへ出力させる。
【０１００】
このように送信元アドレスの学習を行う上位階層のスイッチ、すなわち本スイッチにパケットを転送してくるスイッチを所定のハッシュ関数に基づきスイッチしているので、配下の端末装置が増加した場合においても上位階層の１つのスイッチで学習しなければならないアドレスの数を削減することができる。
【０１０１】
なお、上で述べた第２の出力先ポートが、上記パケットのデータに対して学習用パケットであることを表すデータを付加するようにしてもよい。このようにすれば、上位階層のスイッチで容易に学習用パケットを識別することができる。
【０１０２】
また、上で述べた第２の出力先ポート又は第２の処理部３２００が、学習用パケットについてペイロードの少なくとも一部を削除するようにしてもよい。学習用パケットを例えば許可される最小サイズにすることによって、学習用パケットを導入することによって増加する通信データ量を削減することができるようになる。
【０１０３】
さらに、上で述べた第２の出力先ポートが、学習用パケットの優先度を下げるようにしてもよい。学習用パケットは必ず送信しなければならないわけではないので、転送すべき通常パケットの数が多い場合には、破棄するようにしても良い。同様に、上で述べた第２の出力先ポートが、学習用パケットの送出のための帯域を制限するようにしてもよい。
【０１０４】
また、上で述べた第２の出力先ポートが、複数の学習用パケットのうち同一の送信元アドレスのパケットを特定し、当該パケットの出力個数を制限するようにしてもよい。アドレス学習のためであれば、同一の送信元アドレスにつき１回学習できればよいので、パケットが滞留している場合には上記のようなパケットの出力個数を例えば１個に制限するようにしても良い。
【０１０５】
さらに、第１の出力先ポートと第２の出力先ポートとが一致する場合には、上で述べた第２の処理部が、第１の出力先ポートへ上記パケットのデータを１度だけ出力するようにしてもよい。すなわち、転送すべきパケットであり且つ学習用パケットでもあるパケットを１つ出力するものである。
【０１０６】
また、上で述べた第１の処理部３１００は、第１のハッシュ値に対応する転送先スイッチが自スイッチである場合には、宛先アドレスでデータベースを検索して第３の出力先ポートを特定し、第２の処理部３２００に対してパケットのデータを第３の出力先ポートへ出力させるようにしてもよい。自スイッチの配下の端末装置へのパケットであれば上位階層に転送用のパケットを送信する必要はない。
【０１０７】
実施の形態の第２の態様に係る第２のスイッチは、スイッチの多段接続網における最上位階層のスイッチ（例えば実施の形態におけるルートＳＷ。図１７。）として動作するスイッチであり、複数のポート３００１乃至３００３と、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベース３１０１を含み、上記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部３１００と、上記ポートで受信したパケットのデータを格納するメモリ３２０１を有し、第１の処理部３１００に従ってメモリ３２０１に格納されているパケットのデータを上記ポートに出力する第２の処理部３２００とを有する。そして、上で述べた複数のポートの各々が、当該ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別し、学習用パケットであれば当該パケットの送信元アドレスを第１の処理部に出力し、転送すべきパケットであれば当該パケットの宛先アドレスを第１の処理部に出力する。また、上で述べた第１の処理部は、複数のポートから受信した送信元アドレスをデータベース３１０１に登録するための学習処理を実施する。さらに、第１の処理部３１００は、複数のポートから受信した宛先アドレスでデータベース３１０１を検索して出力先ポートを特定し、第２の処理部３２００に対して上記パケットのデータを出力先ポートへ出力させる。
【０１０８】
このように最上位階層のスイッチでは、下位階層のスイッチから送られてくる学習用パケットの送信元アドレスのみを学習すればよいので、下位階層のスイッチで適切に学習用パケットの送信先スイッチを限定できていればデータベースに登録しなければならない送信元アドレスの数が削減される。
【０１０９】
なお、上で述べた複数のポートの各々が、受信したパケットに、学習用パケットであることを表すデータが含まれているか否かにより、学習用パケットであるか転送すべきパケットであるかを識別するようにしてもよい。学習用パケットであることが容易に判定できる。
【０１１０】
また、上で述べた複数のポートの各々が、受信したパケットの送信元アドレスについて１つ下位の階層のスイッチで使用されているハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを学習用パケットであると識別するようにしてもよい。また、受信したパケットの宛先アドレスについて上記ハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを転送用パケットであると識別するようにしてもよい。このような場合には、下層のスイッチでは、パケットを加工しなくてもよい。
【０１１１】
実施の形態の第３の側面に係るスイッチは、スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチ（例えば実施の形態における中間ＳＷ。図１７。）として動作するスイッチであり、複数のポート３００１乃至３００３と、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベース３１０１を含み、上記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部３１００と、上記ポートで受信したパケットのデータを格納するメモリ３２０１を有し、第１の処理部３１００に従ってメモリ３２０１に格納されているパケットのデータを上記ポートに出力する第２の処理部３２００とを有する。そして、複数のポートの各々が、当該ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別し、学習用パケットであれば当該パケットの送信元アドレスを第１の処理部３１００に出力し、転送すべきパケットであれば当該パケットの宛先アドレスを第１の処理部３１００に出力する。また、上で述べた第１の処理部３１００は、複数のポートから受信した送信元アドレスをデータベースに登録するための学習処理を実施する。さらに、第１の処理部３１００は、複数のポートから受信した宛先アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応する転送先スイッチが接続されている第１の出力先ポートを特定して、第２の処理部３２００に対して上記パケットのデータを第１の出力先ポートへ出力させる。さらに、第１の処理部３１００は、複数のポートから受信した送信元アドレスについて所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応し且つ送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定して、第２の処理部３２００に対して上記パケットのデータを第２の出力先ポートへ出力させる。
【０１１２】
３段以上のスイッチ網においても、このような中間階層のスイッチを導入することにより、上位階層のスイッチが学習すべき送信元アドレスの数を削減できる。すなわち、上で述べた所定のハッシュ関数による送信元アドレスについての第２のハッシュ値に応じて、学習用パケットが送信される上位階層のスイッチがスイッチされるので、その分上位階層の１つのスイッチが学習すべき送信元アドレスの数が少なくなっている。なお、下位階層のスイッチでも同様にハッシュ関数で学習用パケットの送信先をスイッチしていれば、本スイッチにおいても学習すべき送信元アドレスの数が削減されている。
【０１１３】
なお、上で述べた複数のポートの各々が、受信したパケットに、学習用パケットであることを表すデータが含まれているか否かにより、学習用パケットであるか転送すべきパケットであるかを識別するようにしてもよい。上位階層のスイッチでは容易に学習用パケットであるか否かを判別できるようになる。
【０１１４】
さらに、上で述べた複数のポートの各々が、受信したパケットの送信元アドレスについて１つ下位の階層で用いられている第２のハッシュ関数による第３のハッシュ値を算出し、当該第３のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを学習用パケットであると識別するようにしてもよい。また、当該受信したパケットの宛先アドレスについて第２のハッシュ関数による第４のハッシュ値を算出し、当該第４のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを転送用パケットであると識別するようにしてもよい。このような構成であれば、下位階層のスイッチではパケットを加工せずに済む。
【０１１５】
本実施の形態の第４の側面に係るアドレス学習方法（図１８）は、スイッチの多段接続網における末端スイッチとして動作するスイッチにより実行されるアドレス学習方法であり、ポートに接続されている下層の装置からパケットを受信した場合、所定のハッシュ関数による当該パケットの宛先アドレスについての第１のハッシュ値から上記パケットの転送先スイッチが接続されている第１の出力先ポートを特定し、上記パケットを第１の出力先ポートから出力するステップ（ステップＳ３００１）と、上記パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層の装置のアドレスと対応付けて格納するデータベースに格納するための学習処理を実施するステップ（ステップＳ３００３）と、所定のハッシュ関数による上記パケットの送信元アドレスについての第２のハッシュ値から上記パケットの送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定し、上記パケットについての学習用パケットを第２の出力先ポートから出力するステップ（ステップＳ３００５）とを含む。
【０１１６】
最下層のスイッチで上で述べたような処理を実施すれば、上位階層のスイッチで学習すべき送信元アドレスの数を削減できるようになる。
【０１１７】
本実施の形態の第５の側面に係るアドレス学習方法（図１９）は、スイッチの多段接続網における最上位階層のスイッチとして動作するスイッチにより実行されるアドレス学習方法であり、ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップ（ステップＳ３１０１）と、送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップ（ステップＳ３１０５）と、転送すべきパケットであれば、当該パケットの宛先アドレスでデータベースを検索して出力先ポートを特定し、転送すべきパケットを出力先ポートから出力するステップ（ステップＳ３１０７）とを含む。
【０１１８】
下位階層のスイッチで例えばハッシュ関数により学習用パケットの送信先スイッチが適切に限定されていれば、学習すべき送信元アドレスの数が削減される。
【０１１９】
本実施の形態の第６の側面に係るアドレス学習方法（図２０）は、スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチにより実行されるアドレス学習方法であり、ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップ（ステップＳ３２０１）と、送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップ（ステップＳ３２０５）と、送信元アドレスの学習用パケットであれば、送信元アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応し且つ送信元アドレスを学習すべき上位階層のスイッチが接続されている第１の出力先ポートを特定して、上記パケットのデータを第１の出力先ポートから出力するステップ（ステップＳ３２０７）と、転送すべきパケットであれば、当該パケットの宛先アドレスについて所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応する転送先スイッチが接続されている第２の出力先ポートを特定して、上記パケットのデータを第２の出力先ポートから出力するステップ（ステップＳ３２０９）とを含む。
【０１２０】
このようにすれば、上位階層のスイッチにおいても学習すべき送信元アドレスの数が削減される。下位階層のスイッチにおいてもハッシュ関数などにより学習用パケットの送信先スイッチを適切に振り分けていれば自スイッチにおいても学習すべき送信元アドレスの数が削減される。
【０１２１】
なお、上で述べたスイッチの機能を有するスイッチＬＳＩが製造販売される場合もある。
【０１２２】
（付記１）
スイッチの多段接続網における末端スイッチとして動作するスイッチであって、
複数のポートと、
ポートの識別子と当該ポートに接続されている下層の装置のアドレスとを対応付けて格納するデータベースを含み、前記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部と、
前記ポートで受信したパケットのデータを格納するメモリを有し、前記第１の処理部に従って前記メモリに格納されているパケットのデータを前記ポートに出力する第２の処理部と、
を有し、
前記第１の処理部は、
前記ポートに接続されている下層の装置から受信したパケットの送信元アドレスを前記データベースに登録するための学習処理を実施し、
前記ポートに接続されている下層の装置から受信したパケットの宛先アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応する転送先スイッチが接続されている第１の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを前記第１の出力先ポートへ出力させ、
前記送信元アドレスについて前記所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応し且つ前記送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを学習用パケットとして前記第２の出力先ポートへ出力させる
スイッチ。
【０１２３】
（付記２）
前記第２の出力先ポートが、前記パケットのデータに対して前記学習用パケットであることを表すデータを付加する
付記１記載のスイッチ。
【０１２４】
（付記３）
前記第２の出力先ポート又は前記第２の処理部が、前記学習用パケットについてペイロードの少なくとも一部を削除する
付記１又は２記載のスイッチ。
【０１２５】
（付記４）
前記第２の出力先ポートが、前記学習用パケットの優先度を下げる
付記１又は２記載のスイッチ。
【０１２６】
（付記５）
前記第２の出力先ポートが、前記学習用パケットの送出のための帯域を制限する
付記１又は２記載のスイッチ。
【０１２７】
（付記６）
前記第２の出力先ポートが、複数の学習用パケットのうち同一の前記送信元アドレスのパケットを特定し、当該パケットの出力個数を制限する
付記１又は２記載のスイッチ。
【０１２８】
（付記７）
前記第１の出力先ポートと前記第２の出力先ポートとが一致する場合には、前記第２の処理部が、前記第１の出力先ポートへ前記パケットのデータを１度だけ出力する
付記１又は２記載のスイッチ。
【０１２９】
（付記８）
前記第１の処理部は、
前記第１のハッシュ値に対応する転送先スイッチが自スイッチである場合には、前記宛先アドレスで前記データベースを検索して第３の出力先ポートを特定し、前記第２の処理部に対して前記パケットのデータを前記第３の出力先ポートへ出力させる
付記１乃至７のいずれか１つ記載のスイッチ。
【０１３０】
（付記９）
スイッチの多段接続網における最上位階層のスイッチとして動作するスイッチであって、
複数のポートと、
ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースを含み、前記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部と、
前記ポートで受信したパケットのデータを格納するメモリを有し、前記第１の処理部に従って前記メモリに格納されているパケットのデータを前記ポートに出力する第２の処理部と、
を有し、
前記複数のポートの各々が、
当該ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別し、前記学習用パケットであれば当該パケットの送信元アドレスを前記第１の処理部に出力し、前記転送すべきパケットであれば当該パケットの宛先アドレスを前記第１の処理部に出力し、
前記第１の処理部は、
前記複数のポートから受信した前記送信元アドレスを前記データベースに登録するための学習処理を実施し、
前記複数のポートから受信した前記宛先アドレスで前記データベースを検索して出力先ポートを特定し、前記第２の処理部に対して前記パケットのデータを前記出力先ポートへ出力させる
スイッチ。
【０１３１】
（付記１０）
前記複数のポートの各々が、
受信したパケットに、学習用パケットであることを表すデータが含まれているか否かにより、前記学習用パケットであるか前記転送すべきパケットであるかを識別する
付記９記載のスイッチ。
【０１３２】
（付記１１）
前記複数のポートの各々が、
受信したパケットの送信元アドレスについて１つ下位の階層のスイッチで使用されているハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを前記学習用パケットであると識別し、
当該受信したパケットの宛先アドレスについて前記ハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを前記転送用パケットであると識別する
付記９記載のスイッチ。
【０１３３】
（付記１２）
スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチとして動作するスイッチであって、
複数のポートと、
ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースを含み、前記ポートで受信したパケットの送信元アドレス及び宛先アドレスについて処理を行う第１の処理部と、
前記ポートで受信したパケットのデータを格納するメモリを有し、前記第１の処理部に従って前記メモリに格納されているパケットのデータを前記ポートに出力する第２の処理部と、
を有し、
前記複数のポートの各々が、
当該ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別し、前記学習用パケットであれば当該パケットの送信元アドレスを前記第１の処理部に出力し、前記転送すべきパケットであれば当該パケットの宛先アドレスを前記第１の処理部に出力し、
前記第１の処理部は、
前記複数のポートから受信した前記送信元アドレスを前記データベースに登録するための学習処理を実施し、
前記複数のポートから受信した前記宛先アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応する転送先スイッチが接続されている第１の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを前記第１の出力先ポートへ出力させ、
前記複数のポートから受信した前記送信元アドレスについて前記所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応し且つ前記送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定して、前記第２の処理部に対して前記パケットのデータを前記第２の出力先ポートへ出力させる
スイッチ。
【０１３４】
（付記１３）
前記複数のポートの各々が、
受信したパケットに、学習用パケットであることを表すデータが含まれているか否かにより、前記学習用パケットであるか前記転送すべきパケットであるかを識別する
付記１２記載のスイッチ。
【０１３５】
（付記１４）
前記複数のポートの各々が、
受信したパケットの送信元アドレスについて１つ下位の階層で用いられている第２のハッシュ関数による第３のハッシュ値を算出し、当該第３のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを前記学習用パケットであると識別し、
当該受信したパケットの宛先アドレスについて前記第２のハッシュ関数による第４のハッシュ値を算出し、当該第４のハッシュ値が自スイッチの識別子であれば、当該受信したパケットを前記転送用パケットであると識別する
付記１２記載のスイッチ。
【０１３６】
（付記１５）
スイッチの多段接続網における末端スイッチとして動作するスイッチにより実行されるアドレス学習方法であって、
ポートに接続されている下層の装置からパケットを受信した場合、所定のハッシュ関数による当該パケットの宛先アドレスについての第１のハッシュ値から前記パケットの転送先スイッチが接続されている第１の出力先ポートを特定し、前記パケットを前記第１の出力先ポートから出力するステップと、
前記パケットの送信元アドレスを、ポートの識別子と前記ポートに接続されている下層の装置のアドレスと対応付けて格納するデータベースに格納するための学習処理を実施するステップと、
前記所定のハッシュ関数による前記パケットの送信元アドレスについての第２のハッシュ値から前記パケットの送信元アドレスを学習すべき上位階層のスイッチが接続されている第２の出力先ポートを特定し、前記パケットについての学習用パケットを前記第２の出力先ポートから出力するステップと、
を含むアドレス学習方法。
【０１３７】
（付記１６）
スイッチの多段接続網における最上位階層のスイッチとして動作するスイッチにより実行されるアドレス学習方法であって、
ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップと、
前記送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップと、
前記転送すべきパケットであれば、当該パケットの宛先アドレスで前記データベースを検索して出力先ポートを特定し、前記転送すべきパケットを前記出力先ポートから出力するステップと、
を含むアドレス学習方法。
【０１３８】
（付記１７）
スイッチの多段接続網における最上位階層及び最下層のスイッチ以外の中間階層のスイッチにより実行されるアドレス学習方法であって、
ポートに接続されている下層のスイッチから受信したパケットについて、送信元アドレスの学習用パケットであるか転送すべきパケットであるかを識別するステップと、
前記送信元アドレスの学習用パケットであれば、当該パケットの送信元アドレスを、ポートの識別子と当該ポートに接続されている下層のスイッチ又はそれより下位のスイッチに接続されている装置のアドレスとを対応付けて格納するデータベースに登録するための学習処理を実施するステップと、
前記送信元アドレスの学習用パケットであれば、前記送信元アドレスについて所定のハッシュ関数による第１のハッシュ値を算出し、当該第１のハッシュ値に対応し且つ前記送信元アドレスを学習すべき上位階層のスイッチが接続されている第１の出力先ポートを特定して、前記パケットのデータを前記第１の出力先ポートから出力するステップと、
前記転送すべきパケットであれば、当該パケットの宛先アドレスについて前記所定のハッシュ関数による第２のハッシュ値を算出し、当該第２のハッシュ値に対応する転送先スイッチが接続されている第２の出力先ポートを特定して、前記パケットのデータを前記第２の出力先ポートから出力するステップと、
を含むアドレス学習方法。
【符号の説明】
【０１３９】
１００  スイッチＬＳＩ    １１０  ＦＤＢ
１２０  管理部    １３０  パケットデータ処理部
【図１】
2010288168.tif 000003
【図２】
2010288168.tif 000004
【図３】
2010288168.tif 000005
【図４】
2010288168.tif 000006
【図５】
2010288168.tif 000007
【図６】
2010288168.tif 000008
【図７】
2010288168.tif 000009
【図８】
2010288168.tif 000010
【図９】
2010288168.tif 000011
【図１０】
2010288168.tif 000012
【図１１】
2010288168.tif 000013
【図１２】
2010288168.tif 000014
【図１３】
2010288168.tif 000015
【図１４】
2010288168.tif 000016
【図１５】
2010288168.tif 000017
【図１６】
2010288168.tif 000018
【図１７】
2010288168.tif 000019
【図１８】
2010288168.tif 000020
【図１９】
2010288168.tif 000021
【図２０】
2010288168.tif 000022