(57)【要約】【課題】通信ノード間の通信パスが不確定なネットワークにおいて効率よく到達確認メッセージを送信できるようにする。【解決手段】本方法は、（Ａ）ある送信元ノードから受信されたデータの識別子の集合を、識別子が上記集合に包含されているか否かを確認するためのビット列に写像する処理と、（Ｂ）上記集合に含まれる識別子の範囲を規定するデータと上記ビット列とを含む到着確認メッセージを、ある送信元ノード宛に送信する処理とを含む。【選択図】図４
2014060533.tif 000002
【特許請求の範囲】
【請求項１】
ある送信元ノードから受信されたデータの識別子の集合を、識別子が前記集合に包含されているか否かを確認するためのビット列に写像し、
前記集合に含まれる識別子の範囲を規定するデータと前記ビット列とを含む到着確認メッセージを、前記ある送信元ノード宛に送信する
処理を、コンピュータに実行させるためのプログラム。
【請求項２】
前記ビット列が、確率的データ構造であり、
前記写像する処理が、
前記ビット列に基づき、前記識別子の範囲に含まれるが前記集合には含まれない識別子が、前記集合に含まれていることになっているか否かを検証する処理と、
前記識別子の範囲に含まれるが前記集合には含まれない識別子が、前記集合に含まれていることになっている場合には、前記集合に含まれる識別子を削減してから前記ビット列を生成し直す処理と、
を含む請求項１記載のプログラム。
【請求項３】
前記写像する処理が、
前記検証する処理と前記生成し直す処理とを、前記検証する処理において前記識別子の範囲に含まれるが前記集合には含まれない識別子が前記集合に含まれていると判断されることが無くなるまで繰り返す処理
をさらに含む請求項２記載のプログラム。
【請求項４】
前記写像する処理は、
前記集合に含まれる識別子の範囲に含まれる識別子の数に対する前記集合に含まれる識別子の数の比率が、一定値以上となるように前記集合に含まれる識別子を特定する処理
を含む請求項１乃至３のいずれか１つ記載のプログラム。
【請求項５】
前記特定する処理が、
前記識別子の範囲に含まれる識別子のうち最後の識別子を削除する処理、又は前記識別子の範囲に含まれる識別子の間隔のうち最大の間隔が生じている部分で前記集合を分割する処理
を含む請求項４記載のプログラム。
【請求項６】
前記生成し直す処理が、
前記識別子の範囲に含まれる識別子のうち最後の識別子を削除する処理、前記識別子の範囲に含まれる識別子のうち先頭の識別子を削除した場合における新たな集合に含まれる識別子の第１の範囲と前記識別子の範囲に含まれる識別子のうち最後の識別子を削除した場合における新たな集合に含まれる識別子の第２の範囲とのうち狭い範囲を生じさせる識別子を削除する処理、又は、前記識別子の範囲に含まれる識別子の間隔のうち最も広い間隔以降の識別子を削除する処理
を含む請求項２記載のプログラム。
【請求項７】
ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が前記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信し、
前記ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、前記到着確認メッセージに含まれる前記データから特定される範囲に含まれる識別子を抽出し、
前記ビット列に基づき、抽出された前記識別子が、前記集合に包含されているか否かを判断し、
前記集合に包含されていると判断された識別子及び当該識別子についてのデータを、前記データ格納部から削除する
処理を、コンピュータに実行させるためのプログラム。
【請求項８】
ある送信元ノードから受信されたデータの識別子の集合を、識別子が前記集合に包含されているか否かを確認するためのビット列に写像し、
前記集合に含まれる識別子の範囲を規定するデータと前記ビット列とを含む到着確認メッセージを、前記ある送信元ノード宛に送信する
処理を、コンピュータが実行する到着確認メッセージ送信方法。
【請求項９】
ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が前記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信し、
前記ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、前記到着確認メッセージに含まれる前記データから特定される範囲に含まれる識別子を抽出し、
前記ビット列に基づき、抽出された前記識別子が、前記集合に包含されているか否かを判断し、
前記集合に包含されていると判断された識別子及び当該識別子についてのデータを、前記データ格納部から削除する
処理を、コンピュータが実行するデータ削除方法。
【請求項１０】
ある送信元ノードから受信されたデータの識別子の集合を、識別子が前記集合に包含されているか否かを確認するためのビット列に写像するビット列生成部と、
前記集合に含まれる識別子の範囲を規定するデータと前記ビット列とを含む到着確認メッセージを、前記ある送信元ノード宛に送信する送信部と、
を有する情報処理装置。
【請求項１１】
ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が前記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信する受信部と、
前記ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、前記到着確認メッセージに含まれる前記データから特定される範囲に含まれる識別子を抽出し、前記ビット列に基づき、抽出された前記識別子が、前記集合に包含されているか否かを判断し、前記集合に包含されていると判断された識別子及び当該識別子についてのデータを、前記データ格納部から削除する削除部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、通信ノード間の通信パスが不確定なネットワークの通信技術に関する。
【背景技術】
【０００２】
モバイル端末や固定端末（これらについては、以下通信ノード、又は単にノードと呼ぶ）間でデータの送受信を行い、各ノードが受信したデータを蓄積、運搬（モバイル端末のみ）、転送を行うようなネットワークが考案されている。このように、送信元ノードと宛先ノードとの間の通信パスが常に存在するとは限らないような、すなわち通信パスが不確定な通信環境においてもデータ転送が可能となるネットワークは、遅延耐性ネットワーク（Delay Tolerant Network）又は途絶耐性ネットワーク（ＤＴＮ：Disruption-Tolerant Network）と呼ばれる。
【０００３】
ＤＴＮにおいては、送信元ノードから宛先ノードまでのEnd-to-Endのデータ転送にかかる時間が長く、またパケットロスや通信回線の切断が頻繁に発生する等の劣悪な通信環境を含むことがあり、このような通信環境においても効率的にデータ転送を行うことが求められている。
【０００４】
ＤＴＮにおいては、移動可能な移動ノードや移動不可能な固定ノードがデータの転送を繰り返すことで送信元ノードから宛先ノードへデータを届けることになる。具体的には、データを受信したノードは、転送先となるノードが近くにいない場合、その受信データを一旦自身の記憶領域に蓄積する。その後、自ノード又は他ノードの移動により、他のノードが近接することでデータの転送を行う。このようにEnd-to-Endの通信パスが常に存在するとは限らないような通信環境においても、データ転送が可能となる。
【０００５】
ＤＴＮ上のノードはデータ転送を行うために、他のノードから受信したデータを自身の記憶領域（ハードディスクドライブ、メモリなど）に一時的にキャッシュとして蓄積する。しかしながら、ノードの記憶領域の容量には制限があり、新たに送信元ノードから発生するデータを蓄積及び転送するためには、宛先ノードに到達したデータのキャッシュを消去することが好ましい。そのため、データの宛先ノードは、データの到達を送信元ノード及び転送ノードに対して伝えるために、到達確認メッセージ、すなわちＡＣＫメッセージをＤＴＮ上で伝送することが好ましい。一方で、データが宛先ノードに到達する度にＡＣＫメッセージを送信すると、ＤＴＮ上に大量のＡＣＫメッセージが伝播することになる。これは、通信効率上好ましくない。
【０００６】
図１に示すように、インターネットなどの通常の通信環境においては、左端のサーバから右端のサーバへデータを送信する場合、左端のサーバは、当該データを含むパケットにシーケンス番号を付与して送信する。このようなネットワークでは、途中でパケットが無くなったり大幅に遅延したりすることはあまりないので、右端のサーバは、連続して受信したパケットに付与されたシーケンス番号のうち最大のシーケンス番号を含むＡＣＫパケットを、左端のサーバに送信する。例えば、最大のシーケンス番号が「４」であれば、「４」を含むＡＣＫパケットを送信する。左端のサーバは、ＡＣＫパケットを受信すると、当該ＡＣＫパケットに含まれるシーケンス番号以下のシーケンス番号についてのパケットのデータを破棄する。シーケンス番号「４」を含むＡＣＫパケットの場合には、０乃至４のシーケンス番号に係るデータを破棄することになる。
【０００７】
ＤＴＮでは、途中でパケットが無くなったり大幅に遅延したりする場合があるので、このような技術は、連続してパケットを受信できない場合がある。例えば、シーケンス番号「０」「２」「４」といったように、とびとびのシーケンス番号のパケットを受信する場合もある。受信したパケットのシーケンス番号が連続していないので、最大のシーケンス番号は「０」となり、ＡＣＫパケットを集約できない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−４３３３号公報
【特許文献２】特開２０１１−１７２１９６号公報
【非特許文献】
【０００９】
【非特許文献１】「DTN：遅延と仲良くするネットワーク」、通信ソサイエティマガジンNo.16 [春号]2011
【非特許文献２】「DTN技術の現状と展望」、通信ソサイエティマガジンNo.16 [春号]2011
【非特許文献３】Wing Ho Yuen, et. al, "IMPROVING SEARCH EFFICIENCY USING BLOOM FILTER IN PARTIALLY CONNECTED AD HOC NETWORKS, A NODE-CENTRIC ANALYSIS", Global Telecommunications Conference, 2006. GLOBECOM '06. IEEE
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従って、本技術の目的は、一側面として、通信ノード間の通信パスが不確定なネットワークにおいて効率よく到達確認メッセージを送信できるようにするための技術を提供することである。
【課題を解決するための手段】
【００１１】
本技術の第１の態様に係る到着確認メッセージ送信方法は、（Ａ）ある送信元ノードから受信されたデータの識別子の集合を、識別子が上記集合に包含されているか否かを確認するためのビット列に写像する処理と、（Ｂ）上記集合に含まれる識別子の範囲を規定するデータと上記ビット列とを含む到着確認メッセージを、ある送信元ノード宛に送信する処理とを含む。
【００１２】
本技術の第２の態様に係るデータ削除方法は、（Ｃ）ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が上記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信する処理と、（Ｄ）ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、到着確認メッセージに含まれる上記データから特定される範囲に含まれる識別子を抽出する処理と、（Ｅ）上記ビット列に基づき、抽出された識別子が、上記集合に包含されているか否かを判断する処理と、（Ｆ）上記集合に包含されていると判断された識別子及び当該識別子についてのデータを、データ格納部から削除する処理とを含む。
【発明の効果】
【００１３】
通信ノード間の通信パスが不確定なネットワークにおいて効率よく到達確認メッセージを送信できるようになる。
【図面の簡単な説明】
【００１４】
【図１】図１は、通常のネットワークにおけるＡＣＫメッセージの送信について説明するための図である。
【図２】図２は、ＤＴＮにおけるデータパケットの伝送の様子を模式的に示す図である。
【図３】図３は、ＤＴＮにおけるＡＣＫパケットの伝送の様子を模式的に示す図である。
【図４】図４は、本技術の実施の形態の概要を説明する図である。
【図５】図５は、送信元ノードとして機能するノードの機能ブロック図である。
【図６】図６は、転送ノードとして機能するノードの機能ブロック図である。
【図７】図７は、宛先ノードとして機能するノードの機能ブロック図である。
【図８】図８は、宛先ノードの受信部で実行される処理の処理フローを示す図である。
【図９】図９は、宛先ノードのデータ格納部に格納されるデータの一例を示す図である。
【図１０】図１０は、宛先ノードで実行される処理の処理フローを示す図である。
【図１１】図１１は、第１の前処理の処理フローを示す図である。
【図１２】図１２は、第２の前処理の処理フローを示す図である。
【図１３】図１３は、ブルームフィルタを説明するための図である。
【図１４】図１４は、ブルームフィルタを説明するための図である。
【図１５】図１５は、誤検出検証処理の処理フローを示す図である。
【図１６】図１６は、誤検出検証処理について説明するための図である。
【図１７】図１７は、ＡＣＫパケットの構成例を示す図である。
【図１８】図１８は、転送ノード及び送信元ノードに格納されるデータの一例を示す図である。
【図１９】図１９は、転送ノード及び送信元ノードにおいてＡＣＫパケットを受信した場合の処理の処理フローを示す図である。
【図２０】図２０は、転送ノード及び送信元ノードにおいてＡＣＫパケットを受信した場合の処理の処理フローを示す図である。
【図２１】図２１は、ノードである情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【００１５】
図２は、ＤＴＮにおけるデータパケット（又はデータメッセージ）の伝送の様子を例示する図である。図２の例では、左端に示された固定の送信元ノード１００１から右端に示された固定の宛先ノード１００７へデータを送信する場合を示している。この例では、移動可能な転送ノード１００２が、送信元ノード１００１に接近してきたところで、送信元ノード１００１は、データパケットを転送ノード１００２に送信し、転送ノード１００２は、データパケットを受信してキャッシュに蓄積する。転送ノード１００２の付近に他の転送ノードがなければ、データパケットの転送が行われないが、例えば転送ノード１００２が移動して付近に固定の転送ノード１００３や移動可能な転送ノード１００５が近接すると、転送ノード１００２は、キャッシュに格納されているデータパケットを転送する。転送ノード１００３は、受信したデータパケットをキャッシュし、移動可能な転送ノード１００４が近づいてくると、当該転送ノード１００４にキャッシュ内のデータパケットを転送する。また、転送ノード１００５は、転送ノード１００２からデータパケットを受信すると、当該データパケットをキャッシュして移動する。そして、転送ノード１００５は、宛先ノード１００７と通信可能な程度に近づくと、キャッシュしているデータパケットを宛先ノード１００７に送信する。このようにして、送信元ノード１００１から宛先ノード１００７までデータパケットが転送されることになる。
【００１６】
また、図３は、ＤＴＮにおけるＡＣＫパケット（又はＡＣＫメッセージ）の伝送の様子を例示する図である。基本的には図２の逆方向に送信元ノード１００１宛にＡＣＫパケットを送信することになるが、必ずしも同じノードが用いられるわけではない。宛先ノード１００７は、以下で詳細に述べるＡＣＫパケットを、その際に近隣に存在する移動可能な転送ノード１００５に送信する。転送ノード１００５は、以下で述べるようにＡＣＫパケットに含まれるデータに基づきキャッシュからデータを削除する処理を実行する。さらに転送ノード１００５は移動して、固定の転送ノード１００３や移動可能な転送ノード１１０３の付近にやってくる。そうすると、転送ノード１００５は、ＡＣＫパケットを、転送ノード１００３及び１１０３に送信する。
【００１７】
転送ノード１００３は、ＡＣＫパケットを受信すると、以下で述べるようにＡＣＫパケットに含まれるデータに基づきキャッシュからデータを削除する処理を実行する。また、移動可能な転送ノード１１０２が近づいてくると、転送ノード１００３は、ＡＣＫパケットを転送ノード１１０２に転送する。また、転送ノード１１０３は、ＡＣＫパケットを受信した後、移動を開始する。そして、転送ノード１１０３は、送信元ノード１００１に近づいて通信可能な状態になると、ＡＣＫパケットを転送する。そうすると、送信元ノード１００１も、以下で述べるようにＡＣＫパケットに含まれるデータに基づきキャッシュからデータを削除する処理を実行する。
【００１８】
このような処理を様々なノード間で実施することで、ＤＴＮ上でデータ通信が行われるようになる。なお、実施の形態では説明を簡単にするため、送信元ノード、転送ノード、宛先ノードの区別をつけて説明するが、いずれのノードも送信元ノード、転送ノード又は宛先ノードとして機能する。
【００１９】
なお、本実施の形態は、図４に模式的に示すように、左端の送信元ノードから、シーケンシャルな識別番号「０」乃至「９」のデータパケットを、右端の宛先ノードまで送信したが、宛先ノードでは識別番号「０」「２」及び「４」のデータパケットしか受信できていないような場合に有効である。すなわち、この場合識別番号「０」「２」及び「４」のデータパケットが受信済みであることを表し且ついずれの識別番号についてのデータパケットを受信したのかを確認するためのビット列を付加したＡＣＫパケットを、宛先ノードが送信元ノードへ送信する。これによって、ＡＣＫパケットの転送経路上の転送ノード及び送信元ノードにおいて、いずれのデータパケットを破棄してもよいのかを確認できるようになる。
【００２０】
以下、本実施の形態においてＤＴＮに含まれるノードの構成及び当該ノードが実行する処理について説明する。
【００２１】
図５は、送信元ノードとして機能するノード１００の機能ブロック図を示す。送信元ノード１００は、通信インタフェース１０１と、送信部１０２と、受信部１０３と、データ生成部１０４と、ＩＤ生成部１０５と、データ削除処理部１０６と、データ格納部１０７とを有する。
【００２２】
通信インタフェース１０１は、例えば無線通信処理を行うモジュールである。データ生成部１０４は、他のノードに送信すべきデータを生成する。生成されるデータは、例えば、位置センサなどのセンサの出力データや処理のログデータ等である。
【００２３】
送信部１０２は、データ生成部１０４によって生成された、他のノードに送信すべきデータからパケットを生成して通信インタフェース１０１を介して送信する。ＩＤ生成部１０５は、例えば送信部１０２と連携して、宛先ノードの識別子毎に、送信するパケットの識別子（ＩＤ）であるシーケンシャルな識別番号を順次生成して、送信部１０２に出力する。送信部１０２は、宛先ノードの識別子及び識別番号に対応付けて、送信したデータをデータ格納部１０７に格納する。なお、データ生成部１０４が、ＩＤ生成部１０５と連携して、宛先ノードの識別子毎に識別番号を生成させ、データと共にデータ格納部１０７に格納するようにしても良い。
【００２４】
受信部１０３は、通信インタフェース１０１を介して他のノードからパケットを受信し、データ格納部１０７に格納し、以下で述べるようにＡＣＫパケットを受信した場合にはデータ削除処理部１０６に処理を実行させる。データ削除処理部１０６は、受信部１０３が受信したＡＣＫパケットに含まれるデータを用いて、データ格納部１０７に格納されているデータのうち削除可能なデータを特定して削除する。
【００２５】
また、図６は、転送ノードとして機能するノード２００の機能ブロック図を示す。転送ノード２００は、通信インタフェース２０１と、送信部２０２と、受信部２０３と、転送処理部２０４と、データ削除処理部２０５と、データ格納部２０６とを有する。
【００２６】
通信インタフェース２０１は、例えば無線通信処理を行うモジュールである。送信部２０２は、転送処理部２０４からの指示に応じてデータ格納部２０６に格納されているデータパケットを、他のノードに対して送信する。受信部２０３は、他のノードからデータパケット及びＡＣＫパケットを受信すると、データ格納部２０６に格納する。データパケットは、宛先ノードの識別子及び識別番号に関連付けてデータ格納部２０６において管理される。なお、ＡＣＫパケットについては転送すれば削除する。
【００２７】
転送処理部２０４は、通信インタフェース２０１を介して他のノードが近接していることを検出すると、データ格納部２０６に格納されているデータパケット及びＡＣＫパケットを送信部２０２に送信させる。データ削除処理部２０５は、受信部２０３が受信したＡＣＫパケットに含まれるデータを用いて、データ格納部２０６に格納されているデータのうち削除可能なデータを特定して削除する。送信元ノード１００におけるデータ削除処理部１０６と、転送ノード２００のデータ削除処理部２０５とは、同様な処理を実行する。
【００２８】
図７は、宛先ノードとして機能するノード３００の機能ブロック図である。宛先ノード３００は、通信インタフェース３０１と、送信部３０２と、受信部３０３と、ビット列生成部３０４と、検証処理部３０５と、データ格納部３０６とを有する。
【００２９】
通信インタフェース３０１は、例えば無線通信処理を行うモジュールである。送信部３０２は、ＡＣＫパケット等を通信インタフェース３０１を介して送信する。受信部３０３は、データパケットを通信インタフェース３０１を介して受信し、データ格納部３０６に格納する。
【００３０】
ビット列生成部３０４は、送信元ノード毎に、受信したデータパケットの識別番号がビット列生成時に用いられたか否かを確認するためのビット列を生成する。また、検証処理部３０５は、ビット列生成部３０４により生成されたビット列の検証処理を実行する。
【００３１】
次に、図８乃至図１７を用いて、宛先ノード３００における処理について説明する。宛先ノード３００の受信部３０３は、データパケットの受信を待機しており（図８：ステップＳ１）、データパケットを受信すると、データパケットのデータ部分をデータ格納部３０６に格納する（ステップＳ２）。また、受信部３０３は、当該データパケットから当該データパケットの送信元ノードの識別子を特定する（ステップＳ３）。
【００３２】
そして、受信部３０３は、送信元ノードの未処理パケット数のカウンタを１インクリメントすると共に（ステップＳ５）、データパケットに含まれるデータの識別子を抽出して、データ格納部３０６に格納する（ステップＳ６）。データ格納部３０６には、例えば図９に示すようなデータが送信元ノード毎に格納される。図９の例では、未処理パケット数のカウンタ値と、未処理の識別番号群とが格納されるようになっている。
【００３３】
このような処理を、例えばユーザによる終了指示などの理由で処理終了となるまで繰り返す（ステップＳ７）。
【００３４】
これに対してビット列生成部３０４、検証処理部３０５及び送信部３０２が実行する処理について図１０乃至図１７を用いて説明する。
【００３５】
ビット列生成部３０４は、データ格納部３０６にデータが格納されている送信元ノードのうち、例えばラウンドロビン式に１つの送信元ノードを選択する（図１０：ステップＳ１１）。そうすると、ビット列生成部３０４は、選択された送信元ノードについてデータ格納部３０６に格納されている未処理パケット数のカウンタ値が閾値以上となっているか判断する（ステップＳ１３）。閾値以上の個数のデータパケットを受信してまとめて集約してＡＣＫパケットを送信するためである。
【００３６】
選択された送信元ノードについて未処理パケット数のカウンタ値が閾値以上となっていない場合には、処理はステップＳ１１に戻る。一方、選択された送信元ノードについて未処理パケット数のカウンタ値が閾値以上であれば、ビット列生成部３０４は、前処理を実行する（ステップＳ１５）。前処理については、図１１及び図１２を用いて説明する。前処理は、本実施の形態では、後に実行される誤検出検証処理の処理効率を向上させるために実行される。
【００３７】
まず、ビット列生成部３０４は、データ格納部３０６に格納されている未処理パケットの識別番号を集合Ｓに設定する（図１１：ステップＳ３１）。そして、ビット列生成部３０４は、集合Ｓに含まれる識別番号の範囲に対する集合Ｓに含まれる識別番号の数の割合を算出する（ステップＳ３３）。集合Ｓに、識別番号｛１，３，５，９，１１｝が含まれる場合、識別番号の範囲は１０（＝１１−１）であり、集合Ｓに含まれる識別番号の数は５であるから、割合は５０％（＝５／１０）となる。
【００３８】
そして、ビット列生成部３０４は、算出された割合が閾値を超えているか判断する（ステップＳ３５）。閾値は例えば５０％以上の所定の数値である。後に実行される誤検出検証処理では、（１００％−算出された割合）の数の識別番号について誤検出するか否かを検証するので、集合Ｓに含まれる識別番号の範囲に含まれる識別番号の過半数が誤検出検証処理の処理対象となるのは非効率だからである。
【００３９】
算出された割合が閾値を超えていない場合には、ビット列生成部３０４は、集合Ｓから、識別番号最大値を除外する（ステップＳ３７）。そして処理はステップＳ３３に戻る。
【００４０】
一方、算出された割合が閾値を超えている場合には、ビット列生成部３０４は、集合Ｓに含まれる識別番号を、ビット列生成対象の識別番号に設定する（ステップＳ３９）。そして、呼出元の処理に戻る。
【００４１】
この前処理は、例えば図１２に示すような処理に変更してもよい。ビット列生成部３０４は、データ格納部３０６に格納されている未処理パケットの識別番号を集合に設定する（ステップＳ４１）。そして、ビット列生成部３０４は、未処理の集合を１つ選択する（ステップＳ４３）。
【００４２】
その後、ビット列生成部３０４は、選択された集合に含まれる識別番号の範囲に対する、選択された集合に含まれる識別番号の数を算出する（ステップＳ４５）。演算内容はステップＳ３３と同様である。
【００４３】
そして、ビット列生成部３０４は、算出された割合が閾値を超えたか判断する（ステップＳ４７）。算出された割合が閾値を超えていない場合には、ビット列生成部３０４は、選択された集合に含まれる識別番号間の間隔が最大となる部分で、選択された集合を分割する（ステップＳ４９）。そして処理はステップＳ４３に戻る。なお、分割によって生成された集合のうち、あまりに包含される識別番号の数が少ない集合については、処理対象から外すようにしてもよい。
【００４４】
一方、算出された割合が閾値を超えている場合には、ビット列生成部３０４は、選択された集合に含まれる識別番号を、ビット列生成対象に設定する（ステップＳ５１）。そして、ビット列生成部３０４は、未処理の集合が存在するか判断する（ステップＳ５３）。未処理の集合が存在する場合には、処理はステップＳ４３に戻る。一方、未処理の集合が存在しない場合には、処理は呼出元の処理に戻る。
【００４５】
本前処理によれば、ビット列生成対象の識別番号の集合が複数存在するので、以下の処理は、集合毎に実行することになる。
【００４６】
図１０の処理の説明に戻って、ビット列生成部３０４は、任意の識別番号が、ビット列生成対象の集合に包含されているか否かを確認するためのビット列を生成する（ステップＳ１７）。本実施の形態では、ビット列として確率的データ構造、具体的にはブルームフィルタ（Bloom Filter）を採用する。
【００４７】
ブルームフィルタは、よく知られているが、図１３及び図１４を用いて簡単に説明しておく。ブルームフィルタを生成するためには、図１３に示すように、ｋ個のハッシュ関数を用意し、識別番号をそれぞれに入力してハッシュ値を取得する。図１３の例では、ハッシュ関数１からはハッシュ値「８」が生成され、ハッシュ関数２からはハッシュ値「１」が生成され、ハッシュ関数ｋからはハッシュ値「１１」が生成されたものとする。そうすると、ｍビット配列において、ハッシュ値の位置のビットを「１」にセットする。図１３の例では、「８」ビット目、「１」ビット目、「１１」ビット目を「１」にセットする。このようにして生成されたビット列がブルームフィルタである。ｋ個のハッシュ関数は、ＤＴＮにおいて共通である。
【００４８】
さらに、図１４に示すように、ビット列生成対象の集合に含まれる他の識別番号についても、ｋ個のハッシュ関数にそれぞれ入力してハッシュ値を取得する。図１４の例では、ハッシュ関数１からハッシュ値「０」が生成され、ハッシュ関数２からハッシュ値「１」が生成され、ハッシュ関数ｋからハッシュ値「８」が生成されたものとする。そうすると、図１３で生成されたブルームフィルタのｍビット配列において、ハッシュ値の位置のビットを「１」にセットする。図１４の例では、「０」ビット目、「１」ビット目、「８」ビット目に「１」をセットする。但し、「１」及び「８」ビット目は既に「１」がセットされているので変更はない。このように、複数の識別番号についてのビット操作を、重ねて同じｍビット配列に対して実施することになる。
【００４９】
図１０の処理の説明に戻って、このようにビット列生成部３０４により生成されたビット列は検証処理部３０５に出力されて、検証処理部３０５は、誤検出検証処理を実行する（ステップＳ１９）。誤検出検証処理については、図１５及び図１６を用いて説明する。
【００５０】
検証処理部３０５は、ビット列生成に用いられた識別番号の範囲に含まれ且つビット列生成に用いられなかった特定識別番号のうち未処理の識別番号を１つ特定する（図１５：ステップＳ６１）。識別番号｛１，３，５，９，１１｝がビット列生成に用いられた場合には、識別番号１乃至１１の範囲において｛２，４，６，７，８，１０｝が特定識別番号となる。
【００５１】
そして、検証処理部３０５は、ブルームフィルタの誤検出の有無を判定する（ステップＳ６３）。ブルームフィルタは、その性質から誤検出が発生しうることが知られており、この誤検出を許容してしまうと、再送すべきデータパケットが、通信経路上の転送ノード及び送信元ノードにおいて削除されてしまう。そこで、誤検出が発生するか否かをここで検証しておく。
【００５２】
例えば図１６に示すように、特定識別番号を、ブルームフィルタ生成時と同じｋ個のハッシュ関数に入力してハッシュ値を取得する。ハッシュ値が示すビット位置の値が全て「１」であれば、特定識別番号はブルームフィルタ生成時の集合に含まれていたことになるので、誤検出と判断される。図１６の例では、ハッシュ関数１のハッシュ値が「３」であり、ハッシュ関数２のハッシュ値が「１０」であり、ハッシュ関数ｋのハッシュ値が「４」であり、これらのビット位置のビット値は、全て「１」となっているので、誤検出と判断される。一方、ハッシュ値が示すビット位置の値が１つでも「０」となっている場合には、誤検出無しと判断される。
【００５３】
ステップＳ６３の結果として誤検出ありとされた場合には（ステップＳ６５：Ｙｅｓルート）、ビット列生成部３０４に誤検出ありを出力する（ステップＳ６７）。そして、処理は呼出元の処理に戻る。一方、ステップＳ６３の結果として誤検出無しとされた場合には（ステップＳ６５：Ｎｏルート）、検証処理部３０５は、特定識別番号に未処理の識別番号が存在するか判断する（ステップＳ６９）。未処理の識別番号が存在する場合には、処理はステップＳ６１に戻る。一方、未処理の識別番号が存在しない場合には、生成されたブルームフィルタについて誤検出無しということになるので、検証処理部３０５は、ビット列生成部３０４に、誤検出無しを出力する（ステップＳ７１）。そして処理を終了する。
【００５４】
このような処理を実行することで、生成されたビット列、すなわちブルームフィルタをそのまま使用できるか否かが判定される。
【００５５】
図１０の処理の説明に戻って、ビット列生成部３０４は、検証処理部３０５からの出力に基づき、誤検出があったか否かを判断する（ステップＳ２１）。誤検出が存在していた場合には、ビット列生成部３０４は、ビット列生成対象の識別番号の調整を実行する（ステップＳ２９）。
【００５６】
この識別番号の調整については、様々な方法が可能である。但し、どの識別番号をビット列生成対象から外せば誤検出が無くなるのかは直接的には不明なので、（Ａ）ビット列生成対象の識別番号のうち最大の識別番号を削除する方法、（Ｂ）ビット列生成対象の識別番号のうち最小の識別番号と最大の識別番号のうち、除外した場合にビット列生成対象の識別番号の範囲が狭くなる識別番号を削除する方法、（Ｃ）ビット列生成対象の識別番号の間隔を算出し、最も広い部分から後ろの識別番号を削除する方法などを採用しうる。
【００５７】
その後処理はステップＳ１７に戻って再度ビット列を生成し直した上で、誤検出検証処理を実施する。
【００５８】
一方、誤検出がなかった場合には、ビット列生成部３０４は、生成したビット列と、ビット列生成対象の識別番号の範囲を規定するデータ（例えば先頭識別番号及び末尾識別番号の組み合わせ。但し、先頭識別番号と末尾識別番号までのオフセット値との組み合わせ）とを含むＡＣＫパケットを生成して、送信部３０２に送信させる（ステップＳ２３）。
【００５９】
例えば図１７に示すようなＡＣＫパケットのデータ構成例を示す。図１７の例では、パケットタイプとして到達確認（ＡＣＫ）が指定されており、送信元ノードの識別子と、先頭識別番号と、末尾識別番号と、ビット列であるブルームフィルタとが含まれている。
【００６０】
そして、ビット列生成部３０４は、処理終了が指示された等の理由で処理終了するか判断する（ステップＳ２５）。処理終了ではない場合には、ビット列生成部３０４は、処理に係る送信元ノードについてデータ格納部３０６において、未処理パケット数のカウンタ値を、ビット列生成に用いた識別子の個数分だけ減分し、ビット列生成対象の識別番号を削除する（ステップＳ２７）。そして処理はステップＳ１１に戻る。
【００６１】
以上のような処理を実行することで、識別番号の誤検出無しを保証した上で多数のデータパケットのＡＣＫパケットを集約したＡＣＫパケットを１つ生成して送信できるようになる。すなわち、通信効率が向上する。
【００６２】
次に、転送ノード及び送信元ノードにおいてＡＣＫパケットを受信した際の処理について図１８乃至図２０を用いて説明する。なお、送信元ノード及び転送ノードにおいては、図１８に示すようなデータを、データ格納部に格納しているものとする。図１８の例では、データパケットのデータだけではなく、未処理の識別番号群を、送信元ノード毎（送信元ノードについては自ノード分のみ）に保持しているものとする。なお、ここでは、転送ノード２００を一例に説明するが、送信元ノード１００についてもデータ削除処理部１０６が同様の処理を実行することになる。
【００６３】
まず、転送ノード２００のデータ削除処理部２０５は、受信部２０３からＡＣＫパケットを受信するまで待機する（図１９：ステップＳ８１）。ＡＣＫパケットを受信すると、データ削除処理部２０５は、ＡＣＫパケットからデータの送信元ノードの識別子、先頭及び末尾識別番号、そしてビット列を抽出する（ステップＳ８３）。
【００６４】
また、データ削除処理部２０５は、抽出された送信元ノードの識別子についてデータ格納部２０６に格納されている未処理パケットの識別番号を抽出する（ステップＳ８５）。図１８に示すようなデータを読み出す。
【００６５】
その後、データ削除処理部２０５は、抽出された識別番号のうち未処理の識別番号を１つ選択する（ステップＳ８７）。そして、データ削除処理部２０５は、ＡＣＫパケットに含まれるビット列に基づき、選択された識別番号の包含判定を実行する（ステップＳ８９）。ブルームフィルタの場合、ｋ個のハッシュ関数のハッシュ値が示すビット位置の値が全て「１」であれば、ブルームフィルタ生成時の識別番号集合に包含されていたことが確認できる。従って、本ステップでも、ｋ個のハッシュ関数に、選択された識別番号を入力してハッシュ値を取得し、当該ハッシュ値が示すビット位置の値を確認し、全てのビット値が「１」であれば、包含と判定する。そして処理は端子Ａを介して図２０の処理に移行する。
【００６６】
図２０の処理の説明に移行して、データ削除処理部２０５は、選択された識別番号は包含されていると判定されたか判断する（ステップＳ９１）。包含されていないと判定された場合には、処理はステップＳ９５に移行する。一方、包含されていると判断された場合には、データ削除処理部２０５は、データ格納部２０６において、選択された識別番号のパケットのデータを削除する（ステップＳ９３）。到達確認ができた分だけキャッシュの容量を有効活用できるようになる。
【００６７】
そして、データ削除処理部２０５は、未処理の識別番号が存在するか判断する（ステップＳ９５）。未処理の識別番号が存在する場合には、端子Ｂを介してステップＳ８７に戻る。一方、未処理の識別番号が存在しない場合には、処理終了が明示的に指示されるまで、上で述べた処理を繰り返す（ステップＳ８７）。すなわち、処理終了でない場合には端子Ｃを介してステップＳ８１に戻る。
【００６８】
以上のような処理を実施することで、宛先ノードにデータパケットが到着したことを確認した上で、保持しているデータパケットを破棄できるようになる。これによってキャッシュが有効活用できるようになる。
【００６９】
上で述べた実施の形態では、ビット列としてブルームフィルタを用いる例を示した。ブルームフィルタを用いることで、多数のデータパケットを集約できるが、ブルームフィルタの性質から誤検出防止の処理を行うことになる。例えば、ＡＣＫパケットに含めることができるビット列のビット長に相当するデータパケットを集約すればよい場合には、ブルームフィルタを用いずとも良い。
【００７０】
例えば、ビット長がｍビットであれば、最大ｍデータパケットを集約できる。例えば、先頭識別番号「１１」で末尾識別番号「２３」であって、ビット列生成対象の識別番号が｛１１，１３，１５，１７，１９，２１，２３｝であれば、各識別番号について先頭識別番号からのオフセット位置に相当するビット位置を「１」にセットした「１０１０１０１０１０１０１」というビット列を採用するようにしても良い。すなわち、ビット列生成処理は、ビット列生成対象の識別番号から、先頭識別番号からのオフセット位置に相当するビット位置のビット値によってビット列生成対象の集合に包含されているか否かを確認するための所定長のビット列への写像となる。なお、ブルームフィルタを用いる場合においても、ビット列生成対象の識別番号からブルームフィルタに相当するビット列への写像とも言える。
【００７１】
この場合には、誤検出検証処理及びビット列生成対象の識別番号を調整する処理については行わずに済む。また、転送ノード及び送信元ノードについても、ビット列におけるビット位置が「１」か否かだけで包含判定ができるので、処理が簡易になる。
【００７２】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、機能ブロック図は、プログラムモジュール構成とは一致しない場合もある。データ構造例も一例にすぎず、同様の内容を保持する他のデータ構造を採用しても良い。
【００７３】
さらに、処理フローについても処理結果が変わらない限りにおいて処理ステップの順番を入れ替えたり、処理を並列実行するようにしても良い。
【００７４】
なお、上で述べた送信元ノード１００、転送ノード２００、宛先ノード３００は、コンピュータ装置であって、図２１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００７５】
以上述べた本実施の形態をまとめると、以下のようになる。
【００７６】
本実施の形態の第１の態様に係る到着確認メッセージ送信方法は、（Ａ）ある送信元ノードから受信されたデータの識別子の集合を、識別子が上記集合に包含されているか否かを確認するためのビット列に写像する処理と、（Ｂ）上記集合に含まれる識別子の範囲を規定するデータと上記ビット列とを含む到着確認メッセージを、ある送信元ノード宛に送信する処理とを含む。
【００７７】
このようにすれば到着確認メッセージを集約することができ、通信効率を上げることができるようになる。なお、メッセージは、どの階層レベルのメッセージ又はパケットであってもよい。
【００７８】
さらに、上で述べたビット列は、確率的データ構造であってもよい。そして、上で述べた写像する処理が、（ａ１）ビット列に基づき、上記識別子の範囲に含まれるが上記集合には含まれない識別子が、上記集合に含まれていることになっているか否かを検証する処理と、（ａ２）上記識別子の範囲に含まれるが上記集合には含まれない識別子が、上記集合に含まれていることになっている場合には、上記集合に含まれる識別子を削減してから上記ビット列を生成し直す処理とを含むようにしても良い。より多くのデータメッセージ又はデータパケットの集約を行うことができるようになる。
【００７９】
また、上で述べた写像する処理が、（ａ３）上記検証する処理と上記生成し直す処理とを、上記検証する処理において上記識別子の範囲に含まれるが上記集合には含まれない識別子が上記集合に含まれていると判断されることが無くなるまで繰り返す処理をさらに含むようにしても良い。
【００８０】
また、上で述べた写像する処理は、上記集合に含まれる識別子の範囲に含まれる識別子の数に対する上記集合に含まれる識別子の数の比率が、一定値以上となるように上記集合に含まれる識別子を特定する処理を含むようにしても良い。例えば、集約度合いを一定以上にすることで通信効率を上げ、また上記検証する処理を効率化するためである。
【００８１】
さらに、上で述べた特定する処理が、上記識別子の範囲に含まれる識別子のうち最後の識別子を削除する処理、又は上記識別子の範囲に含まれる識別子の間隔のうち最大の間隔が生じている部分で上記集合を分割する処理を含むようにしてもよい。
【００８２】
さらに、上で述べた生成し直す処理が、上記識別子の範囲に含まれる識別子のうち最後の識別子を削除する処理、上記識別子の範囲に含まれる識別子のうち先頭の識別子を削除した場合における新たな集合に含まれる識別子の第１の範囲と上記識別子の範囲に含まれる識別子のうち最後の識別子を削除した場合における新たな集合に含まれる識別子の第２の範囲とのうち狭い範囲を生じさせる識別子を削除する処理、又は、上記識別子の範囲に含まれる識別子の間隔のうち最も広い間隔以降の識別子を削除する処理を含むようにしても良い。
【００８３】
本技術の第２の態様に係るデータ削除方法は、（Ｃ）ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が上記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信する処理と、（Ｄ）ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、到着確認メッセージに含まれる上記データから特定される範囲に含まれる識別子を抽出する処理と、（Ｅ）上記ビット列に基づき、抽出された識別子が、上記集合に包含されているか否かを判断する処理と、（Ｆ）上記集合に包含されていると判断された識別子及び当該識別子についてのデータを、データ格納部から削除する処理とを含む。
【００８４】
このようにすればデータ格納部の容量を有効活用することができるようになる。
【００８５】
なお、上記処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００８６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８７】
（付記１）
ある送信元ノードから受信されたデータの識別子の集合を、識別子が前記集合に包含されているか否かを確認するためのビット列に写像し、
前記集合に含まれる識別子の範囲を規定するデータと前記ビット列とを含む到着確認メッセージを、前記ある送信元ノード宛に送信する
処理を、コンピュータに実行させるためのプログラム。
【００８８】
（付記２）
前記ビット列が、確率的データ構造であり、
前記写像する処理が、
前記ビット列に基づき、前記識別子の範囲に含まれるが前記集合には含まれない識別子が、前記集合に含まれていることになっているか否かを検証する処理と、
前記識別子の範囲に含まれるが前記集合には含まれない識別子が、前記集合に含まれていることになっている場合には、前記集合に含まれる識別子を削減してから前記ビット列を生成し直す処理と、
を含む付記１記載のプログラム。
【００８９】
（付記３）
前記写像する処理が、
前記検証する処理と前記生成し直す処理とを、前記検証する処理において前記識別子の範囲に含まれるが前記集合には含まれない識別子が前記集合に含まれていると判断されることが無くなるまで繰り返す処理
をさらに含む付記２記載のプログラム。
【００９０】
（付記４）
前記写像する処理は、
前記集合に含まれる識別子の範囲に含まれる識別子の数に対する前記集合に含まれる識別子の数の比率が、一定値以上となるように前記集合に含まれる識別子を特定する処理
を含む付記１乃至３のいずれか１つ記載のプログラム。
【００９１】
（付記５）
前記特定する処理が、
前記識別子の範囲に含まれる識別子のうち最後の識別子を削除する処理、又は前記識別子の範囲に含まれる識別子の間隔のうち最大の間隔が生じている部分で前記集合を分割する処理
を含む付記４記載のプログラム。
【００９２】
（付記６）
前記生成し直す処理が、
前記識別子の範囲に含まれる識別子のうち最後の識別子を削除する処理、前記識別子の範囲に含まれる識別子のうち先頭の識別子を削除した場合における新たな集合に含まれる識別子の第１の範囲と前記識別子の範囲に含まれる識別子のうち最後の識別子を削除した場合における新たな集合に含まれる識別子の第２の範囲とのうち狭い範囲を生じさせる識別子を削除する処理、又は、前記識別子の範囲に含まれる識別子の間隔のうち最も広い間隔以降の識別子を削除する処理
を含む付記２記載のプログラム。
【００９３】
（付記７）
ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が前記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信し、
前記ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、前記到着確認メッセージに含まれる前記データから特定される範囲に含まれる識別子を抽出し、
前記ビット列に基づき、抽出された前記識別子が、前記集合に包含されているか否かを判断し、
前記集合に包含されていると判断された識別子及び当該識別子についてのデータを、前記データ格納部から削除する
処理を、コンピュータに実行させるためのプログラム。
【００９４】
（付記８）
ある送信元ノードから受信されたデータの識別子の集合を、識別子が前記集合に包含されているか否かを確認するためのビット列に写像し、
前記集合に含まれる識別子の範囲を規定するデータと前記ビット列とを含む到着確認メッセージを、前記ある送信元ノード宛に送信する
処理を、コンピュータが実行する到着確認メッセージ送信方法。
【００９５】
（付記９）
ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が前記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信し、
前記ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、前記到着確認メッセージに含まれる前記データから特定される範囲に含まれる識別子を抽出し、
前記ビット列に基づき、抽出された前記識別子が、前記集合に包含されているか否かを判断し、
前記集合に包含されていると判断された識別子及び当該識別子についてのデータを、前記データ格納部から削除する
処理を、コンピュータが実行するデータ削除方法。
【００９６】
（付記１０）
ある送信元ノードから受信されたデータの識別子の集合を、識別子が前記集合に包含されているか否かを確認するためのビット列に写像するビット列生成部と、
前記集合に含まれる識別子の範囲を規定するデータと前記ビット列とを含む到着確認メッセージを、前記ある送信元ノード宛に送信する送信部と、
を有する情報処理装置。
【００９７】
（付記１１）
ある送信元ノードから受信されたデータの識別子の集合の範囲を規定するデータと、識別子が前記集合に包含されているか否かを確認するためのビット列とを含む到着確認メッセージを受信する受信部と、
前記ある送信元ノードについてのデータ及び当該データの識別子とを格納するデータ格納部から、前記到着確認メッセージに含まれる前記データから特定される範囲に含まれる識別子を抽出し、前記ビット列に基づき、抽出された前記識別子が、前記集合に包含されているか否かを判断し、前記集合に包含されていると判断された識別子及び当該識別子についてのデータを、前記データ格納部から削除する削除部と、
を有する情報処理装置。
【符号の説明】
【００９８】
１００  送信元ノード
１０１  通信インタフェース
１０２  送信部
１０３  受信部
１０４  データ生成部
１０５  ＩＤ生成部
１０６  データ削除処理部
１０７  データ格納部
２００  転送ノード
２０１  通信インタフェース
２０２  送信部
２０３  受信部
２０４  転送処理部
２０５  データ削除処理部
２０６  データ格納部
３００  宛先ノード
３０１  通信インタフェース
３０２  送信部
３０３  受信部
３０４  ビット列生成部
３０５  検証処理部
３０６  データ格納部
【図１】
2014060533.tif 000003
【図２】
2014060533.tif 000004
【図３】
2014060533.tif 000005
【図４】
2014060533.tif 000006
【図５】
2014060533.tif 000007
【図６】
2014060533.tif 000008
【図７】
2014060533.tif 000009
【図８】
2014060533.tif 000010
【図９】
2014060533.tif 000011
【図１０】
2014060533.tif 000012
【図１１】
2014060533.tif 000013
【図１２】
2014060533.tif 000014
【図１３】
2014060533.tif 000015
【図１４】
2014060533.tif 000016
【図１５】
2014060533.tif 000017
【図１６】
2014060533.tif 000018
【図１７】
2014060533.tif 000019
【図１８】
2014060533.tif 000020
【図１９】
2014060533.tif 000021
【図２０】
2014060533.tif 000022
【図２１】
2014060533.tif 000023