(57)【要約】【課題】データパケットの送信を受信側の特性に応じて最適化し、制御のリアルタイム性を考慮した動的なパケット単位の制御を実現する。【解決手段】データ受信装置が、受信するデータパケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、データ送信装置に送信する。データ送信装置は、送信されてきたバリュー定義情報を取得し、パケットフローに属するデータパケットを送信するとき、そのデータパケットのバリュー値を、バリュー定義情報に基づいて計算し、そのデータパケットの送信可否、又は、そのデータパケットの送信順を、そのデータパケットのバリュー値に基づいて制御する。【選択図】  図１３
2017225029.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してデータパケットをデータ送信装置からデータ受信装置に送信するデータ送受信方法であって、
前記データ受信装置が、受信するデータパケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、前記データ送信装置に送信する手順と、
前記データ送信装置が、前記送信されてきたバリュー定義情報を取得し、前記パケットフローに属するデータパケットを送信するとき、そのデータパケットのバリュー値を、前記バリュー定義情報に基づいて計算する手順と、
前記データ送信装置が、そのデータパケットの送信可否、又は、そのデータパケットの送信順を、そのデータパケットのバリュー値に基づいて制御する手順とを有することを特徴とするデータ送受信方法。
【請求項２】
さらに、前記データ送信装置が、前記データ受信装置からデータパケットの再送信要請を受けたとき、そのデータパケットのバリュー値に基づいて、そのパケットの再送可否、又は、そのデータパケットの送信順を制御する手順を有することを特徴とする請求項１記載のデータ送受信方法。
【請求項３】
前記データ送信装置が、データパケットを送信するためのリソース消費を示すコスト定義情報を有し、
さらに、前記コスト定義情報により、前記データパケットの送信のコストを計算する手順と、
前記データパケットを前記データ受信装置に送信するときに、そのデータパケットのバリュー値とコストを比較し、その結果に基づいて、前記パケットの送信可否を制御する手順とを有することを特徴とする請求項１記載のデータパケット送受信方法。
【請求項４】
前記データ受信装置は、前記データパケットの送信元アドレス、送信元ポート、送先アドレス、送信先ポート、又は、前記データ受信装置がデータを送信する装置の特性のいずれかに基づいて、前記バリュー定義情報を生成することを特徴とする請求項１記載のデータパケット送受信方法。
【請求項５】
前記バリュー定義情報は、既定の関数テンプレートとそのテンプレートに対応するパラメータの形式で保持されることを特徴とする請求項１記載のデータパケット送受信方法。
【請求項６】
前記バリュー定義情報は、前記データパケットが生成された時点からの時間経過を変数とする時間変数の関数であるか、又は、前記パケットが前記データ送信装置に到着した時点からの時間経過を変数とする時間変数の関数であることを特徴とする請求項１記載のデータパケット送受信方法。
【請求項７】
ネットワークを介してデータパケットをデータ送信装置からデータ受信装置に送信するデータ送受信システムであって、
前記データ受信装置が、受信するデータパケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、前記データ送信装置に送信し、
前記データ送信装置が、前記送信されてきたバリュー定義情報を取得し、前記パケットフローに属するデータパケットを送信するとき、そのデータパケットのバリュー値を、前記バリュー定義情報に基づいて計算し、
そのデータパケットの送信可否、又は、そのデータパケットの送信順を、そのデータパケットのバリュー値に基づいて制御することを特徴とするデータ送受信システム。
【請求項８】
さらに、前記データ送信装置が、前記データ受信装置からデータパケットの再送信要請を受けたとき、そのデータパケットのバリュー値に基づいて、そのパケットの再送可否、又は、そのデータパケットの送信順を制御することを特徴とする請求項７記載のデータ送受信システム。
【請求項９】
ネットワークを介してデータパケットをデータ送信装置からデータ受信装置に送信するデータ送受信システムであって、
さらに、制御装置を備え、
前記制御装置は、前記パケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、前記データ送信装置に送信し、
前記データ送信装置が、前記送信されてきたバリュー定義情報を取得し、前記パケットフローに属するデータパケットを送信するとき、そのデータパケットのバリュー値を、前記バリュー定義情報に基づいて計算し、
そのデータパケットの送信可否、又は、そのデータパケットの送信順を、そのデータパケットのバリュー値に基づいて制御することを特徴とするデータ送受信システム。
【請求項１０】
さらに、前記データ送信装置が、前記データ受信装置からデータパケットの再送信要請を受けたとき、そのデータパケットのバリュー値に基づいて、そのパケットの再送可否、又は、そのデータパケットの送信順を制御することを特徴とする請求項９記載のデータ送受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送受信システムに係り、特に、データパケットの受信側の特性に応じて、データパケットの送信制御を最適化するのに好適なデータ送受信システムに関する。
【背景技術】
【０００２】
従来のネットワークにおけるデータパケットの送受信では、ＴＣＰ（Transmission Control Protocol）をはじめ、送受信制御に関して送信側を中心に行ってきた。しかし、ネットワークの活用範囲が広がるに従い、データパケットの送受信のパターンが多様化し、送受信の制御は、必ずしも送信側で行うのは最適ではなくなりつつある。
【０００３】
一方、インターネット技術の進展に伴い、既存の情報関連機器以外の様々なモノもインターネットに介して情報交換と制御をするＩｏＴ（Internet of Things）技術が注目をあびている。ＩｏＴの送受信パターンの一つとして、エッジ側のセンサがゲートウェイに経由してデータを送信し、センタ側のシステムがそのデータを受信し、適切なアプリケーションソフトウェア（以下、単に「アプリ」ともいう）に処理させるものがある。この場合、センサが汎用的なものの場合も多く、実際送受信されるデータの使い道を把握しているセンタ側が送受信の制御を行うことが望ましい。
【０００４】
受信側が送信側に対して、送信動作を動的に制御する技術として、特許文献１がある。特許文献１の送受信方法では、受信端末内にある統計情報観測手段でデータパケットの送受信状況に関する統計情報を測定し、その統計情報に応じて誤り耐性変更要求送信手段により送信手段側へ誤り耐性変更を求める。そして、送信端末は、誤り能力交換手段により、受信端末と相互に使用することができる誤り耐性方式の情報をやりとりし、誤り耐性方式の切り替えを行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１４１９６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１は、受信側のパケットの統計情報に応じて、送信側の誤り耐性の制御の変更を要求する技術である。しかしながら、パケットが含むデータの価値が時間とともに変化するなど、制御のリアルタイム性を考慮していないという問題点かある。
【０００７】
一般的なデータパケット送受信制御技術では、制御対象の単位は、一定の時刻間隔の間にある特定のデータソースから特定の目的地へ送信される連続した複数のデータパケットの集合（以下、「パケットフロー」という）に留まり、同じパケットフローに属する個々のパケットに対して、個別の制御を実行できないという問題点があった。
【０００８】
本発明は、上記問題点を解決するためになされたもので、その目的は、データパケットの送信を受信側が特性に応じて最適化し、制御のリアルタイム性を考慮した動的なパケット単位の制御を実現することのできるデータ送受信システムを提供することにある。
【課題を解決するための手段】
【０００９】
上記問題点を解決するために、本発明のデータ送受信方法の構成は、ネットワークを介してデータパケットをデータ送信装置からデータ受信装置に送信するデータ送受信方法であって、データ受信装置が、受信するデータパケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、データ送信装置に送信する手順と、データ送信装置が、送信されてきたバリュー定義情報を取得し、パケットフローに属するデータパケットを送信するとき、そのデータパケットのバリュー値を、バリュー定義情報に基づいて計算する手順と、そのデータパケットの送信可否、又は、そのデータパケットの送信順を、そのデータパケットのバリュー値に基づいて制御する手順とを有するようにしたものである。
【発明の効果】
【００１０】
本発明によれば、データパケットの送信を受信側の特性に応じて最適化し、制御のリアルタイム性を考慮した動的なパケット単位の制御を実現することのできるデータ送受信システムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】第一の実施形態に係るデータ送受信システムのシステム構成図である。
【図２】第一の実施形態に係るデータ送信装置の構成図である。
【図３】第一の実施形態に係るデータ受信装置の構成図である。
【図４】データ送信装置１０２が保持するパケット制御テーブル２２１の例を示す図である。
【図５】バリュー関数情報テーブル２２２の例を示す図である。
【図６】モニタ情報テーブル３２２の例を示す図である。
【図７】バリュー関数実行プログラム２１２により実行される処理を示すフローチャートである。
【図８】パケット送信プログラム２１３により実行される処理を示すフローチャートである。
【図９】パケット受信プログラム２１４により実行される処理を示すフローチャートである。
【図１０】パケット送受信プログラム３１１の処理を示すフローチャートである。
【図１１】バリュー関数生成プログラム３１２の処理を示すフローチャートである。
【図１２】測定データ提供プログラム３１３の処理を示すフローチャートである。
【図１３】第一の実施形態のデータ送受信システム間のコンポーネント間のデータ送受信と全体の流れを示すシーケンス図である。
【図１４】第二の実施形態に係るデータ送受信システムのシステム構成図である。
【図１５】第二の実施形態に係るデータ送信装置の構成図である。
【図１６】第二の実施形態に係る制御装置の構成図である。
【図１７】データ送信装置１００２が保持するパケット制御テーブル１１２１の例を示す図である。
【図１８】バリュー関数情報テーブル１１２２の例を示す図である。
【図１９】パケットフロー情報テーブル１２２１の例を示す図である。
【図２０】パケットフロー情報取得プログラム１２１１により実行される処理を示すフローチャートである。
【図２１】パケット再送信プログラム１１１３により実行される処理を示すフローチャートである。
【図２２】第二の実施形態のデータ送受信システム間のコンポーネント間のデータ送受信と全体の流れを示すシーケンス図である。
【図２３】第三の実施形態に係るデータ送受信システムのシステム構成図である。
【発明を実施するための形態】
【００１２】
以下、本発明に係る各実施の形態を、図１から図２３を用いて説明する。
【００１３】
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１から図１３を用いて説明する。
【００１４】
本実施形態では、心電計と、データ送信装置と、データ受信装置と、モニタを含み、それぞれが通信路により接続されている心電図監視システムであって、データ送信装置は、通信路を経て心電計から取得したデータをデータパケットとしてデータ受信装置に送信する。データ受信装置は、受信するパケットに関わるモニタ（表示装置）の監視状況に基づき、個々のパケットの送信優先度を示すバリュー関数を生成し、通信路を介して制御情報を、データパケットの送信側に提示する。データ送信装置は、バリュー関数を取得し、パケットを送信しようとするとき、バリュー関数の計算結果に基づき、パケットの送信可否とパケットの送信順番を制御するものである。このバリュー関数の意義と、バリュー関数に基づくパケットの制御の詳細は、後述する。
【００１５】
先ず、図１から図３を用いて第一の実施形態に係るデータ送受信システムの構成について説明する。  
図１は、第一の実施形態に係るデータ送受信システムのシステム構成図である。  
図２は、第一の実施形態に係るデータ送信装置の構成図である。  
図３は、第一の実施形態に係るデータ受信装置の構成図である。
【００１６】
本実施形態のデータ送受信システムは、図１に示すように、心電計１０１と、データ送信装置１０２と、通信路１０３と、データ受信装置１０４と、モニタ１０５から構成される。データ送信装置１０２は、心電計１０１から心電図測定データ等を取得し、データパケットとして通信路１０３を介して、データ受信装置１０４に送信する。データ受信装置１０４は、受信したデータパケットから心電図測定データに基づく情報をモニタ１０５上に表示する。心電計１０１とデータ送信装置１０２は、有線あるいは無線により接続される独立した装置でもよいし、ネットワークに通じて送信できる心電計装置の構成機能の一部でもよい。データ受信装置１０４とモニタ１０５は、有線あるいは無線により接続される独立した装置でもよいし、ネットワークから受信したデータを表示できる心電図表示装置の構成機能の一部でもよい。
【００１７】
データ送信装置１０２は、図２に示されるように、メモリ２０１、ＣＰＵ２０２、ＩＯ  Ｉ／Ｆ２０３、通信Ｉ／Ｆ２０４、外部記憶装置２０５がバスにより接続された形態である。
【００１８】
本実施形態におけるデータ送信装置１０２は、一般的なコンピュータとして実現され、その機能は、外部記憶装置２０５にインストールされているプログラムソフトウェアが、メモリ２０１上に展開されて、ＣＰＵ２０２により実行されることにより実現される。また、データ送信装置１０２は、入出力インターフェース２０３、通信インターフェース２０４、あるいはその両方に介して心電計１０１と通信路１０３を介して接続されている。データ送信装置１０２のメモリ２０１は、データ取得プログラム２１１と、バリュー関数実行プログラム２１２と、パケット送信プログラム２１３と、パケット受信プログラム２１４を格納している。データ取得プログラム２１１は、心電計１０１からデータを取得するプログラムである。バリュー関数実行プログラム２１２は、バリュー関数に基づきデータパケットのバリュー情報を計算し、更新するプログラムである。パケット送信プログラム２１３は、通信路１０３を介して相手の装置にデータパケットを送信するプログラムである。パケット受信プログラム２１４は、通信路１０３を介して相手の装置からデータパケットを受信するプログラムである。
【００１９】
さらに、データ送信装置１０２のメモリ２０１は、パケット制御テーブル２２１と、バリュー関数情報テーブル２２２を格納している。パケット制御テーブル２２１は、送信するデータパケットの情報を保持するテーブルである。バリュー関数情報テーブル２２２は、バリュー関数に関する情報を保持するテーブルである。なお、パケット制御テーブル２２１とバリュー関数情報テーブル２２２の詳細は、後述する。
【００２０】
データ受信装置１０４は、図３に示されるように、メモリ３０１、ＣＰＵ３０２、ＩＯ  Ｉ／Ｆ３０３、通信Ｉ／Ｆ３０４、外部記憶装置３０５がバスにより接続された形態である。
【００２１】
本実施形態におけるデータ受信装置１０４は、図３に示されるように、一般的なコンピュータとして実現され、その機能は、外部記憶装置３０５にインストールされているプログラムソフトウェアが、メモリ３０１上に展開されて、ＣＰＵ３０２により実行されることにより実現される。
【００２２】
また、データ受信装置１０４は、入出力インターフェース３０３、あるいは通信インターフェース３０４、あるいはその両方により通信路１０３を介して、モニタ１０５と接続されている。データ受信装置１０４のメモリ３０１は、パケット送受信プログラム３１１と、バリュー関数生成プログラム３１２と、測定データ提供プログラム３１３を格納している。パケット送受信プログラム３１１は、通信路１０３を介して、相手装置とデータパケットを送受信するプログラムである。バリュー関数生成プログラム３１２は、モニタの監視状況に基づきバリュー関数を生成するプログラムである。測定データ提供プログラム３１３は、モニタ１０５にデータを提供するプログラムである。
【００２３】
さらに、データ受信装置１０４のメモリ３０１は、パケット制御テーブル３２１と、モニタ情報テーブル３２２を格納する。パケット制御テーブル３２１は、受信したデータパケットに関する情報を格納するテーブルである。モニタ情報テーブル３２２は、モニタにおける測定データの監視状況を格納するテーブルである。なお、パケット制御テーブル３２１と、モニタ情報テーブル３２２の詳細は、後述する。
【００２４】
なお、本実施形態のデータ送信装置１０２とデータ受信装置１０４では、実行するプログラム及びテーブルのデータを単一のコンピュータのメモリ上に格納して、ＣＰＵが参照する構成を示した。しかし、テーブルのデータを外部記憶装置に格納し、プログラムが処理のつど、テーブルのデータを外部記憶装置から読み込み、それぞれの処理が完了するごとに外部記憶装置に格納する構成を取ることも可能である。
【００２５】
また、プログラム及びテーブルのデータを複数のコンピュータに分散して格納することも可能である。例えば、テーブルのデータをそれぞれリレーショナルデータベースのテーブルとして実装して、データ送信装置１０２あるいはデータ受信装置１０４とは異なるデータベースサーバに格納し、外部記憶装置上で実行されるプログラムがデータベースサーバ上のテーブルのデータを参照したり、更新することも可能である。
【００２６】
次に、図４から図６を用いて第一の実施形態に係るデータ送受信システムで用いられるデータ構造について説明する。  
図４は、データ送信装置１０２が保持するパケット制御テーブル２２１の例を示す図である。
図５は、バリュー関数情報テーブル２２２の例を示す図である。
図６は、モニタ情報テーブル３２２の例を示す図である。
【００２７】
パケット制御テーブル２２２は、送信するデータパケットに関する情報を格納するテーブルであり、図３に示されるように、パケットＩＤ４０１と、生成時刻４０２と、待機中フラグ４０３と、バリュー情報４０４と、更新済みフラグ４０５と、パケットデータ４０６から成る。パケットＩＤ４０１は、データパケットの識別子を示すフィールドである。生成時刻４０２は、心電計１０１がデータパケットに含まれる測定データを生成した時刻を示すフィールドである。待機中フラグ４０３は、データパケットが待機中か否かのフラグを格納するフィールドである。バリュー情報４０４は、バリュー関数の計算結果を格納するフィールドである。更新済みフラグ４０５は、バリュー関数の計算経過を示すためにそのデータパケットに関するバリュー情報が更新されたか否かのフラグを格納するフィールドである。パケットデータ４０６は、そのパケットのデータを格納するフィールドである。なお、パケット制御テーブル２２１は、上の項目の他、データを計測した心電計１０１の情報を示す心電計情報等、データ送信装置１０２が情報を付与することのできる項目を追加することも可能である。
【００２８】
データ受信装置１０４が保持するパケット制御テーブル３２１のフォーマットは、パケット制御テーブル２２１と同じフォーマットでよい。また、パケット制御テーブル３２１は、待機中フラグ４０３と、バリュー情報４０４と、更新済みフラグ４０５等の情報が存在しない項目を不要とし、あるいは、データパケットの受信時刻を示す受信時刻等、データ受信装置１０４が情報を付与することのできる項目を追加することも可能である。
【００２９】
バリュー関数情報テーブル２２２は、データ送信装置１０２が保持し、パケットフローごとに送信を制御するバリュー関数の情報を格納するテーブルであり、図５に示されように、フローＩＤ５０１と、フロー判定条件５０２と、バリュー関数情報５０３から成る。フローＩＤ５０１は、パケットフローの識別子を示すフィールドである。フロー判定条件５０２は、データパケットがパケットフローに属する判定条件を示したフィールドである。バリュー関数情報５０３は、パケットフローに属するデータパケットに対して評価するバリュー関数に関する情報を格納するフィールドである。パケットフローとは、ある条件の元に複数のパケットを一つの集合としてまとめた概念である。例えば、図５に示される例では、ネットワークレイヤのＩＰヘッダの送信先のＩＰアドレスが、“１９２．１６８．０．１”であり、トランスポートレイヤのＵＤＰ（User Datagram Protocol）プロトコルにおける送信先ポートが、“１２３４５”のパケットが、フローＩＤ１のパケットフローに属することを意味する。
【００３０】
なお、フローＩＤ５０１は、説明の便のためのもので、テーブルに存在しなくてもよい。また、図５の例では、条件を説明する文字列を使ってフロー判定条件５０２を説明したが、それ以外にも、例えば、パケット制御テーブル２２１の一部の項目に対してかけあわせるバイナリマスクとその計算結果、あるいは判定に使われるプログラムコードやスクリプト等により定義することも可能である。
【００３１】
バリュー関数情報５０３には、適用対象である個々のデータパケットに対し、送信の可否と送信の優先度を示すバリュー関数に関する情報を定義する。例えば、図５の例では、フローＩＤ５０１が１のパケットフローに属するデータパケットに対し、ｖ＝ｍａｘ（０，１０−ｔ）というバリュー関数が適用される。この関数にある変数ｔとは、データパケットに含まれるデータの生成時刻４０２から、バリュー関数が計算される時刻までの経過時間である。すなわち、このバリュー関数は、このパケットフローに属するデータパケットのバリュー値が、データが生成する時刻においては、最大値１０で、１秒間に経過する毎にバリュー値が１減少し、１０秒後には０となる値をとるものである。したがって、このフローＩＤ５０１が１のパケットでは、生成まもないパケットのバリュー値が大きく、時間がたつにしたがって、減少していくことになる。また、図５の例では、フローＩＤ５０１が２のパケットフローに対し、ｖ＝８／（ｃｏｕｎｔ＋１）というバリュー関数が適用される。この関数にある変数ｃｏｕｎｔとは、データ送信装置１０２が過去の既定の時間間隔（例えば１秒間）中に、フローＩＤ５０１が２のパケットフローに属するデータパケットの送信数である。すなわち、このバリュー関数は、このパケットフローに属するデータパケットのバリュー値が、既定の時間間隔における、はじめて送信するデータパケットでは、ｃｏｕｎｔ＝０なので、最大値８となり、データパケット一つを送信する毎に減少することになる。したがって、フローＩＤ５０１が２のパケットフローに属するパケットでは、このパケットフローでの送信パケット数が大きくなるほど、バリュー値は下げられることになる。
【００３２】
このように、図５の例では、バリュー関数の数学表現の文字列を使って、バリュー関数情報５０３を説明したが、それ以外にも、例えば複数のバリュー関数の形式（テンプレート）が予め決まった場合、その形式（テンプレート）の識別子を示すテンプレＩＤとその形式を使うときのパラメータの組合せも可能である。また、計算に使われるプログラムコードやスクリプト等により定義することも可能である。
【００３３】
モニタ情報テーブル３２２は、データ受信装置１０４が保持し、測定データの送信を最適化するために、接続されたモニタ１０５に関する条件を格納するテーブルであり、図６に示されるように、モニタＩＤ６０１と、受信条件６０２と、モニタ特性６０３から成る。
【００３４】
モニタＩＤ６０１は、モニタの識別子を示すフィールドである。受信条件６０２は、受信するデータパケットの条件を示すフィールドである。モニタ特性６０３は、受信条件６０２を満たすデータパケットに対して、モニタ１０５に関する動作に関する特性を示すフィールドである。
【００３５】
図６の例では、モニタＩＤ６０１が１のモニタでは、受信条件６０２において、ＩＰヘッダの送信先アドレスが”１９２．１６８．０．１”、かつＵＤＰヘッダの送信先ポートが”１２３４５”のデータパケットが含むデータを受信し、その条件を満たすデータパケットに関しては、モニタ特性６０３に示されるように、モニタ１０５はデータの過去履歴を表示しないこと（ＤｉｓｐＨｉｓｔｏｒｙ＝ｆａｌｓｅ）、とモニタのデータ表示範囲は過去の１０秒間であること（ＤｉｓｐＴｉｍｅＲａｎｇｅ＝１０）を示している。
【００３６】
データ送信装置１０２が実施するデータ取得プログラム２１１は、入出力インターフェース２０３、通信インターフェース２０４、あるいはその両方を介して、心電計１０１が送信したデータを取得し、必要に応じてフォーマットを整えた上で、パケット制御テーブル２２１に記憶させる。
【００３７】
次に、図７から図１３を用いて第一の実施形態に係るデータ送受信システムの処理について説明する。
【００３８】
先ず、図７を用いてバリュー関数実行プログラム２１２により実行される処理について説明する。  
図７は、バリュー関数実行プログラム２１２により実行される処理を示すフローチャートである。
【００３９】
バリュー関数実行プログラム２１２は、データ送信装置１０２のＣＰＵ２０２が実行する。
先ず、ステップ７０２において、データ送信装置１０２は、パケットバッファ（図示しなかったが、メモリ２０１又は外部装置２０５の中にとられるデータパケットの格納領域）に格納されているデータパケットに対し、パケット制御テーブル２２１の待機中フラグ４０３の値が「Ｙ」（待機中）である全てのデータパケットの更新済みフラグ４０５の値を「Ｎ」（更新されていない）に設定する（ステップ７０１）。
【００４０】
次に、データ送信装置１０２は、パケット制御テーブル２２１に更新済みフラグ４０５の値が「Ｎ」であるデータパケットが存在するか否かを判定する（ステップ７０２）。更新済みフラグ４０５の値が「Ｎ」であるデータパケットが存在する場合（ステップ７０２：ＮＯ）、データ送信装置１０２は、パケット制御テーブルの更新済みフラグ４０５の値が「Ｎ」である最初のデータパケットを選択する（ステップ７０３）。
【００４１】
次に、データ送信装置１０２は、バリュー関数情報テーブル２２２に、ステップ７０４で選択されたデータパケットとフロー判定条件５０２が合致するパケットフローが存在するか否かを判定する（ステップ７０４）。合致するパケットフローが存在する場合（ステップ７０４：ＹＥＳ）、ステップ７０６において、データ送信装置１０２は、バリュー関数情報テーブル２２２の上から順に、最初に合致するパケットフローに対応するバリュー関数情報５０３を用いて、そのパケットのパケット制御テーブル２２１のバリュー情報４０４の値を更新する（ステップ７０５）。合致するパケットフローが存在しない場合（ステップ７０４：ＮＯ）、データ送信装置１０２は、データパケットのバリュー情報４０４の値を「Ｎ／Ａ（Not Applicable）」に設定する（ステップ７０７）。ステップ７０６とステップ７０７のいずれが実行された後、データ送信装置１０２は、データ制御テーブル２２１のパケットの更新済みフラグ４０５の値を「Ｙ」に設定して、ステップ７０３に戻る。
【００４２】
ステップ７０３において、更新済みフラグ４０５の値が「Ｎ」であるデータパケットが存在しない場合（ステップ７０３：ＮＯを、データ送信装置１０２は、ステップ７０９に進み、パケット制御テーブル２２１から、バリュー情報４０４の値が既定の閾値以下のパケットを削除し（ステップ７０９）、処理を終了する。
【００４３】
次に、図８を用いてパケット送信プログラム２１３により実行される処理について説明する。
図８は、パケット送信プログラム２１３により実行される処理を示すフローチャートである。
【００４４】
データ送信装置１０２は、パケット制御テーブル２２１に新たなデータパケットが登録される、あるいは、通信インターフェース２０４が送信可能な状態に移行する等をトリガーにして、パケット送信プログラム２１３を動作させる。
【００４５】
先ず、データ送信装置１０２は、パケット制御テーブル２２１に登録されているデータパケットに対して、待機中フラグ４０３の値が「Ｙ」であるデータパケットが存在するか否かを判定する（ステップ８０１）。送信待機中のデータパケットが存在しない場合（ステップ８０１：ＮＯ）、データ送信装置１０２は、パケット送信プログラム２１３を終了する。送信待機中のデータパケットが存在する場合（ステップ８０１：ＹＥＳ）、データ送信装置１０２は、バリュー関数実行プログラム２１２を実行する（ステップ８０２）。
【００４６】
次に、データ送信装置１０２は、パケット制御テーブル２２１のバリュー情報４０４の値が「Ｎ／Ａ」であるデータパケットが存在するか否かを判定する（ステップ８０３）。値が「Ｎ／Ａ」であるデータパケットが存在する場合（ステップ８０３：ＹＥＳ）、データ送信装置１０２は、データ概要パケットを作成し、通信インターフェース２０４に介してデータ受信装置１０４に送信する（ステップ８０４）。ここで、データ概要パケットは、フロー判定条件５０２の判定に用いられるようデータに関するものであり、パケット制御テーブル２２１の一部の項目を用いて作成されるパケットである。例えば、パケット制御テーブル２２１に格納された生成時刻４０２の情報と、パケットデータ４０６に記載されているパケットのヘッダ部分から作成されるパケットである。値が「Ｎ／Ａ」であるデータパケットが存在しない場合（ステップ８０３：ＮＯ）、データ送信装置１０２は、パケット制御テーブル２２１からバリュー情報４０４の値が一番高いデータパケットを通信インターフェース２０４に介してデータ受信装置１０４に送信し、そのデータパケットの待機中フラグ４０３を「Ｎ」にする（ステップ８０５）。
【００４７】
次に、データ送信装置１０２は、通信インターフェース２０４が次のデータパケットを送信可能な状況であるか否かを判定する（ステップ８０６）。次のデータパケットが送信可能である場合（ステップ８０６：ＹＥＳ）、データ送信装置１０２は、ステップ８０２に戻る。次のデータパケットを送信可能でない場合（ステップ８０６：ＮＯ）、データ送信装置１０２は、処理を終了する。
【００４８】
本実施形態では、ステップ８０５で示したように、バリュー値の評価の大きいパケットフローのパケットから送信されるため、バリュー値が送信のための優先度であるという意義を有する。
【００４９】
次に、図９を用いてパケット受信プログラム２１４により実行される処理について説明する。
図９は、パケット受信プログラム２１４により実行される処理を示すフローチャートである。
【００５０】
データ送信装置１０２が実施するパケット受信プログラム２１４は、通信インターフェース２０４に介して、データ受信装置１０４からの制御パケットを受信する（ステップ１００１）。
【００５１】
そして、データ受信装置１０４から受信した制御パケットの種別を判定し（ステップ１００２）、受信した制御パケットがパケットフローに対するバリュー関数を指定するパケットである場合（ステップ１００２：バリュー関数指定）、データ送信装置１０２は、バリュー関数情報テーブル２２２のフロー判定条件５０２に、制御パケットが指定するフロー判定条件と同じものが存在するときには、そのエントリのバリュー関数情報５０３のフィールドに指定されたバリュー関数の情報を書き込み、フロー判定条件５０２に、制御パケットが指定するフロー判定条件と同じものが存在しないときには、新規のエントリを作成し、そのバリュー関数情報５０３のフィールドに指定されたバリュー関数の情報を書き込む。受信した制御パケットが再送信要求である場合（ステップ１００２：再送信要求）、データ送信装置１０２は、指定されたデータパケットに該当するパケット制御テーブル２２１に、待機中フラグ４０３を「Ｙ」に設定し、パケット送信プログラム２１３を実行させる（ステップ１００４）。
【００５２】
次に、図１０を用いてパケット送受信プログラム３１１の処理について説明する。
図１０は、パケット送受信プログラム３１１の処理を示すフローチャートである。
【００５３】
データ受信装置１０４が実施するパケット送受信プログラム３１１は、通信インターフェース３０４に介して、データ送信装置１０２とパケットのやり取りを行う。
【００５４】
データ受信装置１０４は、通信インターフェース３０４から、データ送信装置１０２が送信したデータ概要パケットを受信した場合、バリュー関数生成プログラム３１２を起動させ（ステップ１１０１）、生成したバリュー関数を指定する制御パケットを通信インターフェース３０４に介して、データ送信装置１０２に送信する（ステップ１１０２）。また、データ受信装置１０４は、通信インターフェース３０４から、データ送信装置１０２が送信したデータパケットを受信した場合、データパケットの不着（ロス）が発生しているか否かを判定し（ステップ１１０３）、
データパケットのロスが発生していると判定したとき（ステップ１１０３：ＹＥＳ）、ロスが発生したデータパケットに対する再送信要求パケットを通信インターフェース３０４に介して、データ送信装置１０２に送信する（ステップ１１０４）。ここで、データパケットのロスは、データパケットが含む順番を示す番号などにより判定することができる。
【００５５】
次に、受信したデータパケットの情報をパケット制御テーブル３２１に記憶させる（１１０５）。
【００５６】
次に、図１１を用いてバリュー関数生成プログラム３１２の処理について説明する。
図１１は、バリュー関数生成プログラム３１２の処理を示すフローチャートである。
【００５７】
バリュー関数生成プログラム３１２は、データ受信装置１０４が実施するプログラムである。バリュー関数生成プログラム３１２は、パケット送受信プログラム３１１が受信したデータ概要パケットに対して、モニタ情報テーブル３２２から、受信条件６０２が合致するモニタのモニタ特性６０３に従って、バリュー関数を生成する（ステップ１２０１）。一例として、モニタ特性６０３の内容に、データの過去履歴を表示しない（ＤｉｓｐＨｉｓｔｏｒｙ＝ｆａｌｓｅ）、かつモニタのデータ表示範囲は過去の１０秒間である（ＤｉｓｐＴｉｍｅＲａｎｇｅ＝１０）ことが含まれるモニタが受信するパケットフローに対しては、データパケットに含まれるデータの生成時刻から、バリュー関数が計算される時刻までの経過時間が１０秒以上のパケットのバリューが一定の閾値（例えば、０）以下になるような関数（例えば、ｖ＝ｍａｘ（０，１０−ｔ）（図５のフローＩＤ１のエントリ参照）を生成する。また、モニタ特性６０３の内容に、モニタが自動解析に必要な最小データ頻度がｆ（正の整数値）であることが含まれるモニタが受信するパケットフローに対しては、それに対応する１／ｆの時間間隔中に送信する一つ目のデータパケットのバリューが最大値となり、かつその時間間隔中に送信するデータパケットの数によりデータパケットのバリューが減っていくような関数（図５のフローＩＤ２のエントリ参照）を生成する。
【００５８】
このようなモニタの特性から、バリュー関数を生成する手法は、モニタの特性とバリュー関数の対応表を参照することに作成する手法でもよいし、モニタの特性のパラメータの変化に応じて、バリュー関数が変化するようなテンプレートにより作成する手法であってもよい。
【００５９】
次に、図１２を用いて測定データ提供プログラム３１３の処理について説明する。
図１２は、測定データ提供プログラム３１３の処理を示すフローチャートである。
【００６０】
測定データ提供プログラム３１３は、データ受信装置１０４が実施するプログラムである。測定データ提供プログラム３１３は、パケット制御テーブル３２１からデータパケットのパケットデータ４０６からデータを取得し、必要に応じてフォーマットとデータの順番を整えた上で、モニタ１０５に提供する（ステップ１３０１）。
【００６１】
次に、図１３を用いて第一の実施形態のデータ送受信システム間のコンポーネント間のデータ送受信と全体の流れを説明する。
図１３は、第一の実施形態のデータ送受信システム間のコンポーネント間のデータ送受信と全体の流れを示すシーケンス図である。
【００６２】
データ受信装置１０４に接続されたモニタ１０５は、受信条件とモニタ特性等をデータ受信装置１０４に送信する（Ａ１００）。また、データ送信装置１０２に接続された心電計１０１は、測定データ等をデータ送信装置１０２に送信する（Ａ１０１）。
【００６３】
データ送信装置１０２は、データ取得プログラム２１１を実行させ、測定データからパケットを作成し、そのパケット情報をパケット制御テーブル２２１に格納し（ステップ９００）、パケット送信プログラム２１３を実行させる。
【００６４】
ここで、パケット送信プログラム２１３（図８）の処理ステップ８０２において、バリュー関数実行プログラム２１２を動作させた結果、バリュー関数実行プログラム２１２（図７）の処理ステップ７０４において、測定データＡ１０１に合致するパケットフローが存在しない判定されたとする。このときは、そのデータパケットのパケット制御テーブル２２１のバリュー情報４０４が「Ｎ／Ａ」に更新される。
【００６５】
次に、パケット送信プログラム２１３（図１０）の処理ステップ８０４において、データ送信装置１０２が作成したデータ概要パケットをデータ受信装置１０４に送信する（Ａ１０２）。
【００６６】
そして、データ受信装置１０４のパケット送受信プログラム３１１がデータ概要パケット９０３を受信し、バリュー関数生成プログラム３１２を実行させ（ステップ９０１）、その結果のバリュー関数情報、例えば、ｖ＝ｍａｘ（０，１０−ｔ）、をパケット送受信プログラム３１１がデータ送信装置１０２に送信する（Ａ１０３）。データ送信装置１０２のパケット受信プログラム２１４がバリュー関数９０４を受信し、バリュー関数情報テーブル２２２を更新し（ステップ９０２）、パケット送信プログラム２１３を実行させる。
【００６７】
その結果、測定データＡ１０１により生成されたデータパケットに合致するパケットフローが存在し、かつ、ｖ＝ｍａｘ（０，１０−ｔ）の例で、このデータパケットが最初のパケット（ｔが一番小さい）であると仮定するバリュー情報の値の一番大きいパケットになったとする。このときには、パケット送信プログラム２１３（図８）の処理ステップ８０５において、データ送信装置１０２は、パケット送信プログラム２１３によりこの新規データを含むデータパケット９０５をデータ受信装置１０４に送信する（Ａ１０４）。
【００６８】
そして、データ受信装置１０４は、パケット送受信プログラム３１１からデータパケットを受信し、測定データ提供プログラム３１３により、そのデータパケットから作られる心電図測定データをモニタ１０５に提供する（Ａ１０５）。
【００６９】
次に、心電計１０１は、続いて、測定データ等をデータ送信装置１０２に送信する（Ａ１０６）。データ送信装置１０２は、データ取得プログラム２１１を実行させ、データをパケット制御テーブル２２１に格納し（ステップ９０３）、パケット送信プログラム２１３を実行させ（ステップ９０４）、パケット送信プログラム２１３は、バリュー関数実行プログラム２１２を実行させる（ステップ９０５）。そして、パケット送信プログラム２１３（図８）の処理ステップ８０２において、バリュー関数実行プログラム２１２を実行させた結果、バリュー関数実行プログラム２１２（図７）の処理ステップ７０４において、測定データＡ１０６により生成されたデータパケットに合致するパケットフローが存在するとする。このとき、データパケットのパケット制御テーブル２２１のバリュー情報４０４が適切な値に更新される（ステップ９０６）。
【００７０】
次に、パケット送信プログラム２１３（図８）の処理ステップ８０５において、データ送信装置１０２がデータパケットをデータ受信装置１０４に送信する（Ａ１０７）。データ受信装置１０４は、パケット送受信プログラム３１１からデータパケットを受信し、測定データ提供プログラム３１３により、そのデータパケットから作られる心電図測定データをモニタ１０５に提供する（Ａ１０８）。
【００７１】
次に、心電計１０１は、ある原因により、データの生成から１５秒を経過した測定データ等をデータ送信装置１０２に送信したとする（Ａ１０９）。データ送信装置１０２はデータ取得プログラム２１１を実行させ、測定データから生成されるデータパケットをパケット制御テーブル２２１に格納し（ステップ９０７）、パケット送信プログラム２１３を実行させる。このときのデータパケットが、バリュー関数情報テーブル２２２のフローＩＤ１のデータフローに属すると仮定すると（適用される関数は、ｖ＝ｍａｘ（０，１０−ｔ）で、ｔ＝１５）、バリュー関数を適用すると、値が０となる。このような仮定の基で、このデータパケット送信プログラム２１３（図８）の処理ステップ８０２において、バリュー関数実行プログラム２１２を実行させると（ステップ９０８）、バリュー関数実行プログラム２１２（図７）の処理ステップ７０９において、測定データ１０９から生成されたデータパケットのバリュー情報の値が既定の閾値０以下になるため、パケットを削除し、そのパケットのパケット制御テーブルのエントリも削除される（ステップ９０９）。その結果、パケット制御テーブル２２１に送信待機中のデータパケットが存在しなくなり、パケット送信プログラム３１１の処理は終了する。
【００７２】
このように、本実施形態では、心電計、データ送信装置、データ受信装置、モニタを含む心電図監視システムにおいて、データ送信装置は、通信路を介して、心電計から取得した測定データからデータパケットを生成して、データ受信装置に送信する。データ受信装置は、受信するパケットに関わるモニタの監視状況に基づき、個々のパケットの送信優先度を示すバリュー関数を生成し、データパケットの送信側に提示する。データ送信装置は、その情報に基づき、バリュー関数を取得し、パケットを送信しようとするとき、バリュー関数の計算結果に基づき、パケットの送信可否とパケットの送信順番を制御する。これにより、データパケットの受信側が送信側に対して、制御のリアルタイム性を考慮した、動的にパケット単位の制御を行うことが可能となる。そして、データの利用環境に従って作成したバリュー関数を用いた制御により、受信側がすでに不要となったデータを送信側が送信しないことにより、帯域利用のむだを削減する、あるいは、受信側が必要とする最低データ頻度の送信を優先することにより、データ分析の品質向上をする等、様々なメリットを得ることが可能となる。
【００７３】
なお、本実施形態において、データ送信装置１０２とデータ受信装置１０４の間の制御パケット通信が使用するパケットのフォーマットについて、既存のネットワーク通信標準に従ったフォーマットあるいはそれを拡張したものを使用することができる。その一例として、ＨＴＴＰ（Hyper−Text  Transfer  Protocol）、ＲＴＣＰ（RTP  Control  Protocol）、ＪＳＯＮ（JavaScript(登録商標)  Object  Notation）、ＯＦＰ（OpenFlow  Switch  Protocol）等を使用することができる。また、一つのデータ送信装置１０２、あるいは、データ受信装置１０４は複数の通信パケットフォーマットを用いて通信することが可能である。また、一つのデータ送信装置１０２、あるいは、データ受信装置１０４は、同時に複数のデータ受信装置１０４あるいはデータ送信装置１０２と、制御パケットを通信することができる。
【００７４】
また、本実施形態では、データ送信装置１０２は、バリュー関数情報が存在しないパケットフローに対し、データ概要パケットを作成し、データ受信装置１０４に送信して対応するバリュー関数を取得する。しかし、こういったバリュー関数の取得方法以外でも、データ送信装置１０２がバリュー関数情報の存在しないパケットフローの最初のデータパケットそのものをデータ受信装置１０４に送信し、バリュー関数を取得することも可能である。その場合、データ送信装置１０２は、データパケットを新規のパケットヘッダのみを送信する、あるいは、そのデータパケットの内容の一部を変更したパケットを送信するなどの手段により、データ受信装置１０４にバリュー関数の取得請求を明示することもできる。
【００７５】
また、本実施形態では、モニタ１０５から受けた指示情報であるモニタ情報を格納するために、データ受信装置１０４にモニタ情報テーブル３２２が存在する。しかし、データ受信装置１０４がモニタ１０５からの指示情報を記憶せず、新しいパケットフローを受信するたびに、モニタ１０５からそれに対応する指示情報を取得することも可能である。
【００７６】
また、本実施形態では、同じフロー判定条件５０２のバリュー関数を指定し、データ送信装置１０２のバリュー関数情報テーブル２２２を上書きすることにより、過去のバリュー関数を無効化する。しかし、こういったバリュー関数を無効化する方法以外でも、データ受信装置１０４がバリュー関数を提示時にその有効期間を明示的に提示する、あるいは、心電計１０１からパケットフローの終了を明示的に提示する等の手法を使って、過去のバリュー関数を無効化することも可能である。
【００７７】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図１４から図２２を用いて説明する。
【００７８】
本実施形態では、車載センサと、データ送信装置と、データ受信装置と、制御装置と、アプリエージェントを含む車載センサ情報収集システムにおいて、制御装置は、データ受信装置から、データパケットに関する情報を取得し、パケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、データ送信装置に提示し、データ送信装置は、バリュー定義情報を取得する。そして、制御装置は、データ受信装置から再送の要請を受けたとき、バリュー定義情報の計算結果に基づき、パケットの再送可否、パケットの再送順番、あるいは、その両方を制御することを特徴とする。そのため、本実施形態では、既存のネットワークを変更せず、データ受信装置に制御機能を追加することなく、送信側に対して、制御のリアルタイム性を考慮した、動的にパケット単位の制御を行うことができる。
【００７９】
先ず、図１４から図１６を用いて第二の実施形態に係るデータ送受信システムの構成について説明する。  
図１４は、第二の実施形態に係るデータ送受信システムのシステム構成図である。
図１５は、第二の実施形態に係るデータ送信装置の構成図である。
図１６は、第二の実施形態に係る制御装置の構成図である。
【００８０】
なお、本実施形態では、第一の実施形態と異なる所のみを強調して説明することとする。
【００８１】
本実施形態のシステム構成は、図１４に示すように、車載センサ１００１と、データ送信装置１００２と、通信路１０３と、制御装置１００３と、データ受信装置１００４と、アプリエージェント１００５から構成される。データ送信装置１００２は、車載センサ１００１から自動車、あるいは、その周辺情報の測定データ等を取得して、データパケットとして通信路１０３を介してデータ受信装置１００４に送信する。制御装置１００３は、データ受信装置１００４から、データパケットに関する情報を取得し、パケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、直接あるいはデータ受信装置１００４経由でデータ送信装置１００２に、そのバリュー定義情報を提示する。データ受信装置１００４は、受信したデータパケットから測定データ等をアプリエージェント（図では、単に「アプリ」と表示）１００５に提供し、その概要情報を、例えばＳＮＭＰ（Simple Network Management Protocol）を利用して、制御装置１００３に提供する機能を有する。アプリエージェント１００５は、車載センサ１００１から収集した測定データに基づいて、分析・制御等を行う。制御装置１００３とアプリエージェント１００５の間には、直接あるいはデータ受信装置１００４経由で、情報の疎通を行う。また、制御装置１００３と、データ受信装置１００４と、アプリエージェント１００５とは、有線あるいは無線により接続される独立した装置でもよいし、分析・制御を行うデータセンタあるいはクラウドにおける装置等のリソースの一部でもよい。
【００８２】
データ送信装置１００２は、図１５に示されるように、第一の実施形態と同様にメモリ１１０１、ＣＰＵ１１０２、ＩＯ  Ｉ／Ｆ１１０３、通信Ｉ／Ｆ１１０４、外部記憶装置１１０５がバスにより接続された形態である。
【００８３】
データ送信装置１００２のメモリ１１０１は、データ取得プログラム１１１０と、パケット送信プログラム１１１１と、バリュー関数実行プログラム１１１２と、パケット再送信プログラム１１１３と、パケット受信プログラム１１１４と、コスト関数計算プログラム１１１５を格納している。
【００８４】
さらに、データ送信装置１００２のメモリ１１０１は、パケット制御テーブル１１２１と、バリュー関数情報テーブル１１２２を格納している。
【００８５】
データ取得プログラム１１１０は、車載センサ１００１から測定データ等を取得するプログラムである。パケット送信プログラム１１１１は、通信路１０３を介して相手の装置にデータパケットを送信するプログラムである。バリュー関数実行プログラム１１１２は、バリュー関数に基づきデータパケットのバリュー情報を計算し、更新するプログラムである。パケット再送信プログラム１１１３は、一度送信に失敗したデータパケットを再送信するプログラムである。パケット受信プログラム１１１４は、通信路１０３を介してデータパケットを受信するプログラムである。コスト関数計算プログラム１１１５は、データパケットを送信するコストを計算するプログラムである。
【００８６】
さらに、データ送信装置１００２のメモリ１１０１は、第一の実施形態同様に、パケット制御テーブル１１２１と、バリュー関数情報テーブル１１２２を格納する。パケット制御テーブル１１２１は、送信するデータパケットに関する情報を保持するテーブルである。バリュー関数情報テーブル１１２２は、バリュー関数情報に関する情報を保持するテーブルである。
【００８７】
制御装置１００３は、図１６に示されるように、ＣＰＵ１２０２、ＩＯ  Ｉ／Ｆ１２０３、通信Ｉ／Ｆ１２０４、外部記憶装置１２０５がバスにより接続された形態である。
【００８８】
本実施形態における制御装置１００３は、一般的なコンピュータとして実現され、その機能は、外部記憶装置１２０５にインストールされているプログラムソフトウェアが、メモリ１２０１上に展開されて、ＣＰＵ１２０２により実行されることにより実現される。また、制御装置１００３は入出力インターフェース１２０３、通信インターフェース１２０４、あるいはその両方を介してデータ受信装置１００４と接続されている。制御装置１００３のメモリ１２０１は、パケットフロー情報取得プログラム１０１１と、バリュー関数生成プログラム１２１２を格納している。パケットフロー情報取得プログラム１０１１は、データ受信装置１００４を介してパケットフローの情報を取得するプログラムである。バリュー関数生成プログラム１２１２は、アプリエージェント１００５の指令に基づきバリュー関数を生成するプログラムである。
【００８９】
さらに、制御装置１００３のメモリ１２０１は、パケットフロー情報テーブル１２２１を格納している。パケットフロー情報テーブル１２２１は、取得したパケットフローの情報を保持するテーブルである。
【００９０】
次に、図１７から図１９を用いて第二の実施形態に係るデータ送受信システムで用いられるデータ構造について説明する。
図１７は、データ送信装置１００２が保持するパケット制御テーブル１１２１の例を示す図である。
図１８は、バリュー関数情報テーブル１１２２の例を示す図である。
図１９は、パケットフロー情報テーブル１２２１の例を示す図である。
【００９１】
パケット制御テーブル１１２１は、第一の実施形態と同様に、送信するデータパケットに関する情報を格納するテーブルであり、図１７に示されるように、パケットＩＤ１３０１と、初回送信時刻１３０２と、再送信フラグ１３０３と、バリュー情報１３０４と、更新済みフラグ１３０５と、パケットデータ１３０６から成る。
【００９２】
第一の実施形態と比較して、初回送信時刻１３０２と、再送信フラグ１３０３のみが異なっている。これは、本実施形態では、データパケットの再送信という観点から、データパケットの送受信を制御することによるものである。初回送信時刻１３０２は、データパケットが最初にデータ送信装置１００２により送信される時刻を示すフィールドである。再送信フラグ１３０３は、データパケットの再送信要求状況を示すフィールドである。
【００９３】
バリュー関数情報テーブル２２２は、第一の実施形態と同様に、データ送信装置１００２が保持し、パケットフローごとに送信を制御するバリュー関数の情報を格納するテーブルであり、図１８に示されように、フローＩＤ１４０１と、フロー判定条件１４０２と、テンプレートバリュー関数１４０３から成る。
【００９４】
第一の実施形態と比較して、バリュー関数の表現が異なっている。本実施形態のバリュー関数情報テーブル２２２では、バリュー関数を、テンプレートＩＤ１４０３と、パラメータ１４０４の組合せで指定する。
【００９５】
テンプレートＩＤ１４０３は、バリュー関数を生成するためのパラメータをはめ込むテンプレート形式を格納するフィールドである。パラメータ１４０４は、テンプレートにはめ込むための可変のパラメータ値を格納するフィールドである。
【００９６】
テンプレートＩＤ１４０３とパラメータ１４０４の組合せにより、バリュー情報を計算するバリュー関数が確定する。例えば、図１８の例では、フローＩＤ１４０１が１のパケットフローに属するデータパケットに対し、予め決まったＳＴＥＰ関数（ＳＴＥＰ（ｔ）＝ｍａｘ（０，ａ−ｂ＊ｔ））という関数の形式が適用され、それを使う時、関数のパラメータは、ａ＝１０とｂ＝１として適用される。すなわち、ＳＴＥＰ（ｔ）＝ｍａｘ（０，１０−ｔ）というバリュー関数が適用される。また、図１８の例では、バリュー関数情報テーブル１１２２の最終のエントリに記載されているフロー判定条件１４０２「＊」（フロー判定条件が定義されているもの以外）は、デフォルトの適用であること、すなわち、他のフロー判定条件１４０２に適用されないパケットフローに対し、このエントリのデフォルトバリュー関数が適用されることを意味する。図１８の例では、デフォルトバリュー関数は、ＦＬＡＴ関数（ＦＬＡＴ＝ａ）で、パラメータはａ＝１である。すなわち、ＦＬＡＴ＝１というバリュー関数が適用される。
【００９７】
パケットフロー情報テーブル１２２１は、制御装置１００３上で、既存のパケットフローに関する情報を保持するテーブルであり、図１９に示されるように、最終受信時刻１５０１と、送信元アドレス１５０２と、受信先アドレス１５０３と、プロトコル１５０４と、送信元ポート１５０５と、受信先ポート１５０６から成る。
【００９８】
最終受信時刻１５０１は、パケットフローの最終パケットの受信時刻を示すフィールドである。送信元アドレス１５０２は、送信元のネットワークレイヤアドレス（ＩＰアドレス）を示すフィールドである。受信先アドレス１５０３は、受信先のネットワークレイヤアドレス（ＩＰアドレス）を示すフィールドである。プロトコル１５０４は、パケットフローのトランスポートレイヤプロトコル（ＴＣＰ（Transmission Control Protocol）／ＵＤＰ）を示すフィールドである。送信元ポート１５０５は、送信元のトランスポートレイヤポートを示すフィールドである。受信先ポート１５０６は、受信先のトランスポートレイヤポートを示すフィールドである。
【００９９】
パケットフロー情報は、上記の例以外にも、一定の時刻間隔の間にある特定なデータソースから特定の目的地に送信するデータパケットの連続を特定できるなどを記録した情報からも構成することが可能である。
【０１００】
次に、図２１及び図２２を用いて第二の実施形態に係るデータ送受信システムの処理について説明する。
【０１０１】
データ送信装置１００２におけるデータ取得プログラム１１１０、パケット送信プログラム１１１１、バリュー関数実行プログラム１１１２、パケット受信プログラム１１１４は、それぞれ、図２に示したデータ送信装置１０２におけるデータ取得プログラム２１１、バリュー関数実行プログラム２１２、パケット送信プログラム２１３、パケット受信プログラム２１４と同様の処理を行う。
【０１０２】
また、コスト関数計算プログラム１１１５は、後に述べるように、再送信プログラムのサブルーチンとして実行される。
【０１０３】
制御装置１００３におけるバリュー関数生成プログラム１２１２は、第一の実施形態のデータ受信装置のバリュー関数生成プログラム３１２と同様の処理を行う。
【０１０４】
次に、図２０を用いてパケットフロー情報取得プログラム１２１１の処理について説明する。
図２０は、パケットフロー情報取得プログラム１２１１により実行される処理を示すフローチャートである。
【０１０５】
パケットフロー情報取得プログラム１２１１は、制御装置１００３において実行されるプログラムである。
【０１０６】
パケットフロー情報取得プログラム１２１１は、データ受信装置１００４から、パケットフロー概要情報を受信し、その情報をパケットフロー情報テーブル１２２１に格納する（ステップ１４０１）。
【０１０７】
次に、図２１を用いてパケット再送信プログラム１１１３により実行される処理について説明する。
図２１は、パケット再送信プログラム１１１３により実行される処理を示すフローチャートである。
【０１０８】
データ送信装置１００２は、データ受信装置１００４からのデータパケットの再送信要求の受信をトリガーに、パケット再送信プログラム１１１３を実行する。
【０１０９】
データ送信装置１００２は、パケット制御テーブル１１２１の再送信フラグ１３０３の値が「Ｙ」であるデータパケットが存在するか否かを判断する（ステップ１６０１）。再送信フラグ１３０３の値が「Ｙ」であるデータパケットが存在しない場合（ステップ１６０１：ＮＯ）、データ送信装置１００２は、処理を終了する。再送信フラグ１３０３の値が「Ｙ」であるデータパケットが存在する場合（ステップ１６０１：ＹＥＳ）、ステップ１６０３に進み、データ送信装置１００２は、コスト関数計算プログラム１１１５を実行する（ステップ１６０２）。コスト関数計算プログラム１１１５は、この時点において、一つのデータパケットを送信するための電力や帯域などのリソース消費を示す送信コストを計算し、計算した送信コストをパケット再送信プログラム１１１３に提示する。
【０１１０】
次に、データ送信装置１００２は、バリュー関数計算プログラム１１１２を実行し（ステップ１６０３）、パケット制御テーブル１１２１の情報が記載された再送信データパケットのバリュー情報１３０４を更新する。
【０１１１】
そして、データ送信装置１００２は、送信コストとバリュー情報１３０４を比較し、パケット制御テーブル１１２１にある再送データパケットのバリュー情報１３０４の一番大きい値が送信コストより大きいか否かを判断する（ステップ１６０４）。
【０１１２】
送信コストの方が大きい場合（ステップ１６０４：ＮＯ）、データ送信装置１００２は、処理を終了し、次の送信可能な機会を待つ。再送データパケットのバリュー情報１３０４の値が大きい場合（ステップ１６０４：ＹＥＳ）、データ送信装置１００２は、パケット制御テーブル１１２１にある再送データパケットのバリュー情報１３０４の値が一番大きいデータパケットを通信インターフェース１１０４に介して、データ受信装置１００４に送信する（ステップ１６０５）。
【０１１３】
以上のように、本実施形態では、データパケットを再送信する場合には、バリュー関数により評価したバリュー値の一番大きいデータパケットを送信し、かつ、コストがそれに見合わない場合には、再送信をあえて行わないようにするものである。これにより、再送信のためのリソース消費に見合った現実的な送信制御が可能とする。
【０１１４】
次に、データ送信装置１００２は、通信インターフェース１１０４が次のデータパケットを送信可能な状況であるかを判定する（ステップ１６０６）。次のデータパケットを送信可能である場合（ステップ１６０６：ＹＥＳ）、データ送信装置１００２は、ステップ１６０２に戻る。次のデータパケットを送信可能でない場合、データ送信装置１００２は、処理を終了する。
【０１１５】
次に、図２２を用いてデータ送受信システム間のコンポーネント間のデータ送受信と全体の流れを説明する。
図２２は、第二の実施形態のデータ送受信システム間のコンポーネント間のデータ送受信と全体の流れを示すシーケンス図である。
【０１１６】
アプリエージェント１００５は、受信条件等を制御装置１００３に送信する（Ａ２００）。受信条件等の情報は、後に、バリュー関数情報テーブル１１２２に情報を設定するときに用いられる。
【０１１７】
また、データ送信装置１０２に接続された車載センサ１００１は、計測データ等をデータ送信装置１０２に送信する（Ａ２０１）。
【０１１８】
データ送信装置１００２は、データ取得パケットプログラム１１１０を実行させ、計測データからパケットを作成し、そのパケット情報をパケット制御テーブル１１２１に格納し（ステップ２０００）、パケット送信プログラム１１１１を実行させ、データパケットをデータ受信装置１００４に送信する（Ａ２０２）。
【０１１９】
データ受信装置１００４は、一定の時間間隔あるいは他の条件が満たされた場合、受信されたパケットフローの概要情報を制御装置１００３に提示する（Ａ２０３）。パケットフローの概要情報は、図１９に示したパケットフロー情報テーブル１２２１に格納されるような内容の情報である。
【０１２０】
制御装置１００３は、パケットフロー情報取得プログラム１２１１を実行させ、パケットフロー概要情報をパケットフロー情報テーブル１２２１に格納する（ステップ２００１）。そのとき、パケットフロー情報テーブル１２２１に存在しなかった新規パケットフローがあれば、バリュー関数生成プログラム１２１２を実行させ（ステップ２００２）、アプリエージェント１００５からの受信条件（Ａ２００）に基づき、新規パケットフローの再送の際に用いられるバリュー関数情報を生成し、データ送信装置１００２に送信する（Ａ２０４）。そして、データ送信装置１００２は、バリュー関数情報テーブル１１２２を更新する（ステップ２００３）。
【０１２１】
通常のルートでは、車載センサ１００１から、計測データがデータ送信装置１００２に送られ（Ａ２０５）、データ送信装置１００２は、それに基づいて、データパケットをデータ受信装置１００４に送り（Ａ２０６）、データ受信装置１００４は、それをアプリエージェント１００５に転送する（Ａ２０７）。
【０１２２】
しかしながら、データ送信装置１００２からデータ受信装置１００４へのデータパケットの送受信中、データ受信装置１００４が、データパケットを受信した場合、データパケットが含む順番を示す番号などにより、データパケットの不着（ロス）が発生したと判断する場合（Ａ２０８）、ロスが発生したデータパケットに対する再送信要求パケットを、データ送信装置１００２に送信する（Ａ２０９）。データ送信装置１００２は、パケット受信プログラム１１１４により、データパケットに対する再送信要求を受信した場合、パケット制御テーブル１１２１に対応するデータパケットの再送信フラグ１３０３の値を「Ｙ」に設定し（ステップ２００４）、パケット再送信プログラム１１１３を実行させ（ステップ２００５）、データパケットの再送信を行う（Ａ２１０）。データ受信装置１００４は、再送信されたパケットを正常に受信したときには、それをアプリエージェント１００５に転送する（Ａ２１１）。
【０１２３】
本実施形態では、データパケットの受信側がデータ受信装置のパケットフローの概要情報を制御装置に提供して、制御装置がバリュー関数情報をデータ送信装置に教えるようにした。そのため、ネットワークの構造とデータ受信装置の大幅な変更を不要であり、制御装置の追加をすることのみで、送信側に対して、制御のリアルタイム性と、再送信のためのリソース消費を考慮したパケット単位の制御を行うことが可能となる。
【０１２４】
〔実施形態３〕
以下、本発明に係る第三の実施形態を、図２３を用いて説明する。
【０１２５】
本実施形態では、車載センサと、データ送信装置と、データ受信装置と、制御装置、ＴＡＰ装置と、アプリエージェントを含む車載センサ情報収集であって、制御装置は、ＴＡＰ装置から、データパケットに関する情報を取得する。そして、パケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、データ送信装置に提示する。データ送信装置は、バリュー定義情報を取得し、データ受信装置から再送の要請を受けたとき、バリュー定義情報の計算結果に基づき、パケットの再送可否あるいはパケットの再送順番あるいはその両方を制御する。そのため、本実施形態では、既存のデータ受信装置に制御機能を追加することなく、送信側に対して、制御のリアルタイム性を考慮した動的なパケット単位の制御を行うことができる。
【０１２６】
以下、図２３を用いて第三の実施形態に係るデータ送受信システムの構成について説明する。
図２３は、第三の実施形態に係るデータ送受信システムのシステム構成図である。
【０１２７】
なお、本実施形態では、第二の実施形態と異なる部分を中心に説明する。
【０１２８】
本実施形態のシステム構成は、車載センサ１００１と、データ送信装置１００２と、通信路１０３と、制御装置１７０１と、ＴＡＰ装置１７０２と、データ受信装置１００４と、アプリエージェント１００５から構成される。
【０１２９】
制御装置１７０１は、ＴＡＰ装置１７０２から、データパケットに関する情報を取得し、パケットが属するパケットフローに対し、個々のパケットの送信優先度を示すバリュー定義情報を生成し、直接あるいはＴＡＰ装置１７０２経由でデータ送信装置１００２に提示する。ＴＡＰ装置１７０２は、ネットワークから送受信データパケットを取得できる装置であり、一例としてＤＰＩ（Deep Packet Inspection）装置や、ポートミラーリング機能を有するスイッチやルータがそれに該当する。
【０１３０】
本実施形態によれば、データ受信装置の変更は不要であり、ＴＡＰ装置と制御装置の追加をすることにより、送信側に対して、制御のリアルタイム性と、再送信のためのリソース消費を考慮したパケット単位の制御を行うことが可能となる。
【符号の説明】
【０１３１】
１０１…心電計
１０２…データ送信装置
１０３…通信路
１０４…データ受信装置
１０５・ｃｊタ
１００１…車載センサ
１００３…制御装置
１００５…アプリエージェント
１７０１…制御装置
１７０２…ＴＡＰ装置
【図１】
2017225029.tif 000003
【図２】
2017225029.tif 000004
【図３】
2017225029.tif 000005
【図４】
2017225029.tif 000006
【図５】
2017225029.tif 000007
【図６】
2017225029.tif 000008
【図７】
2017225029.tif 000009
【図８】
2017225029.tif 000010
【図９】
2017225029.tif 000011
【図１０】
2017225029.tif 000012
【図１１】
2017225029.tif 000013
【図１２】
2017225029.tif 000014
【図１３】
2017225029.tif 000015
【図１４】
2017225029.tif 000016
【図１５】
2017225029.tif 000017
【図１６】
2017225029.tif 000018
【図１７】
2017225029.tif 000019
【図１８】
2017225029.tif 000020
【図１９】
2017225029.tif 000021
【図２０】
2017225029.tif 000022
【図２１】
2017225029.tif 000023
【図２２】
2017225029.tif 000024
【図２３】
2017225029.tif 000025