(57)【要約】クレジット・ベースで制御されるフロー制御装置に関し、データ又はクレジットの廃棄に起因する、対向装置との間のデッドロック状態を無くすために、送信側フロー制御装置１０のフロー管理テーブル１２が、対向装置２０へのデータ送信数１２ａと、対向装置２０からのクレジット受信数１２ｂとを記憶し、マネージメント部が、対向装置２０に対して補正情報要求を送信し、受信した補正情報に基づき、データ送信数１２ａ及びクレジット受信数１２ｂを補正する。又は、受信側フロー制御装置のマネージメント部が、対向装置１０からの補正情報要求に対して、対向装置１０のデータ送信数１２ａ及びクレジット受信数１２ｂに対する補正情報（例えば、データ送信数１２ａとデータ受信数２２ａとの差分、及びクレジット送信数２２ｂ）を通知する。
2004107699.tif 000002
【特許請求の範囲】
【請求項１】
対向装置へ送信したデータの数と、該対向装置から受信したクレジットの数を記憶するフロー管理テーブルと、
該対向装置に対して補正情報要求を送信し、該対向装置が応答した該補正情報に基づき、該フロー管理テーブル内の該データ送信数及び該クレジット受信数を補正するマネージメント部と、
を備えたことを特徴とする送信側フロー制御装置。
【請求項２】
請求の範囲１において、
該補正情報要求が該データ送信数を含み、該補正情報が、該データ送信数と該対向装置のデータ受信数との差分、及び該対向装置のクレジット送信数であることを特徴とした送信側フロー制御装置。
【請求項３】
請求の範囲１において、
該マネージメント部が、該補正情報要求を送信した時点での該データ送信数を記憶し、該補正情報が該対向装置のデータ受信数及びクレジット送信数であることを特徴とした送信側フロー制御装置。
【請求項４】
請求の範囲１において、
該マネージメント部が、該補正情報要求を所定の時間間隔で所定の形式で送信することを特徴とした送信側フロー制御装置。
【請求項５】
請求の範囲１において、
該マネージメント部が、該補正情報要求を送信した後、所定の時間以内に該補正情報を受信しないとき、再度、該補正情報要求を送信することを特徴とした送信側フロー制御装置。
【請求項６】
請求の範囲１において、
該データを一時記憶する１つ又は複数のキューをさらに有し、
該フロー管理テーブルが、各キューに対応する該データ送信数及び該クレジット受信数を管理し、該マネージメント部が、各キュー毎の該補正情報要求を送信することを特徴とした送信側フロー制御装置。
【請求項７】
対向装置から受信したデータを一時的に記憶するキューと、
該データの受信数と、該対向装置に送信したクレジットの数とを記憶するフロー管理テーブルと、
該対向装置からの補正情報要求に対して、補正情報を応答するマネージメント部と、
を備えたことを特徴とする受信側フロー制御装置。
【請求項８】
請求の範囲７において、
該補正情報要求がデータ送信数を含み、該補正情報が、該対向装置のデータ送信数とデータ受信数との差分、及びクレジット送信数であることを特徴とした受信側フロー制御装置。
【請求項９】
請求の範囲７において、
該補正情報が、該データ受信数及びクレジット送信数であることを特徴とした受信側フロー制御装置。
【請求項１０】
請求の範囲７において、
該キューを複数個有し、
該フロー管理テーブルが、各キュー毎の該データ受信数及び該クレジット送信数を管理し、該マネージメント部が、各キュー毎の補正情報要求に対する該補正情報を送信することを特徴とした受信側フロー制御装置。
【発明の詳細な説明】
【技術分野】  本発明はフロー制御装置に関し、特に、クレジット・ベースで制御されるフロー制御装置に関するものである。
近年、通信技術の発展に伴い、通信速度はますます高速化されており、このような、高速化された通信においては、データを廃棄することなく通信するためのフロー制御がますます重要になって来ている。
【背景技術】  ２つの装置間において、データの転送を行う際に用いられるフロー制御方式には、（１）ＸＯＮ／ＸＯＦＦ方式、及び（２）クレジット・ベース・フロー制御（Ｃｒｅｄｉｔ  Ｂａｓｅ  Ｆｌｏｗ  Ｃｏｎｔｒｏｌ）方式等がある。
（１）ＸＯＮ／ＸＯＦＦ方式：受信側のフロー制御装置が、ＸＯＮ（送信指示）又はＸＯＦＦ（送信中止）を送信側のフロー制御部に通知し、送信側フロー制御装置は、この指示に基づきデータの送信／送信中止を行う。このＸＯＮ／ＸＯＦＦ方式では、送受信間のタイムラグに起因するオーバフローが発生する可能性がある。
（２）クレジット・ベース・フロー制御方式：図１０に、一般的なクレジット・ベース・フロー制御システム１００ｚを示す。このシステム１００ｚは、送信側フロー制御装置１０ｚ、受信側フロー制御装置２０ｚ、及びこれらのフロー制御装置１０ｚ，２０ｚ間を接続する伝送路２００＿１，２００＿２で構成されている。
送信側フロー制御装置１０ｚは、キュー１１＿１〜１１＿ｎ（以下、符号１１で総称することがある。）、及びフロー管理テーブル１２ｚで構成されている。フロー管理テーブル１２ｚは、各キュー１１に対応したデータ送信数１２ａ、クレジット受信数１２ｂ、及び閾値１２ｃで構成されている。
受信側フロー制御装置２０ｚは、キュー２１＿１〜２１＿ｎ（以下、符号２１で総称することがある。）を備えている。これらのキュー２１＿１〜２１＿ｎは、それぞれ、送信側のキュー１１＿１〜１１＿ｎに対応している。
例えば、送信側のキュー１１＿１に一時記憶されたデータ７１は、伝送路２００＿１を経由して受信側フロー制御装置２０ｚに送信され、送信側のフロー管理テーブル１２ｚのデータ送信数１２ａは、“１”だけインクリメントされる。
受信側フロー制御装置２０ｚにおいて、データ７１は、キュー２１＿１に一時記憶された後、次の装置にデータ転送される。このデータ転送される度毎に、受信側フロー制御装置２０ｚは、データ転送したキュー２１＿１の識別子８２ｈ２と、クレジットであることを示すクレジット更新ビット８２ｈ１＝“１”とを含むクレジット８２を送信側フロー制御装置１０ｚに送信する。
送信側フロー制御装置１０ｚにおいて、フロー管理テーブル１２ｚのキュー１１＿１に対応するクレジット受信数１２ｂは、“１”だけインクリメントされる。データ送信数１２ａとクレジット受信数１２ｂとの「差」は、送受信間のタイムラグを無視すれば、受信側のキュー２１＿１に保持されているデータ数に相当する。
送信側フロー制御装置１０ｚは、上記の「差」＜閾値１２ｃである場合、キュー１１＿１に保持されているデータ７１を送出し、上記の「差」≧閾値１２ｃになった場合、データ７１を送出しない。これにより、キュー２１＿１のオーバフローを無くすようにしている。
このような、クレジット・ベース・フロー制御方式には、次のような問題点があり、これらを図１１〜図１３に示す動作例（１）〜（３）で説明する。
図１１は、クレジット・ベース・フロー制御方式の動作例（１）を示している。この動作例（１）では、特に、送信側のキュー１１＿１から受信側のキュー２１＿１にデータ７１が伝送された場合のみが示されており、フロー管理テーブル１２ｚにはキュー１１＿１に対応する数値のみが示されており、キュー１１＿２〜１１＿ｎに関する数値は示されていない。
また、同図には、図を簡略化するためキュー１１及び２１は示されていない。動作例（１）を以下に説明する。
タイミングＴ６１：送信側フロー制御装置１０ｚにおいて、キュー１１＿１からデータ７１＿１〜７１＿３を送出する。この中のデータ７１＿２は往路の伝送路２００＿１（図１０参照。）で廃棄Ｔ６１ａされ、残りのデータ７１＿１，７１＿３が、受信側フロー制御装置２０ｚに届く。
タイミングＴ６２：受信側フロー制御装置２０ｚにおいて、キュー２１＿１は、データ７１＿１，７１＿３を一時記憶した後、例えば別の次の装置に転送Ｄ３０１，Ｄ３０２する。受信側フロー制御装置２０ｚは、転送されたデータ７１＿１，７１＿３に対応したクレジット８２＿１及び８２＿２を送信側フロー制御装置１０ｚに送出する。
タイミングＴ６３：この結果、キュー２１＿１に記憶されたデータは無くなる。
タイミングＴ６４：送信側フロー制御装置１０ｚは、クレジット８２＿１及び８２＿２を受信する。
タイミングＴ６５：この結果、フロー管理テーブル１２ｚのデータ送信数１２ａ＝“３”、クレジット受信数１２ｂ＝“２”、閾値１２ｃ＝“５（予め設定された値）”である。
すなわち、フロー管理テーブル１２ｚは、受信側のキュー２１＿１に“３（データ送信数１２ａ）−、２（クレジット受信数１２ｂ）”＝“１”個のデータが記憶されて残っていることを示している。
このように、往路伝送路２００＿１において、データ７１＿２が廃棄された場合、データ７１＿２に対応するクレジットが返信されないため、フロー管理テーブル１２ｚに基づき、キュー２１＿１に記憶されている正確なデータ数を推定することができない。
図１２は、クレジット・ベース・フロー制御方式の動作例（２）を示している。この動作例（２）では、動作例（１）と同様に、キュー１１＿１からキュー２１＿１にデータ７１が伝送された場合のみが示され、フロー管理テーブル１２ｚにはキュー１１＿１に対応する数値のみが示され、キュー１１及び２１自身は示されていない。動作例（２）を以下に説明する。
タイミングＴ７１：送信側フロー制御装置１０ｚが、キュー１１＿１からデータ７１＿１〜７１＿３を送出する。これらのデータ７１＿１〜７１＿３は、受信側フロー制御装置２０ｚに届く。
タイミングＴ７２，Ｔ７３：受信側フロー制御装置２０ｚにおいて、キュー２１＿１は、データ７１＿１〜７１＿３を一時記憶した後、次の装置に転送Ｄ４０１〜Ｄ４０３する。転送された結果、キュー２１＿１に記憶されたデータは無くなる。
また、受信側フロー制御装置２０ｚは、転送されたデータ７１＿１〜７１＿３に対応したクレジット８２＿１〜８２＿３を送信側フロー制御装置１０ｚに送出する。クレジット８２＿１〜８２＿３の中のクレジット８２＿２は復路の伝送路２００＿２において廃棄Ｔ７２ａされる。
タイミングＴ７４：送信側フロー制御装置１０ｚは、クレジット８２＿１及び８２＿３を受信する。
タイミングＴ７５：この結果、フロー管理テーブル１２ｚのデータ送信数１２ａ＝“３”、クレジット受信数１２ｂ＝“２”、閾値１２ｃ＝“５（予め設定された値）”である。すなわち、フロー管理テーブル１２ｚは、受信側のキュー２１＿１に“３（データ送信数１２ａ）−２（クレジット受信数１２ｂ）”＝“１”個のデータが記憶されて残っていることを示している。
このように、復路伝送路２００＿２において、クレジット８２＿２が廃棄された場合においても、フロー管理テーブル１２ｚに基づき、キュー２１＿１に記憶されている正確なデータ数を推定することができない。
図１３は、クレジット・ベース・フロー制御方式の動作例（３）を示している。この動作例（３）では、動作例（１）と同様に、キュー１１＿１からキュー２１＿１にデータ７１が伝送された場合のみが示され、フロー管理テーブル１２ｚにはキュー１１＿１に対応する数値のみが示され、キュー１１及び２１は図示されていない。動作例（３）を以下に説明する。
タイミングＴ８１：送信側フロー制御装置１０ｚにおいて、キュー１１＿１からデータ７１＿１〜７１＿５を順次送出する。これらのデータ７１＿１〜７１＿５の中のデータ７１＿２，７１＿４が、往路の伝送路２００＿１で廃棄Ｔ８１ａ，Ｔ８１ｂされ、データ７１＿１，７１＿３，７１＿５のみが、受信側フロー制御装置２０ｚに届く。
タイミングＴ８２：受信側フロー制御装置２０ｚにおいて、キュー２１＿１は、データ７１＿１を一時記憶した後、次の装置に転送Ｄ５０１する。受信側フロー制御装置２０ｚは、データ７１＿１に対応したクレジット８２＿１を送信側フロー制御装置１０ｚに送信する。
タイミングＴ８３：送信側フロー制御装置１０ｚは、クレジット８２＿１を受信する。このとき、フロー管理テーブル１２ｚのデータ送信数＝“５”、クレジット受信数＝“１”、閾値＝“５（予め設定された値）”である。
タイミングＴ８４：送信側フロー制御装置１０ｚは、“５（データ送信数）”−“１（クレジット受信数）”＝“４”を演算して、受信側フロー制御装置２０ｚのキュー２１＿１に一時記憶されているデータ数＝“４”と認識すると共に、“５（閾値）”−“４（データ数）”＝“１”つのデータを送信することが可能であると判断してデータ７１＿６を送出する。
この結果、フロー管理テーブル１２ｚのデータ送信数＝“６”、クレジット受信数＝“１”となり、“６（データ送信数）”−“１（クレジット受信数）”＝“５（閾値）”となり、データの送信不可状態（デッドロック状態ではない。）になる。
タイミングＴ８５：受信側のキュー２１＿１は、データ７１＿３を一時的に記憶した後、次段に転送Ｄ５０２する。この転送Ｄ５０２に対応するクレジット８２＿２が、送信側に返送される。
タイミングＴ８６：送信側フロー制御装置１０ｚにおいて、フロー管理テーブル１２ｚは、クレジット８２＿２を受信して、データ送信数＝“６”、クレジット受信数＝“２”となり、“６（データ送信数）”−“２（クレジット受信数）”＝“４”＜“５（閾値）”であるので、データを１つ送信することが可能（送信不可状態の解消）であると判断する。そこで、キュー１１＿１はデータ７１＿７を送出する。
この結果、フロー管理テーブル１２ｚは、データ送信数＝“７”、クレジット受信数＝“２”となり、“７（データ送信数）”−“２（クレジット受信数）”＝“５（閾値）”であるので、データの送信不可状態となる。
タイミングＴ８７：受信側のキュー２１＿１は、順次、受信したデータ７１＿５〜７１＿７を一時記憶した後、次段に転送Ｄ５０３〜Ｄ５０５する。このデータ転送に対応するクレジット８２＿３〜８２＿５が、順次送信側に返信される。
タイミングＴ８８：このとき、受信側のキュー２１＿１には、データが一つも記憶されていない状態となる。
タイミングＴ８９：クレジット８２＿３〜８２＿５が伝送路２００＿２で廃棄Ｔ８７ａ〜Ｔ８７ｃされた場合、フロー管理テーブル１２ｚは、タイミングＴ８６のときと同様であり、データの送出が不可の状態を示す。
この送信不可状態は、廃棄されたデータ数＝“２”とクレジット数＝“３”の合計が閾値＝“５”に等しいため、解消されることは無い。すなわち、受信側のキュー２１＿１の残留データが無いのにもかかわらず、往路で発生したデータの廃棄及び復路で発生したクレジットの廃棄の合計が閾値以上になると、送受信間のクレジット・ベース・フロー制御がデッドロック状態Ｔ９０に陥ってしまい、データの送信が出来ない状態になってしまっている。
すなわち、デッドロック状態は、送信不可状態と対向装置におけるキュー２１の全データの転送完了とが同時に発生する状態である。
また、クレジット・ベースのフロー制御（バッファ制御）を有するディジタルトラフィック交換機がある。この交換機は、多数の入力ポート、多数の出力ポート、及びいずれかの入力ポートで受信したプロトコルデータユニットをいずれかの出力ポートに交換する交換ファブリックを有するタイプのディジタル交換機であり、各入力ポートに関連づけられた、１つ又は複数の送信待ち行列を有する入力バッファと、１つ又は複数の受信待ち行列を有する出力バッファと、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを入力ポートで受信する手段と、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを記憶するように構成された受信待ち行列にプロトコルユニットを割り当てる手段と、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを記憶するように構成された送信待ち行列にプロトコルユニットを割り当てる手段と、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを記憶するように構成された受信待ち行列を所定の順序でポーリングする手段と、十分に軽い負荷を有するポーリングされた受信待ち行列と同じ出力ポートに関連づけられた各送信待ち行列にクレジットを割り当てる手段と、送信待ち行列を所定の順序でポーリングする手段と、十分な量のクレジットを有するポーリングされた送信待ち行列から、該ポーリングされた送信待ち行列と同じ出力ポートに関連付けられた受信待ち行列にプロトコルデータユニットを送信し、送信されたプロトコルデータユニットの長さに関連して、ポーリングされた送信待ち行列に割り当てられたクレジットの量を減らす手段と、送信されたプロトコルデータユニットを受信待ち行列から宛先出力ポートにさらに送信する手段とを含んでいるものがある（例えば、特許文献１参照。）。
上記のフロー制御は、サービス品質により送出優先順位を決定し優先順位ブロッキングを防止するためのものあり、サービス品質毎に返却するクレジットを制御することでブロッキングを抑止している。データ又はクレジットが廃棄されたことに起因するデッドロック状態を解消するものではない。
【特許文献１】      特表２００２−５１８９３７号公報
このように従来のフロー制御装置においては、データ、又はクレジットが伝送途中で廃棄されると、送信側フロー制御装置のフロー管理テーブルは、受信側のキューに記憶されたデータ数を反映しなくなり、最悪の場合、デッドロック状態に陥ってしまう。
従って本発明は、クレジット・ベースで制御されるフロー制御装置において、データ又はクレジットの廃棄に起因する、対向装置との間のデッドロック状態を無くすることを課題とする。
【発明の開示】
上記の課題を解決するため、本発明に係る送信側フロー制御装置は、対向装置へ送信したデータの数と、該対向装置から受信したクレジットの数を記憶するフロー管理テーブルと、該対向装置に対して補正情報要求を送信し、該対向装置が応答した該補正情報に基づき、該フロー管理テーブル内の該データ送信数及び該クレジット受信数を補正するマネージメント部とを備えたことを特徴としている。
すなわち、フロー管理テーブルは、対向装置に送信したデータを計数したデータ送信数と、対向装置から受信したクレジットを計数したクレジット受信数を記憶する。
マネージメント部は、対向装置に対して、例えば、データ送信数及びクレジット受信数を補正するための情報（すなわち、送信側フロー制御装置から対向装置への往路におけるデータの廃棄数に関する情報、復路おけるクレジットの廃棄数に関する情報）を要求する。
そして、マネージメント部は、対向装置が応答した補正情報に基づき、フロー管理テーブル内のデータ送信数とクレジット受信数を補正する。
これにより、送信側フロー制御装置と対向装置との間でデータ又はクレジットの廃棄が発生しても、送信側フロー制御装置は、対向装置でのデータ受信及び転送状態を把握することができるので、両装置間でのデッドロック状態を無くすることが可能になる。
また、上記の本発明において、該補正情報要求が該データ送信数を含み、該補正情報を、該データ送信数と該対向装置のデータ受信数との差分、及び該対向装置のクレジット送信数とすることができる。
すなわち、マネージメント部は、データ送信数を含んだ補正情報要求を送出し、対向装置から補正情報として、データ送信数と該対向装置のデータ受信数との差分、及びクレジット送信数を対向装置から受信する。
これにより、フロー管理テーブルのデータ送信数を、差分＝“往路におけるデータ廃棄数”で補正すること、クレジット受信数をクレジット送信数で補正することが可能になる。
また、上記の本発明において、該マネージメント部が、該補正情報要求を送信した時点での該データ送信数を記憶し、該補正情報を該対向装置のデータ受信数及びクレジット送信数とすることができる。
これにより、マネージメント部は、記憶したデータ送信数とデータ受信数との差分＝“往路におけるデータ廃棄数”に基づき、データ送信数を補正し、クレジット送信数に基づき、クレジット受信数を補正することが可能になる。
また、上記の本発明において、該マネージメント部が、該補正情報要求を所定の時間間隔で所定の形式で送信することができる。
これにより、例えば、往路におけるデータ廃棄数又は復路におけるクレジット廃棄数に対応した時間間隔、すなわち、対向装置側でのデッドロック状態が発生しない時間間隔でデータ送信数及びクレジット受信数を補正することが可能になる。
また、上記の本発明において、該マネージメント部が、該補正情報要求を送信した後、所定の時間以内に該補正情報を受信しないとき、再度、該補正情報要求を送信することができる。
これにより、補正情報要求が対向装置に到達せずに廃棄された場合、又は補正情報要求が対向装置に到達したが、補正情報が自装置に到達せずに廃棄された場合に対応することが可能になる。
さらに、上記の本発明において、該データを一時記憶する１つ又は複数のキューをさらに有し、該フロー管理テーブルが、各キューに対応する該データ送信数及び該クレジット受信数を管理し、該マネージメント部が、各キュー毎の該補正情報要求を送信することができる。
すなわち、送信側フロー制御装置は、１つ又は複数のキューをさらに備えている。フロー管理テーブルは、各キューに対応するデータ送信数及びクレジット受信数を管理する。マネージメント部が、各キュー毎の該補正情報要求を送信し、各キューに対応した補正情報を受信する。
これにより、待ち行列を有する１つ又は複数のキュー毎に送信データを管理することが可能になるとともに、各キューに対応するデータ送信数及びクレジット受信数の補正を行うことが可能になる。
また、上記の課題を解決するため、本発明に係る受信側フロー制御装置は、対向装置から受信したデータを一時的に記憶するキューと、該データの受信数と、該対向装置に送信したクレジットの数とを記憶するフロー管理テーブルと、該対向装置からの補正情報要求に対して、補正情報を応答するマネージメント部とを備えたことを特徴としている。
すなわち、キューは、対向装置から受信したデータを一時的に記憶する。フロー管理テーブルは、キューが受信したデータの数（データ受信数）と、対向装置に送信したクレジットの数（クレジット送信数）を記憶する。マネージメント部は、対向装置からの補正情報要求に対して、対向装置の例えばデータ送信数及びクレジット受信数に対する補正情報を応答する。
これにより、対向装置は、補正情報に基づき、廃棄されたデータ数、及び廃棄されたクレジット数を推測することが可能になり、すなわち、データ送信数及びクレジット受信数を補正することが可能になり、両装置間でのデッドロック状態を無くすることが可能になる。
また、上記の本発明において、該補正情報要求がデータ送信数を含み、該補正情報を、該対向装置のデータ送信数とデータ受信数との差分、及びクレジット送信数とすることができる。
また、上記の本発明において、該補正情報を、該データ受信数及びクレジット送信数とすることができる。
さらに、上記の本発明において、該キューを複数個有し、該フロー管理テーブルが、各キュー毎の該データ受信数及び該クレジット送信数を管理し、該マネージメント部が、各キュー毎の補正情報要求に対する該補正情報を送信することができる。
すなわち、各キューに対応するデータ送信数及びクレジット受信数の補正をすることが可能になる。これにより、複数のキューが受信したデータをキュー毎に管理することが可能になるとともに、各キューに対応する対向装置におけるデータ送信数及びクレジット受信数の補正を行うことが可能になる。
【図面の簡単な説明】  図１は、本発明に係る送信側／受信側フロー制御装置で構成されたフロー制御システムの実施例を示したブロック図である。
図２は、本発明に係る送信側フロー制御装置と受信側フロー制御装置との間で交換されるデータセル及び往路／復路マネージメントセルの送受信例を示した図である。
図３は、本発明に係る送信側／受信側フロー制御装置で交換される往路／復路マネージメントセルの構成例を示した図である。
図４は、本発明に係る送信側フロー制御装置における動作手順例を示したフローチャート図である。
図５は、本発明に係る受信側フロー制御装置における動作手順例を示したフローチャート図である。
図６は、本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作手順例（１）を示したタイムチャート図である。
図７は、本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作例（１）における往路マネージメントセル及び復路マネージメントセルに設定される値を示した図である。
図８は、本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作例（２）を示したタイムチャート図である。
図９は、本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作例（３）を示したタイムチャート図である。
図１０は、一般的なクレジット・ベース・フロー制御方式の構成例を示したブロック図である。
図１１は、一般的なクレジット・ベース・フロー制御方式における動作例（１）を示したタイムチャート図である。
図１２は、一般的なクレジット・ベース・フロー制御方式における動作例（２）を示したタイムチャート図である。
図１３は、一般的なクレジット・ベース・フロー制御方式における動作例（３）を示したタイムチャート図である。
【符号の説明】
2004107699.tif 000003
図中、同一符号は同一又は相当部分を示す。
【発明を実施するための最良の形態】  図１は、本発明に係る送信側フロー制御装置１０及び受信側フロー制御装置２０の実施例を示している。同図では、送信側フロー制御装置１０と受信側フロー制御装置２０との間を伝送路２００＿１，２００＿２で接続することにより、フロー制御システム１００が形成されている。
送信側フロー制御装置１０は、キュー１１＿１〜１１＿ｎ（図示せず。以下符号１１で総称することがある。）と送信側フロー管理テーブル１２とを備えており、このテーブル１２は、各キュー１１に対応した、データ送信数１２ａ、クレジット受信数１２ｂ、閾値１２ｃ、及びＭＣ受信待ちビット１２ｄで構成されている。
受信側フロー制御装置２０は、キュー２１＿１〜２１＿ｎ（図示せず。以下符号２１で総称することがある。）と受信側フロー管理テーブル２２とを備えており、このテーブル２２は、各キュー２１に対応した、データ受信数２２ａ及びクレジット送信数２２ｂで構成されている。
図１０で示したキュー１１とキュー２１と同様に、送信側のキュー１１＿１〜１１＿ｎは、それぞれ、受信側のキュー２１＿１〜２１＿ｎに対応しており、キュー１１＿１に保持されたデータは、このキュー１１＿１に対応するキュー２１＿１に伝送される。
図２は、送信側フロー制御装置１０と受信側フロー制御装置２０との間を接続する伝送路２００＿１，２００＿２で伝送されるユーザデータ及びマネージメント用のデータを示している。
ユーザデータは、データセル７１＿１〜７１＿９（以下、符号７１で総称することがある。また、単にデータ７１と称することがある。）に搭載されて、伝送路２００＿１を経由してフロー制御装置１０からフロー制御装置２０に送信され、このデータ７１の間にマネージメントデータを搭載したマネージメントセル（Ｍａｎａｇｅｍｅｎｔ  Ｃｅｌｌ、以下、ＭＣと称することがある。）７０が伝送されている。
同様に、フロー制御装置２０からデータセル８１＿１〜８１＿９（以下、符号８１で総称することがある。）がフロー制御装置１０に送信され、このデータセル８１の間のマネージメントセル８０が伝送されている。
本実施例では、データ７１に注目し、フロー制御装置１０を送信側とし、フロー制御装置２０を受信側とし、ＭＣ７０を往路ＭＣ７０（補正情報要求）とし、ＭＣ８０を復路ＭＣ８０（補正情報）と称する。
なお、この実施例では、ユーザデータ及びマネージメントデータは、セルに搭載されて伝送したが、セルの代わりにパケット、フレーム等を用いて伝送してもよい。
図３は、マネージメントセル（ＭＣ）の構成例を示している。同図（１）は、往路ＭＣ７０を示しており、この往路ＭＣ７０は、ヘッダ７０ａ、キュー識別子７０ｂ、データ送信数７０ｃ、予備７０ｄ、パディング７０ｅ、及びＣＲＣ７０ｆで構成されている。同図（２）は復路ＭＣ８０を示しており、この復路ＭＣ８０は、ヘッダ８０ａ、キュー識別子８０ｂ、データ廃棄数８０ｃ、クレジット送信数８０ｄ、パディング８０ｅ、及びＣＲＣ８０ｆで構成されている。
図４は、送信側フロー制御装置１０の動作例を示している。この動作例を、特に受信側のキュー２１＿１に関するＭＣ７０，８０のみに注目して、図１に示したフロー管理テーブル１２のキュー番号＝“１１＿１”の設定値に基づき説明する。なお、往路ＭＣ７０のキュー識別子７０ｂ及び復路ＭＣ８０のキュー識別子８０ｂに関しては、それぞれ、同じ値になるので説明を省略する。
ステップＳ１１〔初期設定〕：フロー管理テーブル１２（図１参照）のＭＣ受信待ちビット１２ｄ＝“０”に設定する。ここで、ＭＣ受信待ちビット１２ｄ＝“０”は、往路ＭＣ７０を送信していないことを意味し、ＭＣ受信待ちビット１２ｄ＝“１”は、往路ＭＣ７０を送信済みであり、対向装置（受信側フロー制御装置）２０からの復路ＭＣ８０の待ち状態であることを意味する。
ステップＳ１２：ＭＣ受信待ちビット１２ｄ＝“０（往路ＭＣ７０は送信済でない。）”であるので、ステップＳ１３に進む。
ステップＳ１３〔タイマ１処理〕：所定の時間ｔ１だけ待つ。この時間ｔ１は、往路ＭＣ７０の送出時間間隔である。
ステップＳ１４〔往路ＭＣ７０送出処理〕：往路ＭＣ７０（図２及び図３（１）参照。）を送出する。すなわち、往路ＭＣ７０のキュー識別子７０ｂ＝“１１＿１”、データ送信数７０ｃ＝“７”、予備７０ｄ＝ａｌｌ“０”、パディング７０ｅ、及びＣＲＣ７０ｆを設定し、この往路ＭＣ７０を受信側フロー制御装置２０に送出する。さらに、ＭＣ受信待ちビット１２ｄ＝“１”にセットする。
ステップＳ１５〔タイマ２処理〕：所定の時間ｔ２だけ待つ。この時間ｔ２は、往路ＭＣ７０送出した後、この往路ＭＣ７０の応答である復路ＭＣ８０（図２及び図３（２）参照。）が戻って来なければならない時間である。
ステップＳ１６：復路ＭＣ８０を受信しない場合、往路ＭＣ７０又は復路ＭＣ８０が途中で廃棄されたものとして、ステップＳ１４に戻って再度、往路ＭＣ７０を送出する。
復路ＭＣ８０を受信した場合、次のステップＳ１７に進む。
ステップＳ１７：復路ＭＣ８０のＣＲＣ８０ｆをチェックし誤りがある場合、復路ＭＣ８０を廃棄し、ステップＳ１４に戻って再度、往路ＭＣ７０を送出する。
すなわち、送出した往路ＭＣ７０に対する復路ＭＣ８０が誤り無く戻って来るまで往路ＭＣ７０の送出を繰り返す。
ステップＳ１８〔復路ＭＣ８０受信処理〕：フロー管理テーブル１２の補正又は設定を行う。すなわち、（１）復路ＭＣ８０のデータ廃棄数８０ｃ＝“例えば２”をデータ送信数１２ａに反映してデータ送信数１２ａ＝“７”→“５”する。（２）クレジット受信数１２ｂを、復路ＭＣ８０のクレジット送信数８０ｄ＝“４”に書き換える。（３）ＭＣ受信待ちビット１２ｄ＝“０”に解除する。そして、ステップＳ１２に戻る。
これにより、往路で廃棄されたデータ数と復路で廃棄されたクレジットに起因するフロー管理テーブル１２の誤りを補正することができる。
図５は、受信側フロー制御装置２０の動作例を示している。この動作例を、特に受信側のキュー２１＿１に関するＭＣ７０，８０のみに注目して以下に説明する。すなわち、図１に示したフロー管理テーブル１２，２２のキュー番号＝“２１＿１”に対応するデータ受信数２２ａ及びクレジット送信数２２ｂの値に基づき説明する。
フロー管理テーブル２２には、キュー２１＿１が記憶したデータ数は、データ受信数２２ａ＝“５”であり、“キュー２１＿１から転送したデータ数”＝“送信側に送信したクレジットの数”は、クレジット送信数２２ｂ＝“４”である。
ステップＳ２１，Ｓ２２：往路ＭＣ７０（図３（１）参照。）を受信したか否かを判別する。往路ＭＣ７０を受信した場合、往路ＭＣ７０の伝送誤りの有無をＣＲＣ７０ｆでチェックし、誤りが有る場合、往路ＭＣ７０を廃棄してステップＳ２１に戻り、誤りが無い場合、ステップＳ２３に進む。
ステップＳ２３〔往路ＭＣ７０受信処理〕：往路ＭＣ７０のデータ送信数７０ｃ＝“７”とデータ受信数２２ａ＝“５”との差を、データ廃棄数８０ｃ＝“２”とし、フロー管理テーブル２２のクレジット送信数２２ｂ＝“４”をクレジット送信数８０ｄ＝“４”として、ＣＲＣ８０ｆを演算した復路ＭＣ８０を作成して、送信側フロー制御装置１０に返信する。
これにより、送信側フロー制御装置１０は、往路のデータ廃棄数＝“２”及び実際のクレジット送信数２２ｂ＝“４”を知ることが可能になる。
図６は、送信側フロー制御装置１０及び受信側フロー制御装置２０の動作手順を示している。この動作手順を以下に説明する。この説明では、図４及び図５の場合と同様に、キュー１１＿１及びキュー２１＿１に関するデータ７１及びＭＣ７０，８０のみについて説明する。
なお、初期状態のフロー管理テーブル１２のキュー１１＿１に対応するデータ送信数１２ａ＝“０”、クレジット受信数１２ｂ＝“０”、閾値１２ｃ＝“５”、ＭＣ受信待ちビット＝“０”に設定されている。
タイミングＴ１１：送信側フロー制御装置１０は、データ７１＿１〜７１＿７を受信側フロー制御装置２０に送出する。データ７１＿１〜７１＿７の中のデータ７１＿１，７１＿３は伝送中に廃棄Ｔ１１ａ，Ｔ１１ｂされるものとする。
タイミングＴ１２：フロー制御装置２０において、キュー２１＿１は、データ７１＿２，７１＿４を記憶した後、後段に転送ＤＴ１０１，ＤＴ１０２し、この転送に対応するクレジット８２＿１，８２＿２を送信側フロー制御装置１０に返信する。
タイミングＴ１３：フロー制御装置１０のフロー管理テーブル１２は、タイミングＴ１１で送信したデータ数と受信したクレジット数を計数して、それぞれ、データ送信数１２ａ＝“７”及びクレジット受信数１２ｂ＝“２”とする。
タイミングＴ１４：フロー制御装置１０は、往路ＭＣ７０＿１をフロー制御装置２０に送信するとともに、タイマ１（図示せず。タイムアウトｔ１）及びタイマ２（図示せず。タイムアウトｔ２）をスタートさせる。
図７は、図６で送受信される往路ＭＣ７０のデータ送信数７０ｃ、並びに復路ＭＣ８０のデータ廃棄数８０ｃ及びクレジット送信数８０ｄを示している。
すなわち、フロー制御装置１０は、フロー管理テーブル１２のデータ送信数１２ａ＝“７”を往路ＭＣ７０のデータ送信数７０ｃに設定して送出する。
タイミングＴ１５：フロー制御装置２０は、データ７１＿５〜７１＿７を受信し、クレジット８２＿３，８２＿４を返信する。この中のクレジット８２＿３は、伝送中に廃棄Ｔ１５ａされるものとする。
タイミングＴ１６：フロー制御装置２０において、タイミングＴ１４，Ｔ１５の受信及び送信の結果、フロー管理テーブル２２のデータ受信数２２ａ＝“５”及びクレジット送信数２２ｂ＝“４”になる。
タイミングＴ１７：フロー制御装置２０において、このときのフロー管理テーブル２２のデータ受信数２２ａ＝“５”及びクレジット送信数２２ｂ＝“４（＝データ転送数）”である。したがって、キュー２１＿１に一時記憶されているデータ数＝“１（＝５−４）”である。
フロー制御装置２０は、往路ＭＣ７０＿１を受信し、キュー２１＿１宛に送信されたデータ送信数１２ａ＝“７”であることを知る。そこで、フロー制御装置２０は、データ送信数７０ｃ＝“７”と“データ受信数２２ａ＝“４”との差分であるデータ廃棄数８０ｃ＝“２”、及びクレジット送信数８０ｄ＝“４（＝クレジット送信数２２ｂ）”を含んだ復路ＭＣ８０＿１（図７参照。）をフロー制御装置１０に返信するが、この復路ＭＣ８０＿１は、途中で廃棄Ｔ１７ａされるものとする。
タイミングＴ１８：フロー制御装置１０において、タイミングＴ１４以後に送信したデータ数、及び受信したクレジット数がそれぞれ加算され、テーブル１２のデータ送信数１２ａ＝“１０”、クレジット受信数１２ｂ＝“４”である。
タイミングＴ１９：往路ＭＣ７０＿１に対する応答、すなわち、復路ＭＣ８０＿１が時間ｔ２以内に到着しないのでタイマ２がタイムアウトする。そこで、フロー制御装置１０は、往路ＭＣ７０＿２（図７参照。）をフロー制御装置２０に送信するとともに、タイマ１及びタイマ２を再スタートさせる。
タイミングＴ２０，Ｔ２１：フロー制御装置２０において、さらに、キュー２１＿１が、データ７１＿８，７１＿１０を受信し、クレジット８２＿５，８２＿６が返信されているので、テーブル２２のデータ受信数２２ａ＝“７”及びクレジット送信数２２ｂ＝“６”である。
タイミングＴ２２：フロー制御装置２０は、往路ＭＣ７０＿２を受信し、復路ＭＣ８０＿２（図７参照。）を返信する。
タイミングＴ２３：フロー制御装置１０において、テーブル１２のデータ送信数１２ａ＝“１２”及びクレジット受信数１２ｂ＝“５”である。
タイミングＴ２４：フロー制御装置１０は、復路ＭＣ８０＿２を受信して、タイマ２を停止するとともに、テーブル１２のＭＣ受信待ちビット１２ｄ＝“０”にリセットする。
タイミングＴ２５：フロー制御装置１０は、復路ＭＣ８０＿２のデータ廃棄数８０ｃ＝“３”及びクレジット送信数２２ｂ＝“６”に基づき、テーブル１２のデータ送信数１２ａ＝“９”及びクレジット受信数１２ｂ＝“６”に補正する。すなわち、「データ送信数１２ａ＝“１２”」−「データ廃棄数８０ｃ＝“３”」→「データ送信数１２ａ＝“９”」、及び「クレジット送信数８０ｄ＝“６”」→「クレジット受信数１２ｂ＝“６”」とする。
タイミングＴ２６：フロー制御装置１０において、テーブル１２のデータ送信数１２ａ＝“５１０”及びクレジット受信数１２ｂ＝“５０６”である。
タイミングＴ２７：タイマ１がタイムアウトする。そこで、フロー制御装置１０は、往路ＭＣ７０＿３（図７参照。）を送出するとともに、タイマ２をスタートし、テーブル１２のＭＣ受信待ちビット＝“１”にセットする。
タイミングＴ２８：フロー制御装置２０において、テーブル２２のデータ受信数２２ａ＝“５０８”及びクレジット送信数２２ｂ＝“５０８”である。したがって、キュー２１＿１に保持されているデータ数＝“０”である。
タイミングＴ２９：フロー制御装置２０は、往路ＭＣ７０＿３を受信し、復路ＭＣ８０＿２（図７参照。）を返信する。
タイミングＴ３０：フロー制御装置１０において、テーブル１２のデータ送信数１２ａ＝“５１２”及びクレジット受信数１２ｂ＝“５０７”である。
タイミングＴ３１：フロー制御装置１０は、復路ＭＣ８０＿３を受信して、タイマ２を停止するとともに、テーブル１２のＭＣ受信待ちビット１２ｄ＝“０”にリセットする。
タイミングＴ３２：フロー制御装置１０は、復路ＭＣ８０＿３のデータ廃棄数８０ｃ＝“２”及びクレジット送信数２２ｂ＝“５０８”に基づき、テーブル１２のデータ送信数１２ａ＝“５１２”及びクレジット受信数１２ｂ＝“５０８”に補正する。
これにより、クレジット・ベースで制御されフロー制御装置１０，２０において、データ７１又はクレジット８２の廃棄に起因するデッドロック状態を無くすることが可能になる。
図８は、本発明の送信側フロー制御装置１０，２０によって、廃棄されたデータ数及びクレジット数が、どのタイミングで、フロー管理テーブル１２のデータ送信数１２ａ及びクレジット受信数１２ｂに反映されて補正されたかを示している。
すなわち、送信側フロー制御装置１０が、往路ＭＣ７０＿１に対する応答である復路ＭＣ８０＿１を受信したタイミングＴ４３においては、フロー管理テーブル１２のデータ送信数１２ａは、タイミングＴ４１に送信されて廃棄Ｔ４１ａされたデータ７１の数（この例では、データ７１＿３の“１”）だけ補正ＤＣ１され、クレジット受信数１２ｂは、タイミングＴ４２に送信されて廃棄されたクレジット８２の数（この例では、“０”）だけ補正される。
往路ＭＣ７０＿２に対する応答である復路ＭＣ８０＿２を受信したタイミングＴ４６においては、フロー管理テーブル１２のデータ送信数１２ａは、タイミングＴ４１及びＴ４４に送信されて廃棄Ｔ４１ａ，Ｔ４４ａされたデータ７１の数だけ補正ＤＣ１，ＤＣ２され、クレジット受信数１２ｂは、タイミングＴ４２及びＴ４５に送信されて廃棄Ｔ４５ａされたクレジット８２の数だけ補正ＤＣ３される。
図９は、往路ＭＣ７０が再送信される場合を示しており、同図（１）では、タイミングＴ５１で送信された往路ＭＣ７０＿１が何らかの原因で途中で廃棄Ｔ５１ａされた場合、受信側フロー制御装置２０は、復路ＭＣ８０を返信することはない。そこで、送信側フロー制御装置１０において、タイミングＴ５１でスタートしたタイマ２のタイムアウトがｔ２時間後のタイミングＴ５２で発生し、往路ＭＣ７０＿２が再送される。
同図（２）では、タイミングＴ５３で送信された往路ＭＣ７０＿１を受信フロー制御装置２０が受信し、復路ＭＣ８０＿１を返信する。返信された復路ＭＣ８０＿１が何らかの原因で途中で廃棄Ｔ５３ａされた場合、送信側フロー制御装置１０において、タイミングＴ５３でスタートしたタイマ２のタイムアウトがｔ２時間後に発生し、往路ＭＣ７０＿２が再送される。
往路ＭＣ７０及び復路ＭＣ８０の廃棄が発生した場合においては、往路ＭＣ７０を再送することにより、図６に示したタイマ１によってｔ１時間間隔で行われる往路ＭＣ７０及び復路ＭＣ８０の送受信を確実に行うことが可能になる。
これにより、データ送信数１２ａ及びクレジット受信数１２ｂの補正をデッドロックが発生する前に行うことが可能になる。
なお、上記の図２〜図９で示した実施例では、送信側フロー制御装置１０が、往路ＭＣ７０（補正情報要求）にデータ送信数１２ａを含めて送信し、受信側フロー制御装置２０が、復路ＭＣ８０（補正情報）にデータ送信数１２ａとデータ受信数２２ａとの差、及びクレジット送信数２２ｂを含めて返信した。この代わりに、送信側フロー制御装置１０が、補正情報要求（例えば、データセル７１の所定のビット＝“１”にして要求する。）を送信するとともに、送信時点のデータ送信数１２ａを記憶し、受信側フロー制御装置２０が、復路ＭＣ８０（補正情報）にデータ受信数２２ａ、及びクレジット送信数２２ｂを含めて返信するようにしてもよい。
これによっても、送信側フロー制御装置１０は、“データ送信数１２ａ”−“データ受信数２２ａ”を求めることが可能であり、データ送信数１２ａを補正することが可能になる。
【産業上の利用可能性】  以上説明したように、本発明に係る送信側フロー制御装置によれば、フロー管理テーブルが、対向装置へのデータ送信数と、対向装置からのクレジット受信数とを記憶し、マネージメント部が、該対向装置に対して補正情報要求を送信し、受信した補正情報に基づき、該データ送信数及びクレジット受信数を補正するようにしたので、データ又はクレジットの廃棄に起因する、対向装置との間のデッドロック状態を無くすることが可能になる。
また、本発明に係る受信側フロー制御装置によれば、マネージメント部が、対向装置からの補正情報要求に対して、対向装置のデータ送信数及びクレジット受信数に対する補正情報を通知するようにしたので、同様に、データ又はクレジットの廃棄に起因するデッドロック状態を無くすることが可能になる。
【図１】
2004107699.tif 000004
【図２】
2004107699.tif 000005
【図３】
2004107699.tif 000006
【図４】
2004107699.tif 000007
【図５】
2004107699.tif 000008
【図６】
2004107699.tif 000009
【図７】
2004107699.tif 000010
【図８】
2004107699.tif 000011
【図９】
2004107699.tif 000012
【図１０】
2004107699.tif 000013
【図１１】
2004107699.tif 000014
【図１２】
2004107699.tif 000015
【図１３】
2004107699.tif 000016
【国際調査報告】
2004107699.tif 000017
2004107699.tif 000018