JP5832305B2 - 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法 - Google Patents

送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法 Download PDF

Info

Publication number
JP5832305B2
JP5832305B2 JP2012000389A JP2012000389A JP5832305B2 JP 5832305 B2 JP5832305 B2 JP 5832305B2 JP 2012000389 A JP2012000389 A JP 2012000389A JP 2012000389 A JP2012000389 A JP 2012000389A JP 5832305 B2 JP5832305 B2 JP 5832305B2
Authority
JP
Japan
Prior art keywords
computer
packet
reception
allocation
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012000389A
Other languages
English (en)
Other versions
JP2013141134A (ja
Inventor
和宏 村山
和宏 村山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012000389A priority Critical patent/JP5832305B2/ja
Publication of JP2013141134A publication Critical patent/JP2013141134A/ja
Application granted granted Critical
Publication of JP5832305B2 publication Critical patent/JP5832305B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、マルチキャストで通信を行う送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法に関するものである。
従来のリライアブルIP(Internet Protocol)マルチキャスト通信において、送信計算機は全ての受信計算機がデータパケットを受信するまでデータパケットを再送する。
つまり、送信計算機はデータパケットをマルチキャストで全ての受信計算機へ送信し、各受信計算機はデータを受信してACKパケット(受信確認通知)を送信計算機へ送信する。
そして、送信計算機は、各受信計算機からのACKパケットを一定時間待って、全ての受信計算機からACKパケットが届かなければデータパケットをマルチキャストで再送する。ACKパケットは自計算機がデータパケットを受信したことを送信計算機に通知するためのパケットである。
この手法では、送信計算機がデータパケットを再送するたびに全ての受信計算機がACKパケットを返信するため、ネットワークに多くのACKパケットが流れることになる。
しかし、実際には、送信計算機にACKパケットが届いた場合、ACKパケットの送信元である受信計算機がACKパケットを再び返信する必要はない。
特許文献1は、以下のような、リライアブルIPマルチキャスト通信のACK処理方式を開示している。
送信計算機は、受信計算機を一意に判別できる識別子と、ACKパケットの受信有無を示すフラグと、を対応付けてデータパケットのヘッダに設定し、データパケットを送信する。
送信計算機が受信計算機からACKパケットを受信済みである場合、送信計算機は、ヘッダ内で受信計算機のIPアドレスに対応付けられたフラグにACKパケットの受信済みを示すフラグ値を設定してデータパケットを再送する。
受信計算機は、データパケットを受信し、受信したデータパケットのヘッダ内で自計算機の識別子に対応付けられたフラグにACKパケットの受信済みを示すフラグ値が設定されている場合、ACKパケットを送信しない。
これにより、ネットワークに流れるACKパケットの数を減らすことができる。
特開平09−261255号公報
特許文献1に開示されたACK処理方式では、データパケットのヘッダに、受信計算機の識別子とACKパケットの受信有無を示すフラグとを受信計算機の台数と同じ数だけ含める必要がある。
例えば、データパケットのヘッダに設定する識別子(IPアドレス)が4バイトであり、フラグが1バイトである場合、1台の受信計算機あたり合計5バイトをデータパケットのヘッダに確保する必要がある。また、受信計算機の台数が100台である場合、500バイト(=5×100)をデータパケットのヘッダに確保する必要がある。つまり、データパケットのヘッダサイズは、各受信計算機用の識別子とフラグとを確保するために500バイトも大きくなる。
本発明は、例えば、データパケットのヘッダに受信計算機の識別子を設定せずにACKパケットの数を減らすことができるようにすることを目的とする。
本発明の送信計算機は、
複数の受信計算機それぞれに割り当てられるインデックス値を定義するインデックス情報を記憶するインデックス情報記憶部と、
ペイロードデータを含んだデータパケットを前記複数の受信計算機へ送信するデータパケット送信部と、
前記データパケットを受信した受信計算機から、前記データパケットを受信したことを通知する受信確認パケットを受信する受信確認パケット受信部とを備える。
前記データパケット送信部は、
前記受信確認パケット受信部によって受信された受信確認パケットを送信した受信計算機を受信済み計算機として判定し、前記複数の受信計算機の中に前記受信済み計算機として判定しなかった未受信計算機が存在するか否かを判定し、前記複数の受信計算機の中に前記未受信計算機が存在する場合、前記受信済み計算機に割り当てられるインデックス値を前記インデックス情報に基づいて判定し、前記ペイロードデータと、インデックス値によって特定される複数のフラグ領域とを含み、前記複数のフラグ領域のうち、前記受信済み計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの受信済みを表す受信済みフラグ値が含まれ、前記複数のフラグ領域のうち、前記未受信計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの未受信を表す未受信フラグ値が含まれたデータパケットを、前記複数の受信計算機へ送信する。
本発明によれば、インデックス情報によって受信済み計算機のフラグ領域を特定でき、受信済み計算機のフラグ領域に受信済みフラグ値を含ませることができるため、データパケットのヘッダに受信計算機の識別子を設定せずにACKパケットの数を減らすことができる。
実施の形態1における通信システム100の概要図。 実施の形態1における通信システム100の概要図。 実施の形態1における送信計算機200の機能構成図。 実施の形態1における受信計算機300の機能構成図。 実施の形態1における受信計算機管理テーブル291の一例を示す図。 実施の形態1における自計算機番号管理テーブル391の一例を示す図。 実施の形態1における送信計算機200の受信計算機検出処理を示すフローチャート。 実施の形態1における受信計算機300の送信計算機検出処理を示すフローチャート。 実施の形態1における通信システム100の前処理の具体例を示す図。 実施の形態1における通信システム100の前処理の具体例を示す図。 実施の形態1における通信システム100の前処理の具体例を示す図。 実施の形態1における送信計算機200のデータパケット送信処理を示すフローチャート。 実施の形態1におけるデータパケット101のフォーマットの一例を示す図。 実施の形態1における受信計算機300のデータパケット受信処理を示すフローチャート。 実施の形態1におけるデータパケット101の通信処理の具体例を示す図。 実施の形態1におけるデータパケット101の通信処理の具体例を示す図。 実施の形態1におけるデータパケット101の通信処理の具体例を示す図。 実施の形態1におけるデータパケット101の通信処理の具体例を示す図。 実施の形態1における送信計算機200および受信計算機300のハードウェア資源の一例を示す図。 実施の形態2におけるデータパケット101のフォーマットの一例を示す図。 実施の形態3における送信計算機200の定期検出処理を示すフローチャート。 実施の形態3における送信計算機200の定期検出処理の別例を示すフローチャート。
実施の形態1.
リライアブルIPマルチキャスト通信の形態について説明する。
リライアブルIPマルチキャスト通信とは、送信計算機がデータパケットをマルチキャストで送信し、マルチキャストのグループに属する全ての受信計算機からACKパケットを受信し終わるまでデータパケットの再送を繰り返す通信である。
図1、図2は、実施の形態1における通信システム100の概要図である。
実施の形態1における通信システム100の概要について、図1、図2に基づいて説明する。
通信システム100は、リライアブルIPマルチキャスト通信を行うシステムである。
通信システム100は、ネットワーク109を介して通信を行う複数の計算機(コンピュータともいう)を備える。
以下、データパケット101をマルチキャストで送信する計算機を「送信計算機200」という。データパケット101は、アプリケーションデータ(APデータ)を送信するためのパケットである。
また、マルチキャストのグループに属して、データパケット101を受信してACKパケット102を返信する計算機を「受信計算機300」という。ACKパケット102(受信確認パケットの一例)はデータパケット101を受信したことを送信計算機200に通知するためのパケットである。
以下に、図1、図2に示す(1)から(9)の手順を説明する。
(1)送信計算機200は、ACKフラグフィールドをヘッダに含んだデータパケット101をマルチキャストで送信する。
ACKフラグフィールド(単に、フラグフィールドともいう)は、複数の受信計算機300−1,2,3に割り当てられた複数のフラグビットを有する。
フラグビットのビット値「0」は、送信計算機200が当該受信計算機300からACKパケット102を受信していないことを意味する。フラグビットの初期値は「0」である。
フラグビットのビット値「1」は、送信計算機200が当該受信計算機300からACKパケット102を受信済みであることを意味する。
ここで、1番目のフラグビットは受信計算機300−1に割り当てられ、2番目のフラグビットは受信計算機300−2に割り当てられ、3番目のフラグビットは受信計算機300−3に割り当てられているものとする。
(2)受信計算機300−1は、データパケット101を受信してACKフラグフィールドの1番目のフラグビット(受信計算機300−1に割り当てられたフラグビット)のビット値を確認する。ビット値は「0」である。
受信計算機300−1はACKパケット102を返信し、送信計算機200は受信計算機300−1からACKパケット102を受信する。
(3)受信計算機300−2は、データパケット101を受信してACKフラグフィールドの2番目のフラグビット(受信計算機300−2に割り当てられたフラグビット)のビット値を確認する。ビット値は「0」である。
受信計算機300−2はACKパケット102を返信するが、ACKパケット102は送信計算機200に到達せず、送信計算機200は受信計算機300−2からACKパケット102を受信できない。
(4)受信計算機300−3にはデータパケット101が到達せず、受信計算機300−3はACKパケット102を送信しない。したがって、送信計算機200は受信計算機300−3からACKパケット102を受信できない。
(5)送信計算機200は、受信計算機300−1からACKパケット102を受信したためACKフラグフィールドの1番目のフラグビット(受信計算機300−1に割り当てられたフラグビット)のビット値を「0」から「1」に変更する。
(6)送信計算機200は、受信計算機300−2,3からACKパケット102を受信していないため、データパケット101をマルチキャストで再送する。
(7)受信計算機300−1は、データパケット101を受信してACKフラグフィールドの1番目のフラグビットのビット値を確認する。ビット値が「1」であるため、受信計算機300−1はACKパケット102を返信しない。これにより、ACKパケット102の通信量を減らすことができる。
(8)受信計算機300−2は、データパケット101を受信してACKフラグフィールドの2番目のフラグビットのビット値「0」を確認してACKパケット102を返信する。
同様に、受信計算機300−3はデータパケット101を受信してACKフラグフィールドの3番目のフラグビットのビット値「0」を確認してACKパケット102を返信する。
送信計算機200は受信計算機300−2,3からACKパケット102を受信する。送信計算機200は全ての受信計算機300−1,2,3からACKパケット102を受信済みであるため、データパケット101の再送を行わずに送信処理を完了する。
図3は、実施の形態1における送信計算機200の機能構成図である。
実施の形態1における送信計算機200の機能構成について、図3に基づいて説明する。
送信計算機200は、データ送信部210と、計算機検出部220と、アプリケーション部230と、計算機記憶部290とを備える。
計算機検出部220(割り当て部の一例)は、通信システム100内の複数の受信計算機300を検出し、検出した複数の受信計算機300それぞれに割り当てビット番号(インデックス値の一例)を割り当てる。
割り当てビット番号は、データパケット101内の複数のフラグビットのうちいずれかのフラグビットを特定する番号である。
アプリケーション部230は、所定のアプリケーションプログラムを実行してアプリケーションデータ(ペイロードデータの一例)を生成する。
データ送信部210(データパケット送信部、受信確認パケット受信部の一例)は、複数のフラグビットと、アプリケーション部230によって生成されたアプリケーションデータ(ペイロードデータの一例)とを含んだデータパケット101を複数の受信計算機300へマルチキャストで送信する。
データ送信部210は、データパケット101を受信した受信計算機300から送信されるACKパケット102を受信する。
ACKパケット102(受信確認パケットの一例)は、受信計算機300がデータパケット101を受信したことを受信計算機300から送信計算機200に通知するためのパケットである。
ここで、受信したACKパケット102を送信した受信計算機300を「受信済み計算機(または受信確認済み計算機)」といい、複数の受信計算機300のうち受信済み計算機以外の受信計算機を「未受信計算機(または受信未確認計算機)」という。
データ送信部210は、受信したACKパケット102に基づいて未受信計算機があるか否かを判定する。
未受信計算機がある場合、データ送信部210は、受信済み計算機に割り当てられた割り当てビット番号によって特定されるフラグビットが「受信済みフラグ値」を示し、未受信計算機に割り当てられた割り当てビット番号によって特定されるフラグビットが「未受信フラグ値」を示し、アプリケーションデータが含まれるデータパケット101を複数の受信計算機300へ再送する。
「受信済みフラグ値」はデータ送信部210が当該受信計算機300からACKパケット102を受信済みであることを示すフラグ値である。
「未受信フラグ値」はデータ送信部210が当該受信計算機300からACKパケット102を受信していないことを示すフラグ値である。
計算機記憶部290(インデックス情報記憶部の一例)は、送信計算機200で使用するデータを記憶する。
例えば、計算機記憶部290は受信計算機管理テーブル291を記憶する。また、計算機記憶部290は、自計算機のIPアドレスや所定のマルチキャストアドレスを予め記憶する(図示省略)。
受信計算機管理テーブル291(インデックス情報の一例)は、複数の受信計算機300それぞれに割り当てた割り当てビット番号や、各受信計算機300からACKパケット102を受信済みであるか否かを管理するためのデータである。
図4は、実施の形態1における受信計算機300の機能構成図である。
実施の形態1における受信計算機300の機能構成について、図4に基づいて説明する。
受信計算機300は、データ受信部310と、計算機検出部320と、アプリケーション部330と、計算機記憶部390とを備える。
計算機検出部320(割り当て要求パケット送信部、割り当て応答パケット受信部の一例)は、送信計算機200から割り当てられた割り当てビット番号(割り当て値の一例)を後述する自計算機番号管理テーブル391に設定する。
計算機記憶部390(割り当て値記憶部の一例)は、受信計算機300で使用するデータを記憶する。
例えば、計算機記憶部390は自計算機番号管理テーブル391を記憶する。また、計算機記憶部390は、自計算機のIPアドレスや所定のマルチキャストアドレスを予め記憶する(図示省略)。
自計算機番号管理テーブル391は、送信計算機200から割り当てられた割り当てビット番号を管理するためのデータである。
データ受信部310(データパケット受信部、割り当て領域判定部、受信確認パケット送信部の一例)は、複数のフラグビットとアプリケーションデータとを含んだデータパケット101を送信計算機200から受信する。
ここで、データパケット101に含まれる複数のフラグビットのうち、自計算機番号管理テーブル391に設定された割り当てビット番号によって特定されるフラグビットを「割り当てビット(割り当て領域の一例)」という。
データ受信部310は、データパケット101内の割り当てビットに、送信計算機200がACKパケット102を受信していないことを示す未受信フラグ値と、送信計算機200がACKパケット102を受信したことを示す受信済みフラグ値とのいずれのフラグ値が設定されているかを判定する。
割り当てビットに未受信フラグ値が設定されている場合、データ受信部310はACKパケット102を送信計算機200へ送信する。
割り当てビットに受信済みフラグ値が設定されている場合、データ受信部310はACKパケット102を送信計算機200へ送信しない。
アプリケーション部330は、所定のアプリケーションプログラムを実行することによって、データ受信部310によって受信されたデータパケット101に含まれるアプリケーションデータを処理する。
送信計算機200として機能すると共に受信計算機300として機能する計算機は、送信計算機200の機能構成(図3参照)と、受信計算機300の機能構成(図4参照)との両方を備える。
送信計算機200と受信計算機300との間で通信する各種パケットのヘッダには、パケットを送信した計算機を識別するIPアドレス(送信元IPアドレス)や、パケットの送信先の計算機を識別するIPアドレスまたはマルチキャストアドレス(宛先IPアドレス)が設定される。
図5は、実施の形態1における送信計算機200に記憶する受信計算機管理テーブル291の一例を示す図である。
実施の形態1における送信計算機200に記憶する受信計算機管理テーブル291について、図5に基づいて説明する。
受信計算機管理テーブル291は「行番号」と「受信計算機」と「ACKフラグ」とを対応付けたデータである。
受信計算機管理テーブル291は送信計算機200の計算機記憶部290に記憶される。受信計算機管理テーブル291の各行は「レコード」ともいう。
「行番号」は何行目のレコードであるかを示す。行番号は受信計算機に割り当てるフラグビットを特定する割り当てビット番号(インデックス値の一例)として使用される。
「受信計算機」は受信計算機300を識別する識別子(例えば、IPアドレス、計算機名)を示す。
「ACKフラグ」は「未受信(初期値)」または「受信済み」を示す。「未受信」は受信計算機300からACKパケット102を受信していないことを意味する。「受信済み」は受信計算機300からACKパケット102を受信済みであることを意味する。
送信計算機200は、一つのデータパケット101に対して一列の「ACKフラグ」を使用する。複数のデータパケット101を並行して送信する場合、送信計算機200は、並行して送信するデータパケット101の数と同じ列数の「ACKフラグ」を受信計算機管理テーブル291に設けて使用する。送信計算機200は、データパケット101の数と同じ列数の「ACKフラグ」を受信計算機管理テーブル291に設けて使用する代わりに、データパケット101の数と同じ数の受信計算機管理テーブル291を生成して使用しても構わない。
図5の場合、自計算機は計算機C、B、YからACKパケット102を受信済みであり、計算機AからACKパケット102を受信していない。
「行番号」の欄は設けなくても構わない。この場合も、n行目の行の受信計算機の割り当てビット番号は「n」である。
「行番号」とは別に又は「行番号」の代わりに、割り当てビット番号を示す「割り当てビット番号」の欄を設けてもよい。「割り当てビット番号」には、行番号と異なる割り当てビット番号を設定してもよい。例えば、1行目の行の「割り当てビット番号」の値が「1」以外の値であっても構わない。
図6は、実施の形態1における受信計算機300に記憶する自計算機番号管理テーブル391の一例を示す図である。
実施の形態1における受信計算機300に記憶する自計算機番号管理テーブル391について、図6に基づいて説明する。
自計算機番号管理テーブル391は「送信計算機」と「自計算機番号」とを対応付けたデータである。自計算機番号管理テーブル391は受信計算機300の計算機記憶部390に記憶される。自計算機番号管理テーブル391の各行は「レコード」ともいう。
「送信計算機」は送信計算機200を識別する識別子(例えば、IPアドレス、計算機名)を示す。
「自計算機番号」は送信計算機200から割り当てられた割り当てビット番号を示す。割り当てビット番号は送信計算機200から送信されるデータパケット101内のいずれかのフラグビットを特定する。
送信計算機200として機能する複数の計算機が存在する場合、受信計算機300は複数の送信計算機200それぞれから割り当てビット番号を割り当てられる。
図6の場合、当該受信計算機300に対して、計算機Bから送信されるデータパケット101内の3番目のフラグビットが割り当てられている。
同様に、当該受信計算機300に対して、計算機Cから送信されるデータパケット101内の1番目のフラグビットと、計算機Aから送信されるデータパケット101内の2番目のフラグビットと、計算機Yから送信されるデータパケット101内の3番目のフラグビットとが割り当てられている。
次に、データパケット101の通信前に送信計算機200および受信計算機300が実行する前処理(図7の受信計算機検出処理、図8の送信計算機検出処理)について説明する。
図7は、実施の形態1における送信計算機200の受信計算機検出処理を示すフローチャートである。
実施の形態1における送信計算機200の受信計算機検出処理について、図7に基づいて説明する。
データパケット101の送信前に、送信計算機200の計算機検出部220は、以下に説明する受信計算機検出処理を実行する。
ここで、受信計算機管理テーブル291(図5参照)はレコードが設定されていない空のテーブルであるものとする。
S101において、送信計算機200が起動した際、計算機検出部220は起動通知パケットを生成し、生成した起動通知パケットをマルチキャストで送信する。
起動通知パケットは、稼働している各受信計算機300に対して起動応答パケットの送信を要求するためのパケットである。
起動応答パケット(割り当て要求パケットの一例)は、稼働していることを送信計算機200に通知するためのパケットである。
マルチキャストとは、マルチキャストアドレスを宛先IPアドレスとして使用してパケットを通信することである。
マルチキャストで送信された起動通知パケットは、マルチキャストのグループに属する受信計算機300のうち稼働している受信計算機300によって受信される。起動通知パケットを受信した各受信計算機300は起動応答パケットを送信計算機200へ送信する。
S101の後、S102へ進む。
S102において、計算機検出部220は、S101で起動通知パケットを送信してから起動応答パケット用の所定の待ち時間が経過するまでの間、起動応答パケットの到達(検出)を待つ。例えば、計算機検出部220は、待ち時間を設定したタイマをS101で起動しておき、タイマがタイムアウトするまでの間、起動応答パケットの到達を待つ。
待ち時間が経過した場合(YES)、受信計算機検出処理は終了する。
待ち時間が経過する前に起動応答パケットが到達した場合(NO)、S103へ進む。
S103において、計算機検出部220は、送信計算機200に到達した起動応答パケットを受信する。以下、起動応答パケットを送信した受信計算機300を「応答計算機」という。
計算機検出部220は、起動応答パケットに設定される送信元IPアドレスによって応答計算機を識別する。
S103の後、S104へ進む。
S104において、計算機検出部220は、受信計算機管理テーブル291(図5参照)に行を追加し、追加した行に応答計算機を登録する。ここで、応答計算機の登録とは、受信計算機管理テーブル291の「受信計算機」の欄に応答計算機の識別子を設定することを意味する。
例えば、計算機検出部220は、起動応答パケットから応答計算機のIPアドレス(送信元IPアドレス)を取得し、取得したIPアドレスを追加行の「受信計算機」の欄に設定する。
但し、計算機検出部220は、応答計算機のIPアドレスの代わりに計算機名を設定しても構わない。例えば、計算機検出部220は、以下のように計算機名を取得する。
(1)各受信計算機300のIPアドレスと計算機名とを示す計算機名テーブルを計算機記憶部290に予め記憶しておく。計算機検出部220は起動応答パケットの送信元IPアドレスに対応する計算機名を計算機名テーブルから取得する。
(2)各計算機のIPアドレスと計算機名とを管理する計算機名管理サーバを設ける。計算機検出部220は起動応答パケットの送信元IPアドレスに対応する計算機名を計算機名管理サーバから取得する。
以下、応答計算機を登録した行の行番号を「割り当てビット番号」という。割り当てビット番号は、データパケット101内の複数のフラグビットのうち当該応答計算機に割り当てるフラグビットが位置する順番を示す。
S104の後、S105へ進む。
S105において、計算機検出部220は、応答計算機の割り当てビット番号(追加行の行番号)を設定して番号通知パケットを生成し、生成した番号通知パケットを応答計算機へユニキャストで送信する。
番号通知パケット(割り当て応答パケットの一例)は、応答計算機に割り当てビット番号を通知するためのパケットである。
ユニキャストとは、特定の計算機のIPアドレスを宛先IPアドレスにしてパケットを通信することである。以降の説明において、マルチキャストで通信する旨の説明をしない通信はユニキャストでの通信を意味する。
S105の後、S102へ戻る。
図7の受信計算機検出処理により、送信計算機200は、受信計算機管理テーブル291を生成し、割り当てビット番号を各受信計算機300に通知することができる。
図8は、実施の形態1における受信計算機300の送信計算機検出処理を示すフローチャートである。
実施の形態1における受信計算機300の送信計算機検出処理について、図8に基づいて説明する。
データパケット101の通信前に、受信計算機300の計算機検出部320は、以下に説明する送信計算機検出処理を実行する。
S111において、計算機検出部320は、送信計算機200からマルチキャストで送信される起動通知パケットを受信する。
計算機検出部320は、起動通知パケットに設定される送信元IPアドレスによって送信計算機200を識別する。
さらに、計算機検出部320は、自計算機番号管理テーブル391(図6参照)に行を追加し、追加した行の「送信計算機」の欄に送信計算機200の識別子を設定する。
例えば、計算機検出部320は、起動通知パケットから送信計算機200のIPアドレス(送信元IPアドレス)を取得し、取得したIPアドレスを追加行の「送信計算機」の欄に設定する。但し、図7のS104と同様に、IPアドレスの代わりに計算機名を設定しても構わない。また、「送信計算機」の欄は後述するS114で設定しても構わない。
S111の後、S112へ進む。
S112において、計算機検出部320は起動応答パケットを生成し、生成した起動応答パケットを送信計算機200へ送信する。
S112の後、S113へ進む。
S113において、計算機検出部320は、送信計算機200から送信される番号通知パケットを受信する。送信計算機200は、番号通知パケットに設定される送信元IPアドレスによって識別される。
S113の後、S114へ進む。
S114において、計算機検出部320は、番号通知パケットから割り当てビット番号を取得し、取得した割り当てビット番号を自計算機番号管理テーブル391の追加行(送信計算機200の識別子が設定されている行)に登録する。ここで、割り当てビット番号の登録とは、自計算機番号管理テーブル391内の特定の行の「自計算機番号」の欄に割り当てビット番号を設定することを意味する。
S114により、送信計算機検出処理は終了する。
図8の送信計算機検出処理により、受信計算機300は、自計算機番号管理テーブル391に割り当てビット番号(自計算機番号)を登録することができる。
図9から図11は、実施の形態1における通信システム100の前処理の具体例を示す図である。
実施の形態1における通信システム100の前処理(図7の受信計算機検出処理、図8の送信計算機検出処理)の具体例について、図9から図11に基づいて説明する。
図9において、計算機Zは起動通知パケット103をマルチキャストで送信し(図7のS101)、計算機Aおよび計算機Bは起動通知パケット103を受信して計算機Zの識別子を自計算機番号管理テーブル391に設定する(図8のS111)。
図10において、計算機Bは最初に起動応答パケット104を計算機Zへ送信し(図8のS112)、計算機Zは1つ目の起動応答パケット104を計算機Bから受信したものとする(図7のS103)。
計算機Zは、計算機Bの識別子を受信計算機管理テーブル291の1行目に設定する(図7のS104)。
計算機Zは、受信計算機管理テーブル291内の計算機Bの行番号「1」を割り当てビット番号として番号通知パケット105に設定し、番号通知パケット105を計算機Bへ送信する(図7のS105)。
計算機Bは、番号通知パケット105を受信し(図8のS113)、受信した番号通知パケット105に設定されている割り当てビット番号「1」を自計算機番号管理テーブル391に設定する(図8のS114)。
図11において、計算機Aは計算機Bの次に起動応答パケット104を計算機Zへ送信し(図8のS112)、計算機Zは2つ目の起動応答パケット104を計算機Aから受信したものとする(図7のS103)。
計算機Zは、計算機Aの識別子を受信計算機管理テーブル291の2行目に設定する(図7のS104)。
計算機Zは、受信計算機管理テーブル291内の計算機Aの行番号「2」を割り当てビット番号として番号通知パケット105に設定し、番号通知パケット105を計算機Aへ送信する(図7のS105)。
計算機Aは、番号通知パケット105を受信し(図8のS113)、受信した番号通知パケット105に設定されている割り当てビット番号「2」を自計算機番号管理テーブル391に設定する(図8のS114)。
次に、データパケット101の通信処理(図12のデータパケット送信処理、図14のデータパケット受信処理)について説明する。
図12は、実施の形態1における送信計算機200のデータパケット送信処理を示すフローチャートである。
実施の形態1における送信計算機200のデータパケット送信処理について、図12に基づいて説明する。
S121−1において、アプリケーション部230はアプリケーションデータ(APデータ)を生成し、生成したアプリケーションデータをデータ送信部210に出力する。
データ送信部210は、アプリケーション部230からアプリケーションデータを入力する。
S121−1の後、S121−2へ進む。
S121−2において、データ送信部210は、受信計算機管理テーブル291(図5参照)のACKフラグを初期化する。つまり、データ送信部210は受信計算機管理テーブル291の全てのACKフラグの値を「未受信(初期値)」に変更する。
S121−2の後、S121−3へ進む。
S121−3において、データ送信部210は、複数のフラグビットから成るACKフラグフィールドとS121−1で入力したアプリケーションデータとを含んだデータパケット101(図13参照)を生成する。
S121−3の後、S121−4へ進む。
図13は、実施の形態1におけるデータパケット101のフォーマットの一例を示す図である。
実施の形態1におけるデータパケット101のフォーマットの一例について、図13に基づいて説明する。
データパケット101は、ヘッダ101Aとアプリケーションデータ領域101Bとを有する。
ヘッダ101Aは、送信元IPアドレス101a、マルチキャストアドレス101b、ACKフラグフィールド101cなどを設定する領域である。
アプリケーションデータ領域101Bは、送信するアプリケーションデータ(ペイロードデータの一例)を設定する領域である。
送信元IPアドレス101aは、データパケット101を送信する送信計算機200のIPアドレスである。
マルチキャストアドレス101bは、データパケット101を受信する複数の受信計算機300(受信計算機300のグループ)を識別する所定のIPアドレスである。
ACKフラグフィールド101cは、複数の受信計算機300に割り当てる複数のフラグビット(複数のフラグ領域の一例)を有する領域である。
各フラグビットには「0(未受信フラグ値)」または「1(受信済みフラグ値)」が設定される。フラグビットのビット値「0」は、送信計算機200が当該フラグビットを割り当てられた受信計算機300からACKパケット102を受信していないことを意味する。フラグビットのビット値「1」は、送信計算機200が当該フラグビットを割り当てられた受信計算機300からACKパケット102を受信済みであることを意味する。
データパケット101を生成時の各フラグビットの初期値は「0」である。
ACKフラグフィールド101cの領域サイズは、4バイト(32ビット)の倍数で表される固定長である。
受信計算機300の台数が32台以下である場合、ACKフラグフィールド101cの領域サイズは4バイト(32ビット)である。受信計算機300の台数が33台以上64台以下である場合、ACKフラグフィールド101cの領域サイズは8バイト(64ビット)である。但し、ACKフラグフィールド101cの領域サイズは、1ビット、4ビット、1バイト、2バイトまたは8バイトの倍数など、4バイトの倍数以外の大きさであっても構わない。
図12に戻り、S121−4から説明を続ける。
S121−4において、データ送信部210は、S121−3で生成したデータパケット101をマルチキャストで複数の受信計算機300へ送信する。
S121−4の後、S122へ進む。
S122において、データ送信部210は、S121−4または後述するS127でデータパケット101を送信してからACKパケット102用の所定の待ち時間が経過するまでの間、ACKパケット102の到達(検出)を待つ。例えば、データ送信部210は、待ち時間を設定したタイマをS121−4またはS127で起動しておき、タイマがタイムアウトするまでの間、ACKパケット102の到達を待つ。
待ち時間が経過した場合(YES)、S127へ進む。
待ち時間が経過する前にACKパケット102が到達した場合(NO)、S123へ進む。
S123において、データ送信部210は、送信計算機200に到達したACKパケット102を受信する。
以下、ACKパケット102を送信した受信計算機300を「受信済み計算機」といい、複数の受信計算機300のうち受信済み計算機以外の受信計算機300を「未受信計算機」という。受信済み計算機はACKパケット102に設定される送信元IPアドレスによって識別される。
S123の後、S124へ進む。
S124において、データ送信部210は、ACKパケット102に基づいて受信済み計算機を判定する。データ送信部210は、受信済み計算機が登録されている登録行を受信計算機管理テーブル291(図5参照)から選択し、選択した登録行の行番号を判定する。
判定した行番号が受信済み計算機の割り当てビット番号である。
例えば、データ送信部210は、ACKパケット102から受信済み計算機のIPアドレス(送信元IPアドレス)を取得し、取得したIPアドレスが「受信計算機」の欄に設定されている行の行番号を判定する。
但し、IPアドレスの代わりに計算機名を「受信計算機」の欄に設定している場合、データ送信部210は、図7のS104と同様にして計算機名を取得し、取得した計算機名が「受信計算機」の欄に設定されている行の行番号を判定する。
さらに、データ送信部210は、データパケット101内の複数のフラグビットのうち受信済み計算機の割り当てビット番号が示す順番のフラグビットを選択する。データ送信部210は、選択したフラグビットの値を「0(未受信フラグ値)」から「1(受信済みフラグ値)」に変更する。
S124の後、S125へ進む。
S125において、データ送信部210は、受信計算機管理テーブル291から受信済み計算機の登録行を選択し、選択した登録行のACKフラグを「未受信」から「受信済み」に変更する。
S125の後、S126へ進む。
S126において、データ送信部210は、受信計算機管理テーブル291の全ての行のACKフラグが「受信済み」であるか否かを判定する。
受信計算機管理テーブル291の全ての行のACKフラグが「受信済み」である場合(YES)、全ての受信計算機300からデータパケット101に対するACKパケット102を受信済みであるため、データパケット送信処理は終了する。
受信計算機管理テーブル291の少なくともいずれかの行のACKフラグが「未受信」である場合(NO)、少なくともいずれかの受信計算機300(未受信計算機)からデータパケット101に対するACKパケット102を受信していないため、S122へ戻る。
S127において、データ送信部210は、データパケット101をマルチキャストで複数の受信計算機300へ再送する。
再送するデータパケット101は、S124で少なくともいずれかのフラグビットを「0」から「1」に変更したデータパケット101である。但し、S124を実行していない場合に再送するデータパケット101は、S121−4で送信したデータパケット101(全てのフラグビットが「0」)である。
S127の後、S122へ戻る。
図12のデータパケット送信処理により、送信計算機200は、データパケット101をマルチキャストで複数の受信計算機300へ送信し、全ての受信計算機300がデータパケット101を受信したことを確認することができる。
図14は、実施の形態1における受信計算機300のデータパケット受信処理を示すフローチャートである。
実施の形態1における受信計算機300のデータパケット受信処理について、図14に基づいて説明する。
S131において、データ受信部310は、送信計算機200からマルチキャストで送信されるデータパケット101を受信する。送信計算機200は、データパケット101に設定される送信元IPアドレスによって識別される。
S131の後、S132へ進む。
S132において、データ受信部310は、データパケット101に基づいて送信計算機200を判定する。データ受信部310は、送信計算機200から割り当てられた割り当てビット番号(自計算機識別番号)を自計算機番号管理テーブル391(図5参照)から取得する。
例えば、データ受信部310は、データパケット101から送信計算機200のIPアドレス(送信元IPアドレス)を取得し、取得したIPアドレスに対応付けられた自計算機識別番号を自計算機番号管理テーブル391から取得する。
但し、IPアドレスの代わりに計算機名を自計算機番号管理テーブル391に設定している場合、データ受信部310は、図7のS104と同様にして計算機名を取得し、取得した計算機名に対応付けられた自計算機識別番号を自計算機番号管理テーブル391から取得する。
S132の後、S133へ進む。
S133において、データ受信部310は、データパケット101内の複数のフラグビットのうちS132で取得した割り当てビット番号が示す順番のフラグビットを選択し、選択したフラグビットを参照する。
以下、S133で参照したフラグビットを「割り当てビット」という。
S133の後、S134へ進む。
S134において、データ受信部310は、割り当てビットの値が「0(未受信フラグ値)」と「1(受信済みフラグ値)」とのいずれであるかを判定する。
割り当てビットの値が「0」である場合、ACKパケット102の返信が必要であるため、S135へ進む。
割り当てビットの値が「1」である場合、ACKパケット102の返信が不要であるため、データパケット受信処理は終了する。
S135において、データ受信部310はACKパケット102を生成し、生成したACKパケット102を送信計算機200へ送信する。
S135の後、S136へ進む。
S136において、データ受信部310はS131で受信したデータパケット101からアプリケーションデータを取得し、取得したアプリケーションデータをアプリケーション部330に出力する。
但し、アプリケーション部330に同じアプリケーションデータを出力済みの場合、データ受信部310は、再びアプリケーションデータをアプリケーション部330に出力しなくてもよい。
例えば、データ受信部310は、アプリケーション部330に出力したアプリケーションデータのシーケンス番号を記憶し、記憶したシーケンス番号に基づいてアプリケーションデータをアプリケーション部330に出力済みか否かを判定する。送信計算機200のデータ送信部210またはアプリケーション部230は、データパケット101のヘッダまたはアプリケーション内にシーケンス番号を設定する。
アプリケーション部330は、データ受信部310から出力されたアプリケーションデータを入力し、入力したアプリケーションデータを用いて所定のアプリケーション処理を実行する。
S136により、データパケット受信処理は終了する。
図15から図18は、実施の形態1におけるデータパケット101の通信処理の具体例を示す図である。
実施の形態1におけるデータパケット101の通信処理(図12のデータパケット送信処理、図14のデータパケット受信処理)の具体例について、図15から図18に基づいて説明する。
図15において、計算機Zのデータ送信部210は、アプリケーションデータ(APデータ)をアプリケーション部230から入力する(図12のS121−1)。
データ送信部210は、受信計算機管理テーブル291のACKフラグに「未受信」を設定する(図12のS121−2)。
データ送信部210は、ACKフラグフィールド101cの全てのフラグビットを「0(未受信)」にしてデータパケット101を生成し(図12のS121−3)、生成したデータパケット101をマルチキャストで送信する(図12のS121−4)。
データパケット101は計算機Aに到達し、計算機Aのデータ受信部310はデータパケット101を受信する(図14のS131)。
データパケット101は計算機Bに到達せず、計算機Bのデータ受信部310はデータパケット101を受信できなかったものとする。
図16において、計算機Aのデータ受信部310は、自計算機番号管理テーブル391から計算機Zに割り当てられた自計算機番号「2」を取得する(図14のS132)。
計算機Aのデータ受信部310は、ACKフラグフィールド101c内のフラグビットのうち自計算機番号「2」が示す順番のフラグビットを参照する(図14のS133)。
計算機Aのデータ受信部310は、参照したフラグビットが「0(未受信)」であるため(S134)、ACKパケット102を計算機Zへ送信する(図14のS135)。
計算機Zのデータ送信部210は、計算機AからACKパケット102を受信する(図12のS123)。
計算機Zのデータ送信部210は、ACKフラグフィールド101c内のフラグビットのうち受信計算機管理テーブル291の計算機Aの行番号「2」が示す順番のフラグビットを選択し、選択したフラグビットを「0」から「1(受信済み)」に変更する(図12のS124)。
計算機Zのデータ送信部210は、受信計算機管理テーブル291の計算機AのACKフラグを「未受信」から「受信済み」に変更する(図12のS125)。
図17において、計算機Zのデータ送信部210は、受信計算機管理テーブル291の計算機BのACKフラグが「未受信」であるため(図12のS126)、データパケット101をマルチキャストで再送する(図12のS127)。
データパケット101は計算機Aと計算機Bとの両方に到達し、計算機Aと計算機Bとのそれぞれのデータ受信部310はデータパケット101を受信する(図14のS131)。
図18において、計算機Aのデータ受信部310は、自計算機番号管理テーブル391から計算機Zに割り当てられた自計算機番号「2」を取得する(図14のS132)。
計算機Aのデータ受信部310は、ACKフラグフィールド101c内のフラグビットのうち自計算機番号「2」が示す順番のフラグビットを参照する(図14のS133)。
計算機Aのデータ受信部310は、参照したフラグビットが「1(受信済み)」であるため(図14のS134)、ACKパケット102を計算機Zへ送信しない。
計算機Bのデータ受信部310は、自計算機番号管理テーブル391から計算機Zに割り当てられた自計算機番号「1」を取得する(図14のS132)。
計算機Bのデータ受信部310は、ACKフラグフィールド101c内のフラグビットのうち自計算機番号「1」が示す順番のフラグビットを参照する(図14のS133)。
計算機Bのデータ受信部310は、参照したフラグビットが「0(未受信)」であるため(S134)、ACKパケット102を計算機Zへ送信する(図14のS135)。
計算機Zのデータ送信部210は、計算機BからACKパケット102を受信する(図12のS123)。
計算機Zのデータ送信部210は、受信計算機管理テーブル291の計算機BのACKフラグを「未受信」から「受信済み」に変更する(図12のS125)。
計算機Zのデータ送信部210は、受信計算機管理テーブル291の全てのACKフラグが「受信済み」であるため(図12のS126)、データパケット101を再送しない。これにより、データパケット101の通信が終了する。
図19は、実施の形態1における送信計算機200および受信計算機300のハードウェア資源の一例を示す図である。
図19において、送信計算機200および受信計算機300(コンピュータの一例)は、CPU901(Central Processing Unit)を備えている。CPU901は、バス902を介してROM903、RAM904、通信ボード905、ディスプレイ911(表示装置)、キーボード912、マウス913、ドライブ914、磁気ディスク装置920などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ914は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする装置である。
ROM903、RAM904、磁気ディスク装置920およびドライブ914は記憶装置の一例である。キーボード912、マウス913および通信ボード905は入力装置の一例である。ディスプレイ911および通信ボード905は出力装置の一例である。
通信ボード905は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
磁気ディスク装置920には、OS921(オペレーティングシステム)、プログラム群922、ファイル群923が記憶されている。
プログラム群922には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラム(例えば、送信プログラム、受信プログラム)は、CPU901により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群923には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
フローチャートなどに基づいて説明する実施の形態の処理はCPU901、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
実施の形態1により、例えば、以下のような効果を奏する。
送信計算機200は、受信計算機管理テーブル291によって、全ての受信計算機300にデータパケット101を送信できたか否かを判定することができる。つまり、送信計算機200はデータパケット101を全ての受信計算機300へ送信することができる。
受信計算機300は、データパケット101内の割り当てフラグビットによって、送信計算機200がACKパケット102を受信したか否かを判定することができる。受信計算機300は、送信計算機200がACKパケット102を受信していない場合にだけACKパケット102を送信する。これにより、データパケット101の再送が繰り返されても受信計算機300からACKパケット102が余計に送信されず、ネットワーク109の負荷を軽減することができる。
フラグビットと受信計算機300とを対応付ける情報(例えば、フラグビットが割り当てられた受信計算機300のIPアドレス)をデータパケット101のヘッダに設定する必要がないため、データパケット101のヘッダの増大を防ぐことができる。
以下に、実施の形態1の補足説明を行う。
送信計算機200は、データパケット101の1回目の送信時に、ACKフラグフィールド101cをヘッダ101Aに含まないデータパケット101を複数の受信計算機300へ送信しても構わない。データパケット101のヘッダ101AにACKフラグフィールド101cが含まれていない場合、データパケット101を受信した各受信計算機300は、ACKパケット102を送信計算機200へ送信する。
少なくともいずれかの受信計算機300からACKパケット102を受信できなかった場合、送信計算機200は、ACKフラグフィールド101cをヘッダ101Aに含んだデータパケット101であって、受信済み計算機に割り当てられるフラグビットに受信済みフラグ値を設定し、未受信計算機に割り当てられるフラグビットに未受信フラグ値を設定したデータパケット101を複数の受信計算機300へ再送する。
フラグビットは、2ビット以上の領域(例えば、1バイトの領域)であっても構わない。
送信計算機200は、フラグビットに未受信フラグ値として「0」ではなく「1」を設定し、フラグビットに受信済みフラグ値として「1」ではなく「0」を設定しても構わない。
フラグビットが2ビット以上の領域である場合、送信計算機200は「0」「1」以外の値、文字または記号を未受信フラグ値または受信済みフラグ値として用いても構わない。
送信計算機200は、起動通知パケット103を送信しなくても構わない。
受信計算機300は、送信計算機200から送信される起動通知パケット103に対して起動応答パケット104を応答する代わりに、割り当てビット番号を要求する割り当て要求パケットを送信計算機200へ送信しても構わない。
送信計算機200は、起動応答パケット104を受信する代わりに割り当て要求パケットを受信して番号通知パケット105(割り当て応答パケットの一例)を送信する。
送信計算機200は、起動応答パケット104を受信する度に受信計算機管理テーブル291(図5参照)に行を追加する代わりに、予め定められた受信計算機300の台数と同じ数の行を受信計算機管理テーブル291に予め作成しておいても構わない。
受信計算機管理テーブル291は、複数の受信計算機300それぞれに割り当てられるインデックス値(例えば、割り当てビット番号)を定義するインデックス情報の一例である。
送信計算機200は、受信計算機300に対して起動応答パケット104の受信順序に従って割り当てビット番号(受信計算機管理テーブル291の行番号)を割り当てずに、受信計算機300に対して割り当てビット番号を任意に、またはランダムに割り当てても構わない。
送信計算機200が受信計算機300に対して割り当てビット番号を割り当てなくても構わない。
例えば、受信計算機300に対して割り当てビット番号を割り当てる割り当てサーバを設ける。割り当てサーバは、送信計算機200の代わりに前処理(図7参照)を実行して受信計算機管理テーブル291を生成し、生成した受信計算機管理テーブル291を送信計算機200に送信する。また、割り当てサーバは、送信計算機200の代わりに番号通知パケット105を複数の受信計算機300に送信する。
また、ユーザが、送信計算機200に予め受信計算機管理テーブル291を生成し、受信計算機300に予め自計算機番号管理テーブル391を生成しても構わない。
各種のパケットのヘッダにはパケットの種類を識別する識別値が設定され、パケットの種類はヘッダに設定される識別値によって判定される。
実施の形態1において、例えば、以下のような送信計算機200について説明した。
計算機記憶部290(インデックス情報記憶部の一例)は、複数の受信計算機300それぞれに割り当てられるインデックス値(割り当てビット番号)を定義するインデックス情報(受信計算機管理テーブル291)を記憶する。
データ送信部210(データパケット送信部の一例)は、ペイロードデータ(アプリケーションデータ)を含んだデータパケット101を複数の受信計算機300へ送信する。
データ送信部210(受信確認パケット受信部の一例)は、データパケット101を受信した受信計算機300から、データパケット101を受信したことを通知する受信確認パケット(ACKパケット102)を受信する。
データ送信部210(データパケット送信部の一例)は、受信した受信確認パケットを送信した受信計算機300を受信済み計算機として判定し、複数の受信計算機300の中に受信済み計算機として判定しなかった未受信計算機が存在するか否かを判定する。複数の受信計算機300の中に未受信計算機が存在する場合、データ送信部210は、受信済み計算機に割り当てられるインデックス値をインデックス情報に基づいて判定する。データ送信部210は、ペイロードデータと、インデックス値によって特定される複数のフラグ領域(複数のフラグビット)とを含むデータパケット101を再送する。再送するデータパケット101は、複数のフラグ領域のうち、受信済み計算機に割り当てられるインデックス値によって特定されるフラグ領域に、受信確認パケットの受信済みを表す受信済みフラグ値が含まれる。再送するデータパケット101は、複数のフラグ領域のうち、未受信計算機に割り当てられるインデックス値によって特定されるフラグ領域に、受信確認パケットの未受信を表す未受信フラグ値が含まれる。
実施の形態1において、例えば、以下のような受信計算機300について説明した。
受信計算機300は、インデックス値(割り当てビット番号)が割り当てられ、送信計算機200から送信されるデータパケット101を受信し、データパケット101を受信したことを通知する受信確認パケット(ACKパケット102)を送信計算機200へ送信する。
計算機記憶部390(割り当て値記憶部の一例)は、割り当てられたインデックス値を割り当て値(割り当てビット番号)として記憶する。
データ受信部310(データパケット受信部の一例)は、インデックス値によって特定される複数のフラグ領域(フラグビット)を含み、複数のフラグ領域それぞれに特定のフラグ値が設定されるデータパケット101を、送信計算機200から受信する。
データ受信部310(割り当て領域判定部の一例)は、受信したデータパケット101に含まれる複数のフラグ領域のうち割り当て値によって特定されるフラグ領域を割り当て領域(割り当てビット)として判定する。データ受信部310は、割り当て領域に設定されているフラグ値が、送信計算機200が受信確認パケットを受信していないことを表す未受信フラグ値であるか否かを判定する。
データ受信部310(受信確認パケット送信部の一例)は、割り当て領域に設定されているフラグ値が未受信フラグ値であると判定した場合、受信確認パケットを送信計算機200へ送信する。
実施の形態1において、例えば、以下のような通信システム100について説明した。
送信計算機200は、全ての受信計算機300から受信確認通知(ACKパケット102)が届くまでIPマルチキャスト通信を繰り返し行う。
すでに受信確認通知が送信計算機200に届いた受信計算機300は再送データに対して受信確認通知を行わない。
1台の受信計算機300の受信確認通知の受信状況を1ビットで表すことができ、送信データ(データパケット101)に占める受信確認通知の受信状況を示すフィールド(ACKフラグフィールド101c)のサイズを小さくすることができる。
送信計算機200の計算機検出部220は、受信計算機300に対して整数値かつ一意の識別子(割り当てビット番号)を割り当てる。
受信計算機300の自計算機番号管理テーブル391は、各送信計算機200の計算機検出部220により割り当てられた識別子を保持する。
送信計算機200のデータ送信部210は、送信データ内に、受信計算機300からの受信確認通知の受信の有無を示すフィールド(ACKフラグフィールド101c)を設ける。
送信計算機200のデータ送信部210は、受信確認通知を受信すると、送信元の受信計算機300の識別子に対応するビットを「1(受信済み)」にする。
送信計算機200のデータ送信部210は、受信確認通知を未送信の受信計算機300の識別子に対応するビットを「0(未受信)」にする。
送信計算機200のデータ送信部210は、全ての受信計算機300から受信確認通知が届かなければ、データを全ての受信計算機300にIPマルチキャストにて再送する。
再送データを受信した受信計算機300のデータ受信部310は、受信確認通知の有無を示すフィールド中で、自計算機の受信確認通知が送信計算機200に受信されたかどうかを示すビットを参照する。
受信計算機300のデータ受信部310は、ビットが「1」であれば受信確認通知を送信せず、「0」であれば受信確認通知を再送する。
実施の形態2.
データパケット101内のACKフラグフィールド101cの領域サイズを可変にする形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
送信計算機200および受信計算機300の構成は実施の形態1と同じである(図3、4参照)。
但し、送信計算機200のデータ送信部210は、図20に示すようなデータパケット101を送信する。
図20は、実施の形態2におけるデータパケット101のフォーマットの一例を示す図である。
実施の形態2におけるデータパケット101のフォーマットの一例について、図20に基づいて説明する。
データパケット101のヘッダ101Aは、送信元IPアドレス101a、マルチキャストアドレス101b、ACKフラグフィールド101cに加えて、フィールドサイズ情報101dを有する。
フィールドサイズ情報101d(フラグ領域サイズ情報の一例)は、ACKフラグフィールド101cの領域サイズを求めるための情報である。
ACKフラグフィールド101cの領域サイズまたは受信計算機300の台数(受信計算機管理テーブル291の行数)は、フィールドサイズ情報101dの一例である。
データパケット101を通信する前の前処理は実施の形態1(図7、6参照)と同じであり、データパケット101の通信処理は実施の形態1(図12、12参照)と同様である。
以下に、データパケット101の通信処理について補足説明を行う。
まず、送信計算機200のデータパケット送信処理(図12参照)について補足説明を行う。
S121−3において、データ送信部210は、図20に示すようなデータパケット101を生成する。
このとき、データ送信部210は、受信計算機管理テーブル291の行数をフィールドサイズ情報101dとしてデータパケット101に設定する。但し、データ送信部210は、受信計算機管理テーブル291の行数に基づいてACKフラグフィールド101cの領域サイズ(図13の説明を参照)を算出し、算出したACKフラグフィールド101cの領域サイズをフィールドサイズ情報101dとしてデータパケット101に設定してもよい。
次に、受信計算機300のデータパケット受信処理(図14参照)について補足説明を行う。
S136において、データ受信部310は、データパケット101のフィールドサイズ情報101dを参照してACKフラグフィールド101cの領域サイズを算出する(図13の説明を参照)。
データ受信部310は、算出したACKフラグフィールド101cの領域サイズに基づいてアプリケーションデータ領域101Bを判定する。例えば、データ受信部310はデータパケット101の何バイト目からの領域がアプリケーションデータ領域101Bであるかを判定する。
データ受信部310は、判定したアプリケーションデータ領域101Bからアプリケーションデータを取得し、取得したアプリケーションデータをアプリケーション部330に出力する。
実施の形態2により、受信計算機300の数が多い場合であっても実施の形態1で説明したリライアブルIPマルチキャスト通信を実現することができる。
また、受信計算機300の数が少ない場合にはデータパケット101内のACKフラグフィールド101cを小さくすることができる。
実施の形態3.
送信計算機200が、稼働している受信計算機300を定期的に検出して受信計算機管理テーブル291を更新する形態について説明する。
以下、実施の形態1、2と異なる事項について主に説明する。説明を省略した事項については実施の形態1、2と同様である。
送信計算機200および受信計算機300の構成は実施の形態1と同じである(図3、4参照)。
但し、送信計算機200の計算機検出部220(要求パケット送信部の一例)は、定期的に起動通知パケット103(要求パケットの一例)をマルチキャストで送信する。
計算機検出部220(応答パケット受信部の一例)は、起動通知パケット103を応答しない受信計算機300に割り当てた割り当てビット番号を、新たに起動した受信計算機300に割り当て直す。
データパケット101を通信する前の前処理は実施の形態1と同じである(図7、8参照)。
データパケット101の通信処理は実施の形態1(または実施の形態2)と同じである(図12、14参照)。
図21は、実施の形態3における送信計算機200の定期検出処理を示すフローチャートである。
実施の形態3における送信計算機200の定期検出処理について、図21に基づいて説明する。
送信計算機200の計算機検出部220は、実施の形態1で説明した前処理(図7参照)の後、以下に説明する定期検出処理を定期的に実行する。例えば、送信計算機200の計算機検出部220は、定期検出処理を所定の時間間隔で、または、所定のタイミング(データパケット101の送信を開始するとき等)で実行する。
S141−1において、計算機検出部220は起動通知パケットを生成し、生成した起動通知パケットをマルチキャストで送信する。
S141−1の後、S141−2へ進む。
S141−2において、計算機検出部220は、起動応答パケット用の所定の待ち時間が経過するまでの間、稼働している受信計算機300からの起動応答パケットの到達を待ち、到達した起動応答パケットを受信する。
S141−2の後、S142−1へ進む。
S142−1において、計算機検出部220は、S141−2で受信した起動応答パケットに設定されている送信元IPアドレスに基づいて、起動応答パケットを送信した受信計算機300を判定する。以下、起動応答パケットを送信した受信計算機300を「応答計算機」という。
計算機検出部220は、応答計算機以外の受信計算機300が受信計算機管理テーブル291に登録されているか否かを判定する。以下、受信計算機管理テーブル291に登録されている受信計算機300のうち応答計算機以外の受信計算機300を「不応答計算機」という。
不応答計算機が有る場合(YES)、S142−2へ進む。
不応答計算機が無い場合(NO)、S143−1へ進む。
S142−2において、計算機検出部220は、不応答計算機の不応答回数を数え、数えた不応答回数の値と所定の不応答閾値とを比較する。
不応答回数は、定期検出処理で連続して不応答計算機であった回数である。例えば、計算機検出部220は、受信計算機300の識別子と不応答回数とを対応付けて設定する不応答回数管理テーブルを生成し、生成した不応答回数管理テーブルを用いて不応答計算機の不応答回数を管理する。
例えば、前回の定期検出処理で応答計算機であった受信計算機300が今回の定期検出処理で不応答計算機になった場合、不応答回数は「1(=0+1)」である。さらに、次回の定期検出処理でも不応答計算機になった場合、不応答回数は「2(=1+1)」になる。
不応答回数の値が不応答閾値より大きい場合(YES)、S142−3へ進む。
不応答回数の値が不応答閾値以下である場合(NO)、S143−1へ進む。
S142−3において、不応答計算機は停止または故障した計算機であると考えられる。そのため、以後のデータパケット101の送信時に送信計算機200はこの不応答計算機のACKパケット102を待つ必要は無い。
そこで、計算機検出部220は、受信計算機管理テーブル291から不応答計算機の登録行を選択し、選択した不応答計算機の登録行の「受信計算機」の欄から不応答計算機の識別子を削除する。以下、不応答計算機の識別子を削除した登録行を「空き行」という。
S142−3の後、S143−1へ進む。
S143−1において、計算機検出部220は、受信計算機管理テーブル291に登録されている受信計算機300以外に応答計算機が有るか否かを判定する。以下、受信計算機管理テーブル291に登録されている受信計算機300以外の応答計算機を「新規計算機」という。
新規計算機が有る場合(YES)、S143−2へ進む。
新規計算機が無い場合(NO)、定期検出処理は終了する。
S143−2において、受信計算機管理テーブル291に空き行が有る場合、計算機検出部220は空き行に新規計算機を登録する。
受信計算機管理テーブル291に空き行が無い場合、または複数の新規計算機が有って空き行が足らない場合、計算機検出部220は受信計算機管理テーブル291に行を追加し、追加した行に新規計算機を登録する。
S143−2の後、S144へ進む。
S144において、計算機検出部220は、S143−2で新規計算機を登録した行の行番号(割り当てビット番号)を設定した番号通知パケットを生成し、生成した番号通知パケットを新規計算機へ送信する。
S144により、定期検出処理は終了する。
図22は、実施の形態3における送信計算機200の定期検出処理の別例を示すフローチャートである。
実施の形態3における送信計算機200の定期検出処理の別例について、図22に基づいて説明する。
送信計算機200の計算機検出部220は、図21のS142−3の代わりにS142−4を実行し、図21のS143−1,2の代わりにS143−3,4を実行し、図21のS144の代わりにS145を実行する。
以下、S142−4、S143−3,4およびS145について主に説明する。
計算機検出部220は、起動通知パケットをマルチキャストで送信し(S141−1)、稼働している受信計算機300から起動応答パケットを受信する(S141−2)。
不応答計算機が有り(S142−1:YES)、不応答回数が不応答閾値より大きい場合(S142−2:YES)、S142−4へ進む。
S142−4において、計算機検出部220は、受信計算機管理テーブル291内の不応答計算機の登録行を削除する。
例えば、受信計算機管理テーブル291の1行目が計算機Aの登録行であり、2行目が計算機Bの登録行であり、計算機Aが不応答計算機である場合、計算機Aの登録行が削除され、計算機Bの登録行は1行目に繰り上がる。
S142−4の後、S143−3へ進む。
S143−3において、計算機検出部220は新規計算機が有るか否かを判定する。
新規計算機が有る場合(YES)、S143−4へ進む。
新規計算機が無い場合(NO)、S145へ進む。
S143−4において、計算機検出部220は受信計算機管理テーブル291に行を追加し、追加した行に新規計算機を登録する。
S143−4の後、S145へ進む。
S145において、計算機検出部220は以下の処理を実行する。
不応答計算機が有る場合、計算機検出部220は、受信計算機管理テーブル291内の登録行の行番号(割り当てビット番号)を設定した番号通知パケットを生成し、生成した番号通知パケットを登録行に登録された受信計算機300へ送信する。不応答計算機の登録行の削除(S142−4)により行番号が変わるためである。計算機検出部220は、不応答計算機の登録行以降の行に登録されていた受信計算機300にだけ番号通知パケットを送信すればよい。
不応答計算機が無く、新規計算機が有る場合、計算機検出部220は、新規計算機の登録行の行番号(割り当てビット番号)を設定した番号通知パケットを生成し、生成した番号通知パケットを新規計算機へ送信する。
不応答計算機と新規計算機との両方ともが無い場合、番号通知パケットの送信は不要である。
S145により、定期検出処理は終了する。
実施の形態3により、新たに起動した受信計算機300(新規計算機)を受信計算機管理テーブル291に登録することができる。
データパケット101内のACKフラグフィールド101cの領域サイズが可変である場合(実施の形態2参照)、停止または故障した受信計算機300(不応答計算機)に割り当てていた割り当てビット番号を新たに起動した受信計算機300に割り当てることにより、データパケット101内のACKフラグフィールド101cの増大を防ぐことができる。
データパケット101内のACKフラグフィールド101cの領域サイズが可変である場合(実施の形態2参照)、停止または故障した受信計算機300(不応答計算機)を受信計算機管理テーブル291から削除することにより、データパケット101内のACKフラグフィールド101cの領域サイズを小さくすることができる。
100 通信システム、101 データパケット、101A ヘッダ、101B アプリケーションデータ領域、101a 送信元IPアドレス、101b マルチキャストアドレス、101c ACKフラグフィールド、101d フィールドサイズ情報、102 ACKパケット、103 起動通知パケット、104 起動応答パケット、105 番号通知パケット、109 ネットワーク、200 送信計算機、210 データ送信部、220 計算機検出部、230 アプリケーション部、290 計算機記憶部、291 受信計算機管理テーブル、300 受信計算機、310 データ受信部、320 計算機検出部、330 アプリケーション部、390 計算機記憶部、391 自計算機番号管理テーブル、901 CPU、902 バス、903 ROM、904 RAM、905 通信ボード、911 ディスプレイ、912 キーボード、913 マウス、914 ドライブ、920 磁気ディスク装置、921 OS、922 プログラム群、923 ファイル群。

Claims (12)

  1. 複数の受信計算機それぞれに割り当てられるインデックス値を定義するインデックス情報を記憶するインデックス情報記憶部と、
    前記複数の受信計算機それぞれからインデックス値の割り当てを要求する割り当て要求パケットを受信し、前記割り当て要求パケットを受信した順番を前記割り当て要求パケットを送信した受信計算機に割り当てるインデックス値にして前記インデックス情報を生成し、前記受信計算機に割り当てる前記インデックス値を含んだ割り当て応答パケットを前記受信計算機へ送信する割り当て部と、
    ペイロードデータを含んだデータパケットを前記複数の受信計算機へ送信するデータパケット送信部と、
    前記データパケットを受信した受信計算機から、前記データパケットを受信したことを通知する受信確認パケットを受信する受信確認パケット受信部とを備え、
    前記データパケット送信部は、
    前記受信確認パケット受信部によって受信された受信確認パケットを送信した受信計算機を受信済み計算機として判定し、前記複数の受信計算機の中に前記受信済み計算機として判定しなかった未受信計算機が存在するか否かを判定し、前記複数の受信計算機の中に前記未受信計算機が存在する場合、前記受信済み計算機に割り当てられるインデックス値を前記インデックス情報に基づいて判定し、前記ペイロードデータと、インデックス値によって特定される複数のフラグ領域とを含み、前記複数のフラグ領域のうち、前記受信済み計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの受信済みを表す受信済みフラグ値が含まれ、前記複数のフラグ領域のうち、前記未受信計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの未受信を表す未受信フラグ値が含まれたデータパケットを、前記複数の受信計算機へ送信する
    ことを特徴とする送信計算機。
  2. 前記インデックス情報は、前記複数の受信計算機それぞれの識別子を順序付けて設定した情報であり、
    前記データパケット送信部は、前記受信済み計算機の識別子が前記インデックス情報に設定されている順番を前記受信済み計算機に割り当てられるインデックス値として判定する
    ことを特徴とする請求項1記載の送信計算機。
  3. 前記送信計算機は、
    前記複数の受信計算機に対して応答パケットを要求する要求パケットを送信する要求パケット送信部と、
    要求パケットを受信した受信計算機から応答パケットを受信する応答パケット受信部とを備え、
    前記割り当て部は、インデックス値が割り当てられている受信計算機のうち前記応答パケット受信部によって応答パケットが受信されなかった受信計算機を不応答計算機として判定し、前記応答パケット受信部によって前記応答パケットが受信された受信計算機のうちインデックス値が割り当てられていない受信計算機を新規計算機として判定し、前記不応答計算機のインデックス値を前記新規計算機に割り当てて前記インデックス情報を更新し、前記新規計算機に割り当てる前記インデックス値を含んだインデックス値通知パケットを前記新規計算機へ送信する
    ことを特徴とする請求項1または請求項2に記載の送信計算機。
  4. 前記データパケット送信部は、
    前記割り当て部によって前記割り当て要求パケットが受信された受信計算機の台数に基づいて前記複数のフラグ領域を構成するフラグ領域の個数を算出し、算出した個数のフラグ領域が前記複数のフラグ領域として含まれる前記データパケットを送信する
    ことを特徴とする請求項1から請求項3のいずれか1項に記載の送信計算機。
  5. 前記データパケット送信部は、
    前記割り当て部によって前記割り当て要求パケットが受信された受信計算機の台数に基づいて前記複数のフラグ領域の合計サイズを算出するためのフラグ領域サイズ情報を生成し、生成したフラグ領域サイズ情報が含まれる前記データパケットを送信する
    ことを特徴とする請求項記載の送信計算機。
  6. インデックス値が割り当てられて、送信計算機から送信されるデータパケットを受信し、前記データパケットを受信したことを通知する受信確認パケットを前記送信計算機へ送信する受信計算機であって、
    割り当てられたインデックス値を割り当て値として記憶する割り当て値記憶部と、
    インデックス値の割り当てを要求する割り当て要求パケットを前記送信計算機へ送信する割り当て要求パケット送信部と、
    前記送信計算機からインデックス値を含んだ割り当て応答パケットを受信し、受信した割り当て応答パケットに含まれるインデックス値を前記割り当て値として前記割り当て値記憶部に記憶する割り当て応答パケット受信部と、
    インデックス値によって特定される複数のフラグ領域を含み、前記複数のフラグ領域それぞれに特定のフラグ値が設定されるデータパケットを、前記送信計算機から受信するデータパケット受信部と、
    前記データパケット受信部によって受信された前記データパケットに含まれる前記複数のフラグ領域のうち前記割り当て値によって特定されるフラグ領域を割り当て領域として判定し、前記割り当て領域に設定されているフラグ値が、前記送信計算機が前記受信確認パケットを受信していないことを表す未受信フラグ値であるか否かを判定する割り当て領域判定部と、
    前記割り当て領域判定部によって、前記割り当て領域に設定されているフラグ値が前記未受信フラグ値であると判定された場合、前記受信確認パケットを前記送信計算機へ送信する受信確認パケット送信部と
    を備えることを特徴とする受信計算機。
  7. 複数の受信計算機それぞれに割り当てられるインデックス値を定義するインデックス情報を記憶するインデックス情報記憶部と、割り当て部と、データパケット送信部と、受信確認パケット受信部とを備える送信計算機によって実行する送信方法であって、
    前記割り当て部が、前記複数の受信計算機それぞれからインデックス値の割り当てを要求する割り当て要求パケットを受信し、前記割り当て要求パケットを受信した順番を前記割り当て要求パケットを送信した受信計算機に割り当てるインデックス値にして前記インデックス情報を生成し、前記受信計算機に割り当てる前記インデックス値を含んだ割り当て応答パケットを前記受信計算機へ送信し、
    前記データパケット送信部が、ペイロードデータを含んだデータパケットを前記複数の受信計算機へ送信し、
    前記受信確認パケット受信部が、前記データパケットを受信した受信計算機から、前記データパケットを受信したことを通知する受信確認パケットを受信し、
    前記データパケット送信部が、
    前記受信確認パケット受信部によって受信された受信確認パケットを送信した受信計算機を受信済み計算機として判定し、前記複数の受信計算機の中に前記受信済み計算機として判定しなかった未受信計算機が存在するか否かを判定し、前記複数の受信計算機の中に前記未受信計算機が存在する場合、前記受信済み計算機に割り当てられるインデックス値を前記インデックス情報に基づいて判定し、前記ペイロードデータと、インデックス値によって特定される複数のフラグ領域とを含み、前記複数のフラグ領域のうち、前記受信済み計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの受信済みを表す受信済みフラグ値が含まれ、前記複数のフラグ領域のうち、前記未受信計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの未受信を表す未受信フラグ値が含まれたデータパケットを、前記複数の受信計算機へ送信する
    ことを特徴とする送信方法。
  8. 請求項記載の送信方法をコンピュータに実行させることを特徴とする送信プログラム。
  9. インデックス値が割り当てられ、送信計算機から送信されるデータパケットを受信し、前記データパケットを受信したことを通知する受信確認パケットを前記送信計算機へ送信する受信計算機によって実行する受信方法であって、
    前記受信計算機は、割り当てられたインデックス値を割り当て値として記憶する割り当て値記憶部と、割り当て要求パケット送信部と、割り当て応答パケット受信部と、データパケット受信部と、割り当て領域判定部と、受信確認パケット送信部とを備え、
    前記割り当て要求パケット送信部は、インデックス値の割り当てを要求する割り当て要求パケットを前記送信計算機へ送信し、
    前記割り当て応答パケット受信部は、前記送信計算機からインデックス値を含んだ割り当て応答パケットを受信し、受信した割り当て応答パケットに含まれるインデックス値を前記割り当て値として前記割り当て値記憶部に記憶し、
    前記データパケット受信部が、インデックス値によって特定される複数のフラグ領域を含み、前記複数のフラグ領域それぞれに特定のフラグ値が設定されるデータパケットを、前記送信計算機から受信し、
    前記割り当て領域判定部が、前記データパケット受信部によって受信された前記データパケットに含まれる前記複数のフラグ領域のうち前記割り当て値によって特定されるフラグ領域を割り当て領域として判定し、前記割り当て領域に設定されているフラグ値が、前記送信計算機が前記受信確認パケットを受信していないことを表す未受信フラグ値であるか否かを判定し、
    前記受信確認パケット送信部が、前記割り当て領域判定部によって、前記割り当て領域に設定されているフラグ値が前記未受信フラグ値であると判定された場合、前記受信確認パケットを前記送信計算機へ送信する
    ことを特徴とする受信方法。
  10. 請求項記載の受信方法をコンピュータに実行させることを特徴とする受信プログラム。
  11. 送信計算機と複数の受信計算機とを有する通信システムにおいて、
    前記送信計算機は、
    前記複数の受信計算機それぞれに割り当てられるインデックス値を定義するインデックス情報を記憶するインデックス情報記憶部と、
    前記複数の受信計算機それぞれからインデックス値の割り当てを要求する割り当て要求パケットを受信し、前記割り当て要求パケットを受信した順番を前記割り当て要求パケットを送信した受信計算機に割り当てるインデックス値にして前記インデックス情報を生成し、前記受信計算機に割り当てる前記インデックス値を含んだ割り当て応答パケットを前記受信計算機へ送信する割り当て部と、
    ペイロードデータを含んだデータパケットを前記複数の受信計算機へ送信するデータパケット送信部と、
    前記データパケットを受信した受信計算機から、前記データパケットを受信したことを通知する受信確認パケットを受信する受信確認パケット受信部とを備え、
    前記データパケット送信部は、
    前記受信確認パケット受信部によって受信された受信確認パケットを送信した受信計算機を受信済み計算機として判定し、前記複数の受信計算機の中に前記受信済み計算機として判定しなかった未受信計算機が存在するか否かを判定し、前記複数の受信計算機の中に前記未受信計算機が存在する場合、前記受信済み計算機に割り当てられるインデックス値を前記インデックス情報に基づいて判定し、前記ペイロードデータと、インデックス値によって特定される複数のフラグ領域とを含み、前記複数のフラグ領域のうち、前記受信済み計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの受信済みを表す受信済みフラグ値が含まれ、前記複数のフラグ領域のうち、前記未受信計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの未受信を表す未受信フラグ値が含まれたデータパケットを、前記複数の受信計算機へ送信し、
    前記受信計算機は、
    割り当てられたインデックス値を割り当て値として記憶する割り当て値記憶部と、
    インデックス値の割り当てを要求する割り当て要求パケットを前記送信計算機へ送信する割り当て要求パケット送信部と、
    前記送信計算機からインデックス値を含んだ割り当て応答パケットを受信し、受信した割り当て応答パケットに含まれるインデックス値を前記割り当て値として前記割り当て値記憶部に記憶する割り当て応答パケット受信部と、
    前記送信計算機から前記データパケットを受信するデータパケット受信部と、
    前記データパケット受信部によって受信された前記データパケットに含まれる前記複数のフラグ領域のうち前記割り当て値によって特定されるフラグ領域を割り当て領域として判定し、前記割り当て領域に設定されているフラグ値が前記未受信フラグ値であるか否かを判定する割り当て領域判定部と、
    前記割り当て領域判定部によって、前記割り当て領域に設定されているフラグ値が前記未受信フラグ値であると判定された場合、前記受信確認パケットを前記送信計算機へ送信する受信確認パケット送信部と
    を備える
    ことを特徴とする通信システム。
  12. 送信計算機と複数の受信計算機とを有する通信システムが実行する通信方法において、
    前記送信計算機は、前記複数の受信計算機それぞれに割り当てられるインデックス値を定義するインデックス情報を記憶するインデックス情報記憶部と、割り当て部と、データパケット送信部と、受信確認パケット受信部とを備え、
    前記割り当て部が、前記複数の受信計算機それぞれからインデックス値の割り当てを要求する割り当て要求パケットを受信し、前記割り当て要求パケットを受信した順番を前記割り当て要求パケットを送信した受信計算機に割り当てるインデックス値にして前記インデックス情報を生成し、前記受信計算機に割り当てる前記インデックス値を含んだ割り当て応答パケットを前記受信計算機へ送信し、
    前記データパケット送信部が、ペイロードデータを含んだデータパケットを前記複数の受信計算機へ送信し、
    前記受信確認パケット受信部が、前記データパケットを受信した受信計算機から、前記データパケットを受信したことを通知する受信確認パケットを受信し、
    前記データパケット送信部が、
    前記受信確認パケット受信部によって受信された受信確認パケットを送信した受信計算機を受信済み計算機として判定し、前記複数の受信計算機の中に前記受信済み計算機として判定しなかった未受信計算機が存在するか否かを判定し、前記複数の受信計算機の中に前記未受信計算機が存在する場合、前記受信済み計算機に割り当てられるインデックス値を前記インデックス情報に基づいて判定し、前記ペイロードデータと、インデックス値によって特定される複数のフラグ領域とを含み、前記複数のフラグ領域のうち、前記受信済み計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの受信済みを表す受信済みフラグ値が含まれ、前記複数のフラグ領域のうち、前記未受信計算機に割り当てられるインデックス値によって特定されるフラグ領域に、前記受信確認パケットの未受信を表す未受信フラグ値が含まれたデータパケットを、前記複数の受信計算機へ送信し、
    前記受信計算機は、割り当てられたインデックス値を割り当て値として記憶する割り当て値記憶部と、割り当て要求パケット送信部と、割り当て応答パケット受信部と、データパケット受信部と、割り当て領域判定部と、受信確認パケット送信部とを備え、
    前記割り当て要求パケット送信部は、インデックス値の割り当てを要求する割り当て要求パケットを前記送信計算機へ送信し、
    前記割り当て応答パケット受信部は、前記送信計算機からインデックス値を含んだ割り当て応答パケットを受信し、受信した割り当て応答パケットに含まれるインデックス値を前記割り当て値として前記割り当て値記憶部に記憶し、
    前記データパケット受信部が、前記送信計算機から前記データパケットを受信し、
    前記割り当て領域判定部が、前記データパケット受信部によって受信された前記データパケットに含まれる前記複数のフラグ領域のうち前記割り当て値によって特定されるフラグ領域を割り当て領域として判定し、前記割り当て領域に設定されているフラグ値が前記未受信フラグ値であるか否かを判定し、
    前記受信確認パケット送信部が、前記割り当て領域判定部によって、前記割り当て領域に設定されているフラグ値が前記未受信フラグ値であると判定された場合、前記受信確認パケットを前記送信計算機へ送信する
    ことを特徴とする通信方法。
JP2012000389A 2012-01-05 2012-01-05 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法 Expired - Fee Related JP5832305B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012000389A JP5832305B2 (ja) 2012-01-05 2012-01-05 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012000389A JP5832305B2 (ja) 2012-01-05 2012-01-05 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法

Publications (2)

Publication Number Publication Date
JP2013141134A JP2013141134A (ja) 2013-07-18
JP5832305B2 true JP5832305B2 (ja) 2015-12-16

Family

ID=49038214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012000389A Expired - Fee Related JP5832305B2 (ja) 2012-01-05 2012-01-05 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法

Country Status (1)

Country Link
JP (1) JP5832305B2 (ja)

Also Published As

Publication number Publication date
JP2013141134A (ja) 2013-07-18

Similar Documents

Publication Publication Date Title
US11470000B2 (en) Medical device communication method
US9049112B2 (en) Flow control for reliable message passing
WO2015180339A1 (zh) 消息推送处理方法、装置、推送服务器及应用服务器
JP2006338666A (ja) 分散カーネルオペレーティングシステム
US10594442B2 (en) End-to-end negative acknowledgment
JP6148459B2 (ja) データを送信ノードから宛先ノードに移送する方法
JP2006340354A (ja) 分散カーネルオペレーティングシステム
KR20180020217A (ko) Flexeth에서 데이터 스트림의 송신을 위한 방법, 송신기 및 수신기
US9007944B2 (en) One-to-many and many-to-one communications on a network
EP2055048B1 (en) Decoupled connections
WO2015180418A1 (zh) 组播传输方法、装置及系统
CN103973414A (zh) 一种数据传输方法及装置
US10171258B2 (en) Data collection method and system
JP5832305B2 (ja) 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法
WO2020048177A1 (zh) 机顶盒管理方法、装置、设备及存储介质
JP6089518B2 (ja) 転送装置、転送方法および転送プログラム
KR100396921B1 (ko) 중계기서버를 이용한 멀티캐스팅 전송 시스템의 오류 제어방법
JP2018182688A (ja) 情報処理装置、情報処理システムおよび情報処理システムの制御方法
CN113315601B (zh) 多点协助的数据传输方法、装置、存储介质及电子设备
JP5365377B2 (ja) 配信システム、集信システム、配信方法、集信方法、及びプログラム
US9197429B1 (en) Reducing size of multicast retry transactions
TW201927036A (zh) 用於無線感測網路之任務排程的方法
JPH1188396A (ja) 通信装置
JP2017034562A (ja) 通信装置および再接続方法
KR20120068526A (ko) Udp 기반의 자료 전송 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150909

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150929

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151027

R150 Certificate of patent or registration of utility model

Ref document number: 5832305

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees