JP7148435B2 - パケット通信システム及び方法 - Google Patents

パケット通信システム及び方法 Download PDF

Info

Publication number
JP7148435B2
JP7148435B2 JP2019032737A JP2019032737A JP7148435B2 JP 7148435 B2 JP7148435 B2 JP 7148435B2 JP 2019032737 A JP2019032737 A JP 2019032737A JP 2019032737 A JP2019032737 A JP 2019032737A JP 7148435 B2 JP7148435 B2 JP 7148435B2
Authority
JP
Japan
Prior art keywords
packet
packet number
bits
small size
significant
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
JP2019032737A
Other languages
English (en)
Other versions
JP2020137093A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019032737A priority Critical patent/JP7148435B2/ja
Priority to US16/564,426 priority patent/US11252265B2/en
Publication of JP2020137093A publication Critical patent/JP2020137093A/ja
Application granted granted Critical
Publication of JP7148435B2 publication Critical patent/JP7148435B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Communication Control (AREA)

Description

本発明は、概して、パケット通信に関する。
パケット通信の一例として、IoT(Internet of things)サーバとIoT機器間で行われるパケット通信がある。IoTサーバが、パケット通信におけるサーバの一例であり、IoT機器が、パケット通信におけるクライアントの一例である。IoTでは、センサー機器等の多くのIoT機器がクライアントとなり得る。
あらゆるモノがインターネットに繋がるIoT化が進む中、IoT機器のセキュリティを担保することが重要な社会課題の一つとなっている。IoTは例えば以下の特徴を持つため、それに合わせたセキュリティ技術が求められている。
(1)低スペック。IoT機器のプロセッサ速度、メモリ容量及びバッテリ容量等は一般に低い。故に、少ないリソースでセキュリティを実現できることが求められる。
(2)多数のIoT機器。IoT機器は2020年には数百億台に達するともいわれており、それに伴いネットワークを流れる通信データ量も増大する。通信インフラを効率的に利用するためには、少ない通信データ量でセキュリティを実現することが求められる。
(3)リアルタイム性。IoT機器が典型的に利用されるユースケースの一例として、センサデータやプローブデータの送信がある。このようなデータは、リアルタイム性が重視される。このため、IoTに関するパケット通信では、パケット到達保証のあるプロトコルである高信頼プロトコル(例えばTCP(Transmission Control Protocol))ではなく、パケット到達保証が無いが故に信頼性は低いが高信頼プロトコルに比して高速なパケット通信が可能なプロトコルである高速プロトコル、例えばUDP(User Datagram Protocol)が採用される。
このような特徴によれば、高速プロトコル上でセキュアなパケット通信を実現することが望まれる。
セキュアなパケット通信を実現する方法の一例として、暗号化を挙げることができる。暗号化に関する技術として、例えば特許文献1に開示の技術が知られている。
特開2014-147099号公報
UDP上でセキュアなパケット通信を可能にするプロトコルとして、DTLS(Datagram Transport Layer Security)がある。DTLSは、UDP上で動作するTLSであると言うことができる。具体的には、UDPを用いて送信されるデータが暗号化される場合、暗号化されたデータを含んだパケットの欠落が発生すると、同期ずれが起こり、故に、パケット内のデータを復号できなくなるが、DTLSでは、DTLSヘッダにパケット番号が記述されるようになっており、当該パケット番号を用いて同期ずれからの復帰が可能である。DTLSでは、パケット番号は、典型的には、セッションの更新の都度に更新されるepochと、セッションにおける通し番号であるsequence_numberとから構成されており、故に、一つのセッションでは、パケット番号は、シーケンス番号に相当する。
DTLSには次の課題がある。すなわち、本来UDPは、TCPよりも処理負荷の軽いプロトコルであるが、DTLS/UDP(DTLS over UDP)は、TLS/TCP(TLS over TCP)には無かったパケット番号がヘッダに付加される。このため、DTLS/UDPに従うパケットは、TLSに従うパケットよりも通信負荷の重いパケットとなってしまう。結果として、パケット通信効率が低下する。上述のような逆転現象を解消することが望まれる。このような課題は、DTLS/UDPに限らず、高速プロトコル(具体的には、パケット番号が付加されずパケット到達保証の無いプロトコル)上でセキュアなプロトコル(具体的には、パケット番号をヘッダに記述しセキュアなパケット通信を可能にするプロトコル)を用いたパケット通信についてもあり得る。
特許文献1には、フルシーケンス番号から導かれる部分シーケンス番号を出力パケットが含むこと、及び、パケットのオーバヘッドの低減といった記述がある。
しかし、特許文献1の技術は、「ここでは、暗号化及び再配列のために単一のフルシーケンス番号を用いる技術が、記述される。これら技術は、各パケットのオーバヘッドを低減し、ハンドオーバの間、RLCについて同期化されたシーケンス番号を提供しうる。」及び「受信パケットの再配列、欠落したパケットの検出、誤って受信された又は欠落した受信パケットの再送信のような様々なパケットのためにラジオリンク制御(RLC)を利用しうる。」とあるように、送達確認機能(言い換えればパケット到達保証機能)のあるRLCに関する技術である。特許文献1は、上述の課題を開示も示唆もしていない。このため、特許文献1の技術を利用して、上述の課題を解決することはできない。
高速プロトコル上のセキュアなプロトコルに従うパケットが、小サイズヘッダを有する。受信システムにおいて、小サイズヘッダを有するパケットの処理に用いられるパケット番号が、受信されたパケットについてのパケット番号を示す情報を基に推定される。N個のパケット(Nは2以上の整数)のうちの1個以上のパケットの各々におけるヘッダが、当該パケットのパケット番号の一部分を有する第1のヘッダと、当該パケットのパケット番号を有さない第2のヘッダとのいずれかである小サイズヘッダである。小サイズヘッダが第1のヘッダの場合、N個のパケットの各々におけるヘッダが第1のヘッダである。小サイズヘッダが第2のヘッダの場合、N個のパケットのうち1個のパケット以外のパケットの各々におけるヘッダが第2のヘッダである。
高速プロトコル上のセキュアなプロトコルに従うパケットの通信効率の低下を低減することができる。
実施例1に係るクライアントサーバシステムの構成を示す。 IoTサーバの構成を示す。 IoT機器の構成を示す。 IoTサーバが有するサーバパケットDBの構成を示す。 IoT機器が有するサーバパケットDBの構成を示す。 IoTサーバが有するクライアントパケットDBの構成を示す。 IoT機器が有するクライアントパケットDBの構成を示す。 比較例に従うパケットの構成を示す。 実施例1に係るパケットの構成を示す。 実施例1に係るパケット送受信処理の流れを示す。 実施例2に係るIoTサーバ及びIoT機器の機能を示す。 大サイズパケットの構成を示す。 小サイズパケットの構成を示す。 実施例2に係るパケット送受信処理の流れを示す。
以下の説明では、「インターフェース部」は、1以上のインターフェースでよい。当該1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明では、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、以下の説明では、「記憶部」は、メモリ部とPDEV部の少なくとも一部とのうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明では、「演算部」は、1以上の演算モジュールである。少なくとも1つの演算モジュールは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種の演算モジュールでもよい。少なくとも1つの演算モジュールとしてのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つの演算モジュールは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義の演算モジュールでもよい。
また、以下の説明では、「xxxDB」といった表現にて(「DB」はデータベースの略)、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「kkk部」(インターフェース部、記憶部及び演算部を除く)の表現にて機能を説明することがあるが、機能は、1以上のコンピュータプログラムが演算部によって実行されることで実現されてもよいし、1以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよい。プログラムが演算部によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶部及び/又はインターフェース部等を用いながら行われるため、機能は演算部の少なくとも一部とされてもよい。機能を主語として説明された処理は、演算部あるいはその演算部を有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別する場合は、参照符号を使用することがある。例えば、受信処理部を区別しない場合には、「受信処理部130」と言い、受信処理部を区別する場合には、「受信処理部130S」、「受信処理部130C」のように言うことがある。
以下、図面を参照して、本発明の幾つかの実施例を説明する。なお、以下の実施例では、DTLS/UDPが採用される。すなわち、高速プロトコルとしてUDPが採用され、高速プロトコル上のセキュアなプロトコルとしてDTLSが採用される。従って、以下の実施例で送受信されるパケットは、DTLS/UDPに従うパケットである。しかし、本発明は、DTLS/UDP以外にも適用可能である。
図1は、実施例1に係るクライアントサーバシステムの構成を示す。
複数のIoT機器101の各々がクライアントの一例として存在し、IoTサーバ103が、サーバの一例として存在する。複数のIoT機器101の各々とIoTサーバ103との間で、無線通信ネットワークのような通信ネットワーク102を介して、通信が行われる。
IoT機器101として、種々の機器を採用し得る。例えば、各IoT機器101は、工場に設置されているセンサー機器(及び他種の機器)でよく、IoTサーバ103は、当該工場内の各IoT機器101からデータを収集するサーバでよい。
本実施例では、IoT機器101とIoTサーバ103のいずれも、パケットを送信することとパケットを受信することのいずれも可能である。すなわち、IoT機器101は、送信システムの一例としても受信システムの一例としても動作可能であり、同様に、IoTサーバ103は、受信システムの一例としても送信システムの一例としても動作可能である。しかし、それに限らず、IoT機器101は、送信システムの一例として動作可能であるが受信システムの一例としては動作不可能であってもよい。また、IoTサーバ103は、受信システムの一例として動作可能であるが送信システムの一例としては動作不可能でもよい。
また、「受信システム」及び「送信システム」のうちの少なくとも一つは、インターフェース部、記憶部及びそれらに接続された演算部を有する計算機システム(例えば、一つ以上の物理的な計算機)でもよいし、クラウド基盤のような計算機システム上に実現されるシステム(例えばクラウドコンピューティングサービス)でもよい。なお、本発明は、IoTが有する上述した特徴と同様の特徴(低スペック、多数の送信システム、リアルタイム性)を有するパケット通信システムに特に有用である。
図2は、IoTサーバ103の構成を示す。
IoTサーバ103は、典型的には計算機システム(1以上の計算機)であり、インターフェース部201、記憶部202及びそれらに接続された演算部203を有する。
インターフェース部201経由で、各IoT機器101と通信が行われる。
記憶部202は、演算部203により実行される1以上のコンピュータプログラムや演算部203により参照又は更新される情報を格納する。そのような情報の一例として、サーバパケットDB211C、及び、クライアントパケットDB212Sがある。IoTサーバ103にとっては、サーバパケットDB211Cが、送信時のパケット番号が記録される送信パケット情報の一例であり、クライアントパケットDB212Sが、受信したパケットについてのパケット番号が記録される受信パケット情報の一例である。
演算部203が1以上のコンピュータプログラムを実行することにより、送信処理部110S及び受信処理部130Sといった機能が実現される。
送信処理部110Sは、パケットの送信を行う。具体的には、例えば、送信処理部110Sは、パケット生成部221Sと、パケット送信部222Sとを有する。パケット生成部221Sは、DTLS/UDPに従うパケットを生成する。パケット送信部222Sは、当該生成されたパケットを送信する。
受信処理部130Sは、パケットを受信し、当該パケットを処理する。具体的には、例えば、受信処理部130Sは、パケット番号制御部231Sと、パケット処理部232Sとを有する。パケット番号制御部231Sは、クライアントパケットDB212Sを基に、小サイズヘッダを有する受信したパケットについてのパケット番号を推定する。パケット処理部232Sは、当該推定されたパケット番号を用いて、受信されたパケットの処理を行う。
図3は、IoT機器101の構成を示す。
IoT機器101は、典型的にはセンサー機器のように少なくともIoT機器101に比べて低スペックの機器であり、インターフェース部301、記憶部302及びそれらに接続された演算部303を有する。
インターフェース部301経由で、IoTサーバ103と通信が行われる。
記憶部302は、演算部303により実行される1以上のコンピュータプログラムや演算部303により参照又は更新される情報を格納する。そのような情報の一例として、クライアントパケットDB211C、及び、サーバパケットDB212Cがある。IoT機器101にとって、クライアントパケットDB211Cが、送信時のパケット番号が記録される送信パケット情報の一例であり、サーバパケットDB212Cが、受信したパケットについてのパケット番号が記録される受信パケット情報の一例である。
演算部303が1以上のコンピュータプログラムを実行することにより、送信処理部110C及び受信処理部130Cといった機能が実現される。送信処理部110C及び受信処理部130Cは、上述の送信処理部110S及び受信処理部130Sと同様である。すなわち、送信処理部110Cは、パケット生成部221Cと、パケット送信部222Cとを有する。受信処理部130Cは、パケット番号制御部231Cと、パケット処理部232Cとを有する。
図4は、IoTサーバ103が有するサーバパケットDB211Sの構成を示す。図5は、IoT機器101が有するサーバパケットDB211Cの構成を示す。
サーバパケットDB211は、例えばセッション毎にエントリを有する。各エントリは、例えば、セッション#401、パケット#402及びOTHERS403といった情報を保持する。セッション#401は、セッションの番号を示す。パケット#402は、パケットのパケット番号を示す。OTHERS403は、セッションの番号とパケットの番号以外の情報である。少なくともOTHERS403は、無くてもよい。サーバパケットDB211は、セッション毎にエントリを有するものに限られず、例えば、セッションとパケット番号の一部毎にエントリを有するものであってもよい。
DTLS/UDPでは、パケット番号は、epochと、sequence_numberで構成される番号である。epochは、セッションにおけるコネクションの生成に応じて更新される番号であり、第1種の番号の一例である。sequence_numberは、同一のコネクションにおいて送信の都度に更新される番号であり、第2種の番号の一理である。epochは、例えば2バイト(16ビット)であり、sequence_numberは、例えば6バイト(48ビット)である。
IoTサーバ103が有するサーバパケットDB211Sに記録されるパケット#402Sは、IoTサーバ103から送信されるパケットについてのパケット番号を示す。IoT機器101が有するサーバパケットDB211Cに記録されるパケット#402Cは、IoTサーバ103から送信されるパケットについてのパケット番号を示す。
図6は、IoTサーバ103が有するクライアントパケットDB212Sの構成を示す。図7は、IoT機器101が有するクライアントパケットDB212Cの構成を示す。
クライアントパケットDB212は、例えばセッション毎にエントリを有する。各エントリは、例えば、セッション#601、パケット#602及びOTHERS603といった情報を保持する。情報601~603は、情報401~403と同様である。クライアントパケットDB211は、セッション毎にエントリを有するものに限られず、例えば、セッションとパケット番号の一部毎にエントリを有するものであってもよい。
IoTサーバ103が有するクライアントパケットDB211Sに記録されるパケット#402Sは、IoTクライアント103から送信されるパケットについてのパケット番号を示す。IoT機器101が有するクライアントパケットDB211Cに記録されるパケット#402Cは、IoTクライアント103から送信されるパケットについてのパケット番号を示す。
本実施例では、説明を簡単にするために、IoT機器101とセッションIDは1:1であるが(1つのIoT機器101とIoTサーバ103との間では1つのセッションが行われるが)、IoT機器101とセッションIDは1:多でもよい。
図8は、比較例に従うパケットの構成を示す。
図8に例示するように、比較例に従うパケット800は、ヘッダ15とopaque806とを有する。opaque806は、パケットの本体に相当し、典型的には暗号化データである。暗号化データが復号されたデータを「メッセージ」と言うことができる。
ヘッダ15は、例えば、ContentType801、ProtocolVersion802、パケット番号810(epoch803及びsequence_number804)、及びlength805を有する。
ContentType801は、メッセージのコンテンツのタイプを示し、例えば1バイトの情報である。ProtocolVersion802は、DTLSのバージョンを示し、例えば2バイトの情報である。epoch803は、例えば2バイトの情報である。sequence_number804は、例えば6バイトの情報である。従って、パケット番号810は、例えば8バイトの情報である。length805は、パケット全体の長さを示す。
図9は、実施例1に係るパケットの構成を示す。
実施例1に係るパケット900は、ヘッダ25とopaque806とを有する。ヘッダ25は、第1のヘッダの一例である。第1のヘッダは、小サイズヘッダの一例である。「小サイズヘッダ」は、ヘッダ15よりも小サイズのヘッダである。
ヘッダ25は、パケット番号810に代えて、パケット番号810の一部分である部分パケット番号910を有する。部分パケット番号910は、パケット番号810を構成するPビット(ここではP=64)のうちの最下位nビット(n<P)を含む(ここではn=6)。nの値は、許容される同期ずれを基に決定されればよい。すなわち、この構成は、本願発明者が鋭意検討した結果によれば、同期ずれが生じたとしても当該同期ずれが許容される同期ずれを超えなければ、パケット番号の一部分を用いて、許容される同期ずれを超える同期ずれを防ぐことができるという知見に至る。そして、パケット番号の一部分は、パケット番号の最下位nビットである。これにより、パケットのヘッダのサイズを小さくすることができるため、高効率なパケット通信を実現すること、具体的には、許容される同期ずれを超える同期ずれの防止を高効率に実現することができる。また、本実施例では、高効率且つセキュアなパケット通信を実現することができるが、本実施例でいう「セキュア」は、特に、機密性及び完全性に相当する。
本実施例では、部分パケット番号910は、lsb_epoch903、及び、lsb_sequence_number904で構成される。lsb_epoch903は、epochを構成するVビット(ここではV=16)のうちの最下位mビット(m<V)である(ここではm=2)。lsb_sequence_number904は、上述の最下位nビットは、sequence_numberを構成するWビット(ここではW=48ビット)のうちの最下位nビットである(n<W<P)。これにより、後述するように、部分パケット910から、セッションを推定し、推定されたセッションにおいて、高効率なパケット通信を実現することができる。なお、上記n、m、P、V及びWの各々は自然数である。特に、少なくともPは、2以上の整数である。また、n及びmのうちの少なくとも一つの値は、IoT機器101毎に異なってもよいしセッション毎に異なってもよい。
図10は、実施例1に係るパケット送受信処理の流れを示す。
IoT機器101の送信処理部110CとIoTサーバ103の受信処理部130Sとの間でセッションx(セッション番号xのセッション)の確立のためのハンドシェークが行われる。当該ハンドシェークにおいて、例えば下記が行われる(図示せず)。
・送信処理部110C(例えばパケット生成部221C)は、クライアントパケットDB212Cのエントリに、セッションxの番号を示すセッション#601Cと、初期値(例えば全ビットが“0”)を示すパケット#602Cとを記述する。例えば、送信処理部110Cは、確立前のセッション(x-1)に対応したパケット#602Cを初期値(例えば全ビットが“0”)に更新し、且つ、当該確立前のセッション(x-1)に対応したセッション#601Cを、セッションxに対応したセッション#601Cに更新する。
・受信処理部110S(例えばパケット番号制御部231S)は、クライアントパケットDB212Sのエントリに、セッションxの番号を示すセッション#601Sと、初期値(例えば全ビットが“0”)を示すパケット#602Sとを記述する。例えば、受信処理部110Sは、確立前のセッション(x-1)に対応したパケット#602Sを初期値(例えば全ビットが“0”)に更新し、且つ、当該確立前のセッション(x-1)に対応したセッション#601Sを、セッションxに対応したセッション#601Sに更新する。
その後、パケットの送受信の都度に、下記が行われる。
IoT機器101において、パケット生成部221Cが、パケット#602Cをインクリメントする、言い換えれば、パケット#602Cが示す番号を次の番号に更新する(S1001)。パケット生成部221Cが、パケット#602Cから部分パケット番号910(epochのうちの最下位mビットとsequence_numberのうちの最下位nビットで構成された情報)を取得する(S1002)。パケット生成部221Cが、取得した部分パケット番号910を含んだヘッダ25と、opaque806(メッセージの暗号化データ)とを含んだパケット900を生成する(S1003)。パケット送信部222Cが、生成されたパケット900をIoTサーバ103に送信する(S1004)。
なお、メッセージは、例えば、パケット#602C(フルサイズのパケット番号)を用いて暗号化される。また、パケットには、パケット#602C(フルサイズのパケット番号)とメッセージとの連結を含む連結データのMAC(例えば、HMAC(Hash-based MAC(Message Authentication Code))が含まれてよい。
IoTサーバ103において、受信処理部130Sが、パケット900を受信する(S1011)。
パケット番号制御部231Sが、受信したパケット900のヘッダ25から部分パケット番号910を取得する(S1012)。また、パケット番号制御部231Sが、パケット#602Sから部分パケット番号1010を取得する(S1013)。
パケット番号制御部231Sが、部分パケット番号910における上記最下位nビットが示す値が、部分パケット番号1010における上記最下位nビットが示す値より大きいか否かを判断する(S1014)。
S1014の判断結果が偽の場合(S1014:No)、すなわち、部分パケット番号910における上記最下位nビットが示す値が、部分パケット番号1010における上記最下位nビットよりも小さい場合、パケット番号制御部231Sは、パケット#602Sのsequence_numberのうち、最下位nビットの上位(W-n)ビット(ここでは上位42ビット)をインクリメントする(S1015)。つまり、最下位nビットが示す最大値を超えていわゆる桁上がりが生じたと推定される。
S1014の判断結果が真の場合(S1014:Yes)、パケット番号制御部231Sが、受信したパケット900についてのパケット番号が、パケット#602Sの上位(W-n)ビットと、取得された部分パケット番号910における上記最下位nビットとの結合であると推定する。一方、S1014の判断結果が偽の場合(S1014:No)、S1015が行われたため、パケット番号制御部231Sは、受信したパケット900についてのパケット番号が、パケット#602Sのインクリメント後の上位(W-n)ビットと、取得された部分パケット番号910における上記最下位nビットとの結合であると推定する。
パケット処理部232Sは、推定されたパケット番号を用いてパケット900の処理を行う。具体的には、例えば、以下の通りである。
すなわち、パケット処理部232Sは、推定されたパケット番号がOKか否かを判断する(S1016)。具体的には、例えば、下記が行われる。
・パケット処理部232Sは、推定されたパケット番号を用いてopaque806(暗号化データ)を復号する。
・パケット処理部232Sは、当該復号により得られたメッセージと、推定されたパケット番号を用いて、MACを算出する。
・パケット処理部232Sは、算出されたMACと、受信したパケット900が含むMACとが一致するか否かを判断する。MACが一致すれば、推定されたパケット番号がOKである。別の言い方をすれば、許容される同期ずれを超えた同期ずれが生じている場合、MACは不一致である。
S1016の判断結果が真の場合(S1016:Yes)、パケット処理部232Sが、パケット#602Sを、推定されたパケット番号に更新する(S1017)。
S1016の判断結果が偽の場合(S1016:No)、パケット処理部232Sが、同期ずれ用処理を行う(S1018)。同期ずれ用処理は、例えば下記うちのいずれかを含んだ処理でよい。
・パケット#602Sを元に戻す(ロールバック)。
・パケット#602Sを、S1016の判断結果が偽のケースにおける推定されたパケット番号に更新する。
以上が、実施例1の説明である。
なお、実施例1では、同期ずれが生じていない状況では、パケット送信前には、パケット#602Cとパケット#602Sは一致している。しかし、本発明はそのような例に限らず、同期ずれが生じていない状況で、パケット送信前には、パケット#602Cはパケット#602Sよりも1だけ大きくてもよい。例えば、IoT機器101において、パケット生成部221Cは、パケットの生成前にパケット#602Cを更新せず、更新前のパケット#602Cから部分パケット番号を取得し、当該取得した部分パケット番号910を含んだヘッダ910を有するパケット900を生成し、その後パケット#602Cを更新してもよい。
また、上記m及びnのうちの少なくとも一つの値は可変でよい。例えば、IoT機器101とIoTサーバ103とのハンドシェークにおいて、送信処理部110C及び受信処理部130Sは、IoT機器101とIoTサーバ103間の通信品質を特定することができる。そこで、上記m及びnのうちの少なくとも一つの値(例えば、sequence_numberのうちの最下位nビットにおけるnの値)が、当該ハンドシェークにおいて、送信処理部110C及び受信処理部130Sの少なくとも一方により(例えば受信処理部130S内のパケット番号制御部231Sにより)、特定された通信品質と、許容された同期ずれとに基づいて、決定されてよい。
また、詳細な説明は省略されているが、IoT機器においては、S1001の前に、パケット生成部221Cは、セッション番号とepochをキーにクライアントパケットDB212Cを検索し、パケット#602Cを取得してもよい。IoTサーバにおいては、S1013の前に、セッション番号とepoch最下位mビットをキーにクライアントパケットDB212Sを検索し、検索結果のうち最も大きな#602Sを取得してもよい。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図11は、実施例2に係るIoTサーバ及びIoT機器の機能を示す。
IoTサーバ1103の送信処理部1110S(パケット生成部1221S及びパケット送信部1222S)及び受信処理部1130S(パケット番号制御部1231S及びパケット処理部1232S)が、実施例1での送信処理部110S及び受信処理部130Sと異なる。
同様に、IoT機器1101の送信処理部1110C(パケット生成部1221C及びパケット送信部1222C)及び受信処理部1130C(パケット番号制御部1231C及びパケット処理部1232C)が、実施例1での送信処理部110C及び受信処理部130Cと異なる。
実施例2では、小サイズヘッダとして、パケット番号に代えて部分パケット番号を有するヘッダに代えて、パケット番号及び部分パケット番号のいずれも有しないヘッダが採用される。具体的には、実施例2では、N回のパケット送信のうちの1回のパケット送信では、図12に示す大サイズパケット1200が送信され、N回のパケット送信のうちの残りのパケット送信の各々では、図13に示す小サイズパケット1300が送信される。
図12は、大サイズパケット1200の構成を示す。
大サイズパケット1200は、大サイズヘッダ35(第3のヘッダの一例)とopaque806とを有する。大サイズヘッダ35は、パケット番号810(具体的には、図8に示した比較例に従う情報801~806)と、パケット番号810を有するか否かを示すflag12とを有する。パケット番号810がある場合、flag12の値は“0”である。パケット番号810が無い場合、flag12の値は“1”である。
図13は、小サイズパケット1300の構成を示す。
小サイズパケット1200は、小サイズヘッダ45(第2のヘッダの一例)とopaque806とを有する。小サイズヘッダ45は、大サイズヘッダ35が有する情報のうち、パケット番号810以外を有する。言い換えれば、小サイズヘッダ45は、パケット番号810のサイズ分(パケット番号810を有さない分)、大サイズヘッダ35よりもサイズが小さい。
上述したように、N回のパケット送信のうち1回のパケット送信でのみ、大サイズパケット1200が送信され、それ以外のパケット送信では小サイズパケット1300が送信される。これにより、N回のパケット送信全体について、ヘッダのデータ量を削減することができ、故に、DTLS/UDPの効率的なパケット通信が可能である。なお、Nの値は、例えば記憶部302(及び202)に設定される。Nの値は、IoT機器101毎に異なってもよいしセッション毎に異なってもよい。
図14は、実施例2に係るパケット送受信処理の流れを示す。
IoT機器1101の送信処理部1110CとIoTサーバ1103の受信処理部1130Sとの間で実施例1と同様のハンドシェークが行われた後、パケットの送受信の都度に、下記が行われる。
IoT機器1101において、パケット生成部1221Cが、パケット#602Cをインクリメントする(S1401)。パケット生成部1221Cが、パケット#602Cを取得する(S1402)。パケット生成部1221Cが、パケット送信回数XがNに達しているか否かを判断する(S1403)。パケット送信回数Xは、例えば記憶部302に格納されている。
S1403の判断結果が真の場合(S1403:Yes)、パケット生成部1221Cが、Xを0(初期値)に戻し(S1404)、大サイズパケット1200を生成する(S1405)。パケット送信部1222Cが、生成された大サイズパケット1200をIoTサーバ1103に送信する(S1406)。
S1403の判断結果が偽の場合(S1403:No)、パケット生成部1221Cが、Xをインクリメントし(S1407)、小サイズパケット1300を生成する(S1408)。パケット送信部1222Cが、生成された小サイズパケット1300をIoTサーバ1103に送信する(S1409)。
IoTサーバ1103において、受信処理部1130Sが、パケット1200又は1300を受信する(S1411)。パケット番号制御部1231Sが、flag12が“0”か否かを判断する(S1412)。
S1412の判断結果が偽の場合(S1412:No)、S1413が行われる。すなわち、パケット番号制御部1231Sが、セッションIDをキーにパケット#602Sを取得する。この取得されたパケット#602Sが、受信されたパケット1300についての推定されたパケット番号に相当する。パケット処理部1232Sは、当該推定されたパケット番号を用いて、opaque806(暗号化データ)を復号する。
S1412の判断結果が真の場合(S1412:Yes)、S1414が行われる。すなわち、パケット番号制御部1231Sが、大サイズヘッダ35からパケット番号810を取得する。パケット番号制御部1231Sが、パケット#602Sを取得し、パケット番頭のsequence number(C)とパケット#602Sのsequence number(D)を比較する(S1415)。
S1415の判断結果が真の場合(S1415:Yes)、S1416が行われる。すなわち、パケット処理部1232Sは、当該パケット番号810を用いて、opaque806(暗号化データ)を復号する。
S1415の判断結果が偽の場合(S1415:No)、パケット処理部1232Sが、同期ずれ用処理を行う(S1418)。同期ずれ用処理は、例えば下記うちのいずれかを含んだ処理でよい。
・パケット#602Sを変更しない(パケット#602Sを維持する)。
・パケット#602Sをインクリメントする。
S1413又はS1415の後、パケット処理部1232Sは、推定されたパケット番号がOKか否かを判断する(S1416)。具体的には、例えば、下記が行われる。
・パケット処理部1232Sは、S1413又はS1415の復号により得られたメッセージと、推定されたパケット番号を用いて、MACを算出する。
・パケット処理部1232Sは、算出されたMACと、受信したパケット1200又は1300が含むMACとが一致するか否かを判断する。MACが一致すれば、推定されたパケット番号がOKである。別の言い方をすれば、許容される同期ずれを超えた同期ずれが生じている場合、MACは不一致である。
S1416の判断結果が真の場合(S1416:Yes)、パケット処理部1232Sが、パケット#602Sをインクリメントする(S1417)。
S1416の判断結果が偽の場合(S1416:No)、パケット処理部1232Sが、同期ずれ用処理を行う(S1418)。同期ずれ用処理は、例えば下記うちのいずれかを含んだ処理でよい。
・パケット#602Sを変更しない(パケット#602Sを維持する)。
・パケット#602Sをインクリメントする。
以上が、実施例2の説明である。
また、Nの値(言い換えれば、flag12の値が“0”となる頻度)は可変でよい。例えば、IoT機器1101とIoTサーバ1103とのハンドシェークにおいて、送信処理部1110C及び受信処理部1130Sは、IoT機器1101とIoTサーバ1103間の通信品質を特定することができる。そこで、Nの値が、当該ハンドシェークにおいて、送信処理部1110C及び受信処理部1130Sの少なくとも一方により(例えば受信処理部1130S内のパケット番号制御部1231Sにより)、特定された通信品質と、許容された同期ずれとに基づいて、決定されてよい。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、上述の実施例では、IoTでのクライアントサーバ間の通信が例として採用されているが、本発明は、他のクライアントサーバ間通信にも適用可能であるし、クライアントサーバ間通信以外のデータ通信(例えばP2Pのデータ通信)にも適用可能である。
103…IoTサーバ

