(57)【要約】【課題】学習処理及びエージング処理の負荷を低減する。【解決手段】パケット伝送装置は、パケットの送信元に係る情報を含むエントリを記憶するテーブルと、パケットの送信元宛てのパケットをテーブルに基づき転送する転送部と、受信されたパケットの送信元に係る情報を含むエントリがテーブルから検索されないときに送信元に係る情報のエントリをテーブルに登録し、当該パケットの送信元に係る情報を含むエントリがテーブルから検索されたときにそのエントリを更新する学習処理を行う学習部と、所定期間更新されないエントリをテーブルから削除する処理を行うエージング部と、所定の識別子で特定されるパケットの受信状況を示す情報に基づき決定された時間帯において所定の識別子で特定されるパケットを前記学習処理の対象から除外する間引き部と、上記時間帯において所定の識別子で特定されるパケットをエージング処理の対象外に設定する設定部とを含む。【選択図】図１０
2016197836.tif 000002
【特許請求の範囲】
【請求項１】
パケットの送信元に係る情報を含むエントリを記憶するテーブルと、
前記パケットの送信元宛てのパケットを前記テーブルに基づき転送する転送部と、
受信されたパケットの送信元に係る情報を含むエントリが前記テーブルから検索されないときに前記送信元に係る情報のエントリを前記テーブルに登録し、受信されたパケットの送信元に係る情報を含むエントリが前記テーブルから検索されたときに前記検索されたエントリを更新する学習処理を行う学習部と、
所定期間更新されないエントリを前記テーブルから削除するエージング処理を行うエージング部と、
所定の識別子で特定されるパケットの受信状況を示す情報に基づき決定された時間帯において前記所定の識別子で特定されるパケットを前記学習処理の対象から除外する間引き部と、
前記時間帯において前記所定の識別子で特定されるパケットを前記エージング処理の対象外に設定する設定部と、
を含むパケット伝送装置。
【請求項２】
パケットの識別子と対応するエントリにパケットの受信数が閾値を超過する時間帯を示す情報が格納された間引きテーブルをさらに含み、
前記間引き部は、受信されたパケットから得られる識別子に対応するエントリを前記間引きテーブルから検索し、検索されたエントリ中の情報から特定される前記受信数が閾値を超過する時間帯に現在時刻が属するときに前記受信されたパケットを前記学習処理の対象から除外する
請求項１に記載のパケット伝送装置。
【請求項３】
前記間引きテーブルは、前記識別子を表すビット列で表現される全てのビットパターンに対応する複数のエントリを含み、
前記間引き部は、前記受信されたパケットの識別子のビットパターンに基づいて対応するエントリを前記間引きテーブルから検索する
請求項２に記載のパケット伝送装置。
【請求項４】
パケットの識別子と対応するエントリに前記受信状況を示す情報として所定期間を所定の時間粒度で分割した各時間帯におけるパケットの受信数が格納される統計テーブルの前記所定期間における格納内容が記憶される記憶部と、
前記記憶部に記憶された少なくとも一つの前記所定期間における格納内容に基づいて前記間引きテーブルへの格納内容を生成する生成部と
をさらに含む請求項２又は３に記載のパケット伝送装置。
【請求項５】
前記統計テーブルは、前記識別子を表すビット列で表現される全てのビットパターンに対応する複数のエントリを含み、
前記パケット伝送装置は、受信されたパケットから得られる識別子のビットパターンに基づいて対応するエントリを前記統計テーブルから検索し、検索されたエントリ中の時間帯のうち現在時刻が属する時間帯におけるパケット受信数に１を加算する加算部をさらに含む
請求項４に記載のパケット伝送装置。
【請求項６】
前記テーブルのエントリは、当該エントリの更新されない時間の経過に伴い所定値になる値を含み、
前記設定部は、前記エントリに含まれた値をエージング処理の対象外を示す特殊値に設定し、
前記エージング部は、前記値が所定値のエントリを前記テーブルから削除する一方で、前記値が特殊値のエントリの削除を回避する
請求項１から５のいずれか１項に記載のパケット伝送装置。
【請求項７】
前記設定部は、前記記憶部に記憶された前記統計テーブルの格納内容においてパケットの受信数が閾値を超過する時間帯を有するパケットに対応する前記テーブルのエントリを前記パケットの受信数が閾値を超過する時間帯においてエージング処理の対象から除外する
請求項４に記載のパケット伝送装置。
【請求項８】
前記設定部は、前記統計テーブルの格納内容においてパケットの受信数が所定値を下回る時間帯において、前記テーブルから当該パケットに対応するエントリを削除する
請求項４に記載のパケット伝送装置。
【請求項９】
パケット伝送装置の学習処理及びエージング処理の制御方法であって、
パケット伝送装置が、
受信されたパケットの送信元に係る情報を含むエントリがテーブルから検索されないときに前記送信元に係る情報のエントリを前記テーブルに登録し、受信されたパケットの送信元に係る情報を含むエントリが前記テーブルから検索されたときに前記検索されたエントリを更新する学習処理を行い、
所定期間更新されないエントリを前記テーブルから削除するエージング処理を行い、
所定の識別子で特定されるパケットの受信状況を示す情報に基づき決定された時間帯において前記所定の識別子で特定されるパケットを前記学習処理の対象から除外し、
前記時間帯において前記所定の識別子で特定されるパケットを前記エージング処理の対象外に設定する、
ことを含むパケット伝送装置の学習処理及びエージング処理の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示は、パケット伝送装置に関する。
【背景技術】
【０００２】
従来、Media Access Control(ＭＡＣ)アドレス学習を行うパケット伝送装置がある。ＭＡＣアドレス学習は、受信されたパケットを宛先へ転送する前に、当該パケットの送信元情報を、当該パケットの送信元を宛先とするパケットの転送先情報としてテーブルに登録する処理である。テーブルは、受信されたパケットの転送先を決定するために参照される。テーブルは、フォワーディングテーブルと呼ばれることがある。
【０００３】
ＭＡＣアドレス学習処理は、一例として、次のように行われる。テーブルに登録された全てのエントリと、パケットの送信元情報との照合による検索（サーチ）が行われる。これによって、送信元情報が既にテーブルに登録済か否かの確認が行われる。送信元情報に合致する転送先情報がテーブルに登録されていなければ、登録が行われる。ＭＡＣアドレス学習処理は、パケット伝送装置で受信される全てのパケットについて学習済であるか否かに関わらず行われる。
【０００４】
本願に係る背景技術としては、下記の特許文献１〜５に記載されたものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１０９５９２号公報
【特許文献２】特開２００６−０７４５５４号公報
【特許文献３】特開２０１２−２３５４００号公報
【特許文献４】特開平１１−１６３９１４号公報
【特許文献５】特開平０１−０３９８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、ネットワークユーザの増大により、テーブルに登録されるエントリ数が増大している。また、ユーザ一人一人の通信データ量は大きくなり、それに伴い通信速度も高速化する傾向にある。このため、MACアドレス学習処理におけるサーチの負荷が増大する。通
常、パケットは、MACアドレス学習処理が終了した後に、宛先へ向けて転送される。この
ため、サーチ時間が長大化すると、パケットの送出タイミングが遅れる。このようなパケット処理遅延により、スループットの低下や、パケット滞留によるパケット破棄が発生するおそれがあった。換言すれば、パケット伝送装置におけるＭＡＣアドレス学習処理の負荷がパケットの転送処理に影響を及ぼすおそれがあった。
【０００７】
また、エントリ数の増大を抑えるために、エージング処理が行われている。エージング処理では、例えば、所定期間更新されていないエントリがテーブルから削除される。これにより、不要なＭＡＣアドレス学習情報を削除し、学習可能領域を増やすことができる。また、ＭＡＣアドレス学習処理にてアクセスするエントリ数を減らすことができる
もっとも、エージング処理でも、各エントリが所定期間更新されていないか否かを判定するために、各エントリに対するアクセスが行われる。このため、エントリ数増大に伴い、エージング処理の負荷も上昇する傾向にある。
【０００８】
本発明の一態様は、上記に鑑み、学習処理及びエージング処理の負荷を低減することの
できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様は、パケットの送信元に係る情報を含むエントリを記憶するテーブルと、前記パケットの送信元宛てのパケットを前記テーブルに基づき転送する転送部と、受信されたパケットの送信元に係る情報を含むエントリが前記テーブルから検索されないときに前記送信元に係る情報のエントリを前記テーブルに登録し、受信されたパケットの送信元に係る情報を含むエントリが前記テーブルから検索されたときに前記検索されたエントリを更新する学習処理を行う学習部と、所定期間更新されないエントリを前記テーブルから削除するエージング処理を行うエージング部と、所定の識別子で特定されるパケットの受信状況を示す情報に基づき決定された時間帯において前記所定の識別子で特定されるパケットを前記学習処理の対象から除外する間引き部と、前記時間帯において前記所定の識別子で特定されるパケットを前記エージング処理の対象外に設定する設定部と、を含むパケット伝送装置である。
【発明の効果】
【００１０】
本発明の一態様によれば、学習処理及びエージング処理の負荷を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施形態に係るネットワークシステムの構成例を示す図である。
【図２】図２は、図１に示したネットワークシステム中のパケット伝送装置の構成の説明図である。
【図３】図３は、関連技術に係るＭＡＣアドレス学習処理の説明図である。
【図４】図４は、関連技術に係るＭＡＣアドレス学習処理についての詳細を示す説明図である。
【図５】図５は、関連技術に係るＭＡＣアドレス学習処理についての詳細を示す説明図である。
【図６】図６は、関連技術に係るＭＡＣアドレス学習処理についての詳細を示す説明図である。
【図７】図７は、関連技術に係るＭＡＣアドレス学習処理についての詳細を示す説明図である。
【図８】図８は、関連技術に係るＭＡＣアドレス学習処理についての詳細を示す説明図である。
【図９】図９は、関連技術における問題点の説明図である。
【図１０】図１０は、実施形態に係るパケット伝送装置の構成例を示す。
【図１１】図１１は、ネットワークの使用状況を表すグラフである。
【図１２】図１２は、ＦＰＧＡに記憶される統計テーブルのデータ構造の一例を示す図である。
【図１３】図１３は、インデックスの検索方法の例を示す。
【図１４】図１４は、統計テーブルに係る時間粒度及び閾値の変更の説明図である。
【図１５】図１５は、統計情報の解析部の動作の説明図である。
【図１６】図１６は、統計情報の解析部の動作の説明図である。
【図１７】図１７は、統計情報の解析部の処理を示すフローチャートである。
【図１８】図１８は、間引きテーブルのデータ構造例を示す。
【図１９】図１９は、間引き部の処理を模式的に説明する図である。
【図２０】図２０は、間引き部を含むＭＡＣ学習処理の一例を示すフローチャートである。
【図２１】図２１は、統計情報の収集部の処理例を示すフローチャートである。
【図２２】図２２は、エージング部の動作例の説明図である。
【図２３】図２３は、エージング部のエージング対象外設定処理の処理例を示すフローチャートである。
【図２４】図２４は、エージング部のエージング処理の例を示すフローチャートである。
【図２５】図２５は、ＦＤＢのエントリ強制削除処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１３】
＜ネットワーク構成＞
図１は、実施形態に係るネットワークシステムの構成例を示す図である。図１において、ネットワークシステムは、複数のパケット伝送装置１を含むネットワーク２と、ネットワーク２に接続された複数のホスト（「ユーザ」とも呼ばれる）３とを含む。以下の説明において、パケット伝送装置１を「ＮＥ（Network Element）１」と表記する。ホスト３
としては、パーソナルコンピュータ（ＰＣ），サーバマシン，フィーチャーフォン，スマートフォン，Personal Digital Assistant（ＰＤＡ），タブレット端末，その他の通信機能を有する端末装置又は通信装置の一つを適用することができる。
【００１４】
図１に示す例では、複数のホスト３として、ホスト３Ａと、ホスト３Ｂと、ホスト３Ｃとが図示されている。ホスト３Ａは、複数のＮＥ１を介してホスト３Ｂ及びホスト３Ｃと接続されている。ホスト３Ａは、複数のＮＥ１の一つであるＮＥ１Ａと接続されている。ホスト３Ａとホスト３Ｂとの間の通信路と、ホスト３Ａとホスト３Ｃとの間の通信路は、ＮＥ１Ａで分岐し、それぞれ異なる１以上のＮＥ１を辿ってホスト３Ｂ及びホスト３Ｃの夫々に到達する。
【００１５】
各ＮＥ１は、ＭＡＣ（Media Access Control）アドレス学習処理を行う。例えば、ＮＥ１は、ホスト３Ａとホスト３Ｂ、並びにホスト３Ａとホスト３Ｃのポイント−マルチポイント（Ｐ−ＭＰ）通信を実現する。図１の例では、ホスト３Ａとホスト３Ｂとの間、並びにホスト３Ａとホスト３Ｃとの間におけるＰ−ＭＰ通信を実現する。なお、ＮＥ１Ａとホスト３Ｂとの間を接続するＮＥ１の数と、ＮＥ１Ａとホスト３Ｃとを接続するＮＥ１の数は、１以上の所望の数に設定可能である。ＮＥ１Ａとホスト３Ｂ及びホスト３Ｃが直接に接続される場合もある。
【００１６】
ネットワークシステムにおけるＮＥ１間、ＮＥ１−ホスト３間の接続形態（ネットワークトポロジ）や、ネットワークの接続媒体を問わない。接続媒体は、有線（メタルケーブル、光ファイバなど）であっても良く、無線であっても良い。以下の説明において、「ＭＡＣアドレス学習」を、「ＭＡＣ学習」と略記する場合もある。
【００１７】
図２は、図１に示したネットワークシステムに含まれるＮＥ１に着目した図である。図２では、一例としてＮＥ１Ａに着目している図２では、説明を簡単にするために、ホスト３Ａ，３Ｂ及び３ＣがＮＥ１Ａに直接に接続（収容）されていると仮定する。
【００１８】
ＮＥ１Ａは、二つのインタフェースカード１１（ＩＦカード１１Ａ（ＩＦ＃１），ＩＦカード１１Ｂ（ＩＦ＃２））と、スイッチカード１２（ＳＷ１２）とを含んでいる。ホスト３Ａは、ＭＡＣアドレス“Ａ”を有し、ＮＥ１Ａとの接続ポートはＩＦ＃１のポート＃１（IF #1, Port #1）である。ホスト３Ｂは、ＭＡＣアドレス“Ｂ”を有し、ＮＥ１Ａとの接続ポートはＩＦ＃２のポート＃１（IF #2, Port #1）である。ホスト３Ｃは、ＭＡＣアドレス“Ｃ”を有し、ＮＥ１Ａとの接続ポートはＩＦ＃２のポート＃２（IF #2, Port 
#2）である。ホスト３Ａ〜３Ｃは、同一のＶＬＡＮ（Virtual Local Area Network：仮想ＬＡＮ）に属している。ホスト３Ａ〜３Ｃが属するＶＬＡＮの識別子（ＶＬＡＮ−ＩＤ（vid））は、“１００”である。
【００１９】
＜関連技術＞
図３は、関連技術に係るＭＡＣアドレス学習処理の説明図である。関連技術におけるＭＡＣアドレス学習に係る処理として、以下の（１）〜（３）に関して概要を説明する。
（１）入力パケットの転送： 入力側（Ingress (ＩＧ)転送処理）
（２）ＭＡＣアドレスの学習：出力側学習（Egress (ＥＧ)学習処理）
（３）学習情報の削除：エージングタイムアウトによる削除（エージング処理）、ＮＥのオペレータ（ユーザ）の指定による削除
【００２０】
ＭＡＣアドレス学習に関する構成について説明する。図３に示すように、ＩＦカード１１Ａ（ＩＦ＃１）は、Field Programmable Gate Array（ＦＰＧＡ）２１と、Content Addressable Memory（ＣＡＭ）２２と、Read Only Memory（ＲＯＭ）２３と、Central Processing Unit（ＣＰＵ）２４とを備える。
【００２１】
ＦＰＧＡ２１は、フレーム転送部２５及びＭＡＣ学習部２６として動作する。ＣＡＭ２２は、フォワーディングデータベース（ＦＤＢ）２７を含む。ＦＤＢは、フォワーディングテーブルとも呼ばれる。ＣＰＵ２４がＲＯＭ２３に記憶されたプログラムを実行することによって、エージング部２８としての処理が行われる（ＣＰＵ２４がエージング部２８として動作する）。ＩＦカード１１Ｂ（ＩＦ＃２）も、ＩＦカード１１Ａと同じ構成を有する。但し、図３では、ＩＦ＃２に含まれるフレーム転送部２５，ＭＡＣ学習部２６及びＦＤＢ２７を図示し、残りは図示を省略している。
【００２２】
以下の説明では、ＩＦ＃１におけるフレーム転送部２５，ＭＡＣ学習部２６，ＦＤＢ２７，エージング部２８を“フレーム転送部２５ａ”，“ＭＡＣ学習部２６ａ”，“ＦＤＢ２７ａ”，“エージング部２８ａ”と表記する。ＩＦ＃２におけるフレーム転送部２５，ＭＡＣ学習部２６，ＦＤＢ２７，エージング部２８は、“フレーム転送部２５ｂ”，“ＭＡＣ学習部２６ｂ”，“ＦＤＢ２７ｂ”，“エージング部２８ｂ”と表記する。両者を区別しない場合には、“フレーム転送部２５”，“ＭＡＣ学習部２６”，“ＦＤＢ２７”，“エージング部２８”との表記を用いる。
【００２３】
フレーム転送部２５は、上述した（１）の処理（ＩＧ転送処理）を行う。ＭＡＣ学習部２６は、上述した（２）の処理（ＥＧ学習処理）を行う。エージング部２８は、上記した（３）のエージング処理を行う。
【００２４】
以下、フレーム転送部２５，ＭＡＣ学習部２６，エージング部２８について説明する。図３では、ホスト３Ａからホスト３Ｂ宛てのＭＡＣフレーム（「パケット」とも表記する）が送信されている。一方、ホスト３Ｂからホスト３Ａ宛てにパケットが送信されている。
【００２５】
フレーム転送部２５は、ＩＧ転送処理を行う。すなわち、フレーム転送部２５は、入力パケットの転送を行う。例えば、図３において、ＩＦ＃１のフレーム転送部２５ａは、ＩＦ＃１がホスト３Ａから受信したパケットの宛先情報をＦＤＢ２７ａから取得する。パケットがホスト３Ｂ宛てである場合、宛先情報は、“IF#2, Port#1”且つ“vid=100”であ
る。パケットは、ＳＷカード１２へ送られる、ＳＷカード１２は、宛先情報に基づきパケットをＩＦ＃２へ送る。
【００２６】
ＭＡＣ学習部２６は、ＥＧ学習処理を行う。例えば、ＩＦ＃２のＭＡＣ学習部２６は、
ＩＦ＃１からＩＦ＃２へ転送されてきたパケットに係るデータを取得し、ＦＤＢ２７を更新する。その後、パケットは、ホスト３Ｂに転送される。
【００２７】
ＩＦ＃２は、ホスト３Ａ宛てのパケットをホスト３Ｂから受信する。この場合、ＩＦ＃２のフレーム転送部２５ａは、ＩＧ転送処理を行う。すなわち、フレーム転送部２５ｂは、ＩＦ＃１のフレーム転送部２５ａと同様に、ＦＤＢ２７ｂからパケットの宛先情報を取得し、ＳＷカード１２へパケットを送る。ＳＷカード１２は、宛先情報に基づきパケットをＩＦ＃１へ転送する。
【００２８】
ＩＦ＃１のＭＡＣ学習部２６ａは、ＥＧ学習処理を行う。すなわち、ＭＡＣ学習部２６ａは、ＩＦ＃２のＭＡＣ学習部２６ｂと同様に、ＩＦ＃２からＩＦ＃１へ転送されてきたパケットに係るデータを取得し、ＦＤＢ２７ａを更新する。パケットは、ホスト３Ａに転送される。
【００２９】
エージング部２８は、エージング処理を行う。エージング部２８は、定期的に、自身が実装されたＩＦカード１１のＦＤＢ２７のチェックを行い、所定期間更新がないエントリをＦＤＢ２７から削除する。また、ＦＤＢ２７のエントリは、ＮＥ１Ａの管理者からの削除コマンドに従って削除されることもある。
【００３０】
図４〜図８は、関連技術に係るＭＡＣアドレス学習統計テーブル４２Ａについての詳細を示す説明図である。図４において、ＩＦ＃１のＦＤＢ２７（２７ａ）と、ＩＦ＃１のＦＤＢ２７（ＦＤＢ２７ｂ）とは、共に未学習の状態であると仮定する。
【００３１】
ＦＤＢ２７ａ及びＦＤＢ２７ｂが共に未学習の状態において、ホスト３Ａからホスト３Ｂへパケットが送信された場合を仮定する。パケット（ＭＡＣフレーム）は、図４に示すように、宛先ＭＡＣアドレス（Destination Address：ＤＡ），送信元ＭＡＣアドレス（Source Address：ＳＡ），ＶＬＡＮ−ＩＤ（ＶＩＤ），及び送信対象のデータ（ペイロー
ド）を含む。ホスト３Ｂ宛てのパケットは、宛先情報として、ＤＡ＝Ｂ，ＳＡ＝Ａ，ＶＩＤ＝１００の各値を有する。
【００３２】
＜＜ＩＧ転送処理（未学習）＞＞
ＩＦ＃１のフレーム転送部２５ａは、パケットを受信すると、ＩＧ転送処理（未学習）を実行する。すなわち、フレーム転送部２５ａは、入力されたパケットからＤＡとＶＩＤを取得し、ＦＤＢ２７ａを検索する。ＦＤＢ２７ａは、キー（ＫＥＹ）とコンテンツとが関連づけて記憶される。ＦＤＢ２７ａは未学習状態のため、“DA=B”及び“VID=100”に
対応するエントリはヒットしない。
【００３３】
この場合、フレーム転送部２５ａは、同一のＶＩＤ（vid=100）に属するホスト３Ｂ及
びホスト３Ｃにパケットをマルチキャストする（フラッディングと呼ばれる）。パケットのＤＡとして、マルチキャストアドレス“Ｍ”が設定される。また、パケット伝送装置１内の内部制御情報として、転送先のＩＦカード１１の識別子（ＩＦ番号）及びポートの識別子（ポート番号）がパケットに付与（スタック）される。具体的には、ホスト３Ｂに対応する“IF #2, port #1”と、ホスト３Ｃに対応する“IF #2, port #2”とがパケットにスタックされる。このとき、ＩＦカード１１の識別子は、重複する場合には集約され得る。なお、フレーム転送部２５ａの前段において、ＦＰＧＡ２１は、ＳＡに対応するＩＦ番号及びポート番号“IF #1, port #1”をパケットにスタックする。パケットは、ＳＷカード１２へ送られる。ＳＷカード１２は、各パケットを“IF #2”に基づきＩＦ＃２へ送る
。
【００３４】
＜＜ＥＧ学習処理（未学習）＞＞  
図５に示すように、ＳＷカード１２からのパケットが入力されるＩＦ＃２のＭＡＣ学習部２６ｂは、ＥＧ学習処理（未学習）を行う。すなわち、ＭＡＣ学習部２６ｂは、入力されたパケットのＳＡとＶＩＤ（SA=A, vid=100）を取得し、ＦＤＢ２７ｂを検索する。Ｆ
ＤＢ２７ｂは、ＦＤＢ２７ａと同じデータ構造を有し、キー（ＫＥＹ）とコンテンツとが関連づけて記憶される。
【００３５】
この時点で、ＦＤＢ２７ｂは未学習状態のため、“SA=A, vid=100”に対応するエント
リ（コンテンツ）はヒットしない。この場合、ＭＡＣ学習部２６ｂは、パケットに係るデータとして、送信元に係るデータを含むエントリをＦＤＢ２７ｂに登録する。具体的には、“SA=A”，“vid=100”，“IF #1”及び“port #1”が登録される。また、コンテンツ
に含まれるヒット値は０に設定される。ヒット値は、エントリのエージングに使用されるパラメータであり、ヒット値が所定値になったエントリはＦＤＢ２７から削除される。
【００３６】
ＦＤＢ２７ｂに対するエントリ登録によって、ＩＦ＃２において、「MAC=Aであるホス
ト３Ａは、ＩＦ＃１のport #1の配下にいる（収容されている）」ことが学習される。Ｍ
ＡＣ学習部２６ｂは、パケットにスタックされた“IF #1”及び“port #1”を削除する。内部情報であり、エントリ登録によって用済みとなったからである。その後、パケットは、パケットにスタックされた転送先のＩＦ番号及びポート番号に基づきホスト３Ｂ及びホスト３Ｃへ送信される。ＩＦ番号は、各ＩＦカード３１に割り当てられた番号であり、ポート番号は、各ＩＦカード３１が備える複数のポートに割り当てられた番号である。
【００３７】
＜＜ＩＧ転送処理（学習済）＞＞
図６では、ＩＦ＃２にてホスト３Ａの情報が学習済の状態で、ホスト３Ｂ宛てのパケットを送信した場合が図示されている。ＩＦ＃２で受信されたパケットは、フレーム転送部２５ｂに入力される。フレーム転送部２５ｂは、ＩＧ転送処理（学習済）を行う。すなわち、フレーム転送部２５ｂは、パケットから“DA=A”及び“vid=100”を取得し、対応す
るエントリをＦＤＢ２７ｂから検索する。
【００３８】
この時点で、ＤＡ及びＶＩＤに対応するエントリは既に登録されている（学習済である）。このため、ＤＡ及びＶＩＤに対応するエントリ（エントリ番号０のエントリ）がヒットする。フレーム転送部２５ｂは、ヒットしたエントリ中のコンテンツ（宛先情報：“IF
#1”及び“port #1”）をパケットにスタックし、ＳＷカード１２へ送る。ＳＷカード１２は、宛先情報に基づき、パケットをＩＦ＃１へ転送する。パケットには、ＦＰＧＡ２１によってホスト３Ｂに係るＩＦ番号及びポート番号（IF #2, port #1）がパケットにスタックされる。
【００３９】
＜＜ＥＧ学習処理（未学習）＞＞
ＩＦ＃１では、パケットは、ＭＡＣ学習部２６（「ＭＡＣ学習部２６ａ」とも表記）がＥＧ学習処理（未学習）を行う。すなわち、ＭＡＣ学習部２６ａは、パケットのＤＡ及びＶＩＤを取得し、ＦＤＢ２７ａを検索する。対応するエントリがヒットしない。このため、ＭＡＣ学習部２６ａは、パケットに係るデータとして、ホスト３Ｂに係るエントリ（MAC=B, vid=100, IF #2, port #1）をＦＤＢ２７ａに登録する。このように、ＦＤＢ２７のエントリには、「パケットの送信元に係る情報」が記憶される。また、ＭＡＣ学習部２６ａは、“IF #2, port #1”をパケットから削除する。
【００４０】
＜＜ＩＧ転送処理（学習済）＞＞
図７は、ホスト３Ｂからホスト３Ａ宛てのパケットが送信された場合を仮定している。ＩＦ＃２では、フレーム転送部２５ｂがＩＧ転送処理（学習済）を行う。フレーム転送部２５ｂは、ＤＡ及びＶＩＤに対応するエントリ（エントリ番号“０”）中のＩＦ番号及びポート番号（エントリ番号“０”）をＦＤＢ２７ｂから取得する。フレーム転送部２５ｂ
は、ＩＦ番号及びポート番号をパケットに付与して、ＳＷカード１２に送る。このように、フレーム転送部２５は、ＭＡＣアドレス学習済のパケット転送元に宛てられたパケットをＦＤＢ２７に基づき転送する。ＳＷカード１２は、パケットをＩＦ＃１に転送する。
【００４１】
＜＜ＥＧ学習処理（学習済）＞＞
ＩＦ＃１では、ＭＡＣ学習部２６ａがＥＧ学習処理（学習済）を行う。この場合、ＦＤＢ２７ａの検索において、パケットに対応するエントリ（エントリ番号“０”）がヒットする。すると、ＭＡＣ学習部２６ａは、ヒット値を０に設定する（リセットする）。その後、パケットは、ホスト３Ａへ送られる。このように、ＦＤＢ２７のエントリにおけるヒット値は、フレーム転送部２５のＩＧ転送処理における検索でヒットしたときにインクリメントされる。一方、ヒット値は、ＭＡＣ学習部のＥＧ学習処理における検索でヒットしたときにリセットされる。
【００４２】
＜＜学習処理の削除＞＞
図８は、学習情報の削除の一例を示す。エントリを削除する方法には、２つの方法がある。一つは、「エージングタイムアウト」をトリガとしてエントリを削除する方法である（削除方法１：エージング処理と呼ぶ）。もう一つは、ＮＥ１１のユーザのコマンド入力をトリガとしてエントリを削除する方法である（削除方法２）。
【００４３】
削除方法１（エージング処理）では、エージング部２８（図８ではエージング部２８ａ）が、所定周期でＦＤＢ２７（図８ではＦＤＢ１７ａ）に登録された各エントリのヒット値をチェックする。周期は、例えば、ＮＥ１１のユーザによって設定されたエージングタイマ値の１／４の周期である。但し、周期の長さは適宜設定可能である。
【００４４】
エージング部２８は、上記した周期毎にＦＤＢ２７の各エントリのヒット値をチェックする。チェックは、次のようにして行われる。エージング部２８は、ヒット値をインクリメント（１を加算）する。インクリメント後のヒット値が所定の上限値（例えば「３」）に達していれば、エージング部２８は、ヒット値が上限値に達したエントリを削除する。
【００４５】
上述したように、ＥＧ学習処理においてヒットしたエントリのヒット値は、リセット（０に設定）される。このため、エージングタイマとして設定された時間長（期間）内にＥＧ学習処理でヒットしたエントリは削除されない。このように、上限値は、エージングタイマで規定される期間中にエントリがチェックされる回数に依存して決定される。
【００４６】
削除方法２では、ユーザがエントリ番号及びキー（ＫＥＹ：図８の例ではＭＡＣアドレス及びＶＩＤ）を指定したコマンド入力で、対応するエントリが削除される。
【００４７】
＜＜関連技術の問題点＞＞
図９は、関連技術における問題点の説明図である。図９に示すように、ＥＧ学習処理では、図９に示すように、ＭＡＣ学習部２６は、パケットからキーとして使用される情報（ＭＡＣアドレス及びＶＩＤ）を取得し、ＦＤＢ１７内の各エントリのキーの比較を行う（サーチ処理）。サーチ処理において、同一のＭＡＣアドレス及びＶＩＤが登録されたエントリが発見されれば、エントリがヒットしたと判定され、ヒット値が０に更新される。一方、キーが一致するエントリが見つからない場合には、ミスヒットとして判定され、パケットから取得されたキーは、新規エントリとしてＦＤＢ１７に追加される。サーチ処理は、受信されたパケット毎に、ＦＤＢ１７に登録された全てのエントリについて実行される。図９に示すように、エントリ数が１００万であれば、比較が１００万回実行される。
【００４８】
近年、ユーザ（ホスト）数の増加によりＦＤＢ１７に登録されるエントリ数が増加する傾向にある。また、ユーザ数の増加に対応するために通信レートを高める（高速化）の傾
向がある。このため、上記したサーチ処理では、パケット数又はエントリ数の増加に伴い、サーチ処理の負荷が増大する。サーチ処理の負荷増大によって、サーチ処理が輻輳し、サーチ処理の輻輳がパケットの転送処理に影響を及ぼし、スループットの低下を招くおそれがあった。
【００４９】
また、エージング処理も、ＦＤＢ２７の各エントリに対するアクセスを伴う処理である。このため、ＦＤＢ２７のエントリ数増大によって、エージング処理の負荷が増大する。以下に説明する実施形態の詳細では、ＭＡＣ学習処理及びエージング処理の負荷を低減することが可能なパケット伝送装置（ＮＥ）について説明する。ＭＡＣ学習処理及びエージング処理の負荷低減により、パケット転送処理への影響を小さくすることができる。また、負荷低減によって、パケット伝送装置の消費電力削減効果や発熱抑制効果が期待できる。
【００５０】
〔実施形態〕
以下、実施形態に係るパケット伝送装置について説明する。実施形態に係るパケット伝送装置は、パケットの送信元に係る情報を含むエントリを記憶するテーブルと、上記パケットの送信元宛てのパケットを上記テーブルに基づき転送する転送部とを含む。さらに、パケット伝送装置は、受信されたパケットの送信元に係る情報を含むエントリが上記テーブルから検索されないときに上記送信元に係る情報のエントリを上記テーブルに登録し、受信されたパケットの送信元に係る情報を含むエントリが上記テーブルから検索されたときに前記検索されたエントリを更新する学習処理を行う学習部を含む。さらに、パケット伝送装置は、所定期間更新されないエントリを前記テーブルから削除するエージング処理を行うエージング部を含む。さらに、パケット伝送装置は、所定の識別子で特定されるパケットの受信状況を示す情報に基づき決定された時間帯において上記所定の識別子で特定されるパケットを上記学習処理の対象から除外する間引き部を含む。さらに、パケット伝送装置は、上記時間帯において前記所定の識別子で特定されるパケットを前記エージング処理の対象外に設定する設定部と、を含む。
【００５１】
学習処理の例として、実施形態では、ＭＡＣ学習処理について説明する。但し、学習処理は、ＩＰアドレスのような他のアドレスについての学習処理であっても良い。また、ＭＡＣフレームは、「パケット」の一例である。「パケット」は、ＭＡＣフレームの他に、ＩＰパケットなどの伝送単位となる様々なデータブロックを含み得る。
【００５２】
＜構成例＞
図１０は、実施形態１に係るＮＥ（ＮＥ３０）の構成例を示す。ＮＥ３０は、図１に示したＮＥ１Ａの代わりに使用可能である。すなわち、ＮＥ３０には、関連技術で説明したホスト３Ａ，ホスト３Ｂ，及びホスト３Ｃが直接に、又は１以上の中継ノード（ＮＥなど）を介して接続される。但し、図１０では、ホスト３Ｂ及びホスト３Ｃの図示は省略してある。
【００５３】
ＮＥ３０は、ＩＦカード３１（ＩＦカード３１Ａ（ＩＦ＃１）及びＩＦカード３１Ｂ（ＩＦ＃２）），及びＳＷカード１２を含む（図２参照）。ＩＦカード３１は、ＣＰＵ３４，Random Access Memory（ＲＡＭ）３５，ＲＯＭ３６，ＦＰＧＡ３７，及びＣＡＭ３８を含み、これらは図示しないバスで相互に接続されている。
【００５４】
ＦＰＧＡ３７は、ＭＡＣ学習部４０と、統計情報の収集部４１と、間引き部４４として動作する。ＦＰＧＡ３７はメモリ（図示せず）を含み、メモリには、統計データの記憶領域４２が作成されている。ＭＡＣ学習部４０は、間引きテーブル４３を有する。ＣＡＭ３８は、関連技術と同様に、ＦＤＢ２７を記憶している。
【００５５】
ＣＰＵ３４は、ＲＯＭ３６に記憶されたプログラムを実行することによって、統計情報の解析部４５と、エージング部４６として動作する。ＲＡＭ３５は、データの記憶領域として使用される。ＲＡＭ３５は、統計データの記憶領域４７を有する。なお、図示は省略しているがＩＦカード３１ＢもＩＦカード３１Ａと同様の構成を有する。
【００５６】
ＦＰＧＡ３７は、関連技術と同様にフレーム転送部２５（図３）を有しており（図１０での図示は省略）、関連技術において説明したＩＧ転送処理を行う。また、ＭＡＣ学習部４０は、関連技術において説明したＥＧ学習処理を行う。また、エージング部４６は、関連技術において説明したエージング処理を行う。ＩＧ転送処理，ＥＧ学習処理，エージング処理は既に説明したのでここでの繰り返しの説明は省略する。但し、ＩＦカード３１では、所定のパケットについてＭＡＣ学習処理及びエージング処理が実行されない時間帯が設けられる。詳細は後述する。
【００５７】
なお、ＦＰＧＡ３７の代わりに、ＦＰＧＡ以外のプログラマブルロジックデバイス（ＰＬＤ）や、集積回路（ＩＣ，ＬＳＩ，Application Specific Integrated Circuit（ＡＳ
ＩＣ））のような半導体デバイスが使用されても良い。また、解析部４５及びエージング部４６の少なくとも一方としての動作がＰＬＤや集積回路によって実行されても良い。
【００５８】
ＦＤＢ２７は、「テーブル」の一例である。フレーム転送部２５（ＦＰＧＡ３７）は、「転送部」の一例である。ＭＡＣ学習部４０（ＦＰＧＡ３７）は、「学習部」の一例である。収集部４１（ＦＰＧＡ３７）は、「加算部」の一例である。解析部４５（ＣＰＵ３４）は、「生成部」の一例である。エージング部４６（ＣＰＵ３４）は、「エージング部」，「設定部」の一例である。ＲＡＭ３５は、「記憶部」の一例である。ＣＰＵ３４は、「プロセッサ」，「制御部」又は「コントローラ」の一例である。ＲＯＭ３６，ＲＡＭ３５，ＦＰＧＡ３７のメモリ及びＣＡＭ３８の夫々は、「記憶装置」，又は「コンピュータ読み取り可能な記憶媒体」の一例である。
【００５９】
ＩＦカード３１Ａは、ＥＧ学習処理において、以下のように動作する。以下の動作は、ＩＦカード３１毎に行われる。収集部４１は、インデックスで特定される“ホスト（パケット）”毎に、統計データとして、所定期間（所定周期）を単位時間で分割したときの各時間帯におけるパケット受信数をカウント（計数）する。例えば、所定期間が１日であり単位時間が３０分である場合には、４８の時間帯の夫々におけるパケット受信数が統計データとして収集される。統計データは記憶領域４２に記憶される。但し、所定期間（所定周期）及び単位時間の長さは適宜設定可能である。
【００６０】
インデックスは、ＥＧ学習処理におけるユーザ（ホスト３）の識別の最小単位である。インデックスは、パケットの識別子でもある。また、インデックスは、間引き判定用の識別子（間引きチェック識別子）として使用される。さらに、インデックスは、統計データの収集単位として扱われる。インデックスは、「パケットの識別子」の一例である。
【００６１】
解析部４５（ＣＰＵ３４）は、記憶領域４２に記憶された統計データの解析を行う。すなわち、解析部４５は、記憶領域４２から得られた統計データをＲＡＭ３５の記憶領域４７に記憶し、統計データを解析する。例えば、解析部４５は、所定期間が経過する毎に、記憶領域４２に記憶された統計データをＲＡＭ３５の記憶領域４７に記憶する。この場合、統計データの収集時に、記憶領域４２に記憶された統計データは、クリア（消去）される。クリアは、解析部４５が実行しても良くＦＰＧＡ３７で実行されるようにしても良い。もっとも、所定期間より短いタイミングで、解析部４５が記憶領域４２に記憶済の統計データの一部を記憶領域４７に移動又はコピーし、解析を行うようにしても良い。例えば、単位時間が経過する毎に、単位時間分の統計データが記憶領域４７に移され、解析が行われるようにしても良い。統計データは、「パケットの受信状況を示す情報」の一例であ
る。
【００６２】
解析部４５の解析によって、所定期間におけるユーザ毎のネットワーク２（図１）の使用状況（ＮＥ３０におけるパケットの受信状況）を示すデータを得ることができる。図１１は、解析部４５の解析によって得られるネットワーク２の使用状況例を表すグラフである。但し、グラフは説明のために図示しており、解析部４５がグラフを作成することは必須ではない。
【００６３】
図１１のグラフは、所定期間が１日である場合のホスト３Ａ及びホスト３Ｂのネットワーク２の使用状況（ＮＥ１Ａにおけるパケットの受信状況）を一例として示す。グラフによれば、ホスト３Ａは、８：００〜１９：００の間に通信のためにネットワーク２を使用している。一方、ホスト３Ｂは、２１：００〜２４：００の間に通信のためにネットワーク２を使用している。
【００６４】
グラフより、例えば、ホスト３Ａ及びホスト３Ｂは、次の所定期間（翌日）も同様の時間帯にネットワーク２を使用してパケットを送信することが考えられる。パケットのトランスポート層プロトコルとして再送制御を行うプロトコルが使用されている場合には、ＦＤＢ２７に登録されたエントリはＡＣＫ（Acknowledge）パケットの転送（ＩＧ転送処理
）に使用される。再送制御を行うプロトコルには、例えば、Transmission Control Protocol（ＴＣＰ）やStream Control Transmission Protocol（ＳＣＴＰ）がある。
【００６５】
このため、使用時間帯では、エントリをエージング処理によって削除する必要性は未使用の時間帯に比べて低い。これに鑑み、使用時間帯ではエージング処理を停止して、エージングのためのＦＤＢ２７のアクセスによる負荷を低減することが好ましいと考えられる。一方、登録済のエントリに対するＭＡＣ学習処理のサーチ処理は、ＦＤＢ２７のエントリ中のヒット値を０にする（エージングによるエントリ削除を回避する）ために行われている。エージング処理の停止によってエントリが削除されないならば、登録済のエントリに関するサーチ処理は不要となる。サーチ処理が回避されることで、ＭＡＣ学習処理に係る負荷を低減することができる。
【００６６】
解析部４５は、統計データの解析によって、ネットワーク使用状況を示すデータとして、各ホスト３の使用時間帯を示すデータを得る。エージング部４６は、各ホスト３の使用時間帯にエージング処理を実施しないように、例えば、該当エントリのヒット値を設定範囲外の値(0xFF)に設定する。設定は、エージング部４６が定期的に実施しても良く、タイマの設定により自動的に使用時間帯は設定範囲外に設定されるようにしても良い。定期的に実施する場合の１周期の長さは適宜設定可能である。なお、ヒット値は、「エントリの更新されない時間の経過に伴い所定値になる値」の一例であり、設定対象外の値は、「特殊値」の一例である。
【００６７】
また、解析部４５は、間引きテーブル４３を生成又は更新する。間引きテーブル４３には、各ホスト３の使用時間帯、さらには、使用時間帯以外の時間帯を示す情報が記憶される。間引き部４４は、間引きテーブル４３を参照し、ＮＥ３０で受信されたＥＧ学習処理の対象のパケットが間引き対象であるか否かを判定する。間引き対象である場合には、ＭＡＣ学習部４０は、当該パケットをＥＧ学習処理の対象から除外する。これにより、当該パケットに対するＦＤＢ２７のサーチ処理がスキップ（回避）される。ＥＧ学習処理の対象か否かの判定は、パケットから得られるパケットの識別子（インデックス）と間引きテーブル４３とを用いて行われる。例えば、現在時刻がインデックスで特定されるパケットの使用時間帯に属する場合には、当該パケットは間引き対象と判定される。
【００６８】
なお、図１１は、ホスト３Ｂ及びホスト３ＣについてのＩＦカード３１ＡにおけるＥＧ
学習処理を対象として説明した。ホスト３ＡについてのＥＧ学習処理は、ＩＦカード３１Ｂにて行われる。この場合、ＩＦカード３１Ｂでは、上記した方法で、ホスト３Ａの使用時間帯を示すデータが統計データから生成される。そして、間引き部４４によって、ホスト３Ａの使用時間帯では、ホスト３Ａからのパケットに関するＭＡＣ学習処理及びエージング処理が回避される。また、ホスト３Ａの使用時間帯では、エージング部４６によるエントリ削除が回避される。
【００６９】
＜＜統計データの収集＞＞
次に、収集部４１によって収集される統計データの詳細に関して説明する。図１２は、統計データの記憶領域４２に記憶される統計テーブルのデータ構造の一例を示す図である。図１３は、インデックスの検索方法の例を示す。統計データの記憶領域４２は、一例として、図１２に示すような統計テーブル４２Ａを記憶している。統計データは、統計テーブル４２Ａに格納される。
【００７０】
統計テーブル４２Ａは、ホスト３（ユーザ）の識別子であるインデックスと、インデックスに対応する時間帯毎のカウンタ値（パケットの受信数）と閾値と含む複数のエントリ（レコード）を記憶する。統計テーブル４２Ａは、インデックスとして、インデックスの要素である“ＶＩＤ”,“ＩＦ番号”及び“ポート番号”の値（ビット値）を直列に並べ
たビット列の全パターンのエントリを予め記憶している。
【００７１】
インデックスの要素をなすデータ項目（パラメータ）は、適宜設定可能である。実施形態では、“ＩＦ番号”及び“ポート番号”がインデックスの要素に設定されている。例えば、“ＶＩＤ”を除外し、“ＩＦ番号”及び“ポート番号”をインデックスとしても良い。インデックスの要素は、１つのインデックスに含めるホスト３（ユーザ）の範囲に応じて適宜決定することができる。例えば、インデックスの要素を、複数のホスト３に共通なパラメータで定義し、複数のホスト３が１つのインデックスに集約されるようにしても良い。
【００７２】
時間帯毎のカウンタは、各時間帯において受信されたパケットの数（パケットの受信数）を計数する。図１２の例では、０：００〜２４：００が３０分（単位時間）毎に区切られ、３０分毎のパケット受信数が記憶される。閾値は、パケット受信数の閾値である。比較において、パケット数が閾値以上又は閾値を上回る時間帯は、パケットがＭＡＣ学習処理及びエージング処理の対象から除外される（間引かれる）時間帯として扱われる。パケット数が閾値未満又は以下である時間帯は、ＭＡＣ学習処理及びエージング処理を行う時間帯として扱われる。なお、単位時間の長さ、及び閾値は適宜設定可能である。
【００７３】
統計テーブル４２Ａを用いた統計データのカウント方法は、以下の通りである。インデックスを用いた統計テーブル４２Ａの検索は、収集部４１によって行われる。パケットが入力されると、収集部４１は、パケットから“ＶＩＤ”,“ＩＦ番号”及び“ポート番号
”を取り出し、これらの各値（ビット）を所定順に並べたビット列を得る。所定順は、統計テーブル４２Ａの“インデックス”における“ＶＩＤ”,“ＩＦ番号”及び“ポート番
号”の並びである。
【００７４】
統計テーブル４２Ａの“インデックス”には、所定順で“ＶＩＤ”,“ＩＦ番号”及び
“ポート番号”が並べられたときのビット列（インデックス）の全ビットパターンが予め登録されている。各パターンの位置（例えば、メモリ上のアドレス）は予め決まっている。ＦＰＧＡ３７は、パターンと位置との対応関係を示す情報（対応表）を予め記憶しており、パケットから得られたインデックスのビットパターンに対応する位置を、対応関係を示す情報から割り出す。
【００７５】
図１２及び図１３に示す例では、説明を簡単にするため、インデックスの各要素のビット数が実際よりも少ない例で記載する。一例として、“ＶＩＤ”が５ビットであり、ＩＦ番号が２ビットであり、ポート番号が２ビットであると仮定する。
【００７６】
図１３に示すパターン１は、ＶＩＤ＝“０００１”，ＩＦ番号＝“０１”，ポート番号“０１”である。この場合、統計テーブル４２Ａのインデックス“０００１０１０１”の位置（アドレス）にあるエントリがインデックスされる。パターン２は、ＶＩＤ＝“１１１１”，ＩＦ番号＝“１１”，ポート番号“１０”である。この場合、ビット列“１１１１１１１０”の位置（アドレス）にあるエントリがインデックスされる。
【００７７】
このように、統計テーブル４２Ａの検索では、先頭のエントリから順に、インデックスがテーブルに格納された値と合致するか否かの判定が行われない。従って、パケットに対応するエントリを短時間で統計テーブル４２Ａから検索することができる。
【００７８】
ＦＰＧＡ３７は、図示しない時計を有しており、収集部４１は、時計で計時される時刻に基づき、現在時刻が属する時間帯を特定する。収集部４１は、検索されたエントリ中の現在時刻が属する時間帯におけるカウント値をインクリメント（１加算）する。このようにして、パケットの受信数が、インデックス単位で、時間帯毎に集計される。
【００７９】
統計テーブル４２Ａにおける時間粒度（単位時間の長さ）及びパケット受信数と対比される閾値は変更可能である。時間粒度及び閾値は、例えば、ＮＥ３０のオペレータやユーザによって変更される。時間粒度及び閾値の変更の反映は、所定期間の経過毎に実行される。すなわち、所定期間が１日であれば、変更の反映は１日１回、記憶領域４２から記憶領域４７へ統計データが移され、記憶領域４２の統計データがクリアされるタイミングで実行される。
【００８０】
図１４は、統計テーブル４２Ａに係る時間粒度及び閾値の変更の説明図である。図１４の例では、時間粒度及び閾値の変更は、解析部４５によってなされる。但し、収集部４１によって時間粒度及び閾値が変更されるようにしても良い。解析部４５は、所定期間（例えば前日分）の統計データ（統計テーブル４２Ａの格納内容）を統計テーブル４２Ａから読み出し、ＲＡＭ３５の記憶領域４７に記憶する（図１４（１））。前日分の統計データにおける時間粒度は１時間であり、閾値は１００である（全エントリについて共通）。
【００８１】
このとき、解析部４５は、時間粒度及び閾値の少なくとも一方を変更する場合には、ＲＡＭ３５の所定領域に格納されている時間粒度及び閾値を読み出す（図１４（２））。続いて、解析部４５は、統計テーブル４２Ａの格納内容をクリアし（図１４（３））、時間粒度及び閾値を統計テーブル４２Ａに設定する（図１４（４））。このようにして、統計テーブル４２Ａの時間粒度及び閾値が変更される。図１４に示す例では、時間粒度が１時間から３０分に変更され、閾値が１００から２００へ変更されている。
【００８２】
＜＜解析部＞＞
解析部４５は、ＲＡＭ３５の記憶領域４７に記憶された統計データ（統計テーブル４２Ａの複製：「統計テーブル４７Ａ」と呼ぶ）の管理及び解析を行う。図１５及び図１６は、解析部４５の動作の説明図である。図１５は、解析部４５が前日の統計データを用いて当日用の間引きテーブル４３を作成する例を示す。図１６は、解析部４５が一週間分の統計データから先週の月曜日分の統計データを用いて今週の月曜日用の間引きテーブル４３を作成する例を示す。
【００８３】
図１５に示すように、解析部４５は、データ収集４５ａと、データ解析４５ｂとを行う。解析部４５は、データ収集４５ａによって、統計テーブル４２Ａから前日分の統計デー
タを収集し（図１５（１））、ＲＡＭ３５の記憶領域４７に統計データを展開する。これよって、統計テーブル４２Ａの複製である統計テーブル４７Ａが記憶領域４７に記憶される。但し、記憶領域４７には、統計テーブル４２Ａに格納されていた情報が記憶されれば良く、統計テーブル４２Ａの複製が記憶領域４７に必ずしも必須ではない。
【００８４】
次に、解析部４５は、データ解析４５ｂによって、統計テーブル４７Ａに格納された統計データを読み出して（図１５（３））、統計データを解析し、解析の結果を間引きテーブル４３へ展開（格納）する（図１５（４））。このようにして、当日分の間引きテーブル４３が作成される。
【００８５】
図１６に示すように、ＲＡＭ３５の記憶領域４７には、一週間（７日）分の統計テーブル４７Ａを記憶することができる。すなわち、記憶領域４７は、複数の所定期間に係る統計データを記憶することができる。解析部４５は、データ収集４５ａ及びデータ解析４５ｂによって、図１５に示した動作と同様の動作を行う（図１６（１）〜（４））。これによって、解析部４５は、先週の或る曜日（図１６では月曜日）の統計データの解析を通じて、今週の或る曜日についての間引きテーブル４３を作成することができる。
【００８６】
上述したように、解析部４５によれば、統計テーブル４２Ａから収集した統計データの複数世代管理、及び統計データを用いたデータ解析によって、任意の期間での間引きデータ（間引きテーブル）を作成することができる。図１５及び図１６を用いて、前日の統計データから間引きデータを作成するパターン（１）と、先週の統計データから間引きデータを作成するパターン（２）について説明した。さらに、例えば、一ヶ月分の統計データを記憶領域４７で保持し、曜日ごとに４週分の平均値又は累積値を算出し、各曜日の間引きデータを間引きテーブル４３へ設定することも可能である。
【００８７】
図１７は、解析部４５の処理を示すフローチャートである。図１７に示す処理は、所定期間に従って設定される周期タイマがタイムアウトすることによって開始される。図１７の０１の処理では、解析部４５は、統計テーブル４２Ａに格納された全データを取得する。  
【００８８】
次の０２の処理では、解析部４５は、ＲＡＭ３５上の統計テーブル４７Ａへ０１で取得したデータをリストアする。これによって、統計テーブル４２Ａの内容がＲＡＭ３５に統計テーブル４７Ａとして記憶された状態となる。
【００８９】
次の０３の処理では、解析部４５は、ＲＡＭ３５に記憶された１以上の統計テーブル４７Ａの解析によって間引きテーブル４３用のデータを生成する。０３では、解析部４５は、「何日分の統計データで解析を行うか」の設定（予め設定されている）に従って、間引きテーブルの作成方法を決定する。即ち、解析部４５は、間引きテーブル用のデータ（間引き用データ）生成に使用する統計テーブル４７Ａを特定する情報と、使用される統計テーブル４７Ａの数や組み合わせに応じた間引き用データの生成方法とを示す情報に基づいて解析を行う。例えば、前日の統計テーブル４７Ａを用いて当日の間引き用データを生成する場合には、前日の統計テーブル４７Ａの内容を間引き用データとして使用することができる。但し、間引き用データの時間粒度が統計テーブル４７Ａの時間粒度より大きい場合には、時間粒度に応じた受信数の再計算などが実行される。
【００９０】
次の０４の処理では、解析部４５は、０３の処理で生成した間引き用データ（解析結果のデータ）を間引きテーブル４３にリストアする。これによって、間引きテーブル４３が次の所定期間における間引きデータを保持した状態となる。
【００９１】
＜＜間引きテーブル＞＞
図１８は、間引きテーブル４３のデータ構造例を示す。上述したように、間引きテーブル４３に設定される間引きデータは、所定期間（例えば前日）の統計データを元に作成される。このため、間引きテーブル４３は、図１８に示すように、統計テーブル４２Ａと同じデータ構造を持つことができる。但し、データ構造が同じであることは必須要件ではない。
【００９２】
例えば、図１８に示す間引きテーブル４３の例では、時間帯毎のカウンタ値として、図１２に示した３０分毎でなく、１時間毎のパケット受信数が格納されている。このように、間引きテーブル４３の時間粒度は、統計テーブル４２Ａの時間粒度と一致していても一致していなくても良い。なお、間引きテーブル４３では、カウンタ値と閾値とを格納することに代えて、カウンタ値と閾値との比較結果を示す情報が格納されるようにしても良い。例えば、カウンタ値が閾値を超過する時間帯に、間引き対象を示すビット（例えば“１”）を示すビットが設定され、カウンタ値が閾値を超過しない時間帯に間引き対象外であることを示すビット（例えば“０”）が設定されるようにしても良い。この場合、間引き部４４でカウンタ値と閾値との比較処理が実行されず、ビットの値を以て間引き対象か否かが判定される。
【００９３】
間引き部４４は、パケットが入力されると、パケットから取得されるインデックスを用いてパケットに対応するエントリを検索する。間引きテーブル４３は、統計テーブル４２Ａと同様に、インデックスの全ビットパターンに対応するエントリを有する。このため、パケットから取得されたインデックスを元に、短時間でパケットに対応するエントリを検索することができる。
【００９４】
間引き部４４は、特定したエントリ中の現在の時間帯における間引きテーブル４３中のパケット数と閾値とを比較する。比較の結果、パケット数が閾値を超過する場合には、当該パケットをＭＡＣ学習の対象から除外し（間引き）、そうでない場合には、パケットをＭＡＣ学習の対象に含める。
【００９５】
図１８に示す例では、ＶＩＤ＝１００，ＩＦ番号＝１，ポート番号＝１のパケットのカウント値が、１０：００〜１０：５９では“５０”であり、１１：００〜１１：５９では“１００”であり、１２：００〜１２：５９では“５００”である。また、ＶＩＤ＝１００，ＩＦ番号＝１，ポート番号＝２のパケットのカウント値が、１０：００〜１０：５９では“５００”であり、１１：００〜１１：５９では“２００”であり、１２：００〜１２：５９では“０”である。残りの時間帯は、全て０であると仮定する。また、閾値として、全インデックスについて“１００”が設定され、判定は、閾値を超過するか否かによってなされる。
【００９６】
この場合、ＶＩＤ＝１００，ＩＦ番号＝１，ポート番号＝１のパケットは、１２：００：００〜１２：００：５９の時間帯にＭＡＣ学習及びエージング処理の対象から除外（間引き）され、残りの時間帯ではＭＡＣ学習及びエージング処理の対象となる。一方、ＶＩＤ＝１００，ＩＦ番号＝１，ポート番号＝２のパケットは、１０：００：００〜１１：５９：５９の時間帯にＭＡＣ学習の対象から除外（間引き）され、残りの時間帯ではＭＡＣ学習の対象となる。なお、閾値は、インデックス単位，ＶＩＤ単位，ＩＦ番号単位，ポート番号単位で設定可能である。或いは、閾値は、全エントリを対象として（一括で）設定することもできる。
【００９７】
＜＜間引き部＞＞
図１９は、間引き部４４の処理を模式的に説明する図である。図１９において、ＭＡＣ学習部４０は、キー（ＫＥＹ）及びインデックス（ＩＮＤＥＸ）の取得部４８と、間引き部４４と、サーチ部４９を含む。
【００９８】
取得部４８は、ＳＷカード１２からＩＦカード３１に転送されてきたパケットに含まれているキー及びインデックスを取得する。キーは、ＭＡＣアドレス（ＳＡ）及びＶＩＤである。インデックスは、ＶＩＤ，ＩＦ番号、及びポート番号である。
【００９９】
間引き部４４は、取得部４８で取得されたインデックスをもとに間引きテーブル４３を参照し、パケットが間引き対象か否かを判定する。上述したように、間引き部４４は、パケットのインデックスから対応する間引きテーブル４３中のエントリを検索する。間引き部４４は、検索されたエントリ中の現在時刻が属する時間帯のパケット受信数と閾値とを比較し、パケット受信数が閾値を超過するか否かを判定する。受信数が閾値を超過する場合には、パケットが間引き対象と判定され、そうでなければ、パケットが間引き対象でないと判定される。
【０１００】
判定の結果、パケットが間引き対象でなければ、サーチ部４９にて、キー（ＭＡＣアドレス及びＶＩＤ）に基づくサーチ処理が実行される。これに対し、判定の結果、パケットが間引き対象であれば、サーチ処理を行うことなくパケットが収集部４１へ転送される。このように、サーチ部４９のサーチ処理がスキップされるので、ＦＤＢ２７へのアクセスが発生しない。
【０１０１】
収集部４１は、パケットの統計データを記憶領域４２の統計テーブル４２Ａに記憶する。収集部４１の処理が終了すると、ＥＧ学習処理が終了し、パケットが宛先へ向けて転送される。
【０１０２】
図２０は、間引き部４４を含むＭＡＣ学習処理の一例を示すフローチャートである。図２０に示す処理は、ＩＦカード３１がＳＷカード１２からのパケットを受信することを契機に開始される。
【０１０３】
１１の処理では、取得部４８が受信されたパケットからキー及びインデックスを取得する。さらに、間引き部４４が、間引きテーブル４３から、インデックスに対応するエントリを検索する。
【０１０４】
次の１２の処理では、間引き部は、１１で特定したエントリ中の現在時刻が属する時間帯のカウンタ値（パケット受信数）が閾値を超過するか否かを判定する。このとき、カウンタ値が閾値を超過しない場合には（１２のＮｏ）、パケットが間引き対象外であると判定され（１３）、ＦＤＢ２７を用いたサーチ処理及びＭＡＣ学習処理が実行される（１４）。その後、パケットは、収集部４１に送信される（１５）。
【０１０５】
これに対し、カウンタ値が閾値を超過する場合には（１２のＹｅｓ）、パケットが間引き対象であると判定され（１６）、ＦＤＢ２７を用いたサーチ処理及びＭＡＣ学習処理がスキップされ、パケットは収集部４１へ送信される（１５）。なお、１３及び１６の処理における間引き対象か否かの判定（認識）は、実際に行うことを要しない。このため、１３及び１６の処理は省略可能である。
【０１０６】
図２１は、収集部４１の処理例を示すフローチャートである。図２１に示す処理は、間引き部４４からパケットが受信されることを契機に開始される。１８の処理では、収集部４１は、パケットから取得されたインデックスに対応する統計テーブル４２Ａ中のエントリを検索し、検索されたエントリ中の現在時刻に対応する（現在時刻が属する）時間帯のカウンタ値をインクリメントする。収集部４１は、パケットを宛先へ向けて送信する（１９）。１８の処理において、インデックスを用いてエントリが特定されることで、１８の処理を短時間で済ませることができ、１９の処理におけるパケット送信タイミングを関連
技術に比べて早めることができる。
【０１０７】
＜＜エージング部＞＞
図２２は、エージング部４６の動作例の説明図である。エージング部４６は、エージング対象外設定処理４６ａ（設定処理４６ａ）と、エージング処理４６ｂとを行う。設定処理４６ａでは、エージング部４６は、ＦＤＢ２７上の間引き対象のエントリをエージング処理の対象外に設定する。
【０１０８】
具体的には、設定処理４６ａにおいて、以下のような処理が行われる。設定処理４６ａは、例えば、統計テーブル４７Ａの時間粒度に従って開始される（図２２，１−１）。すなわち、時間粒度である３０分或いは１時間毎に開始される。エージング部４６は、ＲＡＭ３５の統計テーブル４７Ａから、現在時刻が属する時間帯のフィールドであって、且つパケット受信数（カウンタ値）が閾値を超過しているエントリを取得（抽出）する（図２２，１−２）。次に、エージング部４６は、抽出したエントリに対応するＦＤＢ２７上のエントリのヒット値を対象外の値“0xFF” に設定する（図２２，１−３）。
【０１０９】
また、エージング処理４６ｂでは、エージング部４６は、以下のような動作を行う。すなわち、所定の周期トリガ（エージングタイマの１／４の周期）にて、エージング処理４６ｂが開始される（図２２，２−１）。エージング部４６は、ＦＤＢ４６の各エントリに対し、昇順又は降順の一方でアクセスする。このとき、エントリ中のヒット値が“0xFF”
である場合には、エージング部４６は、当該エントリをスキップし、次のエントリにア
クセスする（図２２，２−２）。
【０１１０】
エントリ中のヒット値が“0xFF” 以外である場合には、エージング部４６は当該エン
トリのヒット値をインクリメント（１加算）する（図２２，２−３）。インクリメントによって、ヒット値が“４”に達した場合には、エージング部４６は、当該エントリを削除する（図２２，２−４）。全エントリについての処理が終了すると、エージング部４６は、ＲＡＭ３５に記憶されているエージングタイマ値を元に次回のエージング処理４６ｂの開始トリガとなるタイマを設定する（図２２，２−５）。なお、ＲＡＭ３５に記憶されるエージングタイマ値は、ＮＥ３０のオペレータ或いはユーザによって適宜設定される。すなわち、エージングタイマ値（周期トリガの間隔）は、適宜設定及び変更可能である。
【０１１１】
図２３は、エージング部４６のエージング対象外設定処理４６ａの処理例を示すフローチャートである。図２３に示す処理は、周期タイマのタイムアウトによって開始される。処理が開始されると、エージング部４６は、設定処理４６ａの対象の統計テーブル４７Ａの先頭のエントリから順に以下のループ処理を行う。
【０１１２】
２１の処理では、エージング部４６は、対象のエントリから現在時刻に対応するフィールドのカウンタ値と閾値とを取得する。２２の処理では、エージング部４６は、カウンタ値と閾値とを比較する。このとき、カウンタ値が閾値以上であれば、間引き対象であるので、処理が２３に進む。これに対し、カウンタ値が閾値未満であれば、間引き対象外であるので、次のエントリの処理に進む。２３の処理では、エージング部４６は、ＦＤＢ２７の対応するエントリのヒット値をエージング対象外の値“0xFF”に設定する。その後、次のエントリの処理に進む。
【０１１３】
統計テーブル４７Ａの全てのエントリに対する２１〜２３の処理が終了すると、処理が２４に進む。２４の処理では、エージング部４６は、ＲＡＭ３５のエージングタイマ値を参照し、次の設定処理４６ａの周期タイマを設定し、処理を終了する。
【０１１４】
図２４は、エージング部４６のエージング処理４６ｂの例を示すフローチャートである
。図２４の処理は、周期タイマの満了を契機として開始される。処理が開始されるとエージング部４６は、ＦＤＢ２７の先頭のエントリから順に以下のループ処理を行う。
【０１１５】
３１の処理では、エージング部４６は、対象のエントリからヒット値を取得する。次の３２の処理では、エージング部４６は、ヒット値と閾値（エージング満了値）とを比較する。ヒット値が閾値より小さい場合には（３２，＜）、エージング部４６は、ヒット値に１を加算し（３４）、次のエントリの処理に進む。ヒット値と閾値とが等しい場合には（３２，＝）、エージング部４６は、エントリをＦＤＢ２７から削除し（３３）、次のエントリの処理に進む。ヒット値が“0xFF”であれば（３２，＞）、当該エントリは、エージング処理の対象外であるので、当該エントリに対する処理は何ら行われず、次のエントリの処理に進む。
【０１１６】
全てのエントリに対するエージング処理が終了すると、エージング部４６は、ＲＡＭ３５のエージングタイマ値を参照し、次のエージング処理４６ｂのトリガ発生用の周期タイマをセットし、処理を終了する。
【０１１７】
なお、３２の処理に代えて、３２の処理の前にヒット値が“0xFF”か否かが判定され、そうであれば次のエントリの処理に進み（閾値判定がスキップ）、そうでなければ閾値判定がなされるようにしても良い。
【０１１８】
＜実施形態の効果＞
実施形態によれば、所定期間におけるパケットの受信状況を示す統計データ（統計テーブル４２Ａ）が生成され、統計データを元に間引きテーブル４３が生成される。そして、間引きテーブル４３を元に、或る識別情報（インデックス）を持つパケットの受信数が閾値を超過する時間帯では、当該パケットのサーチ処理及びＭＡＣ学習処理がスキップ（回避）される。これによって、ＭＡＣ学習処理の負荷を軽減することができる。これにより、ＭＡＣ学習処理の負荷がパケットの転送に影響を及ぼすことを抑えることができ、スループットの低下を抑えることができる。また、サーチ処理の負荷増大が回避されることによって、ＦＰＧＡ３７の消費電力の削減やＦＰＧＡ３７の発熱量の低減を図ることもできる。
【０１１９】
また、統計データを元に、エージング対象外設定処理４６ａが実行され、或る識別情報を持つパケットの受信数が閾値を超過する時間帯では、当該パケットに係るＦＤＢ２７のエージング処理が回避される。これによって、エージング処理の負荷が軽減される。
【０１２０】
＜変形例＞  
実施形態に係るＮＥ３０は、さらに、図２５に示す処理を実行するようにしても良い。図１２に示したように、統計テーブル４２Ａに格納された統計データにおいて、或るパケットの受信が観測されない時間帯が発生することがある。このような時間帯において、或るパケットに係るエントリがＦＤＢ２７に登録されていても無用である。このため、そのような時間帯では、対応するエントリを強制的に削除することによって、ＦＤＢ２７の記憶容量が有効に使用されるようにする。
【０１２１】
図２５は、ＦＤＢ２７のエントリ強制削除処理の例を示すフローチャートである。当該処理は、例えば、設定処理４６ａの開始トリガと同じタイミングで開始されることができる。処理が開始されると、エージング部４６は、統計テーブル４７Ａの先頭から順に、以下のループ処理を行う。４１の処理では、エージング部４６は、エントリから現在時刻が属する時間帯のカウンタ値と、削除閾値とを取得する。削除閾値は、強制的にエントリを削除するか否かの判定に用いられる閾値であり、エージング対象外に設定するか否かの判定用の閾値と異なる。削除閾値は、予め統計テーブル４２Ａに設定される。
【０１２２】
次の４２の処理では、エージング部４６は、カウンタ値と削除閾値とを比較する。このとき、カウンタ値が削除閾値以下であれば（４２，≦）、エージング部４６は、ＦＤＢ２７の対応するエントリ（同じインデックス値を含むエントリ）を強制的に削除し、次のエントリの処理へ進む。これに対し、カウンタ値が削除閾値を超過する場合には（４２，＞）、次のエントリの処理へ進む。このように、カウンタ値が削除閾値を超過するエントリは、ＦＤＢ２７から削除されない。
【０１２３】
全てのエントリに対する処理が終了すると、エージング部４６は、ＲＡＭ３５のエージングタイマ値を参照し、次の強制削除処理のトリガ発生用の周期タイマをセットし、処理を終了する。以上説明した実施形態の構成は適宜組み合わせることができる。
【符号の説明】
【０１２４】
３・・・ホスト
１２・・・ＳＷカード
２５・・・フレーム転送部
３０・・・パケット伝送装置
３１・・・インタフェースカード
３４・・・ＣＰＵ
３５・・・ＲＡＭ
３６・・・ＲＯＭ
３７・・・ＦＰＧＡ
３８・・・ＣＡＭ
４０・・・ＭＡＣ学習部
４１・・・統計情報収集部
４２Ａ，４７Ａ・・・統計テーブル
４３・・・間引きテーブル
４４・・・間引き部
４５・・・統計情報解析部
４６・・・エージング部
【図１】
2016197836.tif 000003
【図２】
2016197836.tif 000004
【図３】
2016197836.tif 000005
【図４】
2016197836.tif 000006
【図５】
2016197836.tif 000007
【図６】
2016197836.tif 000008
【図７】
2016197836.tif 000009
【図８】
2016197836.tif 000010
【図９】
2016197836.tif 000011
【図１０】
2016197836.tif 000012
【図１１】
2016197836.tif 000013
【図１２】
2016197836.tif 000014
【図１３】
2016197836.tif 000015
【図１４】
2016197836.tif 000016
【図１５】
2016197836.tif 000017
【図１６】
2016197836.tif 000018
【図１７】
2016197836.tif 000019
【図１８】
2016197836.tif 000020
【図１９】
2016197836.tif 000021
【図２０】
2016197836.tif 000022
【図２１】
2016197836.tif 000023
【図２２】
2016197836.tif 000024
【図２３】
2016197836.tif 000025
【図２４】
2016197836.tif 000026
【図２５】
2016197836.tif 000027