(57)【特許請求の範囲】
【請求項１】
入出力ポートから入力されたフレームを宛先の入出力ポートへ転送する転送処理装置において、
高速転送対象のフレーム情報を記憶した第１の記憶部と、
高速転送するフレームをバッファリングするフレームバッファと、
複数のソフトウェアキューを内蔵し、キューイングされる高速転送のフレームを上記フレームバッファに格納させながら、高速転送処理する高速転送処理部と、
非高速転送対象のフレーム情報を記憶した第２の記憶部と、
非高速転送のフレームに対する転送処理を行うと共に、非高速転送のフレームが高速転送のフレームへ変更が可能か否かを判定し、変更が可能な場合に、オフロード設定要求を発行するブリッジ処理部と、
オフロード設定要求が発行されたとき、高速転送のフレームへ変更されるフレームに適用するソフトウェアキューを動的に割り当てるオフロード設定処理部と
を有することを特徴とする転送処理装置。
【請求項２】
上記オフロード設定処理部は、高速転送のフレームへ変更されるフレームの宛先の入出力ポートに応じて、適用するソフトウェアキューを割り当てることを特徴とする請求項１に記載の転送処理装置。
【請求項３】
上記オフロード設定処理部は、高速転送のフレームへ変更されるフレームの優先度に応じて、適用するソフトウェアキューを割り当てることを特徴とする請求項１又は２に記載の転送処理装置。
【請求項４】
上記オフロード設定処理部は、上記ブリッジ処理部からの要求により、バースト耐性が必要な方向に転送されるフレームとは逆方向のフレームの転送時に、フレームの送信元ポートを自動的に判定し、自動的に各ソフトウェアキューにキューイングされるように割り当てることを特徴とする請求項１〜３のいずれかに記載の転送処理装置。
【請求項５】
上記高速転送処理部は、内蔵する各ソフトウェアキューに対応したシェーパを内蔵し、
上記オフロード設定処理部は、入出力ポートのリンク速度を検知し、その入出力ポートに係るソフトウェアキュー対応のシェーパのシェーピングレートを、検知したリンク速度に応じて設定することを特徴とする請求項１〜４のいずれかに記載の転送処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は転送処理装置に関し、例えば、複雑なフレーム処理や制御を行うアプリケーション用プロセッサと、フレームを高速にブリッジ転送するためのファストパス用プロセッサを有するものに適用し得るものである。
【背景技術】
【０００２】
転送処理などを行う転送処理装置を有する通信装置において、リンク速度の速いポートからリンク速度の遅いポートヘフレーム転送する場合には、リンク速度の速いポートからのデータをシェーピングし、速度を調整する必要がある。シェーピングには、周知のように、バッファが利用される（特許文献１参照）。従来では、ハードウェア実装されたバッファ（例えば、内部スイッチに設けられているフレームバッファ）を利用し、フレームロスを抑制していた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２０５９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、内部スイッチ内の入出力のタイミングを調整するバッファメモリをシェーピング用のフレームバッファとして用いているため、シェーピング機能から見た場合、そのバッファの容量は小さい。そのため、バースト耐性が低くなっていた。また、バッファ容量が少ないため、キューイングの観点を動的に変化させるようなことにも対応し難いものであった。
【０００５】
一方、より大きなバースト耐性を達成でき、動的にキューイングできるようにするためには、バッファを大きくするなど、バッファ回りのハードウェア構成を変更しなければならないという課題があった。
【０００６】
そのため、ハードウェア構成を変更することなく、フレームのキューイングを動的に変更し得て、バースト耐性を確保できる転送処理装置が望まれている。
【課題を解決するための手段】
【０００７】
本発明は、入出力ポートから入力されたフレームを宛先の入出力ポートへ転送する転送処理装置において、（１）高速転送対象のフレーム情報を記憶した第１の記憶部と、（２）高速転送するフレームをバッファリングするフレームバッファと、（３）複数のソフトウェアキューを内蔵し、キューイングされる高速転送のフレームを上記フレームバッファに格納させながら、高速転送処理する高速転送処理部と、（４）非高速転送対象のフレーム情報を記憶した第２の記憶部と、（５）非高速転送のフレームに対する転送処理を行うと共に、非高速転送のフレームが高速転送のフレームへ変更が可能か否かを判定し、変更が可能な場合に、オフロード設定要求を発行するブリッジ処理部と、（６）オフロード設定要求が発行されたとき、高速転送のフレームへ変更されるフレームに適用するソフトウェアキューを動的に割り当てるオフロード設定処理部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ハードウェア構成を変更することなく、フレームのキューイングを動的に変更し得て、バースト耐性を確保できる転送処理装置を実現できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の転送処理装置の構成を示すブロック図である。
【図２】第１の実施形態の転送処理装置における高速転送処理部がキューイングを制御するソフトウェアキューの説明図である。
【図３】第１の実施形態の転送処理装置におけるソフトウェアキューに対する優先度の設定例を示す説明図である。
【図４】第１の実施形態の転送処理装置における高速転送処理部及びブリッジ処理部が転送対象とするフレームの説明図である。
【図５】第１の実施形態の転送処理装置において、フレーム転送時にフレームの宛先ポートを自動的に判定し、ソフトウェアキューを割り当てる動作を示すシーケンス図である。
【図６】第１の実施形態の転送処理装置において、バースト耐性を具備したい方向と逆方向のフレーム転送時に、フレームの送信元ポートを自動的に判定し、ソフトウェアキューを割り当てる動作を示すシーケンス図である。
【図７】第１の実施形態の転送処理装置において、自動的にシェーパのシェーピング帯域（シェーピングレート）を設定する動作を示すシーケンス図である。
【図８】第２の実施形態の転送処理装置において、フレーム転送時にフレームの優先度を自動的に判定し、ソフトウェアキューを割り当てる動作を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
（Ａ）第１の実施形態
以下、本発明による転送処理装置の第１の実施形態を、図面を参照しながら説明する。
【００１１】
（Ａ−１）第１の実施形態の構成
図１は、通信装置内に実装される第１の実施形態の転送処理装置１の構成を示すブロック図である。以下の構成説明では、後述する実施形態に関係する部分をも区別することなく説明している。
【００１２】
ここで、通信装置は、例えば、有線通信機能に対応しているものであり、第１の実施形態の転送処理装置１に加え、受信部、送信部などを有している。通信装置は、例えば、ＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  ＩＰ）ゲートウェイやホームゲートウェイなどである。
【００１３】
第１の実施形態の転送処理装置１は、例えば、全体が１チップの半導体集積回路で構成されており、大きくは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２と内部スイッチ（内部ＳＷ）３とに分かれている。ＣＰＵ２は、複雑なフレーム処理や制御を行うアプリケーション用プロセッサ（以下、ＡＰと呼ぶ）１０と、フレームを高速にブリッジ転送するためのファストパス用プロセッサ（以下、ＦＰと呼ぶ）２０とを有する。内部スイッチ３は、例えば、ＣＰＵ２とＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ポート／ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ポートを中継するためのレイヤ２スイッチである。ＣＰＵ２と内部スイッチ３は、ＲＧＭＩＩ（Ｒｅｄｕｃｅｄ  Ｇｉｇａｂｉｔ  Ｍｅｄｉａ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｉｎｔｅｒｆａｃｅ）等で接続されており、ＬＡＮ用とＷＡＮ用がそれぞれ別に接続されている。
【００１４】
ＡＰ１０上では、Ｌｉｎｕｘ（登録商標）のようなネットワークスタックを持つ汎用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が動作しており、その上で、例えば、ＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｕｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）サーバ／クライアント、ＰＰＰｏＥ（ＰＰＰ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）クライアント／サーバ、ＶｏＩＰアプリケーション等のアプリケーションが動作する。
【００１５】
ＦＰ２０は、有線ＷＡＮインタフェースや有線ＬＡＮインタフェースから入ってきたフレームの高速転送を実現するものである。
【００１６】
ＦＰ２０は、高速転送処理部２１、第１のアドレス記憶部２２及び第１のフレームバッファ２３を有する。ここで、高速転送処理部２１はＣＰＵ２内の構成であり、ＣＰＵ２内のプログラムメモリに記憶されているプログラムに従ってソフトウェア的に処理するものである。
【００１７】
高速転送処理部２１は、ＭＡＣアドレスやＩＰアドレス等のパケットヘッダを検査することによって、高速転送（高速ブリッジ転送）の設定がなされているか否かを判定し、高速転送の設定がなされている場合には、そのフレームのヘッダを変換して、フレームの高速転送を行うものである。高速転送の設定がなされていないフレームを受信した場合には、高速転送処理部２１は、そのフレームをＡＰ１０に転送する。高速転送処理部２１は、高速転送の設定がなされているか否かの判定や、フレームヘッダの変換には、第１のアドレス記憶部２２に保持された情報を利用する。
【００１８】
また、高速転送処理部２１は、フレームを転送する際、その転送フレームをどのソフトウェアキュー（Ｓｏｆｔｗａｒｅ  ｑｕｅｕｅ）にキューイングするかを決定するのに、第１のアドレス記憶部２２の後述するソフトウェアキュー番号の情報を利用する。このようなキューイング処理などを通じて、設定されたレートにシェーピングすることも可能である。
【００１９】
図２は、高速転送処理部２１がキューイングを制御するソフトウェアキューの説明図である。なお、フレームのデータ自体は、第１のフレームバッファ２３に格納されるが、フレームの先入れ先出しを制御するためのフレーム特定情報だけをキューイングしたソフトウェアキューは高速転送処理部２１内に設けられる。
【００２０】
ＷＡＮポート若しくはＬＡＮポートから入力され、内部スイッチ３を介して、高速転送処理部２１に与えられたフレーム（の情報）は、目的側のＷＡＮポート若しくはＬＡＮポートに対応したソフトウェアキューＳＱ０〜ＳＱＮにキューイングされ、ソフトウェアキューＳＱ０〜ＳＱＮから出力されたフレームは、各ソフトウェアキューＳＱ０〜ＳＱＮにそれぞれ対応するシェーパ（Ｓｈａｐｅｒ）ＳＨ０〜ＳＨＮに与えられ、シェーパＳＨ０〜ＳＨＮによって、送信帯域（レート）の設定値に応じて送信タイミングが制御され、シェーパＳＨ０〜ＳＨＮから出力されたフレームは、内部スイッチ３を介して、目的側のＷＡＮポート若しくはＬＡＮポートに与えられる。
【００２１】
ソフトウェアキューＳＱ０及びＳＱ１がシェーパＳＨ０を共有しているように、複数のソフトウェアキュー（例えば優先度が異なるソフトウェアキュー）で１つのシェーパを共有することも可能である
また、各ソフトウェアキューＳＱ０〜ＳＱＮには優先度を設定することが可能で、設定された優先度に応じて、フレーム転送することが可能となる。
【００２２】
図３は、ソフトウェアキューに対する優先度の設定例を示す説明図である。図３の例は、入出力ポートとして、１Ｇｂｐｓ、１００Ｍｂｐｓ、１０Ｍｂｐｓに設定可能な４つのＬＡＮポート＃１〜＃４と、１Ｇｂｐｓに固定であって設定不可の１つのＷＡＮポートを有し、フレームの優先度は、ＩＰヘッダに含まれているＤＳＣＰ（Ｄｉｆｆｅｒｅｎｔｉａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｃｏｄｅ  Ｐｏｉｎｔ）値によって４段階に設定されており、シェーパは、５つの入出力ポートに対応して５つ設けられている例である。ソフトウェアキューの数は、入出力ポートの数と、優先度の段階とを乗算した２０である。図３の１行目Ｌ１は、ソフトウェアキュー「０」に関する設定を記述している。ソフトウェアキュー「０」は、ＷＡＮポート宛てのフレームのうち、ＤＳＣＰ値が「４６」の最低優先のフレームをキューイングするものであり、これに対応するシェーパは存在していない。また、図３の８行目Ｌ８は、ソフトウェアキュー「７」に関する設定を記述している。ソフトウェアキュー「７」は、ＬＡＮポート＃１宛てのフレームのうち、ＤＳＣＰ値が「４６」、「３２」及び「８」以外の値である最高優先のフレームをキューイングするものであり、これに対応するシェーパはシェーパ「１」であって、このシェーパ「１」はシェーピング帯域として、０、１００Ｍｂｐｓ、１０Ｍｂｐｓに設定可能なものである。
【００２３】
図３の５行目Ｌ５〜Ｌ８に示すように、同じＬＡＮポート＃１宛てのフレームをキューイングするソフトウェアキューの番号は、「４」、「５」、「６」、「７」のように連番となっており、「最低優先」、「低優先」、「高優先」、「最高優先」の４段階の優先度を、「０」、「１」、「２」、「３」と数値化した場合、「低優先」、「高優先」、「最高優先」のフレームをキューイングするソフトウェアキューの番号「５」、「６」、「７」は、「最低優先」のフレームをキューイングするソフトウェアキューの番号「４」に優先度数値「１」、「２」、「３」を加算したものとなっている。後述する第２の実施形態では、このようなソフトウェアキューの番号の割り付けを利用している。
【００２４】
図３に示すような設定が、高速転送処理部２１に対して予めなされ、設定内容に応じて、高速転送処理部２１がキューング処理やシェーピング処理を制御する。
【００２５】
高速転送処理部２１は、ＭＡＣアドレスやＩＰアドレス等のパケットヘッダを検査することによって、高速転送の設定がなされているか否かを判定し、高速転送の設定がなされている場合には、そのフレームのヘッダを変換して、フレームの高速転送を行う。高速転送の設定がなされていないフレームを受信した場合には、高速転送処理部２１は、そのフレームをＡＰ１０に転送する。
【００２６】
第１のアドレス記憶部２２は、ＦＰ２０が高速転送処理すべきフレームの情報を保持しているものである。第１のアドレス記憶部２２の記憶単位であるエントリは、［１］宛先ＭＡＣアドレス、［２］送信元ＭＡＣアドレス、［３］宛先ＩＰアドレス、［４］送信元ＩＰアドレス、［５］プロトコル、［６］宛先ポート、［７］送信元ポート、［８］イーサタイプ、［９］入力インタフェース、［１０］出力インタフェース、［１１］ソフトウェアキュー番号、［１２］ハッシュ値などの項目を有する。
【００２７】
プロトコルは、ＴＣＰ、ＵＤＰ等を規定している。イーサタイプは、ＩＰｖ４なのか、ＩＰｖ６なのか等を判定するためのものであり、この項目は、あってもなくても良い。入力インタフェースは、どのインタフェースから入ってきたものなのかを判定するために用いるものである。出力インタフェースは、どのインタフェースヘ転送すべきなのかを判定するために用いるものである。ソフトウェアキュー番号は、上述した［１］〜［１０］の項目と一致するフレームをどのソフトウェアキュー番号のキューにキューイングするかを指定するものである。ハッシュ値は、第１のアドレス記憶部２２で採用しているテーブルに対する検索速度を向上させるためものの値であり、テーブル内のエントリを一意に決めることができれば、上述した［１］〜［１１］の全て又は一部の項目の値をハッシュ値の算出に使っても良い。ハッシュ値は、あってもなくても良いものである。
【００２８】
以下、エントリの設定例を説明する。但し、以下では、項３］宛先ＩＰアドレス、［４］送信元ＩＰアドレス、［８］イーサタイプ、［９］入力インタフェース、［１０］出力インタフェースについての設定内容のみ言及する。
【００２９】
例えば、有線ＬＡＮ端末Ａと有線ＷＡＮ端末Ｂが、当該転送処理装置１を有する通信装置に接続されており、ＩＰｖ４のフレームを送受信するとする。この場合、下記のように双方向の２エントリが、第１のアドレス記憶部２２に記述されることになる。
【００３０】
［端末Ｂ→端末Ａのエントリ］では、宛先ＩＰアドレス＝端末Ａ、送信元ＩＰアドレス＝端末Ｂ、イーサタイプ＝ＩＰｖ４、入力インタフェース＝ＷＡＮ、出力インタフェース＝ＬＡＮが記述される。
【００３１】
［端末Ａ→端末Ｂのエントリ］では、宛先ＩＰアドレス＝端末Ｂ、送信元ＩＰアドレス＝端末Ａ、イーサタイプ＝ＩＰｖ４、入力インタフェース＝ＬＡＮ、出力インタフェース＝ＷＡＮが記述される。
【００３２】
また例えば、有線ＬＡＮ端末Ａと有線ＷＡＮ端末Ｂが、当該転送処理装置１を有する通信装置に接続されており、ＩＰｖ６のフレームを送受信するとする。この場合、下記のように双方向のそれぞれに、イーサタイプが異なる２エントリずつの計４エントリが、第１のアドレス記憶部２２に記述されることになる。
【００３３】
［端末Ｂ→端末Ａの第１のエントリ］では、宛先ＩＰアドレス＝端末Ａ、送信元ＩＰアドレス＝端末Ｂ、イーサタイプ＝ＩＰｖ４、入力インタフェース＝ＷＡＮ、出力インタフェース＝ＬＡＮが記述される。
【００３４】
［端末Ａ→端末Ｂの第１のエントリ］では、宛先ＩＰアドレス＝端末Ｂ、送信元ＩＰアドレス＝端末Ａ、イーサタイプ＝ＩＰｖ４、入力インタフェース＝ＬＡＮ、出力インタフェース＝ＷＡＮが記述される。
【００３５】
［端末Ｂ→端末Ａの第２のエントリ］では、宛先ＩＰアドレス＝端末Ａ、送信元ＩＰアドレス＝端末Ｂ、イーサタイプ＝ＩＰｖ６、入力インタフェース＝ＷＡＮ、出力インタフェース＝ＬＡＮが記述される。
【００３６】
［端末Ａ→端末Ｂの第２のエントリ］では、宛先ＩＰアドレス＝端末Ｂ、送信元ＩＰアドレス＝端末Ａ、イーサタイプ＝ＩＰｖ６、入力インタフェース＝ＬＡＮ、出力インタフェース＝ＷＡＮが記述される。
【００３７】
第１のフレームバッファ２３は、高速転送処理部２１がフレームを転送する際、一時的にフレームデータを保存するバッファである。ソフトウェアキューにキューイングされたフレームは、この第１のフレームバッファ２３に保持される。ソフトウェアキューは、上述したように、フレームの優先度毎や、フレームの転送方向毎に複数持たせることが可能である。第１のフレームバッファ２３としては、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓ  Ｍｅｍｏｒｙ）を適用でき、動的な領域確保が可能なため、各ソフトウェアキューのサイズをコンフィグレーションすることが可能である。
【００３８】
ＡＰ１０は、ブリッジ処理部１１、第２のアドレス記憶部１２及びオフロード設定処理部１３を有する。ここで、ブリッジ処理部１１及びオフロード設定処理部１３はＣＰＵ２内の構成であり、ＣＰＵ２内のプログラムメモリに記憶されているプログラムに従ってソフトウェア的に処理するものである。
【００３９】
ブリッジ処理部１１は、例えば、Ｌｉｎｕｘカーネルのネットワークスタック内のブリッジ処理部が該当し、フレームの転送を行うものである。ブリッジ処理部１１は、内蔵するＭＡＣテーブルリストを検索し、フレームの宛先ＭＡＣと比較を行うことで出力先インタフェースの決定を行い、ブリッジ転送を行う。また、ブリッジ処理部１１は、第２のアドレス記憶部１２に保持されているエントリの各エージングタイマを監視し、一定の時間が経過した場合に、そのエントリを削除する機能を有する。
【００４０】
図４は、高速転送処理部２１及びブリッジ処理部１１が転送対象とするフレームの説明図である。
【００４１】
フレームは、いずれかの入出力ポートから入力され、高速転送処理部２１で転送処理されて他の入出力ポートに出力される高速転送フレームと、いずれかの入出力ポートから入力され、高速転送処理部２１を介してブリッジ処理部１１に与えられ、ブリッジ処理部１１で転送処理されて高速転送処理部２１を介して他の入出力ポートに出力される例外フレームとがある。
【００４２】
例外フレームは、（１）自装置発のフレーム若しくは自装置宛のフレーム、（２）ＦＰ２０の高速転送に対応していない種類のパケット（ブロードキャストパケット、マルチキャストパケット、制御用パケットであるＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）パケットなど）、（３）後述する高速転送の設定（オフロード設定）がされる前のフレーム、などである。この例外フレームは、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバなどの様々なアプリケーションも動作することを想定しているＡＰ１０上で転送されるため、比較的低速な転送能力しかなく、フレーム転送処理そのものがそれらのアプリケーションの処理遅延を引き起こしたり、フレーム転送性能の低下／転送遅延を招く可能性がある。
【００４３】
一方、高速転送フレームは、最小のＡＰ負荷で、ＦＰ２０による高速転送を実現することができる。そのため、後述のように、高速転送の設定（オフロード設定）を可能とし、例外フレームの一部を高速転送フレームに変換し得るようにしている。
【００４４】
第２のアドレス記憶部１２は、ＡＰ１０のネットワークスタックが持っている各ストリーム情報を保持するテーブルである。テーブルのエントリは、［１］宛先ＭＡＣアドレス、［２］送信元ＭＡＣアドレス、［３］宛先ＩＰアドレス、［４］送信元ＩＰアドレス、［５］プロトコル、［６］宛先ポート、［７］送信元ポート、［８］イーサタイプ、［９］入力インタフェース、［１０］出力インタフェース、［１１］ソフトウェアキュー番号、［１２］ハッシュ値などの項目を有する。
【００４５】
オフロード設定処理部１３は、ブリッジ処理部１１からの要求を受け、ブリッジ転送しようとしているフレームが、ＦＰ２０にオフロード設定が可能か否かを判定するものである。すなわち、オフロード設定処理部１３は、ブリッジ処理部１１が実行しようとする転送処理を、ＦＰ２０側で実行して、ブリッジ処理部１１の処理を軽減できるか否かを判定するものである。例えば、転送フレームが下記のフレームＦ１、Ｆ２の場合には、オフロード設定処理部１３は、オフロード不可と判定する。
【００４６】
Ｆ１：自装置発のフレーム若しくは自装置宛のフレーム
Ｆ２：ＦＰ２０での高速転送に対応していない種類のパケット（ブロードキャストパケット、マルチキャストパケット、ＩＣＭＰパケットなど）
オフロード設定処理部１３は、オフロード設定可能と判定した場合には、ＦＰ２０（正確には、第１のアドレス記憶部２２）にオフロード設定を行う。オフロード設定処理部１３は、オフロード設定不可能と判定した場合には何らの処理も実行しない。
【００４７】
オフロード設定処理部１３は、オフロードの重複設定を避けるため、第２のアドレス記憶部１２の各エントリが既にＦＰ２０へオフロード設定されているかどうかも保持している。
【００４８】
また、オフロード設定処理部１３は、下記の（イ）及び（ロ）の判定処理を行い、その結果に応じ、第２のアドレス記憶部１２への保存や、オフロード設定を行う。
【００４９】
（イ）転送フレームが、どのポートヘ転送されるべきかを判定する。例えば、内部スイッチ３のＭＡＣアドレス記憶部３２の情報と、その転送フレームの宛先ＭＡＣアドレスを照合することで判定する。
【００５０】
（ロ）転送フレームが、どの優先度かを判定する。例えば、フレームのヘッダ情報（ＣｏＳ（Ｃｌａｓｓ  ｏｆ  Ｓｅｒｖｉｃｅ）値、ＤＳＣＰ値、ＩＰアドレス、ＭＡＣアドレス、ポート番号等）を照合することで判定する。
【００５１】
さらに、オフロード設定処理部１３は、各ＬＡＮポート／ＷＡＮポートがリンクアップした際、割り込みを受信することで、そのリンク速度を検知し、高速転送処理部２１へ通知する機能を有する。こうすることで、ＦＰ２０の高速転送処理部２１が、各ポート宛のフレームをリンク速度にあわせてシェーピングすることが可能となる。高速転送処理部２１は、例えば、リンク速度の範囲と、シェーピング帯域とを対応付けた変換テーブルを内蔵し、リンク速度に応じたシェーピング帯域を設定することができる。
【００５２】
内部スイッチ３は、第２のフレームバッファ３１とＭＡＣアドレス記憶部３２とを有する。
【００５３】
第２のフレームバッファ３１は、内部スイッチ３がフレームを転送する際、一時的にフレームデータを保存するバッファである。ＦＰ２０の第１のフレームバッファ２３と比較すると、小容量であり、バッファサイズのコンフィグレーションを行うことができない。そのため、第１の実施形態では、転送フレームのキューイングにＦＰ２０の第１のフレームバッファ２３を利用することとしている。
【００５４】
ＭＡＣアドレス記憶部３２は、ＡＰ１０内のブリッジ処理部１１が有する下記のネイバー情報を保持するテーブルである。ネイバー情報は、例えば、［１］ＭＡＣアドレス（受信フレームの送信元ＭＡＣアドレス）、［２］ＬＡＮポート／ＷＡＮポートの番号（フレームを受信したＬＡＮポート／ＷＡＮポートの番号；あるＭＡＣアドレスを持つ端末がどのポートに接続されているかを判定するのに使う）、［３］エージングタイマ（一定期間ごとにインクリメントされるタイマ値；一定時間経過後、この値が予め設定された閾値を越えると、このエントリはエージング（削除）される）、［４］スタティックフラグ（ユーザ等に静的に設定されたエントリか否かを示すフラグ；静的に設定されたエントリをフラグＯＮとしエージング対象外とする）、［５］ハッシュ値（テーブル検索速度向上のために設けられたものであり、テーブル内のエントリを一意に決めることができれば、上記の項目のいくつかの値をハッシュ値算出に使うようにしても良い）などからなる。なお、スタティックフラグやハッシュ値はなくても良いものである。
【００５５】
（Ａ−２）第１の実施形態の動作
第１の実施形態の転送処理装置１は、ソフトウェアキューを適用していること、キューイングされているフレームのデータ自体は、ＦＰ２０の第１のフレームバッファ２３に格納することを１つの特徴としている。
【００５６】
また、転送フレームをどのソフトウェアキューにどのように割り当てるかも特徴をなしており、シェーピングレートの設定も特徴をなしている。以下では、ソフトウェアキューへの割当て動作や、シェーピングレートの設定動作を順次説明する。
【００５７】
ます、フレーム転送時にフレームの宛先ポートを自動的に判定し、自動的に各ソフトウェアキューにキューイングされるように割り当てる動作を、図５のシーケンス図を参照しながら説明する。なお、上述した図３では、優先度も割り当てる動作に影響するように記載しているが、優先度を利用した割当てについては、後述する第２の実施形態の動作の項で説明する。
【００５８】
ブリッジ処理部１１は、フレームの転送を検出すると（ステップ１００）、そのフレームのヘッダ情報を含むオフロード設定要求を、オフロード設定処理部１３に送出する（ステップ１０１）。
【００５９】
このとき、オフロード設定処理部１３は、ブリッジ転送しようとしているフレームが、オフロード設定が可能であることを確認した後、ＭＡＣアドレス記憶部３２の情報を得て（ステップ１０２）、その転送フレームの宛先ＭＡＣアドレスを照合することで、宛先ポート番号を得、その結果、キューイングするソフトウェアキューの番号を取得する（ステップ１０３）。
【００６０】
その後、オフロード設定処理部１３は、上述した取得内容などに応じ、第２のアドレス記憶部１２へエントリデータを保存させると共に（ステップ１０４）、高速転送処理部２１へ高速転送対象としてのエントリ設定（オフロード設定）を行う（ステップ１０５）。
高速転送処理部２１は、これにより、第１のアドレス記憶部２２に対して、当該フレームを高速転送対象とするエントリ追加を行う（ステップ１０６）。
【００６１】
以上のようにして、フレーム転送時にフレームの宛先ポートを自動的に判定し、自動的に各ソフトウェアキューにキューイングされるように割り当てることができ、バースト耐性を確保することができる。
【００６２】
次に、ソフトウェアキューヘの設定が行われていない状態で、突発的にフレームがバースト的に流れてくる場合に対応できるようにした割当て動作について説明する。上述の場合、まだ、ＦＰ２０の高速転送処理部２１に設定がなされていないため、低速なトラフィック転送しか行うことができないＡＰ１０のブリッジ処理部１１でバースト状のフレームをロスしてしまう可能性がある。そのため、バースト耐性が必要なフレームとは逆方向のフレーム転送時に、予めソフトウェアキューの設定を行うことができるようにして、フレームが突発的かつバースト的に流れてくる場合に対応できるようにした。ここで、バースト耐性が必要なフレームとは、リンク速度の速いポートからリンク速度の遅いポートヘ流れるフレームである。
【００６３】
以下では、バースト耐性を具備したい方向と逆方向のフレーム転送時に、フレームの送信元ポートを自動的に判定し、自動的に各ソフトウェアキューにキューイングされるように割り当てる動作を、図６のシーケンス図を参照しながら説明する。
【００６４】
ブリッジ処理部１１は、バースト耐性を具備したい方向と逆方向のフレームの転送を検出すると（ステップ１５０）、そのフレームのヘッダ情報を含む逆方向のオフロード設定要求を、オフロード設定処理部１３に送出する（ステップ１５１）。
【００６５】
このとき、オフロード設定処理部１３は、ブリッジ転送しようとしているフレームが、オフロード設定が可能であることを確認した後、ＭＡＣアドレス記憶部３２の情報を得て（ステップ１５２）、その転送フレームの送信元ＭＡＣアドレスを照合することで、逆方向についての宛先ポート番号を得、その結果、キューイングするソフトウェアキューの番号を取得する（ステップ１５３）。
【００６６】
その後、オフロード設定処理部１３は、上述した取得内容などに応じ、第２のアドレス記憶部１２へ逆方向のエントリデータを保存させると共に（ステップ１５４）、高速転送処理部２１へ逆方向の高速転送対象としてのエントリ設定（オフロード設定）を行う（ステップ１５５）。高速転送処理部２１は、これにより、第１のアドレス記憶部２２に対して、当該フレームと逆方向に流れるフレームを高速転送対象とするエントリ追加を行う（ステップ１５６）。
【００６７】
次に、各ＬＡＮポート／ＷＡＮポートのリンクアップを検出した際、自動的に関連するシェーパのシェーピング帯域（シェーピングレート）を設定する動作を、図７のシーケンス図を参照しながら説明する。
【００６８】
内部スイッチ３は、ある入出力ポートのリンクアップを検出すると（ステップ２００）、オフロード設定処理部１３へリンクアップ割り込み通知を送付する（ステップ２０１）。このとき、オフロード設定処理部１３は、その入出力ポートのリンクアップを認識し、内部スイッチ３の通信速度に関するレジスタ値を読み込むことで（ステップ２０２）、その入出力ポートのリンク速度を取得する（ステップ２０３）。そして、オフロード設定処理部１３は、取得したリンク速度から、ＦＰ２０の高速転送処理部２１のシェーパに設定するシェーピングレートを決定し（ステップ２０４）、高速転送処理部２１のシェーパに設定させる。これにより、リンク速度に応じたフレーム高速転送を行うことができるようになる。
【００６９】
（Ａ−３）第１の実施形態の効果
以上のように、第１の実施形態によれば、従来ではハードウェア構成を変更することでしか対応できなかったバッファサイズを、ソフトウェアキューを用いて動的に確保することで、ハードウェア変更なしで、より大きなバースト耐性を有することができる。
【００７０】
また、第１の実施形態によれば、ソフトウェアキューヘの設定が行われていない状態で、突発的にバースト状にフレームが流れてくる場合も、バースト耐性が必要なフレームとは逆方向のフレーム転送時に、予めソフトウェアキューの設定を行うようにしたので、フレームロスなしでバースト状のフレームを転送することができる。
【００７１】
さらに、第１の実施形態によれば、オートネゴシエーションにより動的にリンク速度が変更された場合も、そのリンク速度の変更が各ソフトウェアキューに接続されたシェーパのシェーピングレートヘ動的に反映させるので、フレームロスなしでのバーストフレーム転送が可能となる。
【００７２】
（Ｂ）第２の実施形態
次に、本発明による転送処理装置の第２の実施形態を、図面を参照しながら説明する。
【００７３】
第２の実施形態の転送処理装置も、その構成は、第１の実施形態の説明で用いた図１で表すことができる。
【００７４】
第２の実施形態の転送処理装置は、フレーム転送時にフレームの優先度を自動的に判定し、自動的に各ソフトウェアキューにキューイングされるように割り当てることで、バースト耐性を確保しつつ、自由な優先制御を行うことができるようにしたものである。
【００７５】
以下では、フレーム転送時にフレームの優先度を自動的に判定し、自動的に各ソフトウェアキューにキューイングされるように割り当てる動作を、図８のシーケンス図を参照しながら説明する。
【００７６】
ブリッジ処理部１１は、フレームの転送を検出すると（ステップ２５０）、そのフレームのヘッダ情報を含むオフロード設定要求を、オフロード設定処理部１３に送出する（ステップ２５１）。
【００７７】
このとき、オフロード設定処理部１３は、ブリッジ転送しようとしているフレームが、オフロード設定が可能であることを確認した後、ＭＡＣアドレス記憶部３２の情報を得て（ステップ２５２）、その転送フレームの宛先ＭＡＣアドレスを照合することで、宛先ポート番号を得、その結果、ソフトウェアキューの番号を取得する（ステップ２５３）。
【００７８】
その後、オフロード設定処理部１３は、フレームのＤＳＣＰ値から優先度を算出し、オフセットとして、ステップ２５３で取得したソフトウェアキューの番号に加算して、最終的に利用するソフトウェアキューの番号を得る（ステップ２５４）。例えば、ステップ２５３で得られたソフトウェアキューの番号が「４」で優先度が「３」であれば、最終的に利用するソフトウェアキューの番号として「７」（＝４＋３）を得る。
【００７９】
そして、オフロード設定処理部１３は、上述したようにして取得した内容などに応じ、第２のアドレス記憶部１２へエントリデータを保存させると共に（ステップ２５５）、高速転送処理部２１へ高速転送対象としてのエントリ設定（オフロード設定）を行う（ステップ２５６）。高速転送処理部２１は、これにより、第１のアドレス記憶部２２に対して、当該フレームを高速転送対象とするエントリ追加を行う（ステップ２５７）。
【００８０】
以上のように、第２の実施形態によれば、従来ではハードウェア（内部スイッチ）で行っていたバースト耐性及び優先制御機能を、ソフトウェア上で具備することができる。
【００８１】
（Ｃ）他の実施形態
上記各実施形態の説明においても、種々変形実施形態に言及したが、さらに、以下に例示するような変形実施形態を挙げることができる。
【００８２】
上記各実施形態では、ＦＰ２０の第１のフレームバッファ２３にＤＲＡＭを適用したものを示したが、フレームを保持できる記憶媒体であれば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）等、他の記憶媒体であっても良い。
【００８３】
上記各実施形態では、「内部スイッチ（内部ＳＷ）」を装置上に配置し、全ＬＡＮポートは１本のＣＰＵのインタフェースを経由して接続される構成を示したが、フレームがどのＬＡＮポート／ＷＡＮポートで受信したのかを判定することができれば、各ＬＡＮポート／ＷＡＮポートが独立したインタフェース経由でＣＰＵに接続するようにしても良い。
【００８４】
上記各実施形態では、「ＡＰ」が１つの場合を示したが、２つ以上あっても良く、同様に、「ＦＰ」も１つに限定されず、２つ以上あっても良い。
【００８５】
上記第２の実施形態では、フレームの宛先ポートと優先度との組み合わせで、適用するソフトウェアキューを決めるものを示したが、フレームの優先度だけで適用するソフトウェアキューを決めるようにしても良い。
【００８６】
上記第２の実施形態では、フレームの宛先ポートに応じて、適用するソフトウェアキューを数個に絞った上で、フレームの優先度に応じて、最終的に適用する１つのソフトウェアキューを決定するものを示したが、逆に、フレームの優先度に応じて、適用するソフトウェアキューを数個に絞った上で、フレームの宛先ポートに応じて、最終的に適用する１つのソフトウェアキューを決定するようにしても良い。
【符号の説明】
【００８７】
１…転送処理装置、２…ＣＰＵ、３…内部スイッチ（内部ＳＷ）、１０…アプリケーション用プロセッサ（ＡＰ）、１１…ブリッジ処理部、１２…第２のアドレス記憶部、１３…オフロード設定処理部、２０…ファストパス用プロセッサ（ＦＰ）、２１…高速転送処理部、２２…第１のアドレス記憶部、２３…第１のフレームバッファ、３１…第２のフレームバッファ、３２…ＭＡＣアドレス記憶部。
【図１】
0005817458.tif 000002
【図２】
0005817458.tif 000003
【図３】
0005817458.tif 000004
【図４】
0005817458.tif 000005
【図５】
0005817458.tif 000006
【図６】
0005817458.tif 000007
【図７】
0005817458.tif 000008
【図８】
0005817458.tif 000009