Claims (6)

  1. 高速プロトコル上のセキュアなプロトコルに従うパケットを送信する送信システムから当該パケットを受信する受信システムであって、
    前記送信システムから受信されたパケットについてのパケット番号を推定するパケット番号推定部と、
    前記推定されたパケット番号を用いて当該パケットの処理を行うパケット処理部と
    を備え、
    前記送信システムにより送信されるN個のパケット(Nは2以上の整数)の各々における小サイズヘッダが、当該パケットのパケット番号の一部分である部分パケット番号を有するヘダであり、
    前記小サイズヘッダにおける前記部分パケット番号は、前記パケット番号を構成するPビットのうちの最下位nビット(n<P)を含み、
    前記パケット番号推定部は、
    前記送信システムから受信されたパケットについてのパケット番号を示す情報である受信パケット情報に記録されているパケット番号を取得し、
    前記小サイズヘッダにおける前記最下位nビットと当該取得されたパケット番号のうちの最下位nビットとの関係から、前記小サイズヘッダを有するパケットについてのパケット番号を推定する、
    受信システム。
  2. 前記パケット番号は、セッションの更新に応じて更新される番号である第1種の番号と、同一のセッションにおいて送信の都度に更新される番号である第2種の番号とを含み、
    前記部分パケット番号は、前記第1種の番号を構成するVビットのうちの最下位mビットを更に含み、
    前記最下位nビットは、前記第2種の番号を構成するWビットのうちの最下位nビットである、
    請求項に記載の受信システム。
  3. 高速プロトコル上のセキュアなプロトコルに従うパケットを送信する送信システムから当該パケットを受信する受信システムとしてコンピュータを動作させるコンピュータプログラムであって、
    前記送信システムから受信されたパケットについてのパケット番号を推定するパケット番号推定ステップと、
    前記推定されたパケット番号を用いて当該パケットの処理を行うパケット処理ステップと
    を前記コンピュータに実行させ、
    前記送信システムにより送信されるN個のパケット(Nは2以上の整数)の各々における小サイズヘッダが、当該パケットのパケット番号の一部分である部分パケット番号を有するヘッダであり、
    前記小サイズヘッダにおける前記部分パケット番号は、前記パケット番号を構成するPビットのうちの最下位nビット(n<P)を含み、
    前記パケット番号推定ステップでは、
    前記送信システムから受信されたパケットについてのパケット番号を示す情報である受信パケット情報に記録されているパケット番号を取得し、
    前記小サイズヘッダにおける前記最下位nビットと当該取得されたパケット番号のうちの最下位nビットとの関係から、前記小サイズヘッダを有するパケットについてのパケット番号を推定する、
    コンピュータプログラム。
  4. 高速プロトコル上のセキュアなプロトコルに従うパケットを送信する送信システムから当該パケットを受信する受信システムが行う受信方法であって、
    前記送信システムから受信されたパケットについてのパケット番号を推定するパケット番号推定ステップと、
    前記推定されたパケット番号を用いて当該パケットの処理を行うパケット処理ステップと
    を有し、
    前記送信システムにより送信されるN個のパケット(Nは2以上の整数)の各々における小サイズヘッダが、当該パケットのパケット番号の一部分である部分パケット番号を有するヘッダであり、
    前記小サイズヘッダにおける前記部分パケット番号は、前記パケット番号を構成するPビットのうちの最下位nビット(n<P)を含み、
    前記パケット番号推定ステップでは、
    前記送信システムから受信されたパケットについてのパケット番号を示す情報である受信パケット情報に記録されているパケット番号を取得し、
    前記小サイズヘッダにおける前記最下位nビットと当該取得されたパケット番号のうちの最下位nビットとの関係から、前記小サイズヘッダを有するパケットについてのパケット番号を推定する、
    受信方法。
  5. パケットを送信する送信システムに実現される送信処理部と、
    当該パケットを受信する受信システムに実現される受信処理部と
    を有し、
    前記送信処理部は、高速プロトコル上のセキュアなプロトコルに従うパケットを前記受信システムに送信し、
    前記受信処理部は、前記送信システムから前記受信システムが受信しパケットについてのパケット番号を推定し、当該推定されたパケット番号を用いて当該パケットの処理を行い、
    前記送信処理部により送信されるN個のパケット(Nは2以上の整数)の各々における小サイズヘッダが、当該パケットのパケット番号の一部分である部分パケット番号を有するヘダであり、
    前記小サイズヘッダにおける前記部分パケット番号は、前記パケット番号を構成するPビットのうちの最下位nビット(n<P)を含み、
    前記受信処理部は、
    前記送信システムから受信されたパケットについてのパケット番号を示す情報である受信パケット情報に記録されているパケット番号を取得し、
    前記小サイズヘッダにおける前記最下位nビットと当該取得されたパケット番号のうちの最下位nビットとの関係から、前記小サイズヘッダを有するパケットについてのパケット番号を推定する、
    パケット通信システム。
  6. 送信システムにより、高速プロトコル上のセキュアなプロトコルに従うパケットを受信システムに送信する送信ステップと
    前記受信システムにより、小サイズヘッダを有するパケットを受信する受信ステップと
    前記受信システムにより、当該受信したパケットについてのパケット番号を推定するパケット番号推定ステップと
    前記受信システムにより、当該推定されたパケット番号を用いて当該パケットの処理を行うパケット処理ステップと
    を有し
    前記送信システムにより送信されるN個のパケット(Nは2以上の整数)の各々における前記小サイズヘッダが、当該パケットのパケット番号の一部分である部分パケット番号を有するヘダであり、
    前記小サイズヘッダにおける前記部分パケット番号は、前記パケット番号を構成するPビットのうちの最下位nビット(n<P)を含み、
    前記パケット番号推定ステップでは、
    前記送信システムから受信されたパケットについてのパケット番号を示す情報である受信パケット情報に記録されているパケット番号を取得し、
    前記小サイズヘッダにおける前記最下位nビットと当該取得されたパケット番号のうちの最下位nビットとの関係から、前記小サイズヘッダを有するパケットについてのパケット番号を推定する、
    パケット通信方法。
