[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP7448014B2 - 通信装置及び通信方法 - Google Patents

通信装置及び通信方法 Download PDF

Info

Publication number
JP7448014B2
JP7448014B2 JP2022542863A JP2022542863A JP7448014B2 JP 7448014 B2 JP7448014 B2 JP 7448014B2 JP 2022542863 A JP2022542863 A JP 2022542863A JP 2022542863 A JP2022542863 A JP 2022542863A JP 7448014 B2 JP7448014 B2 JP 7448014B2
Authority
JP
Japan
Prior art keywords
data
application
processing unit
connection request
receiving
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.)
Active
Application number
JP2022542863A
Other languages
English (en)
Other versions
JPWO2022034896A1 (ja
JPWO2022034896A5 (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.)
Toyota Motor Corp
Original Assignee
Toyota Motor 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 Toyota Motor Corp filed Critical Toyota Motor Corp
Publication of JPWO2022034896A1 publication Critical patent/JPWO2022034896A1/ja
Publication of JPWO2022034896A5 publication Critical patent/JPWO2022034896A5/ja
Priority to JP2024025830A priority Critical patent/JP2024052829A/ja
Application granted granted Critical
Publication of JP7448014B2 publication Critical patent/JP7448014B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0273Traffic management, e.g. flow control or congestion control adapting protocols for flow control or congestion control to wireless environment, e.g. adapting transmission control protocol [TCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明の実施形態は、通信装置及び通信方法に関する。
パケット交換方式の通信では、一連のデータをパケット(データグラム又はセグメントなどとも称される)に分割して、送信装置から受信装置に配送する。送信装置ではデータ列からパケットへの変換の処理、及び受信装置ではパケットからデータ列への復元の処理が行われる。これらの処理は、通常、データをホストコンピュータのメモリ上で分割しながらコピーすることで行われる。このコピーによる負荷を下げるために、様々な技術が開発されてきた。
送信時のコピーを最小限にするための技術として、TCP Segmentation Offload (TSO) 、TSOを抽象化したGeneric Segmentation Offload (GSO) 又は Large Send Offload (LSO) がある。これらの技術では、周辺機器であるネットワークインターフェイスカード (NIC: Network Interface Card) にパケットよりも大きなデータを転送し、NICがパケット化及びヘッダの付与を行う。これにより、ホストコンピュータではデータの分割・コピーを省略でき、負荷を大幅に削減できる。このような技術はゼロコピーとも呼ばれる。
ゼロコピーを受信装置で実現する Large Receive Offload (LRO) と呼ばれる技術もある。LROでは、NICが受信したパケットからデータ列を復元し、ホストコンピュータに転送する。これにより、ホストコンピュータでの復元に伴うメモリコピーを省略する。
このようにホストコンピュータでのメモリコピーを省略するゼロコピー技術が開発されてきたものの、多量のセッションに対する負荷をオフロードする仕組みはなかった。例えば、受信装置においてはNICでオフロード可能なセッション数(コンテキスト数)に制限があるため、多量のセッションを扱えなかった。
また、セッションの管理については、通常、受信装置のオペレーティングシステムが行う。オペレーティングシステムでセッションを開始すると、ユーザプログラムによりファイルディスクリプタ(ソケット)を作成し、受信待ち受けするなどの、受信処理を行う。この受信処理のために、プロセス又はスレッドを作成する場合もある。また、受信待ち受けのために多量のファイルディスクリプタ、プロセス又はスレッドを作成することで、性能が著しく低下することもある。このため、規模拡張性(スケーラビリティ)が乏しかった。
Willem de Bruijn and Eric Dumazet , "Optimizing UDP for content delivery: GSO, pacing and zerocopy", [Online], [令和2年6月10日検索], インターネット<URL:http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-1.pdf> Aravind Menon and Willy Zwaenepoel, "Optimizing TCP Receive Performance", [Online], School of Computer and Communication Sciences[令和2年6月10日検索], インターネット<URL:https://www.usenix.org/legacy/event/usenix08/tech/full_papers/menon/menon_html/
本発明の実施形態は、データの受信又は送信時の処理の負荷を軽減する通信装置及び通信方法を提供する。
本実施形態に係る通信装置は、アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信する、受信部と、前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する処理部と、を備える。
本実施形態に係る通信装置は、第1通信媒体を介して、アプリケーション用のデータを送信するための第1接続要求を受信し、前記第1接続要求を受信した後、前記第1通信媒体を介して、前記データを受信し、前記第1接続要求を受信した後、前記データの受信が終了する前に、第2通信媒体を介して、前記データを送信するための第2接続要求を送信し、前記第2接続要求を送信した後、前記第2通信媒体を介して、前記データを送信する。
本実施形態に係る通信方法は、アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信し、前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する。
本実施形態に係る通信方法は、第1通信媒体を介して、アプリケーション用のデータを送信するための第1接続要求を受信し、前記第1接続要求を受信した後、前記第1通信媒体を介して、前記データを受信し、前記第1接続要求を受信した後、前記データの受信が終了する前に、第2通信媒体を介して、前記データを送信するための第2接続要求を送信し、前記第2接続要求を送信した後、前記第2通信媒体を介して、前記データを送信する。
第1実施形態に係るデータ送信システムのブロック図。 第1実施形態に係る受信装置のブロック図。 送信装置から受信装置がデータを受信する場合の動作シーケンス例を示す図。 送信装置から受信装置がデータを受信する場合の他の動作シーケンス例を示す図。 第1実施形態に係る受信装置の動作の一例を示すフローチャート。 受信処理部が受信装置の外部装置として存在する場合の概略構成を示す図。 第2実施形態に係るパケットのフォーマット例を示す図。 第3実施形態に係る送信装置のブロック図。 送信装置が受信装置にデータを送信する動作シーケンスの例を示す図。 第3実施形態に係る送信装置の動作の一例を示すフローチャート。 送信処理部が送信装置の外部装置として存在する場合の概略構成を示す図。 送信装置又は受信装置のハードウェア構成の一例を示すブロック図。
以下、図面を参照して、本開示の実施形態について説明する。図面は、本開示の実施形態を一例として模式的に示すものであり、本開示の実施形態は、図面に開示された形態に限定されるものではない。
(第1実施形態)
図1は、本実施形態に係るデータ送信システムのブロック図である。図1のデータ送信システムは、受信装置10と、送信装置20を搭載した複数の移動体Mとを備える。受信装置10及び送信装置20は、本実施形態に係る通信装置又無線通信装置の一例に相当する。
移動体Mは、自動車、ロボット、船舶、ドローン、モバイル端末(スマートフォン、タブレット端末等)、又は電車など、任意の移動体である。本実施形態では送信装置20は移動体に搭載されているが、送信装置20は固定設置された端末又はマシンに搭載されてもよい。本実施形態では移動体Mが自動車である場合を想定する。自動車は、ユーザの運転を支援する機能を有する自動車、及び自律的に判断して走行する自動運転車のいずれでもよい。
送信装置20は、通信ネットワーク30に接続されている。通信ネットワーク30は、一例として、モバイルネットワーク又は無線LAN(Local Area Network)等のネットワークである。モバイルネットワークの例として、3Gネットワーク,LTEネットワーク、次世代(5G)ネットワークなどがあるが、ネットワークの種類は何でもよい。また、通信ネットワーク30は、無線ネットワークでも、有線ネットワークでもよい。通信ネットワーク30は、複数種類のネットワークを含んでいてもよい。この場合、送信装置20が、受信装置10との通信に用いるネットワークを複数種類のネットワークから選択してもよい。本実施形態では送信装置20は無線通信を行うが、有線通信を行う構成でもよい。
送信装置20は、移動体Mに設けられた1つ又は複数のセンサからデータを取得する。1つ又は複数のセンサは、受信装置における1つ又は複数のアプリケーションに提供するデータを検出する。送信装置20は、1つ又は複数のアプリケーション毎にデータを受信装置10に送信する。より詳細には、送信装置20は、データを含むパケットを生成し、生成したパケットを受信装置10に送信する。複数のセンサの例は、カメラ、GPS、LiDAR(Light Detecting And Ranging)、速度センサ、加速度センサ、自動車の制御データ(エンジン回転状態、アクセルの踏み込み状態など)の検出センサ、急ブレーキの検出センサ、障害物(落下物、前方車両)の検出センサなどを含む。
受信装置10は、通信ネットワーク30に接続されている。受信装置10は例えばモバイルネットワークに配置されている。受信装置10は、モバイルネットワークのエッジコントローラでもよい。受信装置10は、移動体Mから1つ又は複数のアプリケーションに対するデータを受信する。より詳細には、受信装置10は、データを含むパケットを受信する。受信装置10は、移動体Mから送信されたデータを処理する1つ又は複数のアプリケーションを備えていている。受信装置10は移動体Mから取得したデータを、それぞれ対応するアプリケーションに渡す。
複数のアプリケーションの例は、高精細度地図を生成するアプリケーション、エンジン制御の最適化モデルを生成するアプリケーション、道路安全情報を生成するアプリケーションなどを含む。一例として、高精細度地図を生成するアプリケーション、及びエンジン制御の最適化モデルを生成するアプリケーションに対するデータ送信の時間制約は長い(1分、1時間、1日など)。一方、道路安全情報を生成するアプリケーションに対するデータ送信の時間制約は短い(例えば10秒以下)。このような送信の時間制約の情報は、送信装置20と受信装置10間で共有されていてもよい。一例として時間制約の短いデータは優先度の高いデータに対応し、時間制約の長いデータは優先度の低いデータに対応する。
受信装置10が中継装置として機能する場合、中継装置としての受信装置10が、移動体Mの送信装置20から受信したデータを、1つ又は複数のアプリケーションを備える別の装置(例えばサーバ)に送信してもよい。
移動体Mの送信装置20及び受信装置10は、基地局を介して、互いに通信してもよい。この場合、送信装置20は、所定の接続プロセスを実行することにより、近傍の基地局と無線接続する。移動体Mの送信装置20は、接続した基地局を介して、受信装置10と通信する。受信装置10は、基地局と無線又は有線で接続されている。受信装置10は、複数の基地局と接続されていてもよいし、基地局と1対1で接続されていてもよい。送信装置20及び受信装置10間の伝送路には、基地局を含む1つ以上の中継装置が存在してもよい。
本実施形態では、受信装置10が、1台又は複数台の送信装置20からデータを受信する場合に、受信装置10におけるアプリケーションの処理の負荷を軽減することを実現する。
図2は、本実施形態に係る受信装置10のブロック図である。受信装置10は送信装置20と通信する。図2では送信装置20が1台のみ示されているが、複数の送信装置20が存在してよい。また受信装置10の台数も1台に限定されない。図2に示す受信装置10の構成は、本実施形態の説明に必要な要素のみを示したものであり、ユーザが指示又はデータを入力する入力部、ユーザに情報を提示する出力部など、他にも様々な要素が含まれてもよい。図2に示す受信装置10は送信装置20と無線通信を行うが、有線通信を行う構成も排除されない。
受信装置10は、受信処理部110と、処理部120と、オフロード判定部130(決定部)と、一時記憶部140と、通信部150(受信部)と、少なくとも1つのアンテナ160とを備える。
受信処理部110は、1つ又は複数のアプリケーションを実行することにより、送信装置20から送信されるデータを取得し、取得したデータに基づく処理を行うアプリケーション実行部である。アプリケーションの例として、高精細度地図の生成、エンジン制御の最適化モデルの生成、道路安全情報の生成などがあるが、これらは一例に過ぎず、他にも様々なアプリケーションがある。受信処理部110はCPU及びメモリを備えていてもよい。
受信処理部110のアプリケーションは、送信装置20から例えばTCP(Transmission Control Protocol)の接続要求が受信されたとの通知を処理部120から待ち受ける動作を行う。アプリケーションは、処理部120を介して送信装置20からの接続要求の受信を通知されると、送信装置20からのデータを待ち受ける動作を開始する。アプリケーションは、アプリケーションに代わって送信装置20からデータを受信(代理受信)する処理部120に対してデータの読み出し命令を発行し、処理部120からデータを取得する動作を行う。読み出し命令には、読み出すデータのサイズを指定する引数が含まれてもよい。あるいは、読み出し命令は一定サイズのデータを読み出すよう構成されていてもよい。
具体例として、アプリケーションは、socket()システムコールを用いて、ソケットを識別するファイルディスクリプタを生成する。アプリケーションは、bind()システムコールを用いて、ソケットに受信用に待機するポート番号(例えばTCPのポート番号)等を割り当てる。アプリケーションは、listen()システムコール等を用いて、送信装置20からの接続要求を待つ準備を行う。アプリケーションは、accept()システムコール等を用いて接続要求を待つ動作を開始する。アプリケーションは、処理部120からaccept()システムコールからの正常応答を受信すると、送信装置20からのデータを待機する。accept()システムコールからの正常応答は、送信装置20から接続要求が受信されたことを通知する情報に対応する。送信装置20から送信されたデータは処理部120で代理受信され、アプリケーションは、例えばreceive()システムコールを用いて、処理部120から、送信装置20から受信されたデータを取得する処理を行う。receive()の引数で読み出すデータのサイズを指定してもよい。receive()システムコールを繰り返すことで、処理部120からデータを逐次取得する。アプリケーションは、処理部120からのデータの取得を終了した場合(例えば、送信装置20から受信された全てのデータを取得した場合)、ソケットを切断する。
通信部150は、アンテナ160を介して無線信号を送受信することにより、送信装置20と通信する。通信部150は、通信ネットワーク30を介して、送信装置20から通信の接続要求を受信すると、接続要求を処理部120に提供する。通信部150は、処理部120から接続要求に対する確認応答を取得すると、確認応答を送信装置20に送信する。通信部150は、確認応答を送信した後、送信装置20から送信されるデータ列を受信する。より詳細には、通信部150は、データを含むパケットを順次受信する。通信部150はパケットを処理部120に提供する。
通信部150は、送信装置20からアプリケーション用のデータを送信するための接続要求を受信し、接続要求が受信された後、送信装置20から送信されるデータを受信する受信部を含む。受信部において、接続要求を受信するハードウェア回路とデータを受信するハードウェアは同じでもよいし、接続要求を受信するハードウェア回路とデータを受信するハードウェアが異なってもよい。
処理部120は、送信装置20と受信処理部110との間でデータの送受信に関する処理を行う。処理部120は、送信装置20から接続要求を受信した後、アプリケーション宛のデータを代理受信して、アプリケーションへの通知を一時待機するオフロード処理を行う機能を有する。処理部120は一例としてIP/TCPに関する処理を行う。データリンク層及び物理層に関する処理をさらに通信部150が行ってもよい。データリンク層及び物理層に関する処理を通信部150が行ってもよい。処理部120は一例として専用のハードウェア回路によって構成されてもよいし、プログラムによって構成されてもよいし、又はこれらの両方によって構成されてもよい。
処理部120は、一例としてカーネル又はオペレーティングシステム(OS)によって構成される。処理部120は、インターネット層及びトランスポート層の通信プロトコルとして、例えば、IP(Internet Protocol)/TCP(Transmission Control Protocol)、を用いる。本実施形態ではIP/TCPを用いる場合を想定する。但し、IP/UDP(User Datagram Protocol)等、他の通信プロトコルを用いる場合も排除されない。
処理部120は、送信装置20から接続要求を受信すると、接続要求先が、接続要求を待つ動作を行っているアプリケーション(例えばaccept()システムコールを行ったアプリケーション)であるか否かを判断する。接続要求先が当該アプリケーションでない場合は、接続の拒否通知を送信装置20に送信する。処理部120は、接続要求先が当該アプリケーションである場合は、送信装置20が送信するデータ列又は送信先のアプリケーションがオフロード対象か否か(すなわちオフロード処理を行うか否か)の判定をオフロード判定部130に要求する。オフロード対象か否かによって、送信装置20から受信した接続要求の通知をアプリケーションに提供するタイミングを制御する。オフロード判定部130は、データ又はアプリケーションに関する情報に基づき、接続要求の受信をアプリケーションに通知するタイミングを決定する決定部を含む。
データ又はアプリケーションに関する情報の一例として、オフロード処理の有無を指定する指示情報(オフロード対象フラグ)がある。オフロード対象フラグが例えば送信装置20側でパケットのヘッダに含められる。処理部120が受信したパケットのヘッダからオフロード対象フラグを検出する。オフロード対象フラグが第1値(例えば“1”)である場合は、オフロード処理を行うと判定し、第2値(例えば“0”)である場合は、オフロード処理を行わないと判定してもよい。オフロード対象フラグをアプリケーションから取得してもよい。
データ又はアプリケーションに関する情報はデータ又はアプリケーションの優先度でもよい。一例として、データ列が画像・音声等のストリーミングデータなど、遅延許容時間が長いデータの場合、低い優先度(例えば緊急度が低い)を設定する。非ストリーミングデータなど、遅延許容時間が短いデータの場合、高い優先度(例えば緊急度が高い)を設定する。オフロード判定部13は、高い優先度の場合は、オフロード処理を行わないと判定し、低い優先度の場合は、オフロード処理を行うと判定してもよい。一例として、優先度が閾値以上のときは優先度が高いと判断し、オフロード処理を行わないと判定してもよい。また、優先度が閾値未満のときは優先度が低いと判断し、オフロード処理を行うと判定してもよい。優先度はパケットのヘッダに含められてもよいし、アプリケーションから取得してもよい。
また、データ又はアプリケーションに関する情報は、データを検出したセンサの種類でもよい。例えばストリーミングデータを生成するカメラの場合はオフロード処理を行うと判定し、急ブレーキを検出するセンサの場合は、オフロード処理を行わないと判定する。センサの種類はパケットのヘッダに含められてもよいし、アプリケーションから取得してもよい。
また、データ又はアプリケーションに関する情報は、データの送信先のアプリケーションの種類でもよい。例えば、アプリケーションごとに使用するポート番号が決まっている場合に、ヘッダからアプリケーションが使用するポート番号を取得し、アプリケーションの種類を識別してもよい。
データ又はアプリケーションに関する情報(オフロード対象フラグ、優先度、センサの種類、ポート番号等)をパケットのヘッダに含める場合、例えば接続要求のパケットのヘッダに当該情報を含めてもよい。既存のプロトコルのヘッダ(IP、TCP等のヘッダ)の予約フィールドを用いてもよいし、独自に定義したプロトコルのヘッダを用いてもよい。
また、データ又はアプリケーションに関する情報を、アプリケーションから取得する場合に、アプリケーションが実行する関数に引数として当該情報を含めてもよい。例えば、socket()に引数として、最後のデータを受信してから通知(例えばaccept() return)を返すことを指示する“TAILAWARE”を追加してもよい。socket()に“TAILAWARE”が含まれている場合は、オフロード処理を行うことを決定する。“TAILAWARE”はオフロード処理の有無を指定する指示情報の一例に相当する。
オフロード判定部130はオフロード処理を行うか否か(送信装置20から受信するデータ列がオフロード対象か否か)の判定結果を処理部120に提供する。
オフロード処理を行わないとの判定結果は、接続要求の受信を通常のタイミング(第1タイミング)でアプリケーションに通知することを意味する。通常のタイミング(第1タイミング)は、例えば接続要求を受信したタイミング、接続要求を受信した後かつ確認応答を返す前のタイミング、又は、確認応答を返した後かつデータの受信を開始する前のタイミングなどがある。オフロード処理を行うとの判定結果は、データが受信された後のタイミング(第2タイミング)で通知をアプリケーションに提供することを意味する。第2タイミングは、アプリケーションに接続要求を通知する条件(接続通知条件)が満たされたタイミングである。
処理部120は、オフロード処理を行わないと判定された場合は、送信装置20からの接続要求の受信を通常のタイミングでアプリケーションに通知する。通知を提供する具体例は、accept()システムコールの正常応答をアプリケーションに返すことを含む。
処理部120は、オフロード処理を行うと判定された場合は、接続通知条件が満たされたタイミング(第2タイミング)で、接続要求の受信をアプリケーションに通知する。一例として、データの受信状況に基づいて接続通知条件が満たされるかを判断する。接続通知条件が満たされない場合は、送信装置20からの接続要求の受信をアプリケーションに通知しない。接続通知条件が満たされた場合に、接続要求の受信をアプリケーションに通知する。接続通知条件が満たされる例として、データの受信が終了した場合(例えば送信装置20から送信される複数のデータの全てを受信した場合)、又は送信装置20から接続の終了要求を受信した場合などがある。接続通知条件の詳細については後述する。
処理部120は、オフロード判定部130でオフロード処理を行わないと判定された場合及びオフロード処理を行うと判定された場合のいずれも、接続要求に対する確認応答を生成する。処理部120は、通信部150を介して、確認応答を送信装置20に送信する。
処理部120は、確認応答の送信後、通信部150を介して、送信装置20から送信されるデータを順次受信する。処理部120は、送信装置20から受信されるデータを一時記憶部140に格納していく。
一時記憶部140は、所定サイズの記憶領域を有する記憶部又は記憶装置である。一時記憶部140は、一例として、メモリ又はハードディスクなどの記録媒体により構成される。メモリは、揮発性メモリ、不揮発性メモリ、又はこれらの両方を含む。
処理部120は、送信装置20からのデータ受信の開始後、送信装置20から接続の終了要求を受信した場合は、送信装置20からのデータ受信を終了する。終了要求は、一例として、データの送信の終了を通知する情報に相当する。終了要求を受信する以外の方法でデータ受信の終了を決定してもよい。例えば予め定めた量のデータを受信した場合、又は予め定めた個数のデータを受信した場合に、データ受信の終了を決定してもよい。
処理部120は、上述のオフロード処理を行わないと判定された場合は、アプリケーションに通常のタイミングで接続要求の受信を通知した後、アプリケーションからデータの読み出し命令を受信する。処理部120は、読み出し命令を受信するごとに、一時記憶部140からデータを読み出し、読み出したデータをアプリケーションに出力(提供)する。アプリケーションは、送信装置20から受信されたデータの取得を完了すると、ソケットを切断する。
処理部120がアプリケーションに出力するデータは、一例としてTCPより上位のレイヤのデータ(TCPのペイロード部分)である。但し、TCP及びIPの少なくとも一方のヘッダ情報もアプリケーションに出力してもよい。また、TCPの上位に独自に定義したプロトコルのヘッダが付加されている場合に、当該独自のプロトコルより上位のレイヤのヘッダ及びペイロード部をアプリケーションに出力してもよい。
処理部120は、オフロード処理を行うと判定された場合は、送信装置20から受信するデータを一時記憶部140に格納していくことと並行して、送信装置20から受信されるデータに基づき、接続通知条件が満たされたかを判断する。
一例として、処理部120は、送信装置20からデータ列の受信が終了した場合(例えば全てのデータが受信された場合)、接続通知条件が満たされたと判断する。具体的には、送信装置20から接続の終了要求を受信した場合に、接続通知条件が満たされたと判断する。
あるいは予め定めたデータ量のデータが受信された場合に、接続通知条件が満たされたと判断してもよい。また、送信装置20から受信するデータ量のうち受信済みのデータ量の割合に基づいて、接続通知条件が満たされたと判断してもよい。
また、送信装置20側でデータに対してオフロード処理の終了を指示する情報(オフロード終了フラグ)を設定し、オフロード終了フラグに基づき判断してもよい。例えば、送信装置20においてパケットのヘッダにオフロード終了フラグを含める。オフロード終了フラグがオフ(例えば“0”)である間は、接続通知条件は満たされていないと判断する。オフロード終了フラグがオン(例えば“1”)になった場合は、接続通知条件が満たされたと判断する。
上述の接続通知条件は、一例であり、その他の方法で接続通知条件を定義してもよい。
処理部120は、接続通知条件が満たされた場合、送信装置20からの接続要求の受信をアプリケーションに通知する。例えばaccept()システムコールの正常応答をアプリケーションに返す。処理部120は、接続要求の受信をアプリケーションに通知した後、アプリケーションからデータの読み出し命令を順次受信する。処理部120は、読み出し命令を受信するごとに、一時記憶部140から読み出し命令で指定されたサイズのデータを読み出し、読み出したデータをアプリケーションに出力(提供)する。送信装置20から受信したすべてのデータをアプリケーションに提供したら、アプリケーションはソケットを切断する。
アプリケーションは、上述のaccept()システムコールを行う際、引数として、遅延許容値を設定してもよい。この場合、アプリケーションは、遅延許容値が示す期間が経過するまでは、accept()システムコールの正常応答を待機する。遅延許容値を、他の関数を用いて設定してもよい。例えばソケットと関連したオプションを 設定するsetsockopt() 関数を用いてもよい。
処理部120がアプリケーションに出力するデータは、オフロード処理を行わないと判定された場合にアプリケーションに出力するデータと同様である。
図3は、オフロード処理を行わない場合の送信装置20の動作シーケンスの例を示す。受信処理部110のアプリケーションは、送信装置20から接続要求を待ち受けるため、accept()システムコールを実行する(S11)。処理部120は、送信装置20から接続要求を受信すると(S12)、送信装置20からこれから受信するデータ列に対してオフロード処理を行うか否かの判定をオフロード判定部130に要求する。オフロード判定部130によりオフロード処理を行わないと判断された場合に、accept()システムコールの正常応答をアプリケーションに即時に返すことにより、接続要求の受信をアプリケーションに通知する(S13)。アプリケーションは送信装置20からのデータを待機する動作を開始する。処理部120は、通信部150を介して、接続要求に対する確認応答を送信装置20に送信する(S14)。
処理部120は、通信部150を介して、送信装置20から送信されるデータを順次受信する(S15-1、S15-2、S15-3、・・・)。処理部120は、各データに対する確認応答を送信装置20に送信する。処理部120は、送信装置20から受信されるデータを一時記憶部140に順番に格納する。送信装置20から全てのデータを受信した後、送信装置20から接続の終了要求(データの送信の終了通知)を受信する(S18)。
処理部120は、シーケンスS15-1、S15-2、S15-3、・・・と並行して、アプリケーションからデータの読み出し命令を受ける(S16-1、S16-2、・・・、S16-N)。処理部120は、一時記憶部140から、読み出し命令で指定されたサイズのデータを読み出して、読み出したデータをアプリケーションに出力(提供)する(S17-1、S17-2、・・・)。送信装置20から受信したすべてのデータがアプリケーションに提供すると、処理部120は読み出し終了をアプリケーションに通知する(S19)。読み出し終了の通知を受けたアプリケーションは、ソケットを切断する。
図4は、オフロード処理を行う場合の送信装置20の動作シーケンスの例を示す。ここでは送信装置20から全てのデータを受信した場合に、接続要求の受信をアプリケーションに通知する(接続通知条件が満たされる)場合の動作を記載する。
受信処理部110のアプリケーションは、送信装置20から接続要求を待ち受けるため、accept()システムコールを実行する(S101)。処理部120は、送信装置20から接続要求を受信すると(S102)、送信装置20からこれから受信するデータ列に対してオフロード処理を行うか否かの判定をオフロード判定部130に要求する。オフロード判定部130によりオフロード処理を行うと判断された場合、処理部120は、この時点ではaccept()システムコールの正常応答をアプリケーションに返さない。処理部120は、通信部150を介して、接続要求に対する確認応答を送信装置20に送信する(S103)。
処理部120は、通信部150を介して、送信装置20から送信されるデータを順次受信する(S104-1、S104-2、S104-3、・・・)。処理部120は各データに対する確認応答を送信装置20に送信する。処理部120は、送信装置20から受信されるデータを一時記憶部140に順番に格納する。送信装置20から全てのデータを受信した後、送信装置20から接続の終了要求を受信する(S105)。
処理部120は、接続の終了要求を受信すると、accept()システムコールの正常応答をアプリケーションに返す(S106)。これにより、送信装置20からの接続要求の受信をアプリケーションに通知する。接続要求の受信を通知されたアプリケーションは送信装置20からのデータを待機する動作を開始する。処理部120は、アプリケーションからデータの読み出し命令を受けると(S107-1、S107-2、・・・、S107-N)。一時記憶部140から、読み出し命令で指定されたサイズのデータを読み出して、読み出したデータをアプリケーションに出力(提供)する(S108-1、S108-2、・・・)。送信装置20から受信したすべてのデータをアプリケーションに提供すると、処理部120は読み出し終了を送信装置20に通知する(S109)。読み出し終了の通知を受けたアプリケーションはソケットを切断する。
前述した図3及び図4のシーケンスにおいて、処理部120は、送信装置20から受信したパケットのシーケンス番号に基づき、パケットの欠落を検出してもよい。パケットの欠落を検出した場合は、再送を待機する(送信装置20はACKを受信しない場合は、最大回数までパケットの再送を行う)。処理部120は、すべてのパケットが受信できたことを確認できた後に、accept()システムコールの正常応答をアプリケーションに返してもよい。あるいは、処理部120は、パケットのロスを検出した時点又はその他の任意に定めた時点から一定時間内に受信できないパケットが存在する場合は、タイムアウトとして当該パケットをもはや待機しなくてもよい。この場合、処理部120は受信済みのパケットのデータのみをアプリケーションに提供する。
図3のシーケンスと図4のシーケンスの効果の違いを説明する。図3のシーケンスでは、接続要求が受信されたタイミングで、アプリケーションはデータの待ち動作を開始するため、送信装置20から受信したデータをより早期にアプリケーションに渡すことができる。したがって緊急性の高いデータを高速にアプリケーションに届けることができる。一方、アプリケーションがすべてのデータが送信装置20から届くまでデータの待ち動作を行っている必要があるため、アプリケーションの負荷(アプリケーションを実行するCPUの負荷)が大きくなる。特に多くの送信装置からのデータを受信する場合、多量のファイルディスクリプタが生成されることで、性能が低下する可能性もある。受信処理でプロセス又はスレッドが生成される場合も、プロセス又はスレッドが多量に生成され、性能が低下する可能性がある。また通信ネットワーク30の通信品質の低下によりパケットの到着が遅れたり、再送が発生したりする場合もあり、アプリケーションの待機時間が長くなる可能性がある。一方、図4のシーケンスでは、全てのデータが受信されるまで(接続通知条件が満たされるまで)アプリケーションはデータの待ち動作を開始しない。すべてのデータが揃ってからアプリケーションは待ち動作を開始する。よってアプリケーションが待ち動作を開始した後、高速にすべてのデータを取得できる。よって、アプリケーションにより待ち動作を行う時間は短くて済む。よってアプリケーションが多数の送信装置20からデータを受信する場合でも、ファイルディスクリプタの生存期間(ソケットの生存期間)が短く、同時に動作させるディスクリプタ数(ソケット数)は低減される。よって、アプリケーションの負荷を低下できる。
図5は、本実施形態に係る受信装置10の動作の一例を示すフローチャートである。ここでは送信装置20から全てのデータを受信した場合に、接続通知条件が満たされる場合の動作例を記載する。アプリケーションはaccept()システムコール等を行うことで接続要求を待っている状況にあるとする。
受信装置10の処理部120は、送信装置20から接続要求を受信する(S201)。処理部120は、送信装置20から受信するデータ列についてオフロード処理を行うかを、オフロード判定部130を用いて判定する(S202)。
処理部120は、オフロード処理を行わないと判定された場合は(S202のNO)、accept()システムコールの応答等を送信することにより、接続要求の受信をアプリケーションに通知する(S210)。また、処理部120は、通知の後又は前において、送信装置20に接続要求に対する確認応答を送信する。処理部120は、送信装置20から逐次受信されるデータをアプリケーションに提供する(S211)。受信されるデータを一時的に一時記憶部140に格納し、一時記憶部140からデータを読み出してアプリケーションに提供してもよい。処理部120は、一例としてアプリケーションによるreceive()システムコールに対する応答としてデータをアプリケーションに提供する。処理部120は送信装置20から全てのデータを受信し、かつ受信した全てのデータをアプリケーションに提供したかを判断する(S212)。まだ全てのデータを受信していない又はアプリケーションに提供していない場合(S212のNO)、データの受信とデータの提供とを繰り返す。全てのデータの受信とデータの提供とを完了したら(S212のYES)、処理を終了する。
処理部120は、オフロード処理を行うと判定された場合は(S202のYES)、送信装置20に接続要求に対する確認応答を送信し、その後、送信装置20から受信する全てのデータを一時記憶部140に格納する(S204のNO)。処理部120は、全てのデータの受信を終了した場合は(S204のYES)、接続要求の受信をアプリケーションに通知する(S205)。処理部120は、一時記憶部140に格納されている全てのデータを順次読み出して、アプリケーションに提供する(S206)。処理部120は、例えばアプリケーションによるreceive()システムコールに対する応答としてデータをアプリケーションに提供してもよい。処理部120は、全てのデータをアプリケーションに提供したら、処理を終了する。
以上、本実施形態によれば、送信装置20から接続要求を受信しても、接続要求の受信をアプリケーションにはすぐには通知せずに、送信装置20から受信するデータを一時的に一時記憶部140に格納しておく(オフロード処理)。接続通知条件が満たされた場合に(例えば送信装置20から全てのデータを受信した場合に)初めて、接続要求の受信をアプリケーションに通知する。アプリケーションは通知を受けた後、データを待つ動作を開始する。これにより、アプリケーションは、データが受信され終わった時点でデータを待つ処理を開始でき、アプリケーションに高速にデータを提供できるため。アプリケーションの負荷を軽減することができる。また多数の送信装置からのデータを取得する場合にも、同時に存在するファイルディスクリプタの数及び生存期間を低減することができる。
また本実施形態によれば、送信装置20から受信するデータ列についてオフロード処理するか否かを判定することにより、データの優先度(例えば緊急度)等に応じて、オフロード処理するか否かを切り替えることができる。優先度が高い場合にはオフロード処理を行わないことで、アプリケーションに高速にデータを届けることが可能となる。優先度が低い場合にはオフロード処理を行うことで、アプリケーションの負荷を低減することができる。
また本実施形態ではオフロード処理の途中でオフロード処理を終了する(接続要求の受信をアプリケーションに通知する)ことも可能である。例えば予め定めたデータ量又は割合のデータが受信された時点で、accept()システムコールの正常応答を返す場合がある。あるいはオフロード終了フラグがオンになった時点で、accept()システムコールの正常応答を返す場合がある。これにより、送信装置がデータ列の送信の途中で緊急度が高くなった場合には、アプリケーションに受信済みのデータを高速に提供することができる。
[変形例]
図2の構成では、受信処理部110が受信装置10に含まれていたが、受信処理部110が受信装置10の外部装置として存在してもよい。
図6は、受信処理部110が外部装置(アプリケーション装置)として存在する場合の概略構成を示す。アプリケーション装置110Aは、受信装置10Aとは無線又は有線の通信ネットワークを介して接続される。受信装置10Aには通信部170が設けられる。通信部170は通信ネットワークを介してアプリケーション装置110Aと通信する。通信ネットワークは、無線LAN、イーサネット等のローカルネットワークでもよいし、モバイルネットワーク又はインターネット等の広域ネットワークでもよいし、USB等のシリアル通信ケーブルでもよい。図6の構成においても、第1実施形態と同様の動作が行われる。
本変形例は以降に説明する他の実施形態においても同様に適用可能である。
(第2実施形態)
本実施形態では、送信装置20から複数のアプリケーション用のデータを同一のデータフローとして1つのパケットにまとめて送信する。受信装置10ではパケットに含まれるデータをアプリケーションごとに分離し、各データを対応するアプリケーションに提供する。この際、オフロード処理を行うか否かをアプリケーションごとに判定する。オフロード処理を行うと判定されたアプリケーションについては接続要求の受信を接続通知条件が満たされるまで(例えば当該アプリケーションのデータが全て受信されるまで)通知しない。一方、オフロード処理を行わないと判定されたアプリケーションについては接続要求を受信したタイミングで、接続要求の受信をアプリケーションに通知する。以下、第1実施形態との差分を中心に説明し、第1実施形態と同じ説明は適宜省略する。
本実施形態では、1つのパケットに複数のアプリケーションを含めるためにデータフローを制御するプロトコル(データフロー制御プロトコル(DFCP)と称する)を定義する。例えば、DFCPヘッダをTCP等のトランスポート層の上位に設定する。これにより、1つのパケットに複数のアプリケーションのデータを含めて管理する。
図7は、本実施形態に係るパケットのフォーマット例を示す。図7のパケットはデータリンク層のパケットである。図7のパケットは、イーサーネットヘッダ、IPヘッダ、TCPヘッダ、DFCPヘッダ、DFCPのペイロード部、イーサネットFCS(Frame Check Sequence)を含む。DFCPのペイロード部には、アプリケーションへ送信するデータ(例えばセンサで検出されたデータ)が格納される。DFCPは、TCPよりも上位のプロトコルである。これらの層の全てが必須ではなく、また他の層が含まれてもよい。例えば複数のデータフローを共通に管理するデータフロー管理プロトコル(DFMP)を定義し、TCPヘッダとDFCPヘッダとの間に、DFMPヘッダを追加してもよい。
DFCPヘッダには、例えばデータフロー又はアプリケーションを識別するIDが格納される。またDFCPヘッダには、データフローごとのシーケンス番号(ローカルシーケンス番号)が格納されていてもよい。図の例では2つのDFCPヘッダが含まれ、それぞれのペイロード部に異なるアプリケーションのデータ(例えば異なるセンサから検出されたデータ)が格納される。DFCPヘッダの個数は2に限定されず、1でも、3以上でもよい。図7のフォーマットのパケットを第1実施形態で用いてもよい。DFMPヘッダを含める場合、DFMPヘッダには、DFMPで管理するシーケンス番号(グローバルシーケンス番号)を含めてもよい。
送信装置20は、第1実施形態と同様にして、受信装置10と接続した後、複数のアプリケーションのデータを含むパケットを順次生成し、受信装置10に送信する。
本実施形態の受信装置10のブロック図は、第1実施形態と同じ(図2参照)である。受信装置10では、複数(例えば2つ)のアプリケーションが送信装置20から接続要求待っている。送信装置20から接続要求を受信すると、オフロード判定部130は、アプリケーションごとにオフロード処理を行うか否かを判定する。処理部120は、送信装置20から複数のアプリケーションのデータを含むパケットを受信し、DFCPヘッダに基づきパケットから各アプリケーションのデータを取り出す。処理部120は、オフロード処理を行うと判定されたアプリケーションのデータについては、第1実施形態で用いた図5のステップS203~S206と同様の処理を行う。オフロード処理を行わないと判定されたアプリケーションのデータについては、図5のステップS210~S212と同様の処理を行う。詳細は第1実施形態で説明したため省略する。
アプリケーションに提供するデータサイズを一定にするため、処理部120は、データフローごとに、複数のパケットから抽出したデータを統合してもよい。例えば、処理部120は、あるパケットに含まれるアプリケーション1用のデータと、次に受信されるパケットに含まれる当該アプリケーション1用のデータの全部又は一部とを結合して、データサイズを一定にする。処理部120は、一定サイズのデータをアプリケーションに提供する。これによりアプリケーションに効率的にデータを提供することができる。なお、複数のパケットに含まれるデータの結合は第1実施形態で行ってもよい。例えば通信ネットワーク30の通信品質が低い(例えばパケットエラーレートが高いなど)場合に、パケット長を短くし、受信装置10側で複数のパケットに含まれるデータを結合することが考えられる。
[変形例]
第1実施形態と第2実施形態を組み合わせてもよい。例えば、送信装置20は、最初は第1実施形態に従って、アプリケーションごとに(例えばアプリケーション1とアプリケーション2ごとに)、別々のパケットでデータを送信する。アプリケーション1用のデータサイズが途中で小さくなったとする。アプリケーション2のデータと結合しても、1つのパケットで送信可能なサイズに収まる場合は、途中から第2実施形態に従って、1つのパケットにアプリケーション1のデータと、アプリケーション2のデータとを含める。これにより送信するパケットの個数を低減し、送信装置20の負荷及び受信装置10の負荷を低減できる。
(第3実施形態)
第1実施形態及び第2実施形態では受信装置10でオフロード処理を行ったが、第3実施形態では送信装置20でオフロード処理を行う。第1実施形態及び第2実施形態と同じ構成及び動作についての説明は適宜省略する。
図8は、第3実施形態に係る送信装置のブロック図である。送信装置50は受信装置60と通信する。図8では送信装置50が1台のみ示されているが、複数の送信装置50が存在してよい。また受信装置60の台数も1台に限定されない。図8の送信装置50の構成は、本実施形態の説明に必要な要素のみを示したものであり、ユーザが指示又はデータを入力する入力部、ユーザに情報を提示する出力部など、他にも様々な要素が含まれてもよい。図8に示す送信装置50は受信装置60と無線通信を行うが、有線通信を行う構成も排除されない。
送信装置50は、送信処理部210と、処理部220と、一時記憶部240と、通信部250と、少なくとも1つのアンテナ260とを備えている。送信装置50は、センサ280と結合されている。
通信部250は、アンテナ260を介して無線信号を送受信することにより、受信装置60と通信する。通信部250は、一例として、符号/復号処理、変復調処理、帯域調整、AD/DA変換、信号増幅などを行う。
送信処理部210はセンサ280に結合されている。センサ280は、アプリケーション用のデータを検出し、検出したデータを出力する。図8の例ではセンサは1つであるが、2つ以上でもよい。この場合、センサごとにアプリケーション用のデータを検出する。
センサの例は、カメラ、GPS、LiDAR、速度センサ、加速度センサ、自動車の制御データ(エンジン回転状態、アクセルの踏み込み状態など)の検出センサ、急ブレーキの検出センサ、障害物(落下物、前方車両)の検出センサなどを含む。センサは、一例として、時系列に一定間隔でデータを出力する(例えば24時間のストリーミングデータを出力する)。あるいは、センサは、イベントが発生したタイミングなど、特定のタイミングでデータを出力する。例えば、センサは、自動車の搭乗者等のユーザから操作部を介して入力されるデータを検出してもよい。1つのセンサの出力は、1つのデータフローに対応する。
送信処理部210は、センサ280から検出されたデータを逐次取得する。送信処理部210は、センサ280から検出されたデータを取得するデータ取得装置を含む。送信処理部210は取得したデータを一時的に保持するメモリ等の記憶部を内部又は送信処理部210からアクセス可能な外部に備えていてもよい。送信処理部210は、通信バスを介して処理部220に結合されている。通信バスは、送信処理部210と処理部220間の通信を行うための第1通信媒体に相当する。
送信処理部210は、センサ280から取得するデータを、オフロード処理を行う処理部220に送信する。すなわち、送信処理部210は、データを受信装置60に送信するのではなく処理部220に送信する。データは一定サイズ分ずつ送信してもよいし、センサ280から取得したデータの単位で送信してもよい。
処理部220への送信に用いる通信プロトコルは任意でよいが、例えばIP/TCPを用いることができる。ここではIP/TCPを用いる場合を記載する。この場合、送信処理部210は、第1実施形態と同様にソケットを識別するファイルディスクリプタを生成し、ソケットにポート番号等を割り当て、ソケットを介してパケットを処理部220に送信してもよい。ポート番号はアプリケーションのポート番号でもよいし、任意のポート番号でもよい。送信処理部210は、接続要求(SYN)を処理部220に送信し、処理部220から確認応答(ACK)を受信すると、データの送信を開始する。データの送信を終了すると、接続の終了要求(FIN)を送信する。送信処理部210が送信する接続要求は一例として、データの第1接続要求に対応する。
送信処理部210と処理部220間は通信バス(低遅延の通信媒体)で結合されているため、データは高速に処理部220に送信される。
処理部220は、送信処理部210と受信装置60間におけるデータの送受信に関する処理を行うプロキシ装置である。処理部220は、送信処理部210に対してサーバとして機能する。処理部220は、送信処理部210に代わって受信装置60にデータの送信を行うオフロード処理を行う機能を有する。また、処理部220は、IP/TCPに関する処理を行う。物理層及びデータリンク層に関する処理を処理部220でさらに行ってもよい。物理層及びデータリンク層に関する処理を通信部250が行ってもよい。処理部220は一例として専用のハードウェア回路によって構成されてもよいし、プログラムによって構成されてもよいし、又はこれらの両方によって構成されてもよい。
処理部220は、通信バス(第1通信媒体)を介して、送信処理部210からアプリケーション用のデータを送信するための接続要求(第1接続要求)を受信し、第1接続要求が受信された後、第1通信媒体を介して、送信処理部210からデータを受信する受信部を含む。受信部において、接続要求を受信するハードウェア回路と、データを受信するハードウェア回路とは同じであってもよいし、接続要求を受信するハードウェア回路と、データを受信するハードウェア回路とが異なってもよい。
処理部220は、送信処理部210から受信するデータを一時記憶部240に格納する。より詳細には、処理部220は、送信処理部210からパケットを受信し、受信したパケットに含まれるデータを一時記憶部240に格納する。処理部220と送信処理部210は通信バスで結合されているため、処理部220は、送信処理部210から逐次送信されるデータを高速に受信する。
処理部220は、送信処理部210から受信したデータを、送信処理部210に代わって受信装置60に送信(代理送信)する。処理部220は、受信装置60と通信ネットワーク30を介して接続し、一時記憶部240内のデータを受信装置60のアプリケーション宛に送信する。通信ネットワーク30は通信部250と受信装置60間の通信を行うための第2通信媒体に相当する。
受信装置60へのデータの送信方法は、第1実施形態において送信装置20が受信装置10にデータを送信する方法と同様でよい。例えば、処理部220は、受信装置60(例えばアプリケーションがaccept()システムコールにより接続要求を待っている状態である)に接続要求(第2接続要求)を送信する。処理部220は、受信装置60から確認応答を受信すると、データ送信を開始する。データ送信を終了すると、接続の終了要求を送信する。アプリケーションのポート番号は予め指定されていてもよいし、送信処理部210から受信するパケットのポート番号としてアプリケーションのポート番号が用いられている場合は、当該パケットからアプリケーションのポート番号を特定してもよい。
処理部220は、送信処理部210からのデータの受信と並行して、受信装置60へのデータの送信を行う。処理部220は、少なくとも送信処理部210からの接続要求が受信された後、送信装置50からのデータの受信が終了する前に、受信装置60に接続要求を送信する。
通信部250又は処理部220は、送信処理部210から接続要求(第1接続要求)が受信された後、データの受信が終了する前に、通信ネットワーク30(第2通信媒体)を介して、当該データを送信するための接続要求(第2接続要求)を送信し、当該接続要求(第2接続要求)を送信した後、通信ネットワーク30(第2通信媒体)を介して、データを送信する送信部を含む。送信部において、接続要求を送信するハードウェア回路とデータを送信するハードウェア回路とは同じであってもよいし、接続要求を送信するハードウェア回路とデータを送信するハードウェア回路とが異なってもよい。
受信装置60の構成は、第1実施形態の受信装置10と同じでもよいし、一般的な動作を行う受信装置でもよい。受信装置60は、送信装置50から受信したデータを、アプリケーションに提供する。
図9は、送信装置50が受信装置60にデータを送信する動作シーケンスの例を示す。
送信装置50における送信処理部210は、センサ280からデータ列を取得する。送信処理部210は、データ列の取得と並行して、もしくはデータ列の取得が終了すると、処理部220にデータを送信する。送信処理部210は、接続要求(SYN)を処理部220に送信する(S51)。送信処理部210は、処理部220から確認応答(ACK)を受信すると(S52)、データ列の送信を開始する(S53-1、S53-2、S53-3、・・・)。送信処理部210はデータ列の送信が終了すると、接続の終了要求(FIN)を処理部220に送信する(S54)。
処理部220は、送信処理部210に確認応答を送信後、送信処理部210から送信されるデータを逐次受信し、受信したデータを一時記憶部240に格納する。処理部220は各データに対する確認応答を送信装置50に送信する。処理部220は、送信装置50に接続要求(SYN)を送信する(S161)。接続要求の送信は、送信処理部210への確認応答の送信後、データの受信開始前に行ってもよいし、送信処理部210からのデータの受信の開始後に行ってもよい。なお、送信処理部210からのデータ列の受信終了後に、接続要求を送信することも排除されない。処理部220は、受信装置60から確認応答(ACK)を受信すると(S162)、一時記憶部240からデータを順次読み出して、受信装置60に送信する。処理部220は、送信処理部210から受信したデータのすべての送信を終了すると、接続の終了要求(FIN)を送信する(S164)。なお再送タイムアウトにより一部のデータが受信装置60に届かない場合もあり得る。
受信装置60では送信装置50から受信したデータをアプリケーションに提供する。
図10は、本実施形態に係る送信装置50の動作の一例を示すフローチャートである。送信装置50の処理部220はaccept()システムコール等を行うことで接続要求を待っている状況にあるとする。
処理部220は、通信バスを介して送信処理部210から接続要求を受信する(S301)。処理部220は接続要求に対する確認応答を送信後、送信処理部210から通信バスを介してデータを受信する(S302)。処理部220は、受信されるデータを一時的に一時記憶部240に格納する。処理部220は、送信処理部210からのデータ受信が終了する前に、通信ネットワーク30を介して受信装置60に接続要求を送信する(S303)。接続要求の送信は、送信処理部210からのデータの受信開始前に行ってもよいし、受信開始後に行ってもよい。処理部220は、受信装置60から接続要求に対する確認応答を受信する。処理部220は、送信処理部210から受信したデータを一時記憶部240から順番に読み出して、通信ネットワーク30を介して受信装置60に送信する(S304)。処理部220は全てのデータの送信を終了すると、接続の終了要求を受信装置60に送信する。
以上、本実施形態によれば、送信処理部210が処理部220に通信バスを介してデータを送信し、処理部220が受信装置60に通信ネットワークを介してデータを送信する。送信処理部210が、直接、受信装置にデータを送信する場合に比べて、データを高速に処理部220に送信でき、送信処理部210の負荷(例えばデータの送信処理を行うプログラムを実行するCPUの負荷)を低減できる。
例えば、通信ネットワーク30の通信品質に起因して遅延等が発生すると、送信装置50からすべてのデータの送信が終了するまでに時間を要する。本実施形態ではこの場合も送信処理部210は通信バスを介してデータを処理部220に送信すればよいため、送信処理部210は遅延等の影響を受けずに、データを高速に送信することができる。よって送信処理部210におけるプログラムの実行負荷を低減でき、CPUの性能の低下を抑制できる。
[変形例1]
送信処理部210が複数のセンサに対応する複数のアプリケーション用のデータを処理部220に送信する場合、処理部220は複数のアプリケーション用のデータを1つのパケットにまとめて送信してもよい。すなわち複数のデータフローを1つのデータフローに合成する。例えば、前述したデータフロー制御プロトコル(DFCP)を用いて1つのパケットに複数のアプリケーションのデータを格納できる(図7参照)。この際、1パケットに含める各アプリケーション用のデータのデータ量又は割合を、各データの優先度(各アプリケーションの優先度)に応じて制御してもよい。例えば、優先度(例えば緊急度)が高いデータのデータ量又は割合を、優先度の低いデータのデータ量又は割合よりも大きくする。
[変形例2]
図8の構成では、送信処理部210が送信装置50に含まれていたが、送信処理部210が送信装置50の外部装置として送信装置50とは別体の装置として存在してもよい。
図11は、送信処理部210が送信処理装置210Aとして存在する場合の概略構成を示す。送信処理装置210Aはセンサ280からデータを取得するデータ取得装置を含む。送信処理装置210Aは、送信装置50Aと通信媒体(第1通信媒体)を介して接続される。第1通信媒体は、送信装置50A及び受信装置60間の通信媒体(第2通信媒体)である通信ネットワーク30よりも低遅延である。送信装置50Aには送信処理装置210Aと通信する通信部270が設けられる。
通信部270は第1通信媒体を介して送信処理装置210Aと通信する。第1通信媒体は、USB等のシリアル通信ケーブル、無線LAN、イーサネット等のローカルネットワークでもよいし、モバイルネットワーク又はインターネット等の広域ネットワークでもよい。通信部270又は処理部220は、第1通信媒体を介して、送信処理部210からアプリケーション用のデータを送信するための接続要求(第1接続要求)を受信する第1受信部と、第1接続要求が受信された後、第1通信媒体を介して、送信処理部210からデータを受信する第2受信部を含む。図11の構成において、第2実施形態と同様の動作が行われる。
前述した実施形態における各装置(送信装置20、又は受信装置10)の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、又はGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、又はUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)、又はFPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
ソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、又は光ディスク等の着脱可能なものに限定されず、ハードディスク、又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
図12は、前述した実施形態における各装置(送信装置20、又は受信装置10)のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ91と、主記憶装置92(メモリ)と、補助記憶装置93(メモリ)と、ネットワークインタフェース94と、デバイスインタフェース95と、を備え、これらがバス96を介して接続されたコンピュータ90として実現されてもよい。
図12のコンピュータ90は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、図12では、1台のコンピュータ90が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース94等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置(送信装置20、又は受信装置10)は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
前述した実施形態における各装置(送信装置20、又は受信装置10)の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ90と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
プロセッサ91は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、又はASIC等)であってもよい。また、プロセッサ91は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ91は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ91は、量子コンピューティングに基づく演算機能を含むものであってもよい。
プロセッサ91は、コンピュータ90の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ91は、コンピュータ90のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ90を構成する各構成要素を制御してもよい。
前述した実施形態における各装置(送信装置20、又は受信装置10)は、1又は複数のプロセッサ91により実現されてもよい。ここで、プロセッサ91は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
主記憶装置92は、プロセッサ91が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置92に記憶された情報がプロセッサ91により読み出される。補助記憶装置93は、主記憶装置92以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態における各装置(送信装置20、又は受信装置10)において各種データを保存するための記憶装置は、主記憶装置92又は補助記憶装置93により実現されてもよく、プロセッサ91に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態における一時記憶部140、240は、主記憶装置92又は補助記憶装置93により実現されてもよい。
記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態における各装置(送信装置20、又は受信装置10)が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ))とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
ネットワークインタフェース94は、無線又は有線により、通信ネットワーク97に接続するためのインタフェースである。ネットワークインタフェース94は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース94により、通信ネットワーク97を介して接続された外部装置98Aと情報のやり取りが行われてもよい。なお、通信ネットワーク97は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか、又は、それらの組み合わせであってよく、コンピュータ90と外部装置98Aとの間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
デバイスインタフェース95は、外部装置98Bと直接接続するUSB等のインタフェースである。
外部装置98Aはコンピュータ90とネットワークを介して接続されている装置である。外部装置98Bはコンピュータ90と直接接続されている装置である。
外部装置98A又は外部装置98Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、又はタッチパネル等のデバイスであり、取得した情報をコンピュータ90に与える。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
また、外部装置98A又は外部装置98Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
また、外部装置98Aまた外部装置98Bは、記憶装置(メモリ)であってもよい。例えば、外部装置98Aはネットワークストレージ等であってもよく、外部装置98BはHDD等のストレージであってもよい。
また、外部装置98A又は外部装置98Bは、前述した実施形態における各装置(送信装置20、又は受信装置10)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ90は、外部装置98A又は外部装置98Bの処理結果の一部又は全部を送信又は受信してもよい。
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、及び/又は状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ又は専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、及び/又は状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は電子回路を含む装置等を含んでよい。
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した全ての実施形態において、数値又は数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
10 受信装置
10A 受信装置
20 送信装置
30 通信ネットワーク
50 送信装置
50A 送信装置
60 受信装置
90 コンピュータ
91 プロセッサ
92 主記憶装置
93 補助記憶装置
94 ネットワークインタフェース
95 デバイスインタフェース
96 バス
97 通信ネットワーク
98A 外部装置
98B 外部装置
110 受信処理部
110A アプリケーション装置
120 処理部
130 オフロード判定部
140 一時記憶部
150 通信部
160 アンテナ
170 通信部
210 送信処理部
210A 送信処理装置
220 処理部
240 一時記憶部
250 通信部
260 アンテナ
270 通信部
280 センサ

