(57)【要約】【課題】通信装置におけるオーバーフローを高精度に防止し、通信装置自体のコスト低減を図ることができるフロー制御方法を提供することを目的とする。【解決手段】通信相手である対向装置に対してデータ送信の停止を指示するフロー制御用データ信号の割込み送信の実施が可能か否かを通信装置から対向装置に対して送信中のプロトコル・データ・ユニット（ＰＤＵ）の未送信データ量に基づいて決定する。【選択図】図３
2010063070.tif 000002
【特許請求の範囲】
【請求項１】
プロトコル・データ・ユニット（ＰＤＵ）毎にデータの送受信を行うデータ通信において、通信装置の受信バッファ内に蓄積されたデータ量が所定閾値を超えた場合に、前記通信装置の通信相手である対向装置に対してデータ送信の停止を指示するフロー制御用データ信号を生成して前記対向装置に送信し、前記フロー制御用データ信号に基づいて所定の時間だけ前記対向装置から前記通信装置に対するデータ送信を停止するフロー制御方法であって、
前記通信装置から前記対向装置に対して送信中のＰＤＵの未送信データ量に基づいて前記フロー制御用データ信号を前記対向装置に割込み送信するか否かを決定することを特徴とするフロー制御方法。
【請求項２】
前記送信中のＰＤＵの未送信データ量と予め設定された閾データ量との比較結果に基づいて前記フロー制御用データ信号を前記対向装置に割込み送信するか否かを決定することを特徴とする請求項１に記載のフロー制御方法。
【請求項３】
前記閾データ量は、前記送信中のＰＤＵの送信を待って前記フロー制御用データ信号が前記通信装置から前記対向装置に対して送信された場合に、前記フロー制御用データ信号の送信後に前記通信装置が前記対向装置から受信する最大のデータ量に基づいて決定されることを特徴とするフロー制御方法。
【請求項４】
前記フロー制御用データ信号の割込み送信を行なう場合に、前記送信中のＰＤＵの送信がアボート処理されることを特徴とする請求項１乃至３のいずれか１に記載のフロー制御方法。
【請求項５】
アボート処理された送信における前記ＰＤＵが、前記フロー制御用データ信号の送信後に再送信されることを特徴とする請求項４に記載のフロー制御方法。
【請求項６】
前記通信装置は、前記フロー制御用データ信号送信後に、前記対向装置からのデータ送信を再開させるための送信再開指示用データ信号を生成して前記対向装置に送信することを特徴とする請求項１乃至５のいずれか１に記載のフロー制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット又はフレーム等のプロトコル・データ・ユニット（ＰＤＵ：Protocol Data Unit）毎にデータの送受信を行うデータ通信のフロー制御方法に関するものである。
【背景技術】
【０００２】
ＩＥＥＥ（Institute of Electrical and Electronics Engineers）８０２．３ｘ規格で規定されているイーサネットにおいて使用される通信装置は、受信フレームを一旦蓄積しておくバッファメモリ（受信バッファ）を有している。このような通信装置は、受信したフレームの処理をフレームの受信順序に従って実施する。しかしながら、バッファメモリの容量は有限であり、蓄積可能なデータ量は決められているため、処理データ量よりも受信データ量が多い状態が続くと、未処理の受信データ量がバッファメモリの容量を超えてしまい、蓄積することが出来ない受信フレームは処理されること無く廃棄される（すなわち、オーバーフロー）。このような状態では、通信装置の処理能力を超えて受信されるフレームが消失するため、通信装置によるデータ通信が正確に実施されない。
【０００３】
上記のような輻輳廃棄を避ける方法として、全二重通信の場合には、ＩＥＥＥ８０２．３ｘのＭＡＣ制御プロトコルで規定されるフロー制御を行うことが従来から知られている。具体的には、通信装置の受信バッファに受信バッファの閾値以上のデータ量が蓄積されると、通信の相手側の通信装置にポーズフレーム（Ｐａｕｓｅフレーム）が送信され、ポーズフレームを受信した通信装置からのフレーム送信が所定時間だけ停止される。特許文献１には、上記のようなフロー制御方法及びそれに使用される通信装置が開示されている。
【０００４】
しかしながら、上述したフロー制御方法においては、以下のような問題が生じていた。図１を参照しつつ、従来のフロー制御方法における問題点を説明する。
【０００５】
図１に示されているように、通信装置Ａが通信装置（対向装置）Ｂからｎ番目のフレームを受信すると、ｎ番目のフレームが通信装置Ａの受信バッファに蓄積される。ｎ番目のフレームが受信バッファに蓄積された時点で、受信バッファの容量の閾値（ポーズフレーム送信閾値）までフレームが蓄積すると、通信装置Ａは対向装置Ｂにポーズフレームを送信することになる。しかしながら、通信装置Ａは、ｍ＋１番目のフレームを対向装置Ｂに送信中であるため、ｍ＋１番目のフレームの送信終了後にポーズフレームを送信することになる。このようなポーズフレームの送信遅延によって、通信装置Ａはポーズフレームの送信待機中にｎ＋１番目のフレームを受信し、受信バッファの容量の閾値を超えてフレームを蓄積することになる。
【０００６】
また、通信装置Ａからポーズフレームが送信された時点において、対向装置Ｂからｎ＋２番目のフレームが送信中の場合には、対向装置Ｂのフレームの送信は、ｎ＋２番目のフレームの送信完了後に停止される。すなわち、対向装置Ｂは、ｎ＋３番目以降のフレームの送信を停止することになる。従って、通信装置Ａは、上述したｎ+１番目のフレームに続いてｎ＋２番目のフレームも受信バッファに蓄積することになる。
【０００７】
上記した通信装置Ａにおけるポーズフレームの送信遅延により、受信バッファの容量の閾値を超えて２つのフレームを受信バッファに蓄積する必要があるため、受信バッファの容量から転送可能な最大フレームサイズの２倍のデータ量を減じた値を閾値に設定する必要があった。すなわち、通信装置は、バッファの空き容量に十分な余裕がある状態においてポーズフレームの送信起動を開始する必要があった。これによって、通信装置は大容量の受信バッファを備えることが必要となるため、通信装置自体のコストが上昇する問題点があった。
【０００８】
なお、当該減ずるデータ量を転送可能なフレームの最大サイズの２倍とする理由は、ｎ＋１番目及びｎ＋２番目のフレームがそれぞれ転送可能な最大フレームサイズである場合でもオーバーフローを防止するためである。
【特許文献１】特開２００４−７１８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、以上の如き事情に鑑みてなされたものであり、通信装置におけるオーバーフローを高精度に防止し、通信装置自体のコスト低減を図ることができるフロー制御方法を提供する。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明のフロー制御方法は、プロトコル・データ・ユニット（ＰＤＵ）毎にデータの送受信を行うデータ通信において、通信装置の受信バッファ内に蓄積されたデータ量が所定閾値を超えた場合に、通信装置の通信相手である対向装置に対してデータ送信の停止を指示するフロー制御用データ信号を生成して対向装置に送信し、フロー制御用データ信号に基づいて所定の時間だけ対向装置から通信装置に対するデータ送信を停止するフロー制御方法であって、通信装置から対向装置に対して送信中のＰＤＵの未送信データ量に基づいてフロー制御用データ信号を対向装置に割込み送信するか否かを決定することを特徴とする。
【発明の効果】
【００１１】
本発明のフロー制御方法によれば、通信相手である対向装置に対するデータ送信の停止を指示するフロー制御用データ信号の割込み送信の実施が可能か否かを通信装置から対向装置に対して送信中のＰＤＵの未送信データ量に基づいて決定することにより、通信装置におけるオーバーフローを高精度に防止し、通信装置自体のコスト低減を図ることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施例について添付図面を参照しつつ詳細に説明する。
【実施例】
【００１３】
先ず、図２を参照しつつ、本発明の実施例であるフロー制御方法が適用される通信装置の構成を説明する。図２は、本発明の実施例であるフロー制御方法が適用される通信装置の構成を示すブロック図である。
【００１４】
図２に示されているように、通信装置１０と通信装置（対向装置）２０とは、伝送路３０を介して接続されている。通信装置１０と通信装置２０とは、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）８０２．３ｘ規格で規定されたイーサネットで使用される通信装置であり、ＩＥＥＥ８０２．３ｘ規格に準拠してフレーム毎に通信を行う。
【００１５】
通信装置１０は、送信バッファ部１１、送信フレーム管理部１２、受信バッファ部１３及び受信フレーム管理部１４から構成されている。通信装置２０は、通信装置１０と同様の構成であり、送信バッファ部２１、送信フレーム管理部２２、受信バッファ部２３及び受信フレーム管理部２４から構成されている。
【００１６】
送信バッファ部１１は、送信用のフレームを一時的に蓄積する。また、送信バッファ部１１は、送信フレーム管理部１２の送信指示及び送信停止指示に応じて、送信フレーム管理部１２に対してフレームの送信及び送信停止を行う。
【００１７】
送信フレーム管理部１２は、送信バッファ部１１にフレームの送信及び送信停止を指示する。また、送信フレーム管理部１２は、受信バッファ部１３の蓄積データ量が閾値を超えた場合に通知される信号に応じ、フレームの送信停止を指示するためのフロー制御用データ信号であるポーズフレーム（Ｐａｕｓｅフレーム）を生成する。更に、送信フレーム管理部１２は、生成するポーズフレーム内のデータを使用して送信停止時間を指定することができる。送信フレーム管理部２１は、送信バッファ部１１から供給されるフレームと生成したポーズフレームとから一方を選択し、選択したフレームを伝送路３０を介して通信装置２０に送信する。更に、送信フレーム管理部２１は、受信フレーム管理部１４からの送信停止指示に応じてフレームの送信を停止する。なお、送信フレーム管理部１２は、送信停止時間を「０」に指定することで送信再開を指示することもできる。例えば、通信装置１０は、通信装置２０に対してポーズフレームを送信した後に、フレームの送信再開を要求するための送信再開指示用データ信号を生成し、当該送信再開指示用データ信号を通信装置２０に送信することができる。これによって、通信装置２０から通信装置１０へのフレームの送信が再開されることになる。
【００１８】
また、送信フレーム管理部１２は、受信バッファ部１３の蓄積データ量が閾値を超えた場合に通知される信号に応じて、送信中のフレームの全データ量（すなわち、フレームサイズ）及び送信済みデータ量から未送信データ量の算出を行う。ここで、送信フレーム管理部１２は、送信中のフレームのヘッダ情報からフレームの全データ量を確認することができる。また、送信フレーム管理部１２は、常に各フレームの送信状況を監視しているため、蓄積データ量が閾値を超えた旨の通知を受けた時点における送信中のフレームの送信済みデータ量を取得することができる。送信フレーム管理部１２は、当該算出した未送信データ量と予め設定された未送信出データ量の閾データ量（アボートデータ残量閾値）との比較を行う。送信フレーム管理部１２は、未送信データ量がアボートデータ残量閾値よりも大きい場合に、送信バッファ部１１にフレームの送信を中止させ、送信が中止されたフレームを送信済みデータのみからなるフレームとしてフレーム送信を完了させる（すなわち、アボート処理を実行する）。その後、送信フレーム管理部１２は、生成したポーズフレームを通信装置２０に送信する。このように、送信中であるフレームの送信がアボート処理され、ポーズフレームの送信が割り込むことにより、通信装置２０からのフレームの送信が早期に停止される。
【００１９】
一方、送信フレーム管理部１２は、未送信データ量がアボートデータ残量閾値よりも小さい場合に、送信中であるフレームの送信完了を待ち、生成したポーズフレームを通信装置２０に送信する。このように、未送信データ量がアボートデータ残量閾値より小さい場合においてアボート処理を実施せず、フレーム送信完了後にポーズフレームの送信を行うことによって、異常フレームの送信及びフレームの再送信の回数が抑制される。これにより、フレームの再送信処理に伴うデータ転送レートの低下が抑制され、送信バッファ１１のフレーム滞留が防止される。すなわち、上述した場合におけるアボート処理を行わないことは、送信バッファ１１におけるオーバーフロー及びフレーム廃棄を避ける効果がある。
【００２０】
なお、上述したアボートデータ残量閾値は、例えば、通信装置１０の入力部（図示せず）の入力信号、又は中央制御部（図示せず）からの信号によって変更することができる設定値である。また、上述したアボートデータ残量閾値は、例えば、送信中のフレームの送信を待ってポーズフレームが通信装置１０から通信装置２０に対して送信された場合に、ポーズフレーム送信後に通信装置１０が通信装置２０から受信する最大のデータ量に基づいて決定される。
【００２１】
受信フレーム管理部１４は、通信装置２０から供給されるフレームを識別する。例えば、通信装置２０から通常のフレームが供給された場合には、受信フレーム管理部１４は、当該供給されたフレームを受信バッファ部１３に一旦蓄積する。また、通信装置２０からポーズフレームが供給された場合には、受信フレーム管理部１４は、供給されたポーズフレーム内の情報（停止時間等）に基づいて送信フレーム管理部１２にフレームの送信停止指示及び停止時間を指示する。
【００２２】
受信バッファ部１３は、受信フレーム管理部１４から供給されるフレームを一時的に蓄積する。また、受信バッファ部１３は、蓄積したデータ量が予め設定されたバッファ容量の閾値（バッファ閾値）を超えた場合に、送信フレーム管理部１２に蓄積データ量がバッファ閾値を超えたことを通知するとともに、ポーズフレームの送信を要求する。上述したバッファ閾値は、通信装置１０の処理能力に応じて変更することができる。例えば、バッファ閾値は、通信装置１０の入力部（図示せず）の入力信号、又は制御ＣＰＵ（図示せず）からの信号によって変更される。
【００２３】
なお、通信装置２０は通信装置１０と同様の構成であるため、通信装置２０の各構成部分の説明は省略する。
【００２４】
次に、図３を参照しつつ、本発明の実施例であるフロー制御方法を説明する。
【００２５】
受信バッファ部１３は、バッファ内の蓄積データ量を常時監視する（ステップＳ１）。更に、受信バッファ部１３は、バッファ内の蓄積データ量がバッファ閾値を超えたかを判別する（ステップＳ２）。バッファ内の蓄積データ量がバッファ閾値を超えていない場合（ステップＳ２：Ｎｏ）には、受信バッファ部１３は、引き続きバッファ内の蓄積データ量の監視を行う。バッファ内の蓄積データ量がバッファ閾値を超えた場合（ステップＳ２：Ｙｅｓ）には、受信バッファ部１３は、送信フレーム管理部１２にバッファ内の蓄積データ量がバッファ閾値を超えたことを通知するとともに、ポーズフレームの送信を要求する（ステップＳ３）。
【００２６】
受信バッファ部１３から上記通知を受けた送信フレーム管理部１２は、現時点においてフレームが送信中であるか否かを確認する（ステップＳ４）。送信バッファ部１１からフレームが送信中である場合（ステップＳ４：Ｙｅｓ）には、送信フレーム管理部１２は、送信中のフレームのヘッダ情報から当該フレームの全データ量（すなわち、フレームサイズ）を取得する。また、送信フレーム管理部１２は、送信中のフレームを監視し、送信中であるフレームの送信済みデータ量を取得する。更に、送信フレーム管理部１２は、送信中のフレームの全データ量から既に送信済みのデータ量を減ずることにより、送信中のフレームの未送信データ量を算出する（ステップＳ５）。
【００２７】
次に、送信フレーム管理部１２は、ステップＳ５で算出された未送信データ量と予め設定されたデータ量であるアボートデータ残量閾値とを比較し、未送信データ量が設定値よりも大きいか否かを判定する（ステップＳ６）。未送信データ量がアボートデータ残量閾値より大きい場合（ステップＳ６：Ｙｅｓ）には、送信フレーム管理部１２は、送信バッファ部１１に送信中であるフレームの送信停止指示を行う（ステップＳ７）。送信バッファ部１１は、送信フレーム管理部１２からの送信停止指示に応じて、送信中であるフレームの送信を停止する（ステップＳ８）。
【００２８】
続いて、送信フレーム管理部１２は、ステップＳ８における送信が停止されたフレーム（すなわち、未送信データを含むフレーム）を、未送信データ量を減じたデータ量（すなわち送信済みデータ量）のみからなるフレームとして送信を完了させる。これにより、送信中であるフレームの送信がアボート処理される（ステップＳ９）。なお、このような不完全なフレームは、通信の相手側である通信装置２０の受信フレーム管理部２４において、イーサネット規格のフレームチェックシーケンスの異常フレームとして認識され、その後に廃棄される。更に、送信フレーム管理部１１は、所定の送信停止時間をデータに含むポーズフレームを生成し、伝送路３０を介して通信装置２０に送信する（ステップＳ１０）。通信の相手側である通信装置２０の受信フレーム管理部２４は、当該ポーズフレームを受信すると、受信したポーズフレーム内の情報（停止時間等）に基づいて送信フレーム管理部２２にフレームの送信停止指示及び停止時間を指示する。ポーズフレームの送信後、送信フレーム管理部１２は、送信バッファ部１１にアボート処理したフレームの先頭データからの再送信を指示する（ステップＳ１１）。送信バッファ部１１は、上記再送信指示に基づき、送信を停止した時点において送信中であったフレームを送信フレーム管理部１２に再度供給する（ステップＳ１２）。その後、送信バッファ部１１は、一時的に蓄積されたフレームの送信を続ける。
【００２９】
このように、送信中のフレームのアボート処理が実行され、ポーズフレームの送信が割り込むことにより、通信装置２０からのフレームの送信が早期に停止される。
【００３０】
一方、未送信データ量が設定値より小さい場合（ステップＳ６：Ｎｏ）には、送信フレーム管理部１２は、送信中であるフレームの送信完了を待つ（ステップＳ１３）。続いて、送信フレーム管理部１２は、次に送信されるフレーム（次フレーム）の送信の停止を送信バッファ部１１に指示する（ステップＳ１４）。なお、送信フレーム管理部１２は、フレーム送信中に次フレームの送信の停止を指示しても良い。送信バッファ部１１は、送信フレーム管理部１２からの送信停止指示に応じて、次フレームの送信を停止する（ステップＳ１５）。続いて、送信フレーム管理部１１は、所定の送信停止時間をデータに含むポーズフレームを生成し、伝送路３０を介して通信装置２０に送信する（ステップＳ１６）。通信の相手側である通信装置２０の受信フレーム管理部２４は、当該ポーズフレームを受信すると、受信したポーズフレーム内の情報（停止時間等）に基づいて送信フレーム管理部２２にフレームの送信停止指示及び停止時間を指示する。ポーズフレームの送信後、送信フレーム管理部１２は、フレームの送信再開を送信バッファ１１に指示する（ステップＳ１７）。送信バッファ部１１は、次フレームからフレームの送信を再開する（ステップＳ１８）。
【００３１】
このように、未送信データ量がアボートデータ残量閾値より小さい場合においてアボート処理を実施せず、フレーム送信完了後にポーズフレーム送信を行うことによって、異常フレームの送信及びフレームの再送信の回数が抑制される。これにより、フレームの再送信処理に伴うデータ転送レートの低下が抑制され、送信バッファ１１のフレーム滞留が防止される。すなわち、上述した場合におけるアボート処理を行わないことは、送信バッファ１１におけるオーバーフロー及びフレーム廃棄を避ける効果がある。
【００３２】
また、送信バッファ部１１からフレームが送信中でない場合（ステップＳ４：Ｎｏ）には、送信フレーム管理部１２は、送信バッファ部１１に次に送信される次フレームの送信停止を指示する（ステップＳ１４）。その後、送信バッファ部１１による次フレームの送信停止（ステップＳ１５）、送信フレーム管理部１２によるポーズフレームの送信（ステップＳ１６）、送信フレーム管理部１２による次フレームの送信開始指示（ステップＳ１７）、送信バッファ部１１による次フレームの送信（ステップ１８）が順次行われる。なお、ステップＳ１４からステップＳ１８までは上記した内容と同一であるため、その説明は省略する。
【００３３】
以上のように、本発明のフロー制御方法によれば、通信相手である対向装置に対してデータ送信の停止を指示するフロー制御用データ信号の割込み送信の実施が可能か否かを通信装置から対向装置に対して送信中のＰＤＵの未送信データ量に基づいて決定することにより、通信装置におけるオーバーフローを高精度に防止し、通信装置自体のコスト低減を図ることができる。
【００３４】
なお、上述した実施例においては、通信装置間の通信に使用されるデータ転送の単位をフレームの場合として説明したが、通信装置間の通信に使用されるデータ転送は、フレーム以外のプロトコル・データ・ユニット（ＰＤＵ：Protocol Data Unit）、例えば、パケット又はセグメントの転送単位で行なわれても良い。更に、上述した実施例においてはＩＥＥＥ８０２．３ｘ規格で規定されたイーサネットによる通信の場合を説明したが、本発明のフロー制御方法は、Ｐｕａｓｅフレームのようなフロー制御用の専用データを送信することにより、通信相手の装置からのデータ送信を停止させるようフロー制御を実行する全ての通信方式及びその通信を行う装置に関して適用することができる。
【図面の簡単な説明】
【００３５】
【図１】従来のフロー制御方法におけるタイムチャート図である。
【図２】本発明の実施例であるフロー制御方法が適用される通信装置の構成を示すブロック図である。
【図３】本発明の実施例であるフロー制御方法が適用される通信装置のシーケンス図である。
【符号の説明】
【００３６】
１０  通信装置
１１  送信バッファ部
１２  送信フレーム管理部
１３  受信バッファ部
１４  受信フレーム管理部
２０  通信装置（対向装置）
２１  送信バッファ部
２２  送信フレーム管理部
２３  受信バッファ部
２４  受信フレーム管理部
３０  伝送路
【図１】
2010063070.tif 000003
【図２】
2010063070.tif 000004
【図３】
2010063070.tif 000005