以下、適宜図面を参照しながら、実施形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になることを避け、当業者の理解を容易にするためである。尚、添付図面及び以下の説明は、当業者が本開示を十分に理解するために提供されるものであり、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
(本開示の一形態を得るに至った経緯)
MPTCPに従って通信する通信装置において、複数の通信インタフェースの全てにグローバルIPアドレスが割り当てられている場合、通信装置は、通信先としての他の通信装置へ、グローバルIPアドレスを通知できる。そのため、他の通信装置が主導して、通信装置との間でMPTCPのサブフローを確立できる。
一方、通信装置が有するIPアドレスがローカルIPアドレスである場合、通信装置と他の通信装置との間に設置されたNAT(Network Address Translation)サーバにより、このローカルIPアドレスがグローバルIPアドレスに変換される。そして、通信装置は、変換されたグローバルIPアドレスを用いて他の通信装置へデータを送信する。
特許文献1の通信装置は、自身が有する利用可能なIPアドレスを他の通信装置に送信するが、自身が有するIPアドレスがローカルIPアドレスである場合、ローカルIPアドレスに対応するグローバルIPアドレスをNATサーバへ問合せる機能を有しない。そのため、通信装置は、通知可能なIPアドレスがローカルIPアドレスとなり、グローバルIPアドレスを他の通信装置に通知することができず、他の通信装置は、通知されたローカルIPアドレスからグローバルIPアドレスの情報を認識できない。従って、他の通信装置は、通信装置との間で自主的にMPTCPのサブフローを確立できず、MPTCPのサブフローの確立に係る精度が低下することがある。
(第1の実施形態)
[構成等]
図1は、第1の実施形態における通信システム10の構成例を示す模式図である。通信システム10は、複数の通信装置100(100A,100B,・・・)を有する。複数の通信装置100は、ネットワークNTを介して接続される。通信装置100は、例えば、PC(Personal Computer)、スマートフォン、携帯電話、サーバ、基地局装置、中継器、カメラ、ロボットを含む。中継器は、例えば、AP(Access Point)、ゲートウェイ装置、を含む。ロボットは、例えば警備用のロボットである。
通信システム10では、各通信装置100は、MPTCPを用いて、データ通信する。
ネットワークNTは、無線ネットワークを含んでも有線ネットワークを含んでもよい。また、ネットワークNTは、専用ネットワークを含んでも公衆ネットワークを含んでもよい。ネットワークNTは、インターネット、イントラネット、セルラーネットワーク、WAN(Wide Area Network)、LAN(Local Area Network)、などを含む。
通信システム10では、複数の通信装置100は、ネットワークNTを介して、所定の通信方式で、MPTCPに従ってデータ通信する。通信装置100は、音声データ、画像データ、制御データ、等を通信する。複数の通信装置100は、複数の通信方式で通信可能である。
通信方式は、例えば、有線LAN通信、無線LAN通信、USB(Universal Serial Bus)通信、DECT(Digital Enhanced Cordless Telecommunication)、LTE(Long Term Evolution)、LTE−Advanced、ミリ波通信、セルラー通信、Bluetooth(登録商標)通信、の方式を含む。
図2は、通信装置100の構成例を示すブロック図である。通信装置100は、メインSoC(System on a Chip)110、SDRAM120、フラッシュメモリ130、ディスプレイ140、電源コントローラ150、複数の通信インタフェース160、バッテリ180、及びDC電源コネクタ190を備える。
複数の通信インタフェース160は、例えば、2つの通信インタフェース160a,160bを含んでもよいし、3つの通信インタフェース160a,160b,160cを含んでもよいし、4つ以上の通信インタフェースを含んでもよい。
メインSoC110は、半導体チップに各種機能を実現する構成部を集積する集積回路であり、CPU111(Central Processing Unit)、BCU(Bus Control Unit)112、及びネットワークコントローラ113を含む。
CPU111は、SDRAM120やフラッシュメモリ130と協働して、各種処理や制御を行う。具体的には、CPU111は、SDRAM120やフラッシュメモリ130に保持されたプログラムを実行することで、通信装置100が有する各機能を実現する。このプログラムは、例えば、OS(Operating System)、ミドルウェア、アプリケーション、を含む。
BCU112は、SDRAM120やフラッシュメモリ130と協働して、通信装置100における各種バスのデータ送受を制御する。
ネットワークコントローラ113は、複数の通信インタフェース160及びネットワークコントローラ113に接続される。ネットワークコントローラ113は、各通信インタフェース160を介して接続されるネットワークNTとの間の通信を制御する。また、ネットワークコントローラ113は、CPU111と協働として、MPTCPに係る通信の制御を行う。
バス115は、CPU111、BCU112、ネットワークコントローラ113、及びディスプレイ140を含む各構成部がデータを交換するための経路である。
バス116は、CPU111、BCU112、SDRAM120、及びフラッシュメモリ130を含む各構成部がデータを交換するための経路である。
SDRAM120は、各種データを保持する一次記憶装置の一例である。
フラッシュメモリ130は、各種データやプログラムを保持する二次記憶装置の一例である。フラッシュメモリ130は、例えば、各通信インタフェース160を識別する識別情報と、各通信インタフェース160に割り当てられたIPアドレス(グローバルIPアドレス又はローカルIPアドレス)の情報と、を対応付けて保持する。
尚、SDRAM120、フラッシュメモリ130以外のメモリや記憶媒体が備えられてもよい。例えば、通信装置100が、各種RAM、各種ROM、HDD(Hard Disk Drive)、又はSSD(Solid State Drive)、を備えてもよい。
ディスプレイ140は、例えばLCD(Liquid Crystal Display)又は有機EL(Electro Luminescence)ディスプレイを含み、各種データを表示する。
電源コントローラ150は、バッテリ180及びDC電源コネクタ190に接続され、電源電力を制御する。例えば、電源コントローラ150は、メインSoC110へ供給される電力として、バッテリ180からの電力又はDC電源コネクタ19からの電力のいずれかを選択する。
通信インタフェース160aは、ネットワークコントローラ113の制御により、第1の通信方式(例えばLTE通信)に従って、他の通信装置との間でデータ通信する。通信インタフェース160aには、IPアドレスとして、例えばグローバルIPアドレスが割り当てられる。尚、インタフェースは、例えばポートに相当する。
通信インタフェース160bは、ネットワークコントローラ113の制御により、第1の通信方式と異なる第2の通信方式(例えば無線LAN通信)に従って、他の通信装置との間でデータ通信する。通信インタフェース160aには、IPアドレスとして、例えばローカルIPアドレスが割り当てられる。
通信インタフェース160cは、ネットワークコントローラ113の制御により、第1の通信方式及び第2の通信方式と異なる第3の通信方式に従って、他の通信装置との間でデータ通信する。通信インタフェース160aには、IPアドレスとして、例えばローカルIPアドレスが割り当てられる。
バッテリ180は、リチウムイオン電池等の二次電池を含み、電源コントローラ150の制御により、メインSoC110に対して電力供給する。
DC電源コネクタ190は、外部のDC電源に接続可能であり、電源コントローラ150の制御により、メインSoC110に対して電力供給する。また、DC電源コネクタ190は、電源コントローラ150の制御により、バッテリ180へ電力を供給し、バッテリ180を充電してもよい。
尚、通信システム10に含まれる複数の通信装置100のうち、少なくとも1つの通信装置が、複数の通信方式に対応する複数の通信インタフェース160を備えていればよい。つまり、通信システム10に、単一の通信インタフェース160を備える通信装置100が含まれていてもよい。
[動作等]
次に、通信システム10の動作について説明する。尚、自装置としての通信装置100を通信装置100Aと称することもある。また、自装置の通信相手としての通信装置100を他の通信装置100Bと称することもある。
図3は、通信装置100の動作例を示すフローチャートである。
まず、CPU111は、他の通信装置100Bに送信すべき通信データ(例えば音声データ、画像データ、制御データ)が存在するか否かを判定する(S101)。通信データが存在しない場合、S101の処理を繰り返す。
他の通信装置100Bに送信すべき通信データが存在する場合、CPU111は、自装置としての通信装置100が有する複数の通信インタフェース160のそれぞれのIPアドレス(グローバルIPアドレス又はローカルIPアドレス)の情報を、フラッシュメモリ130から取得する(S102)。
CPU111は、取得されたIPアドレスの情報に、ローカルIPアドレスが存在するか否かを判定する(S103)。
S103においてローカルIPアドレスが存在する場合、ネットワークコントローラ113は、ローカルIPアドレスが割り当てられた通信インタフェース160(例えば通信インタフェース160b)から、NATサーバ200を介して、MPTCPのセッションを確立するための制御データを他の通信装置100Bへ送信する(S104)。この場合、通信インタフェース160bに割り当てられたローカルIPアドレスは、NATサーバ200でグローバルIPアドレスに変換され、グローバルIPアドレスを用いて他の通信装置100Bへ制御データが送信される。
S104によりセッションが確立されると、ネットワークコントローラ113は、通信インタフェース160bを介して、通信データの通信を開始する(S105)。
CPU111は、取得されたIPアドレスの情報に、他にローカルIPアドレスが存在するか否かを判定する(S106)。
S106において他にローカルIPアドレスが存在する場合、ネットワークコントローラ113は、このローカルIPアドレスが割り当てられた通信インタフェース160(例えば通信インタフェース160c)と他の通信装置100Bとの間で、JOINメッセージを通信する(S107)。
S107では、通信装置100のローカルIPアドレスが割り当てられた通信インタフェース160cから他の通信装置100BへJOINメッセージを送信してもよいし、他の通信装置100Bから通信装置100の通信インタフェース160cへJOINメッセージを送信してもよい。そして、S106の処理に再度進む。
尚、JOINメッセージが正常に通信されると、通信装置100と他の通信装置100Bとの間でMPTCPのサブフローが確立される。通信装置100と他の通信装置100とは、確立されたMPTCPのサブフローを介して、通信可能となる。
一方、S103においてローカルIPアドレスが存在しない場合、全ての通信インタフェース160のアドレスがグローバルIPアドレスであることを意味する。ネットワークコントローラ113は、グローバルIPアドレスが割り当てられた通信インタフェース160(例えば通信インタフェース160a)から、セッションを確立するための制御データを送信する(S108)。
S108によりセッションが確立されると、ネットワークコントローラ113は、通信インタフェース160aを介して、通信データの通信を開始する(S109)。
S109の処理後、又はS106において他にローカルIPアドレスが存在しない場合、ネットワークコントローラ113は、他にグローバルIPアドレスが存在するか否かを判定する(S110)。
S110において他にグローバルIPアドレスが存在する場合、ネットワークコントローラ113は、このグローバルIPアドレスが割り当てられた通信インタフェース160と他の通信装置100Bとの間で、JOINメッセージを通信する(S111)。
S111では、通信装置100のグローバルIPアドレスが割り当てられた通信インタフェース160から他の通信装置100BへJOINメッセージを送信してもよいし、他の通信装置100Bから通信装置100のグローバルIPアドレスが割り当てられた通信インタフェース160へJOINメッセージを送信してもよい。そして、S110の処理に再度進む。
S110において他にグローバルIPアドレスが存在しない場合、各通信インタフェース160に係るIPアドレスの情報が他の通信装置100Bへ通知済みであることを意味する。CPU111は、MPTCPのセッションを終了するか否かを判定する(S112)。
例えば、他の通信装置100Bに送信すべき通信データが残存する場合、セッション確立を継続するので、CPU111は、セッションを終了しないと判定する。例えば、他の通信装置100Bに送信すべき通信データについて全て通信済みとなった場合、CPU111は、セッションを終了すると判定し、確立したMPTCPセッションを終了する。
次に、通信システム10による具体的なMPTCP通信について説明する。ここでは、第1通信例及び第2通信例を示す。
[第1通信例]
図4は、第1通信例に係る通信システム10を説明するための構成図である。第1通信例では、通信装置100Aが2つの通信インタフェース160(例えば通信インタフェース160a、通信インタフェース160b)を備え、他の通信装置100Bが1つの通信インタフェースを備える。通信装置100Aの通信インタフェース160bには、ローカルIPアドレスが割り当てられ、通信装置100Aの通信インタフェース160aには、グローバルIPアドレスが割り当てられている。通信装置100Aと他の通信装置100Bとは、インターネットNT1を介して接続される。
通信装置100AとインターネットNT1との間には、NATサーバ200が配置される。NATサーバ200は、通信装置100Aが用いるローカルIPアドレスとグローバルIPアドレスとを変換する。また、NATサーバ200は、このグローバルIPアドレスとローカルIPアドレスとの関連付けの情報を有する変換テーブルをメモリ(不図示)に保持する。
通信装置100Aでは、CPU111は、2つの通信インタフェース160に割り当てられたIPアドレスがグローバルIPアドレスであるかローカルIPアドレスであるかを判定する。2つのIPアドレスのうち、ローカルIPアドレスが存在する場合、ローカルIPアドレスが割り当てられた通信インタフェース160を用いて、通信装置100Aと通信装置100Bとの間のセッション確立を行い、第1のサブフローを確立する。
通信装置100Aは、最初に接続された通信インタフェース160を用いて通信データの通信を行うとともに、未接続の通信インタフェース160を用いてJOINメッセージを他の通信装置100Aへ送信又は受信する。JOINメッセージによるセッションへのJOINが成功すると、通信装置100Aの2つの通信インタフェース160と他の通信装置100Bの1つの通信インタフェース160との間で、第2のサブフローが追加される。これにより、通信装置100A及び他の通信装置100Bは、第1のサブフローと第2のサブフローとを介して、同時に通信データを通信可能となる。
このような複数のサブフローを含むセッションが確立された状態で、通信装置100Aの2つの通信インタフェース160a,160bのうちいずれかの通信インタフェース160a又は160bと他の通信装置100Bの1つの通信インタフェース160との間でのサブフローが切断された場合でも、他方のサブフローは継続可能である。これは、他の通信装置100Bが、切断されていないサブフローに係る通信装置100Aの通信インタフェース160に係るグローバルIPアドレスを認識可能であるためである。この通信装置100Aの通信インタフェース160に係るグローバルIPアドレスは、通信インタフェース160に割り当てられたグローバルIPアドレスであってもよいし、通信インタフェース160に割り当てられたローカルIPアドレスに対応するグローバルIPアドレスであってもよい。従って、サブフローが残存することで、確立されたMPTCPに係るセッションは継続される。
図5は、第1通信例に係る通信システム10の動作例を示すシーケンス図である。図5では、通信インタフェース160aがグローバルIPアドレスを用いて通信し、通信インタフェース160bがローカルIPアドレスを用いて通信することを想定する。
図5では、通信装置100Aの通信インタフェース160aが「インタフェース1」と記載され、通信装置100Aの通信インタフェース160bが「インタフェース2」と記載され、他の通信装置100Bの通信インタフェース160が「他インタフェース」と記載されている。
通信システム10では、MPTCPのセッション確立に際し、まず、通信装置100Aの通信インタフェース160bは、他の通信装置100Bの通信インタフェース160へ、NATサーバ200を介してSYN+MP_CAPABLEパケットを送信する(T101)。
SYN+MP_CAPABLEパケットは、同期パケット(SYN)とMPTCPのセッションを確立するためのパケット(MP_CAPABLE)とを含む。尚、「MP」とは、MPTCPに係ることを意味する。
通信装置100Bの通信インタフェース160は、SYN+MP_CAPABLEパケットを受信すると、通信装置100Aの通信インタフェース160bへ、NAT200を介してSYN+ACK+MP_CAPABLEパケットを送信する(T102)。
SYN+ACK+MP_CAPABLEパケットは、同期パケット(SYN)と承認パケット(ACK)とセッションを確立するためのパケット(MP_CAPABLE)とを含む。
通信装置100Aの通信インタフェース160bは、SYN+ACK+MP_CAPABLEパケットを受信すると、他の通信装置100Bの通信インタフェース160へ、NATサーバ200を介してACK+MP_ADD_ADDRESSパケットを送信する(T103)。
ACK+MP_ADD_ADDRESSパケットは、承認パケット(ACK)とIPアドレスを通知するためのパケット(MP_ADD_ADDRESS)とを含む。尚、MP_ADD_ADDRESSのパケットは、他の通信インタフェース160(ここでは通信インタフェース160a)に割り当てられたIPアドレス(グローバルIPアドレス)の情報、を含む。
通信装置100Bの通信インタフェース160がACK+MP_ADD_ADDRESSパケットを受信すると、通信装置100Aと通信装置100Bとの間でMPTCPのセッションが確立される。そして、通信装置100Aの通信インタフェース160bと他の通信装置100Bの通信インタフェース160との間でサブフローSF11が確立される。ネットワークコントローラ113は、MP_ADD_ADDRESSのパケットに含まれる通信装置100Aの通信インタフェース160aのグローバルIPアドレスの情報を、フラッシュメモリ130に保持させる。
通信装置100Aの通信インタフェース160b及び通信装置100Bの通信インタフェース160は、確立されたサブフローSF11を介して通信データを通信する。例えば、通信装置100Aの通信インタフェース160bは、サブフローSF11を介して、通信データ(data)を送信する(T104)。他の通信装置100Bの通信インタフェース160は、サブフローSF11を介して通信データを受信し、サブフローSF11を介して、通信データに対するACKデータを送信する(T105)。
通信装置100Aの通信インタフェース160aは、他の通信装置100Bの通信インタフェース160へ、グローバルアドレスを用いてSYN+MP_JOINパケットを送信する(T106)。SYN+MP_JOINパケットは、同期パケット(SYN)とサブフローを追加するためのパケット(MP_JOIN)とを含む。
他の通信装置100Bの通信インタフェース160は、SYN+MP_JOINパケットを受信すると、通信装置100Aの通信インタフェース160aへ、グローバルアドレスを用いてSYN+ACK+MP_JOINパケットを送信する(T107)。SYN+ACK+MP_JOINパケットは、同期パケット(SYN)と承認パケット(ACK)とサブフローを追加するためのパケット(MP_JOIN)とを含む。
通信装置100Aの通信インタフェース160aは、SYN+ACK+MP_JOINパケットを受信すると、他の通信装置100Bの通信インタフェース160へ、ACK+MP_JOINパケットを送信する(T108)。ACK+MP_JOINパケットは、承認パケット(ACK)とサブフローを追加するためのパケット(MP_JOIN)とを含む。
通信装置100Bの通信インタフェース160がACK+MP_JOINパケットを受信すると、通信装置100Aの通信インタフェース160aと他の通信装置100Bの通信インタフェース160との間でサブフローSF12が確立される。よって、通信装置100Aと他の通信装置100Bとの間に確立されたセッションのサブフローは、サブフローSF11,SF12の2つとなる。通信装置100Aの通信インタフェース160a及び通信装置100Bの通信インタフェース160は、確立されたサブフローSF12を介して通信データを通信する。
例えば、通信装置100Aの通信インタフェース160aは、サブフローSF12を介して、通信データ(data)を送信する(T109)。他の通信装置100Bの通信インタフェース160は、サブフローSF12を介して通信データを受信し、サブフローSF12を介して、通信データに対するACKデータを送信する(T110)。尚、サブフローSF11,SF12は共存可能であるので、通信システム10は、複数のサブフローSF11,SF12を用いて通信データを通信できる。
このような第1通信例によれば、通信システム10では、通信装置100Aが、ローカルIPアドレスが割り当てられた通信インタフェース160bから他の通信装置100Bへ接続する。続いて、通信装置100Aは、グローバルIPアドレスが割り当てられた通信インタフェース160aと他の通信装置100Bの通信インタフェース160との間で、セッションのサブフローSF12を新たに確立する。これにより、通信装置100Aは、他の通信装置100Bとの間で、複数の通信インタフェース160を用いて異なる通信方式で通信データを通信できる。
尚、T106では、SYN+MP_JOINパケットが、通信装置100Aから他の通信装置100Bへ送信されることを例示したが、他の通信装置100Bから通信装置100Aへ送信されてもよい。この場合、他の通信装置100Bの通信インタフェース160は、フラッシュメモリ130を参照し、ADD_ADRRESSのパケットにより通知された通信装置100Aの通信インタフェース160aのグローバルIPアドレス宛に、SYN+MP_JOINパケットを送信してもよい。
尚、T106のように、SYN+MP_JOINパケットが通信装置100Aから他の通信装置100Bへ送信される場合、他の通信装置100Bが通信装置100Aの通信インタフェース160aのグローバルIPアドレスを予め認識する必要がないので、ADD_ADRRESSのパケットの送信が省略されてもよい。つまり、T103の通信が省略されてもよい。この場合でも、通信装置100Aにより、他の通信装置100BからのMP_CAPABLEのパケットに対してACKデータが応答されれば、MPTCPのセッションは確立される。
[第2通信例]
図6は、第2通信例に係る通信システム10を説明するための構成図である。第2通信例では、通信装置100Aが3つの通信インタフェース160(例えば通信インタフェース160a,160b,160c)を備え、他の通信装置100Bが1つの通信インタフェース160を備える。3つの通信インタフェース160a〜160cのうち、通信インタフェース160b,160cには、ローカルIPアドレスが割り当てられ、通信インタフェース160aには、グローバルIPアドレスが割り当てられている。通信装置100Aと他の通信装置100Bとは、インターネットNT1を介して接続される。
通信装置100AとインターネットNT1との間には、通信インタフェース160bが用いる通信経路において、NATサーバ200Bが配置される。通信装置100AとインターネットNT1との間には、通信インタフェース160cが用いる通信経路において、NATサーバ200Cが配置される。
NATサーバ200Bは、通信装置100Aの通信インタフェース160bが用いるグローバルIPアドレスとローカルIPアドレスとを変換する。NATサーバ200Cは、通信装置100Aの通信インタフェース160cが用いるグローバルIPアドレスとローカルIPアドレスとを変換する。また、NATサーバ200B,200Cは、このグローバルIPアドレスとローカルIPアドレスとの関連付けの情報を有する変換テーブルをメモリ(不図示)に保持する。
通信装置100Aでは、CPU111は、3つの通信インタフェース160a〜160cに割り当てられたIPアドレスが、それぞれグローバルIPアドレスであるかローカルIPアドレスであるかを判定する。3つのIPアドレスのうち、ローカルIPアドレスが存在する場合、ローカルIPアドレスが割り当てられた通信インタフェース160を用いて、通信装置100Aと通信装置100Bとの間のセッション確立を行い、第1のサブフローを確立する。
通信装置100Aは、最初に接続された通信インタフェース160を用いて通信データの通信を行うとともに、未接続の2つの通信インタフェース160を用いてJOINメッセージを他の通信装置100Aへ送信又は受信する。JOINメッセージによるセッションへのJOINが成功すると、通信装置100Aの3つの通信インタフェース160a〜160cと他の通信装置100Bの1つの通信インタフェース160との間で、第2のサブフロー、第3のサブフローが追加される。これにより、これにより、通信装置100A及び他の通信装置100Bは、第1〜第3のサブフローを介して、同時に通信データを通信可能となる。尚、2つのJOINメッセージの通信は、ローカルIPアドレスを用いたJOINメッセージの通信が、グローバルIPアドレスを用いたJOINメッセージの通信よりも先に実施される。
このような複数のサブフローを含むセッションが確立された状態で、通信装置100Aの3つの通信インタフェース160a〜160cのうちいずれかの通信インタフェース160a,160b,又は160cと他の通信装置100Bの1つの通信インタフェース160との間でのサブフローが切断された場合でも、残り2つのサブフローは継続可能である。これは、他の通信装置100Bが、切断されていない2つのサブフローに係る通信装置100Aの通信インタフェース160に係るグローバルIPアドレスを認識可能であるためである。この通信装置100Aの通信インタフェース160に係るグローバルIPアドレスは、通信インタフェース160に割り当てられたグローバルIPアドレスであってもよいし、通信インタフェース160に割り当てられたローカルIPアドレスに対応するグローバルIPアドレスであってもよい。従って、確立されたMPTCPに係るセッションは継続される。
図7は、第2通信例に係る通信システム10の動作例を示すシーケンス図である。ここでは、通信インタフェース160aがグローバルIPアドレスを用いて通信し、通信インタフェース160b,160cがローカルIPアドレスを用いて通信することを想定する。
図7では、通信装置100Aの通信インタフェース160aが「インタフェース1」と記載され、通信装置100Aの通信インタフェース160bが「インタフェース2」と記載され、通信装置100Aの通信インタフェース160cが「インタフェース3」と記載され、他の通信装置100Bの通信インタフェース160が「他インタフェース」と記載されている。また、NATサーバ200Bが「NAT1」と記載され、NATサーバ200Cが「NAT2」と記載されている。
通信システム10では、MPTCPのセッション確立に際し、まず、通信装置100Aの通信インタフェース160bは、他の通信装置100Bの通信インタフェース160へ、NATサーバ200Bを介してSYN+MP_CAPABLEパケットを送信する(T201)。
通信装置100Bの通信インタフェース160は、SYN+MP_CAPABLEパケットを受信すると、通信装置100Aの通信インタフェース160bへ、NAT200Bを介してSYN+ACK+MP_CAPABLEパケットを送信する(T202)。
通信装置100Aの通信インタフェース160bは、SYN+ACK+MP_CAPABLEパケットを受信すると、他の通信装置100Bの通信インタフェース160へ、NATサーバ200Bを介してACK+MP_ADD_ADDRESSパケットを送信する(T203)。
MP_ADD_ADDRESSのパケットは、例えば、他の通信インタフェース(例えば通信インタフェース160a)に割り当てられたグローバルIPアドレスの情報を含む。尚、例えば通信インタフェース160cのIPアドレスのようなローカルIPPアドレスの情報は、MP_ADD_ADDRESSのパケットに含まれなくてもよい。
通信装置100Bの通信インタフェース160がACK+MP_ADD_ADDRESSパケットを受信すると、通信装置100Aと通信装置100Bとの間でセッションが確立される。そして、通信装置100Aの通信インタフェース160bと他の通信装置100Bの通信インタフェース160との間でサブフローSF21が確立される。ネットワークコントローラ113は、MP_ADD_ADDRESSのパケットに含まれる通信装置100Aの通信インタフェース160aのグローバルIPアドレスの情報を、フラッシュメモリ130に保持させる。
通信装置100Aの通信インタフェース160b及び通信装置100Bの通信インタフェース160は、確立されたサブフローSF21を介して通信データを通信する。例えば、通信装置100Aの通信インタフェース160bは、サブフローSF21を介して、通信データ(data)を送信する(T204)。他の通信装置100Bの通信インタフェース160は、サブフローSF21を介して通信データを受信し、サブフローSF21を介して、通信データに対するACKデータを送信する(T205)。
通信装置100Aの通信インタフェース160cは、他の通信装置100Bの通信インタフェース160へ、NATサーバ200Cを介してSYN+MP_JOINパケットを送信する(T206)。
他の通信装置100Bの通信インタフェース160は、SYN+MP_JOINパケットを受信し、通信装置100Aの通信インタフェース160cへ、NATサーバ200Cを介してSYN+ACK+MP_JOINパケットを送信する(T207)。
通信装置100Aの通信インタフェース160cは、SYN+ACK+MP_JOINパケットを受信すると、他の通信装置100Bの通信インタフェース160へ、NAT20Cを介してACK+MP_JOINパケットを送信する(T208)。
通信装置100Bの通信インタフェース160がACK+MP_JOINパケットを受信すると、通信装置100Aの通信インタフェース160cと他の通信装置100Bの通信インタフェース160との間でサブフローSF22が確立される。通信装置100Aの通信インタフェース160c及び通信装置100Bの通信インタフェース160は、確立されたサブフローSF22を介して通信データを通信する。
例えば、通信装置100Aの通信インタフェース160cは、サブフローSF22を介して、通信データ(data)を送信する(T209)。他の通信装置100Bの通信インタフェース160は、サブフローSF22を介して通信データを受信し、サブフローSF22を介して、通信データに対するACKデータを送信する(T210)。
通信装置100Aの通信インタフェース160aは、他の通信装置100Bの通信インタフェース160へ、グローバルアドレスを用いてSYN+MP_JOINパケットを送信する(T211)。
他の通信装置100Bの通信インタフェース160は、SYN+MP_JOINパケットを受信し、通信装置100Aの通信インタフェース160aへ、グローバルアドレスを用いてSYN+ACK+MP_JOINパケットを送信する(T212)。
通信装置100Aの通信インタフェース160aは、SYN+ACK+MP_JOINパケットを受信すると、他の通信装置100Bの通信インタフェース160へ、ACK+MP_JOINパケットを送信する(T213)。
通信装置100Bの通信インタフェース160がACK+MP_JOINパケットを受信すると、通信装置100Aの通信インタフェース160aと他の通信装置100Bの通信インタフェース160との間でサブフローSF23が確立される。よって、通信装置100Aと他の通信装置100Bとの間に確立されたセッションのサブフローは、サブフローSF21,SF22,SF23の3つとなる。通信装置100Aの通信インタフェース160a及び通信装置100Bの通信インタフェース160は、確立されたサブフローSF23を介して通信データを通信する。
例えば、通信装置100Aの通信インタフェース160aは、サブフローSF23を介して、通信データ(data)を送信する(T214)。他の通信装置100Bの通信インタフェース160は、サブフローSF23を介して通信データを受信し、サブフローSF23を介して、通信データに対するACKデータを送信する(T215)。尚、サブフローSF21,SF22,SF23は共存可能であるので、通信システム10は、複数のサブフローSF21,SF22,SF23を用いて通信データを通信できる。
このような第2通信例によれば、通信システム10では、通信装置100Aが、ローカルIPアドレスが割り当てられた通信インタフェース160bから他の通信装置100Bへ接続する。続いて、通信装置100Aは、他のローカルIPアドレスが割り当てられた通信インタフェース160cと他の通信装置100Bの通信インタフェース160との間で、セッションのサブフローを新たに確立する。続いて、通信装置100Aは、グローバルIPアドレスが割り当てられた通信インタフェース160aと他の通信装置100Bの通信インタフェース160との間で、セッションのサブフローを新たに確立する。これにより、通信装置100Aは、他の通信装置100Bとの間で、複数の通信インタフェース160を用いて異なる通信方式で通信データを通信できる。
尚、T211では、通信インタフェース160aを介するSYN+MP_JOINパケットが、通信装置100Aから他の通信装置100Bへ送信されることを例示したが、他の通信装置100Bから通信装置100Aへ送信されてもよい。この場合、他の通信装置100Bの通信インタフェース160は、フラッシュメモリ130を参照し、ADD_ADRRESSのパケットにより通知された通信装置100Aの通信インタフェース160aのグローバルIPアドレス宛に、SYN+MP_JOINパケットを送信してもよい。
尚、T211のように、SYN+MP_JOINパケットが通信装置100Aから他の通信装置100Bへ送信される場合、他の通信装置100Bが通信装置100Aの通信インタフェース160aのグローバルIPアドレスを予め認識する必要がないので、ADD_ADRRESSのパケットの送信が省略されてもよい。つまり、T103の通信が省略されてもよい。この場合でも、通信装置100Aにより、他の通信装置100BからのMP_CAPABLEのパケットに対してACKデータが応答されれば、MPTCPのセッションは確立される。
一方、T206では、通信インタフェース160cを介するSYN+MP_JOINパケットは、通信装置100Aから他の通信装置100Bへ送信される必要がある。ADD_ADRRESSのパケットにより通信装置100Aの通信インタフェース160cのローカルIPアドレスが通知されても、他の通信装置100Bから通信装置へローカルIPアドレスを用いてアクセスできないためである。
尚、図7では、通信インタフェース160cを用いたサブフローSF22が通信インタフェース160aを用いたサブフローSF23よりも前に確立されているが、このサブフローの確立順序は逆でもよい。最初に確立された通信インタフェース160bを用いたサブフローSF21により、通信インタフェース160aに割り当てられたグローバルIPアドレスを通知可能だからである。
[通信優先順位の設定]
次に、第2通信例のようにローカルIPアドレスを複数用いてMPTCP通信する場合の通信の優先順位について説明する。
ここでの通信装置100Aによる通信優先順位は、各通信インタフェース160が他の通信装置100Bに対するセッションやサブフローを確立するための制御データを送信する順序を示す。セッションを確立するための制御データは、例えば、SYN+MP_CAPABLEパケットを含む。サブフローを確立するための制御データは、例えば、SYN+MP_CAPABLEパケット、SYN+MP_JOINパケットを含む。
CPU111は、例えば、通信インタフェース160の種別を基に、通信優先順位を設定してもよい。例えば、グローバルIPアドレスを用いない通信インタフェース160を用いる通信の場合、有線LAN通信、無線LAN通信、セルラー通信、の順に、通信優先順位を高く設定する。設定された通信優先順位の情報は、フラッシュメモリ130に保持される。CPU111は、フラッシュメモリ130に保持された通信優先順位の情報を基に、通信優先順位の高い通信インタフェース160から順に、制御データを送信する。
CPU111は、例えば、各通信インタフェース160を介した各サブフローの帯域の太さを基に、通信優先順位を決定してもよい。CPU111は、各サブフローの帯域が太い順に、通信優先順位を高く設定してもよい。例えば、CPU111は、有線LAN通信、無線LAN通信、セルラー通信(例えばLTE通信)の順に、通信優先順位を高くしてもよい。
CPU111は、各サブフローの帯域を、公知の帯域推定方法により推定してもよい。また、CPU111は、PINGを送信して遅延時間の情報を取得してもよい。CPU111は、遅延時間が短い程、通信優先順位を高く設定してもよい。また、CPU111は、帯域推定パケットを用いて、サブフローの帯域を推定してもよい。
通信装置100Aは、通信優先順位を基に、通信優先順位に対応する通信方式の通信インタフェース160を用いて通信データを通信することで、通信を高速化できる。また、MPTCPに従って、帯域が太いサブフローでは通信データのデータ量を多くし、帯域が細いサブフローでは通信データのデータ量を小さくすることで、通信を高速化できる。CPU111は、通信データが到着すべき順序が変化しないように、通信データを各サブフローに振り分けてもよい。例えば、通信インタフェース160は、ネットワークコントローラ113の制御により、高速性を要する画像データを太い帯域のサブフローで送信し、高速性を要しない制御データを細い帯域のサブフローで送信してもよい。
尚、上記ではローカルIPアドレスが複数存在する場合のローカルIPアドレスを用いた通信優先順位について説明したが、グローバルIPアドレスが複数存在する場合のグローバルIPアドレスを用いた通信優先順位について適用してもよい。但し、ローカルIPアドレスを用いる通信インタフェースによる通信(ローカル通信)とグローバルIPアドレスを用いる通信インタフェースによる通信(グローバル通信)とでは、ローカル通信が優先される。
尚、複数の通信インタフェース160の通信優先順位を設けずに、任意の通信インタフェース160がランダムに選択されてもよい。
[再送制御]
次に、MPTCP通信における再送制御について説明する。
複数のサブフローを含むセッションが確立された後、任意のサブフローが切断されたとする。サブフローの切断には、例えば、無線LAN通信の電波状況の悪化が考えられる。任意のサブフローが切断された際、このサブフローを用いて通信データが通信されていると、この通信データは他の通信装置100Bへ到達しない。通信装置100は、サブフローが切断されていることを、通信データに対するACKデータを所定時間内に受信しないことにより、認識できる。この場合、ネットワークコントローラ113は、切断されたサブフローの代わりに、継続して確立中のサブフローを介して通信データを通信する。よって、通信装置100Aは、切断されたサブフローを介した通信を、他のサブフローを用いて補助できる。
[効果等]
通信装置100Aは、NATサーバ200に対するグローバルIPアドレスの問合せ機能を有していないため、通信装置100Aの通信インタフェース160b,160cに割り当てられたローカルIPアドレスに対応するグローバルIPアドレスを識別できない。そのため、通信装置100Aは、ADD_ADDRESSにローカルIPアドレスに対応するグローバルIPアドレスを含めて通知できず、ADD_ADDRESSにローカルIPアドレスを含めて通知することになる。よって、他の通信装置100Bは、通信装置100Aの通信インタフェース160b,160cのローカルIPアドレスの情報を取得することになる。他の通信装置100Bは、ローカルIPアドレスでは、ネットワークNT上の送信先を特定できず、通信データを送信できない状態となる。
図8は、このような他装置としての通信装置から自装置としての通信装置へ通信データを通信できない比較例を示す図である。図8では、自装置のグローバルIPアドレスを用いた通信インタフェース1が、MP_CAPABLEのパケットによりMPTCPのセッション確立を開始し、MP_ADD_ADRESSのパケットにより、通信インタフェース2のローカルIPアドレスを通知している。この場合、他装置は、MP_JOINのパケットにより、通知されたローカルIPアドレスを用いて自装置へアクセスし、サブフローの追加を試みても、パケットが自装置へ到達せず、通信が不成立となる。
これに対し、本実施形態の通信装置100は、MPTCPに従って他の通信装置100と通信する。通信装置100は、通信を制御するプロセッサと、NATサーバ200によりグローバルIPアドレスに変換されるローカルIPアドレスを用いて、第1の通信方式で通信する通信インタフェース160bと、グローバルIPアドレスを用いて、第2の通信方式で通信する通信インタフェース160aと、を備える。通信インタフェース160bは、プロセッサによる制御により、MPTCPのセッション及びサブフローを確立するためのSYN+MP_CAPABLEパケットやSYN+ACK+MP_CAPABLEパケットを通信する。通信インタフェース160aは、プロセッサによる制御により、MP_CAPABLEパケットの通信後、MPTCPのサブフローを追加するためのSYN+MP_JOINパケットやSYN+ACK+MP_JOINパケットを通信する。
尚、通信装置100は、通信装置100A又は通信装置100Bである。他の通信装置100は、通信装置100B又は通信装置100Aである。NATサーバ200は、アドレス変換サーバの一例である。SYN+MP_CAPABLEパケット、SYN+ACK+MP_CAPABLEパケットは、第1の制御データの一例である。SYN+MP_JOINパケット、SYN+ACK+MP_JOINパケットは、第2の制御データの一例である。プロセッサは、例えばCPU111又はネットワークコントローラ113を含む。通信インタフェース160bは、第1の通信インタフェースの一例である。通信インタフェース160aは、第2の通信インタフェースの一例である。
これにより、通信装置100は、複数の通信インタフェース160の一部にローカルIPアドレスが割り当てられている場合でも、ローカルIPアドレスが割り当てられた通信インタフェース160と他の通信装置100との間のセッションやサブフローを確立するための制御データを通信(送信又は受信)する。よって、他の通信装置100は、通信装置100の通信インタフェース160bに割り当てられたローカルIPアドレスに対応するグローバルIPアドレスを認識できる。
よって、通信システム10は、通信装置100と他の通信装置100との間でMPTCPセッションを確立し、複数のサブフローを確立できる。複数のサブフローが確立されることで、通信システム10は、通信を高速化できる。
また、通信システム10では、いずれかのサブフローが通信途中で切断されても、他のサブフローは維持されるので、MPTCPセッションを継続でき、通信を継続できる。例えば、通信装置100は、通信インタフェース160bによる無線LAN通信の電波が劣悪となり通信インタフェース160bを介するサブフローが切断されても、通信インタフェース160aを介するLTE通信を行うサブフローを継続できる。
また、通信装置100は、ローカルIPアドレスを用いて通信する複数の通信インタフェース160b,160cを備えてもよい。これらの通信インタフェース160のうち、MP_CAPABLEパケットを通信していない通信インタフェース160cは、プロセッサによる制御により、MP_CAPABLEパケットの通信後、MPTCPのサブフローを追加するためのSYN+MP_JOINパケットやSYN+ACK+MP_JOINパケットを通信してもよい。ここでのSYN+MP_JOINパケット、SYN+ACK+MP_JOINパケットは、第3の制御データの一例である。通信インタフェース160cは、第3の通信インタフェースの一例である。
ローカルIPアドレスを複数用いてMPTCP通信する場合、制御データ(例えばSYN+MP_ADD_ADDRESSパケット)によりローカルIPアドレスに対応するグローバルIPアドレスを通知することは困難である。これに対し、通信装置100は、2つ目以降のローカルIPアドレスを用いて他の通信装置100にサブフローの追加を依頼することで、他の通信装置100は、通信装置100のローカルIPアドレスから変換されたグローバルIPアドレスを認識できる。よって、仮に他のサブフローが切断されて2つ目以降のローカルIPアドレスを用いたサブフローが接続維持され、このサブフローを用いて、通信装置100及び他の通信装置100は通信できる。
また、プロセッサは、通信インタフェース160b,160cの通信方式を基に、MPTCPのサブフローの確立順序を決定してもよい。通信インタフェース160b,160cは、決定された確立順序で、SYN+MP_CAPABLEパケットやSYN+ACK+MP_CAPABLEパケット又はSYN+MP_JOINパケットやSYN+ACK+MP_JOINパケットを通信してもよい。
これにより、通信装置100は、通信方式の特性に合わせて、ローカルIPアドレスを用いたMPTCPのサブフローを確立できる。例えば、通信装置100は、有線通信を用いたサブフローを優先的に確立することで、通信接続の安定性を向上でき、安定したMPTCP通信を迅速に実現できる。また、通信装置100は、LAN通信を用いたサブフローを優先的に確立することで、外部ネットワーク(例えばインターネットNT1)を用いた通信のトラフィック量を低減でき、ネットワークを有効活用できる。
また、プロセッサは、通信インタフェース160b,160cによる通信に使用される通信帯域を基に、MPTCPのサブフローの確立順序を決定してもよい。通信インタフェース160b,160cは、決定された確立順序で、SYN+MP_CAPABLEパケットやSYN+ACK+MP_CAPABLEパケット又はSYN+MP_JOINパケットやSYN+ACK+MP_JOINパケットを通信してもよい。
これにより、通信装置100は、ローカルIPアドレスを用いてMPTCPの高速通信が可能なサブフローを確立できる。よって、通信装置100は、迅速に通信可能な帯域を広く確保でき、MPTCP通信の一層の高速化を実現できる。
また、通信インタフェース160a〜160cは、確立された複数のサブフローのうち、一部のサブフローが切断された場合、他のサブフローを介して、通信データを再送してもよい。
これにより、通信装置100は、ローカルIPアドレス又はグローバルIPアドレスを用いたMPTCPのいずれかのサブフローが切断された場合でも、切断されたサブフローが送るべき通信データを再送できる。よって、通信装置100は、MPTCP通信の信頼性を向上できる。
また、通信インタフェース160bは、通信インタフェース160aのグローバルIPアドレスの情報を含むMP_ADD_ADDRESSパケットを送信してもよい。MP_ADD_ADDRESSパケットは、第4の制御データの一例である。
これにより、他の通信装置100が通信装置100のグローバルIPアドレスの情報を認識可能であるので、他の通信装置100から通信装置100に対して、グローバルIPアドレスを用いた新たなサブフローを追加で確立できる。
(他の実施形態)
以上のように、本開示における技術の例示として、第1の実施形態を説明した。しかし、本開示における技術は、これに限定されず、変更、置き換え、付加、省略などを行った実施形態にも適用できる。
第1の実施形態では、通信装置100Aが複数の通信インタフェース160を備え、他の通信装置100Bが1つの通信インタフェース160を備えることを例示したが、他の通信装置100Bが複数の通信インタフェース160を備えてもよい。
図9は、他の実施形態における通信システムを説明するための模式図である。図9では、通信装置100Aは、m個(mは任意の数)の通信インタフェース160を備え、他の通信装置100Bは、n個(nは任意の数)の通信インタフェース160を備える。この場合、m×n個のサブフローが確立され得る。
また、図9では、他の通信装置100Bは、全ての通信インタフェース160においてグローバルIPアドレスが用いられることを例示しているが、これらの通信インタフェース160の一部がローカルIPアドレスを用いてもよい。この場合、インターネットNT1と他の通信装置100Bとの間には、通信装置100A側と同様に、NATサーバ200が配置される。
第1の実施形態では、NATサーバ200を用いてローカルIPアドレスとグローバルIPアドレスとを変換することを例示したが、他の方法でアドレス変換してもよい。例えば、NATサーバ200の代わりに、アドレス情報に加えてポート情報を加味したNAPT(Network Address Port Translation)サーバを用いてアドレス変換してもよい。NAPTサーバを用いることで、1つのグローバルIPアドレスと複数のローカルIPアドレスとを変換できる。
第1の実施形態では、通信システム10が基地局を含む無線通信システムでもよく、他のシステム(例えばコンテンツ配信システムや監視システム)でもよい。無線通信システムである場合、通信装置100Aが例えば携帯端末であり、通信装置100Bが例えば基地局装置である。コンテンツ配信システムである場合、通信装置100Aが例えば携帯端末であり、通信装置100Bが例えばコンテンツ配信サーバである。監視システムである場合、通信装置100Aが例えばカメラ装置であり、通信装置100Bが例えば監視用のPCである。
第1の実施形態では、通信装置100が2つ又は3つの通信方式に従って通信可能であることを例示したが、4つ以上の通信方式に従って通信可能でもよい。
第1の実施形態では、CPU111、ネットワークコントローラ113を一例として説明したが、CPU111、ネットワークコントローラ113以外のプロセッサでもよい。プロセッサは、物理的にどのように構成されてもよい。また、プログラム可能なプロセッサを用いれば、プログラムの変更により処理内容を変更できるので、プロセッサの設計の自由度を高めることができる。プロセッサは、1つの半導体チップで構成してもよいし、物理的に複数の半導体チップで構成してもよい。複数の半導体チップで構成する場合、第1の実施形態の各制御をそれぞれ別の半導体チップで実現してもよい。この場合、それらの複数の半導体チップで1つのプロセッサを構成すると考えることができる。また、プロセッサは、半導体チップと別の機能を有する部材(コンデンサ等)で構成してもよい。また、プロセッサが有する機能とそれ以外の機能とを実現するように、1つの半導体チップを構成してもよい。
第1の実施形態では、図2において通信装置100の構成を示したが、各構成は、ハードウェアにより実現されてもよいし、ソフトウェアにより実現されてもよい。