Claims (11)

  1. アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信する、受信部と、
    前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する処理部と、
    を備え、
    前記受信部は、前記データを送信するための接続の終了要求を受信し、
    前記処理部は、前記終了要求が受信された後、前記接続要求の受信を前記アプリケーションに通知する
    通信装置。
  2. 前記受信部は、複数の前記データを受信し
    前記処理部は、複数の前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する
    請求項1に記載の通信装置。
  3. 少なくとも前記データ又は前記アプリケーションのいずれかに関する情報に基づき、前記接続要求の受信を前記アプリケーションに通知するタイミングを決定する決定部を備え、
    前記処理部は、前記決定部で決定された前記タイミングに基づいて、前記接続要求の受信を前記アプリケーションに通知する
    請求項1又は2に記載の通信装置。
  4. 前記決定部は、前記データが受信される前の第1タイミング、又は前記データが受信された後の第2タイミングを決定する
    請求項3に記載の通信装置。
  5. 前記決定部は、少なくとも前記データ又は前記アプリケーションのいずれかの優先度を決定し、
    前記優先度が第1優先度のときは、前記第1タイミングを前記接続要求の受信を前記アプリケーションに通知するタイミングとして決定し、
    前記優先度が前記第1優先度より低い第2優先度のときは、前記第2タイミングを前記接続要求の受信を前記アプリケーションに通知するタイミングとして決定する
    請求項4に記載の通信装置。
  6. 前記第2タイミングは、前記受信部で受信されたデータの受信状況に基づくタイミングである
    請求項4又は5に記載の通信装置。
  7. 前記処理部は、少なくとも前記データ又は前記アプリケーションのいずれかに関する情報を、前記アプリケーションから取得する
    請求項3~6のいずれか一項に記載の通信装置。
  8. 前記受信部は、前記接続要求を含むパケットを受信し、
    前記処理部は、少なくとも前記データ又は前記アプリケーションのいずれかに関する情報を、前記パケットのヘッダから取得する
    請求項3~7のいずれか一項に記載の通信装置。
  9. 前記処理部は、前記接続要求の受信を前記アプリケーションに通知した後、前記アプリケーションから前記データの読み出し要求を取得し、前記読み出し要求に基づき前記データを前記アプリケーションに提供する
    請求項1から8のいずれか一項に記載の通信装置。
  10. 前記受信部で受信されたデータを格納する記憶部を備え、
    前記処理部は、前記読み出し要求に基づいて前記データを記憶部から読み出し、読み出した前記データを前記アプリケーションに提供する
    請求項9に記載の通信装置。
  11. アプリケーション用のデータを送信するための接続要求を受信し、
    前記接続要求を受信した後、前記データを受信し、
    前記データを受信した後、前記接続要求の受信を前記アプリケーションに通知し、
    前記データを送信するための接続の終了要求を受信し、
    前記終了要求が受信された後、前記接続要求の受信を前記アプリケーションに通知する
    通信方法。
