(57)【要約】【課題】簡単な構成で高速にフレーム処理でき、バッファ処理の負担を軽減できること。【解決手段】Ｌ２スイッチ１００は、複数の入力ポート１０１と複数の出力ポート１０７とを有し、伝送路から入力ポート１００で受信したフレームをバッファメモリ１０６に記憶させ、バッファメモリ１０６から読み出したフレームを出力ポート１０７から伝送路へ送信する。Ｌ２スイッチ１００は、受信したフレームから宛先アドレスを抽出し、抽出した宛先アドレスに対応する出力ポート１０７を決定するＭＡＣ学習部１０２と、バッファメモリ１０６の前段に設けられ、ＭＡＣ学習部１０２において出力ポート１０７が決定されたフレームの量をカウントし、出力ポート１０７の物理帯域とフレームのカウント値に基づいて、出力ポート１０７毎にフレームの廃棄、またはバッファメモリ１０６への書き込みを制御する出力帯域制御部１０４と、を備える。【選択図】図１
2017191977.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力ポートと複数の出力ポートとを有し、伝送路から前記入力ポートで受信したフレームをバッファメモリに記憶させ、前記バッファメモリから読み出したフレームを前記出力ポートから伝送路へ送信するフレーム処理装置において、
受信した前記フレームから宛先アドレスを抽出し、抽出した前記宛先アドレスに対応する前記出力ポートを決定する出力ポート決定部と、
前記バッファメモリの前段に設けられ、前記出力ポート決定部において前記出力ポートが決定された前記フレームの量をカウントし、前記出力ポートの物理帯域と前記フレームのカウント値に基づいて、前記出力ポート毎に前記フレームの廃棄、または前記バッファメモリへの書き込みを制御する出力帯域制御部と、
を備えることを特徴とするフレーム処理装置。
【請求項２】
前記出力帯域制御部は、決定された前記出力ポートに対応したトークンバケットと、
前記フレーム内の前記出力ポートの情報を元に、当該出力ポートに対応する前記トークンバケットから前記フレームのフレーム長に応じたトークンを減算し、所定周期毎に前記出力ポートの物理帯域に応じたトークンを加算する加減算部と、
前記加減算部の出力に基づき、前記トークンバケットのトークンの値が所定の閾値未満の場合に対応する前記フレームの廃棄を指示するデコーダと、
を含むことを特徴とする請求項１に記載のフレーム処理装置。
【請求項３】
優先度が付与された前記フレームが前記入力ポートに入力される場合、
前記出力ポート決定部は、前記フレームの優先度を判断し、
前記出力帯域制御部は、前記トークンバケットあたり前記優先度別に使用可能な量を設定すること、
を特徴とする請求項１または２に記載のフレーム処理装置。
【請求項４】
前記バッファメモリは、前記出力ポート別のバッファ領域を有することを特徴とする請求項１〜３のいずれか一つに記載のフレーム処理装置。
【請求項５】
前記フレームがＶＬＡＮに基づき入力される場合、
前記出力ポート決定部は、前記ＶＬＡＮの情報に基づく前記出力ポートを判断し、
前記出力帯域制御部は、前記トークンバケットを前記出力ポートかつ前記ＶＬＡＮ別に設け、前記トークンバケットへの前記トークンの加算の総量を、対応する一つの前記出力ポートの帯域分に設定し、前記ＶＬＡＮ別の前記フレームの廃棄、または通過を判断すること、
を特徴とする請求項１〜４のいずれか一つに記載のフレーム処理装置。
【請求項６】
前記フレームがマルチキャスト、ブロードキャストの場合、
前記出力帯域制御部は、前記フレームの複数の出力ポート分の前記トークンバケットを減算し、複数ポートの出力制御を行うこと
を特徴とする請求項１〜４のいずれか一つに記載のフレーム処理装置。
【請求項７】
前記出力ポート決定部は、前記フレームのＭＡＣアドレスに基づき前記出力ポートを決定する、Ｌ２スイッチのポート制御を行うことを特徴とする請求項１〜６のいずれか一つに記載のフレーム処理装置。
【請求項８】
前記出力ポート決定部は、前記フレームの宛先ＩＰアドレスに基づき前記出力ポートを決定する、Ｌ３スイッチのポート制御を行うことを特徴とする請求項１〜６のいずれか一つに記載のフレーム処理装置。
【請求項９】
複数の入力ポートと複数の出力ポートとを有し、伝送路から前記入力ポートで受信したフレームをバッファメモリに記憶させ、前記バッファメモリから読み出したフレームを前記出力ポートから伝送路へ送信するフレーム処理装置のフレーム処理方法において、
コンピュータが、
受信した前記フレームから宛先アドレスを抽出し、抽出した前記宛先アドレスに対応する前記出力ポートを決定し、
決定された前記出力ポートの前記フレームの量をカウントし、前記出力ポートの物理帯域と前記フレームのカウント値に基づいて、前記出力ポート毎に前記フレームの廃棄、または前記バッファメモリへ書き込む処理を指示する、
処理を行うことを特徴とするフレーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力ポートに入力されたフレームを出力ポートから出力するフレーム処理装置およびフレーム処理方法に関する。
【背景技術】
【０００２】
イーサネット（登録商標）等のネットワーク上に配置されるレイヤ２通信装置（以降Ｌ２スイッチと称す）は、伝送路から入力されたイーサネットフレーム（以下、フレームと称す）をバッファリングするバッファメモリを搭載している。伝送速度の高速化に伴い、Ｌ２スイッチは、高速処理に対応したメモリや高性能な内部処理回路が必要となってきている。
【０００３】
Ｌ２スイッチは、多数の回線を集線するため、多数の入力ポート（例えば、６４ポート）に入力されたフレームを宛先別に少数の出力ポート（例えば、４ポート）に切り替え出力する。入力ポートに入力されたフレームは、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  ａｄｄｒｅｓｓ）アドレスの学習（ＭＡＣ学習）によりフレーム中の送信元アドレス（以下ＳＡと称す）および宛先アドレス（以下ＤＡと称す）が参照される。ＳＡは、入力ポート情報とともにＭＡＣ学習テーブルに登録され、ＤＡは、ＭＡＣ学習テーブルに登録された情報を元に、出力ポートを決定するために使用される。スイッチ部は決定された出力ポート情報を元にフレームを特定の出力ポートへ送信する。スイッチ部にはバッファメモリが接続され、出力ポートが有する物理帯域超過による廃棄を一時的に抑えるためにフレームをバッファリングする。
【０００４】
バッファメモリを用いたバッファリングによりフレームを蓄積するが、特定の出力ポートにフレームの出力が集中し、出力側のワイヤレートを超えるとバッファメモリにライトしたフレームがリードできなくなるフレーム廃棄が発生する。
【０００５】
従来、入力側パケット転送装置毎にマーキング割合を集計し、結果に応じて、新規パケットの受け付けの有無を決定する技術がある（例えば、下記特許文献１参照。）。また、バッファ使用率に応じて、Ｌ２スイッチ内のポリサのバーストサイズを動的に設定する技術がある（例えば、下記特許文献２参照。）。また、Ｌ２スイッチ内のポリサとシェーバがトークンバケツの機能を用いパケットの転送処理を行い、パイプラインにより減算処理を高速化する技術がある（例えば、下記特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１３６３１５号公報
【特許文献２】特開２００６−１７３７２６号公報
【特許文献３】特開２０１４−１７６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術では、入力される全てのフレームをバッファメモリに書き込んでおり、フレームのバッファリングの際に、高速処理に対応したメモリや高性能な内部の処理回路が必要となる。伝送速度のさらなる高速化に伴って、より高速処理に対応したメモリや高性能な処理回路を採用する必要が生じるが、コスト高となると共に全ての入力ポートからのフレームを高速に処理する性能を満たすことが厳しくなってきている。
【０００８】
一つの側面では、本発明は、簡単な構成で高速にフレーム処理でき、バッファ処理の負担を軽減できることを目的とする。
【課題を解決するための手段】
【０００９】
一つの案では、複数の入力ポートと複数の出力ポートとを有し、伝送路から前記入力ポートで受信したフレームをバッファメモリに記憶させ、前記バッファメモリから読み出したフレームを前記出力ポートから伝送路へ送信するフレーム処理装置において、受信した前記フレームから宛先アドレスを抽出し、抽出した前記宛先アドレスに対応する前記出力ポートを決定する出力ポート決定部と、前記バッファメモリの前段に設けられ、前記出力ポート決定部において前記出力ポートが決定された前記フレームの量をカウントし、前記出力ポートの物理帯域と前記フレームのカウント値に基づいて、前記出力ポート毎に前記フレームの廃棄、または前記バッファメモリへの書き込みを制御する出力帯域制御部と、を備えることを要件とする。
【発明の効果】
【００１０】
一つの実施形態によれば、簡単な構成で高速にフレーム処理でき、バッファ処理の負担を軽減できる効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態にかかるフレーム処理装置の構成例を示すブロック図である。
【図２】図２は、実施の形態にかかるフレーム処理装置に設けられる出力帯域制御部の機能を説明する図である。
【図３】図３は、実施の形態にかかるフレーム処理装置に設けられる出力帯域制御部のハードウェア構成例を示す図である。
【図４】図４は、実施の形態にかかるフレーム処理装置に設けられるスイッチ部の構成例を示す図である。
【図５】図５は、実施の形態にかかるフレーム処理装置に設けられる多重部の構成例を示す図である。
【図６】図６は、実施の形態にかかるフレーム処理装置のバッファメモリに対するライト／リード制御例を説明する図である。
【図７】図７は、既存のＬ２スイッチの構成例を示す図である。
【図８】図８は、既存のＬ２スイッチのフレーム処理例を示す図である。
【図９】図９は、既存のＬ２スイッチの帯域制御例を示す図である。
【図１０】図１０は、実施の形態にかかるフレーム処理装置のＬ２スイッチによる各部の帯域を説明する図である。
【図１１】図１１は、実施の形態にかかるフレーム処理装置の出力帯域制御の処理をプログラム実行する場合の構成例を示す図である。
【図１２】図１２は、実施の形態にかかるフレーム処理装置の出力帯域制御のプログラム処理例を示すフローチャートである。
【図１３】図１３は、実施の形態にかかるフレーム処理装置の出力帯域制御のプログラム処理例を示すフローチャートである。
【図１４】図１４は、実施の形態にかかるフレーム処理装置の優先制御を説明する図である。
【図１５】図１５は、実施の形態にかかるフレーム処理装置の上位レイヤスイッチへの適用例を示す図である。
【発明を実施するための形態】
【００１２】
（実施の形態）
図１は、実施の形態にかかるフレーム処理装置の構成例を示すブロック図である。フレーム処理装置の適用例としてＬ２スイッチ１００を示している。Ｌ２スイッチ１００は、入力ポート１０１と、ＭＡＣ学習部１０２と、ＭＡＣ学習テーブル１０３と、出力帯域制御部１０４と、スイッチ部１０５と、バッファメモリ１０６と、出力ポート１０７と、を含む。
【００１３】
入力ポート１０１および出力ポート１０７は、それぞれ複数設けられてフレームを入出力し、対向装置との物理レイヤレベルでの接続を行う。図１の例に示すように、入力ポート１０１は６４ポート設けられるのに対し、出力ポート１０７は４ポート設けられており、入力ポート１０１の数に比べ、入力されたフレームが集約される出力ポート１０７の数は少ない。
【００１４】
ＭＡＣ学習部１０２は、入力されたフレーム中の送信元ＭＡＣアドレスを調べ、入力ポート１０１とＭＡＣアドレスを関連付けて、ＭＡＣ学習テーブル１０３に記憶する。また、ＭＡＣ学習部１０２は、フレーム中の送信先ＭＡＣアドレスを調べて、ＭＡＣアドレスに対応するフレームの出力ポート１０７を判定する。
【００１５】
ＭＡＣ学習テーブル１０３としては、一般的にＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）などの検索機能付きメモリが使用される。
【００１６】
出力ポート１０７の判定に使用する情報は、逆方向のフレーム中の送信元ＭＡＣアドレスを元に、ＭＡＣ学習テーブル１０３に記憶されている。ＭＡＣ学習部１０２により判定された出力ポート情報は、一般的にフレームに内部ヘッダ等が付加され、次の処理ブロック（出力帯域制御部１０４）へ情報を伝達する。
【００１７】
出力帯域制御部１０４は、次の処理ブロックであるバッファメモリ１０６（スイッチ部１０５）の前段に設けられ、フレームの廃棄または通過を決定する。すなわち、バッファメモリ１０６にメモリライトする以前のフレームの出力ポートを予測し、一つの出力ポートの物理帯域を超えるトラフィックが集中した場合に、メモリライト処理前の所定のフレームを削除する。
【００１８】
スイッチ部１０５は、出力帯域制御部１０４を通過後の全てのフレームをバッファメモリに格納し、ＭＡＣ学習部１０２のＭＡＣ結果に基づき、フレームを送信先ＭＡＣアドレスに対応する出力ポート１０７に振り分けるスイッチ処理を行う。
【００１９】
図２は、実施の形態にかかるフレーム処理装置に設けられる出力帯域制御部の機能を説明する図である。図２に示すように、出力帯域制御部１０４は、出力ポート１０７の個数に対応して各出力ポート１０７別の複数のトークンバケット２０１を含む。トークンバケット２０１に入力されるフレームには、ＭＡＣ学習部１０２で判定された宛先ポート情報が付加されている。そして、トークンバケット２０１は、フレームの宛先ポート情報を元に、対応する出力ポート１０７用のトークンをフレーム長に応じた値で減算する。
【００２０】
減算結果、トークンバケット２０１のトークンの値が０などの閾値以上であれば、入力されたフレームは廃棄しない。一方、減算結果が閾値未満であれば、入力されたフレームを廃棄する。また、各トークンバケット２０１には、出力ポート１０７の帯域に応じて、バケット上限値に達しない限り、定期的に出力ポート１０７の物理帯域（レート）に応じたトークンを補給（加算）する。
【００２１】
このように、フレームの宛先ポート別にトークンバケット２０１のトークンを減算することで、出力ポート１０７で輻輳すると予測した廃棄対象となるフレームをスイッチ部１０５に達する前に出力帯域制御部１０４で廃棄する。これにより、無駄なトラフィックの発生、例えば廃棄対象のフレームのスイッチ部１０５への通過やバッファメモリ１０６へのライト処理等、の無駄なトラフィックの発生を抑えることができる。
【００２２】
具体的に説明すると、トークンバケット２０１は、例えば出力ポート１（１０７）用のトークンバケット２０１のサイズを、出力ポート１（１０７）用のバッファ容量と同じＮｂｙｔｅのサイズにする。出力ポート１（１０７）の物理帯域が１Ｇｂｐｓであれば、出力ポート１（１０７）用のトークンバケット２０１に１秒あたり１Ｇｂｐｓ（＝１２５ＭＢｙｔｅ）のトークンを加算していく。
【００２３】
そして、出力帯域制御部１０４を通過するフレームのうち、出力ポート１（１０７）へ出力されるものがあれば、このフレームのバイト長をギャップ、プリアンブル込みの分減算していく。減算した結果、マイナスになった場合、このフレームはバッファメモリ１０６で廃棄されると予測し、バッファへライトする前の段階で廃棄する。
【００２４】
図３は、実施の形態にかかるフレーム処理装置に設けられる出力帯域制御部のハードウェア構成例を示す図である。トークンバケット２０１は、例えば、図３に示すように、加算器３０１と、減算器３０２と、加減算カウンタ３０３と、デコーダ３０４と、を含む。
【００２５】
トークンバケット２０１には、一定時間毎の定数と、加減算カウンタ３０３のカウンタ値とが入力され、これらを加算して加減算カウンタ３０３に出力する。減算器３０２には、フレームのフレーム長情報と、加減算カウンタ３０３のカウンタ値とが入力され、これらを減算して加減算カウンタ３０３に出力する。
【００２６】
加減算カウンタ３０３は、加算器３０１と減算器３０２のカウンタ値が入力され、これらの加減算カウントを行いカウンタ値をデコーダ３０４に出力する。加減算カウンタ３０３は、例えば数ｂｉｔ〜数十ｂｉｔの符号付き加減算カウンタ（フリップフロップ：ＦＦ）を用いることができる。デコーダ３０４は、カウンタ値を所定の閾値と比較してフレームの廃棄または通過の指示を出力する。
【００２７】
加減算カウンタ３０３における加算は、一定時間毎に出力ポート１０７の帯域に応じた値を現状のカウント値に加算することで行う。例えば、カウンタの１を１Ｂｙｔｅと換算し、一定時間を１μｓｅｃ、出力ポート１０７の出力帯域が１Ｇｂｐｓ（＝１２５ＭＢｙｔｅ）とすれば、１μｓｅｃ毎に１２５Ｂｙｔｅの加算を行う。加算時にカウンタの上限値に達したならば、カウンタの上限値をカウンタの値とする。
【００２８】
また、加減算カウンタ３０３における減算は、カウンタ値から通過フレームのフレーム長＋２０Ｂｙｔｅ（通信規格ＩＥＥＥ８０２．３で定めるプリアンブル長とＩＦＧ（Ｉｎｔｅｒ  Ｆｒａｍｅ  Ｇａｐの合計）を減算することで行う。
【００２９】
加減算カウンタ３０３は、以上の加減算を行い、カウント値をデコーダ３０４に出力する。デコーダ３０４は、所定の閾値（例えば０）以下であれば「０」を出力し、それ以外では「１」出力となるような簡単なデコーダを用いて、フレームの廃棄／通過指示を行う。なお、入力されるフレームがブロードキャストフレームやマルチキャストフレームであれば、宛先ポートが複数存在することになるため、対応して複数のトークンバケットの加減算を行えばよい。
【００３０】
図４は、実施の形態にかかるフレーム処理装置に設けられるスイッチ部の構成例を示す図である。バッファメモリ１０６は、例えばデュアルポートメモリが用いられ、スイッチ部１０５は、バッファメモリ１０６の一方（入力ポート１０１）のライト側のポートと、他方（出力ポート１０７）のリード側のポートとを挟んで設けられる。
【００３１】
バッファメモリ１０６の入力ポート１０１側には、複数の入力ポート１０１のフレームを多重化する多重部４０１が設けられる。多重部４０１は、入力ポート１０１毎に入力されたフレームを多重化し、多重化されたフレームは、ライト制御部４０２によりバッファメモリ１０６にライト（書き込み）処理される。
【００３２】
バッファメモリ１０６の出力ポート１０７側には、バッファメモリ１０６に記憶されたフレームをリード（読み出し）処理するリード制御部４０３が設けられる。リード制御部４０３により読み出されたフレームは、分離部４０４により出力ポート１０７別に多重化されていたフレームを分離して出力ポート１０７に出力される。
【００３３】
バッファ管理部４０５は、バッファメモリ１０６のバッファ状態を管理し、バッファ状態に基づいてライト制御部４０２よるライト制御と、リード制御部４０３によるリード制御を統括管理する。
【００３４】
図５は、実施の形態にかかるフレーム処理装置に設けられる多重部の構成例を示す図である。図４に示したスイッチ部１０５内の多重部４０１の構成例を示す。多重部４０１は、入力ポート１０１に対応するＦｉＦｏ５０１と、セレクタ５０２とを含む。
【００３５】
各入力ポート１０１から入力される最大帯域（例えば、１Ｇｂｐｓ）のフレームは、ＦｉＦｏ５０１に入力される。ＦｉＦｏ５０１にフレーム蓄積があれば、ＦｉＦｏ５０１からバッファメモリ１０６のライト側最大帯域である４Ｇｂｐｓで読み出しを行う。セレクタ５０２は、読み出し対象のＦｉＦｏ５０１の選択を行う。セレクタ５０２で選択されたフレームはライト制御部４０２へ渡され、バッファメモリ１０６にライトされる。
【００３６】
図６は、実施の形態にかかるフレーム処理装置のバッファメモリに対するライト／リード制御例を説明する図である。バッファメモリ１０６は、記憶領域が出力ポート１０７の個数に対応して分割され、出力ポート１０７別のフレームを記憶する。
【００３７】
スイッチ部１０５のライト制御部４０２は、バッファメモリ１０６の各出力ポート１０７毎のバッファ（フレーム）の蓄積量を確認して、空いていればそのバッファ（記憶領域）にフレームのライト（書き込み）を行う。一方、バッファが空いていなければ、書き込めないため、該当するフレームを廃棄する。
【００３８】
スイッチ部１０５のリード制御部４０３は、バッファメモリ１０６の各出力ポート１０７毎のバッファの蓄積量を判断し、蓄積があれば、出力帯域（例えば、一つの出力ポートあたり１Ｇｂｐｓ）を越えない範囲の速度でリード（読み出し）を行う。
【００３９】
そして、上述したスイッチ部１０５前段の出力帯域制御部１０４では、バッファメモリ１０６へのフレームの格納前の段階で廃棄が予測されるフレームを事前に廃棄させている。これにより、図６に示したように、バッファメモリ１０６までの間で入力されるフレームを所定帯域を制限（例えば、最大４Ｇｂｐｓの帯域）して処理でき、バッファメモリ１０６に対するライト処理の負荷を軽減させることができる。
【００４０】
なお、出力帯域制御部１０４を設けずに、入力された全てのフレームをバッファメモリ１０６にライト処理する場合には、スイッチ部１０５の処理を高速化する必要が生じる。例えば、バッファメモリ１０６のデータビット幅増加（例えば、１２８ｂｉｔ→２５６ｂｉｔ幅等）、回路並列化、パイプライン化等の特別な処理と構成が必要となるとともに、回路規模が増大し、コスト高となる。
【００４１】
（既存技術との対比）
次に、既存技術と実施の形態について構成および作用効果を対比する。図７は、既存のＬ２スイッチの構成例を示す図である。この図６に示すように、Ｌ２スイッチ７００は、多数の回線を集線し、一例として入力ポート７０１が６４ポート、出力ポート７０７が４ポートを有している。
【００４２】
入力ポート７０１から入力されたフレームは、ＭＡＣ学習テーブル７０３が示すフレーム中の送信元アドレスＳＡ、および宛先アドレスＤＡに基づき、送信先ポートを決定する。スイッチ部７０５は決定された送信先ポート情報を元にフレームを対応する出力ポート７０７へ送信する。
【００４３】
図７の構成例では、バッファメモリ７０６のバッファリングにより入力された全てのフレームを蓄積している。そして、特定の出力ポート７０７への出力が集中した場合には、この出力ポート７０７（図７の例では出力ポート２）のワイヤレートを超えると転送が行えなくなってフレーム廃棄が発生した。この場合、バッファメモリ７０６に対して無駄なフレームを記憶していることとなり、装置内のリソースを無駄に消費している。
【００４４】
図８は、既存のＬ２スイッチのフレーム処理例を示す図である。図８を用いて既存のＬ２ＳＷ７００のフレーム処理について説明する。例えば、入力ポート１（７０１）から１Ｇｂｐｓ、入力ポート３（７０１）から１Ｇｂｐｓのフレームの流入（入力）があり、これらの全トラフィックが、出力帯域１Ｇｂｐｓの出力ポート２（７０７）に出力される場合について説明する。
【００４５】
図８のスイッチ部７０５に設けられる各構成部は、実施の形態（図４）と基本構成が同じである。多重部８０１は、複数の入力ポートをまとめる機能を有する。ライト制御部８０２は、バッファメモリ７０６へのライト制御を行い、バッファメモリ７０６は、フレームを一時的に蓄積し、リード制御部８０３は、バッファメモリ７０６のリード制御を行う。分離部８０４は、バッファメモリ７０６からリードしたフレームを各出力ポート７０７の出力トラフィックとして分離する。バッファ管理部８０５は、バッファメモリ７０６の空きメモリ管理、バッファメモリ７０６内のフレームの読み出し順序の管理、コピー制御などを行う。
【００４６】
図８に示すＬ２スイッチのスイッチ部７０５では、入力ポート７０１とスイッチ部７０５との間に、実施の形態で説明した出力帯域制御部１０４が設けられていない。このため、図８に示すように、出力ポート７０７の出力帯域（４ポート合計４Ｇｂｐｓ）にも関わらず、入力ポート７０１からバッファメモリ７０６までの間で、最大６４Ｇｂｐｓの帯域処理を行う必要がある。これに対応しようとすると、スイッチ部７０５の処理を高速化する必要が生じ、バッファメモリ７０６のデータビット幅増加、回路並列化、パイプライン化等の特別な処理と構成が必要となるとともに、回路規模が増大しコスト高となる。
【００４７】
図９は、既存のＬ２スイッチの帯域制御例を示す図である。既存技術として、フレームの入力側でトークンバケット等の方法を使用した帯域制御方法がある。図９に示す例では、ＭＡＣ学習部７０２と、スイッチ部７０５との間に入力帯域制御部９０１を設け、入力されたパケットの帯域制限を行う。
【００４８】
この入力帯域制御部９０１を設け、トークンバケットを用いることでバッファメモリ７０６部分での廃棄を抑えることができる。ここで、入力帯域制御部９０１は、出力ポート７０７での帯域によらず、フレーム（パケット）を一律に廃棄する。図９（ａ）に示すように、特定の出力ポート７０７にフレームが集中した場合には入力帯域制御部９０１でのフレーム廃棄に効果がある。しかし、図９（ｂ）に示すように、フレームが特定の出力ポート７０７に集中しない場合、廃棄しなくて済むフレームも廃棄してしまう。
【００４９】
図１０は、実施の形態にかかるフレーム処理装置のＬ２スイッチによる各部の帯域を説明する図である。図１０の例では、ポート１，３の２つの入力ポート１０１から入力されたフレームが一つの出力ポート（ポート２）１０７に集中した状態を示している。
【００５０】
実施の形態で説明した出力帯域制御部１０４は、図２を用いて説明したように、宛先ポート別にトークンバケットを減算し廃棄することで、フレームがスイッチ部１０５に達する前に、無駄なトラフィックに相当するフレームを廃棄している。
【００５１】
そして、出力帯域制御部１０４では、例えば、出力ポート２（１０７）用のトークンバケット２０１の量を、出力ポート２（１０７）用のバッファ容量と同じＮｂｙｔｅのサイズにする。出力ポート２（１０７）の物理帯域が図示のように１Ｇｂｐｓの場合、出力ポート２（１０７）用のトークンバケット２０１に１秒あたり１Ｇｂｐｓ（＝１２５ＭＢｙｔｅ）の量を加算していく。
【００５２】
そして、出力帯域制御部１０４を通過するフレームうち、出力ポート２（１０７）へ出力されるものがあれば、そのフレームのバイト長をギャップ、プリアンブル込みの分減算していく。減算した結果、マイナスになった場合、そのフレームはバッファメモリ１０６で廃棄されると予測されるため、出力帯域制御部１０４により、バッファへライトする前の段階で廃棄する。
【００５３】
このように、実施の形態では、出力帯域制御部１０４は、ＭＡＣ学習結果から、出力ポート１０７の単位にトークンバケット計算を行いフレームを廃棄する。これにより、バッファメモリ１０６で廃棄されるフレームをバッファメモリ１０６の前段で事前に廃棄させることができる。したがって、図１０に示したように、入力ポート１０１からバッファメモリ１０６までの間、最大４Ｇｂｐｓの帯域の処理で済み、フレームのバッファ処理にかかる処理負荷を軽減させることができる。
【００５４】
（出力帯域制御のソフトウェア実行例）
図１１は、実施の形態にかかるフレーム処理装置の出力帯域制御の処理をプログラム実行する場合の構成例を示す図である。出力帯域制御部１０４の機能をプロセッサ（ＣＰＵ）がプログラム実行する構成例について説明する。
【００５５】
図１１の構成例では、出力帯域制御部１０４は、ＣＰＵ１１０１と、ＲＯＭやＲＡＭ等のメモリ１１０２とを含む。ＣＰＵ１１０１は、メモリ（例えばＲＯＭ）１１０２に格納されたプログラムにしたがって処理を実行する実行ユニット１１１１と、割込み信号や各種情報の受け取り、指示出力を行うＩ／Ｏ１１１２、一定間隔でタイミングを生成する内部タイマ１１１３を含む。
【００５６】
ＣＰＵ１１０１は、プログラム実行時にメモリ（例えばＲＡＭ）１１０２を各種テーブル等のデータを格納する作業領域として使用する。上述したトークンバケット２０１のカウンタ関連の構成（加減算カウンタ３０３等、図３参照）は、各ポート毎の配列としてメモリ１１０２上に配置される。
【００５７】
そして、出力帯域制御部１０４にフレームが到着した場合、到着したことを通知する割込み信号がＣＰＵ１１０１のＩ／Ｏ１１１２に通知され、Ｉ／Ｏ１１１２は、フレーム（パケット）から抽出した宛先情報、フレーム長情報を実行ユニット１１１１に出力する。実行ユニット１１１１は、フレームの廃棄／通過の判断を行う。また、内部タイマ１１１３により一定間隔で割込み処理を行い、この一定間隔でトークンバケット２０１の加算処理を行う。
【００５８】
図１１では、図１に記載の出力帯域制御部１０４の機能のみをＣＰＵ１１０１がプログラム実行することとした。この他にＭＡＣ学習部１０２のＭＡＣ学習の機能についてもＣＰＵ１１０１がプログラム実行することができる。
【００５９】
図１２は、実施の形態にかかるフレーム処理装置の出力帯域制御のプログラム処理例を示すフローチャートである。図１２を用いて出力帯域制御部１０４へのフレーム到着時のＣＰＵ１１０１の処理例を説明する。
【００６０】
はじめに、ＣＰＵ１１０１は、フレームの到着により割込みによって、フレームから宛先アドレスＤＡと、フレーム長を抽出する（ステップＳ１２０１）。次に、ＣＰＵ１１０１は、宛先アドレスＤＡに応じた出力ポート１０７のトークンバケット２０１からフレーム長（ギャップとプリアンブル長込み）を減算する（ステップＳ１２０２）。
【００６１】
次に、ＣＰＵ１１０１は、該当する出力ポート１０７に対応する現在のトークンバケット２０１が予め定めた下限値（上記の閾値、例えば０）未満であるか判断する（ステップＳ１２０３）。トークンバケット２０１が下限値未満であれば（ステップＳ１２０３：Ｙｅｓ）、ＣＰＵ１１０１は、到着したフレームを廃棄指示し（ステップＳ１２０４）、以上の処理を終了する。廃棄指示されたフレームは、出力帯域制御部１０４で廃棄される。
【００６２】
一方、トークンバケット２０１が下限値以上であれば（ステップＳ１２０３：Ｎｏ）、ＣＰＵ１１０１は、到着したフレームを通過指示し（ステップＳ１２０５）、以上の処理を終了する。通過指示されたフレームは、出力帯域制御部１０４からスイッチ部１０５に出力される。
【００６３】
図１３は、実施の形態にかかるフレーム処理装置の出力帯域制御のプログラム処理例を示すフローチャートである。図１３を用いて出力帯域制御部１０４でのトークン供給にかかるＣＰＵ１１０１の処理例を説明する。
【００６４】
はじめに、ＣＰＵ１１０１は、予め定めたトークンの供給間隔に対応した内部タイマ１１１３のタイマ割込みがあると、各トークンバケット２０１に一定量（トークン）を加算する（ステップＳ１３０１）。
【００６５】
次に、ＣＰＵ１１０１は、各トークンバケット２０１が上限値以上であるかを判断する（ステップＳ１３０２）。上限値以上となったトークンバケット２０１があれば（ステップＳ１３０２：Ｙｅｓ）、ＣＰＵ１１０１は、このトークンバケット２０１を上限値に設定し（ステップＳ１３０３）、以上の処理を終了する。一方、上限値未満のトークンバケット２０１に対しては（ステップＳ１３０２：Ｎｏ）、特に処理を行わず、以上の処理を終了する。
【００６６】
（出力帯域制御の各種応用例）
次に、上述した実施の形態のフレーム処理装置の各種応用例について説明する。
【００６７】
図１４は、実施の形態にかかるフレーム処理装置の優先制御を説明する図である。フレーム別の優先制御を行う場合、ＭＡＣ学習部１０２に優先クラス判定の機能を追加し、装置内を流れるフレームのヘッダ部分に優先クラス判定結果を付加する。
【００６８】
そして、上述した出力帯域制御部１０４では、トークンバケット２０１についてトークンバケットを出力ポート単位のトークンバケット２０１としたが、このトークンバケット２０１を図１４に示すように変更する。
【００６９】
具体的には、トークンバケット２０１を、低優先クラスが使える量（バケツ量）１４０１と、高優先クラスが使える量１４０２とで分割する。低優先クラスが使える量は、高優先クラスが使える量より少なく設定する。これにより、出力帯域制御部１０４は、低優先クラスのフレーム（パケット）が廃棄され易く、高優先クラスのフレームを優先的に通過させることができる。
【００７０】
また、上述したフレーム処理装置は、ＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）別の制御を行うこともできる。この場合、ＭＡＣ学習部１０２がＶＬＡＮ別のフレームの出力ポート１０７を判断する。そして、出力帯域制御部１０４には、出力ポート１０７かつＶＬＡＮ毎のトークンバケット２０１を設ける。各トークンバケット２０１へのトークン供給総量（加算の総量）を、対応する一つの出力ポート１０７の帯域分に設定することで、ＶＬＡＮ別にフレームの廃棄および通過を制御できる。
【００７１】
また、上述したフレーム処理装置に入力されるフレーム種別として、ブロードキャストおよびマルチキャストフレームに対応することができる。上述したフレーム（ユニキャストフレーム）の場合は、出力帯域制御部１０４において、減算対象となるトークンバケット２０１が一つのポート分のみとした。これに対して、入力されるフレームがブロードキャストあるいはマルチキャストフレームの場合は、複数の出力ポート１０７に出力される。これに対応して、減算対象となるトークンバケット２０１を複数ポート分設ければ、ユニキャスト同様にフレームの多廃棄制御が行える。
【００７２】
図１５は、実施の形態にかかるフレーム処理装置の上位レイヤスイッチへの適用例を示す図である。上述したフレーム処理装置は、より上位の上位レイヤＳＷへの適用も可能である。実施の形態では、フレーム処理装置としてＬ２スイッチを例に説明したが、図１５に示すＬ３スイッチ１５００においても、フレームの宛先ＩＰアドレスから輻輳する出力ポート１０７を予測することで適用可能である。
【００７３】
Ｌ３スイッチ１５００に適用する場合には、上述したＭＡＣ学習部１０２に代えてＩＰアドレスによるルーティングを行うルーティングテーブル部１５０１を設ける。Ｌ３スイッチでは、回線の接続構成により、複数の迂回経路が存在する可能性がある。この迂回経路に対応するため、ルーティングテーブル１５０２は、出力帯域制御部１０４の各出力ポート１０７用のトークン量を参照する。これにより、廃棄が発生すると予測した出力ポート１０７へのフレーム出力を避けて別の経路の出力ポート１０７に出力させる制御を行うことができる。
【００７４】
以上説明した実施の形態によれば、出力ポートの物理帯域に応じてこの出力ポートで廃棄されると予測されるフレームをスイッチ部（バッファメモリ）へ出力する事前に出力帯域制御部で廃棄する。これにより、スイッチ部（バッファメモリ）は、廃棄対象のフレームに対する書き込み等の処理を行わずに済み、無駄な装置のリソース消費を抑えることができるようになる。
【００７５】
また、バッファメモリに対する性能要求を緩和することができ、伝送速度が高速化されても高速で高価なメモリの使用を行わずに済み、低コスト化および低消費電力化できるようになる。例えば、出力帯域制御部は、数ｂｉｔ〜数十ｂｉｔの簡単な加減算カウンタを用いることができ、スイッチ部やバッファメモリの高速化を行う場合に比して、回路規模が少なくできる。
【００７６】
なお、本実施の形態で説明したフレーム処理にかかる方法は、予め用意されたプログラムを対象機器（上記フレーム処理装置等）等のコンピュータ（ＣＰＵ等のプロセッサ）で実行することにより実現することができる。本プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【００７７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７８】
（付記１）複数の入力ポートと複数の出力ポートとを有し、伝送路から前記入力ポートで受信したフレームをバッファメモリに記憶させ、前記バッファメモリから読み出したフレームを前記出力ポートから伝送路へ送信するフレーム処理装置において、
受信した前記フレームから宛先アドレスを抽出し、抽出した前記宛先アドレスに対応する前記出力ポートを決定する出力ポート決定部と、
前記バッファメモリの前段に設けられ、前記出力ポート決定部において前記出力ポートが決定された前記フレームの量をカウントし、前記出力ポートの物理帯域と前記フレームのカウント値に基づいて、前記出力ポート毎に前記フレームの廃棄、または前記バッファメモリへの書き込みを制御する出力帯域制御部と、
を備えることを特徴とするフレーム処理装置。
【００７９】
（付記２）前記出力帯域制御部は、決定された前記出力ポートに対応したトークンバケットと、
前記フレーム内の前記出力ポートの情報を元に、当該出力ポートに対応する前記トークンバケットから前記フレームのフレーム長に応じたトークンを減算し、所定周期毎に前記出力ポートの物理帯域に応じたトークンを加算する加減算部と、
前記加減算部の出力に基づき、前記トークンバケットのトークンの値が所定の閾値未満の場合に対応する前記フレームの廃棄を指示するデコーダと、
を含むことを特徴とする付記１に記載のフレーム処理装置。
【００８０】
（付記３）優先度が付与された前記フレームが前記入力ポートに入力される場合、
前記出力ポート決定部は、前記フレームの優先度を判断し、
前記出力帯域制御部は、前記トークンバケットあたり前記優先度別に使用可能な量を設定すること、
を特徴とする付記１または２に記載のフレーム処理装置。
【００８１】
（付記４）前記バッファメモリは、前記出力ポート別のバッファ領域を有することを特徴とする付記１〜３のいずれか一つに記載のフレーム処理装置。
【００８２】
（付記５）ＶＬＡＮの前記フレームが入力される場合、
前記出力ポート決定部は、前記ＶＬＡＮの情報に基づく前記出力ポートを判断し、
前記出力帯域制御部は、前記トークンバケットを前記出力ポートかつ前記ＶＬＡＮ別に設け、前記トークンバケットへの前記トークンの加算の総量を、対応する一つの前記出力ポートの帯域分に設定し、前記ＶＬＡＮ別の前記フレームの廃棄、または通過を判断すること、
を特徴とする付記１〜４のいずれか一つに記載のフレーム処理装置。
【００８３】
（付記６）前記フレームがマルチキャスト、ブロードキャストの場合、
前記出力帯域制御部は、前記フレームの複数の出力ポート分の前記トークンバケットを減算し、複数ポートの出力制御を行うこと
を特徴とする付記１〜４のいずれか一つに記載のフレーム処理装置。
【００８４】
（付記７）前記出力ポート決定部は、前記フレームのＭＡＣアドレスに基づき前記出力ポートを決定する、Ｌ２スイッチのポート制御を行うことを特徴とする付記１〜６のいずれか一つに記載のフレーム処理装置。
【００８５】
（付記８）前記出力ポート決定部は、前記フレームの宛先ＩＰアドレスに基づき前記出力ポートを決定する、Ｌ３スイッチのポート制御を行うことを特徴とする付記１〜６のいずれか一つに記載のフレーム処理装置。
【００８６】
（付記９）複数の入力ポートと複数の出力ポートとを有し、伝送路から前記入力ポートで受信したフレームをバッファメモリに記憶させ、前記バッファメモリから読み出したフレームを前記出力ポートから伝送路へ送信するフレーム処理装置のフレーム処理方法において、
コンピュータが、
受信した前記フレームから宛先アドレスを抽出し、抽出した前記宛先アドレスに対応する前記出力ポートを決定し、
決定された前記出力ポートの前記フレームの量をカウントし、前記出力ポートの物理帯域と前記フレームのカウント値に基づいて、前記出力ポート毎に前記フレームの廃棄、または前記バッファメモリへ書き込む処理を指示する、
処理を行うことを特徴とするフレーム処理方法。
【００８７】
（付記１０）複数の入力ポートと複数の出力ポートとを有し、伝送路から前記入力ポートで受信したフレームをバッファメモリに記憶させ、前記バッファメモリから読み出したフレームを前記出力ポートから伝送路へ送信するフレーム処理装置のフレーム処理プログラムにおいて、
コンピュータに、
受信した前記フレームから宛先アドレスを抽出し、抽出した前記宛先アドレスに対応する前記出力ポートを決定させ、
決定された前記出力ポートの前記フレームの量をカウントし、前記出力ポートの物理帯域と前記フレームのカウント値に基づいて、前記出力ポート毎に前記フレームの廃棄、または前記バッファメモリへ書き込む処理を指示させる、
処理を行わせることを特徴とするフレーム処理プログラム。
【符号の説明】
【００８８】
１００  フレーム処理装置（Ｌ２スイッチ）
１０１  入力ポート
１０２  ＭＡＣ学習部
１０３  ＭＡＣ学習テーブル
１０４  出力帯域制御部
１０５  スイッチ部
１０６  バッファメモリ
１０７  出力ポート
２０１  トークンバケット
３０１  加算器
３０２  減算器
３０３  加減算カウンタ
３０４  デコーダ
４０１  多重部
４０２  ライト制御部
４０３  リード制御部
４０４  分離部
４０５  バッファ管理部
５０２  セレクタ
１１０１  ＣＰＵ
１１０２  メモリ
１５００  フレーム処理装置（Ｌ３スイッチ）
１５０１  ルーティングテーブル部
１５０２  ルーティングテーブル
【図１】
2017191977.tif 000003
【図２】
2017191977.tif 000004
【図３】
2017191977.tif 000005
【図４】
2017191977.tif 000006
【図５】
2017191977.tif 000007
【図６】
2017191977.tif 000008
【図７】
2017191977.tif 000009
【図８】
2017191977.tif 000010
【図９】
2017191977.tif 000011
【図１０】
2017191977.tif 000012
【図１１】
2017191977.tif 000013
【図１２】
2017191977.tif 000014
【図１３】
2017191977.tif 000015
【図１４】
2017191977.tif 000016
【図１５】
2017191977.tif 000017