(57)【特許請求の範囲】
【請求項１】
対向装置へ送信したデータの数と、該対向装置から受信したクレジットの数を記憶するフロー管理テーブルと、
該対向装置に対して補正情報要求を送信し、該対向装置が応答した補正情報に基づき、該フロー管理テーブル内の該データ送信数及び該クレジット受信数を補正するマネージメント部と、
を備えたことを特徴とする送信側フロー制御装置。
【請求項２】
請求の範囲１において、
該補正情報要求が該データ送信数を含み、該補正情報が、該データ送信数と該対向装置のデータ受信数との差分、及び該対向装置のクレジット送信数であることを特徴とした送信側フロー制御装置。
【請求項３】
請求の範囲１において、
該マネージメント部が、該補正情報要求を送信した時点での該データ送信数を記憶し、該補正情報が該対向装置のデータ受信数及びクレジット送信数であることを特徴とした送信側フロー制御装置。
【請求項４】
請求の範囲１において、
該マネージメント部が、該補正情報要求を所定の時間間隔で所定の形式で送信することを特徴とした送信側フロー制御装置。
【請求項５】
請求の範囲１において、
該マネージメント部が、該補正情報要求を送信した後、所定の時間以内に該補正情報を受信しないとき、再度、該補正情報要求を送信することを特徴とした送信側フロー制御装置。
【請求項６】
請求の範囲１において、
該データを一時記憶する１つ又は複数のキューをさらに有し、
該フロー管理テーブルが、各キューに対応する該データ送信数及び該クレジット受信数を管理し、該マネージメント部が、各キュー毎の該補正情報要求を送信することを特徴とした送信側フロー制御装置。
【請求項７】
対向装置から受信したデータを一時的に記憶するキューと、
該データの受信数と、該対向装置に送信したクレジットの数とを記憶するフロー管理テーブルと、
該対向装置からの補正情報要求に対して、補正情報を応答するマネージメント部と、
を備え、該補正情報要求がデータ送信数を含み、該補正情報が、該対向装置のデータ送信数とデータ受信数との差分、及びクレジット送信数であることを特徴とした受信側フロー制御装置。
【請求項８】
対向装置から受信したデータを一時的に記憶するキューと、
該データの受信数と、該対向装置に送信したクレジットの数とを記憶するフロー管理テーブルと、
該対向装置からの補正情報要求に対して、補正情報を応答するマネージメント部と、
を備え、該補正情報が、該データ受信数及びクレジット送信数であることを特徴とした受信側フロー制御装置。
【請求項９】
請求の範囲７又は８において、
該キューを複数個有し、
該フロー管理テーブルが、各キュー毎の該データ受信数及び該クレジット送信数を管理し、該マネージメント部が、各キュー毎の補正情報要求に対する該補正情報を送信することを特徴とした受信側フロー制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフロー制御装置に関し、特に、クレジット・ベースで制御されるフロー制御装置に関するものである。
【０００２】
近年、通信技術の発展に伴い、通信速度はますます高速化されており、このような、高速化された通信においては、データを廃棄することなく通信するためのフロー制御がますます重要になって来ている。
【背景技術】
【０００３】
２つの装置間において、データの転送を行う際に用いられるフロー制御方式には、(1)XON/XOFF方式、及び(2)クレジット・ベース・フロー制御(Credit Base Flow Control)方式等がある。
【０００４】
(1)XON/XOFF方式：受信側のフロー制御装置が、XON(送信指示)又はXOFF(送信中止)を送信側のフロー制御部に通知し、送信側フロー制御装置は、この指示に基づきデータの送信/送信中止を行う。このXON/XOFF方式では、送受信間のタイムラグに起因するオーバフローが発生する可能性がある。
【０００５】
(2)クレジット・ベース・フロー制御方式：図10に、一般的なクレジット・ベース・フロー制御システム100zを示す。このシステム100zは、送信側フロー制御装置10z、受信側フロー制御装置20z、及びこれらのフロー制御装置10z，20z間を接続する伝送路200_1，200_2で構成されている。
【０００６】
送信側フロー制御装置10zは、キュー11_1〜11_n(以下、符号11で総称することがある。)、及びフロー管理テーブル12zで構成されている。フロー管理テーブル12zは、各キュー11に対応したデータ送信数12a、クレジット受信数12b、及び閾値12cで構成されている。
【０００７】
受信側フロー制御装置20zは、キュー21_1〜21_n（以下、符号21で総称することがある。）を備えている。これらのキュー21_1〜21_nは、それぞれ、送信側のキュー11_1〜11_nに対応している。
【０００８】
例えば、送信側のキュー11_1に一時記憶されたデータ71は、伝送路200_1を経由して受信側フロー制御装置20zに送信され、送信側のフロー管理テーブル12zのデータ送信数12aは、“1”だけインクリメントされる。
【０００９】
受信側フロー制御装置20zにおいて、データ71は、キュー21_1に一時記憶された後、次の装置にデータ転送される。このデータ転送される度毎に、受信側フロー制御装置20zは、データ転送したキュー21_1の識別子82h2と、クレジットであることを示すクレジット更新ビット82h1＝“1”とを含むクレジット82を送信側フロー制御装置10zに送信する。
【００１０】
送信側フロー制御装置10zにおいて、フロー管理テーブル12zのキュー11_1に対応するクレジット受信数12bは、“1”だけインクリメントされる。データ送信数12aとクレジット受信数12bとの「差」は、送受信間のタイムラグを無視すれば、受信側のキュー21_1に保持されているデータ数に相当する。
【００１１】
送信側フロー制御装置10zは、上記の「差」＜閾値12cである場合、キュー11_1に保持されているデータ71を送出し、上記の「差」≧閾値12cになった場合、データ71を送出しない。これにより、キュー21_1のオーバフローを無くすようにしている。
【００１２】
このような、クレジット・ベース・フロー制御方式には、次のような問題点があり、これらを図11〜図13に示す動作例(1)〜(3)で説明する。
【００１３】
図11は、クレジット・ベース・フロー制御方式の動作例(1)を示している。この動作例(1)では、特に、送信側のキュー11_1から受信側のキュー21_1にデータ71が伝送された場合のみが示されており、フロー管理テーブル12zにはキュー11_1に対応する数値のみが示されており、キュー11_2〜11_nに関する数値は示されていない。
【００１４】
また、同図には、図を簡略化するためキュー11及び21は示されていない。動作例(1)を以下に説明する。
【００１５】
タイミングT61：送信側フロー制御装置10zにおいて、キュー11_1からデータ71_1〜71_3を送出する。この中のデータ71_2は往路の伝送路200_1（図10参照。）で廃棄T61aされ、残りのデータ71_1，71_3が、受信側フロー制御装置20zに届く。
【００１６】
タイミングT62：受信側フロー制御装置20zにおいて、キュー21_1は、データ71_1，71_3を一時記憶した後、例えば別の次の装置に転送D301,D302する。受信側フロー制御装置20zは、転送されたデータ71_1，71_3に対応したクレジット82_1及び82_2を送信側フロー制御装置10zに送出する。
【００１７】
タイミングT63：この結果、キュー21_1に記憶されたデータは無くなる。
【００１８】
タイミングT64：送信側フロー制御装置10zは、クレジット82_1及び82_2を受信する。
【００１９】
タイミングT65：この結果、フロー管理テーブル12zのデータ送信数12a＝“3”、クレジット受信数12b＝“2”、閾値12c＝“5(予め設定された値)”である。
【００２０】
すなわち、フロー管理テーブル12zは、受信側のキュー21_1に“3(データ送信数12a)−、2(クレジット受信数12b)”＝“1”個のデータが記憶されて残っていることを示している。
【００２１】
このように、往路伝送路200_1において、データ71_2が廃棄された場合、データ71_2に対応するクレジットが返信されないため、フロー管理テーブル12zに基づき、キュー21_1に記憶されている正確なデータ数を推定することができない。
【００２２】
図12は、クレジット・ベース・フロー制御方式の動作例(2)を示している。この動作例(2)では、動作例(1)と同様に、キュー11_1からキュー21_1にデータ71が伝送された場合のみが示され、フロー管理テーブル12zにはキュー11_1に対応する数値のみが示され、キュー11及び21自身は示されていない。動作例(2)を以下に説明する。
【００２３】
タイミングT71：送信側フロー制御装置10zが、キュー11_1からデータ71_1〜71_3を送出する。これらのデータ71_1〜71_3は、受信側フロー制御装置20zに届く。
【００２４】
タイミングT72，T73：受信側フロー制御装置20zにおいて、キュー21_1は、データ71_1〜71_3を一時記憶した後、次の装置に転送D401〜D403する。転送された結果、キュー21_1に記憶されたデータは無くなる。
【００２５】
また、受信側フロー制御装置20zは、転送されたデータ71_1〜71_3に対応したクレジット82_1〜82_3を送信側フロー制御装置10zに送出する。クレジット82_1〜82_3の中のクレジット82_2は復路の伝送路200_2において廃棄T72aされる。
【００２６】
タイミングT74：送信側フロー制御装置10zは、クレジット82_1及び82_3を受信する。
【００２７】
タイミングT75：この結果、フロー管理テーブル12zのデータ送信数12a＝“3”、クレジット受信数12b＝“2”、閾値12c＝“5(予め設定された値)”である。すなわち、フロー管理テーブル12zは、受信側のキュー21_1に“3(データ送信数12a)−2(クレジット受信数12b)”＝“1”個のデータが記憶されて残っていることを示している。
【００２８】
このように、復路伝送路200_2において、クレジット82_2が廃棄された場合においても、フロー管理テーブル12zに基づき、キュー21_1に記憶されている正確なデータ数を推定することができない。
【００２９】
図13は、クレジット・ベース・フロー制御方式の動作例(3)を示している。この動作例(3)では、動作例(1)と同様に、キュー11_1からキュー21_1にデータ71が伝送された場合のみが示され、フロー管理テーブル12zにはキュー11_1に対応する数値のみが示され、キュー11及び21は図示されていない。動作例(3)を以下に説明する。
【００３０】
タイミングT81：送信側フロー制御装置10zにおいて、キュー11_1からデータ71_1〜71_5を順次送出する。これらのデータ71_1〜71_5の中のデータ71_2，71_4が、往路の伝送路200_1で廃棄T81a,T81bされ、データ71_1，71_3，71_5のみが、受信側フロー制御装置20zに届く。
【００３１】
タイミングT82：受信側フロー制御装置20zにおいて、キュー21_1は、データ71_1を一時記憶した後、次の装置に転送D501する。受信側フロー制御装置20zは、データ71_1に対応したクレジット82_1を送信側フロー制御装置10zに送信する。
【００３２】
タイミングT83：送信側フロー制御装置10zは、クレジット82_1を受信する。このとき、フロー管理テーブル12zのデータ送信数＝“5”、クレジット受信数＝“1”、閾値＝“5(予め設定された値)”である。
【００３３】
タイミングT84：送信側フロー制御装置10zは、“5(データ送信数)”−“1(クレジット受信数)”＝“4”を演算して、受信側フロー制御装置20zのキュー21_1に一時記憶されているデータ数＝“4”と認識すると共に、“5(閾値)”−“4(データ数)”＝“1”つのデータを送信することが可能であると判断してデータ71_6を送出する。
【００３４】
この結果、フロー管理テーブル12zのデータ送信数＝“6”、クレジット受信数＝“1”となり、“6(データ送信数)”−“1(クレジット受信数)”＝“5(閾値)”となり、データの送信不可状態（デッドロック状態ではない。）になる。
【００３５】
タイミングT85：受信側のキュー21_1は、データ71_3を一時的に記憶した後、次段に転送D502する。この転送D502に対応するクレジット82_2が、送信側に返送される。
【００３６】
タイミングT86：送信側フロー制御装置10zにおいて、フロー管理テーブル12zは、クレジット82_2を受信して、データ送信数＝“6”、クレジット受信数＝“2”となり、“６(データ送信数)”−“２(クレジット受信数)”＝“4”＜“5(閾値)”であるので、データを１つ送信することが可能（送信不可状態の解消）であると判断する。そこで、キュー11_1はデータ71_7を送出する。
【００３７】
この結果、フロー管理テーブル12zは、データ送信数＝“7”、クレジット受信数＝“2”となり、“7(データ送信数)”−“2(クレジット受信数)”＝“5(閾値)”であるので、データの送信不可状態となる。
【００３８】
タイミングT87：受信側のキュー21_1は、順次、受信したデータ71_5〜71_7を一時記憶した後、次段に転送D503〜D505する。このデータ転送に対応するクレジット82_3〜82_5が、順次送信側に返信される。
【００３９】
タイミングT88：このとき、受信側のキュー21_1には、データが一つも記憶されていない状態となる。
【００４０】
タイミングT89：クレジット82_3〜82_5が伝送路200_2で廃棄T87a〜T87cされた場合、フロー管理テーブル12zは、タイミングT86のときと同様であり、データの送出が不可の状態を示す。
【００４１】
この送信不可状態は、廃棄されたデータ数＝“2”とクレジット数＝“3”の合計が閾値＝“5”に等しいため、解消されることは無い。すなわち、受信側のキュー21_1の残留データが無いのにもかかわらず、往路で発生したデータの廃棄及び復路で発生したクレジットの廃棄の合計が閾値以上になると、送受信間のクレジット・ベース・フロー制御がデッドロック状態T90に陥ってしまい、データの送信が出来ない状態になってしまっている。
【００４２】
すなわち、デッドロック状態は、送信不可状態と対向装置におけるキュー21の全データの転送完了とが同時に発生する状態である。
【００４３】
また、クレジット・ベースのフロー制御（バッファ制御）を有するディジタルトラフィック交換機がある。この交換機は、多数の入力ポート、多数の出力ポート、及びいずれかの入力ポートで受信したプロトコルデータユニットをいずれかの出力ポートに交換する交換ファブリックを有するタイプのディジタル交換機であり、各入力ポートに関連づけられた、１つ又は複数の送信待ち行列を有する入力バッファと、１つ又は複数の受信待ち行列を有する出力バッファと、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを入力ポートで受信する手段と、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを記憶するように構成された受信待ち行列にプロトコルユニットを割り当てる手段と、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを記憶するように構成された送信待ち行列にプロトコルユニットを割り当てる手段と、それぞれ特定の出力ポートに向けられたプロトコルデータユニットを記憶するように構成された受信待ち行列を所定の順序でポーリングする手段と、十分に軽い負荷を有するポーリングされた受信待ち行列と同じ出力ポートに関連づけられた各送信待ち行列にクレジットを割り当てる手段と、送信待ち行列を所定の順序でポーリングする手段と、十分な量のクレジットを有するポーリングされた送信待ち行列から、該ポーリングされた送信待ち行列と同じ出力ポートに関連付けられた受信待ち行列にプロトコルデータユニットを送信し、送信されたプロトコルデータユニットの長さに関連して、ポーリングされた送信待ち行列に割り当てられたクレジットの量を減らす手段と、送信されたプロトコルデータユニットを受信待ち行列から宛先出力ポートにさらに送信する手段とを含んでいるものがある（例えば、特許文献１参照。）。
【００４４】
上記のフロー制御は、サービス品質により送出優先順位を決定し優先順位ブロッキングを防止するためのものあり、サービス品質毎に返却するクレジットを制御することでブロッキングを抑止している。データ又はクレジットが廃棄されたことに起因するデッドロック状態を解消するものではない。
【特許文献１】特表2002-518937号公報
【００４５】
このように従来のフロー制御装置においては、データ、又はクレジットが伝送途中で廃棄されると、送信側フロー制御装置のフロー管理テーブルは、受信側のキューに記憶されたデータ数を反映しなくなり、最悪の場合、デッドロック状態に陥ってしまう。
【００４６】
従って本発明は、クレジット・ベースで制御されるフロー制御装置において、データ又はクレジットの廃棄に起因する、対向装置との間のデッドロック状態を無くすることを課題とする。
【発明の開示】
【００４７】
上記の課題を解決するため、本発明に係る送信側フロー制御装置は、対向装置へ送信したデータの数と、該対向装置から受信したクレジットの数を記憶するフロー管理テーブルと、該対向装置に対して補正情報要求を送信し、該対向装置が応答した該補正情報に基づき、該フロー管理テーブル内の該データ送信数及び該クレジット受信数を補正するマネージメント部とを備えたことを特徴としている。
【００４８】
すなわち、フロー管理テーブルは、対向装置に送信したデータを計数したデータ送信数と、対向装置から受信したクレジットを計数したクレジット受信数を記憶する。
【００４９】
マネージメント部は、対向装置に対して、例えば、データ送信数及びクレジット受信数を補正するための情報（すなわち、送信側フロー制御装置から対向装置への往路におけるデータの廃棄数に関する情報、復路おけるクレジットの廃棄数に関する情報）を要求する。
【００５０】
そして、マネージメント部は、対向装置が応答した補正情報に基づき、フロー管理テーブル内のデータ送信数とクレジット受信数を補正する。
【００５１】
これにより、送信側フロー制御装置と対向装置との間でデータ又はクレジットの廃棄が発生しても、送信側フロー制御装置は、対向装置でのデータ受信及び転送状態を把握することができるので、両装置間でのデッドロック状態を無くすることが可能になる。
【００５２】
また、上記の本発明において、該補正情報要求が該データ送信数を含み、該補正情報を、該データ送信数と該対向装置のデータ受信数との差分、及び該対向装置のクレジット送信数とすることができる。
【００５３】
すなわち、マネージメント部は、データ送信数を含んだ補正情報要求を送出し、対向装置から補正情報として、データ送信数と該対向装置のデータ受信数との差分、及びクレジット送信数を対向装置から受信する。
【００５４】
これにより、フロー管理テーブルのデータ送信数を、差分＝“往路におけるデータ廃棄数”で補正すること、クレジット受信数をクレジット送信数で補正することが可能になる。
【００５５】
また、上記の本発明において、該マネージメント部が、該補正情報要求を送信した時点での該データ送信数を記憶し、該補正情報を該対向装置のデータ受信数及びクレジット送信数とすることができる。
【００５６】
これにより、マネージメント部は、記憶したデータ送信数とデータ受信数との差分＝“往路におけるデータ廃棄数”に基づき、データ送信数を補正し、クレジット送信数に基づき、クレジット受信数を補正することが可能になる。
【００５７】
また、上記の本発明において、該マネージメント部が、該補正情報要求を所定の時間間隔で所定の形式で送信することができる。
【００５８】
これにより、例えば、往路におけるデータ廃棄数又は復路におけるクレジット廃棄数に対応した時間間隔、すなわち、対向装置側でのデッドロック状態が発生しない時間間隔でデータ送信数及びクレジット受信数を補正することが可能になる。
【００５９】
また、上記の本発明において、該マネージメント部が、該補正情報要求を送信した後、所定の時間以内に該補正情報を受信しないとき、再度、該補正情報要求を送信することができる。
【００６０】
これにより、補正情報要求が対向装置に到達せずに廃棄された場合、又は補正情報要求が対向装置に到達したが、補正情報が自装置に到達せずに廃棄された場合に対応することが可能になる。
【００６１】
さらに、上記の本発明において、該データを一時記憶する１つ又は複数のキューをさらに有し、該フロー管理テーブルが、各キューに対応する該データ送信数及び該クレジット受信数を管理し、該マネージメント部が、各キュー毎の該補正情報要求を送信することができる。
【００６２】
すなわち、送信側フロー制御装置は、１つ又は複数のキューをさらに備えている。フロー管理テーブルは、各キューに対応するデータ送信数及びクレジット受信数を管理する。マネージメント部が、各キュー毎の該補正情報要求を送信し、各キューに対応した補正情報を受信する。
【００６３】
これにより、待ち行列を有する１つ又は複数のキュー毎に送信データを管理することが可能になるとともに、各キューに対応するデータ送信数及びクレジット受信数の補正を行うことが可能になる。
【００６４】
また、上記の課題を解決するため、本発明に係る受信側フロー制御装置は、対向装置から受信したデータを一時的に記憶するキューと、該データの受信数と、該対向装置に送信したクレジットの数とを記憶するフロー管理テーブルと、該対向装置からの補正情報要求に対して、補正情報を応答するマネージメント部とを備える。
【００６５】
すなわち、キューは、対向装置から受信したデータを一時的に記憶する。フロー管理テーブルは、キューが受信したデータの数（データ受信数）と、対向装置に送信したクレジットの数（クレジット送信数）を記憶する。マネージメント部は、対向装置からの補正情報要求に対して、対向装置の例えばデータ送信数及びクレジット受信数に対する補正情報を応答する。
【００６６】
これにより、対向装置は、補正情報に基づき、廃棄されたデータ数、及び廃棄されたクレジット数を推測することが可能になり、すなわち、データ送信数及びクレジット受信数を補正することが可能になり、両装置間でのデッドロック状態を無くすることが可能になる。
【００６７】
そして、上記の補正情報要求は、データ送信数を含み、該補正情報を、該対向装置のデータ送信数とデータ受信数との差分、及びクレジット送信数である。
【００６８】
また、上記の本発明において、該補正情報を、該データ受信数及びクレジット送信数とすることができる。
【００６９】
さらに、上記の本発明において、該キューを複数個有し、該フロー管理テーブルが、各キュー毎の該データ受信数及び該クレジット送信数を管理し、該マネージメント部が、各キュー毎の補正情報要求に対する該補正情報を送信することができる。
【００７０】
すなわち、各キューに対応するデータ送信数及びクレジット受信数の補正をすることが可能になる。これにより、複数のキューが受信したデータをキュー毎に管理することが可能になるとともに、各キューに対応する対向装置におけるデータ送信数及びクレジット受信数の補正を行うことが可能になる。
【発明を実施するための最良の形態】
【００７１】
図１は、本発明に係る送信側フロー制御装置10及び受信側フロー制御装置20の実施例を示している。同図では、送信側フロー制御装置10と受信側フロー制御装置20との間を伝送路200_1，200_2で接続することにより、フロー制御システム100が形成されている。
【００７２】
送信側フロー制御装置10は、キュー11_1〜11_n（図示せず。以下符号11で総称することがある。）と送信側フロー管理テーブル12とを備えており、このテーブル12は、各キュー11に対応した、データ送信数12a、クレジット受信数12b、閾値12c、及びMC受信待ちビット12dで構成されている。
【００７３】
受信側フロー制御装置20は、キュー21_1〜21_n（図示せず。以下符号21で総称することがある。）と受信側フロー管理テーブル22とを備えており、このテーブル22は、各キュー21に対応した、データ受信数22a及びクレジット送信数22bで構成されている。
【００７４】
図10で示したキュー11とキュー21と同様に、送信側のキュー11_1〜11_nは、それぞれ、受信側のキュー21_1〜21_nに対応しており、キュー11_1に保持されたデータは、このキュー11_1に対応するキュー21_1に伝送される。
【００７５】
図２は、送信側フロー制御装置10と受信側フロー制御装置20との間を接続する伝送路200_1，200_2で伝送されるユーザデータ及びマネージメント用のデータを示している。
【００７６】
ユーザデータは、データセル71_1〜71_9（以下、符号71で総称することがある。また、単にデータ71と称することがある。）に搭載されて、伝送路200_1を経由してフロー制御装置10からフロー制御装置20に送信され、このデータ71の間にマネージメントデータを搭載したマネージメントセル(Management Cell、以下、MCと称することがある。)70が伝送されている。
【００７７】
同様に、フロー制御装置20からデータセル81_1〜81_9（以下、符号81で総称することがある。）がフロー制御装置10に送信され、このデータセル81の間のマネージメントセル80が伝送されている。
【００７８】
本実施例では、データ71に注目し、フロー制御装置10を送信側とし、フロー制御装置20を受信側とし、MC70を往路MC70（補正情報要求）とし、MC80を復路MC80（補正情報）と称する。
【００７９】
なお、この実施例では、ユーザデータ及びマネージメントデータは、セルに搭載されて伝送したが、セルの代わりにパケット、フレーム等を用いて伝送してもよい。
【００８０】
図３は、マネージメントセル(MC)の構成例を示している。同図(1)は、往路MC70を示しており、この往路MC70は、ヘッダ70a、キュー識別子70b、データ送信数70c、予備70d、パディング70e、及びCRC70fで構成されている。同図(2)は復路MC80を示しており、この復路MC80は、ヘッダ80a、キュー識別子80b、データ廃棄数80c、クレジット送信数80d、パディング80e、及びCRC80fで構成されている。
【００８１】
図４は、送信側フロー制御装置10の動作例を示している。この動作例を、特に受信側のキュー21_1に関するMC70，80のみに注目して、図１に示したフロー管理テーブル12のキュー番号＝“11_1”の設定値に基づき説明する。なお、往路MC70のキュー識別子70b及び復路MC80のキュー識別子80bに関しては、それぞれ、同じ値になるので説明を省略する。
【００８２】
ステップS11〔初期設定〕：フロー管理テーブル12（図１参照）のMC受信待ちビット12d＝“0”に設定する。ここで、MC受信待ちビット12d＝“0”は、往路MC70を送信していないことを意味し、MC受信待ちビット12d＝“1”は、往路MC70を送信済みであり、対向装置（受信側フロー制御装置）20からの復路MC80の待ち状態であることを意味する。
【００８３】
ステップS12：MC受信待ちビット12d＝“0（往路MC70は送信済でない。）”であるので、ステップS13に進む。
【００８４】
ステップS13〔タイマ1処理〕：所定の時間t1だけ待つ。この時間t1は、往路MC70の送出時間間隔である。
【００８５】
ステップS14〔往路MC70送出処理〕：往路MC70（図２及び図3(1)参照。）を送出する。すなわち、往路MC70のキュー識別子70b＝“11_1”、データ送信数70c＝“7”、予備70d＝all“0”、パディング70e、及びCRC70fを設定し、この往路MC70を受信側フロー制御装置20に送出する。さらに、MC受信待ちビット12d＝“1”にセットする。
【００８６】
ステップS15〔タイマ2処理〕：所定の時間t2だけ待つ。この時間t2は、往路MC70送出した後、この往路MC70の応答である復路MC80（図２及び図3(2)参照。）が戻って来なければならない時間である。
【００８７】
ステップS16：復路MC80を受信しない場合、往路MC70又は復路MC80が途中で廃棄されたものとして、ステップS14に戻って再度、往路MC70を送出する。
【００８８】
復路MC80を受信した場合、次のステップS17に進む。
【００８９】
ステップS17：復路MC80のCRC80fをチェックし誤りがある場合、復路MC80を廃棄し、ステップS14に戻って再度、往路MC70を送出する。
【００９０】
すなわち、送出した往路MC70に対する復路MC80が誤り無く戻って来るまで往路MC70の送出を繰り返す。
【００９１】
ステップS18〔復路MC80受信処理〕：フロー管理テーブル12の補正又は設定を行う。すなわち、(1)復路MC80のデータ廃棄数80c＝“例えば2”をデータ送信数12aに反映してデータ送信数12a＝“7”→“5”する。(2)クレジット受信数12bを、復路MC80のクレジット送信数80d＝“4”に書き換える。(3)MC受信待ちビット12d＝“0”に解除する。そして、ステップS12に戻る。
【００９２】
これにより、往路で廃棄されたデータ数と復路で廃棄されたクレジットに起因するフロー管理テーブル12の誤りを補正することができる。
【００９３】
図５は、受信側フロー制御装置20の動作例を示している。この動作例を、特に受信側のキュー21_1に関するMC70，80のみに注目して以下に説明する。すなわち、図１に示したフロー管理テーブル12，22のキュー番号＝“21_1”に対応するデータ受信数22a及びクレジット送信数22bの値に基づき説明する。
【００９４】
フロー管理テーブル22には、キュー21_1が記憶したデータ数は、データ受信数22a＝“5”であり、“キュー21_1から転送したデータ数”＝“送信側に送信したクレジットの数”は、クレジット送信数22b＝“4”である。
【００９５】
ステップS21，S22：往路MC70（図3(1)参照。）を受信したか否かを判別する。往路MC70を受信した場合、往路MC70の伝送誤りの有無をCRC70fでチェックし、誤りが有る場合、往路MC70を廃棄してステップS21に戻り、誤りが無い場合、ステップS23に進む。
【００９６】
ステップS23〔往路MC70受信処理〕：往路MC70のデータ送信数70c＝“7”とデータ受信数22a＝“5”との差を、データ廃棄数80c＝“2”とし、フロー管理テーブル22のクレジット送信数22b＝“4”をクレジット送信数80d＝“4”として、CRC80fを演算した復路MC80を作成して、送信側フロー制御装置10に返信する。
【００９７】
これにより、送信側フロー制御装置10は、往路のデータ廃棄数＝“2”及び実際のクレジット送信数22b＝“4”を知ることが可能になる。
【００９８】
図６は、送信側フロー制御装置10及び受信側フロー制御装置20の動作手順を示している。この動作手順を以下に説明する。この説明では、図４及び図５の場合と同様に、キュー11_1及びキュー21_1に関するデータ71及びMC70，80のみについて説明する。
【００９９】
なお、初期状態のフロー管理テーブル12のキュー11_1に対応するデータ送信数12a＝“0”、クレジット受信数12b＝“0”、閾値12c＝“5”、MC受信待ちビット＝“0”に設定されている。
【０１００】
タイミングT11：送信側フロー制御装置10は、データ71_1〜71_7を受信側フロー制御装置20に送出する。データ71_1〜71_7の中のデータ71_1，71_3は伝送中に廃棄T11a,T11bされるものとする。
【０１０１】
タイミングT12：フロー制御装置20において、キュー21_1は、データ71_2，71_4を記憶した後、後段に転送DT101,DT102し、この転送に対応するクレジット82_1，82_2を送信側フロー制御装置10に返信する。
【０１０２】
タイミングT13：フロー制御装置10のフロー管理テーブル12は、タイミングT11で送信したデータ数と受信したクレジット数を計数して、それぞれ、データ送信数12a＝“7”及びクレジット受信数12b＝“2”とする。
【０１０３】
タイミングT14：フロー制御装置10は、往路MC70_1をフロー制御装置20に送信するとともに、タイマ1（図示せず。タイムアウトt1）及びタイマ2（図示せず。タイムアウトt2）をスタートさせる。
【０１０４】
図７は、図６で送受信される往路MC70のデータ送信数70c、並びに復路MC80のデータ廃棄数80c及びクレジット送信数80dを示している。
【０１０５】
すなわち、フロー制御装置10は、フロー管理テーブル12のデータ送信数12a＝“7”を往路MC70のデータ送信数70cに設定して送出する。
【０１０６】
タイミングT15：フロー制御装置20は、データ71_5〜71_7を受信し、クレジット82_3，82_4を返信する。この中のクレジット82_3は、伝送中に廃棄T15aされるものとする。
【０１０７】
タイミングT16：フロー制御装置20において、タイミングT14，T15の受信及び送信の結果、フロー管理テーブル22のデータ受信数22a＝“5”及びクレジット送信数22b＝“4”になる。
【０１０８】
タイミングT17：フロー制御装置20において、このときのフロー管理テーブル22のデータ受信数22a＝“5”及びクレジット送信数22b＝“4（＝データ転送数）”である。したがって、キュー21_1に一時記憶されているデータ数＝“1(＝5−4)”である。
【０１０９】
フロー制御装置20は、往路MC70_1を受信し、キュー21_1宛に送信されたデータ送信数12a＝“7”であることを知る。そこで、フロー制御装置20は、データ送信数70c＝“7”と“データ受信数22a＝“4”との差分であるデータ廃棄数80c＝“2”、及びクレジット送信数80d＝“4（＝クレジット送信数22b）”を含んだ復路MC80_1（図７参照。）をフロー制御装置10に返信するが、この復路MC80_1は、途中で廃棄T17aされるものとする。
【０１１０】
タイミングT18：フロー制御装置10において、タイミングT14以後に送信したデータ数、及び受信したクレジット数がそれぞれ加算され、テーブル12のデータ送信数12a＝“10”、クレジット受信数12b＝“4”である。
【０１１１】
タイミングT19：往路MC70_1に対する応答、すなわち、復路MC80_1が時間t2以内に到着しないのでタイマ2がタイムアウトする。そこで、フロー制御装置10は、往路MC70_2（図７参照。）をフロー制御装置20に送信するとともに、タイマ1及びタイマ2を再スタートさせる。
【０１１２】
タイミングT20，T21：フロー制御装置20において、さらに、キュー21_1が、データ71_8，71_10を受信し、クレジット82_5，82_6が返信されているので、テーブル22のデータ受信数22a＝“7”及びクレジット送信数22b＝“6”である。
【０１１３】
タイミングT22：フロー制御装置20は、往路MC70_2を受信し、復路MC80_2（図７参照。）を返信する。
【０１１４】
タイミングT23：フロー制御装置10において、テーブル12のデータ送信数12a＝“12”及びクレジット受信数12b＝“5”である。
【０１１５】
タイミングT24：フロー制御装置10は、復路MC80_2を受信して、タイマ2を停止するとともに、テーブル12のMC受信待ちビット12d＝“0”にリセットする。
【０１１６】
タイミングT25：フロー制御装置10は、復路MC80_2のデータ廃棄数80c＝“3”及びクレジット送信数22b＝“6”に基づき、テーブル12のデータ送信数12a＝“9”及びクレジット受信数12b＝“6”に補正する。すなわち、「データ送信数12a＝“12”」−「データ廃棄数80c＝“3”」→「データ送信数12a＝“9”」、及び「クレジット送信数80d＝“6”」→「クレジット受信数12b＝“6”」とする。
【０１１７】
タイミングT26：フロー制御装置10において、テーブル12のデータ送信数12a＝“510”及びクレジット受信数12b＝“506”である。
【０１１８】
タイミングT27：タイマ1がタイムアウトする。そこで、フロー制御装置10は、往路MC70_3(図７参照。)を送出するとともに、タイマ2をスタートし、テーブル12のMC受信待ちビット＝“1”にセットする。
【０１１９】
タイミングT28：フロー制御装置20において、テーブル22のデータ受信数22a＝“508”及びクレジット送信数22b＝“508”である。したがって、キュー21_1に保持されているデータ数＝“0”である。
【０１２０】
タイミングT29：フロー制御装置20は、往路MC70_3を受信し、復路MC80_2（図７参照。）を返信する。
【０１２１】
タイミングT30：フロー制御装置10において、テーブル12のデータ送信数12a＝“512”及びクレジット受信数12b＝“507”である。
【０１２２】
タイミングT31：フロー制御装置10は、復路MC80_3を受信して、タイマ2を停止するとともに、テーブル12のMC受信待ちビット12d＝“0”にリセットする。
【０１２３】
タイミングT32：フロー制御装置10は、復路MC80_3のデータ廃棄数80c＝“2”及びクレジット送信数22b＝“508”に基づき、テーブル12のデータ送信数12a＝“512”及びクレジット受信数12b＝“508”に補正する。
【０１２４】
これにより、クレジット・ベースで制御されフロー制御装置10，20において、データ71又はクレジット82の廃棄に起因するデッドロック状態を無くすることが可能になる。
【０１２５】
図８は、本発明の送信側フロー制御装置10，20によって、廃棄されたデータ数及びクレジット数が、どのタイミングで、フロー管理テーブル12のデータ送信数12a及びクレジット受信数12bに反映されて補正されたかを示している。
【０１２６】
すなわち、送信側フロー制御装置10が、往路MC70_1に対する応答である復路MC80_1を受信したタイミングT43においては、フロー管理テーブル12のデータ送信数12aは、タイミングT41に送信されて廃棄T41aされたデータ71の数（この例では、データ71_3の“1”）だけ補正DC1され、クレジット受信数12bは、タイミングT42に送信されて廃棄されたクレジット82の数（この例では、“0”）だけ補正される。
【０１２７】
往路MC70_2に対する応答である復路MC80_2を受信したタイミングT46においては、フロー管理テーブル12のデータ送信数12aは、タイミングT41及びT44に送信されて廃棄T41a,T44aされたデータ71の数だけ補正DC1,DC2され、クレジット受信数12bは、タイミングT42及びT45に送信されて廃棄T45aされたクレジット82の数だけ補正DC3される。
【０１２８】
図９は、往路MC70が再送信される場合を示しており、同図(1)では、タイミングT51で送信された往路MC70_1が何らかの原因で途中で廃棄T51aされた場合、受信側フロー制御装置20は、復路MC80を返信することはない。そこで、送信側フロー制御装置10において、タイミングT51でスタートしたタイマ2のタイムアウトがt2時間後のタイミングT52で発生し、往路MC70_2が再送される。
【０１２９】
同図(2)では、タイミングT53で送信された往路MC70_1を受信フロー制御装置20が受信し、復路MC80_1を返信する。返信された復路MC80_1が何らかの原因で途中で廃棄T53aされた場合、送信側フロー制御装置10において、タイミングT53でスタートしたタイマ2のタイムアウトがt2時間後に発生し、往路MC70_2が再送される。
【０１３０】
往路MC70及び復路MC80の廃棄が発生した場合においては、往路MC70を再送することにより、図６に示したタイマ1によってt1時間間隔で行われる往路MC70及び復路MC80の送受信を確実に行うことが可能になる。
【０１３１】
これにより、データ送信数12a及びクレジット受信数12bの補正をデッドロックが発生する前に行うことが可能になる。
【０１３２】
なお、上記の図２〜図９で示した実施例では、送信側フロー制御装置10が、往路MC70（補正情報要求）にデータ送信数12aを含めて送信し、受信側フロー制御装置20が、復路MC80（補正情報）にデータ送信数12aとデータ受信数22aとの差、及びクレジット送信数22bを含めて返信した。この代わりに、送信側フロー制御装置10が、補正情報要求（例えば、データセル71の所定のビット＝“1”にして要求する。）を送信するとともに、送信時点のデータ送信数12aを記憶し、受信側フロー制御装置20が、復路MC80（補正情報）にデータ受信数22a、及びクレジット送信数22bを含めて返信するようにしてもよい。
【０１３３】
これによっても、送信側フロー制御装置10は、“データ送信数12a”−“データ受信数22a”を求めることが可能であり、データ送信数12aを補正することが可能になる。
【産業上の利用可能性】
【０１３４】
以上説明したように、本発明に係る送信側フロー制御装置によれば、フロー管理テーブルが、対向装置へのデータ送信数と、対向装置からのクレジット受信数とを記憶し、マネージメント部が、該対向装置に対して補正情報要求を送信し、受信した補正情報に基づき、該データ送信数及びクレジット受信数を補正するようにしたので、データ又はクレジットの廃棄に起因する、対向装置との間のデッドロック状態を無くすることが可能になる。
【０１３５】
また、本発明に係る受信側フロー制御装置によれば、マネージメント部が、対向装置からの補正情報要求に対して、対向装置のデータ送信数及びクレジット受信数に対する補正情報を通知するようにしたので、同様に、データ又はクレジットの廃棄に起因するデッドロック状態を無くすることが可能になる。
【図面の簡単な説明】
【０１３６】
【図１】本発明に係る送信側/受信側フロー制御装置で構成されたフロー制御システムの実施例を示したブロック図である。
【図２】本発明に係る送信側フロー制御装置と受信側フロー制御装置との間で交換されるデータセル及び往路/復路マネージメントセルの送受信例を示した図である。
【図３】本発明に係る送信側/受信側フロー制御装置で交換される往路/復路マネージメントセルの構成例を示した図である。
【図４】本発明に係る送信側フロー制御装置における動作手順例を示したフローチャート図である。
【図５】本発明に係る受信側フロー制御装置における動作手順例を示したフローチャート図である。
【図６】本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作手順例(1)を示したタイムチャート図である。
【図７】本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作例(1)における往路マネージメントセル及び復路マネージメントセルに設定される値を示した図である。
【図８】本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作例(2)を示したタイムチャート図である。
【図９】本発明に係る送信側フロー制御装置及び受信側フロー制御装置の動作例(3)を示したタイムチャート図である。
【図１０】一般的なクレジット・ベース・フロー制御方式の構成例を示したブロック図である。
【図１１】一般的なクレジット・ベース・フロー制御方式における動作例(1)を示したタイムチャート図である。
【図１２】一般的なクレジット・ベース・フロー制御方式における動作例(2)を示したタイムチャート図である。
【図１３】一般的なクレジット・ベース・フロー制御方式における動作例(3)を示したタイムチャート図である。
【符号の説明】
【０１３７】
100，100z  フロー制御システム         200_1，200_2  伝送路
10，10z  送信側フロー制御装置         11，11_1〜11_n  キュー
12，12z  送信側フロー管理テーブル     12a  データ送信数
12b  クレジット受信数                 12c  閾値
12d  マネージメントセル受信待ちビット、MC受信待ちビット
20，20z  受信側フロー制御装置         21，21_1〜21_n  キュー
22  受信側フロー管理テーブル          22a  データ受信数
22b  クレジット送信数、データ転送数
70  往路マネージメントセル、往路MC    70a  ヘッダ
70b  キュー識別子                     70c  データ送信数
70d  予備                             70e  パディング、PAD
70f  CRC
71，71_1〜71_19  データ、データセル
80  復路マネージメントセル、復路MC    80a  ヘッダ
80b  キュー識別子                     80c  データ廃棄数
80d  クレジット送信数、データ転送数
80e  パディング、PAD                  80f  CRC
81，81_1〜81_9  データ、データセル    82，82_1〜82_13  クレジット
図中、同一符号は同一又は相当部分を示す。
【図１】
0004190533.tif 000002
【図２】
0004190533.tif 000003
【図３】
0004190533.tif 000004
【図４】
0004190533.tif 000005
【図５】
0004190533.tif 000006
【図６】
0004190533.tif 000007
【図７】
0004190533.tif 000008
【図８】
0004190533.tif 000009
【図９】
0004190533.tif 000010
【図１０】
0004190533.tif 000011
【図１１】
0004190533.tif 000012
【図１２】
0004190533.tif 000013
【図１３】
0004190533.tif 000014