JP2022542863A 2020-08-12 2021-08-11 通信装置及び通信方法 Active JP7448014B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2024025830A JP2024052829A (ja) 2020-08-12 2024-02-22 通信装置、通信方法及びプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2020136428 2020-08-12
JP2020136428 2020-08-12
PCT/JP2021/029629 WO2022034896A1 (ja) 2020-08-12 2021-08-11 通信装置及び通信方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2024025830A Division JP2024052829A (ja) 2020-08-12 2024-02-22 通信装置、通信方法及びプログラム

Publications (3)

Publication Number Publication Date
JPWO2022034896A1 JPWO2022034896A1 (ja) 2022-02-17
JPWO2022034896A5 JPWO2022034896A5 (ja) 2023-04-26
JP7448014B2 true JP7448014B2 (ja) 2024-03-12

Family

ID=80247982

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022542863A Active JP7448014B2 (ja) 2020-08-12 2021-08-11 通信装置及び通信方法
JP2024025830A Pending JP2024052829A (ja) 2020-08-12 2024-02-22 通信装置、通信方法及びプログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2024025830A Pending JP2024052829A (ja) 2020-08-12 2024-02-22 通信装置、通信方法及びプログラム

Country Status (4)

Country Link
US (2) US11917020B2 (ja)
EP (1) EP4199439A1 (ja)
JP (2) JP7448014B2 (ja)
WO (1) WO2022034896A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007189383A (ja) 2006-01-12 2007-07-26 Matsushita Electric Ind Co Ltd Tcp/ip通信中継方法及びtcp/ip通信中継装置
JP2009266202A (ja) 2008-04-04 2009-11-12 Canon Inc セッション管理システム、その制御方法、及びクライアント端末
JP2014103553A (ja) 2012-11-20 2014-06-05 Toshiba Corp 通信装置、通信方法およびプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003008611A (ja) * 2001-06-21 2003-01-10 Mitsubishi Electric Corp データ中継装置およびデータ中継方法
US7493427B2 (en) * 2004-07-14 2009-02-17 International Business Machines Corporation Apparatus and method for supporting received data processing in an offload of network protocol processing
JP4284248B2 (ja) * 2004-08-20 2009-06-24 日本電信電話株式会社 アプリケーションサービス拒絶攻撃防御方法及びシステム並びにプログラム
CN102355462B (zh) * 2011-10-09 2015-05-20 大唐移动通信设备有限公司 一种实现tcp传输的方法及装置
US9712621B1 (en) * 2013-02-11 2017-07-18 Amazon Technologies, Inc. Information sharing endpoint
JP2015002397A (ja) * 2013-06-14 2015-01-05 株式会社日立製作所 通信装置及び通信システム及び通信方法
JP6962467B2 (ja) * 2018-06-15 2021-11-05 日本電信電話株式会社 ネットワーク管理システム、管理装置、中継装置、方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007189383A (ja) 2006-01-12 2007-07-26 Matsushita Electric Ind Co Ltd Tcp/ip通信中継方法及びtcp/ip通信中継装置
JP2009266202A (ja) 2008-04-04 2009-11-12 Canon Inc セッション管理システム、その制御方法、及びクライアント端末
JP2014103553A (ja) 2012-11-20 2014-06-05 Toshiba Corp 通信装置、通信方法およびプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FreeBSD, Accept Filter,2015年03月04日,<URL> https://web.archive.org/web/20150304173901/https://kaworu.jpn.org/freebsd/Accept_Filter
Linux socket accepシステムコールとTCP_DEFER_ACCEPT,2017年10月02日,<URL> https://web.archive.org/web/20171002072923/https://kaworu.jpn.org/kaworu/2011-09-10-1.php
鈴木 章太,初心者でもすんなり分かる Linuxカーネルの仕組み 第4回 TCP/IPネットワーク,日経Linux 第16巻 第8号 NIKKEI Linux,日本,日経BP社 Nikkei Business Publications,Inc.,2014年07月08日,P.112-117

