(57)【特許請求の範囲】
【請求項１】
パケットを中継するネットワーク中継装置であって、
パケット受信部と、
該パケット受信部で受信したパケットが格納される、一つ一つが独立で動作する複数のパケットバッファと、
該パケットバッファからパケットを読み出して送信するパケット送信部と、
一定時間でのパケットの転送量を計測するパケット監視部と、
該パケットの転送量に応じて前記パケットバッファを制御するパケットバッファ制御部と
を備え、
前記パケットバッファ制御部は、前記パケット監視部で計測されたパケットの転送量と予め定められた複数の閾値により、装置に必要な有効バッファ数を判定し、判定された有効バッファ数に従い前記パケットバッファの電源又はクロック供給のＯＮ及びＯＦＦを制御し、
前記パケットバッファ制御部は、有効バッファ数に対応して、該有効バッファ数を増加させる前記閾値のひとつである第１監視パケット数と、該有効バッファ数を減少させる前記閾値の他のひとつである第２監視パケット数とをそれぞれ保持しており、前記パケットの転送量が、現在の有効バッファ数に対応する第１監視パケット数を超えたとき、現在の有効バッファ数を増加させ、前記パケットの転送量が、現在の有効バッファ数対応する第２監視パケット数を下回ったとき、該有効バッファ数を減少させて前記有効バッファ数を判定し、
前記パケットバッファへの書き込み制御は、書き込み位置情報を示すライトポインタを前記パケットバッファ制御部で管理し、パケットが一つ届くたびに該ライトポインタの値を増加させ、該ライトポインタに従い前記パケットバッファにパケットを書き込み、
前記パケッバッファからの読み込み制御は、読み込み位置情報を示すリードポインタを前記パケットバッファ制御部で管理し、前記ライトポインタと前記リードポインタの値に１以上の差があるとき、前記パケットバッファのパケットを読み出し、パケットを読み出すごとに該リードポインタの値を増加させ
前記パケットバッファ制御部が、有効バッファ数を減らすと判定し、かつ、所定時間内に前記パケット受信部にパケットが届かなった場合、自ネットワーク中継装置内で廃棄される設定をされたダミーのパケットを前記パケット受信部に入力して装置に流させることで、休止予定のバッファ上のライトポインタとリードポインタを有効バッファ上に移動させる制御部
をさらに備える前記ネットワーク中継装置。
【請求項２】
前記パケット監視部は、
前記パケット受信部からパケットを受信した通知を受け、パケット数を計測するパケットカウンタと、
予め定められた時間をカウントするためのタイマと、
前記パケットカウンタのカウンタ値と、前記タイマのタイマ値とを用いて、前記パケットの転送量を計測するパケット数計測部と
を有する請求項１のネットワーク中継装置。
【請求項３】
前記ライトポインタ及び前記リードポインタは、設定される有効範囲内で循環して値が増加し、
前記パケットバッファ制御部は、該有効範囲の値が連続するように、電源をＯＦＦ又はクロック供給を停止する前記パケットバッファを特定する請求項１又は２に記載のネットワーク中継装置。
【請求項４】
前記パケットバッファの空いている領域を管理し、前記パケットバッファの空いている領域を選択してパケットを書き込み、書き込んだ領域の識別情報を前記パケット送信部に通知する書き込み処理部
をさらに備え、
前記パケット送信部は、該識別情報に従い前記パケットバッファから該当する情報を読み出して、出力回線へ転送し、
前記パケットバッファ制御部は、パケットの書き込みが少ない前記パケットバッファ又はパケットが書き込まれていない前記パケットバッファから、電源をＯＦＦ又はクロック供給を停止する前記パケットバッファを選択する請求項１又は２に記載のネットワーク中継装置。
【請求項５】
パケットを中継するネットワーク中継装置であって、
宛先テーブル、フィルタテーブル及び優先制御テーブルの少なくともいずれかのテーブルが記憶され、一つ一つが独立で動作する複数のテーブルメモリと、
テーブルに格納すべきエントリ数に応じて前記テーブルメモリを制御するテーブルメモリ制御部と、
前記テーブルへのエントリの登録又は削除を指示する制御部と、
パケット受信部と、
該パケット受信部で受信したパケットが格納される、一つ一つが独立で動作する複数のパケットバッファと、
該パケットバッファからパケットを読み出して送信するパケット送信部と、
一定時間でのパケットの転送量を計測するパケット監視部と、
該パケットの転送量に応じて前記パケットバッファを制御するパケットバッファ制御部と
を備え、
前記テーブルメモリ制御部は、現在のテーブルの使用エントリ数を記憶しており、前記制御部から登録エントリ数を含むエントリ登録の指示又は削除エントリ数を含むエントリ削除の指示が通知されると、前記現在のテーブルの使用エントリ数と登録エントリ数又は削除エントリ数と予め定められた複数の閾値とから、必要な有効テーブルメモリ数を判定し、判定された有効テーブルメモリ数に従い前記テーブルメモリの一部の電源又はクロック供給のＯＮ及びＯＦＦを制御し、
前記テーブルメモリ制御部は、有効テーブルメモリ数に対応して、該有効テーブルメモリ数を増加させる前記閾値のひとつである使用エントリ数上限値と、該有効テーブルメモリ数を減少させる前記閾値の他のひとつである使用エントリ数下限値とをそれぞれ保持しており、前記現在の使用エントリ数と前記登録エントリ数又は削除エントリ数との合計が、前記使用エントリ数上限値を超えたとき、現在の有効テーブルメモリ数を増加させ、前記現在の使用エントリ数と前記登録エントリ数又は削除エントリ数との合計が、前記使用エントリ数下限値を下回ったとき、現在の有効バッファ数を減少させて前記有効テーブルメモリ数を判定し、
前記パケットバッファ制御部は、前記パケット監視部で計測されたパケットの転送量と予め定められた複数の閾値により、装置に必要な有効バッファ数を判定し、判定された有効バッファ数に従い前記パケットバッファの電源又はクロック供給のＯＮ及びＯＦＦを制御し、
前記パケットバッファ制御部は、有効バッファ数に対応して、該有効バッファ数を増加させる前記閾値のひとつである第１監視パケット数と、該有効バッファ数を減少させる前記閾値の他のひとつである第２監視パケット数とをそれぞれ保持しており、前記パケットの転送量が、現在の有効バッファ数に対応する第１監視パケット数を超えたとき、現在の有効バッファ数を増加させ、前記パケットの転送量が、現在の有効バッファ数対応する第２監視パケット数を下回ったとき、該有効バッファ数を減少させて前記有効バッファ数を判定する前記ネットワーク中継装置。
【請求項６】
前記テーブルメモリ制御部が、有効テーブルメモリ数を減らすと判定し、かつ、無効にする予定の前記テーブルメモリに既にテーブルエントリが格納されている場合、前記テーブルメモリ制御部は該テーブルエントリを、有効な前記テーブルメモリにコピーし、コピーした後に、前記無効にする予定のテーブルメモリの電源をＯＦＦ又はクロック供給を停止する請求項５に記載のネットワーク中継装置。
【請求項７】
前記テーブルメモリは、
複数のグループに分類された検索キー情報が、グループ順に記憶されるＣＡＭと、
複数のグループに分類された、検索キーに対応する宛先情報、フィルタ情報及び優先制御情報の少なくともいずれかがグループ順に記憶されるＲＡＭと
を有し、
第一に、無効にする予定の前記テーブルメモリのＲＡＭに記憶された情報を、グループ順を変えずに、有効な前記テーブルメモリのＲＡＭに移動し、
第二に、無効にする予定の前記テーブルメモリのＣＡＭに記憶された情報を、グループ順を変えずに、有効な前記テーブルメモリのＣＡＭに移動し、
有効な前記テーブルメモリのＣＡＭ及びＲＡＭ記憶された情報をグループ順を変えずに移動する請求項６に記載のネットワーク中継装置。
【請求項８】
前記テーブルメモリは、二分木で構成され、
該テーブルメモリは、宛先情報を格納する宛先情報フィールドと、左右２つの子ノードの格納位置を示すポインタを設定する２つのポインタフィールドとを有し、
第一に、無効にする予定の前記テーブルメモリのポインタフィールドに記憶された情報を、有効な前記テーブルメモリのポインタフィールドに移動し、
第二に、無効にする予定の前記テーブルメモリの宛先情報フィールドに記憶された情報を、有効な前記テーブルメモリの宛先情報フィールドに移動する請求項６に記載のネットワーク中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク中継装置及びメモリ制御方法に係り、特に、ネットワーク中継装置の消費電力を低減する省電力ネットワーク中継装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
スイッチや、ルータ等のネットワーク中継装置は、ネットワークの構築において、重要となっている。近年、ネットワークの大規模化およびネットワークを介して伝送されるデータ量の増加に伴い、ネットワーク中継装置の高性能化、大容量化が著しい。一方で、高性能化、大容量化に伴って、ネットワーク中継装置の消費電力は、上昇する傾向にあり、システム維持コストや、環境保護の観点から、ネットワーク中継装置の消費電力の抑制が課題となっている。
ここで、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）交換機において、効率の良いセル転送を行うバッファ管理方式についての技術が開示されている（例えば、特許文献１参照）。この特許文献１は共通バッファを用いてセル転送を行う際、そのセルについて１あるいはそれ以上のサービス・クラスごとに設けられたキューの蓄積セル数を判定する。そして、蓄積セル数とキューに対してあらかじめ設定した閾値とを比較し、その結果に応じて閾値を動的に変更し、変更後の閾値に基づいて、共通バッファへのセルの蓄積を行い、効率の良いセル転送を行うバッファ管理方法である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２４７０８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１のバッファ管理方法によっては、装置の消費電力を抑えることは不可能である。本発明は、スイッチやルータを始めとするネットワーク中継装置の消費電力を抑えるためにあり、トラフィック量に応じて、バッファを動的に活性化／非活性化状態にきりかえ、消費電力を制御する技術を提供することを第一の目的とする。より具体的には、本発明は、装置内パケットバッファの一部の電源の給電を停止し、あるいはクロックの供給を停止するなどの手段で、メモリを活性化／非活性化することで、トラフィック量に応じて最低限必要なバッファのみを活性化し、消費電力を削減することを目的のひとつとする。
また、特許文献１では、スイッチやルータがパケットの宛先等を決定するために所持するテーブルを記憶させるテーブルメモリの消費電力を抑えることに関しては記載がない。本発明は、スイッチやルータなどのネットワーク中継装置の消費電力を抑えるためにあり、テーブルに登録すべきエントリ数に応じて、テーブルメモリを動的に活性化／非活性化状態にきりかえ、消費電力を制御する技術を提供することを第二の目的とする。より具体的には、本発明は、必要なテーブルのエントリ数に応じて、装置内のテーブルメモリの一部の電源、あるいはクロックの供給を停止することにより、最低限必要なテーブルメモリのみを活性化し、消費電力を削減することを目的のひとつとする。
【課題を解決するための手段】
【０００５】
本発明の一実施例では、受信したパケットを一時的に蓄積するパケットバッファ５００と、受信したパケット量に応じて、有効バッファ数を変更するパケットバッファ制御部３００とをネットワーク中継装置１０が備える。トラフィック量が少ないときは、バッファ数が少なくなっても性能に影響しないので、前記パケットバッファ制御部３００が、一部のパケットバッファの電源の給電を停止し、あるいはクロックの供給を停止するなどの手段で、消費電力を削減する。
本発明の別の実施例では、電源あるいは動作クロックの供給の有無を個別に制御可能な複数のテーブルメモリ６１０−１〜６１０−Ｋから構成される検索テーブル６１０と、必要なテーブルのエントリ数に応じて、有効テーブルメモリ数を変更するテーブルメモリ制御部６４０とをネットワーク中継装置１０が備える。テーブルのエントリ数が少ないときは、前記テーブルメモリ制御部６４０が、一部のテーブルメモリの電源あるいはクロックの供給を停止することで、消費電力を削減する。
なお本発明は、様々な形態で実現することが可能である。
【０００６】
本発明の第１の解決手段によると、
パケットを中継するネットワーク中継装置であって、
パケット受信部と、
該パケット受信部で受信したパケットが格納される、一つ一つが独立で動作する複数のパケットバッファと、
該パケットバッファからパケットを読み出して送信するパケット送信部と、
一定時間でのパケットの転送量を計測するパケット監視部と、
該パケットの転送量に応じて前記パケットバッファを制御するパケットバッファ制御部と
を備え、
前記パケットバッファ制御部は、前記パケット監視部で計測されたパケットの転送量と予め定められた閾値により、装置に必要な有効バッファ数を判定し、判定された有効バッファ数に従い前記パケットバッファの電源又はクロック供給のＯＮ及びＯＦＦを制御する前記ネットワーク中継装置が提供される。
【０００７】
本発明の第２の解決手段によると、
パケットを中継するネットワーク中継装置であって、
宛先テーブル、フィルタテーブル及び優先制御テーブルの少なくともいずれかのテーブルが記憶され、一つ一つが独立で動作する複数のテーブルメモリと、
テーブルに格納すべきエントリ数に応じて前記テーブルメモリを制御するテーブルメモリ制御部と、
前記テーブルへのエントリの登録又は削除を指示する制御部と、
を備え、
前記テーブルメモリ制御部は、現在のテーブルの使用エントリ数を記憶しており、前記制御部から登録エントリ数を含むエントリ登録の指示又は削除エントリ数を含むエントリ削除の指示が通知されると、前記現在のテーブルの使用エントリ数と登録エントリ数又は削除エントリ数と予め定められた閾値とから、必要な有効テーブルメモリ数を判定し、判定された有効テーブルメモリ数に従い前記テーブルメモリの一部の電源又はクロック供給のＯＮ及びＯＦＦを制御する前記ネットワーク中継装置が提供される。
【０００８】
本発明の第３の解決手段によると、
受信したパケットが格納される、一つ一つが独立で動作する複数のパケットバッファを備えパケットを中継するネットワーク中継装置におけるメモリ制御方法であって、
一定時間でのパケットの転送量を計測し、
計測されたパケットの転送量と予め定められた閾値により、装置に必要な有効バッファ数を判定し、
判定された有効バッファ数に従いパケットバッファの電源又はクロック供給のＯＮ及びＯＦＦを制御する前記メモリ制御方法が提供される。
【０００９】
本発明の第４の解決手段によると、
宛先テーブル、フィルタテーブル及び優先制御テーブルの少なくともいずれかのテーブルが記憶され、一つ一つが独立で動作する複数のテーブルメモリを備え、パケットを中継するネットワーク中継装置におけるメモリ制御方法であって、
現在のテーブルの使用エントリ数を予め記憶し、
登録エントリ数を含むエントリ登録の指示又は削除エントリ数を含むエントリ削除の指示が通知されると、前記現在のテーブルの使用エントリ数と登録エントリ数又は削除エントリ数と予め定められた閾値とから、必要な有効テーブルメモリ数を判定し、
判定された有効テーブルメモリ数に従いテーブルメモリの一部の電源又はクロック供給のＯＮ及びＯＦＦを制御する前記メモリ制御方法が提供される。
【発明の効果】
【００１０】
本発明によると、装置内パケットバッファの一部の電源の給電を停止し、あるいはクロックの供給を停止するなどの手段で、メモリを活性化／非活性化することで、トラフィック量に応じて最低限必要なバッファのみを活性化し、消費電力を削減するができる。
また、本発明によると、必要なテーブルのエントリ数に応じて、装置内のテーブルメモリの一部の電源、あるいはクロックの供給を停止することにより、最低限必要なテーブルメモリのみを活性化し、消費電力を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態のスイッチ装置の構成を示す説明図である。
【図２】実施の形態におけるパケット監視部の構成を示す説明図である。
【図３】実施の形態におけるパケットバッファ制御部の構成を示す説明図である。
【図４】有効バッファ数管理テーブルの一例を示す説明図である。
【図５】有効バッファ数と監視パケット数の関係を示す説明図である。
【図６】実施の形態におけるパケットバッファの構成を示す説明図である。
【図７】パケットを受信したとき装置の処理を示すフローチャートである。
【図８】パケット監視部の処理を示すフローチャートである。
【図９】パケットバッファ制御部の処理を示すフローチャートである。
【図１０】パケットバッファの構成の一例を示す説明図である。
【図１１】図１０のライトポインタが非活性化予定のバッファ上にあるときの例を示す説明図である。
【図１２】図１０のリードポインタが非活性化予定のバッファ上にあるときの例を示す説明図である。
【図１３】図１０のライトポインタとリードポインタが非活性化予定のバッファ上にないときの例を示す説明図である。
【図１４】第２の実施の形態のスイッチ装置１の構成を示す説明図である。
【図１５】パケットを受信したとき装置の検索処理を示すフローチャートである。
【図１６】図１５の検索処理の続きを示すフローチャートである。
【図１７】エントリ数管理テーブル６６０の一実施の形態を示す説明図である。
【図１８】有効テーブルメモリ数判定テーブル６７０の一例を示す説明図である。
【図１９】有効テーブルメモリ数と使用エントリ数の関係を示す説明図である。
【図２０】テーブル制御部の処理を示すフローチャートである。
【図２１】テーブル制御部のテーブルメモリ数増加処理を示すフローチャートである。
【図２２】テーブル制御部のテーブルメモリ数減少処理を示すフローチャートである。
【図２３】図２２のテーブル制御部のテーブルメモリ数減少処理の続きの処理を示すフローチャートである。
【図２４】テーブルメモリ数減少処理時に行うエントリ移動処理を示すフローチャートである。
【図２５】検索テーブル６１０がＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される場合のエントリ移動処理前の状態の一例を示す説明図である。
【図２６】検索テーブル６１０がＣＡＭ及びＲＡＭで構成される場合のエントリ移動処理で、ＲＡＭ内のエントリがコピーされた状態の一例を示す説明図である。
【図２７】検索テーブル６１０がＣＡＭ及びＲＡＭで構成される場合のエントリ移動処理で、ＣＡＭ内のエントリがコピーされた状態の一例を示す説明図である。
【図２８】検索テーブル６１０がＣＡＭ及びＲＡＭで構成される場合のエントリ移動処理で、ＣＡＭ内及びＲＡＭ内のコピー元のエントリが削除された状態の一例を示す説明図である。
【図２９】検索テーブル６１０がＲＡＭで構成され、さらにテーブルが二分木で構成される場合のエントリ移動処理前の状態の一例を示す説明図である。
【図３０】検索テーブル６１０がＲＡＭで構成され、さらにテーブルが二分木で構成される場合のエントリ移動処理で、二分木の子ノードのエントリがコピーされた状態の一例を示す説明図である。
【図３１】検索テーブル６１０がＲＡＭで構成され、さらにテーブルが二分木で構成される場合のエントリ移動処理で、二分木の親ノード内に設定される子ノードの格納位置を示すポインタの内容が変更された状態の一例を示す説明図である。
【図３２】検索テーブル６１０がＲＡＭで構成され、さらにテーブルが二分木で構成される場合のエントリ移動処理で、コピー元の二分木の子ノードが削除された状態の一例を示す説明図である。
【図３３】パケットバッファ５００の別の制御方法の一例を説明した図である
【図３４】検索テーブル６１０がＣＡＭ及びＲＡＭで構成される場合のエントリ移動処理前の状態の別の一例を示す説明図である。
【図３５】検索テーブル６１０がＣＡＭ及びＲＡＭで構成される場合のエントリ移動処理で、ＲＡＭ内のグループ２のエントリが移動された状態の一例を示す説明図である。
【図３６】検索テーブル６１０がＣＡＭ及びＲＡＭで構成される場合のエントリ移動処理で、ＲＡＭ内のグループ３のエントリが移動された状態の一例を示す説明図である。
【発明を実施するための形態】
【００１２】
本発明の構成及び作用を明らかにするために、以下本発明を適用したルータ・スイッチについて実施の形態を説明する。
【００１３】
１．第１の実施の形態
図１は、本実施の形態のスイッチの構成実施の形態を示す説明図である。
このスイッチ１は、パケット処理部１０と、検索テーブル６１０と、スイッチ１の各種動作を制御する制御部８００とを備える。パケット処理部１０は、パケット受信部１００と、パケット監視部２００と、パケットバッファ制御部３００と、有効バッファ数管理テーブル３１０と、書き込み処理部４００と、それぞれ独立して動作している複数のパケットバッファ５００と、検索処理部６００と、パケット送信部７００とを有する。制御部８００は、図示しないパスによってパケット監視部２００と、パケットバッファ制御部３００と、検索テーブル６１０と、パケット受信部１００等に接続されている。
パケット受信部１００は、入力されたパケットを受信して、パケットの受信通知をパケット監視部２００に送信し、パケットデータを書き込み処理部３００に送信し、ヘッダデータを検索処理部６００に送信する。この例では、１つのパケットデータとバッファの書き込み領域は１：１の関係だが、１つのパケットデータが大きい場合、パケットデータを複数の書き込み領域に書き込む１：ｎ（ｎは２以上の自然数）の関係であっても良い。
パケット監視部２００は、入力されたパケットの数をカウントする機能を有しており、決められた時間内に装置に転送された監視パケット数（パケットの転送量）Ｐを測定して、前記監視パケット数Ｐをパケットバッファ制御部３００に伝達する。
【００１４】
パケットバッファ制御部３００は、パケット監視部１００が計測した前記監視パケット数Ｐに応じて、パケットバッファ５００の電源やクロックを制御し、個別に動作しているバッファの内、最低限必要なバッファのみ活性化させる機能と、パケットバッファ５００の書き込み位置情報（以後、ライトポインタとする）と読み込み位置情報（以後、リードポインタとする）を制御する機能と、を有する。
書き込み処理部４００は、例えばライトポインタに従い、パケットデータをパケットバッファ５００に書き込む処理を行う。
パケットバッファ５００は、検索処理部６００が検索処理を終えるまで、パケットデータを一時的に格納する。また前記パケットバッファ５００は一つ一つが独立に動作するバッファで構成されており、それぞれ独立に電源やクロックを活性化／非活性化することが可能である。
検索処理部６００は、前記パケット受信部１００からパケットのヘッダ情報を受け取り、前記ヘッダ情報を検索キーに検索テーブル６１０を検索し、宛先などの検索情報をパケット送信部７００へ転送する。
検索テーブル６１０は、ヘッダ情報と宛先情報等の対応データ等が格納されている。
パケット送信部７００は、前記検索処理部６００からの検索情報を受け取り、前記検索処理部６００から受け取ったパケットに該当するパケット情報を、例えばリードポインタに従いパケットバッファ５００から読み出し、対応した回線にパケットを送信する。
制御部８００は、図２で示すパケット数計測部２３０の監視時間間隔Ｔを設定する機能と、有効バッファ数管理テーブル３１０の値を設定する機能と、検索テーブル６１０の値を設定する機能と、を有している。
【００１５】
図２は、パケット監視部２００の詳細な構成を示す説明図である。
パケット監視部２００は、パケットカウンタ２１０と、フリーランタイマ２２０と、パケット数計測部２３０とを有する。パケットカウンタ２１０は、パケット受信部１００からパケットの受信通知を受け取り、一つ受信する度に、一つカウンタを上昇させる。フリーランタイマ２２０はパケットの受信とは無関係に独立して動作しており、一定の時間ごとに、フリーランタイマ２２０が一つ上昇する。パケット数計測部２３０は、パケットカウンタ２１０と、フリーランタイマ２２０と、のカウント値を常に受け取っている。設定されたフリーランタイマ２２０のカウンタ間隔Ｔで、現在のパケットカウンタ値（Ａ１とする）から、前回計測時のパケットカウンタ値（Ａ０とする）を減算し、監視時間Ｔで除算した監視パケット数Ｐ＝［（Ａ１−Ａ０）／Ｔ］を判定する。前記パケット監視部２００は、前記監視パケット数Ｐを、パケットバッファ制御部３００に転送する。
【００１６】
図３は、パケットバッファ制御部３００の詳細な構成を示す説明図である。
パケットバッファ制御部３００は、有効バッファ数制御部３２０と、パケットバッファ電源管理部３３０とを有する。有効バッファ数制御部３２０は、パケット監視部２００と、有効バッファ数管理テーブル３１０と、書き込み処理部４００と、パケット送信部７００と、制御部８００とに接続されている。ライトポインタは、どこまでパケットのデータをバッファに書き込んだかを示すポインタで、リードポインタは、書き込まれたデータをどこまで読み出したかを示すポインタである。パケットバッファ電源管理部３３０は、パケットバッファ５００と接続されており、パケットバッファ５００−１〜５００−Ｎ（Ｎは２以上の整数）の、電源やクロックをそれぞれ活性化／非活性化する機能を有する。
有効バッファ数制御部３２０は、パケット監視部２００から、監視パケット数Ｐを受け取り、有効バッファ数管理テーブル３１０から、その時点での有効バッファ数に対応する監視パケット数の上限と下限を受け取る。有効バッファ数制御部３２０は、前記監視パケット数Ｐが前記有効バッファ数に対応する監視パケット数の下限と上限の間にあるとき（監視パケット数下限＜Ｐ＜監視パケット数上限）、有効バッファ数を変更しない。前記監視パケット数Ｐが、前記監視パケット数上限（第１監視パケット数）を超える場合、有効バッファ数制御部３２０は、有効バッファ数管理テーブル３１０の値に対応するように有効バッファ数を増加させる。前記監視パケット数Ｐが、前記監視パケット数下限（第２監視パケット数）を下回る場合、有効バッファ数制御部３２０は、有効バッファ数管理テーブル３１０に対応するように有効バッファ数を減少させる。動作の詳細は図９の説明の際に説明する。
【００１７】
図４は、有効バッファ数管理テーブル３１０の一例を示す図である。
監視パケット数下限は、有効バッファ数を減らす基準になる前記監視パケット数Ｐの値で、監視パケット数上限は、有効バッファ数を増やす基準になる前記監視パケット数Ｐの値である。有効バッファ数制御部３２０は、現在の有効バッファ数を記憶していて、有効バッファ数に対応する前記監視パケット数下限と、前記監視パケット数上限と、を比較する。
図５は、有効バッファ数が増加する場合と減少する場合の、有効バッファ数と監視パケット数の関係を示した図である。
監視パケット数の基準Ａ〜Ｆと、有効バッファ数は、図４の監視パケット数下限と、監視パケット数上限と、有効バッファ数、と、にそれぞれ対応している。実線が、有効バッファ数が増加するときの監視パケット数と有効バッファ数の関係を示したもので、点線が、有効バッファ数が減少するときの監視パケット数と有効バッファ数の関係を示したものである。有効バッファ数が増加する場合と、減少する場合と、で異なる基準を設けないと、頻繁に有効バッファ数切り替え基準の近辺に、前記監視パケット数Ｐが、装置１に到着すると、前記有効バッファ数制御部３２０が、有効バッファ数の増減を繰り返し、逆に消費電力が増加してしまう場合がある。そのため、有効バッファを変動させる閾値を、それぞれ有効バッファ数が増加する場合と減少する場合で、余裕を持たせることで前記消費電力が増加しないようにすることができる。
【００１８】
図６は、パケットバッファ５００の詳細な構成を示す説明図である。パケットバッファは複数のメモリ等から構成されていて（パケットバッファ５００−１〜Ｎ）、それぞれ独立しており、個別に電源やクロックを活性化／非活性化させることが可能となっている。電源やクロックの制御は、パケットバッファ電源管理部３３０からの信号によって制御される。また、一つのパケットバッファには、Ｍ個分（Ｍは１以上の整数）のパケットデータを格納することができる。
図７は、パケットを受信した際の、装置の動作を示すフローチャートである。
最初のステップＳ７００では、パケット受信部１００が、パケットデータを、検索処理部６００と、パケット監視部２００と、書き込み処理部４００と、送信する。なお、パケットデータ全体を送らずに、パケットヘッダ、パケット受信通知などを適宜送信してもよい。これ以降は、検索処理ステップ（Ｓ７１０）と、パケット計測ステップ（Ｓ７２０）と、書き込み処理ステップ（Ｓ７３０）との３つのフローが、例えば並行で動作する。
検索処理ステップ（Ｓ７１０）では、検索処理部６００がパケットヘッダを検索するキーワードにして、検索テーブル６１０を検索し、宛先等を決定する。
パケット計測ステップ（Ｓ７２０）では、パケット監視部２００が、パケットカウンタ２１０を１つ増加させ、処理を終える。
書き込み制御ステップ（Ｓ７３０）では、パケット受信部１００からパケットデータを受け取った書き込み処理部４００は、パケットバッファ５００にデータを書き込む。パケット送信部７００が、ライトポインタとリードポインタに差を検出し、また検索処理部６００が、処理を終了したことをパケット送信部７００に通知し、パケット送信部７００はパケットバッファのパケットデータを読み出し、該当する回線にパケットを送信する処理を行う（Ｓ７４０）。
【００１９】
図８は、パケット監視フローを示すフローチャートである。
パケット監視フローは、図７のパケット受信フローとは別に、独立して動作する。パケット数計測部２３０は、前回パケットカウンタ２１０を計測したときよりもフリーランタイマ２２０がＴ増加しているかを判定し（ステップＳ８００）、フリーランタイマ２２０が、Ｔ増加していない場合（Ｓ８００のＮＯ）、パケット数計測部２３０は、再びフリーランタイマ２２０がＴ増加しているかの判定を繰り返す（Ｓ８００）。フリーランタイマ２２０が、Ｔ増加した場合（ステップＳ８００のＹＥＳ）、パケット数計測部２３０が、現在のパケットカウンタ値（Ａ１）から、前回計測時のパケットカウンタ値（Ａ０）を減算し、監視時間Ｔで除算した監視パケット数Ｐ＝［（Ａ１−Ａ０）／Ｔ］を求め（ステップＳ８１０）、パケット数計測部２３０が、求められた監視パケット数Ｐをパケットバッファ制御部３００へ通知する（ステップＳ８２０）。また、現在のパケットカウンタの値（Ａ１）を、前回計測時のパケットカウンタ値（Ａ０）として記憶する。パケット監視フロー（ステップＳ８２０）を終えると、次は図９のパケットバッファ制御フロー（ステップＳ９００）を実行する。
【００２０】
図９は、パケットバッファ制御フローのフローチャートの説明図である。
パケット監視部２００からの監視パケット数Ｐの通知を受けて、パケットバッファ制御部３００は、現在の有効バッファ数をキーにして、有効バッファ数管理テーブル３１０を検索する（ステップＳ９００）。なお、現在の有効バッファ数は予め記憶されている。パケットバッファ制御部３００が、有効バッファ数管理テーブル３１０から、その時の有効バッファ数に対応する監視パケット数の上限（１）と、下限（１）を取得する（ステップＳ９１０）。有効バッファ数制御部３２０が、パケット監視部２００から通知された監視パケット数Ｐの値と、有効バッファ数管理３１０テーブルの監視パケット数の上限（１）及び下限（１）とから有効バッファ数を判定する（ステップＳ９２０）。例えば、監視パケット数上限（１）＜監視パケット数Ｐのとき、有効バッファ数制御部３２０が、変更後の有効バッファ数を有効バッファ数管理テーブル３１０から判定し、活性化予定のバッファを特定する（Ｓ９３０）。一方、監視パケット数下限（１）≦監視パケット数Ｐ≦監視パケット数上限（１）のとき、パケットバッファ制御フローの処理を終える。また、監視パケット数Ｐ＜監視パケット数下限（１）のとき、有効バッファ数制御部３２０が、変更後の有効バッファ数を有効バッファ数管理テーブル３１０から判定し、非活性化予定のバッファを特定する（Ｓ９４０）。
【００２１】
例えば、監視パケット数が取得された監視パケット数の上限（１）（例えばＦ）を超えた場合、図４の有効バッファ数管理テーブルにおける１つ下のエントリの有効バッファ数（例えばＮ）を取得する。また、監視パケット数が取得された監視パケット数の下限（１）（例えばＣ）を下回った場合、図４の有効バッファ数管理テーブルにおける１つ上のエントリの有効バッファ数（例えばＮ×２／４）を取得する。
休止予定のバッファは、例えば休止する順位を予め定めておき、例えば、図１１の下側のバッファから休止するようにしてもよい。また、ライトポインタとリードポインタの位置に応じて、図１１の上側のバッファを休止するようにしてもよいし、両側を休止するようにしてもよい。ライトポインタとリードポインタの有効範囲が連続する値になるようにすれば、管理しやすい。休止予定のバッファは、これに限らず適宜の手法で選択することができる。活性化予定のバッファは、休止するバッファを特定する手法の逆の順位で特定すればよく、休止するバッファを特定する手法に応じて適宜選択することができる。
ステップＳ９３１では、前記有効バッファ数制御部３２０が、現在の有効バッファ数の情報を保持していて、有効バッファ数管理テーブル３１０から、現在の有効バッファ数よりも一段階多い有効バッファ数に対応する監視パケット数上限（２）を確認する（Ｓ９３１）。「監視パケット数Ｐ＞一段階多い有効バッファ数の監視パケット数上限（２）」の場合（Ｓ９３１のＰ＞上限（２））、有効バッファ数制御部３２０が、有効バッファ数を、有効バッファ数管理テーブル３１０を参照して、さらに一段階多い有効バッファ数に変更し、活性化予定のバッファを特定する（Ｓ９３０）。
Ｓ９３１において、「前記監視パケット数Ｐ＜一段階多い有効バッファ数の監視パケット数上限（２）」か、「一段階多い有効バッファ数が、有効バッファ数管理テーブル３１０の最大」であった場合（Ｓ９３１のＰ＜上限（２）又は有効バッファ数最大）、前記パケットバッファ電源管理部３３０が、前記有効バッファ数管理テーブル３１０の有効バッファ数と同一になるように、特定されたバッファの電源やクロックを制御（例えば、電源をＯＮ、クロックを供給するなど）して、バッファを活性化させる（Ｓ９３２）。そしてライトポインタとリードポインタの有効範囲を適切なものに変更し（Ｓ９３３）、パケットバッファ制御フローを終える。
【００２２】
ステップＳ９４１では、前記有効バッファ数制御部３２０が、現在の有効バッファ数の情報を保持していて、有効バッファ数管理テーブル３１０から、現在の有効バッファ数よりも一段階少ない有効バッファ数に対応する監視パケット数下限（２）を確認する（Ｓ９４１）。「監視パケット数Ｐ＜一段階少ない有効バッファ数の監視パケット数下限（２）」の場合（Ｓ９４１のＰ＜下限（２））、有効バッファ数制御部３２０が、有効バッファ数を、有効バッファ数管理テーブル３１０を参照して、さらに一段階少ない有効バッファ数に変更し、活性化予定のバッファを特定する（Ｓ９４０）。
Ｓ９４１において、「前記監視パケット数Ｐ＜一段階少ない有効バッファ数の監視パケット数下限（２）」か、「一段階少ない有効バッファ数が、有効バッファ数管理テーブル３１０の最小」であった場合（Ｓ９４１のＰ＞下限（２）又は有効バッファ数最小）、前記有効バッファ数制御部３２０が、休止予定のバッファにデータが書き込まれているかを判定する（Ｓ９４２）。書き込まれている場合、休止予定のバッファを再び監視し（Ｓ９４２のＹＥＳ）、休止予定のバッファにデータが書き込まれていない場合（Ｓ９４２のＮＯ）、有効バッファ数制御部３２０が、ライトポインタとリードポインタの有効範囲を、休止予定のバッファに対応する値に変更する（Ｓ９４３）。また、前記パケットバッファ電源管理部３３０が、前記有効バッファ数管理テーブル３１０の有効バッファ数と同一になるように、特定されたバッファの電源やクロックを制御（例えば、電源をＯＦＦ、クロック供給を停止）して、バッファを休止させ（Ｓ９４４）、パケットバッファ制御フローを終える。
有効バッファ数制御部３２０が、休止予定のバッファにデータが書き込まれているかを判定する方法は、図１０、１１、１２、１３で後述する。
【００２３】
図１０は、ステップＳ９５１での、休止予定のバッファにデータが書き込まれているかを判別する方法を説明するための図である。
この例では、パケットバッファ５００は、それぞれ独立で動作する４つのメモリ等から構成されている。一つのパケットバッファには、３２個分のパケット情報を書き込みすることができるので、この場合、合計１２８個のパケット情報を格納することができる。ライトポインタは、装置が起動したときは”０”の値をとり、書き込み処理部４００が、パケットを書き込みするたびに“１、２、３、・・・・”とインクリメントされていく。リードポインタも同様に、装置起動時は“０”の値となっている。パケット送信部７００は、ライトポインタと、リードポインタの値の差分が１以上の場合、パケットバッファ５００にパケットデータが書き込まれていると判断し、検索処理部６００の検索結果がパケット送信部７００に通知されたら、パケット送信部７００はパケットバッファ５００からデータを読み出し、パケットを回線へ送信し、リードポインタを“１”インクリメントする。有効範囲が０〜１２７に設定されている場合、パケットが装置に１２８個届くと、ライトポインタ及びリードポインタは“０”に戻り、再び“１、２、３、・・・・”とインクリメントされていく。
【００２４】
図１１〜図１３は、有効バッファ数を減らす際の、ライトポインタとリードポインタの動きを示す説明図で、時系列的な順で説明している。
図１１は、ライトポインタとリードポインタの組み合わせの例を説明した図である。パケットバッファ３、４が休止予定のパケットバッファである。ライトポインタ“８０”で、休止予定のパケットバッファ３にあり、リードポインタは“６１”となっている。このように、ライトポインタが休止予定のバッファにあり、リードポインタがライトポインタ以下の場合、有効バッファ数制御部３２０はライトポインタとリードポインタを変更せずに現状のまま、バッファのデータを監視する（ステップＳ９５１のＹＥＳ）。
ライトポインタと、リードポインタが同じになり、またライトポインタと、リードポインタがこの休止予定のパケットバッファ上にある場合、有効バッファ数制御部３２０がパケットバッファの一部を休止させようとするが、パケットが装置に到着しないと、ライトポインタとリードポインタが動かずに、いつまでもパケットバッファを休止できなくなる可能性がある。
そこで、パケット送信部７００が、複数のダミーのパケットを流し、ライトポインタとリードポインタを休止予定のバッファから移動させ、ライトポイントが休止予定バッファからそうでないバッファへ移動させることで、パケットバッファ電源管理部３３０がバッファをＯＦＦに制御することできる。
【００２５】
より具体的に説明すると、パケットカウンタ２１０が一定時刻変動しなかった場合、パケットが一定時刻装置に到達していないことを、パケット数計測部２３０が、制御部８００へ通知する。通知を受け取った前記制御部８００は、パケット受信部１００にダミーのパケットを流す。前記パケット受信部１００は、登録されているパケットデータを書き込み処理部４００と、検索処理部６００と、に転送する。前記検索処理部６００は、ダミーのパケットを廃棄させることを、パケット送信部７００に通知し、通知を受けた前記パケット送信部７００はダミーパケットを廃棄する。なお、ダミーのパケットについては、パケット監視部２００で監視パケット数として計数しないようにしてもよい。こうして、ダミーパケットを装置外に転送させずに、ライトポインタとリードポインタを変動させることで、ライトポインタとリードポインタを休止予定のバッファから移動させ、例えばライトポインタとリードポインタが有効バッファ上に移動したときに（例えば０になったときに）、パケットバッファ電源管理部３３０がバッファをＯＦＦに制御することができる。
図１２は、ライトポインタとリードポインタの組み合わせの例を説明した図である。ライトポインタは“２”で、リードポインタは“１０３”である。ライトポインタは有効バッファ数を変更した後も使用するバッファ上にあるので、パケットバッファ制御部３２０がライトポインタの範囲を“０〜６３”に変更する。リードポインタは、休止予定のパケットバッファ４上にあるので、パケットバッファ電源管理部３３０は、パケットバッファ３、４を休止状態にしない。また、有効バッファ数制御部３２０も、リードポインタの範囲を変更しない。リードポインタに従いパケットが順次読みだされ、リードポインタが有効バッファ上に移動したとき、リードポインタの有効範囲を０〜６３に変更する。
【００２６】
図１３は、ライトポインタとリードポインタの組み合わせの例を説明した図である。ライトポインタは“４１”で、リードポインタは“３０”である。ライトポインタと、リードポインタは、有効バッファ数切り替え後も使用するパケットバッファ上にあるので、有効バッファ数制御部３２０がライトポインタと、リードポインタの範囲を“０〜６３”に変更する。そして休止予定のパケットバッファ３、４のパケットデータはすべて読み出された後なので、バッファメモリ電源管理部３３０は、パケットバッファ３、４を休止状態にさせる。
図３３は、パケットバッファ５００の別の制御方法を説明した図である。
パケットバッファ５００は、書き込み処理部４００が、書き込まれているパケットバッファ５００の情報を保持していて、前記書き込み処理部４００にパケットデータが転送されると、空いている領域を選択し書き込み、書き込んだ領域を、前記書き込み処理部４００が、パケットバッファ制御部３００を介して、パケット送信部７００に通知し、前記パケット送信部７００は、パケットバッファ５００から該当する情報を読み出し、出力回線へ転送する。
この制御方式の場合、パケットバッファ制御部３００が、休止するバッファを、書き込みが少ないバッファ（パケットバッファ５００−３）、もしくは書き込まれていないバッファ（パケットバッファ５００−２）、から選択することできる。休止予定のパケットバッファにデータが書き込まれていない場合は、パケットバッファ制御部３００がすぐにパケットバッファ５００を休止状態にすることができる。休止予定のパケットバッファにデータが書き込まれている場合でも、図１０−１３の制御方式よりも、短時間でパケットバッファ５００を休止状態にすることができ、また、図１１で説明したダミーのパケットを流す必要が無い。
本実施の形態によると、受信パケット量に応じて、パケットバッファを構成する複数のパケットバッファの電源、あるいはクロックの供給を制御することで消費電力を削減できる実施の形態。
【００２７】
２．第２の実施の形態
次に、検索テーブルを構成する複数のテーブルメモリの電源あるいはクロックの供給を、使用するエントリ数に応じて制御することで消費電力を削減する別の実施の形態について説明する。
図１４は、本実施の形態のスイッチの構成を示す説明図である。図１で説明した構成に対して、検索処理部６００、検索テーブル６１０の内部の構成を詳細に示している。また、パケット送信部７００と制御部８００の接続関係と、制御部８００と検索処理部６００との接続関係を明示的に示している。それ以外は、図１と同一の構成である。
検索処理部６００は、検索キー生成部６２０と、テーブルアクセス部６３０と、テーブルメモリ制御部６４０と、検索結果生成部６５０と、エントリ数管理テーブル６６０と、有効テーブルメモリ数判定テーブル６７０と、を有している。各部の動作は、後に、図１５から図２４を用いて説明する。
パケット送信部７００は、出力回線１〜出力回線Ｎと、制御部８００とに接続されている。パケット送信部７００は、検索処理部６００内の検索結果生成部６５０が生成する宛先に従い、前記出力回線１〜出力回線Ｎあるいは制御部８００に対してパケットデータを送信する。
制御部８００は、検索処理部６００内のテーブルメモリ制御部６４０に接続されている。制御部８００は、ネットワーク階層のうちのレイヤ３で動作するルーティングプロトコル用パケットをパケット送信部７００から受信し、前記パケット内のネットワーク経路情報を基にしてネットワーク構成を再計算し、検索テーブル６１０内に格納されているＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ４（ＩＰｖ４）や、ＩＰ  Ｖｅｒｓｉｏｎ６（ＩＰｖ６）などの宛先テーブルの宛先エントリの追加・削除の有無を判定する。追加・削除が必要と判断した場合、制御部８００は、検索処理部６００内のテーブルメモリ制御部６４０に対して、宛先エントリ追加・削除要求と、追加あるいは削除するエントリの内容を送信する。また、フィルタテーブルや優先制御テーブルの場合は、装置の制御端末経由で、装置管理者からの入力に従いフィルタテーブルや優先制御テーブルの構成を変更する。制御部８００は、前記テーブル構成の変更をエントリ追加・削除要求に変換し、検索処理部６００内のテーブルメモリ制御部６４０に対して、フィルタテーブルあるいは優先制御テーブルのエントリ追加・削除要求と、追加あるいは削除するエントリの内容を送信する。
検索テーブル６１０は、複数のテーブルメモリ６１０−１〜６１０−Ｋを有する。各テーブルメモリ６１０−ｊ（ｊは１からＫまでの自然数）は、テーブルメモリ制御部６４０により、個別に電源あるいはクロックの供給の有無を制御する。また、検索テーブル６１０の一部がＣＡＭで構成されている場合は、前記の電源、クロックの供給の有無の制御以外の制御方法として、検索時の対象に含めるか含めないかを制御してもよい。一つのテーブルメモリ６１０−ｊには、複数のテーブルエントリを格納することができる。
【００２８】
図１５は、パケットを受信した際の、本実施の形態での検索処理動作を示すフローチャートである。
パケット受信部１００からパケットのヘッダ情報及び装置内情報を受信した検索処理部６００内の検索キー生成部６２０は、受信した情報から予め定められた検索に必要な検索キーを生成し、テーブルアクセス部６３０に送信する（ステップＳ１５００）。
次に、検索キーを受信したテーブルアクセス部６３０は、検索テーブル６１０を構成するＫ個のテーブルメモリ（６１０−ｊ）のうち、テーブルメモリ制御部６４０の制御により有効化されているテーブルメモリを検索範囲として、検索キーを用いて検索する（ステップＳ１５１０）。ここで、テーブルメモリが有効化されている状態とは、例えば、テーブルメモリ６１０−ｊに電源が供給されている、あるいは、テーブルメモリ６１０−ｊにクロックが供給されている、あるいは、検索テーブルの一部がＣＡＭで構成されている場合は、テーブルメモリ６１０−ｊが検索対象に指定されている、という状態を指す。
テーブルアクセス部６３０は、検索範囲である複数のテーブルメモリ６１０から、検索キーに対応するパケットの宛先情報、フィルタ判定、優先度情報などの検索結果を受信し、予め決められた判定基準を基にして最終的な検索結果を決定し、検索結果生成部６５０へ送信する（ステップＳ１５２０）。ここで、予め決められた判定基準とは、テーブルアクセス部６３０が複数のテーブルメモリに検索要求を個別に送信し、それぞれのテーブルメモリからの検索結果を受信するという構成をとる場合、前記複数の検索結果のうち、どれを最終的な検索結果と判定するかの基準である。前記判定基準の例としては、テーブルメモリに番号をつけ、若い番号の検索結果を最終的な検索結果とする、という基準が挙げられる。
検索結果生成部６５０は、受信した検索結果を、必要があれば検索処理部６００が受信した装置内情報とともに、パケット送信部７００に送信する（ステップＳ１５３０）。
【００２９】
図１６は、本実施の形態での検索処理動作の図１５の続きを示すフローチャートである。
パケット送信部７００は、受信した検索結果を判定する（ステップＳ１５４０）。まず、検索結果が廃棄指示か否かを判定する（ステップＳ１５５０）。検索結果が廃棄指示の場合（ステップＳ１５５０のＹＥＳ）、パケット送信部７００は、検索結果に対応するパケットデータをパケットバッファ５００から読み出し、パケットデータをどこへも送信せず廃棄する（ステップＳ１５６０）。検索結果が廃棄指示でない場合（ステップＳ１５５０のＮＯ）、検索結果が制御部８００宛か否かを判定する（ステップＳ１５７０）。検索結果が制御部８００宛でない場合（ステップＳ１５７０のＮＯ）、パケット送信部７００は、検索結果に対応するパケットデータをパケットバッファ５００から読み出し、検索結果で指示される出力回線から出力する（ステップＳ１５８０）。一方、検索結果が制御部８００宛の場合（ステップＳ１５７０のＹＥＳ）、パケット送信部７００は、検索結果に対応するパケットデータをパケットバッファ５００から読み出し、制御部８００へ送信する（ステップＳ１５９０）。
【００３０】
図１７は、エントリ数管理テーブル６６０の一例を示す図である。
エントリ数管理テーブル６６０は、装置内に格納するテーブル種別毎のエントリを有する。図１７では、一例として、ＩＰｖ４ユニキャストテーブル用エントリと、ＩＰｖ４マルチキャストテーブル用エントリと、ＩＰｖ６ユニキャストテーブル用エントリと、ＩＰｖ６マルチキャストテーブル用エントリと、ネットワーク階層のレイヤ２でパケット転送に用いられるＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ（ＭＡＣ）アドレステーブル用エントリと、フィルタテーブル用エントリと、が設定されている状態を示している。
エントリ数管理テーブル６６０の１エントリは、装置が所持する複数の異なるテーブルの種別を示すテーブル種別を設定するテーブル種別フィールドと、あるテーブル種別に割り当てられているテーブルメモリ番号を設定する割当テーブルメモリフィールドと、テーブル種別毎の現在使用しているエントリ数を設定する使用エントリ数フィールドと、テーブル種別毎の有効なテーブルメモリ数を設定する有効テーブルメモリ数フィールドと、を含む。
図１７では、一例として、ＩＰｖ４ユニキャストテーブルに、テーブルメモリ６１０−１から６１０−Ｋまでの全テーブルメモリが割り当てられ、現在の使用エントリ数がｅ＿ｃであり、有効テーブルメモリ数がｍ＿ａｃである場合の設定例を示している。この場合、エントリ数管理テーブル６６０のＩＰｖ４ユニキャストテーブル用エントリの割当テーブルメモリには“６１０−１〜６１０−Ｋ”と設定され、使用エントリ数フィールドには“ｅ＿ｃ”が設定され、有効テーブルメモリ数フィールドには“ｍ＿ａｃ”が設定される。それ以外のテーブル用エントリに関しては、割当テーブルメモリフィールドは全て”未割当”が設定され、使用エントリ数フィールドには“０”が設定され、有効テーブルメモリ数には“０”が設定される。
エントリ数管理テーブル６６０の設定処理に関しては、図２０、図２１、図２２、図２３を用いて後述する。
【００３１】
図１８は、有効テーブルメモリ数判定テーブル６７０の一例を示す図である。
有効テーブルメモリ数判定テーブル６７０は、複数のエントリを有する。前記エントリは、エントリを識別するエントリ番号を設定するエントリ番号フィールドと、使用エントリ数の下限を設定する使用エントリ数下限フィールドと、使用エントリ数の上限を設定する使用エントリ数上限フィールドと、有効テーブルメモリ数を設定する有効テーブルメモリ数フィールドとを含む。使用エントリ数下限は、有効テーブルメモリ数を減らす基準になる値であり、使用エントリ数上限は、有効テーブルメモリ数を増やす基準になる値である。有効テーブルメモリ数は、現在の使用エントリ数が、前記使用エントリ数下限と前記使用エントリ数上限の間にある場合の有効にすべきテーブルメモリ数である。
特に図示していないが、有効テーブルメモリ数判定テーブルは、装置が所持する複数の異なるテーブル毎に所持する。
図１９は、図１８で示した有効テーブルメモリ数判定テーブル６７０の一設定例に従い、有効テーブルメモリ数が増加する場合と減少する場合の、有効テーブルメモリ数と使用エントリ数の関係を示した図である。実線が、有効テーブルメモリ数が増加するときの使用エントリ数と有効テーブルメモリ数の関係を示している。また、点線が、有効テーブルメモリ数が減少するときの使用エントリ数と有効テーブルメモリ数の関係を示している。有効テーブルメモリ数が増加する場合と、減少する場合と、で異なる使用エントリ数上限及び使用エントリ数下限を設定している理由は、以下に述べるとおりである。使用エントリ数上限と使用エントリ数下限を同一の値に設定する場合、前記設定値近辺で使用エントリ数が頻繁に増減すると、前記テーブルメモリ制御部６４０が、有効テーブルメモリ数を増減させるため、消費電力が増加してしまう可能性がある。有効テーブルメモリを変更する条件である使用エントリ数上限と使用エントリ数下限を、有効テーブルメモリ数が増加する場合と減少する場合で異なる値を設定することで、前記の有効テーブルメモリ数の頻繁な増減を避けることができる。
【００３２】
図２０は、テーブルメモリ制御フローのフローチャートの説明図である。
制御部８００は、テーブルメモリ制御部６４０へ、エントリ追加・削除要求、及び、対象テーブル識別子（テーブル種別）、追加・削除エントリ数ｅ＿ｍを送信する（ステップＳ２００１）。なお、ｅ＿ｍの値は、追加ならプラス、削除ならマイナスとすることができる。テーブルメモリ制御部６４０は、受信した対象テーブル識別子をキーにしてエントリ数管理テーブル６６０を検索し、登録・削除対象テーブルの現在の使用エントリ数ｅ＿ｃ、現在の有効テーブルメモリ数ｍ＿ａｃを取得する（ステップＳ２００２）。次に、テーブルメモリ制御部６４０は、現在の有効テーブルメモリ数ｍ＿ａｃを検索キーにして有効テーブルメモリ数判定テーブル６７０を検索し、該当するエントリの有効テーブルメモリ数判定テーブル６７０のエントリ番号ｔｎ及び使用エントリ数下限と上限を取得する（ステップＳ２００３）。後述する図２１及び図２２の上限及び下限と区別するため、図２０では、前記下限と上限を、それぞれ下限（１）、上限（１）と表記する（図中は丸数字で記載）。
次に、エントリ数管理テーブル６７０は、現在の使用エントリ数ｅ＿ｃと、追加・削除エントリ数ｅ＿ｍとの和（ｅ＿ｃ＋ｅ＿ｍ）と、使用エントリ数下限（１）及び上限（１）とを比較する（ステップＳ２００４）。（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数上限（１）より大きい場合（ステップＳ２００４の”上限（１）＜（ｅ＿ｃ＋ｅ＿ｍ）”）、テーブルメモリ増加制御フローを開始する。テーブルメモリ増加制御フローの説明は、図２１で後述する。
テーブルメモリ増加制御フローが終了した後、テーブルメモリ制御部６４０は、エントリ追加・削除指示をテーブルアクセス部６３０へ通知する（ステップＳ２００５）。テーブルアクセス部６３０は、エントリ追加・削除指示に従い、検索テーブル６１０に対してエントリ追加・削除を実施する（ステップＳ２００６）。次に、テーブルメモリ制御部６４０は、エントリ数管理テーブル６６０の当該テーブル種別の使用エントリ数を、（ｅ＿ｃ＋ｅ＿ｍ）に更新して（ステップＳ２００７）、テーブルメモリ制御フローを終了する。
ステップＳ２００４で、（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数下限（１）以上、かつ、使用エントリ数上限（１）以下の場合（ステップＳ２００４の”下限（１）≦（ｅ＿ｃ＋ｅ＿ｍ）≦上限（１）”）、前記ステップＳ２００５、Ｓ２００６、Ｓ２００７の処理を実施して、テーブルメモリ制御フローを終了する。
ステップＳ２００４で、（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数下限（１）より小さい場合（ステップＳ２００４の”（ｅ＿ｃ＋ｅ＿ｍ）＜下限（１）”）、テーブルメモリ減少制御フローを実行する。テーブルメモリ減少制御フローの説明は、図２２で後述する。
【００３３】
図２１は、テーブルメモリ増加制御フローのフローチャートの説明図である。
テーブルメモリ制御部６４０は、有効テーブルメモリ数判定テーブル６７０のエントリ番号ｔｎに１加算する（ステップＳ２１００）。次に、テーブルメモリ制御部６４０は、ｔｎを検索キーにして有効テーブルメモリ数判定テーブル６７０のエントリ番号を検索し、有効テーブルメモリ数判定テーブル６７０の、対応する使用エントリ数下限と上限を取得する（ステップＳ２１０１）。前記図２０の上限及び下限と区別するため、図２１では、前記下限と上限を、それぞれ下限（２）、上限（２）と表記する。
次に、テーブルメモリ制御部６４０は（ｅ＿ｃ＋ｅ＿ｍ）と使用エントリ数下限（２）及び上限（２）と比較する（ステップＳ２１０２）。（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数上限（２）より大きい場合（ステップＳ２１０２の“上限（２）＜（ｅ＿ｃ＋ｅ＿ｍ）”）、ステップＳ２１００に戻る。（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数下限（２）以上、かつ、使用エントリ数上限（２）以下の場合（ステップＳ２１０２の“下限（２）≦（ｅ＿ｃ＋ｅ＿ｍ）≦上限（２）”）、テーブルメモリ制御部６４０は、ｔｎを検索キーにして有効テーブルメモリ数判定テーブル６７０を検索し、有効テーブルメモリ数ｍ＿ａｎを取得する（ステップＳ２１０３）。
次に、テーブルメモリ制御部６４０は、現在の有効テーブルメモリ数ｍ＿ａｃとｍ＿ａｎの差分（ｍ＿ａｎ−ｍ＿ａｃ）だけ、無効になっているテーブルメモリ６００−ｊ＿ｉａの電源あるいはクロックを供給する（ステップＳ２１０４）。次に、テーブルメモリ制御部６４０は、エントリ数管理テーブル６６０の当該テーブル種別の有効テーブルメモリ数を、ｍ＿ａｎに更新する（ステップＳ２１０５）。次に、テーブルメモリ制御部６４０は、有効化した当該テーブル種別のテーブルメモリ番号をテーブルアクセス部６３０に送信する（ステップＳ２１０６）。テーブルアクセス部６３０は、受信した有効化されたテーブルメモリ番号を、当該テーブル種別の検索範囲に追加し（ステップＳ２１０７）、テーブルメモリ増加制御フローを終了し、図２０のステップＳ２００５へ戻る。
【００３４】
図２２は、テーブルメモリ減少制御フローのフローチャートの説明図である。
テーブルメモリ制御部６４０は、エントリ削除指示をテーブルアクセス部６３０へ通知する（ステップＳ２２０１）。テーブルアクセス部６３０は、エントリ削除指示に従い、検索テーブル６１０に対してエントリ削除を実施する（ステップＳ２２０２）。テーブルメモリ制御部６４０は、エントリ数管理テーブル６６０の当該テーブル種別の使用エントリ数を、（ｅ＿ｃ＋ｅ＿ｍ）に更新する（ステップＳ２２０３）。次に、テーブルメモリ制御部６４０は、有効テーブルメモリ数判定テーブル６７０のエントリ番号ｔｎから１減算する（ステップＳ２２０４）。次に、テーブルメモリ制御部６４０は、ｔｎを検索キーにして有効テーブルメモリ数判定テーブル６７０のエントリ番号を検索し、有効テーブルメモリ数判定テーブル６７０の、対応する使用エントリ数下限と上限を取得する（ステップＳ２２０５）。前記図２０の上限及び下限と区別するため、図２２では、前記下限と上限を、それぞれ下限（２）、上限（２）と表記する。
次に、テーブルメモリ制御部６４０は（ｅ＿ｃ＋ｅ＿ｍ）と使用エントリ数下限（２）及び上限（２）と比較する（ステップＳ２２０６）。（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数下限（２）より小さい場合（ステップＳ２２０６の“下限（２）＞（ｅ＿ｃ＋ｅ＿ｍ）”）、ステップＳ２２０４に戻る。（ｅ＿ｃ＋ｅ＿ｍ）が使用エントリ数下限（２）以上、かつ、使用エントリ数上限（２）以下の場合（ステップＳ２２０６の“下限（２）≦（ｅ＿ｃ＋ｅ＿ｍ）≦上限（２）”）、テーブルメモリ制御部６４０は、ｔｎを検索キーにして有効テーブルメモリ数判定テーブル６７０を検索し、対応する有効テーブルメモリ数ｍ＿ａｎを取得する（ステップＳ２２０７）。次に、エントリ移動処理フローを開始する。エントリ移動処理フローの説明は、図２４で後述する。エントリ移動処理フロー終了後、テーブルメモリ減少制御フロー２を開始する。
【００３５】
図２３は、図２２で説明したテーブルメモリ減少制御フローの続きのフローチャートの説明図である。
テーブルメモリ制御部６４０は、エントリ数管理テーブル６６０の当該テーブル種別の有効テーブルメモリ数を、ｍ＿ａｎに更新する（ステップＳ２２０８）。次に、テーブルメモリ制御部６４０は、エントリ移動処理により無効化した当該テーブル種別のテーブルメモリ番号をテーブルアクセス部６３０に送信する（ステップＳ２２０９）。テーブルアクセス部６３０は、受信した無効化されたテーブルメモリ番号を、当該テーブル種別の検索範囲から削除する（ステップＳ２２１０）。テーブルメモリ制御部６４０は、現在の有効テーブルメモリ数ｍ＿ａｃとｍ＿ａｎの差分（ｍ＿ａｃ−ｍ＿ａｎ）だけ、有効になっているテーブルメモリ６００−ｊ＿ａの電源あるいはクロックの供給を停止し（ステップＳ２２１１）、テーブルメモリ制御フロー及びテーブルメモリ減少制御フローを終了する。
図２４は、エントリ移動処理フローのフローチャートの説明図である。
テーブルメモリ制御部６４０は、無効化する予定の当該テーブル種別のテーブルメモリ番号をテーブルアクセス部６３０に送信する（ステップＳ２４０１）。なお、無効化するテーブルをどう選ぶかは、予め定められたルールに従うことができる。テーブルアクセス部６３０は、無効化する予定の当該テーブル種別のテーブルメモリに格納されているエントリの内容を読み出し、無効化する予定でないテーブルメモリに書き込む。検索方式上必要があれば、無効化する予定のテーブルメモリ内のエントリの内容は削除する（ステップＳ２４０２）。次に、テーブルアクセス部６３０は、テーブルメモリ制御部６４０に、エントリ移動処理が終了したことを通知し（ステップＳ２４０３）、エントリ移動処理フローを終了する。
以上、使用するエントリ数に応じて、検索テーブルを構成する複数のテーブルメモリの電源、あるいはクロックの供給を制御することで消費電力を削減する実施の形態について示した。
【００３６】
次に、テーブルメモリの構成方法の一実施例と、その場合のエントリ移動処理の一実施例について説明する。
図２５は、検索テーブル６１０がＣＡＭとＲＡＭの組み合わせで構成される場合のエントリ移動処理前の状態の一例を示す説明図である。ＣＡＭには検索キー情報が設定され、ＲＡＭには、検索キーに対応する宛先情報などが設定される。また、検索キーが複数のエントリにヒットする場合は、エントリ位置の若い方の結果が有効になる。
図２５の例では、ＣＡＭは２つのテーブルメモリ６１０−１−１と６１０−２−１から構成される。各テーブルメモリ内には、例えばエントリが４個登録される。テーブルメモリ６１０−１−１内の４個のエントリ位置は、それぞれａｄｒ１１〜ａｄｒ１４で表される。同様に、テーブルメモリ６１０−２−１内の４個のエントリ位置は、それぞれａｄｒ２１〜ａｄｒ２４で表される。テーブルメモリ６１０−１−１内に３個のエントリ（エントリｃ１、エントリｃ２、エントリｃ３）が登録されている。また、テーブルメモリ６１０−２−１内に１個のエントリ（エントリｃ４）が登録されている。
また、図２５の例では、ＲＡＭは２つのテーブルメモリエントリ６１０−１−２と６１０−２−２から構成されている。各テーブルメモリ内には、例えばエントリが４個登録される。ＲＡＭのエントリは、ＣＡＭのエントリと一対一に対応している。テーブルメモリ６１０−１−２内には、エントリｃ１、エントリｃ２、エントリｃ３に対応して、それぞれ、エントリｒ１、エントリｒ２、エントリｒ３が登録されている。また、テーブルメモリ６１０−２−２内には、エントリｃ４に対応して、エントリｒ４が登録されている。
さらに、テーブルメモリ６１０−１−１内のエントリ位置ａｄｒ１４と、対応するテーブルメモリ６１０−１−２内のエントリ位置は、エントリが未登録の状態である。また、テーブルメモリ６１０−２−１内のエントリ位置ａｄｒ２２、ａｄｒ２３、ａｄｒ２４と、対応するテーブルメモリ６１０−２−２内のエントリ位置は、エントリが未登録の状態である。
【００３７】
以下では、エントリ移動処理の一例として、テーブルメモリ６１０−２−１及びテーブルメモリ６１０−２−２を非活性化させるため、テーブルメモリ６１０−２−１及びテーブルメモリ６１０−２−２内に登録されているエントリｃ４及びエントリｒ４を、それぞれテーブルメモリ６１０−１−１及びテーブルメモリ６１０−１−２の未登録状態のエントリ位置に移動する場合の処理を説明する。本例では、移動処理は、図２６、図２７、図２８の順で実行される。
図２６は、エントリ移動処理で、ＲＡＭ内のエントリがコピーされた状態の一例を示す説明図である。装置がパケットを受信する際に実行する検索テーブルの検索処理の停止時間を最小限にするために、エントリ移動処理の第一の処理では、まず、ＲＡＭ内のエントリであるエントリｒ４の内容を、テーブルメモリ６１０−２−２から、テーブルメモリ６１０−１−２の未登録エントリ位置にコピーする。この時点では、パケット受信時の検索処理でエントリｃ４に一致するパケットヘッダ情報が検索キーとして投入された場合、テーブルメモリ６１０−２−１内のエントリ位置ａｄｒ２１のエントリにヒットする。
図２７は、エントリ移動処理で、ＣＡＭ内のエントリがコピーされた状態の一例を示す説明図である。エントリ移動処理の第二の処理では、ＣＡＭ内のエントリであるエントリｃ４の内容を、テーブルメモリ６１０−２−１から、テーブルメモリ６１０−１−１の未登録エントリ位置（ａｄｒ１４）にコピーする。本処理を行うことで、パケット受信時の検索処理でエントリｃ４に一致するパケットヘッダ情報が検索キーとして投入された場合、テーブルメモリ６１０−１−１内のエントリ位置ａｄｒ１４のエントリにヒットする。
図２８は、エントリ移動処理で、ＣＡＭ内のコピー元のエントリが削除された状態の一例を示す説明図である。図２７の処理後、テーブルメモリ６１０−２−１のａｄｒ２１に登録されたコピー元のエントリｃ４及び対応するエントリｒ４は不要になるため、エントリを削除して未登録状態に変更してもよい。また、テーブルメモリ６１０−２−１及びテーブルメモリ６１０−２−２に対しては、この後電源あるいはクロック供給を停止される、などの処理により無効化されるため、前記のエントリ削除未登録は行わなくてもよい。
次に、テーブルメモリの構成方法の図２５から図２８で説明したものとは別の一実施例と、その場合のエントリ移動処理の一実施例について説明する。
【００３８】
図３４の例では、ＣＡＭは２つのテーブルメモリ６１０−１−１と６１０−２−１から構成される。各テーブルメモリ内には、例えばエントリが１２個登録される。テーブルメモリ６１０−１−１内の１２個のエントリ位置は、それぞれａｄｒ１０１〜ａｄｒ１１２、で表される。同様に、テーブルメモリ６１０−２−１内の１２個のエントリ位置は、それぞれａｄｒ２０１〜ａｄｒ２１２で表される。テーブルメモリ６１０−１−１内に６個のエントリ（エントリｇ１＿ｃ１、エントリｇ１＿ｃ２、エントリｇ１＿ｃ３、エントリｇ２＿ｃ１、エントリｇ２＿ｃ２、エントリｇ２＿ｃ３）が登録されている。また、テーブルメモリ６１０−２−１内に３個のエントリ（エントリｇ３＿ｃ１、エントリｇ３＿ｃ２、エントリｇ３＿ｃ３）が登録されている。エントリｇ１＿ｃ１、ｇ１＿ｃ２、ｇ１＿ｃ３は、図示した登録順番に依存関係があるグループでありグループ１とする。また、エントリｇ２＿ｃ１、ｇ２＿ｃ２、ｇ２＿ｃ３も同様なグループでありグループ２とする。また、エントリｇ３＿ｃ１、エントリｇ３＿ｃ２、ｇ３＿ｃ３も同様なグループでありグループ３とする。装置運用中に、前記各グループに新しくエントリを登録できるように、各グループ間には未登録領域を設けている。具体的には、テーブルメモリ６１０−１−１ではａｄｒ１０４、ａｄｒ１０５、ａｄｒ１０６、ａｄｒ１１０、ａｄｒ１１１、ａｄｒ１１２が未登録であり、テーブルメモリ６１０−２−１ではａｄｒ２０４からａｄｒ２１２が未登録である。
また、図３４の例では、ＲＡＭは２つのテーブルメモリエントリ６１０−１−２と６１０−２−２から構成されている。各テーブルメモリ内には、例えばエントリが１２個登録される。ＲＡＭのエントリは、ＣＡＭのエントリと一対一に対応している。テーブルメモリ６１０−１−２内には、エントリｇ１＿ｃ１、エントリｇ１＿ｃ２、エントリｇ１＿ｃ３、エントリｇ２＿ｃ１、エントリｇ２＿ｃ２、エントリｇ２＿ｃ３に対応して、それぞれ、エントリｇ１＿ｒ１、エントリｇ１＿ｒ２、エントリｇ１＿ｒ３、エントリｇ２＿ｒ１、エントリｇ２＿ｒ２、エントリｇ２＿ｒ３が登録されている。また、テーブルメモリ６１０−２−２内には、エントリｇ３＿ｃ１、エントリｇ３＿ｃ２、エントリｇ３＿ｃ３に対応して、エントリｇ３＿ｒ１、エントリｇ３＿ｒ２、エントリｇ３＿ｒ３、が登録されている。
【００３９】
以下では、エントリ移動処理の一例として、テーブルメモリ６１０−２−１及びテーブルメモリ６１０−２−２を非活性化させるため、テーブルメモリ６１０−２−１及びテーブルメモリ６１０−２−２内に登録されているエントリｇ３＿ｃ１、エントリｇ３＿ｃ２、エントリｇ３＿ｃ３及びエントリｇ３＿ｒ１、エントリｇ３＿ｒ２、エントリｇ３＿ｒ３を、それぞれテーブルメモリ６１０−１−１及びテーブルメモリ６１０−１−２の未登録状態のエントリ位置に移動する場合の処理を説明する。本例では、移動処理は、図３５、図３６の順で実行される。なお、各エントリの移動手順は、図２５から図２８で説明した手順と同様である。
図３５は、エントリ移動処理で、グループ１、グループ２の新規登録用領域を確保しながら、グループ３の３つのエントリを移動する領域を確保するためにグループ２の３つのエントリを移動した後の状態を示す説明図である。グループ２の各エントリを、ａｄｒ１０７〜ａｄｒ１０９から、ａｄｒ１０５〜ａｄｒ１０７に移動する。
図３６は、エントリ移動処理で、グループ３の３つのエントリをテーブルメモリ６１０−１−１及びテーブルメモリ６１０−２−１へ移動した後の状態を示す説明図である。グループ３の各エントリを、ａｄｒ２０１〜ａｄｒ２０３から、ａｄｒ１０９〜ａｄｒ１１１に移動する。この例では、グループｇ１〜ｇ３の順序を変えずに、かつ、新規登録用領域を確保しながら、非活性化するテーブルメモリの各エントリを移動できる。
次に、テーブルメモリの構成方法の別の一実施の形態と、その場合のエントリ移動処理の一実施の形態について説明する。
【００４０】
図２９は、検索テーブル６１０がＲＡＭで構成され、さらにテーブルが二分木で構成される場合のエントリ移動処理前の状態の一例を示す説明図である。
図２９の例では、ＲＡＭは２つのテーブルメモリ６１０−ｔ１、及び、テーブルメモリ６１０−ｔ２から構成される。各テーブルメモリ内には、例えばエントリが４個登録される。テーブルメモリ６１０−ｔ１内の４個のエントリ位置は、それぞれａｄｒ１１〜ａｄｒ１４で表される。同様に、テーブルメモリ６１０−ｔ２内の４個のエントリ位置は、それぞれａｄｒ２１〜ａｄｒ２４で表される。
検索テーブルＲＡＭ内に設定されるエントリは、宛先情報を格納する宛先情報フィールド、及び、左右二つの子ノードの格納位置を示す二つのポインタを設定するポインタフィールド（ＰＬフィールド及びＰＲフィールド）を含む。
図２９では、二分木の親ノードであるエントリｒ１と、エントリｒ１の二つの子ノードであるエントリｒ１１、エントリｒ１２と、が設定されている。エントリｒ１はテーブルメモリ６１０−ｔ１内のａｄｒ１１に設定され、ＰＬフィールドには、左の子ノードであるエントリｒ１１の格納情報であるａｄｒ２１が設定され、ＰＲフィールドには、右の子ノードであるエントリｒ１２の格納情報であるａｄｒ２２が設定されている。エントリｒ１１及びエントリｒ１２は、それぞれテーブルメモリ６１０−ｔ２内のａｄｒ２１、ａｄｒ２２に設定されている。図２９では、エントリｒ１１及びエントリｒ１２は二分木の最終ノードとなっているため、それぞれのＰＬフィールド及びＰＲフィールドは“ＮＵＬＬ”が設定されている。
【００４１】
また、テーブルメモリ６１０−ｔ１のａｄｒ１２、ａｄｒ１３、ａｄｒ１４にはエントリが登録されていない。また、テーブルメモリ６１０−ｔ２のａｄｒ２３、ａｄｒ２４にはエントリが登録されていない。
以下では、エントリ移動処理の一例として、テーブルメモリ６１０−ｔ２を非活性化させるため、テーブルメモリ６１０−ｔ２内に登録されているエントリｒ１１及びエントリｒ１２を、ともにテーブルメモリ６１０−ｔ１の未登録状態のエントリ位置に移動する場合の処理を説明する。本例では、移動処理は、図３０、図３１、図３２の順で実行される。
図３０は、二分木の子ノードのエントリがコピーされた状態の一例を示す説明図である。装置がパケットを受信する際に実行する検索テーブルの検索処理の停止時間を最小限にするために、本例でのエントリ移動処理の第一の処理では、まず、エントリｒ１１及びエントリｒ１２を、テーブルメモリ６１０−ｔ２から、テーブルメモリ６１０−ｔ１の未登録エントリ位置へコピーする。この時点では、パケット受信時の検索処理で、エントリｒ１からエントリｒ１１、あるいは、エントリｒ１２へ到達するパケットヘッダ情報が検索キーとして投入された場合、二分木構造のテーブルは、テーブルメモリ６１０−ｔ１内のエントリｒ１からテーブルメモリ６１０−ｔ２内のエントリｒ１１、あるいは、エントリｒ１２の順に検索され、最終的に到達したエントリｒ１１、あるいは、エントリｒ１２の宛先情報が検索結果として得られる。
【００４２】
図３１は、二分木の親ノード内に設定される子ノードの格納位置を示すポインタの内容が変更された状態の一例を示す説明図である。本例のエントリ処理の第二の処理では、親ノードであるエントリｒ１内に設定される二つの子ノードの格納位置を示すポインタの内容を、テーブルメモリ６１０−ｔ２のａｄｒ２１、及び、ａｄｒ２２から、それぞれ、テーブルメモリ６１０−ｔ１のａｄｒ１２、及び、ａｄｒ１３に変更する。本処理を行うことで、パケット受信時の検索処理でエントリｒ１１、あるいは、エントリｒ１２へ到達するパケットヘッダ情報が検索キーとして投入された場合、テーブルメモリ６１０−ｔ１内のエントリｒ１１、あるいは、エントリｒ１２に到達する。
図３２は、コピー元の二分木の子ノードが削除された状態の一例を示す説明図である。図３１の処理後、テーブルメモリ６１０−ｔ２のａｄｒ２１、あるいは、ａｄｒ２２に登録されたコピー元のエントリｒ１１、あるいは、エントリｒ１２は不要になるため、エントリを削除して未登録状態に変更してもよい。また、テーブルメモリ６１０−ｔ２に対しては、この後電源あるいはクロック供給を停止される、などの処理により無効化されるため、前記のエントリ削除未登録は行わなくてもよい。
【産業上の利用可能性】
【００４３】
本発明は、例えば、スイッチや、ルータ等のネットワーク中継装置に利用可能である。
【符号の説明】
【００４４】
１：スイッチ（ネットワーク中継装置）
１０：パケット処理部
１００：パケット受信部
２００：パケット監視部
２１０：パケットカウンタ
２２０：フリーランタイマ
２３０：パケット数計測部
３００：パケットバッファ制御部
３１０：有効バッファ数管理テーブル
３２０：有効バッファ数制御部
３３０：バッファメモリ電源管理部
４００：書き込み処理部
５００：パケットバッファ
６００：検索処理部
６１０：検索テーブル
６１０−１〜６１０−Ｋ：テーブルメモリ
６２０：検索キー生成部
６３０：テーブルアクセス部
６４０：テーブルメモリ制御部
６５０：検索結果生成部
６６０：エントリ数管理テーブル
６７０：有効テーブルメモリ数判定テーブル
７００：パケット送信部
８００：制御部
【図１】
0005467558.tif 000002
【図２】
0005467558.tif 000003
【図３】
0005467558.tif 000004
【図４】
0005467558.tif 000005
【図５】
0005467558.tif 000006
【図６】
0005467558.tif 000007
【図７】
0005467558.tif 000008
【図８】
0005467558.tif 000009
【図９】
0005467558.tif 000010
【図１０】
0005467558.tif 000011
【図１１】
0005467558.tif 000012
【図１２】
0005467558.tif 000013
【図１３】
0005467558.tif 000014
【図１４】
0005467558.tif 000015
【図１５】
0005467558.tif 000016
【図１６】
0005467558.tif 000017
【図１７】
0005467558.tif 000018
【図１８】
0005467558.tif 000019
【図１９】
0005467558.tif 000020
【図２０】
0005467558.tif 000021
【図２１】
0005467558.tif 000022
【図２２】
0005467558.tif 000023
【図２３】
0005467558.tif 000024
【図２４】
0005467558.tif 000025
【図２５】
0005467558.tif 000026
【図２６】
0005467558.tif 000027
【図２７】
0005467558.tif 000028
【図２８】
0005467558.tif 000029
【図２９】
0005467558.tif 000030
【図３０】
0005467558.tif 000031
【図３１】
0005467558.tif 000032
【図３２】
0005467558.tif 000033
【図３３】
0005467558.tif 000034
【図３４】
0005467558.tif 000035
【図３５】
0005467558.tif 000036
【図３６】
0005467558.tif 000037