(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-27
(45)【発行日】2022-01-19
(54)【発明の名称】パケット集約装置、パケット分割装置、パケット通信システム、プログラム、パケット生成装置、パケット生成方法及び通信方法
(51)【国際特許分類】
H04L 49/9057 20220101AFI20220112BHJP
【FI】
H04L49/9057
(21)【出願番号】P 2017181740
(22)【出願日】2017-09-21
【審査請求日】2020-08-07
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100189913
【氏名又は名称】鵜飼 健
(72)【発明者】
【氏名】金井 遵
(72)【発明者】
【氏名】大西 直哉
(72)【発明者】
【氏名】松山 拓紀
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開2007-036834(JP,A)
【文献】特開2003-169092(JP,A)
【文献】特開2014-039111(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/951
(57)【特許請求の範囲】
【請求項1】
個別パケットを受信する受信部と、
前記受信部によって受信された複数の個別パケットを
、暗号化済みでない部分が連続するように集約した集約パケットを生成し、生成した前記集約パケットのうちの暗号化済みでないと判定した範囲を暗号化する、処理部と、
前記処理部によって暗号化された前記集約パケットを送信する送信部と、を備えた、パケット集約装置。
【請求項2】
前記処理部は、生成した前記集約パケットのうちの、データの完全性を保証するための符号が付与されていないと判定した範囲に、データの完全性を保証するための符号を付与する、請求項1に記載のパケット集約装置。
【請求項3】
前記処理部は、
前記集約パケットを、前記集約パケットに含まれる個別パケット単位で暗号化し、 前記集約パケットに対して、前記集約パケットに含まれる個別パケット単位でデータの完全性を保証するための符号を付与する、請求項1又は請求項2に記載のパケット集約装置。
【請求項4】
前記処理部は、前記集約パケットを複数回送信させるように前記送信部を制御する、請求項1乃至請求項
3のいずれか1項に記載のパケット集約装置。
【請求項5】
前記処理部は、前記集約パケットを少なくとも2種類の経路で送信させるように前記送信部を制御する、請求項
4に記載のパケット集約装置。
【請求項6】
複数の個別パケットを
、暗号化済みでない部分が連続するように集約した集約パケットを生成し、生成した前記集約パケットのうちの暗号化済みでないと判定した範囲を暗号化する、パケット集約装置によって生成され送信された前記集約パケットから、前記集約パケットに含まれる前記個別パケットを分割する、処理部を備えた、パケット分割装置。
【請求項7】
前記集約パケットに、データの完全性が保証されない個別パケットが含まれる場合、データの完全性が保証されない個別パケットを破棄する、請求項
6に記載のパケット分割装置。
【請求項8】
前記集約パケットに含まれる集約ヘッダーのデータの完全性が保証されない場合、前記集約パケット全体を破棄する、請求項
6又は請求項
7に記載のパケット分割装置。
【請求項9】
前記集約パケットに含まれる個別パケットのうち、データの完全性が保証される個別パケットを到着済みとして記録し、
前記集約パケットに含まれる個別パケットのうち、到着済みとして記録されている個別パケットを破棄する、請求項
6乃至請求項
8のいずれか1項に記載のパケット分割装置。
【請求項10】
前記集約パケットは、前記パケット集約装置によって、前記集約パケットに含まれる個別パケットのそれぞれに識別子を付与され、
前記処理部は、送信済みで且つ未到着の個別パケットを前記識別子によって判定し、未到着の個別パケットの再送を前記パケット集約装置に要求する、請求項
6乃至請求項
9のいずれか1項に記載のパケット分割装置。
【請求項11】
パケット集約装置とパケット分割装置とを含み、
前記パケット集約装置は、
複数の個別パケットを
、暗号化済みでない部分が連続するように集約した集約パケットを生成し、生成した前記集約パケットのうちの暗号化済みでないと判定した範囲を暗号化する、第1の処理部と、
複数の個別パケットが集約された集約パケットをパケット分割装置に送信する第1の通信部と、を備え、
前記パケット分割装置は、
前記パケット集約装置から送信された前記集約パケットを受信する第2の通信部と、
前記第2の通信部によって受信された集約パケットから、前記集約パケットに含まれる前記個別パケットを分割する第2の処理部と、を備える
パケット通信システム。
【請求項12】
パケット集約装置が備えるコンピュータを、
複数の個別パケットを
、暗号化済みでない部分が連続するように集約して、複数の個別パケットを含む集約パケットを生成し、生成した前記集約パケットのうちの暗号化済みでないと判定した範囲を暗号化し、処理部として機能させる、プログラム。
【請求項13】
パケット分割装置が備えるコンピュータを、
複数の個別パケットを
、暗号化済みでない部分が連続するように集約した集約パケットを生成し、生成した前記集約パケットのうちの暗号化済みでないと判定した範囲を暗号化する、パケット集約装置によって生成され送信された
前記集約パケットから、前記集約パケットに含まれる前記個別パケットを分割する、処理部として機能させる、プログラム。
【請求項14】
パケットを受信する受信部と、前記受信部によって受信された複数のパケットを、暗号化済みでない部分が連続するように集約した集約パケットデータを生成し、生成した前記集約パケットデータのうちの暗号化済みでないと判定した範囲を暗号化する、生成部を備え、
前記集約パケットデータは、前記複数のパケットのそれぞれがヘッダー部とペイロード部とを含み、前記集約パケットデータに含まれる複数のペイロード部が複数の鍵で暗号化され、前記集約パケットデータに含まれる複数のヘッダー部が同一の鍵で暗号化されている、パケット生成装置。
【請求項15】
前記集約パケットデータは、複数の前記ヘッダー部が連続している、請求項
14に記載のパケット生成装置。
【請求項16】
前記集約パケットデータは、前記パケットのそれぞれに対してデータの完全性を保証するための符号と識別子とが付与されている、請求項
14に記載のパケット生成装置。
【請求項17】
パケットを受信し、受信された複数のパケットを、暗号化済みでない部分が連続するように集約した集約パケットデータを生成し、生成した前記集約パケットデータのうちの暗号化済みでないと判定した範囲を暗号化する、パケット生成方法であって、
前記集約パケットデータは、前記複数のパケットのそれぞれがヘッダー部とペイロード部とを含み、前記集約パケットデータに含まれる複数のペイロード部が複数の鍵で暗号化され、前記集約パケットデータに含まれる複数のヘッダー部が同一の鍵で暗号化されている、パケット生成方法。
【請求項18】
パケット生成装置が備えるコンピュータを、
パケットを受信する受信部と、前記受信部によって受信された複数のパケットを、暗号化済みでない部分が連続するように集約した集約パケットデータを生成し、生成した前記集約パケットデータのうちの暗号化済みでないと判定した範囲を暗号化する、生成部として機能させ、
前記集約パケットデータは、前記複数のパケットのそれぞれがヘッダー部とペイロード部とを含み、前記集約パケットデータに含まれる複数のペイロード部が複数の鍵で暗号化され、前記集約パケットデータに含まれる複数のヘッダー部が同一の鍵で暗号化されている、プログラム。
【請求項19】
複数の個別パケットが、暗号化済みでない部分が連続するように集約された集約パケットが生成され、前記集約パケットのうちの暗号化済みでないと判定された範囲が暗号化され、前記個別パケットが個別パケット単位でデータの完全性を保証するための符号を付与された
前記集約パケットを受信し、
受信した前記集約パケットに、データの完全性が保証されない前記個別パケットが含まれる場合、データの完全性が保証されない前記個別パケットの再送を要求する、通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、パケット集約装置、パケット分割装置、パケット通信システム、プログラム、パケット生成装置、パケット生成方法及び通信方法に関する。
【背景技術】
【0002】
クライアントサーバーモデルのシステムなどにおいて、クライアントからサーバーに対して多数のアクサスが発生する場合がある。このような場合、ネットワーク又はサーバーなどに対する負荷が増大する。特に、小さいサイズのパケットを大量に処理する場合には、サーバーのネットワークインターフェースなどに対する処理負荷が増大する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態が解決しようとする課題は、処理負荷を低減し、リアルタイム性の低下を抑える、パケット集約装置、パケット分割装置、パケット通信システム、プログラム、パケット生成装置、パケット生成方法及び通信方法を提供することである。
【課題を解決するための手段】
【0005】
実施形態のパケット処理装置は、受信部、処理部及び送信部を含む。受信部は、個別パケットを受信する。処理部は、前記受信部によって受信された複数の個別パケットを集約した集約パケットを生成し、生成した前記集約パケットのうちの暗号化済みでないと判定した範囲を暗号化する。送信部は、前記処理部によって暗号化された集約パケットを送信する。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態及び第2実施形態に係る通信システム及び当該通信システムに含まれる装置の要部回路構成を示すブロック図。
【
図2】
図1中のパケット集約装置の第1実施形態に係る機能構成を示すブロック図。
【
図3】
図1中のパケット集約装置が備えるプロセッサーによる第1実施形態~第3実施形態に係る処理の一例を示すフローチャート。
【
図4】
図1中のパケット集約装置が備えるプロセッサーによる第1実施形態及び第2実施形態に係る処理の一例を示すフローチャート。
【
図5】
図1中のパケット集約装置が備えるプロセッサーによる第1実施形態及び第2実施形態に係る処理の一例を示すフローチャート。
【
図6】
図1中のサーバー装置が備えるプロセッサーによる第1実施形態及び第2実施形態に係る処理の一例を示すフローチャート。
【
図7】
図1中のサーバー装置が備えるプロセッサーによる第1実施形態及び第2実施形態に係る処理の一例を示すフローチャート。
【
図8】
図1中のサーバー装置が備えるプロセッサーによる第1実施形態~第3実施形態に係る処理の一例を示すフローチャート。
【
図9】第1実施形態に係る集約パケットの一例を説明するための図。
【
図10】第2実施形態に係る集約パケットの一例を説明するための図。
【
図11】
図1中のパケット集約装置の第3実施形態に係る機能構成を示すブロック図。
【
図12】
図1中のパケット集約装置が備えるプロセッサーによる第3実施形態に係る処理の一例を示すフローチャート。
【
図13】
図1中のパケット集約装置が備えるプロセッサーによる第3実施形態に係る処理の一例を示すフローチャート。
【
図14】第3実施形態に係る集約パケットの一例を説明するための図。
【
図15】第3実施形態に係る通信システムの情報の流れの一例を示すシーケンス図。
【発明を実施するための形態】
【0007】
以下、いくつかの実施形態に係る通信システムについて図面を用いて説明する。
〔第1実施形態〕
図1は、第1実施形態に係る通信システム1及び通信システム1に含まれる構成要素の要部回路構成の一例を示すブロック図である。通信システム1は、パケット処理装置10、サーバー装置20及びクライアント装置30を含む。通信システム1は、一例として、サーバー装置20とクライアント装置30との間で通信を行う、サーバークライアントモデルのシステムである。なお、
図1にはパケット処理装置10を1台、サーバー装置20を1台、クライアント装置30を3台示しているが、これらの台数に限定するものではない。
【0008】
パケット処理装置10及びクライアント装置30は、ネットワークNW1に接続されている。ネットワークNW1は、典型的にはLAN(local area network)を含む通信網である。ネットワークNW1は、典型的にはイントラネットなどのプライベートネットワークを含む通信網である。ネットワークNW1は、インターネットを含む通信網であっても良い。ネットワークNW1は、WAN(wide area network)を含む通信網であっても良い。
パケット処理装置10及びサーバー装置20は、ネットワークNW2に接続されている。ネットワークNW2は、典型的には、インターネットを含む通信網である。ネットワークNWは1、典型的には、WANを含む通信網である。ネットワークNW2は、イントラネットなどのプライベートネットワークを含む通信網であっても良い。ネットワークNW2は、LANを含む通信網であっても良い。
ネットワークNW1及びネットワークNW2のそれぞれは、携帯電話回線網、専用線、又はその他の通信網を含む通信網であっても良い。
ネットワークNW1及びネットワークNW2上の通信は、パケット通信によって行われる。
【0009】
パケット処理装置10は、例えばゲートウェイ又はルーターなどである。パケット処理装置10は、サーバー装置20とクライアント装置30との間の通信を中継する。パケット処理装置10は、クライアント装置30などから送信された複数のパケットを1つのパケットに集約する機能を有する。なお、複数のパケットが集約されたパケットを、以下「集約パケット」という。また、集約パケットでないパケットを、以下「個別パケット」という。また、パケット処理装置10は、サーバー装置20などから送信された集約パケットを個々の個別パケットに分割する機能を有する。さらに、パケット処理装置10は、集約パケットを暗号化する機能、及び暗号化された集約パケットを復号する機能を有する。パケット処理装置10は、プロセッサー11、ROM(read-only memory)12、RAM(random-access memory)13、補助記憶デバイス14、第1の通信I/F(interface)15及び第2の通信I/F16を含む。パケット処理装置10は、パケット集約装置の一例である。パケット処理装置10は、パケット分割装置の一例である。パケット処理装置10は、パケット生成装置の一例である。
【0010】
プロセッサー11は、パケット処理装置10の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー11は、ROM12又は補助記憶デバイス14などに記憶されたシステムソフトウェア、アプリケーションソフトウェア又はファームウェアなどのプログラムに基づいて、パケット処理装置10の各種の機能を実現するべく各部を制御する。プロセッサー11は、例えば、CPU(central processing unit)、MPU(micro processing unit)、SoC(system on a chip)、DSP(digital signal processor)、GPU(graphics processing unit)、ASIC(application specific integrated circuit)、PLD(programmable logic device)又はFPGA(field-programmable gate array)などである。あるいは、プロセッサー11は、これらの組み合わせである。プロセッサー11は、処理部の一例である。プロセッサー11は、第1の処理部の一例である。プロセッサー11は、第2の処理部の一例である。プロセッサー11は、生成部の一例である。プロセッサー11を中枢とするコンピューターは、処理部の値例である。プロセッサー11を中枢とするコンピューターは、第1の処理部の一例である。プロセッサー11を中枢とするコンピューターは、第2の処理部の一例である。プロセッサー11を中枢とするコンピューターは、生成部の一例である。
【0011】
ROM12は、プロセッサー11を中枢とするコンピューターの主記憶装置に相当する。ROM12は、専らデータの読み出しに用いられる不揮発性メモリである。ROM12は、上記のプログラムを記憶する。また、ROM12は、プロセッサー11が各種の処理を行う上で使用するデータ又は各種の設定値などを記憶する。
【0012】
RAM13は、プロセッサー11を中枢とするコンピューターの主記憶装置に相当する。RAM13は、データの読み書きに用いられるメモリである。RAM13は、プロセッサー11が各種の処理を行う上で一時的に使用するデータを記憶しておく、いわゆるワークエリアなどとして利用される。
【0013】
補助記憶デバイス14は、プロセッサー11を中枢とするコンピューターの補助記憶装置に相当する。補助記憶デバイス14は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はSSD(solid state drive)などである。補助記憶デバイス14は、上記のプログラムを記憶する場合がある。また、補助記憶デバイス14は、プロセッサー11が各種の処理を行う上で使用するデータ、プロセッサー11での処理によって生成されたデータ又は各種の設定値などを保存する。
【0014】
ROM12又は補助記憶デバイス14に記憶されるプログラムは、後述する処理を実行するためのプログラムを含む。一例として、パケット処理装置10は、当該プログラムがROM12又は補助記憶デバイス14に記憶された状態でパケット処理装置10の管理者などへと譲渡される。しかしながら、パケット処理装置10は、当該プログラムがROM12又は補助記憶デバイス14に記憶されない状態で当該管理者などに譲渡されても良い。また、パケット処理装置10は、当該プログラムとは別のプログラムがROM12又は補助記憶デバイス14に記憶された状態で当該管理者などに譲渡されても良い。そして、後述する処理を実行するためのプログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作の下にROM12又は補助記憶デバイス14へと書き込まれても良い。このときのプログラムの譲渡は、例えば、磁気ディスク、光磁気ディスク、光ディスク又は半導体メモリなどのようなリムーバブルな記憶媒体に記録して、あるいはネットワークを介したダウンロードにより実現できる。
【0015】
第1の通信I/F15は、パケット処理装置10がネットワークNW1などを介して通信するためのインターフェースである。第1の通信I/F15は、個別パケットを受信する受信部の一例である。第1の通信I/F15は、個別パケットを受信する第4の通信部の一例である。
【0016】
第2の通信I/F16は、パケット処理装置10がネットワークNW2などを介して通信するためのインターフェースである。第2の通信I/F16は、集約パケットを送信する送信部の一例である。第2の通信I/F16は、集約パケットをパケット分割装置に送信する第1の通信部の一例である。第2の通信I/F16は、集約パケットを受信する第2の通信部の一例である。
【0017】
サーバー装置20は、複数のクライアント装置30と通信を行う。サーバー装置20は、例えば、クライアント装置30から送信された要求に応じて各種処理などを行う。サーバー装置20は、プロセッサー21、ROM22、RAM23、補助記憶デバイス24及び通信I/F25を含む。サーバー装置20は、パケット集約装置の一例である。サーバー装置20は、パケット分割装置の一例である。サーバー装置20は、パケット生成装置の一例である。
【0018】
プロセッサー21は、サーバー装置20の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー21は、ROM22又は補助記憶デバイス24などに記憶されたシステムソフトウェア、アプリケーションソフトウェア又はファームウェアなどのプログラムに基づいて、サーバー装置20の各種の機能を実現するべく各部を制御する。プロセッサー21は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー21は、これらの組み合わせである。プロセッサー21は、処理部の一例である。プロセッサー21は、第1の処理部の一例である。プロセッサー21は、第2の処理部の一例である。プロセッサー21は、生成部の一例である。プロセッサー21を中枢とするコンピューターは、処理部の値例である。プロセッサー21を中枢とするコンピューターは、第1の処理部の一例である。プロセッサー21を中枢とするコンピューターは、第2の処理部の一例である。プロセッサー21を中枢とするコンピューターは、生成部の一例である。
【0019】
ROM22は、プロセッサー21を中枢とするコンピューターの主記憶装置に相当する。ROM22は、専らデータの読み出しに用いられる不揮発性メモリである。ROM22は、上記のプログラムを記憶する。また、ROM22は、プロセッサー21が各種の処理を行う上で使用するデータ又は各種の設定値などを記憶する。
【0020】
RAM23は、プロセッサー21を中枢とするコンピューターの主記憶装置に相当する。RAM23は、データの読み書きに用いられるメモリである。RAM23は、プロセッサー21が各種の処理を行う上で一時的に使用するデータを記憶しておく、いわゆるワークエリアなどとして利用される。
【0021】
補助記憶デバイス24は、プロセッサー21を中枢とするコンピューターの補助記憶装置に相当する。補助記憶デバイス24は、例えばEEPROM、HDD又はSSDなどである。補助記憶デバイス24は、上記のプログラムを記憶する場合がある。また、補助記憶デバイス24は、プロセッサー21が各種の処理を行う上で使用するデータ、プロセッサー21での処理によって生成されたデータ又は各種の設定値などを保存する。
【0022】
RAM23又は補助記憶デバイス24は、処理バッファー及びサーバー集約バッファーを含む。処理バッファーは、未処理のパケットを記憶する。サーバー集約バッファーは、未集約未送信のパケットを記憶する。
【0023】
ROM22又は補助記憶デバイス24に記憶されるプログラムは、後述する処理を実行するためのプログラムを含む。一例として、サーバー装置20は、当該プログラムがROM22又は補助記憶デバイス24に記憶された状態でサーバー装置20の管理者などへと譲渡される。しかしながら、サーバー装置20は、当該プログラムがROM22又は補助記憶デバイス24に記憶されない状態で当該管理者などに譲渡されても良い。また、サーバー装置20は、当該プログラムとは別のプログラムがROM22又は補助記憶デバイス24に記憶された状態で当該管理者などに譲渡されても良い。そして、後述する処理を実行するためのプログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作の下にROM22又は補助記憶デバイス24へと書き込まれても良い。このときのプログラムの譲渡は、例えば、磁気ディスク、光磁気ディスク、光ディスク又は半導体メモリなどのようなリムーバブルな記憶媒体に記録して、あるいはネットワークを介したダウンロードにより実現できる。
【0024】
通信I/F25は、サーバー装置20がネットワークNW2などを介して通信するためのインターフェースである。通信I/F25は、集約パケットをパケット分割装置に送信する第1の通信部の一例である。通信I/F25は、集約パケットを受信する第2の通信部の一例である。
【0025】
クライアント装置30は、例えば、自動券売機、自動精算機若しくは自動改札機などの駅務装置、PC(personal computer)、サーバー若しくはスマートホンなどの情報機器、又は各種IoT(internet of things)機器などである。クライアント装置30は、プロセッサー31、ROM32、RAM33、補助記憶デバイス34及び通信I/F35を含む。
【0026】
プロセッサー31は、クライアント装置30の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー31は、ROM32又は補助記憶デバイス34などに記憶されたシステムソフトウェア、アプリケーションソフトウェア又はファームウェアなどのプログラムに基づいて、クライアント装置30の各種の機能を実現するべく各部を制御する。プロセッサー31は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー31は、これらの組み合わせである。
【0027】
ROM32は、プロセッサー31を中枢とするコンピューターの主記憶装置に相当する。ROM32は、専らデータの読み出しに用いられる不揮発性メモリである。ROM32は、上記のプログラムを記憶する。また、ROM32は、プロセッサー31が各種の処理を行う上で使用するデータ又は各種の設定値などを記憶する。
【0028】
RAM33は、プロセッサー31を中枢とするコンピューターの主記憶装置に相当する。RAM33は、データの読み書きに用いられるメモリである。RAM33は、プロセッサー31が各種の処理を行う上で一時的に使用するデータを記憶しておく、いわゆるワークエリアなどとして利用される。
【0029】
補助記憶デバイス34は、プロセッサー31を中枢とするコンピューターの補助記憶装置に相当する。補助記憶デバイス34は、例えばEEPROM、HDD又はSSDなどである。補助記憶デバイス34は、上記のプログラムを記憶する場合がある。また、補助記憶デバイス34は、プロセッサー31が各種の処理を行う上で使用するデータ、プロセッサー31での処理によって生成されたデータ又は各種の設定値などを保存する。
【0030】
通信I/F35は、クライアント装置30がネットワークNW1などを介して通信するためのインターフェースである。通信I/F35は、個別パケットを前記パケット集約装置に送信する第3の通信部の一例である。
【0031】
パケット処理装置10について、
図2を用いてさらに説明する。
図2は、パケット処理装置10の機能構成を示すブロック図である。なお、
図2おける
図1と同様の要素については同一の符号を付している。パケット処理装置10は、第1受信部101、集約バッファー102、周期管理部103、結合部104、範囲選択部105、暗号化部106、第1送信部107、第2受信部108、復号部109、分割部110及び第2送信部111を含む。
【0032】
第1受信部101は、クライアント装置30などから送信された個別パケットを受信する。例えば、第1の通信I/F15が、第1受信部101として機能する。
【0033】
集約バッファー102は、第1受信部101によって受信された個別パケットを記憶する。例えば、RAM13又は補助記憶デバイス14が集約バッファー102として機能する。
【0034】
周期管理部103は、一定周期ごとに集約バッファー102から個別パケットを取り出す。例えば、プロセッサー11が周期管理部103として機能する。
【0035】
結合部104は、周期管理部103によって取り出された複数の個別パケットを結合して集約する。結合部104は、集約パケットを生成する。例えば、プロセッサー11が結合部104として機能する。
【0036】
範囲選択部105は、集約パケットのうちの暗号化する範囲を決定して選択する。例えば、プロセッサー11が範囲選択部105として機能する。
【0037】
暗号化部106は、集約パケットを暗号化する。また、暗号化部106は、集約パケットの暗号化と共に、当該集約パケットのMAC(message authentication code)値を生成する。MAC値は、集約パケットの改竄検出など、集約パケットのデータの完全性の検証に用いられる。例えば、プロセッサー11が暗号化部106として機能する。MAC値は、データの完全性を保証するための符号の一例である。
【0038】
第1送信部107は、周期管理部103、範囲選択部105、結合部104及び暗号化部106によって生成された集約パケットをサーバー装置20などに送信する。例えば、第2の通信I/F16が、第1送信部107として機能する。
【0039】
第2受信部108は、サーバー装置20などから集約パケットを受信する。例えば、第2の通信I/F16が、第2受信部108として機能する。
【0040】
復号部109は、第2受信部によって受信された集約パケットの暗号化された部分を復号する。また、復号部109は、当該集約パケットに含まれるMAC値を用いてデータの完全性の検証を行う。さらに、復号部109は、集約パケットが改竄されたことなどによりデータの完全性の保証が得られなかった場合には、当該集約パケットを破棄する。例えば、プロセッサー11が復号部109として機能する。
【0041】
分割部110は、第2受信部によって受信された集約パケットを個々の個別パケットに分割する。例えば、プロセッサー11が分割部110として機能する。
【0042】
第2送信部111は、分割部110によって分割された個々の個別パケットのそれぞれを、それぞれの個別パケットの宛先であるクライアント装置30などに送信する。例えば、第1の通信I/F15が、第2送信部111として機能する。
【0043】
以下、第1実施形態に係る通信システム1の動作を
図3~
図8に基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。
図3~
図5は、パケット処理装置10のプロセッサー11による処理のフローチャートである。プロセッサー11は、ROM12又は補助記憶デバイス14などに記憶されたプログラムに基づいてこの処理を実行する。なお、プロセッサー11は、
図3~
図5に示す処理を並行又は並列して処理する。
図6~8は、サーバー装置20のプロセッサー21による処理のフローチャートである。プロセッサー21は、ROM22又は補助記憶デバイス24などに記憶されたプログラムに基づいてこの処理を実行する。なお、プロセッサー21は、
図6~
図8に示す処理を並行又は並列して処理する。また、特に説明が無い限り、プロセッサー11及びプロセッサー21は、ステップS(m)(mは、自然数。)の処理の後、ステップS(m+1)へと進むものとする。
【0044】
複数のクライアント装置30のそれぞれは、サーバー装置20を宛先とするデータを送信する。当該データは、個別パケットとして送信される。当該個別パケットは、ネットワークNW1を介してパケット処理装置10によって受信される。
図3のステップS1においてプロセッサー11は、第1の通信I/F15(第1受信部101)によって、クライアント装置30から送信された個別パケットが受信されるのを待ち受けている。プロセッサー11は、個別パケットが受信されたならば、ステップS1においてYesと判定してステップS2へと進む。
【0045】
ステップS2においてプロセッサー11は、ステップS1で受信された個別パケットを集約バッファー102に記憶させる。プロセッサー11は、ステップS2の後、ステップS1へと戻る。
以上のようにして、第1の通信I/F15によって受信された個別パケットが次々と集約バッファー102に蓄積記憶されていく。
【0046】
一方、
図4のステップS11においてパケット処理装置10のプロセッサー11(周期管理部103)は、第1のタイマーをリセットする。第1のタイマーは、パケット処理装置10が前回集約パケットを送信してからの経過時間を計測するためのタイマーである。なお、集約パケットについては、後述する。
【0047】
ステップS12においてプロセッサー11(周期管理部103)は、第1のタイマーをリセットしてから時間T1以上経過したか否かを判定する。なお、時間T1は、例えば、パケット処理装置10の管理者などによって予め設定される。あるいは、時間T1は、パケット処理装置10の設計者などによって予め定められていてもよい。プロセッサー11は、第1のタイマーをリセットしてから時間T1が経過していないならば、ステップS12においてNoと判定してステップS13へと進む。
【0048】
ステップS13においてプロセッサー11は、集約バッファー102に記憶された未送信の個別パケットのデータ容量の合計が容量D1以上であるか否かを判定する。なお、容量D1は、例えば、パケット処理装置10の管理者などによって予め設定される。あるいは、容量D1は、パケット処理装置10の設計者などによって予め定められていてもよい。容量D1は、例えば、パケット処理装置10が生成する集約パケットのMTU(maximum transmission unit)である。プロセッサー11は、集約バッファー102に記憶された未送信の個別パケットのデータ容量の合計が容量D1以上でないならば、ステップS13においてNoと判定してステップS12へと戻る。かくして、プロセッサー11は、第1のタイマーをリセットしてから時間T1が経過したか、集約バッファー102に記憶された未送信の個別パケットのデータ容量の合計が容量D1以上となるまでステップS12及びステップS13を繰り返す。すなわち、ステップS12の処理により、一定周期ごとにステップS14~ステップS22の処理が繰り返される。
【0049】
プロセッサー11は、ステップS12及びステップS13の待受状態にあるときに、第1のタイマーをリセットしてから時間T1が経過したならば、ステップS12においてYesと判定してステップS14へと進む。
【0050】
ステップS14においてプロセッサー11(周期管理部103)は、集約バッファー102に未送信の個別パケットが記憶されているか否かを判定する。プロセッサー11は、集約バッファー102に未送信の個別パケットが記憶されていないならば、ステップS14においてNoと判定してステップS11へと戻る。すなわち、プロセッサー11は、前回集約パケットを送信してから時間T1が経過しても未送信の個別パケットが集約バッファー102に記憶されなかったならば、第1のタイマーをリセットする。対して、プロセッサー11は、集約バッファー102に未送信の個別パケットが記憶されているならば、ステップS14においてYesと判定してステップS15へと進む。
また、プロセッサー11は、ステップS12及びステップS13の待受状態にあるときに集約バッファー102に記憶された未送信の個別パケットのデータ容量の合計が容量D1以上であるならば、ステップS13においてYesと判定してステップS15へと進む。
【0051】
ステップS15においてプロセッサー11(周期管理部103)は、集約バッファー102に記憶された未送信の個別パケット1個を取り出す。ここで、プロセッサー11は、個別パケットを取り出すとき、集約バッファー102に記憶された当該個別パケットが送信済みであることが分かるようにする。あるいは、プロセッサー11は、当該個別パケットを集約バッファーから削除する。当該個別パケットは、例えば、集約バッファー102に記憶されている未送信の個別パケットの中で最初に記憶された個別パケットである。そして、ステップS15においてプロセッサー11(結合部104)は、取り出したパケットを含む集約パケットを生成する。ここで生成される集約パケットの一例について、
図9を用いて説明する。
図9は、第1実施形態に係る集約パケットの一例を説明するための図である。なお、
図9には、n個の個別パケットが集約された集約パケットが示されているが、ステップS15で生成される集約パケットに含まれる個別パケットは1つである。すなわち、n=1である。n=1の集約パケットには複数の個別パケットが含まれているわけではないが、便宜上集約パケットと称するものとする。なお、nは、1以上の自然数である。
【0052】
図9に示すように、プロセッサー11は、複数の個別パケット(a1)の集約、及び複数の個別パケット(a1)に対するヘッダーの付与を行うことで、集約パケット(b1)を生成する。なお、個別パケット(a1)のそれぞれは、例えば、ペイロードである。n個の個別パケットが集約された集約パケットは、集約ヘッダー、n個の個別ヘッダー及びn個の個別パケットを含む。n個の個別ヘッダー及びn個の個別パケットは、集約ヘッダーの後に続く。
集約ヘッダーは、集約パケットに含まれる個別パケットの数などの、集約パケット全体に関する情報を含む。
n個の個別ヘッダーのそれぞれは、n個の個別パケットのそれぞれに対して1対1で関連付けられる。すなわち、例えば、個別ヘッダーkと個別パケットkとが関連付けられる。ただし、kはn以下の自然数である。それぞれの個別ヘッダーは、集約パケットを個々の個別パケットに分割できるように、関連付けられた個別パケットのサイズなどの、関連付けられた個別パケットについての情報を含む。また、集約パケット(b1)は、個別ヘッダーk、個別パケットk、個別ヘッダーk+1、個別パケットk+1、…のような順で、並んでいる。関連付けられた個別ヘッダーと個別パケットの組が隣り合うように並んでいる。
ステップS15では、n=1であるため、ステップS15で生成される集約パケットには、集約ヘッダー、個別ヘッダー1及び個別パケット1が含まれる。
【0053】
ステップS16においてプロセッサー11(結合部104)は、集約バッファー102に未送信の個別パケットが記憶されているか否かを判定する。プロセッサー11は、集約バッファー102に未送信の個別パケットが記憶されているならば、ステップS16においてYesと判定してステップS17へと進む。
【0054】
ステップS17においてプロセッサー11(結合部104)は、集約パケットに次の個別パケットを結合した場合の集約パケットのデータ容量が、パケット処理装置10が生成する集約パケットの最大データ容量以下となるか否かを判定する。なお、次の個別パケットとは、次に集約の対象となる個別パケットである。例えば、次の個別パケットは、集約バッファー102に記憶されている未送信の個別パケットの中で最初に記憶された個別パケットである。また、パケット処理装置10が生成する集約パケットの最大データ容量は、例えば、パケット処理装置10の管理者又は設計者などによって予め定められる。あるいは、パケット処理装置10が生成する集約パケットの最大データ容量は、パケット処理装置10が自動的に決定する。パケット処理装置10が生成する集約パケットの最大データ容量は、パケット処理装置10などのMTUであっても良い。プロセッサー11は、次の個別パケットを結合した場合の集約パケットのデータ容量が、当該集約パケットの最大データ容量以下となるならば、ステップS17においてYesと判定してステップS18へと進む。
【0055】
ステップS18においてプロセッサー11(結合部104)は、集約バッファー102から次のパケットを取り出して、当該次のパケットを集約パケットに結合する。これにより、集約パケットに含まれる個別パケットの数が1つ増える。ここで、プロセッサー11は、個別パケットを取り出すとき、集約バッファー102に記憶された当該個別パケットが送信済みであることが分かるようにする。あるいは、プロセッサー11は、当該個別パケットを集約バッファーから削除する。
【0056】
プロセッサー11は、集約バッファー102に未送信の個別パケットが記憶されていないならば、ステップS16においてNoと判定してステップS19へと進む。また、プロセッサー11は、次の個別パケットを結合した場合の集約パケットのデータ容量がパケット処理装置10のMTUを超えるならば、ステップS17においてNoと判定してステップS19へと進む。
かくして、プロセッサー11は、集約バッファー102に未送信の個別パケットが記憶されていない状態になるか、次の個別パケットを結合した場合の集約パケットのデータ容量がパケット処理装置10のMTUを超えるまで、ステップS16~ステップS18を繰り返す。これにより、(ステップS18の処理を行った回数+1)個の個別パケットが集約された集約パケットが生成される。
【0057】
ステップS19においてプロセッサー11(範囲選択部105)は、ステップS15~ステップS18の処理によって生成された集約パケットについて、暗号化する範囲を決定する。暗号化する範囲は、集約パケットのうちの暗号化されていない部分である。ステップS19の処理は、範囲選択部105によって行われる。
ここで、個別パケットは、暗号化済みの場合と、平文の場合がある。したがって、暗号化済みの個別パケットに対してさらに暗号化すると、二重に暗号化されることとなってしまう。二重に暗号化した場合、二重に暗号化しなかった場合と比べて暗号化にかかる時間と復号にかかる時間が長くなり、また、処理負荷も大きくなる。このため、プロセッサー11は、個別パケットについては、平文のもののみを暗号化することが好ましい。また、集約ヘッダー及び個別ヘッダーについては、ステップS15又はステップS18で付与したものであり、暗号化されていない。したがって、集約ヘッダー及び個別ヘッダーについては、暗号化することが好ましい。なお、プロセッサー11は、それぞれの個別パケットが暗号化済みであるか否かについて、例えば、当該個別パケットの送信元であるクライアント装置30から送信される情報により知ることができる。プロセッサー11は、暗号化済みであるか否かが分からない個別パケットがある場合には、当該パケットを暗号化されているものとみなして暗号化しない。あるいは、プロセッサー11は、暗号化済みであるか否かが分からない個別パケットがある場合には、当該パケットは暗号化されていないものとみなして暗号化する。あるいは、プロセッサー11は、個別パケットが暗号化済みであるか否かの判定を行わずに、集約ヘッダー及び個別ヘッダーを含み、個別パケットを含まない範囲を暗号化の範囲として決定しても良い。これは、例えば、全ての個別パケットがクライアント装置30などで暗号化されているような通信システム1において有用である。また、プロセッサー11は、集約パケットに含まれる個別パケットのうちの暗号化済みのパケットが占める割合が予め定められた割合以下の場合には、暗号化済みの個別パケットを含めて集約パケット全体を暗号化しても良い。集約パケットに占める暗号化済みの個別パケットの割合が小さい場合には、集約パケット全体を暗号化した方が、集約パケットのうちの暗号化済みでない部分だけを暗号化するより負荷が小さくなる可能性がある。
以上より、プロセッサー11は、暗号化前の集約パケットについて、集約ヘッダー、個別ヘッダー、及び平文の個別パケットを暗号化範囲として決定する。なお、
図9には、暗号化済みである個別パケット1と、平文である個別パケット2を含む場合について例示している。したがって、
図9に示す集約パケット(b1)を暗号化する範囲は、集約ヘッダー、個別ヘッダー、及び個別パケット2を含む。
【0058】
ステップS20においてプロセッサー11(暗号化部106)は、ステップS19で決定した範囲を暗号化する。なお、プロセッサー11は、暗号化する範囲以外については、暗号化の必要がないので、
図9に示すようにコピーする。また、プロセッサー11は、暗号化とともに、MAC値の計算を行う。MAC値の計算範囲は、例えば、暗号化の範囲であっても良いし、集約パケット全体であっても良い。また、プロセッサー11は、集約前の個別パケットの一部又は全部にMAC値が付与されている場合には、暗号化の場合と同様に、MAC値が付与されていない個別パケット、集約ヘッダー及び個別ヘッダーに対してMAC値の計算を行っても良い。
プロセッサー11は、暗号化に、例えばAES(Advanced Encryption Standard)又はその他の暗号を用いる。また、プロセッサー11は、MAC値の計算に、例えばHMAC(hash-based message authentication code)、GMAC(Galois Message Authentication Code)又はその他のMAC値計算方法を用いる。また、プロセッサー11は、暗号化の範囲とMAC値の計算範囲が同一の場合には、CCM(Counter with CBC-MAC)、GCM(Galois/Counter Mode)又はその他の認証付き暗号モードを用いることができる。認証付き暗号モードを用いることで、セキュリティ性の向上と、暗号化及びMAC値の計算の効率化とが期待できる。
なお、暗号化に利用する共通鍵又はMAC値の計算に利用する共通鍵は、例えば、通信セッションの確立時に鍵交換を行って共有しても良いし、予め各ノードの記憶装置に共通鍵を保存しておき、その鍵を利用しても良い。鍵交換を行う場合には、ディフィー・ヘルマン鍵交換又はその他の鍵交換方法を利用する。
なお、プロセッサー11は、1つの集約パケット内における、パケット処理装置10において暗号化する部分については、全て同一の暗号鍵を用いて良い。
ステップS19及びステップS20の処理が行われることで、集約パケットのうちの暗号化済みでないと判定された範囲が暗号化される。
【0059】
以上より、集約される個別パケットに暗号化済みの個別パケットが含まれる場合、当該暗号化に使われた暗号鍵とパケット処理装置10において暗号化された部分に使われた暗号鍵は異なることとなる。
【0060】
ステップS21においてプロセッサー11(暗号化部106)は、暗号化情報を生成する。そして、プロセッサー11は、生成した当該暗号化情報を集約パケットに付与する。
暗号化情報は、IV(initialization vector)、TAG及びSIZEを含む。IVは、ステップS19の暗号化に用いられた初期化ベクトルである。TAGは、ステップS19において求められたMAC値である。SIZEは、暗号化情報の後に続くデータ範囲Rのデータサイズを示す。ただし、IVを認証などの別の方法で交換する場合には、プロセッサー11は、必ずしも毎回暗号化情報にIVを含める必要は無い。
ステップS19~ステップS21の処理によって、
図9に示すように、暗号化前の集約パケット(b1)に基づいて暗号化後の集約パケット(c1)が生成される。
【0061】
ステップS22においてプロセッサー11は、ステップS15~ステップS21の処理によって生成された暗号化後の集約パケットをサーバー装置20に送信するように、第2の通信I/F16(第1送信部107)に対して指示する。この指示を受けて第2の通信I/F16は、当該集約パケットをサーバー装置20に送信する。送信された当該集約パケットは、サーバー装置20の通信I/F25によって受信される。プロセッサー11は、ステップS22の処理の後、ステップS11へと戻る。
【0062】
一方、
図6のステップS101においてサーバー装置20のプロセッサー21は、通信I/F25によって集約パケットが受信されるのを待ち受けている。プロセッサー21は、集約パケットが受信されたならば、ステップS101においてYesと判定してステップS102へと進む。
【0063】
ステップS102においてプロセッサー21は、ステップS101で受信された集約パケットを復号する。
ステップS103においてプロセッサー21は、ステップS101で受信された集約パケットのMAC値を検証する。すなわち、プロセッサー21は、集約パケットのMAC値を計算し、集約パケットに含まれるMAC値と一致するか否かを検証する。
なお、集約パケットが認証付き暗号モードで暗号化されている場合、プロセッサー21は、ステップS102とステップS103を同時に行うこととなる。
【0064】
ステップS104においてプロセッサー21は、集約パケットのデータの完全性が保証されているか否かを判定する。プロセッサー21は、ステップS103のMAC値の検証においてMAC値が一致したならば、ステップS104においてNoと判定してステップS105へと進む。
【0065】
ステップS105においてプロセッサー21は、集約パケットの各ヘッダーに含まれる情報などに基づき、集約パケットを個々の個別パケットに分割する。
【0066】
ステップS106においてプロセッサー21は、ステップS105において分割された個別パケットのそれぞれを処理バッファーに登録する。プロセッサー21は、ステップS106の処理の後、ステップS101へと戻る。
【0067】
対して、プロセッサー21は、ステップS103のMAC値の検証においてMAC値が一致しなかったならば、ステップS104においてYesと判定してステップS107へと進む。例えば、集約パケットが改竄されていた場合など、データが書き換わっていた場合に、MAC値が一致しなくなる。
ステップS107においてプロセッサー21は、ステップS101で受信された集約パケットを破棄する。
【0068】
ステップS108においてプロセッサー21は、集約パケット全体の再送をパケット処理装置10に要求する。プロセッサー21は、ステップS108の処理の後、ステップS101へと戻る。
【0069】
また、
図7のステップS111においてプロセッサー21は、処理バッファーに未処理パケットが記憶されているか否かを判定する。プロセッサー21は、処理バッファーに未処理パケットが記憶されているならば、ステップS111においてYesと判定してステップS112へと進む。対して、プロセッサー21は、処理バッファーに未処理パケットが記憶されていないならば、ステップS111においてNoと判定してステップS111を繰り返す。
【0070】
ステップS112においてプロセッサー21は、処理バッファーから未処理パケット1個を取り出し、当該未処理パケットに基づく処理を行う。プロセッサー21は、未処理パケットを取り出すとき、処理バッファーに記憶された当該未処理パケットが処理済みであることが分かるようにする。あるいは、プロセッサー21は、当該未処理パケットを処理バッファーから削除する。当該未処理パケットは、例えば、処理バッファーに記憶されている未処理パケットの中で最初に記憶された未処理パケットである。ここでの処理は、従来のサーバー装置が、クライアント装置30から送信された、集約されていない状態の個別パケットを受信して、当該個別パケットに基づいて行う処理と同様である。
【0071】
ステップS113においてプロセッサー21は、ステップS112の処理内容に基づき、必要に応じて、ステップS112で取り出した個別パケットの送信元であるクライアント装置30に対して返信する応答を生成する。
【0072】
ステップS114においてプロセッサー21は、ステップS113において応答を生成した場合には、当該応答をパケットとしてサーバー集約バッファーに登録する。プロセッサー21は、ステップS114の処理の後、ステップS111へと戻る。
【0073】
また、
図8のステップS121においてプロセッサー21は、第2のタイマーをリセットする。第2のタイマーは、サーバー装置20が前回集約パケットを送信してからの経過時間を計測するためのタイマーである。
【0074】
ステップS122においてプロセッサー21は、第2のタイマーをリセットしてから時間T2以上経過したか否かを判定する。なお、時間T2は、例えば、サーバー装置20の管理者などによって予め設定される。あるいは、時間T2は、サーバー装置20の設計者などによって予め定められていてもよい。プロセッサー21は、第2のタイマーをリセットしてから時間T2が経過していないならば、ステップS122においてNoと判定してステップS123へと進む。
【0075】
ステップS123においてプロセッサー21は、サーバー集約バッファーに記憶された未送信の個別パケットのデータ容量の合計が容量D2以上であるか否かを判定する。なお、容量D2は、例えば、サーバー装置20の管理者などによって予め設定される。あるいは、容量D2は、サーバー装置20の設計者などによって予め定められていてもよい。容量D2は、例えば、サーバー装置20が生成する集約パケットのMTUである。プロセッサー21は、サーバー集約バッファーに記憶された未送信の個別パケットのデータ容量の合計が容量D2以上でないならば、ステップS123においてNoと判定してステップS122へと戻る。かくして、プロセッサー21は、第2のタイマーをリセットしてから時間T2が経過したか、サーバー集約バッファーに記憶された未送信の個別パケットのデータ容量の合計が容量D2以上となるまでステップS122及びステップS123を繰り返す。
【0076】
プロセッサー21は、ステップS122及びステップS123の待受状態にあるときに、第2のタイマーをリセットしてから時間T2が経過したならば、ステップS122においてYesと判定してステップS124へと進む。
【0077】
ステップS124においてプロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されているか否かを判定する。プロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されていないならば、ステップS124においてNoと判定してステップS121へと戻る。すなわち、プロセッサー21は、前回集約パケットを送信してから時間T2が経過しても未送信の個別パケットがサーバー集約バッファーに記憶されなかったならば、第2のタイマーをリセットする。対して、プロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されているならば、ステップS124においてYesと判定してステップS125へと進む。
また、プロセッサー21は、ステップS122及びステップS123の待受状態にあるときにサーバー集約バッファーに記憶された未送信の個別パケットのデータ容量の合計が容量D2以上であるならば、ステップS123においてYesと判定してステップS125へと進む。
【0078】
ステップS125においてプロセッサー21は、サーバー集約バッファーに記憶された未送信の個別パケット1個を取り出す。ここで、プロセッサー21は、個別パケットを取り出すとき、サーバー集約バッファーに記憶された当該個別パケットが送信済みであることが分かるようにする。あるいは、プロセッサー21は、当該個別パケットをサーバー集約バッファーから削除する。当該個別パケットは、例えば、サーバー集約バッファーに記憶されている未送信の個別パケットの中で最初に記憶された個別パケットである。ここで生成される集約パケットは、パケット処理装置10が
図4のステップS15で生成するものと同様のものである。
【0079】
図8のステップS126においてプロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されているか否かを判定する。プロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されているならば、ステップS126においてYesと判定してステップS127へと進む。
【0080】
ステップS127においてプロセッサー21は、集約パケットに次の個別パケットを結合した場合の集約パケットのデータ容量が、サーバー装置20が生成する集約パケットの最大データ容量以下となるか否かを判定する。なお、次の個別パケットとは、次に集約の対象となる個別パケットである。例えば、次の個別パケットは、サーバー集約バッファーに記憶されている未送信の個別パケットの中で最初に記憶された個別パケットである。また、サーバー装置20が生成する集約パケットの最大データ容量は、例えば、サーバー装置20の管理者又は設計者などによって予め定められる。あるいは、サーバー装置20が生成する集約パケットの最大データ容量は、サーバー装置20が自動的に決定する。サーバー装置20が生成する集約パケットの最大データ容量は、サーバー装置20のMTUであっても良い。プロセッサー21は、次の個別パケットを結合した場合の集約パケットのデータ容量が、サーバー装置20が生成する集約パケットの最大データ容量以下となるならば、ステップS127においてYesと判定してステップS128へと進む。
【0081】
ステップS128においてプロセッサー21は、サーバー集約バッファーから次のパケットを取り出して、当該次のパケットを集約パケットに結合する。これにより、集約パケットに含まれる個別パケットの数が1つ増える。ここで、プロセッサー21は、個別パケットを取り出すとき、サーバー集約バッファーに記憶された当該個別パケットが送信済みであることが分かるようにする。あるいは、プロセッサー21は、当該個別パケットを集約バッファーから削除する。
【0082】
プロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されていないならば、ステップS126においてNoと判定してステップS129へと進む。また、プロセッサー21は、次の個別パケットを結合した場合の集約パケットのデータ容量がサーバー装置20のMTUを超えるならば、ステップS127においてNoと判定してステップS129へと進む。
かくして、プロセッサー21は、サーバー集約バッファーに未送信の個別パケットが記憶されていない状態になるか、次の個別パケットを結合した場合の集約パケットのデータ容量がサーバー装置20のMTUを超えるまで、ステップS126~ステップS128を繰り返す。これにより、(ステップS128の処理を行った回数+1)個の個別パケットが集約された集約パケットが生成される。
【0083】
ステップS129においてプロセッサー21は、ステップS125~ステップS128の処理によって作成された集約パケットについて、暗号化する範囲を決定する。プロセッサー21は、暗号化範囲の決定を、パケット処理装置10のプロセッサー11が
図4のステップS19で行うものと同様にして行う。
【0084】
図8のステップS130においてプロセッサー21は、ステップS129で決定した範囲を暗号化する。プロセッサー21は、暗号化を、パケット処理装置10のプロセッサー11が
図4のステップS20で行うものと同様にして行う。
ステップS129及びステップS130の処理が行われることで、集約パケットのうちの暗号化済みでないと判定された範囲が暗号化される。
【0085】
図8のステップS131においてプロセッサー21は、暗号化情報を生成する。そして、プロセッサー21は、生成した当該暗号化情報を集約パケットに付与する。プロセッサー21は、暗号化情報の生成を、パケット処理装置10のプロセッサー11が
図4のステップS21で行うものと同様にして行う。
【0086】
図8のステップS132においてプロセッサー21は、ステップS125~ステップS131の処理によって作成された集約パケットをパケット処理装置10に送信するように、通信I/F25に対して指示する。この指示を受けて通信I/F25は、当該集約パケットをパケット処理装置10に送信する。送信された当該集約パケットは、パケット処理装置10の第2の通信I/F16によって受信される。プロセッサー21は、ステップS132の処理の後、ステップS121へと戻る。
【0087】
一方、
図5のステップS31においてパケット処理装置10のプロセッサー11は、通信I/F25(第2受信部108)によって集約パケットが受信されるのを待ち受けている。プロセッサー11は、集約パケットが受信されたならば、ステップS31においてYesと判定してステップS32へと進む。
【0088】
ステップS32においてプロセッサー11(復号部109)は、ステップS31で受信された集約パケットを復号する。
ステップS33においてプロセッサー11(復号部109)は、ステップS31で受信された集約パケットのMAC値を検証する。すなわち、プロセッサー11は、集約パケットのMAC値を計算し、集約パケットに含まれるMAC値と一致するか否かを検証する。
なお、集約パケットが認証付き暗号モードで暗号化されている場合、プロセッサー11は、ステップS32とステップS33を同時に行うこととなる。
【0089】
ステップS34においてプロセッサー11(復号部109)は、集約パケットのデータの完全性が保証されているか否かを判定する。プロセッサー11は、ステップS33のMAC値の検証においてMAC値が一致したならば、ステップS34においてNoと判定してステップS35へと進む。
【0090】
ステップS35においてプロセッサー11(分割部110)は、集約パケットの各ヘッダーに含まれる情報などに基づき、集約パケットを個々の個別パケットに分割する。
【0091】
ステップS36においてプロセッサー11は、ステップS35において分割された個別パケットのそれぞれを、それぞれの個別パケットの宛先であるクライアント装置30に送信するように第1の通信I/F15(第2送信部111)に対して指示する。この指示を受けて第1の通信I/F15は、当該個別パケットをそれぞれの個別パケットの宛先であるクライアント装置30に送信する。プロセッサー11は、ステップS36の処理の後、ステップS31へと戻る。
【0092】
対して、プロセッサー11は、ステップS33のMAC値の検証においてMAC値が一致しなかったならば、ステップS34においてYesと判定してステップS37へと進む。例えば、集約パケットが改竄されていた場合など、データが書き換わっていた場合に、MAC値が一致しなくなる。
ステップS37においてプロセッサー11は、ステップS31で受信された集約パケットを破棄する。
【0093】
ステップS38においてプロセッサー11は、集約パケットの再送をサーバー装置20に要求する。プロセッサー11は、ステップS38の処理の後、ステップS31へと戻る。
【0094】
第1実施形態の通信システム1によれば、パケット通信装置10及びサーバー装置20は、複数の個別パケットを集約する。これにより、パケット通信装置10の第2の通信I/F16とサーバー装置20の通信I/F25にかかる負荷が低減される。
また、第1実施形態の通信システム1によれば、パケット通信装置10及びサーバー装置20は、集約パケットを暗号化する。これにより、集約プロトコルに付与されるヘッダー情報などの盗聴を防止することができる。また、第1実施形態の通信システム1によれば、パケット通信装置10及びサーバー装置20は、集約パケットにMAC値を付与する。これにより、集約パケットのデータの完全性の検証が可能となる。
さらに、第1実施形態の通信システム1によれば、パケット通信装置10及びサーバー装置20は、暗号化済みの部分を除いて集約パケットを暗号化する。このため、パケット通信装置10及びサーバー装置20は、全体を暗号化する場合に比べて暗号化にかかる時間と復号に係る時間とを低減することができる。これにより、クライアント装置30とサーバー装置20との間のやり取りのリアルタイム性が向上する。
以上より、第1実施形態の通信システム1は、
図9の(c1)に示すような集約パケットを用いることで、最低限の負荷で情報の漏洩防止やデータの改竄の検出を行うことが可能となる。また、暗号化及び復号にかかる時間を最小限にすることで、通信のリアルタイム性低下を防ぐことができる。
【0095】
クライアント装置30が駅務装置である場合、クライアント装置30から送信されるリクエストとサーバー装置20から送信されるレスポンスは、データ量が小さく、データの送受信回数も多い。また、自動改札機などでは、特にリアルタイム性が要求される。さらに、クライアント装置30として駅務装置を含む通信システム1では、通信内容に、金銭に関する情報及び個人情報なども含まれるため、送信されるデータの改竄及び盗聴を防ぐ必要がある。以上より、クライアント装置30が駅務装置を含む場合、実施形態の通信システム1は特に有用である。なお、自動改札機が送信する情報は、一例として、入場駅情報、出場駅情報、入場時間、出場時間、ICカードの認証情報、金額情報又はこれらのうちの複数などを含む。
【0096】
〔第2実施形態〕
第2実施形態の通信システム1の構成は、第1実施形態と同様であるので説明を省略する。また、第2実施形態の通信システム1のパケット通信装置10及びサーバー装置20の動作は、第1実施形態と同様であるので説明を省略する。ただし、第2実施形態では、生成される集約パケットが第1実施形態とは異なる。以下、第2実施形態において生成される集約パケットについて
図10に基づいて説明する。
図10は、第2実施形態に係る集約パケットの一例を説明するための図である。なお、
図10において第1実施形態の
図2と同様の要素については同一の符号を付している。
図10における
図2と同様の要素については説明を省略する場合がある。
【0097】
図10には、暗号化済みである個別パケット1及び個別パケット3と、平文である個別パケット2及び個別パケット4とを含むn個の個別パケットを集約する場合について例示している。第2実施形態の集約パケットは、(b2)に示すように、集約ヘッダー、n個の個別ヘッダー、平文の個別パケット、暗号化済みの個別パケットの順でデータが並んでいる。すなわち、集約パケット(b2)は、暗号化済みでない部分が連続した後に、暗号化済みである部分が連続するような並びである。このように、暗号化済みでないデータが連続して並んでいることで、プロセッサー11及びプロセッサー21は、集約ヘッダー、n個の個別ヘッダー及び平文の個別パケットを一度に暗号化することができる。さらに、暗号化済みであるデータが連続して並んでいることで、プロセッサー11及びプロセッサー21は、暗号化済みの個別パケットを一度にコピーすることができる。
【0098】
第2実施形態の通信システム1によれば、第1実施形態と同様の効果が得られる。
また、第2実施形態の通信システム1によれば、またCBCなど、暗号の利用モードによっては暗号化されるデータが分散すると、ブロック長に満たない部分をパディングで埋める必要があり、実装方法によっては個別ヘッダーごとにパディングが発生する可能性がある。特に、個々の個別パケットサイズが小さい場合、集約パケット全体にパディングが占める割合が大きくなり、集約パケットのデータサイズが大きくなってしまう。そこで、第2実施形態のように暗号化対象のデータを集約パケット中の一か所にまとめて集約パケットを構成することで、集約パケットのデータサイズの増大を防ぐことができる。また、一度に暗号化及び復号を行うことができるので、処理速度の向上が見込める。したがって、第2実施形態の通信システム1は、
図10に(b2)及び(c2)に示すような集約パケットを用いることで、リアルタイム性を向上させることができる。
【0099】
〔第3実施形態〕
第2実施形態の通信システム1の構成は、第1実施形態と同様であるので説明を省略する。ただし、第2実施形態のRAM13又は補助記憶デバイス14は、再送リスト及び受信済みリストを記憶する。再送リストは、パケット処理装置10が再送を要求する個別パケットのリストである。再送リストは、例えば、再送を要求する個別パケットのそれぞれに関連付けられたシーケンス番号を記憶することで、当該個別パケットを登録する。受信済みリストは、パケット処理装置10に正常に到着した個別パケットのリストである。受信済みリストは、例えば、正常に到着した個別パケットのそれぞれに関連付けられたシーケンス番号を記憶することで、当該個別パケットを登録する。シーケンス番号は、個別パケットごとにユニークに付与される識別子の一例である。
また、第3実施形態のパケット集約装置は、
図2に代えて
図11に示すような機能構成である。
図11は、第3実施形態に係るパケット処理装置10の機能構成を示すブロック図である。第3実施形態に係るパケット処理装置10は、第1受信部101、集約バッファー102、周期管理部103、結合部104、範囲選択部105、第1送信部107、第2受信部108、分割部110、第2送信部111、冗長化部121、到着管理部122、再送要求部123、暗号化部124及び復号部125を含む。
【0100】
冗長化部121は、暗号化された集約パケットを複数回送信するために、結合部104から渡された集約パケットを複製する機能を有する。そして、冗長化部121は、第1送信部107に集約パケットを複数回渡して、複数回送信を依頼する機能を有する。例えば、プロセッサー11が冗長化部121として機能する。
【0101】
到着管理部122は、パケットの到着回数を管理する機能を有し、クライアント装置30に個別パケットを送信するか判断する機能を有する。到着管理部122は、復号部125から渡された個別パケットのシーケンス番号などの識別子を用いて個別パケットの到着回数を管理する。そして、到着管理部122は、個別パケットが初めて到着した際には第2送信部111を呼び出してクライアント装置30に当該個別パケットを送信する。一方で、到着管理部122は、2度目以降の個別パケットの到着では、当該個別パケットを破棄する。これにより、複数回送信された集約パケットに含まれる個別パケットのうち、最初に到着した個別パケットのみをクライアント装置30に送信することができる。また、到着管理部122は、個別パケットの識別子から個別パケットの消失を検出する機能も有する。すなわち、例えば、到着管理部122は、個別パケットの識別子としてシーケンス番号を利用する場合には、シーケンス番号の数字が飛んだ場合には、飛んだ数字に対応する個別パケットが消失したと判定する。例えば、到着管理部122は、到着した個別パケットのシーケンス番号が1,2,4である場合には、飛んでいるシーケンス番号3の個別パケットが消失したと判定する。そして、到着管理部122は、例えば、再送要求部123に、飛んでいるシーケンス番号を再送リストへ登録するように要求する。そして、到着管理部122は、飛んでいるシーケンス番号の個別パケットが後から到着した際には、当該飛んでいるシーケンス番号を再送リストから削除するように再送要求部123に要求する。例えば、プロセッサー11が到着管理部122として機能する。
【0102】
再送要求部123は、集約バッファー102に再送要求用のパケットを登録する機能を有する。例えば、再送要求部302は、再送リストで指定されている個別パケットを一定間隔ごとに全て再送要求する。あるいは、再送要求部123は、再送リストに登録されている個別パケットごとに、再送要求を送信させた回数に応じて再送要求する間隔を変化させても良い。例えば、再送要求部123は、再送要求のパケットが送信された回数が0回の個別パケットについては、到着した個別パケットの番号が飛んでいることが検出されたらすぐに再送要求を送信させる。そして、再送要求部123は、再送要求を送信させた回数が多いほど、次に再送要求を送信させるまでの時間を長くする。また、再送要求部123は、再送リストが溢れることを防ぐため、一定回数再送要求を送っても到着しない個別パケットについては、再送リストから登録解除しても良い。あるいは、再送要求部123は、再送リストが溢れそうになるたびに、再送リストに登録された個別パケットを、登録が古い順から登録解除しても良い。あるいは、再送要求部123は、再送リストが溢れそうになるたびに、登録されている中でシーケンス番号が最も若い個別パケットを、登録解除しても良い。例えば、プロセッサー11が再送要求部123として機能する。
【0103】
また、最新のシーケンス番号のパケットが消失した場合にも再送要求を送信するため、到着管理部122は、定期的に、サーバー装置20から、送信済みの個別パケットの最大のシーケンス番号を取得する。そして、到着管理部122は、取得したシーケンス番号が、到着済みの個別パケットのうちの最大のシーケンス番号よりも大きいか否かを判定する。そして、到着管理部122は、サーバー装置20から取得したシーケンス番号の方が大きい場合には、到着済みの個別パケットのうちの最大のシーケンス番号+1~取得したシーケンス番号を再送リストに登録させるように再送要求部123に要求する。
【0104】
また、再送要求部123は、サーバー装置20から明示的に再送要求のパケットを受け付ける機能を持っていても良い。再送要求部123は、当該再送要求のパケットを受け付けた場合、集約バッファー102に含まれる送信済みのパケットを再度送信するようにフラグ設定する。これにより、周期管理部103は、集約バッファー102からサーバー装置20に送信するパケットを取り出す際に、当該フラグが設定されたパケットを取り出すようになる。したがって、周期管理部103は、サーバー装置20の要求に応じたパケットの再送が可能となる。
【0105】
暗号化部124は、第1実施形態とは異なる後述するような方法で集約パケットの暗号化及び複数のMAC値の付与などを行う機能を有する。
【0106】
復号部125は、集約パケットに含まれる複数のMAC値ごとにデータの完全性を検証する機能を有する。また、復号部125は、集約パケットの暗号化された部分を復号する。そして、復号部125は、集約ヘッダーに改竄が検出された場合には、集約パケット全体を破棄する機能を有する。また、復号部125は、集約パケットに含まれる個別パケットのうちの改竄が検出された個別パケットを破棄する。そして、復号部125は、改竄が検出されなかった個別パケットについては、到着管理部122に渡す。
【0107】
以下、第3実施形態に係る通信システム1の動作を
図12及び
図13に基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。
図12及び
図13は、パケット処理装置10のプロセッサー11による処理のフローチャートである。
【0108】
第3実施形態では、パケット処理装置10は、第1実施形態と同様に
図3及び
図4に示す処理と同様の処理により、集約パケットの生成及び送信などを行う。また、サーバー装置20は、第1実施形態と同様に
図7及び
図8に示す処理と同様の処理により、集約パケットの生成及び送信などを行う。ただし、第3実施形態では、生成される集約パケットが、第1実施形態及び第2実施形態とは異なる。第3実施形態において生成される集約パケットについて
図14に基づいて説明する。
図14は、第3実施形態に係る集約パケットの一例を説明するための図である。
【0109】
図14には、暗号化済みである個別パケット1と、平文である個別パケット2とを含むn個の個別パケットを集約する場合について例示している。第3実施形態の集約パケットの集約ヘッダー、個別ヘッダー及び個別パケットの順序は、例えば、(b3)及び(c3)に示すように第1実施形態と同様である。すなわち、個別パケットそれぞれに対して、個別パケット単位で暗号化が行われる。
ただし、第3実施形態の暗号化後の集約パケットは(c3)は、暗号化情報として、複数のMAC値を含む。プロセッサー11又はプロセッサー21は、これら複数のMAC値を、集約パケットのうちの改竄検出を行いたい単位でそれぞれ計算及び付与を行う。例えば、第3実施形態の暗号化後の集約パケット(c3)は、暗号化情報として、例えば、IV、TAGA、TAG0、TAG1、TAG2、…TAGn及びSIZEを含む。
TAGAは、集約パケット全体に対するMAC値である。
TAG0は、集約ヘッダーに対するMAC値である。
TAGk(kは、n以下の自然数)は、個別ヘッダーkと個別パケットkとの組のMAC値である。なお、個別パケットkに既にMAC値が付与されている場合には、TAGkは、個別ヘッダーkのMAC値であっても良い。すなわち、TAG1~nは、個別パケット単位で付与されるMAC値である。
単位でMAC値の付与が行われている。
なお、プロセッサー11(暗号化部124)又はプロセッサー21は、集約パケットに含まれる一部の個別パケットが改竄された場合に、別の個別パケットの復号を可能とするため、MAC値の計算と暗号化を同じ単位で行う事が好ましい。あるいは、プロセッサー11(暗号化部124)又はプロセッサー21は、集約パケットに含まれる一部の個別パケットが改竄された場合に、別の個別パケットの復号を可能とするため、CTR(Counter)モードなどの、ブロックごとに独立で復号でき、他のブロックの改ざんが復号結果に影響しない暗号利用モードを用いる。これは、集約パケット全体をCBCモードなど、暗号化がチェインするモードで復号すると、前ブロックの改竄が後ろのブロックの復号結果に影響するためである。また、プロセッサー11(暗号化部124)又はプロセッサー21は、集約パケット内に含まれる個別パケットを識別し、個々の個別パケット毎に再送などの処理を行えるようにするため、個別ヘッダーにシーケンス番号などの識別子を含めることが好ましい。このシーケンス番号は、集約パケット毎にリセットせず、インクリメントする。例えば、1番目の集約パケットにシーケンス番号1,2,3の個別パケットが含まれた場合には、次の集約パケットである2番目の集約パケットに含まれるパケットのシーケンス番号は、4から開始することとなる。
【0110】
また、第3実施形態では、パケット処理装置10及びサーバー装置20は、
図4のステップS22又は
図8のステップS132において、同一の集約パケットを複数回送信する。送信回数は、例えば2回である。なお、パケット処理装置10及びサーバー装置20は、集約パケットの送信元から送信先までの経路が複数ある場合には、送信ごとに異なる経路を通じて同一の集約パケットを送信しても良い。
【0111】
図12のステップS41においてパケット処理装置10のプロセッサー11は、第2の通信I/F16(第2受信部108)によって集約パケットが受信されるのを待ち受けている。プロセッサー11は、集約パケットが受信されたならば、ステップS41においてYesと判定してステップS42へと進む。
【0112】
ステップS42においてプロセッサー11(復号部125)は、集約パケット全体のMAC値であるTAGAを検証する。すなわち、プロセッサー11は、ステップS41で受信された集約パケット全体のMAC値を計算し、当該集約パケットに含まれるTAGAと一致するか否かを検証する。
【0113】
ステップS43においてプロセッサー11(復号部125)は、ステップS41で受信された集約パケット全体のデータの完全性が保証されているか否かを判定する。プロセッサー11は、ステップS43のMAC値の検証においてMAC値が一致したならば、ステップS43においてNoと判定してステップS44へと進む。
【0114】
ステップS44においてプロセッサー11(分割部110)は、ステップS41で受信された集約パケットを個々の個別ヘッダーと個別パケットとの組に分割する。ここで、個別ヘッダーと個別パケットとの組とは、例えば、個別ヘッダー1と個別パケット1との組、個別ヘッダー2と個別パケット2との組、又は個別ヘッダーnと個別パケットnとの組などである。
【0115】
ステップS45においてプロセッサー11(復号部125)は、ステップS44で分割された個別ヘッダーと個別パケットとの組それぞれを復号する。
【0116】
対して、プロセッサー11は、ステップS43のMAC値の検証においてMAC値が一致しなかったならば、ステップS43においてYesと判定してステップS46へと進む。例えば、ステップS41で受信された集約パケットが改竄されていた場合など、データが書き換わっていた場合に、MAC値(TAGA)が一致しなくなる。
ステップS46においてプロセッサー11(復号部125)は、集約ヘッダーを復号する。
【0117】
ステップS47においてプロセッサー11(復号部125)は、集約ヘッダーのMAC値を検証する。すなわち、プロセッサー11は、集約ヘッダーのMAC値を計算し、ステップS41で受信された集約パケットに含まれるTAG0と一致するか否かを検証する。
【0118】
ステップS48においてプロセッサー11(復号部125)は、集約ヘッダーのデータの完全性が保証されているか否かを判定する。プロセッサー11は、ステップS47のMAC値の検証においてMAC値が一致したならば、ステップS48においてNoと判定してステップS49へと進む。
【0119】
ステップS49においてプロセッサー11(分割部110)は、ステップS41で受信された集約パケットを個々の個別ヘッダーと個別パケットとの組に分割する。
【0120】
ステップS50においてプロセッサー11(復号部125)は、ステップS49で分割された個別ヘッダーと個別パケットとの組それぞれを復号する。
【0121】
ステップS51においてプロセッサー11(復号部125)は、個別ヘッダーと個別パケットとの組それぞれについて、MAC値を検証する。すなわち、プロセッサー11は、個別ヘッダーと個別パケットとの組それぞれについてMAC値を計算し、対応するそれぞれの個別ヘッダーと個別パケットとの組についてのTAGと一致するか否かを検証する。
【0122】
ステップS52においてプロセッサー11(復号部125)は、集約ヘッダーのデータの完全性が保証されていない個別ヘッダーと個別パケットとの組を破棄する。すなわち、プロセッサー11は、ステップS51においてMAC値が一致しなかった個別ヘッダーと個別パケットとの組を破棄する。例えば、個別ヘッダー又は個別パケットが改竄されていた場合など、データが書き換わっていた場合に、対応するMAC値(TAG1~TAGn)が一致しなくなる。
【0123】
プロセッサー11は、ステップS45又はステップS52の処理の後、ステップS53へと進む。
ステップS53においてプロセッサー11(到着管理部122)は、ステップS45又はステップS50で復号した個別パケットのうち、受信済みの個別パケットを破棄する。
【0124】
ステップS54においてプロセッサー11(再送要求部123及び到着管理部122)は、再送リスト及び受信済みリストを更新する。すなわち、プロセッサー11は、ステップS45又はステップS50で復号した個別パケットのうち、ステップS52及びステップS53のいずれにおいても破棄されなかった個別パケットのシーケンス番号を受信済みリストに登録する。また、プロセッサー11は、受信済みリストに登録したシーケンス番号と同一のシーケンス番号が再送リストに登録されている場合には、当該シーケンス番号を再送リストから削除する。さらに、プロセッサー11は、ステップS50で復号した個別パケットのうち、ステップS52で破棄した個別パケットのシーケンス番号が、受信済みリストに登録されていない場合には、当該シーケンス番号を再送リストに登録する。また、プロセッサー11は、受信済みリストに登録された最大のシーケンス番号未満のシーケンス番号のうち、再送リストにも受信済みリストにも登録されていないシーケンス番号がある場合には、当該シーケンス番号を再送リストに登録する。加えて、プロセッサー11は、サーバー装置20から、送信済みの個別パケットの最大シーケンス番号を取得しても良い。そして、プロセッサー11は、サーバー装置20から取得した最大シーケンス番号以下のシーケンス番号のうち、再送リストにも受信済みリストにも登録されていないシーケンス番号がある場合には、当該シーケンス番号を再送リストに登録する。
【0125】
ステップS55においてプロセッサー11(再送要求部123)は、ステップS45又はステップS50で復号した個別パケットのうち、ステップS52及びステップS53のいずれにおいても破棄されなかった個別パケットのそれぞれを、それぞれの個別パケットの宛先であるクライアント装置30に送信するように第1の通信I/F15(第2送信部111)に対して指示する。この指示を受けて第1の通信I/F15は、当該個別パケットのそれぞれを、それぞれの個別パケットの宛先であるクライアント装置30に送信する。送信された当該個別パケットは、それぞれ宛先であるクライアント装置30の通信I/F35によって受信される。プロセッサー11は、ステップS55の処理の後、ステップS41へと戻る。
【0126】
対して、プロセッサー11は、ステップS43のMAC値の検証においてMAC値が一致しなかったならば、ステップS48においてYesと判定してステップS56へと進む。例えば、集約ヘッダーが改竄されていた場合など、データが書き換わっていた場合に、MAC値(TAG0)が一致しなくなる。
ステップS56においてプロセッサー11(復号部125)は、ステップS41で受信された集約パケットを破棄する。
【0127】
ステップS57においてプロセッサー11(再送要求部123及び到着管理部122)は、再送リストを更新する。すなわち、プロセッサー11は、ステップS56で破棄した集約パケットに含まれる個別パケットのシーケンス番号が、受信済みリストに登録されていない場合には、当該シーケンス番号を再送リストに登録する。また、プロセッサー11は、サーバー装置20から、送信済みの個別パケットの最大シーケンス番号を取得しても良い。そして、プロセッサー11は、サーバー装置20から取得した最大シーケンス番号以下のシーケンス番号のうち、再送リストにも受信済みリストにも登録されていないシーケンス番号がある場合には、当該シーケンス番号を再送リストに登録する。プロセッサー11は、ステップS57の処理の後、ステップS41へと戻る。
【0128】
また、
図13のステップS61においてプロセッサー11は、第3のタイマーをリセットする。第3のタイマーは、パケット処理装置10が前回再送要求パケットを集約バッファー102に登録してからの経過時間を計測するためのタイマーである。
【0129】
ステップS62においてプロセッサー11は、第3のタイマーをリセットしてから時間T3以上経過するのを待ち受ける。なお、時間T3は、例えば、パケット処理装置10の管理者などによって予め設定される。あるいは、時間T3は、パケット処理装置10の設計者などによって予め定められていてもよい。プロセッサー11は、第3のタイマーをリセットしてから時間T3以上経過したならば、ステップS62においてYesと判定してステップS63へと進む。
【0130】
ステップS63においてプロセッサー11は、サーバー装置20を宛先とする再送要求パケットを集約バッファー102に登録する。再送要求パケットには、例えば、再送リストに登録されたシーケンス番号が含まれる。なお、プロセッサー11は、例えば、再送要求パケットを個別パケットとして集約バッファー10に登録する。したがって、再送要求パケットは、集約バッファー10に登録された他の個別パケットとともに集約されて、集約パケットに含まれる。そして、当該再送要求パケットは、集約パケットに含まれた状態でサーバー装置20に送信される。プロセッサー11は、ステップS63の処理の後、ステップS61へと戻る。
一方、再送要求パケットは、サーバー装置20のプロセッサー21によって処理バッファーに登録される。そして、プロセッサー21は、
図7のステップS112において処理バッファーに登録された再送要求パケットに基づき、当該再送要求パケットに含まれるシーケンス番号で特定される個別パケットをサーバー集約バッファーに登録する。例えば、プロセッサー21は、サーバー集約バッファーに当該個別パケットが送信済み状態として記憶されている場合には、当該個別パケットを未送信状態に戻す。あるいは、プロセッサー21は、サーバー集約バッファーに当該個別パケットが記憶されていない場合には、当該個別パケットをサーバー集約バッファーに記憶させる。なお、プロセッサー21は、次の個別パケットとして、サーバー集約バッファーに記憶されている未送信の個別パケットの中で最もシーケンス番号が若いものを選択しても良い。
【0131】
また、サーバー装置20についても、プロセッサー21は、
図12及び
図13に示す処理と同様の処理により、集約パケットの復号、分割、MAC検証及び再送要求などを行う。また、パケット処理装置10についても、サーバー装置20と同様に、サーバー装置20から再送要求パケットを受け取った場合には、当該再送要求パケットに含まれるシーケンス番号で特定される個別パケットを、サーバー装置20が再送要求パケットを受け取った場合の処理と同様の処理を行うことで、サーバー装置20に再送する。
【0132】
以上説明したようなパケット処理装置10及びサーバー装置20の処理により行われる通信を、一例を挙げて
図15を用いて説明する。
図15は、第3実施形態に係る通信システム1の情報の流れの一例を示すシーケンス図である。
【0133】
ステップST1においてサーバー装置20は、集約パケットをパケット処理装置10に送信する。なお、当該集約パケットには、一例として、シーケンス番号1~6の6つの個別パケットが含まれるものとする。また、サーバー装置20は、一例として、当該集約パケットを2回、パケット処理装置10に送信するものとする。
【0134】
パケット処理装置10は、サーバー装置20がステップST1で2回送信した集約パケットを受信する。ここで、ステップST1の1回目に送信された集約パケットのうち、シーケンス番号4番と5番の個別パケットが改竄されていたものとする。パケット処理装置10は、MAC値の検証により、この改竄を検出することができる。したがって、パケット処理装置10は、ステップST1の1回目に送信された集約パケットのうち、シーケンス番号4番と5番の個別パケットを破棄する。また、ステップST1の2回目に送信された集約パケットのうち、シーケンス番号が3番と5番の個別パケットが改竄されていたものとする。パケット処理装置10は、MAC値の検証により、この改竄を検出することができる。したがって、パケット処理装置10は、ステップST1の2回目に送信された集約パケットのうち、シーケンス番号3番と5番の個別パケットを破棄する。
シーケンス番号1、2及び6番の個別パケットは、2回送信された集約パケットのいずれにおいても改竄されていないので、パケット処理装置10に正常に到着している。シーケンス番号3番及び4番の個別パケットは、2回送信された集約パケットのうちの片方のみが改竄されていたので、もう片方については、パケット処理装置10に正常に到着している。しかしながら、シーケンス番号5番の個別パケットは、2回送信された集約パケットのいずれにおいて改竄されているので、いずれにおいても破棄されている。
【0135】
ステップST2においてパケット処理装置10は、正常に到着しているシーケンス番号1~4及び6番の個別パケットを、それぞれの宛先であるクライアント装置30に送信する。なお、
図15に示すクライアント装置30には、1又は複数のクライアント装置30が含まれるものとする。
【0136】
ステップST3においてパケット処理装置10は、シーケンス番号5番の個別パケットを再送するようにサーバー装置20に要求するため、再送要求をサーバー装置20に送信する。
【0137】
再送要求を受け取ったサーバー装置20は、シーケンス番号5番の個別パケットを含む集約パケットを生成する。このとき、サーバー集約バッファーには、シーケンス番号7番の個別パケットが登録されているものとする。したがって、サーバー装置20は、シーケンス番号5番の個別パケットに加えてシーケンス番号7番の個別パケットをも含む集約パケットを生成する。
そして、ステップST4においてサーバー装置20は、生成した集約パケットをパケット処理装置10に送信する。なお、サーバー装置20は、一例として、生成した当該集約パケットを2回、パケット処理装置10に送信するものとする。
【0138】
パケット処理装置10は、サーバー装置20がステップST4で2回送信した集約パケットを受信する。ここで、ステップST4の1回目に送信された集約パケットのうち、集約ヘッダーが改竄されていたものとする。パケット処理装置10は、MAC値の検証により、この改竄を検出することができる。したがって、パケット処理装置10は、ステップST1の1回目に送信された集約パケットを破棄する。また、ステップST4の2回目に送信された集約パケットは改竄されていないものとする。したがって、シーケンス番号5番と7番の個別ヘッダーは、パケット処理装置10に正常に到着している。
【0139】
ステップST5においてパケット処理装置10は、正常に到着しているシーケンス番号5及び7番の個別パケットを、それぞれの宛先であるクライアント装置30に送信する。
【0140】
第3実施形態の通信システム1によれば、パケット処理装置10及びサーバー装置20は、受信した集約パケットに含まれる個別パケットが、改竄されているなどしてデータの完全性の保証が得られなかった場合には、集約パケットのうちの改竄されている個別パケットだけを再送要求する。このため、集約パケットに含まれる個別パケットのうちの一部だけが改竄されている場合には、当該集約パケット全体を再送することが不要である。対して、従来では、改竄などが一部に対するものであっても当該集約パケット全体の再送が必要となる。したがって、第3実施形態の通信システム1では、再送されるデータの量が従来よりも少ない。また、再送の頻度も減少するので、従来よりもリアルタイム性が向上する。
【0141】
また、第3実施形態の通信システム1によれば、パケット処理装置10及びサーバー装置20は、集約パケットを一度に複数回送信する。これにより、集約パケットを受信したパケット処理装置10又はサーバー装置20は、一度目に受信した集約パケットに含まれる個別パケットを破棄した場合でも、すぐに次の集約パケットを受信する。したがって、当該パケット処理装置10又はサーバー装置20は、再送を要求したことによって再送される個別パケットを受信するよりもすぐに、破棄した個別パケットを受け取ることができる。これにより、リアルタイム性が向上する。
【0142】
第1実施形態~第3実施形態は以下のような変形も可能である。
パケット処理装置10は、ネットワークNW1、ネットワークNW2又はその両方に接続する機能を備えていなくても良い。そして、パケット処理装置10に接続される装置がネットワークNW1、ネットワークNW2又はその両方に接続して、サーバー装置20又はクライアント装置30などと通信を行っても良い。
パケット処理装置10は、ネットワークNW2を介さずにUSB(universal serial bus)などのバスによってサーバー装置20と接続されていても良い。また、サーバー装置20がパケット処理装置10を内蔵していても良い。
【0143】
プロセッサー11は、ステップS13において、容量D1に代えて、集約バッファー102に記憶されている未送信の個別パケットの数が予め定められた数以上になったか否かを判定しても良い。また、プロセッサー21は、ステップS123において、容量D2に代えて、サーバー集約バッファーに記憶されている未送信の個別パケットの数が予め定められた数以上になったか否かを判定しても良い。上記の態様は、個別パケットのデータサイズがほとんど一定であるような場合などに用いることができる。
【0144】
プロセッサー11又はプロセッサー21は、集約するパケットを全て集約バッファー102又はサーバー集約バッファーから取り出し、その後に集約を行っても良い。
【0145】
パケット処理装置10又はサーバー装置20は、送信する個別パケットが1個のみ場合には集約パケットの形にせずにそのまま送信しても良い。
【0146】
第1実施形態の通信システム1は、破棄したパケットの再送を要求しない態様であっても良い。すなわち、プロセッサー11は、ステップS38をスキップしてステップS31へと進む。また、プロセッサー21は、ステップS108をスキップしてステップS101へと進む。
【0147】
第1実施形態~第3実施形態では、サーバー装置20が1台である例について示した。しかしながら、複数のサーバー装置20がネットワークNWに接続されていても良い。この場合、パケット処理装置10は、受信した個別パケットを、例えば、宛先となるサーバー装置20が同じものだけを対象として集約を行う。すなわち、パケット処理装置10は、宛先別に集約パケットを生成及び送信する。
【0148】
複数のパケット処理装置10を用いて、例えば、2地点間の通信を効率化することができる。例えば、第1のパケット処理装置10及び第1のパケット処理装置10と通信可能な複数の装置(以下「装置a」という。)がA地点に、第2のパケット処理装置10及び第2のパケット処理装置10と通信可能な複数の装置(以下「装置b」という。)がB地点に設置されているとする。この場合、第1のパケット処理装置10は、複数の装置aから送信された、装置bを宛先とする個別パケットを集約した集約パケットを第2のパケット処理装置10に送信する。そして、第2のパケット処理装置10は、受信した当該集約パケットを個々の個別パケットに分割し、それぞれの個別パケットをそれぞれの宛先である装置bに送信する。また、第2のパケット処理装置10は、複数の装置bから送信された、装置aを宛先とする個別パケットを集約した集約パケットを第1のパケット処理装置10に送信する。そして、第1のパケット処理装置10は、受信した当該集約パケットを個々の個別パケットに分割し、それぞれの個別パケットをそれぞれの宛先である装置aに送信する。
【0149】
第1実施形態~第3実施形態に示す通信システム1は、サーバークライアントモデルであるが、サーバークライアントモデルには限らない。
【0150】
通信システム1は、MAC以外を用いてデータの完全性の保証及び検証を行っても良い。例えば、通信システム1は、MIC(message integrity code)を用いる。MICは、データの完全性を保証するための符号の一例である。
【0151】
パケット処理装置10及びサーバー装置20は、集約パケットに誤り訂正符号を付与しても良い。
【0152】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0153】
1……通信システム、10……パケット集約装置、11,21,31……プロセッサー、12,22,32……ROM、13,23,33……RAM、14,24,34……補助記憶デバイス、15……第1の通信I/F、16……第2の通信I/F、20……サーバー装置、25,35……通信I/F、30……クライアント装置、101……第1受信部、102……集約バッファー、103……周期管理部、104……結合部、105……範囲選択部、106,124……暗号化部、107……第1送信部、108……第2受信部、109,125……復号部、110……分割部、111……第2送信部、121……冗長化部、122……再送要求部、123……到着管理部