JP2019032737A 2019-02-26 2019-02-26 パケット通信システム及び方法 Active JP7148435B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019032737A JP7148435B2 (ja) 2019-02-26 2019-02-26 パケット通信システム及び方法
US16/564,426 US11252265B2 (en) 2019-02-26 2019-09-09 Packet communication system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019032737A JP7148435B2 (ja) 2019-02-26 2019-02-26 パケット通信システム及び方法

Publications (2)

Publication Number Publication Date
JP2020137093A JP2020137093A (ja) 2020-08-31
JP7148435B2 true JP7148435B2 (ja) 2022-10-05

Family

ID=72142807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019032737A Active JP7148435B2 (ja) 2019-02-26 2019-02-26 パケット通信システム及び方法

Country Status (2)

Country Link
US (1) US11252265B2 (ja)
JP (1) JP7148435B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008539678A (ja) 2005-04-26 2008-11-13 クゥアルコム・インコーポレイテッド 無線通信システムにおいてパケットを暗号化及び再配列すること

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613185B2 (en) * 2004-03-17 2009-11-03 Verizon Corporate Services Group Inc. Packet header compression for lossy channels
US8155156B2 (en) * 2006-09-15 2012-04-10 Alcatel Lucent Synchronization recovery for multiple-link communications
US8825900B1 (en) * 2011-04-05 2014-09-02 Nicira, Inc. Method and apparatus for stateless transport layer tunneling
KR102011171B1 (ko) * 2012-05-04 2019-10-21 인터디지탈 패튼 홀딩스, 인크 효율적인 매체 접근 제어 (mac) 헤더
US10542457B2 (en) * 2015-04-20 2020-01-21 Qualcomm Incorporated Enhanced compression formats for data compression
GB2571576B (en) * 2018-03-02 2022-06-15 Ssh Communications Security Oyj Processing packets in a computer system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008539678A (ja) 2005-04-26 2008-11-13 クゥアルコム・インコーポレイテッド 無線通信システムにおいてパケットを暗号化及び再配列すること

