(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024025927
(43)【公開日】2024-02-28
(54)【発明の名称】ネットワークシステム、通信制御プログラムおよび通信制御方法
(51)【国際特許分類】
H04L 12/437 20060101AFI20240220BHJP
H04L 41/0654 20220101ALI20240220BHJP
【FI】
H04L12/437 Z
H04L41/0654
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022129311
(22)【出願日】2022-08-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】吉田 武俊
【テーマコード(参考)】
5K031
【Fターム(参考)】
5K031AA08
5K031CB12
5K031DA15
5K031EA01
(57)【要約】
【課題】データの再送信が行われるときの通信負荷の低減を図る。
【解決手段】送信元ノードN1は、送信対象データを分割データSD1、SD2に分割してリング網の第1の方向周り2aに送信し、分割データSD1、SD2のそれぞれに対応する冗長データSDr1、SDr2を第1の方向周り2aとは逆の第2の方向周り2bに送信する。中継ノードN6は、障害発生を検出し、分割データSD1、SD2のうちに未送信の未送信分割データSD2がある場合、未送信冗長データSDr2の送信要求rqを第2の方向周り2bに送信する。中継ノードN3は、冗長データSDr1、SDr2のうち少なくとも1つの冗長データを保存し、送信要求rqを受信した際に未送信冗長データSDr2を保存している場合、未送信冗長データSDr2を第2の方向周り2bに送信先ノードN5に向けて送信する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
送信先ノードに送信する送信対象データを複数の分割データに分割してリング網の第1の方向周りに送信し、前記複数の分割データのそれぞれに対応する複数の冗長データを前記第1の方向周りとは逆の第2の方向周りに送信する送信元ノードと、
前記リング網において前記送信先ノードに対する経路上に障害の発生を検出し、前記送信元ノードから受信した前記複数の分割データのうちに前記送信先ノードに送信していない未送信分割データがある場合に、前記複数の冗長データのうち前記未送信分割データに対応する未送信冗長データの送信要求を前記第2の方向周りに送信する第1の中継ノードと、
前記送信元ノードから受信した前記複数の冗長データのうち少なくとも1つの冗長データを保存し、前記送信要求を受信した際に前記未送信冗長データを保存している場合、保存している前記未送信冗長データを前記第2の方向周りに、前記送信先ノードに向けて送信する第2の中継ノードと、
を含んで前記リング網を形成するネットワークシステム。
【請求項2】
前記第2の中継ノードは、前記送信要求を受信した際に前記未送信冗長データを保存している場合、保存している前記未送信冗長データを前記第2の方向周りに送信するとともに、送信要求受信通知を前記第1の方向周りに、前記第1の中継ノードに向けて送信し、
前記第1の中継ノードは、前記第2の中継ノードから送信された前記送信要求受信通知を受信すると、前記送信先ノードに送信していない前記未送信分割データを削除する、
請求項1記載のネットワークシステム。
【請求項3】
前記第2の中継ノードは、バッファを有し、前記送信元ノードから受信した前記複数の冗長データのうち、前記バッファの空き容量分の冗長データを前記バッファに保存し、保存されなかった残り冗長データを前記第2の方向周りに送信する、
請求項1記載のネットワークシステム。
【請求項4】
前記送信元ノードおよび前記送信先ノードを除く前記リング網上のいずれのノードにも前記未送信冗長データが保存されておらず、前記送信要求が前記送信先ノードまで送信された場合、前記送信先ノードは、送信要求受信通知を前記送信元ノードに向けて送信し、
前記送信元ノードは、前記送信先ノードから送信された前記送信要求受信通知を受信すると、前記未送信分割データを前記第2の方向周りに、前記送信先ノードに向けて送信する、
請求項1記載のネットワークシステム。
【請求項5】
前記送信先ノードは、前記送信対象データを受信した場合、前記第1の方向周りおよび前記第2の方向周りにデータ受信完了通知を送信し、
前記第2の中継ノードは、前記データ受信完了通知を受信すると、前記複数の冗長データのうち保存している前記冗長データを削除する、
請求項1記載のネットワークシステム。
【請求項6】
前記送信元ノードは、前記送信先ノードに送信する送信データを分割し、分割された前記送信データの一部を前記複数の分割データとして前記第1の方向周りに送信し、残りを複数の他の分割データとして前記第2の方向周りに送信する、
請求項1記載のネットワークシステム。
【請求項7】
前記送信元ノードは、前記送信先ノードまでの前記第1の方向周りの経路における負荷と前記第2の方向周りの経路における負荷との比率にもとづいて、分割された前記送信データのうち、前記第1の方向周りに送信するデータ数と前記第2の方向周りに送信するデータ数とを決定する、
請求項6記載のネットワークシステム。
【請求項8】
リング網を形成している1つのノードであるコンピュータに、
送信先ノードに送信対象データを送信する送信元ノードとして動作する場合、前記送信対象データを複数の分割データに分割して前記リング網の第1の方向周りに送信し、前記複数の分割データのそれぞれに対応する複数の冗長データを前記第1の方向周りとは逆の第2の方向周りに送信し、
前記複数の分割データを中継する第1の中継ノードとして動作する場合、前記リング網において前記送信先ノードに対する経路上に障害の発生を検出し、前記送信元ノードから受信した前記複数の分割データのうち、前記障害の発生により前記送信先ノードに送信していない未送信分割データがある場合に、前記複数の冗長データのうち、前記未送信分割データに対応する未送信冗長データの送信要求を前記第2の方向周りに送信し、
前記複数の冗長データを中継する第2の中継ノードとして動作する場合、前記送信元ノードから受信した前記複数の冗長データのうち少なくとも1つの冗長データを保存し、前記未送信冗長データの送信要求を受信した際に前記未送信冗長データを保存している場合、保存している前記未送信冗長データを前記第2の方向周りに、前記送信先ノードに向けて送信する、
処理を実行させる通信制御プログラム。
【請求項9】
リング網を形成している1つのノードであるコンピュータが、
送信先ノードに送信対象データを送信する送信元ノードとして動作する場合、前記送信対象データを複数の分割データに分割して前記リング網の第1の方向周りに送信し、前記複数の分割データのそれぞれに対応する複数の冗長データを前記第1の方向周りとは逆の第2の方向周りに送信し、
前記複数の分割データを中継する第1の中継ノードとして動作する場合、前記リング網において前記送信先ノードに対する経路上に障害の発生を検出し、前記送信元ノードから受信した前記複数の分割データのうち、前記障害の発生により前記送信先ノードに送信していない未送信分割データがある場合に、前記複数の冗長データのうち、前記未送信分割データに対応する未送信冗長データの送信要求を前記第2の方向周りに送信し、
前記複数の冗長データを中継する第2の中継ノードとして動作する場合、前記送信元ノードから受信した前記複数の冗長データのうち少なくとも1つの冗長データを保存し、前記未送信冗長データの送信要求を受信した際に前記未送信冗長データを保存している場合、保存している前記未送信冗長データを前記第2の方向周りに、前記送信先ノードに向けて送信する、
処理を実行させる通信制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークシステム、通信制御プログラムおよび通信制御方法に関する。
【背景技術】
【0002】
近年、相互通信可能な複数のノードがスイッチを介さずにリング状に接続されてリング網を形成し、複数のノード間でデータを共有して通信が行われるネットワークシステムが開発されている。
【0003】
関連技術としては、例えば、リング網上で輻輳が発生してパケットの破棄が行われ、リング網内のルータによりパケットの破棄が検出された場合、該ルータがリング網の左右両方向周りから再送対象のパケットを出力する技術が提案されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
リング網上の送信元ノードから所定方向周りで送信先ノードに向けてデータが送信されているときに途中経路において障害が発生する場合がある。このような障害の発生時、従来では、障害を検出した障害検出ノードが逆方向周りから送信先ノードに向けてデータを再送信して障害を回避することが行われる。
【0006】
しかし、障害検出ノードからデータの再送信が行われると、障害検出ノードから送信先ノードまでの経路に対して再送データによる通信負荷が増大するという問題がある。
1つの側面では、本発明は、障害発生によってデータの再送信が行われるときの通信負荷の低減を図ったネットワークシステム、通信制御プログラムおよび通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、ネットワークシステムが提供される。ネットワークシステムは、送信先ノードに送信する送信対象データを複数の分割データに分割してリング網の第1の方向周りに送信し、複数の分割データのそれぞれに対応する複数の冗長データを第1の方向周りとは逆の第2の方向周りに送信する送信元ノードと、リング網において送信先ノードに対する経路上に障害の発生を検出し、送信元ノードから受信した複数の分割データのうちに送信先ノードに送信していない未送信分割データがある場合に、複数の冗長データのうち未送信分割データに対応する未送信冗長データの送信要求を第2の方向周りに送信する第1の中継ノードと、送信元ノードから受信した複数の冗長データのうち少なくとも1つの冗長データを保存し、送信要求を受信した際に未送信冗長データを保存している場合、保存している未送信冗長データを第2の方向周りに、送信先ノードに向けて送信する第2の中継ノードと、を含んでリング網を形成する。
【0008】
また、上記課題を解決するために、コンピュータに上記ネットワークシステムと同様の制御を実行させる通信制御プログラムが提供される。
さらに、上記課題を解決するために、コンピュータが上記ネットワークシステムと同様の制御を実行する通信制御方法が提供される。
【発明の効果】
【0009】
1側面によれば、データの再送信が行われるときの通信負荷の低減が可能になる。
【図面の簡単な説明】
【0010】
【
図1】ネットワークシステムの一例を説明するための図である。
【
図2】ネットワークシステムの構成の一例を示す図である。
【
図3】ノードの機能ブロックの一例を示す図である。
【
図4】送受信バッファに格納されるデータの構造の一例を示す図である。
【
図5】ネットワークシステムの動作の一例を示す図である。
【
図6】ネットワークシステムの動作の一例を示す図である。
【
図7】ネットワークシステムの動作の一例を示す図である。
【
図8】ネットワークシステムの動作の一例を示す図である。
【
図9】ネットワークシステムの動作の一例を示す図である。
【
図10】ネットワークシステムの動作の一例を示す図である。
【
図11】ネットワークシステムの動作の一例を示す図である。
【
図12】送信要求が送信先ノードまで送信された場合のネットワークシステムの動作の一例を示す図である。
【
図13】冗長データの各ノードにおける時系列保持状態の一例を示す図である。
【
図14】冗長データの各ノードにおける時系列保持状態の一例を示す図である。
【
図15】冗長データの各ノードにおける時系列保持状態の一例を示す図である。
【
図16】ネットワークシステムの構成の一例を示す図である。
【
図17】正常系の動作シーケンスの一例を示す図である。
【
図18】正常系の動作シーケンスの一例を示す図である。
【
図19】正常系の動作シーケンスの一例を示す図である。
【
図20】異常系の動作シーケンスの一例を示す図である。
【
図21】異常系の動作シーケンスの一例を示す図である。
【
図22】ノードが送信元ノードとして動作する場合のフローチャートである。
【
図23】ノードが分割データを中継する中継ノードとして動作する場合のフローチャートである。
【
図24】ノードが冗長データを中継する中継ノードとして動作する場合のフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。
図1はネットワークシステムの一例を説明するための図である。ネットワークシステム1は、複数のノードN1、・・・、N6を有し、ノードN1、・・・、N6がリング網を形成している。ノードN1、・・・、N6の機能は、例えば、図示しないプロセッサが、所定のプログラムを実行することによって実現され、すべてのノードN1、・・・、N6は同一の機能を有している。
【0012】
〔ステップS1〕ノードN1、・・・、N6のうちのノードN1が送信元ノード、ノードN5が送信先ノードとする。送信元ノードN1は、送信先ノードN5にデータを送信する場合に、送信対象データを複数の分割データSD1、SD2に分割し、リング網の第1の方向周り2aに分割データSD1、SD2を送信する。
【0013】
また、送信元ノードN1は、分割データSD1、SD2に対応する冗長データSDr1、SDr2を第1の方向周り2aとは逆の第2の方向周り2bに送信する。なお、冗長データSDr1、SDr2は、例えば、分割データSD1、SD2それぞれに冗長フラグを付して生成したものであり、データ内容は実質同じである。
【0014】
〔ステップS2〕リング網上の送信先ノードN5と中継ノードN6(第1の中継ノード)との間の経路に障害が発生し、中継ノードN6が障害を検出したとする。また、このときに、分割データSD1は送信先ノードN5に到達しているが、分割データSD2は送信先ノードN5に未到達であるとする。
【0015】
中継ノードN6は、障害の発生を検出して、送信元ノードN1から受信した分割データSD1、SD2のうちに送信先ノードN5に送信していない未送信分割データSD2がある場合に、未送信分割データSD2に対応する未送信冗長データSDr2の送信要求rqを第2の方向周り2bに送信する。
【0016】
〔ステップS3〕中継ノードN3(第2の中継ノード)は、送信元ノードN1から受信した冗長データSDr1、SDr2のうち冗長データSDr2をバッファbfに保存しているとする。中継ノードN3は、送信要求rqを受信した場合に、未送信冗長データSDr2を保存しているので、保存している未送信冗長データSDr2を第2の方向周り2bから送信先ノードN5に向けて送信する。したがって、送信先ノードN5では、障害発生時に未到達になっていた分割データSD2に対して実質的に同じ冗長データSDr2を受信することができる。
【0017】
このように、ネットワークシステム1では、送信元ノードN1がデータを分割して分割データをリング網の第1の方向周り2aから送信すると共に冗長データを逆の第2の方向周り2bに送信し、中継ノード(この例では中継ノードN3)が冗長データを保持する。そして、障害発生時に、中継ノードN3が未送信分割データに対応する未送信冗長データを第2の方向周り2bに送信する。
【0018】
ここで、障害の発生時、障害を検出した中継ノードN6が第2の方向周り2bから送信先ノードN5に向けて未送信のデータを再送信して障害回避を行うと、中継ノードN6からノードN1、N2、N3、N4を経由した送信先ノードN5までの経路に対して再送データによる通信負荷が増えることになる。
【0019】
これに対し、ネットワークシステム1では、上記のように、中継ノードN3が第2の方向周り2bから送信先ノードN5に向けて未送信分割データを再送信して障害を回避するので、再送データによる通信負荷が増える経路は、中継ノードN3からノードN4を経由した送信先ノードN5までの経路になる。したがって、再送信時の通信負荷が増える経路数を減らすことができるので、データの再送信が行われるときの通信負荷の低減を行うことが可能になる。
【0020】
<ネットワークシステムの構成>
図2はネットワークシステムの構成の一例を示す図である。ネットワークシステム1-1は、サーバSV1、SV2を備える。サーバSV1は、ノード10-1、10-2、10-3、バス13、CPU(Central Processing Unit)14、メモリ15およびストレージ16を備える。ノード10-1は、プロセッサ11-1および送受信バッファ12を含む。
【0021】
ノード10-1、10-2、10-3(総称する場合はノード10と呼ぶ場合がある)は、
図1に示したノードN1、・・・、N6と同一の機能を有する。また、サーバSV2もサーバSV1と同様の構成を有する。サーバSV1内のノード10-1、10-2、10-3は、リング網NR1を形成する。サーバSV2内の図示しないノードも同様にしてリング網を形成する。
【0022】
ノード10は、プロセッサ11-1によってノード機能が制御されている。プロセッサ11-1には、バス13を介して、CPU14,メモリ15およびストレージ16が接続されている。バス13は、例えば、PCIe(Peripheral Component Interconnect Express:登録商標)等の拡張バスである。
【0023】
プロセッサ11-1は、例えば、FPGA(Field Programmable Gate Array)である。または、CPU、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)等である。プロセッサ11-1は、マルチプロセッサであってもよい。プロセッサ11-1は、例えばプロセッサ11-1がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。送受信バッファ12は、ノード10-1で送受信されるデータおよびデータの属性情報を格納するメモリである(データ構造については
図4で後述)。
【0024】
CPU14は、サーバSV1の全体を制御する。メモリ15は、サーバSV1の主記憶装置として使用される。メモリ15には、CPU14およびプロセッサ11-1に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ15には、CPU14およびプロセッサ11-1による処理に利用する各種データが格納される。メモリ15としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0025】
ストレージ16は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ16は、サーバSV1の補助記憶装置として使用される。ストレージ16には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ16としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0026】
サーバSV1およびノード10は、以上のようなハードウェアによって処理機能を実現することができる。サーバSV1に含まれるノード10は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、処理機能を実現する。ノード10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ノード10に実行させるプログラムをストレージ16に格納しておくことができる。CPU14またはプロセッサ11-1は、ストレージ16内のプログラムの少なくとも一部をメモリ15にロードし、プログラムを実行する。またノード10に実行させるプログラムを、光ディスクやメモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばCPU14またはプロセッサ11-1からの制御により、ストレージ16にインストールされた後、実行可能となる。またプロセッサ11-1が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0027】
<機能ブロック>
図3はノードの機能ブロックの一例を示す図である。ノード10は、制御部11および送受信バッファ12を備える。送受信バッファ12は、
図1のバッファbfの機能を有する。制御部11は、経路速度測定部11a、経路障害判定部11b、データ分割部11c、分割データ振分部11dおよび冗長データ・バッファ保持/削除管理部11eを含む。
【0028】
経路速度測定部11aは、リング網の順/逆方向周りで各ノード間の速度情報を収集し、収集した速度情報のうち順方向周りの最低速度を順方向周りにおける通信速度とし、逆方向周りの最低速度を逆方向周りにおける通信速度とする。
【0029】
経路障害判定部11bは、データの送信先方向にデータが送れない、もしくは送信時間が一定以上かかるような場合、経路障害発生と判断し、送信予定データについてその送信方向とは逆方向に送信要求を送信する。
【0030】
データ分割部11cは、送受信バッファ12内のデータ保持ブロックのブロックサイズに応じて送信対象のデータを分割し、分割した各データについて識別子(ID)を付与する。分割データ振分部11dは、経路速度測定部11aで得られた順/逆方向周りの通信速度比に応じ、データ分割部11cにより分割されたデータを順/逆方向周りに送信する。
【0031】
冗長データ・バッファ保持/削除管理部11eは、送信されてきた冗長データ(冗長フラグが付いた分割データ)について、送受信バッファ12内のブロックに空きがあれば、送信されてきた冗長データの先頭から取得して保持する。
【0032】
また、冗長データ・バッファ保持/削除管理部11eは、ブロックに空きがなければ、送信されてきた冗長データは次の隣接ノードへ送信する。なお、全データが送信先ノードで受信されて、送信先ノードから発せられたデータ受信完了通知を受信した場合、冗長データ・バッファ保持/削除管理部11eは、送受信バッファ12内のブロックに保持されている冗長データを削除する。
【0033】
<送受信バッファに格納されるデータの構造>
図4は送受信バッファに格納されるデータの構造の一例を示す図である。送受信バッファ12は、データID、データ、送信方向(順/逆)、必達/冗長フラグ、登録時間、送信元および送信先の各項目を有している。データIDは、分割データに付されているIDである。データは、分割データのデータ内容である。送信方向(順/逆)は、分割データの送信方向であり、順方向周りか逆方向周りかを示す。
【0034】
必達/冗長フラグは、分割データに必達フラグが付されているか、冗長フラグが付されているかを示す。なお、必達フラグは、冗長データを送信する前に送信される送信対象データを分割した分割データに付されるフラグである。登録時間は、冗長データを保持領域に保持したときの時間を示す。送信元は、分割データの送信元ノードを示す。送信先は分割データが送信される送信先ノードを示す。
【0035】
<ネットワークシステムの動作>
図5から
図11はネットワークシステムの動作の一例を示す図である。ネットワークシステム1aにおいて、ノードN1、・・・、ノードN6によりリング網が形成され、ノードN1が送信元ノード、ノードN5が送信先ノードとする。また、ノード間の経路上の数値は帯域値(送信帯域/受信帯域)を示している。
【0036】
例えば、ノードN1とノードN2との間の経路において、ノードN1がノードN2へデータ送信する際の送信帯域は8、ノードN1がノードN2からデータ受信する際の受信帯域は10である。また、ノードN2とノードN3との間の経路において、ノードN2がノードN3へデータ送信する際の送信帯域は10、ノードN2がノードN3からデータ受信する際の受信帯域は10である。さらに、ノードN3とノードN4との間の経路において、ノードN3がノードN4へデータ送信する際の送信帯域は10、ノードN3がノードN4からデータ受信する際の受信帯域は10である。
【0037】
一方、ノードN1とノードN6との間の経路において、ノードN1がノードN6へデータ送信する際の送信帯域は10、ノードN1がノードN6からデータ受信する際の受信帯域は10である。また、ノードN6とノードN5との間の経路において、ノードN6がノードN5へデータ送信する際の送信帯域は4、ノードN6がノードN5からデータ受信する際の受信帯域は2である。さらに、ノードN5とノードN4との間の経路において、ノードN5がノードN4へデータ送信する際の送信帯域は10、ノードN5がノードN4からデータ受信する際の受信帯域は10である。なお、以降の説明ではリング網の左方向周りを順方向周り、右方向周りを逆方向周りとする。
【0038】
〔ステップS11〕送信元であるノードN1は、ノードN5までの順方向周りの経路における負荷と逆方向周りの経路における負荷との比率を求める。例えば、ノードN1は、順方向周りのデータ送信速度と、逆方向周りのデータ送信速度とを測定して速度比を求める。この例では、ノードN1から順方向周りにおいて最小の送信帯域は4であり、ノードN1から逆方向周りにおいて最小の送信帯域は8であるから、速度比は1:2と求められる。
【0039】
〔ステップS12〕ノードN1は、各ノードが有する送受信バッファ12において冗長データが格納されるブロックサイズにもとづいて、送信対象の必達データを分割して、複数の分割データを生成する。例えば、ノードN1は、必達データをブロックサイズで分割し、それぞれの分割データに必達フラグを付して、6つの分割データSD1、・・・、SD6を生成する。
【0040】
〔ステップS13〕ノードN1は、ステップS11で求めた比率(速度比)にもとづいて、分割された必達データのうち、順方向周りに送信するデータ数と逆方向周りに送信するデータ数とを決定する。
【0041】
この例では、速度比に応じて順/逆方向周りに分割データを割り当てて送信する。よって、順方向周り速度:逆方向周り速度=1:2であるから、ノードN1は、順方向周りへ2つの分割データSD1、SD2を割り当てて送信し、逆方向周りへ4つの分割データSD3、SD4、SD5、SD6を割り当てて送信する。
【0042】
このように、順方向経路における負荷と逆方向経路における負荷との比率を求め、送信対象データに対して、比率にもとづいた順/逆方向周りの分割データ伝送を行うので、リング網の通信帯域の圧迫を抑制することができる。
【0043】
〔ステップS14a〕ノードN1は、分割データに冗長フラグを付して冗長データを生成して、冗長データの送信を行う。この場合、ノードN1は、分割データSD1、SD2に冗長フラグを付して冗長データSDr1、SDr2を生成し、冗長データSDr1、SDr2は逆方向周りに送信する。
【0044】
〔ステップS14b〕ノードN1は、分割データSD3、SD4、SD5、SD6に冗長フラグを付して冗長データSDr3、SDr4、SDr5、SDr6を生成し、冗長データSDr3、SDr4、SDr5、SDr6は順方向周りに送信する。
【0045】
なお、ノードN1は、経路上の各ノードの送受信バッファ12の空きブロック数を報告して貰い、空きブロック数の分の冗長データを送信してもよい。
〔ステップS15a〕ノードN2は、ノードN1から送信された冗長データSDr1、SDr2を受信する。なお、冗長データSDr1、SDr2それぞれには冗長フラグが付されているため、ノードN2は、受信データが冗長データであることを認識できる。また、ノードN2は、冗長データを受信した場合、送受信バッファ12の冗長データ保持領域に、冗長データを保持可能か否かの判定を行う。
【0046】
ノードN2は、送受信バッファ12の冗長データ保持領域に空きブロックがある場合は、該空きブロックに冗長データを保持する。ここでは、ノードN2の送受信バッファ12の冗長データ保持領域に1つの空きブロックがあったとし、該空きブロックに冗長データSDr1が保持されたとする。
【0047】
〔ステップS15b〕ノードN2は、送受信バッファ12の冗長データ保持領域に保持されなかった冗長データSDr2を逆方向周りでノードN3に送信する。
〔ステップS15c〕ノードN3は、ノードN2から送信された冗長データSDr2を受信する。ノードN3は、冗長データを受信した場合、送受信バッファ12の冗長データ保持領域に、冗長データを保持可能か否かの判定を行う。ノードN3は、送受信バッファ12の冗長データ保持領域に空きブロックがある場合は、該空きブロックに冗長データSDr2を保持する。
【0048】
このように、冗長データ保持領域の空きブロックに応じて冗長データが保持され、保存されなかった残り冗長データは他ノードに送信されることにより、複数の中継ノードそれぞれのデータ格納容量を効率的に使用することができる。
【0049】
〔ステップS16〕ノードN1は、必達データを分割したうちの2つの分割データSD1、SD2を順方向周りへ送信し、必達データを分割したうちの4つの分割データSD3、SD4、SD5、SD6を逆方向周りへ送信する。なお、分割データSD1、・・・、SD6には、ノードN1によって必達フラグが付されており、必達フラグが付されている分割データは、中継ノードの冗長データ保持領域には保持されない。
【0050】
〔ステップS17〕ノードN6が分割データSD1のノードN5への送信後に、ノードN6とノードN5との間の経路に障害が発生したとする。このような障害としては、断線以外に、例えば、ノードN6とノードN5との間で別の通信がさらに開始され、ノードN6からノードN5への送信帯域が4から1へ狭くなるような場合がある。このような帯域の低減が生じて通信品質が劣化するようなケースも障害とみなせる。
【0051】
〔ステップS18〕ノードN6は、ノードN6とノードN5との間の経路に障害が発生したことを検出する。
〔ステップS19〕ノードN6は、ノードN5に対して未到達となった分割データSD2に対応する冗長データSDr2の送信要求rqを生成し、この送信要求rqを逆方向周りに送信する。なお、送信要求rqのメッセージには、例えば、当該メッセージの発信元のノードのIDおよび送信要求対象の未送信冗長データのIDが少なくとも含まれる。
【0052】
〔ステップS20〕ノードN2は、ノードN1を経由してノードN6から送信された送信要求rqを受信するが、ノードN2の送受信バッファ12の冗長データ保持領域内に冗長データSDr2は保持していないので、送信要求rqを逆方向周りに中継送信する。
【0053】
〔ステップS21〕ノードN3は、ノードN2から送信された送信要求rqを受信する。ノードN3は、送受信バッファ12の冗長データ保持領域内に冗長データSDr2を保持しているため、冗長データSDr2を逆方向周りに送信する。なお、送信要求rqの逆方向周りの中継送信は、ノードN3で停止される。
【0054】
〔ステップS22〕ノードN3は、送信要求対象の冗長データSDr2を逆方向周りに送信すると、送信要求受信通知akを送信要求rqが送信された方向とは逆の順方向周りに送信する。送信要求受信通知akは、ノードN2およびノードN1で中継されてノードN6まで送信される。なお、送信要求受信通知akのメッセージには、例えば、当該メッセージの発信元のノードのIDと、送信要求rqにもとづいて送信した冗長データのIDとが含まれる。
【0055】
〔ステップS23〕ノードN6は、送信要求受信通知akを受信すると、未送信分割データSD2を削除する。このように、ノードN6は、未送信分割データSD2に対応する冗長データSDr2が、他ノードから送信されたことを示す送信要求受信通知akを受信することにより、ノードN6において送信不要となった分割データSD2を削除することができ、データ格納容量の空きを確保することができる。
【0056】
〔ステップS24〕ノードN5は、未達になっていた分割データSD2と実質的に同一の冗長データSDr2をノードN3から受信する。ノードN5は、受信すべき必達データは予め認識しているため、すべての必達データの受信を認識した場合、データ受信完了通知m1を、順/逆方向周りに送信する。なお、障害発生個所を認識している場合は、障害発生個所を回避する方向(この例では順方向周り)に送信してもよい。
【0057】
〔ステップS25〕ノードN3は、データ受信完了通知m1を受信すると、送受信バッファ12の冗長データ保持領域に保持している冗長データSDr2を削除する。また、ノードN3は、データ受信完了通知m1をノードN2へ中継送信する。
【0058】
〔ステップS26〕ノードN2は、データ受信完了通知m1を受信すると、送受信バッファ12の冗長データ保持領域に保持している冗長データSDr1を削除する。また、ノードN2は、データ受信完了通知m1をノードN1へ中継送信する。
【0059】
〔ステップS27〕ノードN1は、データ受信完了通知m1を受信すると、必達データを分割して生成した分割データおよび関連する冗長データを削除する。
図12は送信要求が送信先ノードまで送信された場合のネットワークシステムの動作の一例を示す図である。ネットワークシステム1a1において、ノードN2、N3、N4それぞれの送受信バッファ12の冗長データ保持領域に空きブロックがないとする。
【0060】
〔ステップS21a〕ノードN2、N3、N4それぞれの送受信バッファ12の冗長データ保持領域に空きブロックがないため、ノードN2、N3、N4のいずれにも冗長データSDr2が保存されておらず、送信要求rqがノードN5まで送信される。
【0061】
〔ステップS22a〕ノードN5は、送信要求rqを受信すると、送信要求受信通知akを、障害を回避する順方向周りでノードN1に向けて送信する。
〔ステップS23a〕送信元のノードN1は、ノードN5から送信された送信要求受信通知akを受信すると、未送信分割データSD2を逆方向周りに、ノードN5に向けて送信する。
【0062】
ここで、障害を検出したノードN6からノードN5に向けて未送信のデータを再送信すると、ノードN6からノードN1、N2、N3、N4を経由したノードN5までの経路に対して再送データによる通信負荷が増えることになる。
【0063】
一方、ネットワークシステム1a1では、ノードN1およびノードN5を除くリング網上のいずれのノードN2、N3、N4にも冗長データSDr2が保存されていない場合でも、送信元のノードN1から未送信分割データSD2がノードN5に送信される。
【0064】
このため、再送データによる通信負荷が増える経路は、ノードN1からノードN2、N3、N4を経由したノードN5までの経路になる。したがって、再送信時の通信負荷が増える経路数を減らすことができるので(この例では1つの経路数の削減)、データの再送信が行われるときの通信負荷の低減を行うことが可能になる。
【0065】
<冗長データの時系列保持状態>
図13から
図15は冗長データの各ノードにおける時系列保持状態の一例を示す図である。ノードN1、・・・、ノードN6がリング状に接続されているネットワークシステム1aにおいて、ノードN2、・・・、ノードN6それぞれが有する送受信バッファ12の冗長データ保持領域は、4つのブロックからなるものとする。なお、図中の冗長データ保持領域のブロックに示される“‐”は、当該ブロックが空いていることを示し、“×”は当該ブロックが空いていないことを示している。
【0066】
〔時間t〕送信元のノードN1は、送信先のノードN5に向けてリング網の順方向周りに冗長データSDr3、SDr4、SDr5、SDr6を送信し、ノードN5に向けてリング網の逆方向周りに冗長データSDr1、SDr2を送信する。
【0067】
〔時間(t+1)〕逆方向周りにおいて、ノードN2には、送受信バッファ12の冗長データ保持領域に1つの空きブロックがあるので、ノードN2に最初に到達した冗長データSDr1はこの空きブロックに保持される。また、ノードN2で保持されなかった冗長データSDr2は、隣接のノードN3へ送信される。
【0068】
順方向周りにおいて、ノードN6には、送受信バッファ12の冗長データ保持領域に4つの空きブロックがあるので、ノードN6に到達した冗長データSDr3、SDr4、SDr5、SDr6はこれら空きブロックに保持される。
【0069】
〔時間(t+2)〕逆方向周りにおいて、ノードN3には、送受信バッファ12の冗長データ保持領域に2つの空きブロックがあるので、ノードN2からノードN3に送信された冗長データSDr2は2つの空きブロックのうちの1つの空きブロックに保持される。
【0070】
<正常系の動作シーケンス>
次に
図16から
図19を用いて、ネットワークシステムの正常系の動作シーケンスについて説明する。
図16はネットワークシステムの構成の一例を示す図である。ネットワークシステム1bは、ノードsrc、ノードrt1、ノードrt2、ノードrtmおよびノードdstを有して、
図16に示すようなリング網を形成している。ノードsrcは送信元ノードであり、ノードdstは送信先ノードである。ノードrt1、ノードrt2およびノードrtmは、中継ノードである。
【0071】
図17から
図19は正常系の動作シーケンスの一例を示す図である。ネットワークシステム1bにおいて、障害が未発生の場合の動作シーケンスを示している。
〔ステップS31〕ノードsrcは、ノードdstに向けた必達データの送信処理を開始する。
【0072】
〔ステップS32〕ノードsrcは、ノードdstまでの順/逆方向周りのデータ送信の速度測定を開始する。
〔ステップS32a〕ノードsrcは、ノードdstまでの順方向周りのデータ送信の速度測定を行う。この場合、ノードsrcからノードrtmへのデータ送信の速度が測定され、ノードrtmからノードdstへのデータ送信の速度が測定される。
【0073】
〔ステップS32b〕ノードsrcは、ノードdstまでの逆方向周りのデータ送信の速度測定を行う。この場合、ノードsrcからノードrt1へのデータ送信の速度が測定され、ノードrt1からノードrt2へのデータ送信の速度が測定され、さらにノードrt2からノードdstへのデータ送信の速度が測定される。
【0074】
〔ステップS33〕ノードsrcは、送信対象の必達データを、各ノードが有する送受信バッファ12の冗長データ保持領域のブロックサイズにもとづいて分割して、複数の分割データを生成する。
【0075】
〔ステップS34〕ノードsrcは、順方向周りの速度と逆方向周りの速度の速度比を求め、順方向周りから送信すべき分割データと、逆方向周りから送信すべき分割データとを速度比にもとづいて割り当てる。そして、順方向周りの分割データと逆方向周りの分割データとの送信を開始する。
【0076】
〔ステップS34a〕ノードsrcは、速度比に応じて順方向周りに割り当てられた分割データをノードdstに向けて送信する。ノードsrcにおける順方向周りの分割データは、ノードrtmを経由してノードdstに送信される。
【0077】
〔ステップS34b〕ノードsrcは、速度比に応じて逆方向周りに割り当てられた分割データをノードdstに向けて送信する。ノードsrcにおける逆方向周りの分割データは、ノードrt1およびノードrt2を経由してノードdstに送信される。
【0078】
〔ステップS35〕ノードsrcは、ステップS34で生成した分割データに冗長フラグを付して冗長データを生成し、冗長データの送信処理を開始する。
この場合、ノードsrcは、順方向周りの分割データに冗長フラグを付して生成した冗長データは逆方向周りに送信し、逆方向周りの分割データに冗長フラグを付して生成した冗長データは順方向周りに送信する。
【0079】
〔ステップS36a〕ノードrt1は、ノードsrcから送信された冗長データを受信すると、送受信バッファ12の冗長データ保持領域に空きブロックがある場合は、該空きブロックに冗長データを保持する。また、ノードrt1は、送受信バッファ12の冗長データ保持領域に保持されなかった冗長データはノードrt2に送信する。
【0080】
〔ステップS36b〕ノードrt2は、ノードrt1から送信された冗長データを受信すると、送受信バッファ12の冗長データ保持領域に空きブロックがある場合は、該空きブロックに冗長データを保持する。また、ノードrt2は、送受信バッファ12の冗長データ保持領域に保持されなかった冗長データはノードdstに送信する。
【0081】
〔ステップS36c〕ノードrtmは、ノードsrcから送信された冗長データを受信すると、送受信バッファ12の冗長データ保持領域に空きブロックがある場合は、該空きブロックに冗長データを保持する。また、ノードrtmは、送受信バッファ12の冗長データ保持領域に保持されなかった冗長データはノードdstに送信する。
【0082】
〔ステップS37〕ノードdstは、受信すべき必達データは予め認識しているため、すべての必達データの受信を認識した場合は、データ受信完了通知m1を順/逆両方向周りに送信する。
【0083】
〔ステップS38a〕ノードrt2は、データ受信完了通知m1を受信すると、送受信バッファ12の冗長データ保持領域に保持している冗長データを削除する。
〔ステップS38a1〕ノードrt2は、データ受信完了通知m1をノードrt1に送信する。
【0084】
〔ステップS38b〕ノードrt1は、データ受信完了通知m1を受信すると、送受信バッファ12の冗長データ保持領域に保持している冗長データを削除する。
〔ステップS38b1〕ノードrt1は、データ受信完了通知m1をノードsrcに送信する。
【0085】
〔ステップS38c〕ノードrtmは、データ受信完了通知m1を受信すると、送受信バッファ12の冗長データ保持領域に保持している冗長データを削除する。
〔ステップS38c1〕ノードrtmは、データ受信完了通知をノードsrcに送信する。
【0086】
〔ステップS39〕ノードsrcは、データ受信完了通知m1を受信すると、必達データを分割して生成した分割データおよび関連する冗長データを削除する。このように、中継ノードがデータ受信完了通知m1を受信した場合に、保持している冗長データを削除することで、データ格納容量の空き容量を確保することができる。
【0087】
<異常系の動作シーケンス>
次に
図20、
図21を用いて、ネットワークシステムの異常系の動作シーケンスについて説明する。
図16に示したネットワークシステム1bにおいて、ノードrtmとノードdstとの間の経路に障害が発生した場合の動作シーケンスを示している。
【0088】
図20、
図21は異常系の動作シーケンスの一例を示す図である。ノードrt2に再送信対象の冗長データが保持されているものとする。
〔ステップS41〕ノードrtmは、ノードrtmとノードdstとの間の経路に障害が発生したことを検出する。
【0089】
〔ステップS42〕ノードrtmは、ノードdstに対して未送信となった未送信分割データに対応する、再送信対象である未送信冗長データの送信要求rqを生成し、この送信要求rqを逆方向周りに送信する。
【0090】
〔ステップS43a〕ノードsrcは、ノードrtmから送信された送信要求rqを受信すると、この送信要求rqを逆方向周りに送信する。
〔ステップS43b〕ノードrt1は、ノードsrcから送信された送信要求rqを受信する。ノードrt1は、送受信バッファ12の冗長データ保持領域内に送信要求対象の冗長データを保持していない場合、送信要求rqを逆方向周りに送信する。
【0091】
〔ステップS44〕ノードrt2は、ノードrt1から送信された送信要求rqを受信する。ノードrt2は、送受信バッファ12の冗長データ保持領域内に送信要求対象の冗長データを保持している場合、送信要求対象の冗長データを逆方向周りに送信する。
【0092】
〔ステップS45〕ノードrt2は、送信要求対象の冗長データを逆方向周りに送信した後、送信要求受信通知akを順方向周り(送信要求rqが送信された方向の反対方向)に送信する。送信要求受信通知akは、ノードrt1およびノードsrcで中継されてノードrtmまで送信される。
【0093】
〔ステップS46〕ノードrtmは、送信要求受信通知akを受信すると、未送信分割データを削除する。
〔ステップS47〕ノードdstは、未到達であった分割データに対応する冗長データをノードrt2から受信する。ノードdstは、受信すべき必達データは予め認識しているため、すべての必達データの受信を認識した場合は、データ受信完了通知m1を、障害発生個所を回避する方向(この例では順方向周り)に送信する。
【0094】
〔ステップS48〕ノードrt2は、データ受信完了通知m1を受信すると、送受信バッファ12の冗長データ保持領域に保持している冗長データを削除する。
〔ステップS48a〕ノードrt2は、ノードdstから送信されたデータ受信完了通知m1をノードrt1に送信する。
【0095】
〔ステップS49〕ノードrt1は、ノードrt1から送信されたデータ受信完了通知m1をノードsrcに送信する。
〔ステップS50〕ノードsrcは、データ受信完了通知m1を受信すると、必達データを分割して生成した分割データおよび関連する冗長データを削除する。
【0096】
<フローチャート>
次にネットワークシステムを形成している、リング網上のノード10の動作についてフローチャートを用いて説明する。
図22はノードが送信元ノードとして動作する場合のフローチャートである。
【0097】
〔ステップS61〕制御部11は、送信先ノードまでの第1の方向周りの経路における負荷と第2の方向周りの経路における負荷との比率を求める。
〔ステップS62〕制御部11は、送信対象の必達データを、各ノードが有する送受信バッファ12の冗長データ保持領域のブロックサイズにもとづいて分割して、複数の分割データを生成する。
【0098】
〔ステップS63〕制御部11は、ステップS61で求めた比率にもとづいて、第1の方向周りから送信すべき分割データの数と、第2の方向周りから送信すべき分割データの数を決定する。
【0099】
〔ステップS64〕制御部11は、分割データそれぞれに冗長フラグを付して冗長データを生成し、第1の方向周りの分割データに対応する冗長データを第2の方向周りに送信し、第2の方向周りの分割データに対応する冗長データを第1の方向周りに送信する。
【0100】
〔ステップS65〕制御部11は、障害を検出した障害検出ノードから送信された送信要求rqを受信したか否かを判定する。送信要求rqを受信した場合はステップS66の処理に進み、受信しない場合はステップS67の処理に進む。
【0101】
〔ステップS66〕制御部11は、送信要求rqを隣接ノードに送信する。
〔ステップS67〕制御部11は、データ受信完了通知m1を受信したか否かを判定する。データ受信完了通知m1を受信した場合はステップS68の処理に進み、受信しない場合はステップS67の処理を繰り返す。
【0102】
〔ステップS68〕制御部11は、データ受信完了通知m1を受信すると、必達データを分割して生成した分割データおよび関連する冗長データを削除する。
図23はノードが分割データを中継する中継ノードとして動作する場合のフローチャートである。
【0103】
〔ステップS71〕制御部11は、第1の方向周りまたは第2の方向周りに分割データを中継送信する。
〔ステップS72〕制御部11は、障害の発生を検出したか否かを判定する。障害の発生を検出した場合はステップS73aの処理に進み、障害の発生を検出しない場合は処理を終了する。
【0104】
〔ステップS73a〕制御部11は、未送信分割データを有しているか否かを判定する。未送信分割データを有している場合はステップS73の処理に進み、未送信分割データを有していない場合は処理を終了する。
【0105】
〔ステップS73〕制御部11は、障害の発生により送信先ノードに送信していない未送信分割データがある場合、未送信分割データに対応する未送信冗長データの送信要求rqを送信する。この場合、第1の方向周りの経路に障害を検出した場合は、第2の方向周りから送信要求rqが送信される。
【0106】
〔ステップS74〕制御部11は、送信要求受信通知akを受信したか否かを判定する。送信要求受信通知akを受信した場合は、ステップS75の処理に進み、送信要求受信通知akを受信しない場合は、処理を終了する。
【0107】
〔ステップS75〕制御部11は、送信要求受信通知akを受信することで他中継ノードから未送信冗長データが送信先ノードに送信されたことを認識することにより、保持している未送信分割データを削除する。
【0108】
図24はノードが冗長データを中継する中継ノードとして動作する場合のフローチャートである。
〔ステップS81〕制御部11は、送信元ノードから送信されてきた冗長データを受信する。
【0109】
〔ステップS82〕制御部11は、送受信バッファ12の冗長データ保持領域の空きブロックの有無を判定する。空きブロックが有る場合はステップS83の処理に進み、空きブロックが無い場合はステップS84の処理に進む。
【0110】
〔ステップS83〕制御部11は、冗長データを空きブロック数に応じて保持し、保持されなかった残りの冗長データを隣接ノードへ送信する。
〔ステップS84〕制御部11は、冗長データを隣接ノードへ送信する。
【0111】
〔ステップS85a〕制御部11は、送信要求rqを受信したか否かを判定する。送信要求rqを受信した場合はステップS85の処理に進み、送信要求rqを受信しない場合はステップS88の処理に進む。
【0112】
〔ステップS85〕制御部11は、送信要求rqを受信した際に、その送信要求rqが示す未送信冗長データを保存しているか否かを判定する。未送信冗長データを保存している場合はステップS86の処理に進み、保存していない場合はステップS87の処理に進む。
【0113】
〔ステップS86〕制御部11は、未送信冗長データを送信先ノードに向けて送信し、送信要求受信通知akを送信する。このとき、送信要求rqが第2の方向周りに送信されてきた場合は、未送信冗長データを第2の方向周りに送信し、送信要求受信通知akを第1の方向周りに送信する。
【0114】
〔ステップS87〕制御部11は、送信要求rqを隣接ノードに送信する。
〔ステップS88〕制御部11は、データ受信完了通知m1を受信したか否かを判定する。データ受信完了通知m1を受信した場合はステップS89の処理に進み、受信しない場合はステップS88の処理を繰り返す。
【0115】
〔ステップS89〕制御部11は、送受信バッファ12の冗長データ保持領域に保持している冗長データを削除する。
上記で説明した本発明のネットワークシステムおよびノードは、コンピュータによって実現することができる。この場合、ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0116】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶部、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶部には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、CD-ROM(Compact Disk Read Only Memory)/RW(Read Write)等がある。光磁気記録媒体には、MO(Magneto Optical disk)等がある。
【0117】
プログラムを流通させる場合、例えば、そのプログラムが記録されたCD-ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶部に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0118】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶部に格納する。そして、コンピュータは、自己の記憶部からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【0119】
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLD等の電子回路で実現することもできる。
【0120】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0121】
1 ネットワークシステム
N1、・・・、N6 ノード
N1 送信元ノード
N5 送信先ノード
N6 第1の中継ノード
N3 第2の中継ノード
2a 第1の方向周り
2b 第2の方向周り
SD1、SD2 分割データ
SDr1、SDr2 冗長データ
rq 送信要求
bf バッファ