(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、ネットワーク通信装置の一例として、フレーム転送装置について説明する。
【0011】
<実施例1>
図1は、本発明の第1の実施例のフレーム転送装置を含むネットワークシステムの構成を示すブロック図である。
【0012】
本実施例のフレーム転送装置10は、ルータやスイッチであり、複数のネットワーク11を接続し、該複数のネットワーク11の間でフレームを転送する。また、フレーム転送装置10は、ネットワーク11内で複数のコンピュータ12を接続し、該複数のコンピュータ12の間でフレームを転送する。
【0013】
フレーム転送装置10には、コンソール13が接続される。コンソール13は、プロセッサ、メモリ、通信インターフェース及び入出力インターフェースを有するコンピュータであり、ネットワーク管理者の指示に基づいて、フレーム転送装置10への制御指示(例えば、面切替指示)を送る。制御部110とコンソール13とは、所定のインターフェース(例えば、RS232C、USB、イーサネット等)(イーサネットは登録商標)によって接続される。
【0014】
なお、本実施例のフレーム転送装置10は、特定のネットワークに接続されるものではなく、転送するフレームの統計を収集するフレーム転送装置である限り、様々なネットワークを接続するフレーム転送装置を対象とする。
【0015】
フレーム転送装置10は、制御部110及びフォワーディング部120を有する。
【0016】
制御部110は、プロセッサ111、メモリ113及びタイマ115を有する。
【0017】
プロセッサ111は、メモリ113に格納されたプログラムを実行する。特に、本実施例のプロセッサ111は、統計処理を制御する統計制御プログラム112を実行する。タイマ115は、所定のタイミング信号をプロセッサ111(統計制御プログラム112)に送る。
【0018】
メモリ113は、統計データ114を格納する。なお、後述するように、第1の実施例では、統計領域から統計値を読み出して、コンソール13によって表示した後は、統計データ114は不要である。また、第2の実施例では、統計データ114は各統計の積算値を含む。
【0019】
統計制御プログラム112は、フレーム転送装置10による統計の取得を制御する。統計制御プログラム112は、例えば、制御信号116をRxフレーム処理部132に出力する。制御信号116には、取得した統計値を読み出す面を切り替えるための
統計領域切替指示がある。
【0020】
フォワーディング部120は、クロスバスイッチ121、複数のフレーム処理部130及びネットワークインターフェース部160を有する。
【0021】
クロスバスイッチ121は、フレーム処理部130を接続し、フレーム処理部130から送られたフレームを、該フレームを出力すべきポートに接続されたフレーム処理部130に出力するように、内部の接続を変更する。
【0022】
フレーム処理部130は、Rx転送エンジン131、Rxフレーム処理部132、Tx転送エンジン133及びTxフレーム処理部134を有する。
【0023】
Rx転送エンジン131は、転送情報テーブルを参照し、フレーム転送装置10に入力されたフレームの宛先を解析し、当該フレームを出力するポートを決定する。そして、Rx転送エンジン131は、決定された出力ポートの情報を入力されたフレームに付して、クロスバスイッチ121に送る。また、Rx転送エンジン131は、入力されたフレームの情報(例えば、フレームのヘッダ部)をRxフレーム処理部132に送る。Rxフレーム処理部132に送られるフレームの情報は、Rxフレーム処理部132において実行される処理によって、入力されたフレームのヘッダ部のみでも、入力されたフレーム全部でもよい。
【0024】
Tx転送エンジン133は、Rxフレーム処理部132が決定した出力ポートの情報に従って、入力されたフレームを物理ポート161に送る。また、Tx転送エンジン133は、入力されたフレームの情報(例えば、フレームのヘッダ部)をTxフレーム処理部134に送る。Txフレーム処理部134に送られるフレームの情報は、Txフレーム処理部134において実行される処理によって、フレームのヘッダ部のみでも、フレーム全部でもよい。
【0025】
このように、Rx転送エンジン131及びTx転送エンジン133がフレームを処理することによって、入力されたフレームはパス137のように転送される。
【0026】
Rxフレーム処理部132及びTxフレーム処理部134は、フレーム転送装置10に入力されたフレームの情報を解析し、入力されたフレームの統計を取得する。例えば、統計には、宛先毎のフレームの転送量、フレーム数などがある。他に、Rxフレーム処理部132及びTxフレーム処理部134は、入力されたフレームを暗号化する処理を実行してもよい。
【0027】
フレーム処理部130は、一般に、ハードウェアによるロジック回路で構成されるが、プロセッサが実行するプログラムによって構成されてもよい。
【0028】
ネットワークインターフェース部160は、他のネットワーク11やコンピュータ12が接続される物理ポート161を有し、フレーム転送装置10に送信されるフレームを受信し、及び、フレーム転送装置10から出力されるフレームを送信する。
【0029】
前述した実施例では、ネットワーク通信装置(一例として、フレーム転送装置)内の複数のRxフレーム処理部132及びTxフレーム処理部134が、それぞれ、二つの統計領域145、146などを有し、各統計領域がパケット処理用と統計値取得用との二つの機能を分担する。
【0030】
そして、DB_WP制御部141は、ネットワーク
通信装置内で処理されるパケットにDB_WPの情報901を付加する。DB_WPの情報901が付加されたパケットは、クロスバスイッチ121、Tx転送エンジン133を介してTxフレーム処理部134に到達する。Rxフレーム処理部132及びTxフレーム処理部134は、DB_WPの情報901を参照して、どちらの統計領域をパケット処理用とするかを判定、すなわち、統計値を記録する統計領域を決定する。そして、二つの統計領域は、時間(パケット処理の開始タイミング)や、パケットの入力を契機にして、その機能を切り替える。また、一連のパケットの処理中は、統計領域の切り替えを禁止し、異なるパケットの間で統計領域を切り替える。このようにして、一連のパケットの統計が同じ統計領域に記録されるようにする。
【0031】
図2Aは、第1の実施例のRxフレーム処理部132の構成を示すブロック図である。
【0032】
Rxフレーム処理部132は、DB_WP制御部141、フィルタ検索処理部142、経路検索処理部143、統計処理部1(144)及び統計処理部2(147)を有する。
【0033】
DB_WP制御部141は、統計制御プログラム112からの面切替指示116に従って、統計処理部144、147が統計処理の結果を書き込む記憶領域(面)を切り替える。統計制御プログラム112からDB_WP制御部141に入力された指示は、フィルタ検索処理部142、経路検索処理部143、Rx転送エンジン131、クロスバスイッチ121、Tx転送エンジン133を介してTxフレーム処理部134に到達する。統計制御プログラム112からDB_WP制御部141に入力される指示には、前述した面切替指示の他、統計データ読出要求などがある。
【0034】
なお、後述するように、Txフレーム処理部134はDB_WP制御部141を有しないが、Txフレーム処理部134にもDB_WP制御部141を設け、Txフレーム処理部134が統計制御プログラム112からの指示を直接受けてもよい。
【0035】
また、DB_WP制御部141には、Rx転送エンジン131からフレームの情報が入力される。なお、フレームの情報は、DB_WP制御部141を介さず、フィルタ検索処理部142に入力されてもよい。
【0036】
フィルタ検索処理部142は、入力されたフレームをフィルタリングする。例えば、フィルタ検索処理部142は、入力されたフレームのヘッダを解析し、特定のアドレスから送信された又は特定のアドレスが宛先となったフレームをフィルタリングし、フィルタリングされた及び/又は通過したフレームの数及び当該フレーム数が記録される統計エントリ番号を統計処理部1(144)に送る。統計エントリ番号は、経路検索やフィルタ処理の結果として決定される。統計処理部1(144)は、フィルタ検索処理部142がフィルタリングしたフレームの数を統計値として計数する。
【0037】
経路検索処理部143は、入力されたフレームのヘッダを解析し、入出力ポート、VLANなどのフレームの情報を抽出し、これらの情報が抽出されたフレームの数及び当該フレーム数が記録される統計エントリ番号を統計処理部2(147)に送る。統計処理部2(147)は、経路検索処理部143が検出したフレームの数を統計値としてカウントアップする。
【0038】
フィルタ検索処理部142及び経路検索処理部143は、検出したフレームの数の他、フレームのサイズを統計処理部144、147に出力してもよい。また、フィルタ検索処理部142及び経路検索処理部143が出力する統計値は、ユーザ毎(フレームの送信元及び/又は宛先が特定のユーザのフレーム毎)に集計されてもよい。
【0039】
Rxフレーム処理部132がフィルタ検索処理部142及び経路検索処理部143以外の処理部を有し、入力されたフレームを処理してもよい。例えば、入力されたフレームに有害なデータ(例えば、ウイルスプログラム)が含まれているかを判定し、有害なフレームを除去し、除去された有害フレームの数を統計処理部に送る。また、他の処理部が、QoSの処理や、ミラーリングや、フレームが壊れているかの判定や、制御フレーム(例えば、ネットワーク機器を制御するためのフレーム)の検出や、マルチキャストフレームの処理等を実行してもよい。そして、統計処理部が、これらの処理がされたフレーム数を計数することができる。
【0040】
統計処理部1(144)は、メモリを有する。メモリは、統計データベースを格納する。統計データベースは、
図2Aに示すように、統計領域1A(145)及び統計領域1B(146)を含む。統計領域1A(145)及び統計領域1B(146)は、統計値を書き込む及び読み出す領域である。統計領域1A(145)及び統計領域1B(146)のいずれに統計値を書き込むかは、DB_WPによって選択される。DB_WPは、DB_WP制御部141によって管理される。また、統計領域1A(145)及び統計領域1B(146)のいずれから統計値を読み出すかは、DB_RPによって選択される。DB_RPは、各統計処理部によって管理される。
【0041】
以上、統計処理部1(144)について説明したが、統計処理部2(147)も同様の構成(統計領域2A(148)及び統計領域2B(149))を有し、経路検索処理部143が検出したフレームの数を統計値としてカウントアップする。
【0042】
図2Bは、第1の実施例のTxフレーム処理部134の構成を示すブロック図である。
【0043】
Txフレーム処理部134は、経路検索処理部153、フィルタ検索処理部152、統計処理部3(157)及び統計処理部4(154)を有する。
【0044】
経路検索処理部153には、Tx転送エンジン133からフレームの情報が入力される。経路検索処理部153は、入力されたフレームのヘッダを解析し、入出力ポート、VLANなどのフレームの情報を抽出し、これらの情報が抽出されたフレームの数及び当該フレーム数が記録される統計エントリ番号を統計処理部3(157)に送る。統計処理部3(157)は、経路検索処理部153が検出したフレームの数を統計値としてカウントアップする。
【0045】
フィルタ検索処理部152は、入力されたフレームをフィルタリングする。例えば、フィルタ検索処理部152は、入力されたフレームのヘッダを解析し、特定のアドレスから送信された又は特定のアドレスが宛先となったフレームをフィルタリングし、フィルタリングされた及び/又は通過したフレームの数及び当該フレーム数が記録される統計エントリ番号を統計処理部4(154)に送る。統計処理部4(154)は、フィルタ検索処理部152がフィルタリングしたフレームの数を統計値として計数する。
【0046】
経路検索処理部153及びフィルタ検索処理部152は、検出したフレームの数の他、フレームのサイズを統計処理部157、154に出力してもよい。また、経路検索処理部153及びフィルタ検索処理部152が出力する統計値は、ユーザ毎(フレームの送信元及び/又は宛先が特定のユーザのフレーム毎)に集計されてもよい。
【0047】
Txフレーム処理部134がフィルタ検索処理部152及び経路検索処理部153以外の処理部を有し、入力されたフレームを処理してもよい。例えば、入力されたフレームに有害なデータ(例えば、ウイルスプログラム)が含まれているかを判定し、有害なフレームを除去し、除去された有害フレームの数を統計処理部に送る。また、他の処理部が、QoSの処理や、ミラーリングや、フレームが壊れているかの判定や、制御フレーム(例えば、ネットワーク機器を制御するためのフレーム)の検出や、マルチキャストフレームの処理等を実行してもよい。そして、統計処理部が、これらの処理がされたフレーム数を計数することができる。
【0048】
統計処理部4(154)は、メモリを有する。メモリは、統計データベースを格納する。統計データベースは、
図2Bに示すように、統計領域4A(155)及び統計領域4B(156)を含む。統計領域4A(155)及び統計領域4B(156)は、統計値を書き込む及び読み出す領域である。統計領域4A(155)及び統計領域4B(156)のいずれに統計値を書き込むかは、DB_WPによって選択される。DB_WPは、Rxフレーム処理部132のDB_WP制御部141によって管理される。また、統計領域4A(155)及び統計領域4B(156)のいずれから統計値を読み出すかは、DB_RPによって選択される。DB_RPは、各統計処理部によって管理される。
【0049】
以上、統計処理部4(154)について説明したが、統計処理部3(157)も同様の構成(統計領域3A(158)及び統計領域3B(159))を有し、経路検索処理部153が検出したフレームの数を統計値としてカウントアップする。
【0050】
なお、本実施例では、各統計処理部nは、二つの統計領域nA及び統計領域nBを有するが、各統計処理部(統計データベース)は三つ以上の統計領域を含んでもよい。
【0051】
なお、本実施例のRxフレーム処理部132及びTxフレーム処理部134は、二つの統計処理部を有したが、統計処理部は一つでもよい。また、本実施例では、統計処理部は、Rxフレーム処理部132及びTxフレーム処理部134に備わるが、Rxフレーム処理部132又はTxフレーム処理部134の一方のみに備わってもよい。
【0052】
図3は、第1の実施例の統計処理部1(
144)内の統計データベースの構成例を説明する図である。
【0053】
統計データベースは、エントリ番号301、統計領域1A(145)、統計領域1B(146)及びDB_RP306を含む。
【0054】
エントリ番号301は、収集する統計を一意に識別するための番号である。統計領域1A(145)及び統計領域1B(146)は、統計値を格納する。DB_RP306は、フレーム処理時に統計値を読み出すアドレスのオフセットのフラグであり、本実施例では「0」又は「1」である。
【0055】
すなわち、統計領域1A(145)及び統計領域1B(146)は、前述したように、Rxフレーム処理部132のメモリ内の記憶領域によって構成され、統計値を読み出すアドレスのオフセットがDB_RP306によって制御され、書込時のアドレスのオフセット(DB_WP)がDB_WP制御部141によって制御される。
【0056】
例えば、DB_RP306が「0」である場合、統計領域1A(145)の統計値が読み出される。一方、DB_RP306が「1」である場合、統計領域1B(146)の統計値が読み出される。また、DB_WP制御部141が管理するDB_WPの値が「0」である場合、統計値が統計領域1A(145)に書き込まれる。一方、DB_WP制御部141が管理するDB_WPの値が「1」である場合、統計値が統計領域1B(146)に書き込まれる。
【0057】
このように、DB_RPは、記憶領域から読み出す場合のアドレスのオフセット値であり、DB_WPは、記憶領域に書き込む場合のアドレスのオフセット値である。すなわち、DB_RP、DB_WPは、それぞれ、統計値を読み出す、書き込む統計領域を表す。
【0058】
なお、統計領域1A(145)及び統計領域1B(146)の大きさ及び記憶領域上の配置を適切(例えば、1024kバイトなどの2のn乗)に選んだ場合、DB_RPの値
又はDB_WPの値をエントリ番号の最上位に付加したアドレスにアクセスすることによって、アクセスする統計領域を選択することができる。また、DB_RPの値及びDB_WPの値を、「0」又は「1」ではなく、アドレスのオフセット値としてもよい。
【0059】
統計領域1A(145)は、統計値302及びHITBIT303を含み、統計領域1B(146)は、統計値304及びHITBIT305を含む。統計値302、304は、各エントリの統計値である。HITBIT303、305は、統計領域の切り替え後に統計値が更新されたかの情報を保持するための1ビットのデータである。すなわち、統計領域から統計値を読み出した後、統計値が更新された場合は、HITBIT303、305の値は「1」となり(
図4のステップS1005)、統計領域から統計値を読み出した後、HITBIT303、305の値は「0」となる(
図6のステップS1013)。
【0060】
なお、統計処理部1(
144)内の統計データベースの構成例を説明するが、他の統計処理部も同様の統計データベースを有する。なお、以下の説明では、複数の統計処理部nの統計領域nAを「統計領域A」と称し、複数の統計処理部nの統計領域nBを「統計領域B」と称する。
【0061】
以上に説明したように、統計領域にHITBITを設けることによって、フレーム処理期間に統計値が更新されない場合でも、正確な統計値を読み出すことができる。
【0062】
図4は、第1の実施例のフレーム処理のフローチャートである。
図4に示すフレーム処理は、フレームが入力された際に、フレーム処理部130のRxフレーム処理部132が実行する。なお、他のRxフレーム処理部及びTxフレーム処理部も同じ処理を実行する。
【0063】
まず、Rxフレーム処理部132は、DB_RPを参照し(S1001)、DB_RPが示す統計領域の統計値を読み出す(S1002)。すなわち、DB_RPが「0」であれば、統計領域Aに格納された統計値を読み出し、DB_RPが「1」であれば、統計領域Bに格納された統計値を読み出す。DB_RPが示す統計領域から統計値を読み出すことによって、複数の統計領域から最新の統計値を抽出する。
【0064】
その後、読み出した統計に、入力されたフレームの統計値を加算し、DB_WPが示す統計領域に書き込み、統計値を更新する(S1003)。
【0065】
その後、DB_WPの値をDB_RPに設定する(S1004)。DB_WPは、統計データが更新される統計領域を示す。このため、DB_WPの値をDB_RPに設定することによって、DB_RPで最後に更新されたデータが記録されている統計領域を管理することができ、最後に更新された統計領域から統計値を読み出すことができる。
【0066】
その後、DB_WPが示す統計領域の更新された統計値のHITBITに「1」を設定して、統計値が更新されたことを記憶する(S1005)。
【0067】
図5は、第1の実施例の統計
値取得処理のフローチャートである。
図5に示す
統計値取得処理は、コンソール13から統計値取得要求が入力された際、統計制御プログラム112が実行する。なお、
図5では、処理の対象をRxフレーム処理部132として説明するが、他のフレーム処理部(Txフレーム処理部134や、他の分散処理部のフレーム処理部)などが処理の対象でもよい。
【0068】
まず、統計制御プログラム112は、DB_WPを更新するかを判定する(S1021)。DB_WPは、所定の条件(例えば、1秒ごと(秒の小数点以下が0である場合))を満たす場合に更新することができる。これは、更新された統計が記録側にありユーザから見えない状態になっているので、取得側に切り替えてユーザに見えるようにするためである。DB_WPを、例えば定期的に更新することによって、明示的なコマンドを使用しない場合でも、統計が更新されていない状態に見えることを防止できる。そして、DB_WPを更新する場合は、現在(最新)の統計値を取得することができ、DB_WPを更新しない場合は、古い統計値を取得することになる。
【0069】
なお、
図8Bに示すように、統計領域を切り替えるためのコマンドが入力された場合、DB_WPを更新すると判定してもよい。
【0070】
その結果、DB_WPを更新する場合、DB_WPの更新タイミングを待つために、ステップS1022に進む。一方、DB_WPを更新しない場合、DB_WPの更新タイミングを待つことなく、ステップS1025に進む。
【0071】
ステップS1022では、DB_WPの更新をRxフレーム処理部132に指示する。そして、所定の条件を満たし、DB_WPの更新が完了するまで待機する(S1023、S1024)。そして、Rxフレーム処理部132は、DB_WPを更新した後、更新完了フラグを所定の記憶領域に書き込む。統計制御プログラム112は、前記所定の記憶領域に更新完了フラグが書き込まれたかを繰り返し確認しており、更新完了フラグが書き込まれたことを確認すると、ステップS1025に進む(S1023)。ステップS1024における待機は、前述した所定の条件を満たすまでの最長時間をタイマで待機してもよいし、フレームの処理状況を監視して、受信したフレームの処理が完了するまで待機してもよい。
【0072】
その後、送信した切替指示が許可されたことを確認した後、指示された統計領域から各統計エントリの統計値を取得する(S1025、S1026)。
【0073】
図6は、第1の実施例の統計データ読み出し処理のフローチャートである。
図6に示す統計データ読み出し処理は、統計制御プログラム112が統計データ読み出しを要求した際に(例えば、
図5のS1026)、フレーム処理部130のRxフレーム処理部132が実行する。なお、他のRxフレーム処理部及びTxフレーム処理部も同じ処理を実行する。
【0074】
まず、フレーム処理部130のRxフレーム処理部132は、DB_WPを参照し(S1011)、DB_WPが示す領域と反対(DB_WPの反転)の統計領域から統計値を読み出す(S1012)。すなわち、DB_WPが「0」であれば、統計領域Bに格納された統計値を読み出し、DB_WPが「1」であれば、統計領域Aに格納された統計値を読み出す。DB_WPが示す領域と反対の統計領域から統計値を読み出すことによって、フレーム処理による統計値の更新の影響を受けることなく、統計値を読み出すことができる。
【0075】
その後、DB_WPが示す領域の反転の統計領域の全てのHITBITに「0」を設定する(S1013)。
【0076】
その後、DB_WPが示す統計領域の当該エントリのHITBITが「0」であるかを判定する(S1014)。HITBITが0である場合、当該エントリについて、DB_WPが示す領域と反対の統計領域の統計値を、DB_WPが示す統計領域の統計値にコピーする(S1015)。DB_WPが示す統計領域においてHITBITが「0」である場合、当該エントリの統計値は、フレーム処理によって更新されていない。このため、DB_WPが示す統計領域の統計値にコピーして、最新の統計値に更新する。
【0077】
図7は、第1の実施例のDB_WP更新処理のフローチャートである。
図7に示すDB_WP更新処理は、ユーザのコマンド入力などを契機にしてDB_WPを明示的に更新する場合に、統計制御プログラム112が実行する。ユーザが入力するコマンドは、例えば、"statistics update" などである。
【0078】
まず、統計制御プログラム112は、DB_WPの更新をフレーム処理部130に指示する(S1031)。そして、DB_WPの更新が完了するまで待機し(S1033)、DB_WPの更新が完了すれば、終了する(S1032)。
【0079】
図8A及び
図8Bは、第1の実施例のフレーム転送装置10に、コンソール13から入力されるコマンドの例を説明する図である。
【0080】
例えば、
図8Aに示すように、統計値を取得するための "snmp getif" コマンドをコンソール13から入力することによって、統計値を取得する統計領域を切り替えて、統計値を取得することができる。
【0081】
また、統計領域を切り替えるためのコマンドを設けてもよい。例えば、
図8Bに示すように、統計領域を切り替える場合、コンソール13から "statistics update" コマンドを入力することによって、DB_RPを更新し、統計値を取得する統計領域を切り替える。その後、コンソール13から "snmp getif" コマンドを入力することによって統計値を取得することができる。
【0082】
図9は、第1の実施例のDB_WP制御部141から出力されるフレームのフォーマットを説明する図である。
【0083】
DB_WP制御部141は、Rx転送エンジン131から入力されたフレームに、DB_WPの情報を付加して、フィルタ検索処理部142にフレームを出力する。
【0084】
すなわち、DB_WP制御部141に入力されるフレームは、制御情報(入力ポート、入力VLANなど)、フレームの情報及び統計情報を含む。なお、入力されるフレームが、ユーザデータを含んでもよい。フレームの情報は、レイヤ2の宛先MACアドレス及び送信元MACアドレスを含み、さらに、レイヤ3のIPヘッダなどを含む。統計情報は、このフレームが処理されるべき統計処理の統計エントリ番号を含む。
【0085】
本実施例において、DB_WP制御部141から出力されるフレームの統計情報は、各Rxフレーム処理部及びTxフレーム処理部の統計の種別毎(統計処理部毎)にDB_WPの情報901を含む。DB_WPの情報901は、このフレームが統計処理された値を書き込む記憶領域を表す。DB_WPの情報901はフレームに付加され、フレーム転送装置内の各Rxフレーム処理部及びTxフレーム処理部で参照される。このため、複数のRxフレーム処理部及びTxフレーム処理部で行われる統計処理の結果は、同じフレームについては、DB_WPが示す同じ統計領域に書き込まれる。
【0086】
なお、
図9に示すフレームはDB_WP制御部141から出力された状態であり、統計処理がまだ行われていないので、統計エントリ番号は不定(未決定)となっている。
【0087】
図10は、第1の実施例のDB_WP制御の詳細を説明する図である。
図10を用いて、DB_WPの更新タイミング、すなわち、更新指示された新しいDB_WPを、次のフレーム処理から使うタイミングについて説明する。
【0088】
図中、PACKET_VLDは、フレーム処理が有効であるかを示すフラグであり、フレーム処理中は1、フレーム処理をしていないときは0となる。PACKET_ENDは、同一のフレーム処理の終了を示すフラグであり、一連のフレーム処理の最後のフレームの処理のタイミングでは「1」となり、他のタイミングでは「0」となる。
【0089】
本実施形態のDB_WP制御部141は、
統計制御プログラム112からの面切替指示116によって統計値を記録する記憶領域を切り替える。この切り替えタイミングは、一連のフレームを処理している途中における統計領域の切り替えを避けるためである。
【0090】
例えば、前述したフラグ、PACKET_VLD及びPACKET_ENDを用いた一つの方法として、PACKET_VLDが「0」であるとき、又は、PACKET_VLDが1であり、かつ、PACKET_ENDが「1」であるときに、DB_WPの更新を許可する。すなわち、(PACKET_VLD=0)or(PACKET_VLD=1 and PACKET_END=1)を満たすタイミングで、DB_WPを更新する。
【0091】
また、第2の方法として、PACKET_VLDが1でなく、又は、PACKET_ENDが0でないときに、DB_WPの更新を許可する。すなわち、not(PACKET_VLD=1 and PACKET_END=0)を満たすタイミングで、DB_WPを更新する。
【0092】
このように、DB_WPの更新タイミングを制御することによって、一連のフレームに関する統計処理中は統計領域の切り替えを禁止し、異なる一連のフレームとの間でだけ統計領域の切り替えを許可する。このため、一連のフレームに対する処理が、異なる統計領域に跨って記録されなくなる。よって、一つの入力フレームに関する統計が同じ統計領域に記録されるため、フレーム処理の統計を正確に取得することができる。
【0093】
この一連のフレームに対する処理は、例えば、一つのマルチキャストフレームから複製された複数のフレームを出力する場合に、複製された同じフレームを一連のフレームとして処理する場合である。マルチキャストフレームは、クロスバスイッチ121又はTx転送エンジン133で複製される。
【0094】
Txフレーム処理部134は、フレームの処理状況を参照して、DB_WPを更新する以前に処理されたフレームの統計が採取されたことを確実にする。具体的には、DB_WPによって一連のフレームであるかを判定してもよい。例えば、DB_WPが「1」である場合、DB_WP=1に対応する統計領域に統計が記録し終わるまで、DB_WP=1に対応する統計領域から統計値を取得しない。また、別の実装として、クロスバスイッチ121がフレームを複製した場合、複製された全てのフレームの処理が終了するまでの標準的又は最大の時間の統計値の読み出しを禁止してもよい。
【0095】
さらに、フレーム転送装置がL3スイッチである場合、レイヤ2におけるスイッチとしての処理とレイヤ3におけるルータとしての処理が並行して行われる。このため、この場合は、レイヤ2で複製されたフレームとレイヤ3で複製されたフレームとを一連のフレームと判定してもよい。
【0096】
この処理によって、DB_WPの値を変更してから、一連のフレームの統計採取が完了するまでの間の統計値の取得を禁止することができる。
【0097】
図11は、第1の実施例の統計処理の例を説明する図であり、パケット処理による特定のエントリの統計値及びフラグの変化を示す。
【0098】
図11において、DB_WPは、統計値が書き込まれる統計領域を示すフラグであり、統計の種類毎の1bitのデータによって管理される。統計領域Aの統計値及び統計領域Bの統計値は、統計の種別毎かつエントリ毎に記録される。DB_RPは、最後に統計値を書き込んだ統計領域を示すフラグであり、統計の種類毎かつエントリ毎の1bitのデータによって管理される。統計領域AのHITBITは、統計領域の切り替え後、フレーム処理により統計領域Aの統計値が更新されていることを示すフラグであり、統計の種別毎かつエントリ毎に記録される。統計領域BのHITBITは、統計領域の切り替え後、フレーム処理により統計領域Bの統計値が更新されていることを示すフラグであり、統計の種別毎かつエントリ毎に記録される。
【0099】
まず、統計領域A(DB_WP=0)で、パケットが処理され(201)、統計領域Aの統計値が「0」から「1」に更新される。このとき、統計領域Aの統計値が更新されたため、統計領域AのHITBITが「1」に設定される。その後、パケット処理によって統計領域Aの統計値が加算される。
【0100】
その後、統計領域Bの統計値が読み出される(202)。第1の実施例では、読み出しの際に統計値をクリアするリードクリア方式を採用しているので、統計領域Bの統計値及びHITBITがクリアされる。但し、このタイミングでは、統計値及びHITBITが0であるため、値は変化しない。
【0101】
その後、パケット処理によって統計領域Aの統計値が加算され、パケット処理が終了したタイミングで、統計値を記録する統計領域が統計領域Aから統計領域Bに切り替えられる(203)。このため、統計値は切り替え後の統計領域Bに書き込まれ、統計領域Bの統計値が「0」から「1」に更新される。このとき、統計領域Bの統計値が更新されたため、統計領域BのHITBITが「1」に設定される。その後、パケット処理によって統計領域Bの統計値が加算される。
【0102】
その後、統計領域Aの統計値が読み出される(204)。第1の実施例では、読み出しの際に統計値をクリアするリードクリア方式を採用しているので、統計領域Aの統計値及びHITBITがクリアされる。
【0103】
その後、パケット処理によって統計領域Bの統計値が加算され、パケット処理が終了したタイミングで、統計値を記録する統計領域が統計領域Bから統計領域Aに切り替えられる(205)。このため、統計値は切り替え後の統計領域Aに書き込まれ、統計領域Aの統計値が「0」から「1」に更新される。このとき、統計領域Aの統計値が更新されたため、統計領域AのHITBITが「1」に設定される。
【0104】
その後、統計領域Bの統計値が読み出される(206)。第1の実施例では、読み出しの際に統計値をクリアするリードクリア方式を採用しているので、統計領域Bの統計値及びHITBITがクリアされる。
【0105】
このように、第1の実施例では、統計領域から統計値を読み出す際に統計値をクリアするので、
統計制御プログラム112が統計の積算値を管理する。このため、メモリに多くの記憶容量が必要となるが、Rxフレーム処理部132の制御が簡単になる。
【0106】
図12は、第1の実施例の統計データベースの構成例を説明する図である。
【0107】
図12に示す統計データベースの例では、VLAN及びQoSによって処理されたフレーム数が記録されている。例えば、VLAN3が1フレーム、VLAN4が3フレーム、VLAN5が6フレーム、VLAN6が1フレームである。また、QoSは、タイプAが3フレーム、タイプBが2フレーム、タイプCが3フレーム、タイプDが3フレームである。また、組み合わせの統計として、4A、4B、5A、5B、5Cの5種類の統計を取得している。
【0108】
この統計値を、QoSとVLANとの組み合わせでマトリックスにすると、
図12に示すように分析される。これによると、QoSとVLANとの組み合わせである、3A、3B、6Bは0であることが分かる。また、3Cから5Dは値は一意に定まらないものの、ある範囲で推測することができる。
【0109】
このように、第1の実施例では、異なる種類(例えば、QoS、VLAN)の統計値を同じタイミングで記録するので、統計値を取得していない組み合わせであっても、統計値を推測することができる。
【0110】
以上に説明したように、本発明の第1の実施例では、DB_WPの情報をRxフレーム処理部132に転送されるフレームに付加し、DB_WPによってRxフレーム処理部132での統計処理の結果が記録される統計領域を切り替えるので、一連のフレームに関する統計値は同じ統計領域に記録される。
【0111】
また、統計値を読み出すタイミングが統計領域の切り替えタイミングを含むことがなく、統計領域の切り替えタイミングを跨って、統計値を読み出すことがなくなる。
【0112】
また、フレーム処理によって統計値が書き込まれる統計領域と、統計値を読み出す統計領域を別の領域にしたので、フレーム処理による影響を受けることなく、統計値を読み出すことができる。
【0113】
<実施例2>
次に、本発明の第2の実施例について説明する。
【0114】
第2の実施例は、統計領域を切り替える毎に統計値を「0」に初期化し、統計領域の切り替え前後の統計値は
統計制御プログラム112が積算する。このため、DB_RPを有さない。
【0115】
第2の実施例の説明において、前述した第1の実施例と異なる構成及び処理についてのみ説明し、同じ構成及び処理については説明を省略する。
【0116】
図13は、第2の実施例の統計処理部1(
144)内の統計データベースの構成例を説明する図である。なお、統計処理部1(
144)内の統計データベースの構成例を説明するが、他の統計処理部も同様の統計データベースを有する。
【0117】
統計データベースは、エントリ番号401、統計領域1A(145)及び統計領域1B(146)を含む。
【0118】
エントリ番号401は、収集する統計を一意に識別するための番号である。統計領域1A(145)及び統計領域1B(146)は、統計値を格納する。統計領域1A(145)及び統計領域1B(146)は、前述したように、Rxフレーム処理部132のメモリ内の記憶領域によって構成され、統計領域へアクセスする際のアドレスのオフセットがDB_WP制御部141によって制御される。
【0119】
例えば、DB_WP制御部141が管理するDB_WPの値が「0」である場合、統計値が統計領域1A(145)に書き込まれ、統計領域1B(146)の統計値が読み出される。また、DB_WPの値が「1」である場合、統計値が統計領域1B(146)に書き込まれ、統計領域1A(145)の統計値が読み出される。
【0120】
なお、統計領域1A(145)及び統計領域1B(146)の大きさ及び記憶領域上の配置を適切(例えば、1024kバイトなどの2のn乗)に選んだ場合、DB_WPの値をエントリ番号の最上位に付加したアドレスにアクセスすることによって、アクセスする統計領域を選択することができる。また、DB_WPの値を、「0」又は「1」ではなく、アドレスのオフセット値としてもよい。
【0121】
次に、第2の実施例のフレーム処理について説明する。第2の実施例のフレーム処理は、フレームが入力された際に、フレーム処理部130のRxフレーム処理部132が実行する。なお、他のRxフレーム処理部及びTxフレーム処理部も同じ処理を実行する。
【0122】
すなわち、第2の実施例では、まず、フレーム処理部130のRxフレーム処理部132は、DB_WPを参照し、DB_WPに記録された識別子が示す統計領域の統計値を読み出す。すなわち、DB_WPが「0」であれば、統計領域Aに格納された統計値を読み出し、DB_WPが「1」であれば、統計領域Bに格納された統計値を読み出す。DB_WPが示す統計領域から統計値を読み出すことによって、常に最新の統計値を読み出すことができる。
【0123】
その後、読み出した統計に、入力されたフレームの統計値を加算し、DB_WPが示す統計領域に書き込み、統計値を更新する。
【0124】
次に、第2の実施例の統計データ読み出し処理について説明する。第2の実施例の統計データ読み出し処理は、統計制御プログラム112が統計データ読み出しを要求した際に(例えば、
図5のS1026)、フレーム処理部130のRxフレーム処理部132が実行する。なお、他のRxフレーム処理部及びTxフレーム処理部も同じ処理を実行する。
【0125】
まず、
Rxフレーム処理部132は、DB_WPを参照し、DB_WPが示す領域と反対(DB_WPの反転)の統計領域から統計値を読み出し、読み出した統計領域の統計値を0にクリアする。すなわち、DB_WPが「0」であれば、統計領域Bに格納された統計値を読み出し、DB_WPが「1」であれば、統計領域Aに格納された統計値を読み出す。DB_WPが示す領域と反対の統計領域から統計値を読み出すことによって、フレーム処理による統計値の更新の影響を受けることなく、統計値を読み出すことができる。
【0126】
図14は、第2の実施例の統計処理の例を説明する図であり、パケット処理による特定のエントリの統計値及びフラグの変化を示す。
【0127】
第2の実施例の統計データベースは、
図13において前述したように、DB_RP及びHITBITを有さない。
【0128】
まず、統計領域A(DB_WP=0)で、パケットが処理され(211)、統計領域Aの統計値が「0」から「1」に更新される。その後、パケット処理によって統計領域Aの統計値が加算される。
【0129】
その後、統計領域Bの統計値が読み出される(212)。第2の実施例では、読み出しの際に統計値をクリアしない。但し、このタイミングでは、統計値は「0」である。
【0130】
その後、パケット処理によって統計領域Aの統計値が加算され、パケット処理が終了したタイミングで、統計値を記録する統計領域が統計領域Aから統計領域Bに切り替えられる(213)。このため、統計領域Aの統計値に当該パケット処理による統計値が加算された値が切り替え後の統計領域Bに書き込まれ、統計領域Bの統計値が「0」から「6」に更新される。その後、パケット処理によって統計領域Bの統計値が加算される。
【0131】
その後、統計領域Aの統計値が読み出される(214)。第2の実施例では、読み出しの際に統計値は変化しない。
【0132】
その後、パケット処理によって統計領域Bの統計値が加算され、パケット処理が終了したタイミングで、統計値を記録する統計領域が統計領域Bから統計領域Aに切り替えられる(215)。このため、統計領域Bの統計値に当該パケット処理による統計値が加算された値が切り替え後の統計領域Aに書き込まれ、統計領域Aの統計値が「5」から「12」に更新される。
【0133】
その後、統計領域Bの統計値が読み出される(216)。第2の実施例では、読み出しの際に統計値は変化しない。
【0134】
なお、第2の実施例では、統計領域の切り替えから統計を読み出すまでの間に、パケット処理が実行されなかった場合、補正処理(例えば、反対側の統計領域から統計値を読み出す処理)が必要となる。
【0135】
以上に説明したように、本発明の第2の実施例では、統計領域から統計値を読み出す際に統計値をクリアせず、DB_WPの値が示す統計領域で統計の積算値を管理する。このため、Rxフレーム処理部132の制御が複雑になるが、
統計制御プログラム112が統計の積算値を管理する必要がない。このため、統計領域から統計値を読み出して、コンソール13によって表示した後は、統計値を格納するために割り当てられたメモリを解放することができ、必要なメモリの記憶容量を少なくすることができる。
【0136】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。