Also Published As

Publication number Publication date
JP2020137093A (ja) 2020-08-31
US20200274951A1 (en) 2020-08-27
US11252265B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
US9906630B2 (en) Processing data packets in performance enhancing proxy (PEP) environment
US10341302B2 (en) Optimized transport layer security
US9094374B2 (en) Bandwidth optimization for remote desktop protocol
US8200957B1 (en) Using SYN-ACK cookies within a TCP/IP protocol
US7636767B2 (en) Method and apparatus for reducing network traffic over low bandwidth links
US7948921B1 (en) Automatic network optimization
US8224966B2 (en) Reproxying an unproxied connection
US8954525B2 (en) Method and apparatus of performing remote computer file exchange
US10491329B1 (en) Transfer of data-redundancy encoded data via unreliable, connectionless protocol
US6983382B1 (en) Method and circuit to accelerate secure socket layer (SSL) process
US20090240764A1 (en) Network storage system for a download intensive environment
US11777915B2 (en) Adaptive control of secure sockets layer proxy
US10594661B1 (en) System and method for recovery of data packets transmitted over an unreliable network
CN113221146A (zh) 区块链节点间数据传输的方法和装置
US8386595B2 (en) Method and system of securing data over networks
JP7148435B2 (ja) パケット通信システム及び方法
CN115361455B (zh) 一种数据传输存储方法、装置以及计算机设备
EP3408989B1 (en) Detecting malware on spdy connections
US8176545B1 (en) Integrated policy checking system and method
US11943367B1 (en) Generic cryptography wrapper
KR100565774B1 (ko) 트랜스미션 컨트롤 프로토콜의 연결요청신호 포화를이용한 서비스거부공격의 차단방법
KR20230142147A (ko) 2단계 커밋 트랜잭션 처리 기반 샤드 간 트랜잭션 합의 프로토콜
Al-Hakeem et al. Development of Fast Reliable Secure File Transfer Protocol (FRS-FTP)
WO2024137079A1 (en) Methods for establishing a connection to a server with a cached certificate and devices thereof
Sipahioglu Modernizing Deep Space Network Security

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210430

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220428

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220922

R150 Certificate of patent or registration of utility model

Ref document number: 7148435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150