(57)【要約】【課題】クロック差が発生しうるパケット転送装置間において、送信バッファにおけるバッファあふれを防ぎ、ＭＡＣフレームの破棄を防ぐ。【解決手段】受信したＭＡＣフレームから送信クロック周波数を抽出して装置内クロック周波数とのクロック差を比較する。ＭＡＣフレームのプリアンブルにフレームを受信したポートの番号を埋め込み、送信側でどの受信ポートから到来したＭＡＣフレームであるかを識別する。制御部１２１４は、ポート番号に対応するクロック差に基づき、装置内クロック周波数よりも速い送信クロック周波数を持つＭＡＣフレームの到来を判断し、且つ、送信バッファ（１２０８）の空き容量が予め定められたしきい値以下になった場合に、送信バッファ（１２０８）から出力されるＭＡＣフレーム間の間隔（ＩＦＧ）をクロック差に応じた間隔に変更し、ＭＡＣフレームの出力タイミングを早める。【選択図】図１２
2010166138.tif 000002
【特許請求の範囲】
【請求項１】
送信するフレーム間に予め定められた長さのギャップパターンを挿入して出力するパケット転送装置において、
フレームを送受信するための回線収容部と、
前記回線収容部を介して受信したフレームを蓄積する受信バッファと、
前記受信バッファに蓄積されたフレームを転送するパケット処理部と、
前記パケット処理部から転送されたフレームを蓄積する送信バッファと、
フレーム間に挿入するギャップパターンを生成するギャップ生成部と、
前記送信バッファに蓄積されたフレーム及び前記ギャップ生成部で生成されたギャップパターンを選択し、回線収容部を介して出力するセレクタと、
前記送信バッファの空き容量を監視し、該空き容量が予め定められた閾値以下になると、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする制御部と
を備えた前記パケット転送装置。
【請求項２】
受信したフレームのクロック周波数を抽出するクロック抽出部と、
前記クロック抽出部で抽出されたクロック周波数と、装置内クロックの周波数を比較するクロック比較部と
をさらに備え、
前記制御部は、抽出されたクロック周波数が装置内クロックの周波数より速く、かつ、前記送信バッファの空き容量が予め定められた閾値以下の場合に、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする請求項１に記載のパケット転送装置。
【請求項３】
抽出されたクロック周波数と装置内クロックの周波数が記憶された、又は、抽出されたクロック周波数と装置内クロックの周波数との差が記憶されたクロック情報記憶部
をさらに備え、
前記制御部は、前記送信バッファの空き容量が前記閾値以下になると前記クロック情報記憶部を参照し、抽出されたクロック周波数が装置内クロックの周波数より速い場合に、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする請求項２に記載のパケット転送装置。
【請求項４】
前記回線収容部が有する所定のポートを介して受信されたフレームのクロック周波数を抽出するクロック抽出部と、
前記クロック抽出部で抽出されたクロック周波数と、装置内クロックの周波数を比較するクロック比較部と、
前記ポートを識別するポート識別子毎に、抽出されたクロック周波数と装置内クロックの周波数を含むクロック情報、又は、抽出されたクロック周波数と装置内クロックの周波数との差を含むクロック情報が記憶されたクロック情報記憶部と、
前記ポートを介して受信されたフレームに、該ポートのポート識別子を付加するポート識別子付加部と、
前記パケット処理部から転送されたフレームに付加されたポート識別子を、前記制御部に出力するポート識別部と
をさらに備え、
前記制御部は、前記ポート識別部からポート識別子を入力し、該ポート識別子に基づき前記クロック情報記憶部を参照し、対応するクロック情報に従い該ポート識別子が示すポートで受信されたフレームのクロック周波数が装置内クロックの周波数より速いか判断し、速い場合に、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする請求項１に記載のパケット転送装置。
【請求項５】
前記制御部は、前記送信バッファの空き容量が、前記閾値以上の第２の閾値より大きくなると、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを予め定められた元の長さに戻す請求項１に記載のパケット転送装置。
【請求項６】
前記送信バッファは、バッファの空き容量を前記制御部に通知する請求項１に記載のパケット転送装置。
【請求項７】
前記ギャップパターンの長さは、許容されるクロック差のうち最大に偏差したクロック周波数と最小に偏差したクロック周波数に基づき定められる請求項１に記載のパケット転送装置。
【請求項８】
前記装置内クロックを発生する装置内クロック発生部をさらに備えた請求項２に記載のパケット転送装置。
【請求項９】
バッファにフレームが書き込まれる速度と読み出される速度との差が許容され、該バッファから読み出されるフレーム間に予め定められた長さのギャップパターンを挿入して出力するシステムにおけるバッファ制御方法であって、
フレームをバッファに蓄積するステップと、
フレーム間に挿入するギャップパターンを生成するステップと、
バッファの空き容量を監視するステップと、
該空き容量が予め定められた閾値以下になると、生成されたギャップパターンの長さを前記予め定められた長さより短くし、バッファからのフレームの読み出しを速くするステップと
を含むバッファ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ制御方法およびパケット転送装置に係り、特にイーサネット（登録商標）を用いて通信を行うバッファ制御方法およびパケット転送装置に関する。
【背景技術】
【０００２】
イーサネット（登録商標）を用いた通信において、現在１Ｍ〜１０Ｇｂｉｔ／ｓまでの伝送速度が規格化され、４０Ｇｉｔ／ｓまたは１００Ｇｂｉｔ／ｓについても規格化が進行している。イーサネット（登録商標）通信に用いられる媒体としては、ツイストペア線や光ファイバーが用いられ、規格で定められた伝送速度で、媒体に適するように符号化されたデジタル信号（以後、ベースバンド信号と呼ぶ。）で直接送受信される。イーサネット（登録商標）を用いた通信は可変長のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）フレーム単位で行われ、送信側が任意のタイミングでＭＡＣフレームを送信する非同期通信となっている（例えば、非特許文献１参照）。
上述の通り、ＭＡＣフレームの送受信は非同期で行われるため、送信側の装置と受信側の装置でクロック差が発生する場合がある。イーサネット（登録商標）においては、±１００ｐｐｍのクロック精度が規定されているため、最大で２００ｐｐｍのクロック差が発生する場合がある。送信側の装置と受信側の装置でクロック差が発生したとき、送信側は自身の装置内クロックに従ってＭＡＣフレームを送信するだけなのでクロック差があっても問題は発生しないが、受信側の装置内クロックが送信側の装置内クロックよりも遅い場合、受信側の装置内の受信バッファがあふれる可能性がある。例えば、１０Ｇｂｉｔ／ｓの伝送速度の場合、１秒間で２００万ビット（約１．９Ｍバイト）のデータが受信バッファにたまってしまい、最終的に受信バッファにＭＡＣフレーム等のデータを書き込めなくなる場合がある。そのため、イーサネット（登録商標）では連続して送信するＭＡＣフレーム間にインターフレームギャップ（Ｉｎｔｅｒ  Ｆｒａｍｅ  Ｇａｐ、以下、ＩＦＧ）と呼ばれるアイドル区間を最低１２バイト分設け、受信バッファがあふれそうになった場合、受信バッファ内のＩＦＧからデータを削除して、受信バッファ内のデータを詰めることによりバッファあふれを防ぐ。
また、送信側の装置と受信側の装置のクロック差が少ない場合であっても、長期間にわたる通信ではクロック差により受信バッファに蓄積されるデータ量が積み重なりデータスリップが発生する場合がある。例えば、長期間にわたってクロック差が発生し続けると、いずれ受信バッファにおいてバッファあふれが起こり、データを受信バッファに書き込めずにデータを損失する場合がある。そこで、クロック偏差に応じて送出するデータ間隔を増減することによって、データスリップの発生を防ぐ方法がある。例えば、特許文献１に、受信クロック変動制御部により読み出し受信クロックの周波数を中心周波数に追い込み、データスリップが発生しないように制御し、書き込み受信部による受信バッファへのデータの書き込みと、読み出し受信部による受信バッファからのデータの読み出しとが擬似的に同期がとれた状態となり、安定した信号を送出することが開示されている。
また、特許文献２には、例えば、クロックのタイミングの修正やスキューの調整を行うために、バッファの信号蓄積量を監視し、検出した信号蓄積量の増減に応じて、インターフレームギャップに対するアイドルバイトの挿入または抜き取りを実施することが開示されている。
さらに、特許文献３には、例えば、受信クロックと送信クロックとの周波数差によってＦＩＦＯバッファの蓄積量がそのＦＩＦＯバッファの上限を超えることがないように、また、下限を下回ることがないように、アイドル符号のセットの挿抜を行うことが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３７８７１０８号公報
【特許文献２】特開２００４−２１５１３８号公報
【特許文献３】特開２００２−２２３２４５号公報
【非特許文献】
【０００４】
【非特許文献１】ＩＥＥＥ  Ｓｔｄ  ８０２．３ＴＭ−２００５  Ｃａｒｒｉｅｒ  ｓｅｎｓｅ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ  ｗｉｔｈ  ｃｏｌｌｉｓｉｏｎ  ｄｅｔｅｃｔｉｏｎ  （ＣＳＭＡ／ＣＤ）  ａｃｃｅｓｓ  ｍｅｔｈｏｄ  ａｎｄ  ｐｈｙｓｉｃａｌ  ｌａｙｅｒ  ｓｐｅｃｉｆｉｃａｔｉｏｎｓ
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の転送装置では、受信したＭＡＣフレームを例えば他の装置へ転送するとき、転送元の伝送速度が転送先への伝送速度より速い場合、転送するＭＡＣフレームをバッファリングするための送信バッファについてもバッファあふれが発生する可能性がある。
また、特許文献１に示す技術のように、送信間隔を整えることでデータスリップを回避する方法では、例えば、急激なクロック変動により一定時間あたりに書き込むデータ量が急増して、瞬間的なバッファあふれが発生した際には、対応できない場合がある。
また、イーサネット（登録商標）規格では、バッファあふれを回避するためのフロー制御が規定されており、送信側へ送信停止要求をすることが可能だが、送信を停止している間等の待ち時間に比例してデータ遅延が発生し及びスループットが低下する場合がある。
また、転送装置が受けている各ＭＡＣフレームのクロック（各転送元の伝送速度）の内、偏差が最大（最速）のクロックで転送装置を駆動すればバッファあふれは発生しないが、元々±１００ｐｐｍという低精度なクロックの精度であるため、現状最速なクロックが今後も最速のクロックであるとは限らず、その後さらにクロック差が生じる場合がある。また、例えば、受信側の装置内クロックを動的に変更可能にした場合でも、クロック変動により動作が不安定になる可能性があり、また一般的に動的に動作クロックを変更する回路は複雑で高価なものになる。
本発明は、以上の点に鑑み、クロック差が発生しうるパケット転送装置間において、送信バッファにおけるバッファあふれを防ぎ、ＭＡＣフレームの破棄を防ぐことを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するために、本発明は、例えば、受信したＭＡＣフレームから送信側の装置内クロックを抽出して受信側の装置内クロックとのクロック差を比較する手段と、ＭＡＣフレームのプリアンブルに受信したポートの識別番号を埋め込み、またどの受信ポートから到来したＭＡＣフレームであるかを識別する手段と、空き容量を通知可能な送信バッファを持ち、受信側の装置内クロックよりも速い送信側の装置内クロックを持つＭＡＣフレームの到来を識別し、送信バッファの空き容量が予め定められたしきい値以下になった場合に、送信バッファから出力されるＭＡＣフレーム間の間隔をクロック差に応じた間隔に変更可能な機能を有することにより、ＭＡＣフレームの出力タイミングを早めることでバッファあふれを防ぐ。
【０００７】
本発明のパケット転送装置は、例えば、
複数の対向装置と接続可能な複数のポートを持ち、前記ポートから受信したベースバンド信号をデジタル信号へ変換および前記ポートへ送信するデジタル信号をベースバンド信号に変換する回線収容部と、前記回線収容部からＭＡＣフレームを受信する受信バッファと、ＭＡＣフレームの処理を実施するＭＡＣ処理部と、前記ＭＡＣ処理部から転送されるＭＡＣフレームの転送処理を行うパケット処理部を持ち、前記パケット処理部から転送先のＭＡＣ処理部を経由して転送されたＭＡＣフレームをバッファリングしバッファ空き容量を通知可能な送信バッファと、ＭＡＣフレーム間に挿入するＩＦＧパターンを生成するＩＦＧ生成部と、ＭＡＣフレームとＩＦＧパターンを選択するセレクタと、それらを制御する制御部を持つパケット転送装置において、受信したＭＡＣフレームは受信バッファでバッファリングした後にＭＡＣ処理部を経由してパケット処理部へと転送され、前記パケット処理部にて転送先と判定されたＭＡＣフレームは送信先のポートに対応したＭＡＣ処理部を経由して送信バッファへ転送され、制御部は前記送信バッファから通知された空き容量から送信バッファあふれが発生すると判断した場合、ＩＦＧ生成部からＭＡＣフレーム間に挿入されるＩＦＧパターンの長さを送信バッファの空き容量に対応して短くすることにより、送信バッファあふれを抑える。
【０００８】
また、本発明の他のパケット転送装置は、例えば、
複数の対向装置と接続可能な複数のポートを持ち、前記ポートから受信したベースバンド信号をデジタル信号へ変換および前記ポートへ送信するデジタル信号をベースバンド信号に変換する回線収容部と、前記回線収容部からＭＡＣフレームを受信する受信バッファと、前記回線収容部から受信したＭＡＣフレームから送信クロックを抽出可能なクロック抽出部と、前記クロック抽出部にて抽出された送信クロックと装置内クロックと比較するクロック比較部と、前記クロック比較部にて比較されたクロック差情報を格納するクロック差テーブルと、ＭＡＣフレームの処理を実施するＭＡＣ処理部と、前記ＭＡＣ処理部から転送されるＭＡＣフレームの転送処理を行うパケット処理部を持ち、前記パケット処理部から転送先のＭＡＣ処理部を経由して転送されたＭＡＣフレームをバッファリングしバッファ空き容量を通知可能な送信バッファと、ＭＡＣフレーム間に挿入するＩＦＧパターンを生成するＩＦＧ生成部と、ＭＡＣフレームとＩＦＧパターンを選択するセレクタと、それらを制御する制御部を持つパケット転送装置において、各受信ポートにて受信されたＭＡＣフレームから抽出した送信クロックと装置内クロックとそれらの差をクロック差テーブルに任意のタイミングで書き出すとともに、受信したＭＡＣフレームは受信バッファでバッファリングした後、前記ＭＡＣ処理部を経由してパケット処理部へと転送され、前記パケット処理部にて転送先と判定されたＭＡＣフレームは送信先のポートに対応したＭＡＣ処理部を経由して送信バッファへ転送され、制御部は前記クロック差テーブルを照会して装置内クロックよりも速いポートからのＭＡＣフレームが到着する可能性があり、かつ送信バッファから通知された空き容量から送信バッファあふれが発生すると判断した場合、ＩＦＧ生成部からＭＡＣフレーム間に挿入されるＩＦＧパターンの長さを送信バッファの空き容量に対応した分短くすることにより、送信バッファあふれを抑える。
【０００９】
さらに、本発明の他のパケット転送装置は、例えば、
複数の対向装置と接続可能な複数のポートを持ち、前記ポートから受信したベースバンド信号をデジタル信号へ変換および前記ポートへ送信するデジタル信号をベースバンド信号に変換する回線収容部と、前記回線収容部からＭＡＣフレームを受信する受信バッファと、前記回線収容部から受信したＭＡＣフレームから送信クロックを抽出可能なクロック抽出部と、前記クロック抽出部にて抽出された送信クロックと装置内クロックと比較するクロック比較部と、前記クロック比較部にて比較されたクロック差情報を格納するクロック差テーブルと、ＭＡＣフレームのプリアンブルに受信ポート番号を付加するポート番号付加部と、ＭＡＣフレームの処理を実施するＭＡＣ処理部と、前記ＭＡＣ処理部から転送されるＭＡＣフレームの転送処理を行うパケット処理部を持ち、前記パケット処理部から転送先のＭＡＣ処理部を経由して転送されたＭＡＣフレームのプリアンブルからポート番号を抽出・削除してポート番号を通知可能なポート番号識別部と、前記ポート番号識別部から転送されたＭＡＣフレームをバッファリングしバッファ空き容量を通知可能な送信バッファと、ＭＡＣフレーム間に挿入するＩＦＧパターンを生成するＩＦＧ生成部と、ＭＡＣフレームとＩＦＧパターンを選択するセレクタと、それらを制御する制御部を持つパケット転送装置において、各受信ポートにて受信されたＭＡＣフレームから抽出した送信クロックと装置内クロックとそれらの差をクロック差テーブルに任意のタイミングで書き出すとともに、受信したＭＡＣフレームは受信バッファでバッファリングした後ポート番号部付与部に転送され、ポート番号付与部では転送されたＭＡＣフレームのプリアンブルに受信したポート番号を書き込んだ後にＭＡＣ処理部を経由してパケット処理部へと転送され、前記パケット処理部にて転送先と判定されたＭＡＣフレームは送信先のポートに対応したＭＡＣ処理部に転送され、前記ＭＡＣ処理部からＭＡＣフレームを転送されたポート番号識別部はＭＡＣフレームからポート番号を削除するとともにそのポート番号情報を制御部へと通知し、前記ポート番号情報を通知された制御部はポート番号を前記クロック差テーブルへ照会し、装置内クロックよりも速いポートからのＭＡＣフレームが到着していると判断でき、かつ送信バッファから通知された空き容量から送信バッファあふれが発生すると判断した場合、ＩＦＧ生成部からＭＡＣフレーム間に挿入されるＩＦＧパターンの長さを送信バッファの空き容量に対応した分短くすることにより、送信バッファあふれを抑える。
【００１０】
本発明の第１の解決手段によると、
送信するフレーム間に予め定められた長さのギャップパターンを挿入して出力するパケット転送装置において、
フレームを送受信するための回線収容部と、
前記回線収容部を介して受信したフレームを蓄積する受信バッファと、
前記受信バッファに蓄積されたフレームを転送するパケット処理部と、
前記パケット処理部から転送されたフレームを蓄積する送信バッファと、
フレーム間に挿入するギャップパターンを生成するギャップ生成部と、
前記送信バッファに蓄積されたフレーム及び前記ギャップ生成部で生成されたギャップパターンを選択し、回線収容部を介して出力するセレクタと、
前記送信バッファの空き容量を監視し、該空き容量が予め定められた閾値以下になると、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする制御部と
を備えた前記パケット転送装置が提供される。
また、上述のパケット転送装置は、
受信したフレームのクロック周波数を抽出するクロック抽出部と、
前記クロック抽出部で抽出されたクロック周波数と、装置内クロックの周波数を比較するクロック比較部と
をさらに備え、
前記制御部は、抽出されたクロック周波数が装置内クロックの周波数より速く、かつ、前記送信バッファの空き容量が予め定められた閾値以下の場合に、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする。
また、上述のパケット転送装置は、
前記回線収容部が有する所定のポートを介して受信されたフレームのクロック周波数を抽出するクロック抽出部と、
前記クロック抽出部で抽出されたクロック周波数と、装置内クロックの周波数を比較するクロック比較部と、
前記ポートを識別するポート識別子毎に、抽出されたクロック周波数と装置内クロックの周波数を含むクロック情報、又は、抽出されたクロック周波数と装置内クロックの周波数との差を含むクロック情報が記憶されたクロック情報記憶部と、
前記ポートを介して受信されたフレームに、該ポートのポート識別子を付加するポート識別子付加部と、
前記パケット処理部から転送されたフレームに付加されたポート識別子を、前記制御部に出力するポート識別部と
をさらに備え、
前記制御部は、前記ポート識別部からポート識別子を入力し、該ポート識別子に基づき前記クロック情報記憶部を参照し、対応するクロック情報に従い該ポート識別子が示すポートで受信されたフレームのクロック周波数が装置内クロックの周波数より速いか判断し、速い場合に、前記セレクタを制御して前記ギャップ生成部から出力するギャップパターンの長さを前記予め定められた長さより短くし、前記送信バッファからのフレームの読み出しを速くする。
【００１１】
本発明の第２の解決手段によると、
バッファにフレームが書き込まれる速度と読み出される速度との差が許容され、該バッファから読み出されるフレーム間に予め定められた長さのギャップパターンを挿入して出力するシステムにおけるバッファ制御方法であって、
フレームをバッファに蓄積するステップと、
フレーム間に挿入するギャップパターンを生成するステップと、
バッファの空き容量を監視するステップと、
該空き容量が予め定められた閾値以下になると、生成されたギャップパターンの長さを前記予め定められた長さより短くし、バッファからのフレームの読み出しを速くするステップと
を含むバッファ制御方法が提供される。
【発明の効果】
【００１２】
本発明によると、クロック差が発生しうるパケット転送装置間において、送信バッファにおけるバッファあふれを防ぎ、ＭＡＣフレームの破棄を防ぐことができる。
【図面の簡単な説明】
【００１３】
【図１】ネットワーク構成の概略を示す図。
【図２】第１の実施の形態において実現されるパケット転送装置の内部ブロックを示す構成図。
【図３】第１の実施の形態におけるパケット転送装置の動作説明図。
【図４】ＭＡＣフレームを示す説明図。
【図５−１】送信バッファの説明図。
【図５−２】送信バッファ空き容量Ｅｂｕｆが減少する状況の説明図。
【図５−３】バッファあふれ制御を開始する場合の送信バッファの説明図。
【図５−４】送信バッファ空き容量Ｅｂｕｆの推移を表す説明図。
【図６−１】第１の実施の形態におけるパケット転送装置（１００）の受信−送信処理のフローチャート。
【図６−２】第１の実施の形態におけるパケット転送装置（１００）の送信バッファあふれ監視処理のフローチャート。
【図７】第２の実施の形態において実現されるパケット転送装置の内部ブロックを示す構成図。
【図８】第２の実施の形態におけるパケット転送装置の動作説明図。
【図９】第２の実施の形態で使用されるクロック差テーブルの説明図。
【図１０−１】第２の実施の形態におけるパケット転送装置（７００）の受信−送信処理のフローチャート。
【図１０−２】第２の実施の形態におけるパケット転送装置（７００）のクロック情報収集処理のフローチャート。
【図１０−３】第２の実施の形態におけるパケット転送装置（７００）の送信バッファあふれ監視処理のフローチャート。
【図１１】第２の実施の形態で使用されるクロック差テーブルの説明図（２）。
【図１２】第３の実施の形態において実現されるパケット転送装置の内部ブロックを示す構成図。
【図１３】第３の実施の形態におけるパケット転送装置の動作説明図。
【図１４】第３の実施の形態のパケット転送装置内で使用されるＭＡＣフレームの説明図。
【図１５−１】第３の実施の形態におけるパケット転送装置（１２００）の受信−送信処理のフローチャート。
【図１５−２】第３の実施の形態におけるパケット転送装置（１２００）のクロック情報収集処理のフローチャート。
【図１５−３】第３の実施の形態におけるパケット転送装置（１２００）の送信バッファあふれ監視処理のフローチャート。
【図１６】第３の実施の形態で使用されるクロック差分テーブルの説明図。
【発明を実施するための形態】
【００１４】
以下、本発明の各実施の形態について、図面を参照して詳細に説明する。
１．第１の実施の形態
図１は、ネットワーク構成の概略を示す図である。
パケット転送装置（１００）は、例えば、複数の端末（１０１−１〜１０１−２）および／または他ネットワーク（１０２）と接続可能な複数のポートを備える。パケット転送装置（１００）は、例えば、端末（１０１−１〜１０１−２）との間、他ネットワーク（１０２）との間および端末（１０１−１〜１０１−２）と他ネットワーク（１０２）との間において、ＭＡＣフレームを転送することが可能である。なお、パケット転送装置（１００）が備えるポートの数は、適宜の数備えることができる。
【００１５】
図２は、第１の実施の形態において実現されるパケット転送装置の内部ブロックを示す構成図である。
パケット転送装置（１００）は、例えば、複数の送受信ポートを収容する回線収容部（２０１）と、受信したＭＡＣフレームをバッファリングする受信バッファ（２０２−１〜ｎ）と、エラー検出等のＭＡＣフレームに対する処理を行うＭＡＣ処理部（２０３−１〜ｎ）と、ＭＡＣフレームの転送処理を行うパケット処理部（２０４）と、送信するＭＡＣフレームを一旦バッファリングして回線収容部（２０１）に転送するとともに、バッファの空き容量を制御部（２０９）に通知可能な送信バッファ（２０５−１〜ｎ）と、ＩＦＧパターンを生成し回線収容部（２０１）へ送出するＩＦＧ生成部（ギャップ生成部）（２０６−１〜ｎ）と、回線収容部（２０１）へ転送するデータをＭＡＣフレームまたはＩＦＧパターンから選択するセレクタ（２０７−１〜ｎ）と、送受信装置間で決定された伝送速度に従いクロック信号を生成する装置内クロック発生部（２０８）と、これら送信バッファ（２０５−１〜ｎ）およびセレクタ（２０７−１〜ｎ）等を制御するための制御部（２０９）とを備える。
制御部（２０９）は、例えば、パケット転送装置（１００）に対して各種設定データを設定する制御端末（２１０）と接続され、制御端末（２１０）から入力された各種設定データを適宜の記憶部に記憶することができる。なお、パケット転送装置（１００）は、受信バッファ（２０２）、ＭＡＣ処理部（２０３）、送信バッファ（２０５）、ＩＦＧ生成部（２０６）およびセレクタ（２０７）を、パケット転送装置（１００）が備えるポートの数分（図２の例ではｎ個）それぞれ備える。
【００１６】
図３は、第１の実施の形態におけるパケット転送装置の動作説明図である。
図示の例は、図２で示されたパケット転送装置（１００）の構成において、ポート０１からポート０２へのＭＡＣフレーム転送に着目した例であり、第１の実施の形態においての動作を示すものである。
例えば、パケット転送装置（１００）は、ポート０１に端末Ａ（１０１−１）、ポート０２に端末Ｂ（１０１−２）が接続され、パケット転送装置（１００）と、端末Ａ（１０１−１）と、端末Ｂ（１０１−２）とで決められた伝送速度をＢ（Ｈｚ）とする。ここで、端末Ａ（１０１−１）から送信される複数のＭＡＣフレームおよびＩＦＧ（３０９）はクロック差があり、例えば伝送速度Ｂ（Ｈｚ）よりも速い伝送速度Ｂｔｘ（Ｈｚ）で送信されると仮定する。また、パケット転送装置（１００）内では、伝送速度Ｂに対応して装置内クロック発生部（２０８）が周波数Ｂｒｘ（Ｈｚ）のクロック信号を生成し、このＢｒｘが端末Ｂ（１０１−２）へ転送されるＭＡＣフレームおよびＩＦＧ（３１０）の伝送速度となる。ここで、Ｂｒｘ（Ｈｚ）は、伝送速度Ｂ（Ｈｚ）よりも遅いと仮定する。受信バッファ（２０２−１）は、受信したＭＡＣフレームおよびＩＦＧ（３０９）を処理するため、Ｂｔｘ（Ｈｚ）の速度で動作する。一方、送信バッファ（２０５−２）、ＩＦＧ生成部（２０６−２）およびセレクタ（２０７−２）は、装置内クロック発生部（２０８）の周波数Ｂｒｘ（Ｈｚ）の速度に基づいて動作する。なお、ＭＡＣ処理部（２０３−１）、パケット処理部（２０４）、ＭＡＣ処理部（２０３−２）および制御部（２０９）は、別のクロック信号に基づきＢｔｘ（Ｈｚ）およびＢｒｘ（Ｈｚ）よりも速い速度で動作することができる。
【００１７】
ポート０１にて受信されたＭＡＣフレームおよびＩＦＧ（３０９）は、回線収容部（２０１）を経由して受信バッファ（２０２−１）にてバッファリングされたのち、ＭＡＣ処理部（２０３−１）を経由してパケット処理部（２０４）に転送される。ＭＡＣフレームは、パケット処理部（２０４）からポート０２側のＭＡＣ処理部（２０３−２）を経由して送信バッファ（２０５−２）へ転送される。なお、受信されたＩＦＧは、例えば、ＭＣＡ処理部（２０３−１）等で適宜削除される。制御部（２０９）は、送信バッファ（２０５−２）から通知される送信バッファ（２０５−２）の空き容量（送信バッファ空き容量）を監視する。また、制御部（２０９）は、セレクタ（２０７−２）を操作して、送信バッファ（２０５−２）からＭＡＣフレームを選択し、またはＩＦＧ生成部（２０６−２）から所定の長さのＩＦＧパターンを選択して、回線収容部（２０１）およびポート０２を経由してＭＡＣフレームおよびＩＦＧ（３１０）を端末Ｂ（１０１−２）へ送信する。ここで、ＩＦＧの長さが例えば、１１バイトに調整される。また、制御部（２０９）は、制御端末（２１０）により、パケット転送装置（１００）全体の動作に関する設定データを入力し、記憶することが可能である。
【００１８】
図４は、ＭＡＣフレームを示す説明図である。
ＭＡＣフレームが伝送される際には、例えば、ＭＡＣフレーム本体（以下単に、ＭＡＣフレームと記す。）（４００−１〜２）と、ＭＡＣフレーム間に存在するＩＦＧ（４０１−１〜２）が交互に繰り返して伝送される。ＭＡＣフレームは、例えば、ＭＡＣフレームの識別に使用されるプリアンブル／ＳＦＤ（Ｓｔａｒｔ  ｏｆ  Ｆｒａｍｅ  Ｄｅｌｉｍｉｔｅｒ）（４０２）、送信元ＭＡＣアドレス（４０３）、送信先ＭＡＣアドレス（４０４）、ＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）タグ（４０５）、Ｔｙｐｅ／Ｌｅｎｇｔｈ（４０６）、ペイロード（４０７）、ＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）（４０８）を含む。また、ＭＡＣフレームは、７６〜１５３０バイトの可変長フレームである。
なお、ＭＡＣフレームが含む各データの詳細については、イーサネット（商標登録）規格に規定されているため、詳細な説明は省略する。また、ＶＬＡＮタグ（４０５）はオプションであり、ＭＡＣフレームは、ＶＬＡＮタグ（４０５）を含まなくてもよい。
【００１９】
図５−１に、送信バッファの説明図を示す。
図５−１に示すように、送信バッファ（２０５−２）は、例えば、複数のＭＡＣフレームを収容可能な容量（送信バッファ容量、Ｔｂｕｆ）を持ち、収容したＭＡＣフレームを順次送出する。また、ＩＦＧ生成部（２０６−２）は、ＭＡＣフレームの間に挿入するためのインターフレームギャップ（ＩＦＧ）を生成する。このときのＭＡＣフレームの送信バッファ（２０５−２）への書き込み速度を例えばＢｔｘ（Ｈｚ）、送信バッファ（２０５−２）からの読み出し速度を例えばＢｒｘ（Ｈｚ）とする。これらＢｔｘおよびＢｒｘは、端末Ａ（１０１−１）とパケット転送装置（１００）間で決定された伝送速度Ｂ（Ｈｚ）に対して±１００ｐｐｍの範囲内の数値となる。また、送信バッファ（２０５−２）の空き容量（送信バッファ空き容量）をＥｂｕｆとする。このとき、読み出し速度Ｂｒｘが書き込み速度Ｂｔｘより速い場合は送信バッファ（２０５−２）内のＭＡＣフレームは滞りなく出力されるため、クロック差による送信バッファ（２０５−２）のバッファあふれは発生しない。しかし、読み出し速度Ｂｒｘが書き込み速度Ｂｔｘよりも遅い場合は、送信バッファ（２０５−２）内に読み出しきれないデータ（ＭＡＣフレーム）が蓄積され、送信バッファ空き容量Ｅｂｕｆが減少することになる。
【００２０】
図５−２に、送信バッファ空き容量Ｅｂｕｆが減少する状況の説明図を示す。
例えば、送信バッファ（２０５−２）からの読み出し速度Ｂｒｘが書き込み速度Ｂｔｘよりも遅い場合、この送信バッファ（２０５−２）の空き容量の減少量をＡｂｕｆとしたとき、１ＭＡＣフレームあたりのバッファ減少量Ａｂｕｆは、次の式で算出できる。
Ａｂｕｆ  ＝  Ｌ×８×（１／Ｂｒｘ  −  １／Ｂｔｘ）×Ｂ（ビット）
ここで、Ｌは、フレーム長である。
上述の式より、バッファ減少量Ａｂｕｆが最大となるのは、フレーム長ＬがＭＡＣフレームの最大長であり、読み出し速度Ｂｒｘが最小に偏差し、また書き込み速度Ｂｔｘが最大に偏差したときであることが分かる。従って、例えば、伝送速度Ｂ＝１０ＧＨｚ、Ｂｔｘ＝１０．００１ＧＨｚ（Ｂ＋１００ｐｐｍ偏差）、Ｂｒｘ＝９．９９９ＧＨｚ  （Ｂ−１００ｐｐｍ偏差）、Ｌ＝１５３０バイトとして計算すると、１ＭＡＣフレームあたりのバッファ減少量Ａｂｕｆは、次の値となる。
Ａｂｕｆ  ＝  １５３０×８×（１／９．９９９ＧＨｚ  −  １／１０．００１ＧＨｚ）×１０ＧＨｚ  ≒  ２．４（ビット）
そこで、送信バッファ（２０５−２）のバッファあふれの発生が予想されるときは、送信バッファ（２０５−２）からこのバッファ減少量Ａｂｕｆに見合った分ＭＡＣフレームを読み出すタイミングを早めることができれば、送信バッファ（２０５−２）のバッファあふれを防ぐことができる。具体的には、例えば、ＭＡＣフレーム間に挿入されるＩＦＧをバッファ減少量Ａｂｕｆに見合ったサイズ分短く調整すること（ＩＦＧ調整）でＭＡＣフレーム間の間隔を短くし、ＭＡＣフレームを読み出すタイミングを速くして送信バッファ（２０５−２）のバッファあふれを防ぐことができる。このＩＦＧ調整の処理を行うトリガーとして、例えば、送信バッファ（２０５−２）が送信バッファ空き容量Ｅｂｕｆを監視し適宜のタイミングで制御部（２０９）に送信バッファ空き容量Ｅｂｕｆを通知して、制御部（２０９）が、送信バッファ空き容量Ｅｂｕｆが予め定められたしきい値（以下、バッファあふれしきい値またはバッファあふれ制御開始しきい値）以下になったところでＩＦＧ調整等のバッファあふれ制御を開始する。
【００２１】
図５−３に、バッファあふれ制御を開始する場合の送信バッファの説明図を示す。
バッファあふれしきい値をＴｈｂｕｆとすると、例えば送信バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆ以下になったときに、ＭＡＣフレーム間に挿入するＩＦＧ長（Ｌｉｆｇ）をイーサネット（登録商標）規格における最低値である１２バイト未満の長さにすることによって、送信バッファ（２０５−２）内のＭＡＣフレームの送出タイミングを早めることができる。これにより、送信バッファ（２０５−２）に空きを作ることでバッファあふれを抑止することができる。このときのＩＦＧ長（Ｌｉｆｇ）は、例えば、次式で算出できる。
Ｌｉｆｇ  ＝  １２  −  （ＩＮＴ（Ａｂｕｆ／８）＋１）  （バイト）  
ここで、Ａｂｕｆは１ＭＡＣフレームあたりのバッファ減少量、ＩＮＴ（）は小数点以下を切り捨てる関数である。
また、バッファあふれしきい値Ｔｈｂｕｆについては、一例として、バッファあふれが発生すると判断してから最初のＩＦＧ調整の開始までに要する時間内に減少する、総バッファ減少量以上の値にすることができる。より具体的には、例えば、最初のＩＦＧ調整の開始までにＮフレーム分の処理時間がかかるとすれば、バッファあふれしきい値Ｔｈｂｕｆは、次式により算出することができる。
Ｔｈｂｕｆ    ＝  ＩＮＴ（  Ａｂｕｆ／  ８  ＋１  ）×  Ｎ    （バイト）
ここでＮは、ＩＦＧ調整の開始までにかかる時間に相当するＭＡＣフレーム数である。
【００２２】
図５−４は、送信バッファ空き容量Ｅｂｕｆの推移を表す説明図である。
パケット転送装置（１００）起動時等は、送信バッファ空き容量Ｅｂｕｆは送信バッファ容量Ｔｂｕｆと等しいが、高速のＭＡＣフレームを受信し始めると送信バッファ空き容量Ｅｂｕｆは減り始める。このまま高速のＭＡＣフレームを受信し続けていると送信バッファ空き容量Ｅｂｕｆは０になり、送信バッファ（２０５−２）にデータの書き込みができなくなり、バッファあふれが発生する。そこで、送信バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆ以下になったときに、ＩＦＧ長（Ｌｉｆｇ）を短くしその分ＭＡＣフレームの送出を早めることにより、１２−Ｌｉｆｇ（バイト）分送信バッファ空き容量Ｅｂｕｆを増やすことができる。また、その後、送信バッファ空き容量Ｅｂｕｆが充分回復したと判断されるとき、すなわち、送信バッファ空き容量Ｅｂｕｆが予め定められたバッファあふれ制御解除しきい値（第２の閾値）ＴｈｂｕｆＥを超えたときに、パケット転送装置（１００）は、バッファあふれ制御を停止する。なお、バッファあふれ制御解除しきい値ＴｈｂｕｆＥには、例えば、送信バッファ容量Ｔｂｕｆ以下、且つバッファあふれしきい値Ｔｈｂｕｆ以上の任意の値を設定することができる。なお、バッファあふれ制御解除しきい値ＴｈｂｕｆＥを送信バッファ容量Ｔｂｕｆに設定すれば、送信バッファ（２０５−２）のデータがすべてクリアされるときにバッファあふれ制御を解除することになる。
【００２３】
以下に、第１の実施の形態のパケット転送装置（１００）の動作の詳細を図３に従って説明する。
パケット転送装置（１００）は、起動後、各ポートに接続された端末Ａ（１０１−１）および端末Ｂ（１０１−２）との間で、適宜の通信方式に基づいてネゴシエーションを実施し、回線種別および伝送速度等の設定を行う。第１の実施の形態においては、例えば、ポート０１−端末Ａ（１０１−１）間およびポート０２−端末Ｂ（１０１−２）間の伝送速度は同一とし、その速度をＢ（Ｈｚ）とする。また、ネゴシエーションで決定された伝送速度Ｂ（Ｈｚ）を実現するために、パケット転送装置（１００）は、装置内クロック発生部（２０８）をＢ（Ｈｚ）に設定し、受信待機状態になる。また、制御端末（２１０）により、制御部（２０９）は、例えば、予め送信バッファあふれ制御機能のＯＮ（有効）／ＯＦＦ（無効）の設定、バッファあふれしきい値Ｔｈｂｕｆ、バッファあふれ制御解除しきい値ＴｈｂｕｆＥの設定を行うことができる。
その後、端末Ａ（１０１−１）からパケット転送装置（１００）にＭＡＣフレームおよびＩＦＧ（３０９）の送信が開始される。このとき、例えば、送信されるＭＡＣフレームおよびＩＦＧ（３０９）の長さ（フレーム長）は、ＭＡＣフレームは１５３０バイト、ＩＦＧは１２バイトとし、無限にまたはバッファあふれが発生しうる長時間、ＭＡＣフレームおよびＩＦＧ（３０９）の送信が繰り返されるものと仮定する。送信されたＭＡＣフレームおよびＩＦＧ（３０９）がポート０１に到着した際、パケット転送装置（１００）は、受信−送信処理を開始する。
【００２４】
図６−１に、第１の実施の形態におけるパケット転送装置（１００）の受信−送信処理のフローチャートを示す。
パケット転送装置（１００）は、ポート０１にてＭＡＣフレームおよびＩＦＧ（３０９）を受信し（Ｓ６０１）、ＭＡＣフレームおよびＩＦＧ（３０９）を回線収容部（２０１）でパケット転送装置（１００）に適した信号に変換して受信バッファ（２０２−１）へ転送し（Ｓ６０２）、ＭＡＣ処理部（２０３−１）を経由してパケット処理部（２０４）へ転送する（Ｓ６０３、Ｓ６０４）。パケット処理部（２０４）は、転送されたＭＡＣフレームの送信先を判定し、図３の例ではポート０２に対応したＭＡＣ処理部（２０３−２）へＭＡＣフレームを転送する（Ｓ６０５）。例えば、パケット処理部（２０４）は、ＭＡＣフレーム内の送信先ＭＡＣアドレス（４０４）を参照して送信先を判定する。パケット転送装置（１００）は、送信バッファ（２０５−２）、セレクタ（２０７−２）および回線収容部（２０１）を経由してＭＡＣフレームを端末Ｂ（１０１−２）へ送信する（Ｓ６０６〜Ｓ６０８）。
また、パケット転送装置（１００）が、上述のＭＡＣフレームの受信−送信処理をしている間に、制御部（２０９）は、送信バッファあふれ監視処理を実施する。
【００２５】
図６−２に、第１の実施の形態におけるパケット転送装置（１００）の送信バッファあふれ監視処理のフローチャートを示す。
送信バッファ（２０５−２）は、例えば、ＭＡＣフレームの書き込みがあったタイミングで送信バッファ空き容量Ｅｂｕｆを制御部（２０９）に通知する。なお、通知のタイミングは予め定められた周期など適宜のタイミングでもよい。制御部（２０９）は、送信バッファ（２０５−２）から通知される送信バッファ空き容量Ｅｂｕｆとバッファあふれしきい値Ｔｈｂｕｆを比較する（Ｓ６１１）。なお、バッファあふれしきい値Ｔｈｂｕｆは予め定められ、適宜の記憶部に記憶されることができる。このとき、バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆ以下になる場合、制御部（２０９）は送信バッファあふれが発生すると判断し、ＩＦＧ調整を開始する。まず、制御部（２０９）は、送信バッファ（２０５−２）の動作状況を確認し、現在ＭＡＣフレームを送出中であるか否かを判断する（Ｓ６１２）。ＭＡＣフレームを送出中であれば、制御部（２０９）は、当該ＭＡＣフレームの送出終了まで待機する（Ｓ６１３）。制御部（２０９）は、当該ＭＡＣフレームの送出が終了後、セレクタ（２０７−２）をＩＦＧ生成部（２０６−２）側へ切替えて（Ｓ６１４）、ＩＦＧを送出する（Ｓ６１５）。このとき、制御部（２０９）は、ＩＦＧ長（Ｌｉｆｇ）を、上述の式を用いて算出する。
【００２６】
Ｌｉｆｇ  ＝  １２  −（  ＩＮＴ（Ａｂｕｆ／８）  ＋  １）
＝  １２  −  （ＩＮＴ（１５３０×８×（１／９．９９９Ｇｈｚ−１／１０．００１ＧＨｚ）×１０ＧＨｚ／８）＋１）
＝  １２  −  （ＩＮＴ（２．４／８）  ＋１）  ＝  １２  −  （０＋１）
＝  １１バイト
この場合、制御部（２０９）は、例えば、セレクタ（２０７−２）を制御して、算出したＩＦＧ長（Ｌｉｆｇ、１１バイト）分のＩＦＧを送出する。なお、例えば、制御部（２０９）は、算出した長さ（Ｌｉｆｇ）のＩＦＧを生成するようにＩＦＧ生成部（２０６−２）に要求し、ＩＦＧ送出完了時にセレクタ（２０７−２）を切替えることでＩＦＧ調整を行ってもよい。
その後、セレクタ（２０７−２）を送信バッファ（２０５−２）側へ切替えて（Ｓ６１６）、ＭＡＣフレームを送出し（Ｓ６１７）、送信バッファ空き容量Ｅｂｕｆとバッファあふれ制御解除しきい値ＴｈｂｕｆＥを比較する（Ｓ６２０）。送信バッファ空き容量Ｅｂｕｆがバッファあふれ制御解除しきい値ＴｈｂｕｆＥ以上である場合、制御部（２０９）は、通常のバッファ制御を実施する（Ｓ６２１）。通常のバッファ制御では、例えば、制御部（２０９）はＩＦＧ調整をしていない、予め定められたＩＦＧ長（例えば、１２バイト）のＩＦＧを送出する。
【００２７】
一方、送信バッファ空き容量Ｅｂｕｆがバッファあふれ制御解除しきい値ＴｈｂｕｆＥより小さい場合、制御部（２０９）は、ステップＳ６１２に戻り、送信バッファあふれ監視処理を継続する。
また、ステップＳ６１１において、バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆよりも大きい場合、制御部（２０９）は、通常のバッファ制御を実施する（Ｓ６２１）。また、ステップＳ６１２において送信バッファ（２０５−２）の動作状態がＭＡＣフレーム出力中でない場合、すなわちＩＦＧ送出中の場合、制御部（２０９）は、既に１２バイト以上のＩＦＧが出力されているか否かを判断する（Ｓ６１８）。既に１２バイト以上のＩＦＧが出力されている場合、ＩＦＧの送出が終了しているため、制御部（２０９）は、直ちにセレクタ（２０７−２）を送信バッファ（２０５−２）側へ切替えてＩＦＧ送出を停止し（Ｓ６１６）、ＭＡＣフレームを送出した後（Ｓ６１７）、ステップＳ６１２に戻り送信バッファあふれ監視処理を継続し、次のＩＦＧ送出のタイミングでＩＦＧ調整を行う。
【００２８】
一方、ステップＳ６１８にて、送出済みのＩＦＧがＩＦＧ長Ｌｉｆｇ（例えば、１２バイト）よりも短い場合は不足分の長さのＩＦＧを送出した後（Ｓ６１９）、制御部（２０９）は、セレクタ（２０７−２）を送信バッファ（２０５−２）側へ切替えてＩＦＧ送出を停止し（Ｓ６１６）、ＭＡＣフレームを送出した後（Ｓ６１７）、ステップＳ６１２に戻り送信バッファあふれ監視処理を継続し、次のＩＦＧ送出のタイミングでＩＦＧ調整を行う。
以上の処理により、第１の実施の形態では、送信バッファの空き容量を監視し、送信バッファがあふれることが予測される場合は、ＩＦＧの長さを短くすることで送信バッファからＭＡＣフレームデータを送出する間隔を詰める。これにより、送信バッファの空く時間が短くなり、バッファあふれを防ぐパケット転送装置を提供することができる。また、上述の動作は、ポート０１−ポート０２間だけではなく、他のポートの組合せでも実行することができる。
また、第１の実施の形態において、短くするＩＦＧの長さに制限はなく０にすることも可能であるが、イーサネット（登録商標）規格ではＩＦＧは１２バイト以上であることを推奨しており、ＩＦＧを５バイトまでは短縮可能なことが規格上許されているため、５バイトまで短くすることが推奨される。しかし、５バイト未満のＩＦＧを使用するかは対向装置の仕様に依存するため、パケット転送装置を設定する際に、例えば、５バイト未満のＩＦＧを使用するバッファあふれ制御機能のオン（有効）／オフ（無効）を選択できるようにしてもよい。
【００２９】
２．第２の実施の形態
第１の実施の形態では、送信バッファ空き容量Ｅｂｕｆに着目してバッファあふれを制御したが、クロック差以外の要因で送信バッファ空き容量Ｅｂｕｆが減っていく場合、例えば複数の送信先から一つの受信先へＭＡＣフレームが集中する場合についてもバッファあふれが発生する場合がある。このような状況では、上述のバッファあふれ制御によるＩＦＧ調整ではバッファがあふれを防ぐことができない場合があり、ＩＦＧ調整の処理が余計な処理となる場合がある。そこで、第２の実施の形態では、送受信装置間でクロック差がある場合のみ、バッファあふれ制御を行い、より効率的なパケット転送装置を提供する。
図７は、第２の実施の形態におけるパケット転送装置の内部ブロックを示す構成図である。
第２の実施の形態のパケット転送装置（７００）は、第１の実施の形態のパケット転送装置に対して、さらに、ポート毎のクロック抽出部（７０３−１〜ｎ）、クロック差テーブル（クロック情報記憶部）（７０９）およびクロック比較部（７１０）を備える。
具体的には、パケット転送装置（７００）は、複数の送受信ポートを収容する回線収容部（７０１）と、受信したＭＡＣフレームをバッファリングする受信バッファ（７０２−１〜ｎ）と、受信したＭＡＣフレームからクロック周波数を抽出するクロック抽出部（７０３−１〜ｎ）と、エラー検出等の受信したＭＡＣフレームに対する処理を行うＭＡＣ処理部（７０４−１〜ｎ）と、ＭＡＣフレームの転送処理を行うパケット処理部（７０５）と、送信するＭＡＣフレームをバッファリングして回線収容部（７０１）に転送するとともに、バッファの空き容量を制御部（７１２）に通知可能な送信バッファ（７０６−１〜ｎ）と、ＩＦＧパターンを生成し回線収容部（７０１）へ送出するＩＦＧ生成部（７０７−１〜ｎ）と、回線収容部（７０１）へ転送するデータをＭＡＣフレームまたはＩＦＧパターンから選択するセレクタ（７０８−１〜ｎ）と、送受信装置間で決定された伝送速度に従い装置内クロック信号を生成する装置内クロック発生部（７１１）と、クロック抽出部（７０３−１〜ｎ）にて抽出された送信クロック周波数（パケット転送装置（７００）が受信したＭＡＣフレームのクロック周波数）と装置内クロック周波数（装置内クロック発生部（７１１）が生成するクロック信号の周波数）を収集・比較するクロック比較部（７１０）と、クロック比較部（７１０）にて収集・比較されたクロック情報（例えば、送信クロック周波数と装置内クロック周波数および／またはクロック差）を格納するクロック差テーブル（７０９）と、これら送信バッファ（７０６−１〜ｎ）およびセレクタ（７０８−１〜ｎ）等を制御するための制御部（７１２）とを備える。
【００３０】
制御部（７１２）は、例えば、パケット転送装置（７００）に対して各種設定データを設定する制御端末（７１３）と接続され、制御端末（７１３）から入力された各種設定データを適宜の記憶部に記憶することができる。なお、パケット転送装置（７００）は、受信バッファ（７０２）、クロック抽出部（７０３）、ＭＡＣ処理部（７０４）、送信バッファ（７０６）、ＩＦＧ生成部（７０７）およびセレクタ（７０８）を、パケット転送装置（７００）が備えるポートの数分（図７の例ではｎ個）それぞれ備える。
図８は、第２の実施の形態におけるパケット転送装置の動作説明図である。
図示の例は、図７で示されたパケット転送装置（７００）の構成のうち、ポート０１からポート０２へのＭＡＣフレーム転送に着目した例であり、第２の実施の形態においての動作を示すものである。
例えば、パケット転送装置（７００）は、ポート０１に端末Ａ（１０１−１）、ポート０２に端末Ｂ（１０１−２）が接続され、パケット転送装置（７００）と、端末Ａ（１０１−１）と、端末Ｂ（１０１−２）とで決められた伝送速度を、例えばＢ（Ｈｚ）とする。ここで、端末Ａ（１０１−１）から送信される複数のＭＡＣフレームおよびＩＦＧ（８１２）はクロック差があり、例えば伝送速度Ｂ（Ｈｚ）よりも速い伝送速度Ｂｔｘ（Ｈｚ）で送信されると仮定する。また、パケット転送装置（７００）内では伝送速度Ｂに対応して装置内クロック発生部（７１１）が周波数Ｂｒｘ（Ｈｚ）のクロック信号を生成し、このＢｒｘが端末Ｂ（１０１−２）へ転送されるＭＡＣフレームおよびＩＦＧ（８１３）の伝送速度となる。ここで、Ｂｒｘ（Ｈｚ）は、伝送速度Ｂ（Ｈｚ）よりも遅いと仮定する。なお、クロック抽出部（７０３−１）は、ＭＡＣフレームおよびＩＦＧ（８１２）を処理するため、Ｂｔｘ（Ｈｚ）の速度で動作する。クロック比較部（７１０）は、別のクロック信号に基づきＢｔｘ（Ｈｚ）およびＢｒｘ（Ｈｚ）よりも速い速度で動作することができる。なお、他のブロックの動作速度は、第１の実施の形態と同様である。
【００３１】
ポート０１にて受信されたＭＡＣフレームおよびＩＦＧ（８１２）は、回線収容部（７０１）を経由して受信バッファ（７０２−１）にてバッファリングされたのち、ＭＡＣ処理部（７０４−１）を経由してパケット処理部（７０５）に転送される。また、クロック抽出部（７０３−１）は、ＭＡＣフレームおよびＩＦＧ（８１２）を受信したポートの番号と、受信したＭＡＣフレームおよびＩＦＧ（８１２）から抽出した送信クロック周波数をクロック比較部（７１０）へと通知する。なお、ポート番号は、それぞれのクロック抽出部（７０３）に予め記憶されていてもよいし、回線収容部（７０１）から通知されてもよい。また、ＭＡＣフレームおよびＩＦＧ（８１２）からクロックを抽出する手法は、適宜の手法を用いることができる。クロック比較部（７１０）は、送信クロック周波数と装置内クロック発生部（７１１）で生成された装置内クロックの周波数とを比較して、その結果（クロック差）をクロック差テーブル（７０９）に書き込む。ポート０２へ送信されるＭＡＣフレームは、パケット処理部（７０５）からポート０２側のＭＡＣ処理部（７０４−２）を経由して送信バッファ（７０６−２）へ転送される。なお、受信されたＩＦＧは、例えばＭＡＣ処理部（７０４−１）等で、適宜削除される。制御部（７１２）は、クロック差テーブル（７０９）と、送信バッファ（７０６−２）から通知される送信バッファ空き容量Ｅｂｕｆとを監視し、ＩＦＧ調整を行うか否かを判断する。また、制御部（７１２）は、セレクタ（７０８−２）を操作して、送信バッファ（７０６−２）からＭＡＣフレームを選択し、またはＩＦＧ生成部（７０７−２）から所定の長さのＩＦＧパターンを選択して、回線収容部（７０１）およびポート０２を経由してＭＡＣフレームおよびＩＦＧ（８１３）を端末Ｂ（１０１−２）へ送信する。ここで、ＩＦＧの長さが例えば１１バイトに調整される。なお、制御部（７１２）は、制御端末（７１３）により、パケット転送装置（７００）全体の動作に関する設定データを入力し、記憶することが可能である。
【００３２】
図９は、第２の実施の形態で使用されるクロック差テーブルの説明図である。
クロック差テーブル（７０９）は、例えば、装置内クロック周波数（９００）、ポート番号（９０１）、送信クロック周波数（９０２）およびクロック差（９０３）を含む。送信クロック周波数（９０２）およびクロック差（９０３）は、ポート番号（９０１）に対応して記憶される。装置内クロック周波数（９００）は、例えば、装置内クロック発生部（７１１）が生成するクロック信号の周波数を示す。ポート番号（９０１）は、例えば、ＭＡＣフレームおよびＩＦＧ（８１２）を受信したポートを特定する適宜の識別情報を示す。送信クロック周波数（９０２）は、例えば、受信したＭＡＣフレームおよびＩＦＧ（８１２）の信号の周波数を示す。クロック差（９０３）は、例えば、装置内クロック周波数（９００）と、クロック差（９０３）に対応する送信クロック周波数（９０２）との差分を示す。なお、クロック差テーブル（７０９）は、クロック差（９０３）を省略し、制御部（７１２）が必要に応じて装置内クロック周波数（９００）と送信クロック周波数（９０２）からクロック差（９０３）を求めてもよいし、クロック比較部（７１０）が送信クロック周波数（９０２）を入力した際に装置内クロック周波数（９００）と送信クロック周波数（９０２）からクロック差（９０３）を求めてクロック差テーブル（７０９）に記憶し、送信クロック周波数（９０２）の記憶を省略してもよい。
【００３３】
以下に、第２の実施の形態のパケット転送装置（７００）の動作の詳細を図８に従って説明する。
パケット転送装置（７００）は、起動後、各ポートに接続された端末Ａ（１０１−１）および端末Ｂ（１０１−２）との間で、適宜の通信方式に基づいてネゴシエーションを実施し、回線種別および伝送速度等の設定を行う。例えば、ポート０１−端末Ａ（１０１−１）間およびポート０２−端末Ｂ（１０１−２）間の伝送速度は同一とし、その伝送速度をＢ（Ｈｚ）とする。また、ネゴシエーションで決定された伝送速度Ｂ（Ｈｚ）を実現するために、パケット転送装置（７００）は、装置内クロック発生部（７１１）に伝送速度Ｂ（Ｈｚ）を設定する。また、パケット転送装置（７００）は、クロック差テーブル（７０９）へ、図１１（ａ）に示すように、初期状態として装置内クロック周波数（９００）、送信クロック周波数（９０２）およびクロック差（９０３）の項目に例えばｎｕｌｌを設定し、受信待機状態になる。なお、ポート番号（９０１）には、ｎｕｌｌを設定しなくてもよい。また、制御端末（７１３）により、制御部（７１２）は、例えば適宜の記憶部に予め送信バッファあふれ制御機能のＯＮ（有効）／ＯＦＦ（無効）の設定、バッファあふれしきい値Ｔｈｂｕｆ、バッファあふれ制御解除しきい値ＴｈｂｕｆＥの設定を行うことができる。
その後、端末Ａ（１０１−１）からパケット転送装置（７００）にＭＡＣフレームおよびＩＦＧ（８１２）の送信が開始される。このとき、例えば、端末Ａ（１０１−１）から送信されるＭＡＣフレームおよびＩＦＧ（８１２）の長さは、ＭＡＣフレームは１５３０バイト、ＩＦＧは１２バイトとし、無限またはバッファあふれが発生しうる長時間にＭＡＣフレームおよびＩＦＧ（８１２）の送信が繰り返されるものと仮定する。送信されたＭＡＣフレームおよびＩＦＧ（８１２）がポート０１に到着し、パケット転送装置（７００）は、受信−送信処理を実行する。
【００３４】
図１０−１に、第２の実施の形態におけるパケット転送装置（７００）の受信−送信処理のフローチャートを示す。
パケット転送装置（７００）は、ポート０１にてＭＡＣフレームおよびＩＦＧ（８１２）を受信し（Ｓ１００１）、ＭＡＣフレームおよびＩＦＧ（８１２）を回線収容部（７０１）でパケット転送装置（７００）に適した信号に変換して受信バッファ（７０２−１）へ転送し（Ｓ１００２）、ＭＡＣ処理部（７０４−１）を経由してパケット処理部（７０５）へ転送する（Ｓ１００３、Ｓ１００４）。パケット処理部（７０５）は、転送されたＭＡＣフレームの送信先を判定し、図８の例ではポート０２に対応したＭＡＣ処理部（７０４−２）へＭＡＣフレームを転送する（Ｓ１００５）。例えば、パケット処理部（７０５）は、ＭＡＣフレーム内の送信先ＭＡＣアドレス（４０４）を参照して送信先を判定する。パケット転送装置（７００）は、送信バッファ（７０６−２）、セレクタ（７０８−２）および回線収容部（７０１）を経由してＭＡＣフレームを端末Ｂ（１０１−２）へと送信する（Ｓ１００６〜Ｓ１１０８）。また、受信−送信処理と並行して、パケット転送装置（７００）は、クロック情報収集処理を実行する。
【００３５】
図１０−２に、第２の実施の形態におけるパケット転送装置（７００）のクロック情報収集処理のフローチャートを示す。
ＭＡＣフレームおよびＩＦＧ（８１２）は、回線収容部（７０１）を経由してクロック抽出部（７０３−１）へも転送される（Ｓ１０１１）。クロック抽出部（７０３−１）は、ＭＡＣフレームおよびＩＦＧ（８１２）のクロック周波数（以後、送信クロック周波数と呼ぶ。）をカウントして、送信クロック周波数と、ＭＡＣフレームおよびＩＦＧ（８１２）を受信したポートの番号とをクロック比較部（７１０）へ出力する（Ｓ１０１２）。また、このとき、装置内クロック発生部（７１１）は、装置内クロック周波数をクロック比較部（７１０）へ出力する（Ｓ１０１３）。なお、装置内クロック周波数を出力するタイミングはＭＡＣフレームの受信時でもよいし、予め出力されるなど他の適宜のタイミングでもよい。クロック比較部（７１０）は、これら送信クロック周波数と装置内クロック周波数の差分（クロック差）を算出する（Ｓ１０１４）。クロック比較部（７１０）は、例えば、図１１（ｂ）に示すように、クロック差テーブル（７０９）に受信ポート（ポート番号（９０１））に対応して送信クロック周波数（９０２）、クロック差（９０３）を書き込む（Ｓ１０１５）。また、クロック比較部（７１０）は、装置内クロック周波数（９００）をクロック差テーブル（７０９）に記憶する。なお、クロック差の算出の処理（Ｓ１０１４）およびクロック差テーブル（７０９）への書き込みの処理（Ｓ１０１５）は、任意の間隔で実施することができる。また、上述のクロック情報収集処理は、他の受信ポートについても実施されることができる。また、パケット転送装置（７００）が、上述のＭＡＣフレームの受信−送信処理をしている間に、制御部（７１２）は、送信バッファあふれ監視処理を実施する。
【００３６】
図１０−３に、第２の実施の形態におけるパケット転送装置（７００）の送信バッファあふれ監視処理のフローチャートを示す。
送信バッファ（７０６−２）は、例えば、ＭＡＣフレームの書き込みがあったタイミングで送信バッファ空き容量Ｅｂｕｆを制御部（７１２）に通知する。なお、通知のタイミングは予め定められた周期など適宜のタイミングでもよい。制御部（７１２）は、送信バッファ（７０６−２）から通知される送信バッファ空き容量Ｅｂｕｆとバッファあふれしきい値Ｔｈｂｕｆを比較する（Ｓ１０２１）。このとき、送信バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆより大きい場合、制御部（７１２）は、通常のバッファ制御を実施する（Ｓ１０２９）。通常のバッファ制御では、例えば、制御部（７１２）は、ＩＦＧ調整をしていない予め定められたＩＦＧ長（例えば、１２バイト）のＩＦＧを送出する。一方、送信バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆ以下の場合、制御部（７１２）は、クロック差テーブル（７０９）を検索し、装置内クロック周波数（９００）よりも速い送信クロック周波数（９０２）があるか否かを判断する（Ｓ１０２２）。装置内クロック周波数（９００）がどの送信クロック周波数よりも速い場合は、クロック差によるバッファあふれは発生しないので、制御部（７１２）は、通常のバッファ制御を実施する（Ｓ１０２９）。一方、装置内クロック周波数（９００）よりもいずれかの送信クロック周波数（９０２）が速い場合は、制御部（７１２）は送信バッファあふれが発生し得ると判断し、第１の実施の形態と同様にバッファあふれ制御（ＩＦＧ調整）を開始する。
【００３７】
具体的には、制御部（７１２）は、送信バッファ（７０６−２）の動作状況を確認し、現在ＭＡＣフレームを送出中であるか否かを判断する（Ｓ１０２３）。ＭＡＣフレーム送出中であれば、制御部（７１２）は、当該ＭＡＣフレームの送出終了まで待機する（Ｓ１０２４）。制御部（７１２）は、当該ＭＡＣフレームの送出の終了後、セレクタ（７０８−２）をＩＦＧ生成部（７０７−２）側へ切替えて（Ｓ１０２５）、ＩＦＧを送出する（Ｓ１０２６）。このとき、制御部（７１２）は、ＩＦＧ長（Ｌｉｆｇ）を第１の実施の形態と同様の方法により算出することができる。例えば、制御部（７１２）は、１１バイトとなるまでＩＦＧを送出後、セレクタ（７０８−２）を送信バッファ（７０６−２）側へ切替えて（Ｓ１０２７）、ＭＡＣフレームを送出し（Ｓ１０２８）、送信バッファ空き容量Ｅｂｕｆとバッファあふれ制御解除しきい値ＴｈｂｕｆＥを比較する（Ｓ１０３３）。なお、例えば、制御部（７１２）は、算出した長さ（Ｌｉｆｇ）のＩＦＧを生成するようにＩＦＧ生成部（７０７−２）に要求し、ＩＦＧ送出完了時にセレクタ（７０８−２）を切替えることでＩＦＧ調整を行ってもよい。送信バッファ空き容量Ｅｂｕｆがバッファあふれ制御解除しきい値ＴｈｂｕｆＥ以上である場合、制御部（７１２）は、通常のバッファ制御を実施する（Ｓ１０２９）。一方、送信バッファ空き容量Ｅｂｕｆがバッファあふれ制御解除しきい値ＴｈｂｕｆＥより小さい場合、制御部（７１２）は、ステップＳ１０２３に戻り、送信バッファあふれ監視処理を継続する。また、ステップＳ１０２３において送信バッファ（７０６−２）の動作状態がＭＡＣフレーム出力中でない場合、すなわちＩＦＧパターン送出中の場合、制御部（７１２）は、既に１２バイト以上のＩＦＧが出力されているか否かを判断する（Ｓ１０３１）。既に１２バイト以上のＩＦＧが出力されている場合、ＩＦＧの送出が終了しているため、制御部（７１２）は、直ちにセレクタ（７０８−２）を送信バッファ（７０６−２）側へ切替えてＩＦＧ送出を停止し（Ｓ１０２７）、ＭＡＣフレームを送出した後（Ｓ１０２８）、ステップＳ１０２３に戻り送信バッファあふれ監視処理を継続し、次のＩＦＧ送出のタイミングでＩＦＧ調整を行う。一方、ステップＳ１０３１において、送出済みのＩＦＧがＩＦＧ長Ｌｉｆｇ（例えば、１２バイト）よりも短い場合は、不足分の長さのＩＦＧパターンを送出した後（Ｓ１０３２）、制御部（７１２）は、セレクタ（７０８−２）を送信バッファ（７０６−２）側へ切替えてＩＦＧ送出を停止し（Ｓ１０２７）、ＭＡＣフレームを送出した後（Ｓ１０２８）、ステップＳ１０２３に戻り送信バッファあふれ監視処理を継続し、次のＩＦＧ送出のタイミングでＩＦＧ調整を行う。
【００３８】
以上の処理により、第２の実施の形態では、送信バッファの空き容量を監視し、装置内クロック周波数がいずれかの送信クロック周波数よりも遅く、送信バッファがあふれることが予測される場合に、ＩＦＧの長さを短くすることで送信バッファからＭＡＣフレームデータを送出する間隔を詰める。これにより、送信バッファの空く時間が短くなり、バッファあふれを防ぐパケット転送装置を提供することができる。また、クロック差によるバッファあふれが予測される場合のみＩＦＧの長さを調整することができる。また、上述の動作は、ポート０１−ポート０２間だけではなく、他のポートの組合せでも実行することができる。
また、第２の実施の形態において、短くするＩＦＧの長さに制限はなく０にすることも可能であるが、イーサネット（登録商標）規格ではＩＦＧは１２バイト以上であることを推奨しており、ＩＦＧを５バイトまでは短縮可能なことが規格上許されているため、５バイトまで短くすることが推奨される。しかし、５バイト未満のＩＦＧを使用するかは対向装置の仕様に依存するため、パケット転送装置を設定する際に、例えば、５バイト未満のＩＦＧを使用するバッファあふれ制御機能のオン（有効）／オフ（無効）を選択できるようにしてもよい。
【００３９】
３．第３の実施の形態
第２の実施の形態では、事前にクロック差を調査し、クロック差がある場合のみバッファあふれ制御をすることにより、効率的にバッファあふれ制御を実施するものだったが、例えば、ひとつでも装置内クロック周波数よりも高速なＭＡＣフレームが送信元から到着した場合、クロック差のないＭＡＣフレームに対してもバッファあふれ制御を行う。そこで、第３の実施の形態では、装置内クロック周波数よりも高速な送信元からのＭＡＣフレームが到着した場合、高速なＭＡＣフレームに対してのみバッファあふれ制御を行うようなパケット転送装置を提供する。
図１２は、第３の実施の形態において実現されるパケット転送装置の内部ブロックを示す構成図である。
第３の実施の形態のパケット転送装置（１２００）は、第２の実施の形態のパケット転送装置に対して、さらに、ポート番号付加部（ポート識別子付加部）（１２０４）およびポート番号識別部（ポート識別部）（１２０７）を備える。
具体的には、パケット転送装置（１２００）は、複数の送受信ポートを収容する回線収容部（１２０１）と、受信したＭＡＣフレームをバッファリングする受信バッファ（１２０２−１〜ｎ）と、受信したＭＡＣフレームからクロック周波数を抽出するクロック抽出部（１２０３−１〜ｎ）と、ＭＡＣフレームのプリアンブル部分にフレームを受信したポートのポート番号を埋めこむポート番号付加部（１２０４−１〜ｎ）と、エラー検出等の受信したＭＡＣフレームに対する処理を行うＭＡＣ処理部（１２０５−１〜ｎ）と、ＭＡＣフレームの転送処理を行うパケット処理部（１２０６）と、パケット処理部（１２０６）から転送されてきたＭＡＣフレームのプリアンブル部から受信したポート番号を抽出して削除し抽出したポート番号を制御部（１２１４）に出力するポート番号識別部（１２０７−１〜ｎ）と、送信するＭＡＣフレームをバッファリングして回線収容部（１２０１）に転送するとともに、バッファの空き容量を制御部（１２１４）に通知可能な送信バッファ（１２０８−１〜ｎ）と、ＩＦＧパターンを生成し回線収容部（１２０１）へ送出するＩＦＧ生成部（１２０９−１〜ｎ）と、送信するデータをＭＡＣフレームまたはＩＦＧパターンから選択するセレクタ（１２１０−１〜ｎ）と、送受信装置間で決定された伝送速度に従い装置内クロック信号を生成する装置内クロック発生部（１２１３）と、クロック抽出部（１２０３−１〜ｎ）にて抽出された送信クロック周波数（パケット転送装置（１２００）が受信したＭＡＣフレームのクロック周波数）と装置内クロック周波数（装置内クロック発生部（１２１３）が生成するクロック信号の周波数）を収集・比較するクロック比較部（１２１２）と、クロック比較部にて収集・比較されたクロック情報（送信クロック周波数と装置内クロック周波数および／またはクロック差）を格納するクロック差テーブル（１２１１）と、これら送信バッファ（１２０８−１〜ｎ）およびセレクタ（１２１０−１〜ｎ）等を制御するための制御部（１２１４）とを備える。
【００４０】
制御部（１２１４）は、例えば、パケット転送装置（１２００）に対して各種設定データを設定できる制御端末（１２１５）と接続され、制御端末（１２１５）から入力された各種設定データを適宜の記憶部に記憶することができる。なお、パケット転送装置（１２００）は、受信バッファ（１２０２）、クロック抽出部（１２０３）、ポート番号付加部（１２０４）、ＭＡＣ処理部（１２０５）、ポート番号識別部（１２０７）、送信バッファ（１２０８）、ＩＦＧ生成部（１２０９）およびセレクタ（１２１０）を、パケット転送装置（１２００）が備えるポートの数分（図１２の例ではｎ個）それぞれ備える。
図１３は、第３の実施の形態におけるパケット転送装置の動作説明図である。
図示の例は、図１２で示されたパケット転送装置（１２００）の構成のうち、ポート０１からポート０２へのＭＡＣフレーム転送に着目した例であり、第３の実施の形態においての動作を示すものである。
例えば、パケット転送装置（１２００）は、ポート０１に端末Ａ（１０１−１）、ポート０２に端末Ｂ（１０１−２）が接続され、パケット転送装置（１２００）と、端末Ａ（１０１−１）と、端末Ｂ（１０１−２）とで決められた伝送速度を、例えばＢ（Ｈｚ）とする。ここで、端末Ａ（１０１−１）から送信される複数のＭＡＣフレームおよびＩＦＧ（１３１４）はクロック差があり、例えば伝送速度Ｂ（Ｈｚ）よりも速い伝送速度Ｂｔｘ（Ｈｚ）で送信されると仮定する。また、パケット転送装置（１２００）内では伝送速度Ｂに対応して装置内クロック発生部（１２１３）が周波数Ｂｒｘ（Ｈｚ）のクロック信号を生成し、このＢｒｘが端末Ｂ（１０１−２）へ転送されるＭＡＣフレームおよびＩＦＧ（１３１９）の伝送速度となる。ここで、Ｂｒｘ（Ｈｚ）は、伝送速度Ｂ（Ｈｚ）よりも遅いと仮定する。ポート番号付加部（１２０４−１）およびポート番号識別部（１２０７−２）は、別のクロック信号に基づきＢｔｘ（Ｈｚ）およびＢｒｘ（Ｈｚ）よりも速い速度で動作することができる。なお、他のブロックの動作速度は、第１、第２の実施の形態と同様である。
【００４１】
ポート０１にて受信されたＭＡＣフレームおよびＩＦＧ（１３１４）は、回線収容部（１２０１）を経由して受信バッファ（１２０２−１）にてバッファリングされたのちポート番号付加部（１２０４−１）へ転送され、ポート番号付加部（１２０４−１）にてプリアンブルに受信したポートのポート番号が埋めこまれ、ＭＡＣ処理部（１２０５−１）を経由してパケット処理部（１２０６）に転送される。なお、埋めこまれるポート番号はそれぞれのポート番号付加部（１２０４）に予め記憶されていてもよい。また、受信されたＩＦＧは、例えばＭＡＣ処理部（１２０５−１）等で、適宜削除される。
また、クロック抽出部（１２０３−１）は、ＭＡＣフレームおよびＩＦＧ（１３１４）を受信したポートの番号と、受信したＭＡＣフレームおよびＩＦＧ（１３１４）から抽出した送信クロック周波数をクロック比較部（１２１２）へと通知する。なお、通知されるポート番号は、それぞれのクロック抽出部（１２０３）に予め記憶されていてもよいし、回線収容部（１２０１）から通知されてもよい。また、ＭＡＣフレームおよびＩＦＧ（１３１４）からクロックを抽出する手法は、適宜の手法を用いることができる。クロック比較部（１２１２）は、送信クロック周波数と装置内クロック発生部（１２１３）から得られた装置内クロックの周波数を比較して、その結果（クロック差）をクロック差テーブル（１２１１）に書き込む。
ポート０２へ送信されるＭＡＣフレームは、ＭＡＣ処理部（１２０５−２）を経由してポート番号識別部（１２０７−２）へと転送され、ポート番号識別部（１２０７−２）は、ＭＡＣフレームからポート番号を抽出してポート番号を制御部（１２１４）へと通知し、ポート番号を削除したＭＡＣフレームを送信バッファ（１２０８−２）へ転送する。制御部（１２１４）は、クロック差テーブル（１２１１）と、送信バッファ（１２０８−２）から通知される送信バッファ空き容量Ｅｂｕｆとを監視して、ＩＦＧ調整を行うか否かを判断する。また、制御部（１２１４）は、セレクタ（１２１０−２）を操作して、送信バッファ（１２０８−２）からＭＡＣフレームを選択し、またはＩＦＧ生成部（１２０９−２）から所定の長さのＩＦＧパターンを選択して、回線収容部（１２０１）およびポート０２を経由してＭＡＣフレームおよびＩＦＧ（１３１９）を端末Ｂ（１０１−２）へ送信する。ここで、ＩＦＧの長さが例えば１１バイトに調整される。なお、クロック差テーブル（１２１１）のテーブルフォーマットは、第２の実施の形態の図９で示したものと同じである。また、制御部（１２１４）は、制御端末（１２１５）により、パケット転送装置（１２００）全体の動作に関する設定データを入力し、記憶することが可能である。
【００４２】
図１４は、第３の実施の形態のパケット転送装置内で使用されるＭＡＣフレームの説明図である。
ＭＡＣフレームが転送される際には、例えば、ＭＡＣフレーム本体（以下単に、ＭＡＣフレームと記す。）（１４００−１〜２）と、ＭＡＣフレーム間に存在するＩＦＧ（１４０１−１〜２）が交互に繰り返して伝送される。ＭＡＣフレームは、例えば、ＭＡＣフレームの識別に使用されるプリアンブル／ＳＦＤ（１４０２）、送信元ＭＡＣアドレス（１４０３）、送信先ＭＡＣアドレス（１４０４）、ＶＬＡＮタグ（１４０５）、Ｔｙｐｅ／Ｌｅｎｇｔｈ（１４０６）、ペイロード（１４０７）、ＦＣＳ（１４０８）を含む。また、ＭＡＣフレームは、７６〜１５３０バイトの可変長フレームである。
なお、ＭＡＣフレームが含む各データの詳細については、イーサネット（登録商標）規格に規定されているため、詳細な説明は省略する。また、ＶＬＡＮタグ（１４０５）はオプションであり、ＭＡＣフレームはＶＬＡＮタグ（１４０５）を含まなくても良い。
また、プリアンブル／ＳＦＤ（１４０２）は、例えば、プリアンブル（１４０９）とＳＦＤ（１４１０）を含む。なお、ＭＡＣフレームが受信されたポート番号を書き込む領域（１４１２）として、例えば、プリアンブル（１４０９）の最終１バイトを使用することができる。また、新たなフィールドを設けるなどＭＡＣフレームの他の適宜の領域に、ポート番号を格納できるようにしてもよい。また、ＭＡＣフレームの送信時には、ポート番号（１４１２）は不要のため、制御部（１２１４）は、元のプリアンブル（１４０９、１４１５）に戻すために当該部分（ポート番号（１４１２））を書き換えることができる。
【００４３】
以下に、第３の実施の形態のパケット転送装置（１２００）の動作の詳細を図１３に従って説明する。
パケット転送装置（１２００）は、起動後、各ポートに接続された端末Ａ（１０１−１）および端末Ｂ（１０１−２）との間で、適宜の通信方式に基づいてネゴシエーションを実施し、回線種別および伝送速度等の設定を行う。第３の実施の形態においては、例えば、ポート０１−端末Ａ（１０１−１）間およびポート０２−対端末Ｂ（１０１−２）間の伝送速度は同一とし、その伝送速度をＢ（Ｈｚ）とする。また、ネゴシエーションで決定された伝送速度Ｂ（Ｈｚ）を実現するために、パケット転送装置（１２００）は、装置内クロック発生部（１２１３）に伝送速度Ｂ（Ｈｚ）を設定する。また、パケット転送装置（１２００）は、クロック差テーブル（１２１１）には、図１６（ａ）に示すように、初期状態として装置内クロック周波数（１６００）、送信クロック周波数（１６０２）およびクロック差（１６０３）の項目に例えばｎｕｌｌを設定し、受信待機状態になる。なお、ポート番号（１６０１）には、例えば、ｎｕｌｌを設定しなくてもよい。また、制御端末（１２１５）により、制御部（１２１４）は、例えば予め適宜の記憶部に送信バッファあふれ制御機能のＯＮ（有効）／ＯＦＦ（無効）の設定、バッファあふれしきい値Ｔｈｂｕｆ、バッファあふれ制御解除しきい値ＴｈｂｕｆＥの設定を行うことができる。
その後、端末Ａ（１０１−１）からパケット転送装置（１２００）にＭＡＣフレームおよびＩＦＧ（１３１４）の送信が開始される。このとき、例えば、端末Ａ（１０１−１）から送信されるＭＡＣフレームおよびＩＦＧ（１３１４）の長さは、ＭＡＣフレームは１５３０バイト、ＩＦＧは１２バイトとし、無限またはバッファあふれが発生しうる長時間にＭＡＣフレームおよびＩＦＧ（１３１４）の送信が繰り返されるものと仮定する。送信されたＭＡＣフレームおよびＩＦＧ（１３１４）が受信ポート０１に到着し、パケット転送装置（１２００）は、受信−送信処理を実行する。
【００４４】
図１５−１に、第３の実施の形態におけるパケット転送装置（１２００）の受信−送信処理のフローチャートを示す。
パケット転送装置（１２００）は、ポート０１にてＭＡＣフレームおよびＩＦＧ（１３１４）を受信し（Ｓ１５０１）、ＭＡＣフレームおよびＩＦＧ（１３１４）を回線収容部（１２０１）でパケット転送装置（１２００）に適した信号に変換して受信バッファ（１２０２−１）へ転送し（Ｓ１５０２）、受信バッファ（１２０２−１）はポート番号付加部（１２０４−１）へＭＡＣフレームを転送する（Ｓ１５０３）。ポート番号付加部（１２０４−１）は、ＭＡＣフレームのプリアンブル（１４０９）の最終１バイトのポート番号（１４１２）にポート０１の識別子（例えば、ポート番号）を書き込み（Ｓ１５０４）、ＭＡＣ処理部（１２０５−１）へＭＡＣフレームを転送する（Ｓ１５０５）。このように、ＭＡＣフレームの受信ポート番号をＭＡＣフレーム自身に埋めこむことで、転送先にＭＡＣフレームを転送する際に、このポート番号に基づいてクロック差テーブル（１２１１）より対応する送信クロック周波数を参照し、このＭＡＣフレームがいかなるクロックで伝送されてきたかを検知することが可能となる。そのため、パケット転送装置（１２００）は、バッファあふれ制御の処理を開始するトリガーとしてこのポート番号に基づくクロックを利用することが可能である。
【００４５】
さらに、ＭＡＣ処理部（１２０５−１）は、受信したＭＡＣフレームをパケット処理部（１２０６）へ転送する（Ｓ１５０６）。パケット処理部（１２０６）は、転送されたＭＡＣフレームの送信先を判定し、図１３の例ではポート０２に対応したＭＡＣ処理部（１２０５−２）へＭＡＣフレームを転送する（Ｓ１５０７）。例えば、パケット処理部（１２０６）は、ＭＡＣフレーム内の送信先ＭＡＣアドレス（１４０４）を参照して送信先を判定する。ＭＡＣ処理部（１２０５−２）は、ポート番号識別部（１２０７−２）へＭＡＣフレームを転送し（Ｓ１５０８）、ポート番号識別部（１２０７−２）は、ＭＡＣフレームのポート番号（１４１２）からポート番号を抽出して、抽出したポート番号を制御部（１２１４）へ通知するとともに、ＭＡＣフレームに書き込まれたポート番号（１４１２）をプリアンブルのビットパターンで上書きする（Ｓ１５０９）。例えば、イーサネット（登録商標）規格においてプリアンブル（１４０９）は、「１」と「０」が交互に続くビットパターンで表されるため、ポート番号識別部（１２０７−２）は、「１」と「０」が交互に続くビットパターンを１バイト分ポート番号（１４１２）に上書きする。ポート番号識別部（１２０７−２）は、ＭＡＣフレームを送信バッファ（１２０８−２）へ転送する（Ｓ１５１０）。パケット転送装置（１２００）は、セレクタ（１２１０−２）および回線収容部（１２０１）を経由してＭＡＣフレームを端末Ｂ（１０１−２）へ送信する（Ｓ１５１１、Ｓ１５１２）。また、受信−送信処理と並行して、パケット転送装置（１２００）は、クロック情報収集処理を実行する。
【００４６】
図１５−２に、第３の実施の形態におけるパケット転送装置（１２００）のクロック情報収集処理のフローチャートを示す。
ＭＡＣフレームおよびＩＦＧ（１３１４）は、回線収容部（１２０１）を経由してクロック抽出部（１２０３−１）へも転送される（Ｓ１５２１）。クロック抽出部（１２３０−１）は、ＭＡＣフレームおよびＩＦＧ（１３１４）のクロック周波数（以後、送信クロック周波数と呼ぶ。）をカウントして、送信クロック周波数と、ＭＡＣフレームおよびＩＦＧ（１３１４）を受信したポートの番号とをクロック比較部（１２１２）へ出力する（Ｓ１５２２）する。また、このとき、装置内クロック発生部（１２１３）は、装置内クロック周波数をクロック比較部（１２１２）へ出力する（Ｓ１５２３）。なお、装置内クロック周波数を出力するタイミングはＭＡＣフレームの受信時でもよいし、予め出力されるなど他の適宜のタイミングでもよい。クロック比較部（１２１２）は、これら送信クロック周波数と装置内クロック周波数の差分（クロック差）を算出する（Ｓ１５２４）。クロック比較部（１２１２）は、例えば、図１６（ｂ）に示すように、クロック差テーブル（１２１１）に受信ポート（ポート番号１６０１）に対応して送信クロック周波数（１６０２０１）、クロック差（１６０３０１）を書き込む（Ｓ１５２５）。また、クロック比較部（１２１２）は、装置内クロック周波数（１６００）をクロック差テーブル（１２１１）に記憶する。なお、クロック差の算出の処理（Ｓ１５２４）およびクロック差テーブル（１２１１）への書き込みの処理（Ｓ１５２５）は、任意の間隔で実施することができる。また、上述のクロック情報収集処理は、他の受信ポートについても実施されることができる。また、パケット転送装置（１２００）が、上述のＭＡＣフレームの受信−送信処理をしている間に、制御部（１２１４）は、送信バッファあふれ監視処理を実施する。
【００４７】
図１５−３に、第３の実施の形態におけるパケット転送装置（１２００）の送信バッファあふれ監視処理のフローチャートを示す。
制御部（１２１４）は、ポート番号識別部（１２０７−２）から通知されてくるポート番号を受信する（Ｓ１５３１）。制御部（１２１４）は、受信したポート番号に基づいてクロック差テーブル（１２１１）の対応するクロック差（１６０３）を参照する（Ｓ１５３２）。制御部（１２１４）は、ポート番号に対応するクロック差（１６０３）に基づき装置内クロック周波数（１６００）よりも送信クロック周波数（１６０２）が速いか否かを判断する（Ｓ１５３３）。例えば、クロック差（９０３）の値が正の値の場合、送信クロック周波数（１６０２）が装置内クロック周波数（１６００）よりも速いと判断することができる。装置内クロック周波数（１６００）よりも送信クロック周波数（１６０２）が速くない場合、制御部（１２１４）は、通常のバッファ制御を実施する（Ｓ１５４１）。通常のバッファ制御では、例えば、制御部（１２１４）は、ＩＦＧ調整をしていない予め定められたＩＦＧ長（例えば、１２バイト）のＩＦＧを送出する。一方、装置内クロック周波数（１６００）よりも送信クロック周波数（１６０２）が速い場合、制御部（１２１４）は、送信バッファ（１２０８−２）から通知される送信バッファ空き容量Ｅｂｕｆとバッファあふれしきい値Ｔｈｂｕｆを比較する（Ｓ１５３４）。なお、送信バッファ（１２０８−２）は、例えば、ＭＡＣフレームの書き込みがあったタイミングで送信バッファ空き容量Ｅｂｕｆを制御部（１２１４）に通知する。なお、通知のタイミングは予め定められた周期など適宜のタイミングでもよい。このとき、送信バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆより大きい場合は、クロック差によるバッファあふれは発生しないので、制御部（１２１４）は、通常のバッファ制御を実施する（Ｓ１５４１）。一方、送信バッファ空き容量Ｅｂｕｆがバッファあふれしきい値Ｔｈｂｕｆ以下の場合は、制御部（１２１４）は送信バッファあふれが発生し得ると判断し、第１の実施の形態と同様にバッファあふれ制御（ＩＦＧ調整）を開始する。具体的には、制御部（１２１４）は、送信バッファ（１２０８−２）の動作状況を確認し、現在ＭＡＣフレームを送出中であるか否かを判断する（Ｓ１５３５）。ＭＡＣフレーム送出中であれば、制御部（１２１４）は、当該ＭＡＣフレームの送出終了まで待機する（Ｓ１５３６）。制御部（１２１４）は、当該ＭＡＣフレームの送出の終了後、セレクタ（１２１０−２）をＩＦＧ生成部（１２０９−２）側へ切替えて（Ｓ１５３７）、ＩＦＧを送出する（Ｓ１５３８）。このとき、制御部（１２１４）は、ＩＦＧ長（Ｌｉｆｇ）を第１の実施の形態と同様の方法により算出することができる。例えば、制御部（１２１４）は、１１バイトとなるまでＩＦＧを送出後、セレクタ（１２１０−２）を送信バッファ（１２０８−２）側へ切替えて（Ｓ１５３９）、ＭＡＣフレームを送出し（Ｓ１５４０）、送信バッファ空き容量Ｅｂｕｆとバッファあふれ制御解除しきい値ＴｈｂｕｆＥを比較する（Ｓ１５４５）。なお、例えば、制御部（１２１４）は、算出した長さ（Ｌｉｆｇ）のＩＦＧを生成するようにＩＦＧ生成部（１２０９−２）に要求し、ＩＦＧ送出完了時にセレクタ（１２１０−２）を切替えることでＩＦＧ調整を行ってもよい。送信バッファ空き容量Ｅｂｕｆがバッファあふれ制御解除しきい値ＴｈｂｕｆＥ以上である場合、制御部（１２１４）は、通常のバッファ制御を実施する（Ｓ１５４１）。一方、送信バッファ空き容量Ｅｂｕｆがバッファあふれ制御解除しきい値ＴｈｂｕｆＥより小さい場合、制御部（１２１４）は、ステップＳ１５３５に戻り、送信バッファあふれ監視処理を継続する。また、ステップＳ１５３５において送信バッファ（１２０８−２）の動作状態がＭＡＣフレーム出力中でない場合、すなわちＩＦＧパターン送出中の場合、制御部（１２１４）は、既に１２バイト以上のＩＦＧが出力されているか否かを判断する（Ｓ１５４３）。既に１２バイト以上のＩＦＧが出力されている場合、ＩＦＧの送出が終了しているため、制御部（１２１４）は、直ちにセレクタ（１２１０−２）を送信バッファ（１２０８−２）側へ切替えて、ＩＦＧ送出を停止し（Ｓ１５３９）、ＭＡＣフレームを送出した後（Ｓ１５４０）、ステップＳ１５３５に戻り、送信バッファあふれ監視処理を継続し、次のＩＦＧ送出のタイミングでＩＦＧ調整を行う。一方、ステップＳ１５４３において、送出済みのＩＦＧがＩＦＧ長Ｌｉｆｇ（例えば、１２バイト）よりも短い場合は、不足分の長さのＩＦＧを送出した後（Ｓ１５４４）、制御部（１２１４）はセレクタ（１２１０−２）を送信バッファ（１２０８−２）側へ切替えてしてＩＦＧ送出を停止し（Ｓ１５３９）、ＭＡＣフレームを送出した後（Ｓ１５４０）、ステップＳ１５３５に戻り、送信バッファあふれ監視処理を継続し、次のＩＦＧ送出のタイミングでＩＦＧ調整を行う。
【００４８】
以上の処理により、第３の実施の形態では、他のパケット転送装置が送信するＭＡＣフレームの送信クロック周波数が装置内クロック周波数より速く、送信バッファがあふれることが予測される場合に、ＩＦＧの長さを短くすることで送信バッファから当該ＭＡＣフレームデータを送出する間隔を詰める。これにより、送信バッファの空く時間が短くなり、バッファあふれを防ぐパケット転送装置を提供することができる。また、ＭＡＣフレーム内に格納したポート番号に基づいてクロック差テーブル（１２１１）を参照することにより、装置内クロック周波数よりも速い送信クロック周波数のＭＡＣフレームに対してのみＩＦＧの長さを調整することができる。また、上述の動作は、ポート０１−ポート０２間だけではなく、他のポートの組合せでも実行することができる。
また、第３の実施の形態において短くするＩＦＧの長さに制限はなく０にすることも可能であるが、イーサネット（登録商標）規格ではＩＦＧは１２バイト以上であることを推奨しており、５バイトまではＩＦＧを短縮可能なことが規格上許されているため、５バイトまで短くすることが推奨される。しかし、５バイト未満のＩＦＧを使用するかは対向装置の仕様に依存するため、パケット転送装置を設定する際に、例えば、５バイト未満のＩＦＧを使用するバッファあふれ制御機能のオン（有効）／オフ（無効）を選択できるようにしてもよい。
【産業上の利用可能性】
【００４９】
本発明は、例えば、イーサネット（登録商標）規格に準拠したインタフェースをもつルータ、Ｌ２ＳＷ、Ｌ３ＳＷ、ハブ、ＮＩＣ等の機器・転送装置等に適用可能である。
【符号の説明】
【００５０】
１００、７００、１２００  パケット転送装置
１０１  端末
１０２  他ネットワーク
２０１、７０１、１２０１  回線収容部
２０２、７０２、１２０２  受信バッファ
２０３、７０４、１２０５  ＭＡＣ処理部
２０４、７０５、１２０６  パケット処理部
２０５、７０６、１２０８  送信バッファ
２０６、７０７、１２０９  ＩＦＧ生成部
２０７、７０８、１２１０  セレクタ
２０８、７１１、１２１３  装置内クロック発生部
２０９、７１２、１２１４  制御部
２１０、７１３、１２１５  制御端末
７０３、１２０３  クロック抽出部
７０９、１２１１  クロック差テーブル
７１０、１２１２  クロック比較部
１２０４  ポート番号付加部
１２０７  ポート番号識別部
【図１】
2010166138.tif 000003
【図２】
2010166138.tif 000004
【図３】
2010166138.tif 000005
【図４】
2010166138.tif 000006
【図５−１】
2010166138.tif 000007
【図５−２】
2010166138.tif 000008
【図５−３】
2010166138.tif 000009
【図５−４】
2010166138.tif 000010
【図６−１】
2010166138.tif 000011
【図６−２】
2010166138.tif 000012
【図７】
2010166138.tif 000013
【図８】
2010166138.tif 000014
【図９】
2010166138.tif 000015
【図１０−１】
2010166138.tif 000016
【図１０−２】
2010166138.tif 000017
【図１０−３】
2010166138.tif 000018
【図１１】
2010166138.tif 000019
【図１２】
2010166138.tif 000020
【図１３】
2010166138.tif 000021
【図１４】
2010166138.tif 000022
【図１５−１】
2010166138.tif 000023
【図１５−２】
2010166138.tif 000024
【図１５−３】
2010166138.tif 000025
【図１６】
2010166138.tif 000026