Also Published As

Publication number Publication date
WO2022034896A1 (ja) 2022-02-17
US20230300202A1 (en) 2023-09-21
JPWO2022034896A1 (ja) 2022-02-17
JP2024052829A (ja) 2024-04-12
US11917020B2 (en) 2024-02-27
EP4199439A1 (en) 2023-06-21
US20240171639A1 (en) 2024-05-23

Similar Documents

Publication Publication Date Title
US11792114B2 (en) System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
US9155046B2 (en) Optimizing semi-active workloads
US11134140B2 (en) TCP processing for devices
US8996718B2 (en) TCP-aware receive side coalescing
EP3482298B1 (en) Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks
US8259728B2 (en) Method and system for a fast drop recovery for a TCP connection
KR20070002037A (ko) 네트워크에서 이용하기 위한 방법, 장치, 시스템 및 기계판독가능 매체
CN113285931B (zh) 流媒体的传输方法、流媒体服务器及流媒体系统
EP2722768A1 (en) TCP processing for devices
WO2014008793A1 (zh) 一种tcp数据传输方法、tcp卸载引擎及系统
US9794354B1 (en) System and method for communication between networked applications
US8588095B2 (en) Data conversion device and data conversion method
US10708816B2 (en) Communication apparatus, communication method, and non-transitory computer-readable storage medium for performing packetization processing that does not depend on a network interface
JP7448014B2 (ja) 通信装置及び通信方法
JP7499035B2 (ja) 通信装置及び通信方法
US20210006264A1 (en) Dma transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
US20140247718A1 (en) Reducing TCP Timeouts due to Incast Collapse at a Network Switch
JP6802295B2 (ja) 転送装置、転送方法及びプログラム
WO2022092075A1 (ja) 通信装置及び通信方法
CN113645178B (zh) 增强udp网络协议以有效传输大型数据单元的技术
US20160218984A1 (en) Communication device and control method of communication device
US10601601B2 (en) Information processing system, information processing method, non-transitory storage medium storing program, and information processing device
US11102150B2 (en) Communication apparatus and control method for communication apparatus
JP5423404B2 (ja) オフロード処理装置、および、通信システム
US20150288785A1 (en) Communication apparatus and transmitting method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230210

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: 20240130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240212

R151 Written notification of patent or utility model registration

Ref document number: 7448014

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151