(57)【要約】【課題】連想メモリを利用せずに、スイッチ機能を実現する。【解決手段】記憶部２０は、パケット１２に含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する。格納部２１は、複数のポート１１の何れかに入力したパケット１２に含まれる送信元のアドレスを記憶先のアドレスとして、当該パケット１２が入力したポート１１に関するポート情報を記憶部２０に格納する。読出部２２は、入力したパケット１２に含まれる宛先のアドレスを記憶先のアドレスとして、記憶部２０からポート情報を読み出す。選択部２３は、読み出されたポート情報に基づき、入力したパケット１２を出力するポート１１を選択する。【選択図】図１
2013077878.tif 000002
【特許請求の範囲】
【請求項１】
パケットを入出力する複数のポートと、
前記パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部と、
前記複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を前記記憶部に格納する格納部と、
前記入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、前記記憶部から前記ポート情報を読み出す読出部と、
前記読出部により読み出された前記ポート情報に基づき、前記入力したパケットを出力するポートを選択する選択部と、
を有する伝送装置。
【請求項２】
前記記憶部は、予め定めたビットの組み合わせで前記パケットに含まれる送信元のアドレスおよび宛先のアドレスをそれぞれ複数の部分アドレスに分けたそれぞれに対応して複数設けられ、それぞれ対応する部分アドレスのビット数以上のビット数のアドレス空間を有し、
前記格納部は、前記入力したパケットに含まれる送信元のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部に前記ポート情報を格納し、
前記読出部は、前記入力したパケットに含まれる宛先のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部から前記ポート情報を読み出し、
前記選択部は、前記読出部により読み出された各ポート情報に基づき、前記入力したパケットを出力するポートを選択する
ことを特徴とする請求項１記載の伝送装置。
【請求項３】
前記ポート情報は、複数のビットで構成され、各ビットがそれぞれポートに対応し、
前記格納部は、各部分アドレスに対応する各記憶部に、入力したポートに対応するビットに所定値を設定した前記ポート情報を格納し、
前記選択部は、前記読出部により読み出された各ポート情報間で同じビットにそれぞれ所定値が設定されたビットに対応するポートを、前記入力したパケットを出力するポートと選択する
ことを特徴とする請求項２記載の伝送装置。
【請求項４】
コンピュータに、
パケットを入出力する複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を、前記パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部に格納し、
前記入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、前記記憶部から前記ポート情報を読み出し、
読み出された前記ポート情報に基づき、前記入力したパケットを出力するポートを選択する
各処理を実行させることを特徴とする伝送制御プログラム。
【請求項５】
コンピュータが、
パケットを入出力する複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を、前記パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部に格納し、
前記入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、前記記憶部から前記ポート情報を読み出し、
読み出された前記ポート情報に基づき、前記入力したパケットを出力するポートを選択する
各処理を実行することを特徴とする伝送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送装置、伝送制御プログラムおよび伝送制御方法に関する。
【背景技術】
【０００２】
従来、パケットの伝送を行う伝送装置が知られている。この伝送装置には、受信したパケットの送信元のアドレスを記憶し、受信したパケットの宛先のアドレスを記憶したアドレスと比較し、比較結果に応じて送信先を切り替えるスイッチ機能を有するものがある。例えば、伝送装置として、ＯＳＩ（Open  Systems  Interconnection）参照モデルのデータリンク層のデータでパケットの行き先を判断して転送を行うレイヤー２スイッチがある。このレイヤー２スイッチには、各ポートに受信したパケットのヘッダに含まれる送信元のアドレスを記憶し、受信したパケットのヘッダに含まれる宛先のアドレスに応じて出力先のポートを切り替えるスイッチ機能を有するものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２１１３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、従来、伝送装置は、パケットの送信元のアドレスの記憶および宛先のアドレスと記憶したアドレスとの比較を、所謂、ＣＡＭ（Content  Addressable  Memory）と呼ばれる汎用の連想メモリを利用して実現している。
【０００５】
しかしながら、汎用の連想メモリは、製造元毎にそれぞれ仕様が異なる。このため、伝送装置に内蔵される連想メモリの製造が終息した場合、伝送装置のメーカは、代替品として他の製造元の連想メモリを用いる。しかし、他の製造元の連想メモリは、必ずしも伝送装置にマッチしたデバイスとはならない。このため、伝送装置のメーカでは、伝送装置の設計の見直しが必要となる場合がある。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、連想メモリを利用せずに、スイッチ機能を実現した伝送装置、伝送制御プログラムおよび伝送制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願の開示する伝送装置は、一つの態様において、複数のポートと、記憶部と、格納部と、読出部と、選択部とを有する。複数のポートは、パケットを入出力する。記憶部は、パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する。格納部は、複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を記憶部に格納する。読出部は、入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、記憶部からポート情報を読み出す。選択部は、読出部により読み出されたポート情報に基づき、入力したパケットを出力するポートを選択する。
【発明の効果】
【０００８】
一つの態様によれば、連想メモリを利用せずに、スイッチ機能を実現できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、伝送装置の機能的な構成の一例を示す図である。
【図２】図２は、記憶部に記憶されるデータのデータ構成の一例を示す図である。
【図３】図３は、パケットを受信した際のデータの流れの一例を説明するための図である。
【図４】図４は、格納処理の手順を示すフローチャートである。
【図５】図５は、読出処理の手順を示すフローチャートである。
【図６】図６は、伝送装置の機能的な構成の一例を示す図である。
【図７】図７は、第１記憶部に記憶されるデータのデータ構成の一例を示す図である。
【図８】図８は、ポートテーブルのデータ構成の一例を示す図である。
【図９】図９は、第１記憶部に記憶されるデータのデータ構成の他の例を示す図である。
【図１０】図１０は、格納処理の手順を示すフローチャートである。
【図１１】図１１は、読出処理の手順を示すフローチャートである。
【図１２】図１２は、伝送制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する伝送装置、伝送制御プログラムおよび伝送制御方法の各実施例を図面に基づいて詳細に説明する。なお、各実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。以下の各実施例では、伝送装置が、パケットに含まれる宛先、送信元を示すＭＡＣ（Media  Access  Control）アドレスを判断し、パケットの中継を行うレイヤー２スイッチとして機能する場合について説明する。
【実施例１】
【００１１】
実施例１に係る伝送装置１０について説明する。図１は、伝送装置の機能的な構成の一例を示す図である。伝送装置１０は、外部とパケットを入出力する複数のポート１１を有する。複数のポート１１は、図示しないネットワークを介して外部装置と通信可能に接続される。かかるネットワークの一態様としては、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の有線通信網が挙げられる。
【００１２】
図１に示すように、伝送装置１０は、記憶部２０と、格納部２１と、読出部２２と、選択部２３とを有する。記憶部２０は、各ポート１１で受信されるパケット１２に含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有する。例えば、パケット１２がＩＥＥＥ（Institute  of  Electrical  and  Electronic  Engineers）８０２．３標準の場合、フレームヘッダに含まれる宛先のアドレス（DA：Destination  Address）および送信元のアドレス（SA：Source  Address）は４８ビットとなる。この場合、記憶部２０は、４８ビット以上のアドレス空間を有する。記憶部２０は、アドレス毎に、ポートに関するポート情報および学習済みであるかを示す学習情報を記憶可能なサイズの記憶領域を有する。記憶部２０には、アドレス毎に、パケット１２を出力する出力先のポートに関するポート情報およびポート情報が学習済みであるかを示す学習情報が記憶される。記憶部２０のデバイスの一例としては、ＲＡＭ（Random  Access  Memory）やフラッシュメモリなどのデータを書き換え可能な半導体メモリが挙げられる。
【００１３】
図２は、記憶部に記憶されるデータのデータ構成の一例を示す図である。「アドレス」は、記憶部２０の記憶領域の位置を示す。記憶部２０は、アドレス毎に、「ポート情報」および「学習情報」の記憶領域を有する。「ポート情報」の記憶領域は、パケット１２の出力先のポートを表すポート情報を記憶する記憶領域である。例えば、「ポート情報」の記憶領域には、出力先のポートを表すポート番号が記憶される。「学習情報」は、出力先のポートを学習済みであるかを記憶する記憶領域である。例えば、「学習情報」の記憶領域には、ポートを学習済みである場合「１」が記憶され、ポートを未学習の場合「０」が記憶される。
【００１４】
図２の例では、「００００・・・００」のアドレスには、出力先のポートが「ＰＯＲＴ１」であり、出力先のポートが学習済みと記憶されている。また、「１ＦＦＦ・・・ＦＦ」のアドレスには、出力先のポートが「ＰＯＲＴ１」であり、出力先のポートが学習済みと記憶されている。
【００１５】
格納部２１は、いずれかのポート１１でパケット１２を受信した場合、受信したパケット１２に基づいて各種情報を記憶部２０に格納する。例えば、格納部２１は、パケット１２に含まれる送信元のアドレスを記憶先のアドレスとして、パケット１２が入力したポートに関するポート情報および学習済みを示す学習情報を記憶部２０に格納する。
【００１６】
読出部２２は、受信したパケット１２に基づいて記憶部２０から各種情報を読み出す。例えば、読出部２２は、受信したパケット１２に含まれる宛先のアドレスを記憶先のアドレスとして、記憶部２０からポート情報および学習情報を読み出す。なお、記憶部２０のアドレス空間のビット数が送信元のアドレスおよび宛先のアドレスのビット数よりも大きい場合、送信元のアドレスや宛先のアドレスに所定のビットを加えて記憶先のアドレスとして使用する。例えば、送信元のアドレスや宛先のアドレスが４８ビットであり、記憶部２０のアドレス空間が５０ビットの場合、送信元のアドレスや宛先のアドレスの前または後に１ビット所定のビットを加えて記憶先のアドレスとして使用する。
【００１７】
選択部２３は、信号を選択的に出力する複数の選択回路２４と、選択回路２４を制御するエンコーダ２５とを有する。選択回路２４は、ポート１１毎に設けられ、それぞれポート１１に接続される。各選択回路２４には、受信したパケット１２がそれぞれ入力する。選択回路２４は、例えば、アンド回路あるいはマルチプレクサのように、入力した信号を選択的に出力可能な回路によって構成され、エンコーダ２５からの制御信号に応じて、受信したパケット１２をポート１１へ出力する。
【００１８】
エンコーダ２５は、読出部２２により読み出されたポート情報および学習情報に基づき、各選択回路２４を制御する制御信号を出力する。例えば、エンコーダ２５は、学習情報が学習済みを示す場合、ポート情報により示されるポート１１に接続された選択回路２４へパケット１２の出力を指示する制御信号を出力し、他の選択回路２４へパケット１２の出力を禁止する制御信号を出力する。また、エンコーダ２５は、学習情報が未学習を示す場合、各選択回路２４へパケット１２の出力を指示する制御信号を送信する。なお、図１の例では、機能的な構成を示したため、格納部２１、読出部２２、エンコーダ２５を別に分けているが、例えば、１つのデバイスで構成してもよい。デバイスの一例としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路が挙げられる。なお、デバイスとして、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を採用することもできる。
【００１９】
図３は、パケットを受信した際のデータの流れの一例を説明するための図である。例えば、パケット１２を受信すると、伝送装置１０は、受信したパケット１２から送信元のアドレスを抽出する。そして、伝送装置１０は、抽出した送信元のアドレスを記憶先のアドレスとして、パケット１２を受信したポート１１を示すポート情報および学習済みを示す学習情報を記憶部２０に格納する。
【００２０】
また、伝送装置１０は、受信したパケット１２から宛先のアドレスを抽出する。そして、伝送装置１０は、抽出した宛先のアドレスを記憶先のアドレスとして、記憶部２０からポート情報および学習情報を読み出す。伝送装置１０は、読み出した学習情報が学習済みを示す場合、ポート情報により示されるポート１１からパケット１２を出力する。一方、伝送装置１０は、読み出した学習情報が未学習を示す場合、各ポート１１からパケット１２を出力する。
【００２１】
次に、本実施例に係る伝送装置１０によるパケット１２を受信したポート１１のポート情報および学習情報を格納する格納処理、および格納されたポート情報および学習情報を読み出す読出処理の流れを説明する。図４は、格納処理の手順を示すフローチャートである。この格納処理は、例えば、何れかのポート１１でパケット１２が受信された際に実行される。
【００２２】
図４に示すように、格納部２１は、受信したパケット１２に含まれる送信元のアドレスを抽出する（Ｓ１０）。格納部２１は、抽出した送信元のアドレスを記憶先のアドレスとして、パケット１２を受信したポート１１を示すポート情報および学習済みを示す学習情報を記憶部２０に格納し（Ｓ１１）、処理を終了する。これにより、伝送装置１０は、パケット１２を受信する毎に、受信したパケット１２の送信元のアドレスをそれぞれ記憶先のアドレスとして、それぞれポート情報および学習情報が記憶部２０に記憶される。
【００２３】
図５は、読出処理の手順を示すフローチャートである。この読出処理も、例えば、何れかのポート１１でパケット１２が受信された際に実行される。
【００２４】
図５に示すように、読出部２２は、受信したパケット１２に含まれる宛先のアドレスを抽出する（Ｓ２０）。そして、読出部２２は、抽出した宛先のアドレスを記憶先のアドレスとして、記憶部２０からポート情報および学習情報を読み出す（Ｓ２１）。エンコーダ２５は、読み出した学習情報に基づき、学習済みか否かを判定する（Ｓ２２）。学習済みである場合（Ｓ２２肯定）、エンコーダ２５は、ポート情報が示すポート１１に接続された選択回路２４へパケット１２の出力を指示する制御信号を出力する。また、エンコーダ２５は、他の選択回路２４へパケット１２の出力を禁止する制御信号を出力して（Ｓ２３）、処理を終了する。これにより、受信したパケット１２は、ポート情報が示すポート１１から出力される。一方、未学習である場合（Ｓ２２否定）、エンコーダ２５は、全ての選択回路２４へパケット１２の出力を指示する制御信号を送信し（Ｓ２４）、処理を終了する。これにより、受信したパケット１２は、全てのポート１１から出力される。
【００２５】
上述してきたように、本実施例に係る伝送装置１０は、複数のポート１１により外部とパケットを入出力する。また、伝送装置１０は、パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部２０を有する。そして、伝送装置１０は、複数のポート１１の何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を記憶部２０に格納する。また、伝送装置１０は、入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、記憶部２０からポート情報を読み出す。そして、伝送装置１０は、読み出されたポート情報に基づき、入力したパケットを出力するポート１１を選択する。このように、伝送装置１０は、送信元のアドレスを記憶先のアドレスとして、記憶部２０にポート情報を格納し、宛先のアドレスを記憶先のアドレスとして、記憶部２０からポート情報を読み出すので、パケット１２を出力するポートを速やかに特定できる。これにより、伝送装置１０は、連想メモリを利用せずに、スイッチ機能を実現することができる。
【実施例２】
【００２６】
次に、実施例２について説明する。図６は、伝送装置の機能的な構成の一例を示す図である。なお、上述の実施例１に係る伝送装置と同一の部分については、同一の符号を付して説明する。
【００２７】
図６に示すように、実施例２に係る伝送装置１０は、実施例１と同様に、外部とパケット１２を入出力する複数のポート１１を有する。また、伝送装置１０は、第１記憶部３０と、第２記憶部３１と、格納部３２と、読出部３３と、選択部３４とを有する。
【００２８】
第１記憶部３０は、パケット１２に含まれる送信元のアドレスおよび宛先のアドレスをそれぞれ予め定めたビットの組み合わせで複数に分けた各部分アドレスに対応して複数設けられている。第１記憶部３０は、それぞれ対応する部分アドレスのビット数以上のビット数のアドレス空間を有する。第１記憶部３０には、アドレス毎に、パケット１２を出力する出力先のポートに関するポート情報が記憶される。本実施例のポート情報は、複数のビットで構成され、各ビットがそれぞれポート１１に対応する。第１記憶部３０のデバイスの一例としては、ＲＡＭ（Random  Access  Memory）やフラッシュメモリなどのデータを書き換え可能な半導体メモリが挙げられる。
【００２９】
ここで、第１記憶部３０に記憶されるデータのデータ構成について詳細に説明する。図７は、第１記憶部に記憶されるデータのデータ構成の一例を示す図である。図７の例は、送信元のアドレスおよび宛先のアドレスがアドレス４０に示すように８ビットであり、アドレスを０〜３ビット目と４〜７ビット目の２つの部分アドレス４０Ａ、４０Ｂに分ける場合を示す。図７の例では、０〜３ビット目の部分アドレス４０Ａに対応して第１記憶部３０Ａが設けられ、４〜７ビット目の部分アドレス４０Ｂに対応して第１記憶部３０Ｂが設けられている。第１記憶部３０Ａ、３０Ｂは、それぞれデータを格納する記憶先のアドレスとして４ビットのアドレス空間を有し、アドレス毎に、ポート情報を記憶可能なサイズの記憶領域を有する。図７の例では、第１記憶部３０Ａ、３０Ｂそれぞれ、「ａｄｄｒｅｓｓ」として、記憶領域のアドレスが示されており、アドレス毎に、「０」〜「３１」の３２ビットのポート情報を記憶する記憶領域を有する。この「０」〜「３１」の各ビットは、それぞれポート１１に対応付けられている。
【００３０】
図７の例は、学習済みデータ４１が第１記憶部３０Ａ、３０Ｂに格納された状態を示す。学習済みデータ４１は、「出力ビット」がそれぞれポート情報で出力先とされたビットの位置を示し、「アドレス」がそれぞれ学習済みのアドレスを示す。例えば、アドレス「００００００００」、出力ビット「０」のデータを学習したことにより、第１記憶部３０Ａには、アドレスの０〜３ビット目の「００００」を記憶先のアドレスとし、「０」のビットの位置に「１」が記憶される。また、第１記憶部３０Ｂには、アドレスの４〜７ビット目の「００００」を記憶先のアドレスとし、「０」のビットの位置に「１」が記憶される。また、例えば、アドレス「００００００１１」、出力ビット「３」のデータを学習したことにより、第１記憶部３０Ａには、アドレスの０〜３ビット目の「００１１」を記憶先のアドレスとし、「３」のビットの位置に「１」が記憶される。また、第１記憶部３０Ｂには、アドレスの４〜７ビット目の「００００」を記憶先のアドレスとし、「３」のビットの位置に「１」が記憶される。
【００３１】
第２記憶部３１には、ポート情報の各ビットと各ポート１１とを対応付けるポートテーブルが記憶されている。図８は、ポートテーブルのデータ構成の一例を示す図である。図８に示すように、ポートテーブルは、「アドレス」、「ポート番号」、「制御情報」の各項目を有する。「アドレス」の項目は、「０」〜「３１」の値を２値化した４ビットの値をそれぞれアドレスとして記憶する領域である。「ポート番号」の項目は、パケット１２の出力先のポートを表すポート情報を記憶する記憶領域である。例えば、「ポート番号」の記憶領域には、出力先のポートを表すポート番号が記憶される。「制御情報」の項目は、後述する選択回路２４を制御するための制御情報を記憶する領域である。制御情報は、何れの選択回路２４でパケット１２の通過を許可するか否かを示す。図８の例では、ポート１１が４つの場合に２ビットで通過を許可するポートを示している。なお、制御情報は、各ポート１１に対応してビットを設け、各ビットがそれぞれ選択回路２４でパケット１２の通過を許可するか否かを示すようにしてもよい。
【００３２】
図８の例では、００００のアドレスには、ポート番号としてＰＯＲＴ１が設定され、制御情報として００が設定されていることを示す。また、０１００のアドレスには、ポート番号としてＰＯＲＴ２が設定され、制御情報として０１が設定されていることを示す。また、１０００のアドレスには、ポート番号としてＰＯＲＴ３が設定され、制御情報として１０が設定されていることを示す。また、１１００のアドレスには、ポート番号としてＰＯＲＴ４が設定され、制御情報として１１が設定されていることを示す。なお、ポートテーブルは、ポート１１毎に、それぞれ異なるアドレスでポート番号、制御情報が予め登録されていてもよい。また、ポートテーブルは、出力先のポート１１を新たに追加する際に、新たに追加するポート１１のポート番号と制御情報を登録するようにしてもよい。ポートテーブルにポート番号、制御情報が予め登録される場合、第２記憶部３１のデバイスの一例としては、ＲＯＭ（Read  Only  Memory）などのデータを書き換え不可能な不揮発性の半導体メモリが挙げられる。また、ポートテーブルにポート番号、制御情報の追加や削除、更新を行う場合、第２記憶部３１のデバイスの一例としては、フラッシュメモリなどのデータを書き換え可能な不揮発性の半導体メモリが挙げられる。
【００３３】
図９は、第１記憶部に記憶されるデータのデータ構成の他の例を示す図である。図９の例は、送信元のアドレスおよび宛先のアドレスがアドレス５０に示すように４８ビットであり、アドレスを８ビットずつ６つの部分アドレス５０Ａ〜５０Ｆに分ける場合を示す。図９の例では、部分アドレス５０Ａ〜５０Ｆに対応して第１記憶部３０Ｃ〜３０Ｈが設けられている。第１記憶部３０Ｃ〜３０Ｈは、それぞれ８ビットの記憶先のアドレス空間を有し、アドレス毎に、「０」〜「１６３８３」の１６３８４ビットの記憶領域を有する。この「０」〜「１６３８３」の各ビットも、例えば、ポートテーブルによりそれぞれポート１１に対応付けられる。
【００３４】
格納部３２は、いずれかのポート１１でパケット１２を受信した場合、受信したパケット１２に含まれる送信元のアドレスを複数の部分アドレスに分割する。また、格納部３２は、第２記憶部３１に記憶されたポートテーブルに基づいて、パケット１２を受信したポート１１に対応するポート情報のビットを特定する。格納部３２は、各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各第１記憶部３０にポート情報を格納する。
【００３５】
例えば、図７に示すように、受信したパケット１２の送信元のアドレスがアドレス４０に示すように「０００１００１１」であり、パケット１２を受信したポートに対応する出力ビットが「１９」であるものとする。この場合、格納部３２は、アドレス４０を０〜３ビット目の部分アドレス「００１１」と４〜７ビット目の部分アドレス「０００１」に分ける。そして、格納部３２は、０〜３ビット目の「００１１」の部分アドレスを記憶先のアドレスとして第１記憶部３０Ａの「１９」のビットの位置に「１」を格納する。また、格納部３２は、４〜７ビット目の「０００１」の部分アドレスを記憶先のアドレスとして第１記憶部３０Ｂの「１９」のビットの位置に「１」を格納する。
【００３６】
また、例えば、図９に示すように、受信したパケット１２の送信元のアドレスがアドレス５０に示すように１６進数で「５Ａ３７９Ｂ６５ＦＡ０Ｃ」であり、ポートに対応する出力ビットが「ｎ」であるものとする。この場合、格納部３２は、アドレス５０を「５Ａ」、「３７」、「９Ｂ」、「６５」、「ＦＡ」、「０Ｃ」の部分アドレス５０Ａ〜５０Ｆに分ける。そして、格納部３２は、部分アドレス５０Ａ〜５０Ｆをそれぞれ記憶先のアドレスとして第１記憶部３０Ｃ〜３０Ｈの「ｎ」のビットの位置に「１」を格納する。
【００３７】
読出部３３は、受信したパケット１２に含まれる送信元のアドレスを複数の部分アドレスに分割する。読出部３３は、各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各第１記憶部３０から複数のビットで構成されたポート情報を読み出す。
【００３８】
選択部３４は、実施例１と同様の複数の選択回路２４と、選択回路２４を制御するエンコーダ３５を有する。選択回路２４は、ポート１１毎に設けられている。各選択回路２４には、受信したパケット１２がそれぞれ入力する。選択回路２４は、信号を選択的に出力可能な回路によって構成され、エンコーダ３５からの制御信号に応じて、受信したパケット１２を出力する。
【００３９】
エンコーダ３５は、読出部３３により読み出された各ポート情報間で同じビットにそれぞれ「１」が設定されたビットを特定する。例えば、エンコーダ３５は、各ポート情報間で対応するビット同士の論理和を求めることにより、「１」が設定されたビットを特定する。
【００４０】
例えば、図７に示すように、受信したパケット１２の宛先のアドレスがアドレス４０に示すように「０００１００１１」であるものとする。この場合、読出部３３は、アドレス４０を０〜３ビット目の部分アドレス「００１１」と４〜７ビット目の部分アドレス「０００１」に分ける。そして、読出部３３は、０〜３ビット目の「００１１」の部分アドレスを記憶先のアドレスとして第１記憶部３０Ａからポート情報を読み出す。これにより、「３」、「１９」の各ビットに１が設定されたポート情報が読み出される。また、読出部３３は、４〜７ビット目の「０００１」の部分アドレスを記憶先のアドレスとして第１記憶部３０Ｂからポート情報を読み出す。これにより、「１」、「１６」、「１８」〜「３１」の各ビットに１が設定されたポート情報が読み出される。エンコーダ３５は、読出部３３により読み出された各ポート情報間で対応するビット同士の論理和（ＡＮＤ）を求める。これにより、「１９」のビットが出力ビットと特定される。
【００４１】
また、例えば、図９に示すように、受信したパケット１２の宛先のアドレスがアドレス５０に示すように１６進数で「５Ａ３７９Ｂ６５ＦＡ０Ｃ」であり、ポートに対応する出力ビットが「ｎ」であるものとする。この場合、読出部３３は、アドレス５０を「５Ａ」、「３７」、「９Ｂ」、「６５」、「ＦＡ」、「０Ｃ」の部分アドレス５０Ａ〜５０Ｆに分ける。そして、読出部３３は、部分アドレス５０Ａ〜５０Ｆをそれぞれ記憶先のアドレスとして第１記憶部３０Ｃ〜３０Ｈからポート情報を読み出す。エンコーダ３５は、読出部３３により読み出された各ポート情報間で対応するビット同士の論理和（ＡＮＤ）を求める。これにより、「ｎ」のビットが出力ビットと特定される。
【００４２】
エンコーダ３５は、各ポート情報間で同じビットにそれぞれ「１」が設定されたビットを特定した場合、ポートテーブルから特定したビットに対応する制御情報を読み出す。エンコーダ３５は、読み出した制御情報に従い、パケット１２の通過が許可された選択回路２４へパケット１２の出力を指示する制御信号を出力し、パケット１２の通過が許可されていない選択回路２４へパケット１２の出力を禁止する制御信号を出力する。また、エンコーダ２５は、各ポート情報間で同じビットにそれぞれ「１」が設定されたビットがない場合、全ての選択回路２４へパケット１２の出力を指示する制御信号を送信する。なお、図６の例では、機能的な構成を示したため、格納部３２、読出部３３、エンコーダ３５を別に分けているが、例えば、１つのデバイスで構成してもよい。デバイスの一例としては、ＣＰＵやＭＰＵなどの電子回路が挙げられる。なお、デバイスとして、ＡＳＩＣやＦＰＧＡなどの集積回路を採用することもできる。
【００４３】
次に、本実施例に係る伝送装置１０によるパケット１２を受信したポート１１のポート情報および学習情報を格納する格納処理、および格納されたポート情報および学習情報を読み出す読出処理の流れを説明する。図１０は、格納処理の手順を示すフローチャートである。この格納処理は、例えば、何れかのポート１１でパケット１２が受信された際に実行される。
【００４４】
図１０に示すように、格納部３２は、受信したパケット１２に含まれる送信元のアドレスを抽出する（Ｓ３０）。また、格納部３２は、ポートテーブルに基づいて、パケット１２を受信したポート１１に対応するポート情報のビットを特定する（Ｓ３１）。格納部３２は、抽出した送信元のアドレスを部分アドレスに分割する（Ｓ３２）。そして、格納部３２は、各部分アドレスをそれぞれ記憶先のアドレスとしてそれぞれ部分アドレスに対応する第１記憶部３０にポート情報を格納し（Ｓ３３）、処理を終了する。これにより、パケット１２を受信する毎に、受信したパケット１２の送信元を分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各第１記憶部３０にポート情報が記憶される。
【００４５】
図１１は、読出処理の手順を示すフローチャートである。この読出処理も、例えば、何れかのポート１１でパケット１２が受信された際に実行される。
【００４６】
図１１に示すように、読出部３３は、受信したパケット１２に含まれる宛先のアドレスを抽出する（Ｓ４０）。そして、読出部３３は、抽出した宛先のアドレスを部分アドレスに分割する（Ｓ４１）。そして、読出部３３は、各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各第１記憶部３０にポート情報を読み出す（Ｓ４２）。エンコーダ３５は、読み出した各ポート情報間で同じビットにそれぞれ「１」が設定されたビットがあるか否かを判定する（Ｓ４３）。同じビットにそれぞれ「１」が設定されたビットがある場合（Ｓ４３肯定）、エンコーダ３５は、同じビットにそれぞれ「１」が設定されたビットに対応する制御情報をポートテーブルから読み出す（Ｓ４４）。そして、エンコーダ３５は、読み出した制御情報が示すポート１１に接続された選択回路２４へパケット１２の出力を指示する制御信号を出力し、他の選択回路２４へパケット１２の出力を禁止する制御信号を出力して（Ｓ４５）、処理を終了する。これにより、受信したパケット１２は、制御情報が示すポート１１から出力される。一方、同じビットにそれぞれ「１」が設定されたビットがない場合（Ｓ４３否定）、エンコーダ３５は、全ての選択回路２４へパケット１２の出力を指示する制御信号を送信し（Ｓ４６）、処理を終了する。これにより、受信したパケット１２は、全てのポート１１から出力される。
【００４７】
上述してきたように、本実施例に係る伝送装置１０は、予め定めたビットの組み合わせでパケット１２に含まれる送信元のアドレスおよび宛先のアドレスをそれぞれ複数の部分アドレスに分けたそれぞれに対応して第１記憶部３０を複数有する。第１記憶部３０は、それぞれ対応する部分アドレスのビット数以上のビット数のアドレス空間を有する。伝送装置１０は、入力したパケット１２に含まれる送信元のアドレスを複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各第１記憶部３０にポート情報を格納する。また、伝送装置１０は、入力したパケット１２に含まれる宛先のアドレスを複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各第１記憶部３０からポート情報を読み出す。そして、伝送装置１０は、読み出された各ポート情報に基づき、入力したパケット１２を出力するポートを選択する。このように、伝送装置１０は、部分アドレスに対応して第１記憶部３０を複数有するため、ポート情報を複数の第１記憶部３０に分散させて記憶させることができる。また、予め定めたビットの組み合わせで送信元のアドレスおよび宛先のアドレスを分けたため、各部分アドレスは、送信元のアドレスおよび宛先のアドレスよりもビット数が少なくなる。このため、第１記憶部３０は、送信元のアドレスや宛先のアドレスのビット数分の記憶アドレスを有しなくてもよい。これにより、少ない容量のメモリでも第１記憶部３０として利用できる。また、伝送装置１０は、ポート情報を複数の第１記憶部３０に分散させたことにより、送信元のアドレスや宛先のアドレスのビット数分の記憶アドレスを有する１つの記憶部に記憶させる場合と比較して、少ない容量でポート情報を記憶できる。
【００４８】
上述してきたように、本実施例に係る伝送装置１０は、ポート情報を、複数のビットで構成し、各ビットがそれぞれポートに対応させている。伝送装置１０は、各部分アドレスに対応する各第１記憶部３０に、入力したポートに対応するビットに１を設定したポート情報を格納する。そして、伝送装置１０は、読み出された各ポート情報間で同じビットにそれぞれ１が設定されたビットに対応するポートを、入力したパケットを出力するポートと選択する。このように、伝送装置１０は、ポート情報を複数の第１記憶部３０に分散させて記憶させた場合でも、出力するポートを特定できる。
【実施例３】
【００４９】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００５０】
例えば、上記の実施例１では、学習情報が未学習を示す場合、全てのポートからパケットを出力する場合について説明したが、開示の装置はこれに限定されない。例えば、未学習の場合、パケットを破棄してもよい。上記の実施例２も、読み出した各ポート情報間で同じビットにそれぞれ「１」が設定されたビットが無い場合、パケットを破棄してもよい。
【００５１】
また、上記の実施例１では、記憶部２０にポート情報と共に学習済みであるかを示す学習情報を記憶させた場合について説明したが、開示の装置はこれに限定されない。例えば、学習情報を記憶させず、ポート情報の記憶の有無により、学習済みであるか判定してもよい。これにより、伝送装置１０は、記憶部２０の記憶容量を少なくすることができる。なお、記憶部２０に記憶されたポート情報と学習情報は、一定期間毎に初期化するようにしてもよい。例えば、記憶部２０に、アドレス毎に最後にパケットが通過した最終通過日時を記憶する記憶領域を設け、最終通過日時から一定期間経過したポート情報と学習情報を初期化してもよい。例えば、ポート情報を削除し、学習情報を未学習を示す値（例えば、０）に初期化する。
【００５２】
また、上記の実施例２では、同じビット数で送信元のアドレスおよび宛先のアドレスを部分アドレスに分けた場合について説明したが、開示の装置はこれに限定されない。例えば、送信元のアドレスおよび宛先のアドレスのビット数が４８ビットの場合、２４ビット、１２ビット、８ビット、４ビットなど一定では無いビット数で部分アドレスに分けてもよい。これにより、メモリのアドレス空間に応じて部分アドレスを適切に定めることができるため、伝送装置１０は、第１記憶部３０としてアドレス空間の異なる複数のメモリを用いることができる。
【００５３】
また、上記の実施例２では、ポートテーブルを用いてポート情報の各ビットと各ポート１１とを対応付けた場合について説明したが、開示の装置はこれに限定されない。例えば、ポート情報の各ビットを直接それぞれ各ポート１１に対応させてもよい。
【００５４】
また、上記の実施例２では、ポートテーブルを記憶する第２記憶部３１を設けた場合について説明したが、開示の装置はこれに限定されない。例えば、何れか第１記憶部３０が対応する部分アドレスのビット数以上のビット数のアドレス空間を有する場合、部分アドレスで用いられないアドレスの記憶領域にポートテーブルを記憶させてもよい。これにより、伝送装置１０は、ポートテーブルを記憶させるために第２記憶部３１を設ける必要がなくなる。
【００５５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１に示す格納部２１と読出部２２や、図６に示す格納部３２と読出部３３が統合されてもよい。
【００５６】
［伝送制御プログラム］
また、上記の実施例で説明した伝送装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１２を用いて、上記の実施例で説明した伝送装置と同様の機能を有する伝送制御プログラムを実行するコンピュータの一例を説明する。図１２は、伝送制御プログラムを実行するコンピュータを示す図である。
【００５７】
図１２に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス４００を介して接続される。
【００５８】
ＲＯＭ３２０には、上記の実施例１に示す格納部２１、読出部２２およびエンコーダ２５と同様の機能、または上記の実施例２に示す格納部３２、読出部３３およびエンコーダ３５と同様の機能を発揮する伝送制御プログラム３２０ａが予め記憶される。なお、伝送制御プログラム３２０ａについては、適宜分離しても良い。
【００５９】
そして、ＣＰＵ３１０が、伝送制御プログラム３２０ａをＲＯＭ３２０から読み出して実行する。
【００６０】
そして、ＨＤＤ３３０には、ポートテーブルが設けられる。ポートテーブルは、図８に示したポートテーブルに対応する。
【００６１】
そして、ＣＰＵ３１０は、ポートテーブルを読み出してＲＡＭ３４０に格納する。ＣＰＵ３１０は、伝送制御プログラム３２０ａを実行し、パケットを受信した際に、受信したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、パケットが入力したポートに関するポート情報をＲＡＭ３４０に格納する。また、ＣＰＵ３１０は、パケットに含まれる宛先のアドレスを記憶先のアドレスとして、ＲＡＭ３４０からポート情報を読み出し、読み出されたポート情報およびポートテーブルに基づき、パケットを出力するポートを選択する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。
【００６２】
なお、上記した伝送制御プログラム３２０ａについては、必ずしもＲＯＭ３２０に記憶させておく必要はない。
【００６３】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００６４】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００６５】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【００６６】
（付記１）パケットを入出力する複数のポートと、
前記パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部と、
前記複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を前記記憶部に格納する格納部と、
前記入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、前記記憶部から前記ポート情報を読み出す読出部と、
前記読出部により読み出された前記ポート情報に基づき、前記入力したパケットを出力するポートを選択する選択部と、
を有する伝送装置。
【００６７】
（付記２）前記記憶部は、予め定めたビットの組み合わせで前記パケットに含まれる送信元のアドレスおよび宛先のアドレスをそれぞれ複数の部分アドレスに分けたそれぞれに対応して複数設けられ、それぞれ対応する部分アドレスのビット数以上のビット数のアドレス空間を有し、
前記格納部は、前記入力したパケットに含まれる送信元のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部に前記ポート情報を格納し、
前記読出部は、前記入力したパケットに含まれる宛先のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部から前記ポート情報を読み出し、
前記選択部は、前記読出部により読み出された各ポート情報に基づき、前記入力したパケットを出力するポートを選択する
ことを特徴とする付記１記載の伝送装置。
【００６８】
（付記３）前記ポート情報は、複数のビットで構成され、各ビットがそれぞれポートに対応し、
前記格納部は、各部分アドレスに対応する各記憶部に、入力したポートに対応するビットに所定値を設定した前記ポート情報を格納し、
前記選択部は、前記読出部により読み出された各ポート情報間で同じビットにそれぞれ所定値が設定されたビットに対応するポートを、前記入力したパケットを出力するポートと選択する
ことを特徴とする付記２記載の伝送装置。
【００６９】
（付記４）コンピュータに、
パケットを入出力する複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を、前記パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部に格納し、
前記入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、前記記憶部から前記ポート情報を読み出し、
読み出された前記ポート情報に基づき、前記入力したパケットを出力するポートを選択する
各処理を実行させることを特徴とする伝送制御プログラム。
【００７０】
（付記５）前記記憶部は、予め定めたビットの組み合わせで前記パケットに含まれる送信元のアドレスおよび宛先のアドレスをそれぞれ複数の部分アドレスに分けたそれぞれに対応して複数設けられ、それぞれ対応する部分アドレスのビット数以上のビット数のアドレス空間を有し、
前記格納する処理は、前記入力したパケットに含まれる送信元のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部に前記ポート情報を格納し、
前記読み出す処理は、前記入力したパケットに含まれる宛先のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部から前記ポート情報を読み出し、
前記選択する処理は、前記読出部により読み出された各ポート情報に基づき、前記入力したパケットを出力するポートを選択する
ことを特徴とする付記４記載の伝送制御プログラム。
【００７１】
（付記６）前記ポート情報は、複数のビットで構成され、各ビットがそれぞれポートに対応し、
前記格納する処理は、各部分アドレスに対応する各記憶部に、入力したポートに対応するビットに所定値を設定した前記ポート情報を格納し、
前記選択する処理は、前記読出部により読み出された各ポート情報間で同じビットにそれぞれ所定値が設定されたビットに対応するポートを、前記入力したパケットを出力するポートと選択する
ことを特徴とする付記５記載の伝送制御プログラム。
【００７２】
（付記７）コンピュータが、
パケットを入出力する複数のポートの何れかに入力したパケットに含まれる送信元のアドレスを記憶先のアドレスとして、当該パケットが入力したポートに関するポート情報を、前記パケットに含まれる送信元のアドレスおよび宛先のアドレスのビット数以上のビット数のアドレス空間を有し、アドレスが示す記憶領域にデータを記憶する記憶部に格納し、
前記入力したパケットに含まれる宛先のアドレスを記憶先のアドレスとして、前記記憶部から前記ポート情報を読み出し、
読み出された前記ポート情報に基づき、前記入力したパケットを出力するポートを選択する
各処理を実行することを特徴とする伝送制御方法。
【００７３】
（付記８）前記記憶部は、予め定めたビットの組み合わせで前記パケットに含まれる送信元のアドレスおよび宛先のアドレスをそれぞれ複数の部分アドレスに分けたそれぞれに対応して複数設けられ、それぞれ対応する部分アドレスのビット数以上のビット数のアドレス空間を有し、
前記格納する処理は、前記入力したパケットに含まれる送信元のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部に前記ポート情報を格納し、
前記読み出す処理は、前記入力したパケットに含まれる宛先のアドレスを前記複数の部分アドレスに分けた各部分アドレスをそれぞれ記憶先のアドレスとして各部分アドレスに対応する各記憶部から前記ポート情報を読み出し、
前記選択する処理は、前記読出部により読み出された各ポート情報に基づき、前記入力したパケットを出力するポートを選択する
ことを特徴とする付記７記載の伝送制御方法。
【００７４】
（付記９）前記ポート情報は、複数のビットで構成され、各ビットがそれぞれポートに対応し、
前記格納する処理は、各部分アドレスに対応する各記憶部に、入力したポートに対応するビットに所定値を設定した前記ポート情報を格納し、
前記選択する処理は、前記読出部により読み出された各ポート情報間で同じビットにそれぞれ所定値が設定されたビットに対応するポートを、前記入力したパケットを出力するポートと選択する
ことを特徴とする付記８記載の伝送制御方法。
【符号の説明】
【００７５】
１０    伝送装置
１１    ポート
１２    パケット
２０    記憶部
２１    格納部
２２    読出部
２３    選択部
２４    選択回路
２５    エンコーダ
３０    第１記憶部
３１    第２記憶部
３２    格納部
３３    読出部
３４    選択部
３５    エンコーダ
【図１】
2013077878.tif 000003
【図２】
2013077878.tif 000004
【図３】
2013077878.tif 000005
【図４】
2013077878.tif 000006
【図５】
2013077878.tif 000007
【図６】
2013077878.tif 000008
【図７】
2013077878.tif 000009
【図８】
2013077878.tif 000010
【図９】
2013077878.tif 000011
【図１０】
2013077878.tif 000012
【図１１】
2013077878.tif 000013
【図１２】
2013077878.tif 000014