JP2014197774A - 通信機器、通信システム、通信機器の制御方法およびプログラム - Google Patents

通信機器、通信システム、通信機器の制御方法およびプログラム Download PDF

Info

Publication number
JP2014197774A
JP2014197774A JP2013072362A JP2013072362A JP2014197774A JP 2014197774 A JP2014197774 A JP 2014197774A JP 2013072362 A JP2013072362 A JP 2013072362A JP 2013072362 A JP2013072362 A JP 2013072362A JP 2014197774 A JP2014197774 A JP 2014197774A
Authority
JP
Japan
Prior art keywords
algorithm
destination
port number
address
mapping
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.)
Pending
Application number
JP2013072362A
Other languages
English (en)
Inventor
保徳 佐原
Yasunori Sahara
保徳 佐原
健介 初川
Kensuke Hatsukawa
健介 初川
拓史 岩崎
Takushi Iwasaki
拓史 岩崎
崇行 菅原
Katayuki Sugawara
崇行 菅原
英明 吉村
Hideaki Yoshimura
英明 吉村
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.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2013072362A priority Critical patent/JP2014197774A/ja
Priority to US14/205,468 priority patent/US20140294009A1/en
Priority to CN201410108280.8A priority patent/CN104079487A/zh
Publication of JP2014197774A publication Critical patent/JP2014197774A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/255Maintenance or indexing of mapping tables
    • H04L61/2553Binding renewal aspects, e.g. using keep-alive messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • H04L61/5014Internet protocol [IP] addresses using dynamic host configuration protocol [DHCP] or bootstrap protocol [BOOTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】デバイス同士が直接通信に成功する確率を向上させる。
【解決手段】送信元アルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する。宛先マッピングアルゴリズム取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する。生成部が、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する。
【選択図】図4

Description

本技術は、通信機器、通信システム、通信機器の制御方法およびプログラムに関する。詳しくは、他の通信機器と直接通信を行う通信機器、通信システム、通信機器の制御方法およびプログラムに関する。
従来より、IPv4(Internet Protocol version 4)アドレス枯渇の問題を当面回避するために、NAT(Network Address Translation)機能が利用されている。NAT機能とは、IP(Internet Protocol)アドレスを別のIPアドレスに変換する機能である。近年では、IPアドレスに加えてポート番号も変換することができるNAPT(Network Address Port Translation)またはIPマスカレードと呼ばれるNAT機能がよく用いられる。
NAPTにおいては、例えば、LAN(Local Area Network)内の内部IP(Internet Protocol)アドレスおよび内部ポート番号に対して、外部IPアドレスおよび外部ポート番号が割り当てられる。ルータなどのNAT機器は、複数の外部ポート番号を割り当てることができるため、NAPTにより複数の内部IPアドレスと、1つの外部IPアドレスとを相互に変換することができる。これにより、LAN内の複数のデバイスが1つの外部IPアドレスを利用して同時に外部のデバイスとの間で通信を行うことができる。
ここで、NAT機器が、LAN内のデバイスに動的に外部ポート番号を割り当てる場合、LAN外のデバイスは、LAN内のデバイスに対応する外部ポート番号を取得することが困難となる。この問題を解決して、外部のデバイスが、NAT機器の配下のデバイスにアクセスすることをNATトラバーサルという。
NATトラバーサルを実現する方法として、内部IPアドレスに対する外部ポート番号の割り当て(すなわち、ポートマッピング)を、利用者が手動で行う方法が挙げられるが、利用者に対して専門知識が求められるために実行が困難である。そこで、ポートマッピングを自動で行うために、UPnP(Universal Plug and Play)やSTUN(Simple Traversal of UDP through NATs)などのプロトコルが利用されている。このうち、UPnPでは、静的なポートマッピングしか行うことができず、さらにUPnPにNAT機器およびデバイスの両方が対応していないと適用できないため汎用性に乏しい。
一方、STUNでは、デバイスがSTUNに対応していれば、NAT機器に依存せずにNATトラバーサルを行うことができる。STUNでは、デバイスSが、通信対象のデバイスDに対するポートマッピングのアルゴリズムを調査することができる。また、このSTUNを利用する通信システムでは、ホールパンチングと呼ばれる技術がよく用いられる。ホールパンチングでは、例えば、デバイスDが、デバイスD側のNAT機器を介してデバイスSへ向けてホールパンチングパケットを送信する。このホールパンチングパケットにより、デバイスD側のNAT機器において、デバイスSとの通信に使用可能なポート番号が登録(言い換えれば、解放)される。ただし、デバイスS側にもNAT機器があると、このホールパンチングパケットは、デバイスSには届かない。この時点では、デバイスS側のNAT機器において、デバイスDとの間の通信に使用可能なポート番号が解放されていないためである。
ホールパンチングパケットがデバイスSに届かないため、デバイスSは、デバイスD側のNAT機器において解放されたポート番号を取得することができない。そこで、デバイスSは、STUNにより調査したポートマッピングのアルゴリズムに基づいて、解放されるポート番号を予測し、そのポート番号にパケットを送信する。これらのSTUNおよびホールパンチングの利用により、異なるLAN内のデバイス同士が直接通信を行うことができる。デバイス同士が直接通信を行うことにより、サーバとデバイスとの間の通信量や、サーバの負荷が軽減される。
このような直接通信を行うには、デバイスS、Dが事前に相手のIPアドレスおよびポート番号を取得する必要があるため、サーバが、IPアドレス等をデバイスのそれぞれへ通知する通信システムが提案されている(例えば、特許文献1参照。)。
特開2005−45678号公報
しかしながら、上述の従来技術では、直接通信に失敗するおそれがある。例えば、ホールパンチングパケットを生成するデバイスDが、他のデバイスS'との間で通信を行ったことにより、デバイスSが予測した外部ポート番号が、そのデバイスS'との通信において使用されてしまうことがある。この場合、デバイスSが予測したポート番号が、ホールパンチングにより実際に解放されたポート番号と異なる値となるため、デバイスSが送信したパケットは、デバイスDに届かない。この結果、直接通信に失敗してしまう。
本技術はこのような状況に鑑みて生み出されたものであり、デバイス同士が直接通信に成功する確率を向上させることを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得部と、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には上記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部とを具備する通信装置、および、その制御方法ならびに当該方法をコンピュータに実行させるためのプログラムである。これにより、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる外部ポート番号が生成されるという作用をもたらす。
また、この第1の側面において、上記送信元マッピングアルゴリズム取得部は、上記送信元の内部アドレスおよび内部ポート番号に対して割り当てられた上記外部アドレスおよび上記外部ポート番号の通知を要求する複数のパケットをマッピング調査要求パケットとして異なる複数の宛先へ送信するマッピング調査要求パケット送信部と、上記マッピング調査要求パケットの各々に対するマッピング調査応答パケットを受信して上記マッピング調査応答パケットにより通知された外部アドレスおよび上記外部ポート番号に基づいて上記送信元マッピングアルゴリズムを取得するマッピング調査応答パケット受信部とを備えてもよい。これにより、マッピング調査応答パケットにより通知された外部アドレスおよび外部ポート番号に基づいて送信元マッピングアルゴリズムが取得されるという作用をもたらす。
また、この第1の側面において、上記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを送信元フィルタリングアルゴリズムとして取得する送信元フィルタリングアルゴリズム取得部と、上記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを宛先フィルタリングアルゴリズムとして取得する宛先フィルタリングアルゴリズム取得部とをさらに具備し、上記生成部は、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムよりも複雑である場合、または、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムと同一であり、かつ、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には上記外部ポート番号を生成してもよい。これにより、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムよりも複雑である場合、または、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムと同一であり、かつ、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には外部ポート番号が生成されるという作用をもたらす。
また、この第1の側面において、上記送信元マッピングアルゴリズムおよび上記宛先マッピングアルゴリズムの組合せごとに上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを示すフラグを記憶するテーブルと、上記送信元マッピングアルゴリズムおよび上記宛先マッピングアルゴリズムの組合せに対応する上記フラグに基づいて上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定するアルゴリズム判定部とをさらに具備し、上記生成部は、上記アルゴリズム判定部により上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であると判定された場合には上記外部ポート番号を生成してもよい。これにより、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せごとにテーブルに記憶されたフラグに基づいて送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
また、この第1の側面において、上記送信元の内部アドレスと上記宛先の内部アドレスとが同一のローカルエリアネットワーク内のアドレスであるか否かを判定する同一ネットワーク内アドレス判定部をさらに具備し、上記アルゴリズム判定部は、上記送信元の内部アドレスと上記宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、送信元の内部アドレスと宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
また、この第1の側面において、割り当てられたアドレスが上記内部アドレスであるか否かを判定するアドレスタイプ判定部をさらに具備し、上記アルゴリズム判定部は、上記割り当てられたアドレスが上記内部アドレスである場合には上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、割り当てられたアドレスが内部アドレスである場合には送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
また、この第1の側面において、上記送信元マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する送信元変換機器と上記宛先マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する宛先変換機器とが同一であるか否かを判定する変換機器判定部をさらに具備し、上記アルゴリズム判定部は、上記送信元変換機器と上記宛先変換機器とが異なる場合には上記宛先マッピングアルゴリズムが上記送信元マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、送信元変換機器と宛先変換機器とが異なる場合には宛先マッピングアルゴリズムが上記送信元マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
また、この第1の側面において、上記送信元の内部アドレスに割り当てられる外部アドレスからのパケットを上記送信元の内部アドレスに対応する外部アドレスへ転送するループバック処理を上記送信元変換機器が実行するか否かを判定するループバック判定部をさらに具備し、上記アルゴリズム判定部は、上記送信元変換機器と上記宛先変換機器とが異なる場合、または、上記送信元変換機器と上記宛先変換機器とが同一であり、かつ、上記送信元変換機器が上記ループバック処理を実行する場合には上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、送信元変換機器と宛先変換機器とが異なる場合、または、送信元変換機器と宛先変換機器とが同一であり、かつ、送信元変換機器がループバック処理を実行する場合には送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
また、この第1の側面において、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑でない場合には上記宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へパケットをホールパンチングパケットとして送信するホールパンチングパケット送信部をさらに具備してもよい。これにより、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑でない場合には宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へホールパンチングパケットが送信されるという作用をもたらす。
また、この第1の側面において、前記ホールパンチングパケット送信部は、前記ホールパンチングパケット送信部は、前記送信元マッピングアルゴリズムが特定のアルゴリズムである場合には前記外部ポート番号を生成して当該外部ポート番号および前記外部アドレスへ前記ホールパンチングパケットを送信してもよい。これにより、送信元マッピングアルゴリズムが特定のアルゴリズムである場合に生成された外部ポート番号および外部アドレスへホールパンチングパケットが送信されるという作用をもたらす。
また、この第1の側面において、上記外部ポート番号が生成されると当該生成された外部ポート番号に対してパケットを送信するパケット送信部をさらに具備してもよい。これにより、外部ポート番号が生成されると外部ポート番号に対してパケットが送信されるという作用をもたらす。
また、本技術の第2の側面は、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして送信するサーバと、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、上記宛先マッピングアルゴリズムを受信する宛先マッピングアルゴリズム受信部と、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には上記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部とを備える通信機器とを具備する通信システムである。これにより、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる外部ポート番号が生成されるという作用をもたらす。
また、この第2の側面において、上記サーバは、上記宛先マッピングアルゴリズムを送信する宛先マッピングアルゴリズム送信部と上記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して送信元フィルタリングアルゴリズムとして送信する送信元フィルタリングアルゴリズム送信部と、上記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して宛先フィルタリングアルゴリズムとして送信するフィルタリングアルゴリズム送信部とを備え、上記通信機器は、上記送信元フィルタリングアルゴリズムを受信する送信元フィルタリングアルゴリズム受信部と、上記宛先フィルタリングアルゴリズムを受信する宛先フィルタリングアルゴリズム受信部とをさらに備え、上記生成部は、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムよりも複雑である場合、または、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムと同一であり、かつ、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる上記外部ポート番号を生成してもよい。これにより、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムよりも複雑である場合、または、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムと同一であり、かつ、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には外部ポート番号が生成されるという作用をもたらす。
また、この第2の側面において、上記送信元フィルタリングアルゴリズム送信部および上記宛先フィルタリングアルゴリズム送信部は、上記送信元および上記宛先のそれぞれの内部アドレスおよび内部ポート番号に割り当てられた外部アドレスおよび外部ポート番号に対して返信を要求する複数のパケットをフィルタリング調査要求パケットとして上記サーバにおける異なる外部アドレスおよび外部ポート番号から送信するフィルタリング調査要求パケット送信部と、上記フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて上記送信元フィルタリングアルゴリズムおよび上記宛先フィルタリングアルゴリズムを取得して送信するフィルタリングアルゴリズム取得部とを備えてもよい。これにより、フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムが取得されるという作用をもたらす。
本技術によれば、デバイス同士が直接通信に成功する確率を向上させることができるという優れた効果を奏し得る。
第1の実施の形態における通信システムの一構成例を示すブロック図である。 第1の実施の形態におけるルータの一構成例を示すブロック図である。 第1の実施の形態におけるアドレス変換テーブルの一構成例を示す図である。 第1の実施の形態におけるデバイスの一構成例を示すブロック図である。 第1の実施の形態におけるサーバの一構成例を示すブロック図である。 第1の実施の形態におけるデバイス情報記憶部520に記憶される情報の一例を示す図である。 第1の実施の形態におけるマッピング調査要求パケットのデータ構造の一例を示す図である。 第1の実施の形態におけるマッピング調査応答パケットの生成方法を説明するための図である。 第1の実施の形態におけるエンドポイント非依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。 第1の実施の形態におけるアドレス依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。 第1の実施の形態におけるアドレス・ポート依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。 第1の実施の形態におけるランダムマッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。 第1の実施の形態におけるマッピングアルゴリズム通知パケットのデータ構造の一例を示す図である。 第1の実施の形態における判定テーブルの一構成例を示す図である。 第1の実施の形態におけるデバイスの動作の一例を示すフローチャートである。 第1の実施の形態におけるマッピングアルゴリズム取得処理の一例を示すフローチャートである。 第1の実施の形態におけるNATトラバーサル処理の一例を示すフローチャートである。 第1の実施の形態におけるサーバの動作の一例を示すフローチャートである。 第1の実施の形態におけるサーバおよびデバイスの動作の一例を示すシーケンス図である。 第1の実施の形態における外部ポート番号の使用状況の一例を示す図である。 第2の実施の形態におけるルータの一構成例を示すブロック図である。 第2の実施の形態におけるフィルタリングテーブルの一構成例を示す図である。 第2の実施の形態におけるサーバの一構成例を示すブロック図である。 第2の実施の形態におけるフィルタリング調査要求パケットのデータ構造の一例を示す図である。 第2の実施の形態におけるエンドポイント非依存フィルタリングおよびアドレス依存フィルタリングにより処理されるパケットの一例を示す図である。 第2の実施の形態におけるアドレス・ポート依存フィルタリングより処理されるパケットの一例を示す図である。 第2の実施の形態におけるフィルタリングアルゴリズム通知パケットのデータ構成の一例を示す図である。 第2の実施の形態におけるデバイスの一構成例を示すブロック図である。 第2の実施の形態における判定テーブルの一構成例を示す図である。 第2の実施の形態におけるデバイスの動作の一例を示すフローチャートである。 第2の実施の形態におけるフィルタリングアルゴリズム取得処理の一例を示すフローチャートである。 第2の実施の形態におけるサーバの動作の一例を示すフローチャートである。 第2の実施の形態における外部ポート番号の使用状況の一例を示す図である。 第3の実施の形態におけるデバイスの一構成例を示すブロック図である。 第3の実施の形態におけるネットワークタイプ判定部の一構成例を示すブロック図である。 第3の実施の形態におけるデバイスの動作の一例を示す図である。 第3の実施の形態におけるネットワークタイプT1およびT2の一例を示す図である。 第3の実施の形態におけるネットワークタイプT4およびT5の一例を示す図である。 第3の実施の形態におけるデバイスの動作の一例を示すフローチャートである。 第3の実施の形態におけるNATトラバーサル処理の一例を示すフローチャートである。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(マッピングアルゴリズムに基づいてマスタを判定する例)
2.第2の実施の形態(フィルタリングアルゴリズムおよびマッピングアルゴリズムに基づいてマスタを判定する例)
3.第3の実施の形態(ネットワークタイプを判定してからマッピングアルゴリズムに基づいてマスタを判定する例)
<1.第1の実施の形態>
[通信システムの構成例]
図1は、第1の実施の形態における通信システムの一構成例を示すブロック図である。この通信システムは、デバイス同士が直接通信を行うためのシステムであり、IP電話サービス、ビデオ会議システム、または、オンラインゲームなどにおいて利用される。通信システムは、例えば、デバイス100および101と、サーバ500とを備える。
デバイス100および101は、互いに異なるLAN内の通信機器である。デバイス100および101には、それぞれのLANにおいてDHCP(Dynamic Host Configuration Protocol)サーバなどにより、プライベートIPアドレスが配布される。DHCPサーバは、図1において省略されている。なお、LAN内のデバイス100または101がグローバルIPアドレスを有する構成であってもよい。また、デバイス100および101に静的なプライベートIPアドレスが設定されていてもよい。また、デバイス100および101は、特許請求の範囲に記載の通信機器の一例である。
デバイス100は、ルータ300に接続されており、一方、デバイス101はルータ301に接続されている。このルータ300は、デバイス100のIPアドレスおよびポート番号を、ルータ300のグローバルIPアドレスおよびポート番号に変換する。一方、ルータ301は、デバイス101のIPアドレスおよびポート番号を、ルータ301のグローバルIPアドレスおよびポート番号に変換する。
ここで、変換前のIPアドレス(プライベートIPアドレスなど)およびポート番号を、以下、「内部IPアドレス」および「内部ポート番号」と称する。また、変換後のグローバルIPアドレスおよびポート番号を、以下、「外部IPアドレス」および「外部ポート番号」と称する。
これらのルータ300には、デバイス100の他、デバイス100と同一のLAN内のデバイスが必要に応じて接続される。ルータ301にも、デバイス101と同一のLAN内のデバイスが必要に応じて接続される。また、デバイス100および101は、それぞれルータ300および301を介して、インターネットなどのWAN(Wide Area Network)400に接続される。
なお、ルータがIPアドレスおよびポート番号の変換を行う構成としているが、ルータ以外の機器がアドレスおよびポートの変換を行う構成としてもよい。例えば、NAT機能を有するOS(Operation System)がインストールされた機器がIPアドレスおよびポート番号の変換を行ってもよい。
また、ルータ300および301とWAN400との間に1つ以上のルータがさらに設けられ、ルータ300および301は、それらのルータを介してWAN400に接続する構成であってもよい。
サーバ500は、デバイス100および101を管理する機器である。サーバ500は、デバイス100および101が直接通信を行う際に、その直接通信に必要な情報をデバイス100および101に送信する。また、サーバ500には、複数のグローバルIPアドレスが割り当てられている。これらのIPアドレスの利用方法については後述する。
サーバ500にデバイス100およびデバイス101が接続され、その一方が他方との間の直接通信を要求するセッション確立要求パケットをサーバ500へ送信すると、サーバ500は、そのパケットを他方に転送する。
そして、デバイス100は、デバイス100の内部IPアドレスおよび内部ポート番号にルータ300の外部IPアドレスおよび外部ポート番号を割り当てるマッピングアルゴリズムを取得する。一方、デバイス101も、デバイス101の内部IPアドレスおよび内部ポート番号にルータ301の外部IPアドレスおよび外部ポート番号を割り当てるマッピングアルゴリズムを取得する。デバイス100および101のそれぞれは、取得したマッピングアルゴリズムを、サーバ500を介して相互に通知しあう。また、デバイス100および101は、それぞれの外部IPアドレスおよび外部ポート番号をサーバ500を介して互いに通知しあう。
デバイス100および101は、取得したマッピングアルゴリズムに基づいて、いずれがマスタとなるかを判定する。ここで、マスタは、直接通信を試みる2つのデバイスのうち、ホールパンチングパケットにより新たに割り当てられる(言い換えれば、解放される)外部ポート番号を必要に応じて予測する方のデバイスである。一方、スレーブは、ホールパンチングパケットを必要に応じて送信し、外部ポート番号を新たに解放する方のデバイスである。
スレーブは、マスタを宛先とするパケットをホールパンチングパケットとして、必要に応じて送信する。そして、マスタは、スレーブの外部ポート番号とスレーブに基づいてスレーブに新たに割り当てられる外部ポート番号を必要に応じて予測し、その予測したポート番号に対して通信パケットを送信する。これにより、マスタおよびスレーブの間の直接通信が実現される。
[ルータの構成例]
図2は、第1の実施の形態におけるルータ300の一構成例を示すブロック図である。ルータ300は、ルーティング処理部310、アドレス変換部320およびアドレス変換テーブル330を備える。ルータ301の構成は、ルータ300と同様である。
ルーティング処理部310は、パケットを受信すると、受信したパケットの宛先に基づいて、そのパケットの経路を選択(すなわち、ルーティング)するものである。このルーティング処理部310は、アドレス変換後のLANの内部からのパケットを外部へ転送し、アドレス変換部320を介して、外部からのパケットを内部へ転送する。
アドレス変換部320は、内部IPアドレスおよび内部ポート番号と外部IPアドレスおよび外部ポート番号とを相互に変換するものである。このアドレス変換部320は、LANの内部から外部へのパケットを受信すると、そのパケットの送信元の内部IPアドレスおよび内部ポート番号に対応する外部ポート番号がアドレス変換テーブル330に登録されているか否かを判断する。
対応する外部ポート番号が登録されていれば、アドレス変換部320は、内部IPアドレスおよび内部ポート番号を、ルータ300の外部IPアドレスと、その外部ポート番号とに変換してルーティング処理部310に供給する。
一方、対応する外部ポート番号が登録されていなければ、アドレス変換部320は、予め設定されたマッピングアルゴリズムに従って内部IPアドレスおよび内部ポート番号に対して新たに外部ポート番号を割り当てアドレス変換テーブル330に登録する。そして、アドレス変換部320は、内部IPアドレスおよび内部ポート番号を、ルータ300の外部IPアドレスと、割り当てた外部ポート番号とに変換してルーティング処理部310に供給する。
ここで、マッピングアルゴリズムとして、例えば、エンドポイント非依存マッピング、アドレス依存マッピング、アドレス・ポート依存マッピング、および、ランダムマッピングのいずれかのアルゴリズムが用いられる。これらのアルゴリズムの詳細については後述する。これらのうち、エンドポイント非依存マッピング、アドレス依存マッピング、および、アドレス・ポート依存マッピングは、RFC(Request for Comments)4787等に規定されている。
また、アドレス変換部320は、LANの外部から内部へのパケットをルーティング処理部310から受け取る。アドレス変換部320は、そのパケットの宛先の外部ポート番号に対応する内部IPアドレスおよび内部ポート番号がアドレス変換テーブル330に登録されているか否かを判断する。
対応する内部IPアドレスおよび内部ポート番号が登録されていれば、アドレス変換部320は、外部IPアドレスおよび外部ポート番号を、その内部IPアドレスおよび内部ポート番号に変換して、その宛先に転送する。
一方、対応する内部IPアドレスおよび内部ポート番号が登録されていなければ、アドレス変換部320は、受信したパケットを破棄する。
[アドレス変換テーブルの構成例]
図3は、第1の実施の形態におけるアドレス変換テーブル330の一構成例を示す図である。このアドレス変換テーブル330には、内部IPアドレスおよび内部ポート番号ごとに、外部IPアドレス、外部ポート番号および宛先が登録される。
アドレス変換テーブル330に登録される宛先は、LANの内部から外部へ送信されたパケットの宛先のIPアドレスとポート番号であり、そのパケットの送信元の内部IPアドレスおよび内部ポート番号に対応付けて登録される。
この宛先は、マッピングアルゴリズムにおいて、外部ポート番号を新たに割り当てるか否かの判断に用いられる。
具体的には、エンドポイント非依存マッピングにおいては、宛先は参照されない。これは、エンドポイント非依存マッピングでは、内部IPアドレスおよび内部ポート番号に対する外部ポート番号が一旦登録されると、宛先が変わっても、新たに外部ポート番号を割り当てないためである。
例えば、(内部IPアドレス:内部ポート番号)が(X1:x1)のデバイスと、(外部IPアドレス:外部ポート番号)が(Y1:y1)のデバイスと、(外部IPアドレス:外部ポート番号)が(Y2:y2)のデバイスとがある場合を考える。(X1:x1)のデバイスは、例えば、デバイス101であり、(Y1:y1)のデバイスは、例えば、サーバ500である。(Y2:y2)のデバイスは、例えば、ルータ301である。また、ルータ300の通信インターフェースの外部IPアドレスはX1'であり、ルータ300の外部ポート番号はx1'やx2'などである。
エンドポイント非依存マッピングでは、初期状態において(X1:x1)から(Y1:y1)へパケットが送信されると、(X1:x1)に対して、ルータ300の(X1':x1')が割り当てられる。しかし、その後に、(X1:x1)から(Y2:y2)へパケットが送信されても、(X1:x1)に対して新たに外部ポート番号が割り当てられず、そのパケットの送信元は(X1':x1')に変換される。
次に、アドレス依存マッピングにおいては、宛先のIPアドレスが変わると、新たに外部ポート番号が割り当てられる。
アドレス依存マッピングでは、例えば、初期状態において(X1:x1)から(Y1:y1)へパケットが送信されると、(X1:x1)に対応付けて(X1':x1')と宛先Y1とが登録される。その後に、(X1:x1)から(Y2:y2)へパケットが送信されると、宛先のIPアドレスが異なるため、(X1:x1)に対して新たに(X1':x2')が宛先Y2と関連付けて割り当てられる。一方、(X1:x1)から(Y1:y2)へパケットが送信されても、宛先のIPアドレスが同一であるから、新たな外部ポート番号は割り当てられない。図3に例示したアドレス変換テーブル330は、このアドレス依存マッピングにおいて用いられるテーブルである。
そして、アドレス・ポート依存マッピングにおいては、宛先のIPアドレスまたはポート番号が変わると、新たに外部ポート番号が割り当てられる。
アドレス・ポート依存マッピングでは、例えば、初期状態において(X1:x1)から(Y1:y1)へパケットが送信されると、(X1:x1)に対応付けて、(X1':x1')および宛先(Y1:y1)が登録される。その後に、(X1:x1)から(Y2:y2)へパケットが送信されると、宛先のIPアドレスが異なるため、(X1:x1)に対して新たに(X1':x2')が宛先(Y2:y2)と関連付けて割り当てられる。また、(X1:x1)から(Y1:y2)へパケットが送信された場合も、宛先のポート番号が異なるため、新たな外部ポート番号が割り当てられる。
これらのエンドポイント非依存マッピング、アドレス依存マッピング、および、アドレス・ポート依存マッピングでは、規則的に生成された外部ポート番号が割り当てられる。例えば、ある外部ポート番号x1'を割り当てた後、その次に新たに外部ポート番号を割り当てる場合、x1'をインクリメントした番号が割り当てられる。
これに対して、ランダムマッピングにおいては、宛先のIPアドレスまたはポート番号が変わるたびに、不規則に生成された外部ポート番号が割り当てられる。
このように、これらのマッピングアルゴリズムは、それぞれ複雑さが異なる。宛先が変わっても新たに外部ポート番号を割り当てないエンドポイント非依存マッピングよりも、宛先が変わるたびに外部ポート番号を割り当てるアドレス依存マッピングの方が複雑である。また、宛先のポート番号が変わっても新たに外部ポート番号を割り当てないアドレス依存マッピングよりも、宛先のポート番号が変わるたびに外部ポート番号を割り当てるアドレス・ポート依存マッピングの方が複雑である。また、規則的にポート番号を割り当てるアドレス・ポート依存マッピングよりも、不規則にポート番号を割り当てるランダムマッピングの方が複雑である。
つまり、複雑さの度合いが高い順に並べると、ランダムマッピング>アドレス・ポート依存マッピング>アドレス依存マッピング>エンドポイント非依存マッピングの順となる。
アルゴリズムが複雑であるほど、新たに割り当てられる外部ポート番号の予測が困難となる。このため、デバイス100または101は、単純な方のアルゴリズムにより割り当てられる外部ポート番号を予測することが望ましい。例えば、デバイス100に対応するルータ300のマッピングアルゴリズムより、デバイス101に対応するルータ301のマッピングアルゴリズムが複雑である場合を考える。この場合は、デバイス101がマスタとなり、単純な方のルータ300のマッピングアルゴリズムに対応する予測アルゴリズムに基づいて外部ポート番号を予測すればよい。
[デバイスの構成例]
図4は、第1の実施の形態におけるデバイス100の一構成例を示すブロック図である。このデバイス100は、マッピングアルゴリズム取得部150、マスタ/スレーブ判定部160および判定テーブル170および直接通信部180を備える。また、マッピングアルゴリズム取得部150は、送信元マッピングアルゴリズム取得部151、マッピングアルゴリズム通知部152および宛先マッピングアルゴリズム取得部153を備える。デバイス101の構成は、デバイス100と同様である。
送信元マッピングアルゴリズム取得部151は、送信元のデバイスの内部IPアドレスおよび内部ポート番号に対して外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得するものである。送信元マッピングアルゴリズム取得部151は、直接通信が必要な場合に、通信対象のデバイスを指定したセッション確立要求パケットをサーバ500に送信する。このセッション確立要求パケットは、例えば、SIP(Session Initiation Protocol)に従って送受信される。
セッション確立要求パケットを送信した後、送信元マッピングアルゴリズム取得部151は、複数のマッピング調査要求パケットをサーバ500へ送信する。これらのマッピング調査要求パケットは、デバイス100の内部IPアドレスおよび内部ポート番号に対して割り当てられた外部IPアドレスおよび外部ポート番号の通知を要求するパケットである。前述したように、宛先が変わったときのマッピング方法は、マッピングアルゴリズムごとに異なる。このアルゴリズムの違いを判断するために、複数のマッピング調査要求パケットは、それぞれ異なる宛先に順に送信される。
例えば、宛先の異なる4つのマッピング調査要求パケットRqm1、Rqm2、Rqm3およびRqm4が順に送信される。Rqm2は、宛先のIPアドレスがRqm1と同一で、宛先のポート番号がRqm1と異なるパケットである。Rqm3は、宛先のIPアドレスがRqm1と異なり、宛先のポート番号がRqm1と同一のパケットである。Rqm4は、宛先のIPアドレスおよびポート番号の両方がRqm1と異なるパケットである。これらの4つのパケットを1つのサーバ500で受信するには、複数の外部IPアドレスが必要となる。このため、サーバ500の通信インターフェースには複数の外部IPアドレスが割り当てられている。
ルータ300は、マッピング調査要求パケットの送信元の内部IPアドレスおよび内部ポート番号に外部IPアドレスおよび外部ポート番号を割り当てる。サーバ500はマッピング調査要求パケットRqm1の送信元の外部IPアドレスおよび外部ポート番号をペイロードに格納したマッピング調査応答パケットRpm1を生成して、デバイス100に返信する。同様に、サーバ500は、マッピング調査要求パケットRqm2、Rqm3およびRqm4に応じてマッピング調査応答パケットRpm2、Rpm3およびRpm4を生成してデバイス100に返信する
送信元マッピングアルゴリズム取得部151は、それらのマッピング調査応答パケットを受信し、そのペイロードから、外部IPアドレスおよび外部ポート番号を取得する。そして、送信元マッピングアルゴリズム取得部151は、それらの外部IPアドレスおよび外部ポート番号から、送信元マッピングアルゴリズムを取得する。
具体的には、4つのマッピング調査要求パケットに対する外部ポート番号が全て同一である場合、送信元マッピングアルゴリズム取得部151は、エンドポイント非依存マッピングであると判断する。このエンドポイント非依存マッピングでは、宛先が変わっても、LAN内のデバイスに対応するポート番号は変更されないためである。
また、マッピング調査応答パケットRpm1およびRpm2の外部ポート番号は同一であるが、マッピング調査応答パケットRpm1と、Rpm3およびRpm4との外部ポート番号が異なる場合を考える。この場合には、送信元マッピングアルゴリズム取得部151は、アドレス依存マッピングであると判断する。このアドレス依存マッピングでは、宛先のIPアドレスが変わるとLAN内のデバイスに対応するポート番号が変更されるためである。
また、4つのマッピング調査要求パケットに対する外部ポート番号が全て異なる場合、送信元マッピングアルゴリズム取得部151は、マッピング調査要求パケットの送信順序において隣り合う外部ポート番号の差分を算出する。4つのマッピング調査要求パケットが順に送信されたため、3つの差分が算出される。それらの差分が同一である場合は、送信元マッピングアルゴリズム取得部151は、アドレス・ポート依存マッピングであると判断する。このアドレス・ポート依存マッピングでは、宛先のIPアドレスまたはポート番号が変わるとLAN内のデバイスに対応するポート番号が規則的に変更されるためである。
4つのマッピング調査要求パケットに対する外部ポート番号が全て異なり、算出した3つの差分が同一でない場合には、送信元マッピングアルゴリズム取得部151は、ランダムマッピングであると判断する。このランダムマッピングでは、宛先のIPアドレスまたはポート番号が変わるとLAN内のデバイスに対応するポート番号が不規則に変更されるためである。
送信元マッピングアルゴリズム取得部151は、送信元マッピングアルゴリズムと、デバイス100の外部IPアドレスおよび外部ポート番号と、算出した差分とをマッピングアルゴリズム通知部152に供給する。また、送信元マッピングアルゴリズム取得部151は、送信元マッピングアルゴリズムをマスタ/スレーブ判定部160に供給する。
マッピングアルゴリズム通知部152は、デバイス100が取得したマッピングアルゴリズムをデバイス101にサーバ500を介して通知するものである。このマッピングアルゴリズム通知部152は、デバイス100が取得したマッピングアルゴリズムと、デバイス100の外部IPアドレスおよび外部ポート番号と、差分とをペイロードに格納したマッピングアルゴリズム通知パケットを生成する。マッピングアルゴリズム通知部152は、そのマッピングアルゴリズム通知パケットをサーバ500に送信する。サーバ500は、そのマッピングアルゴリズム通知パケットをデバイス101に転送する。
宛先マッピングアルゴリズム取得部153は、宛先のデバイスの内部IPアドレスおよび内部ポート番号に対して外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得するものである。この宛先マッピングアルゴリズム取得部153は、サーバ500により転送された、デバイス101からのマッピングアルゴリズム通知パケットを受信する。宛先マッピングアルゴリズム取得部153は、そのマッピングアルゴリズム通知パケットのペイロードから宛先マッピングアルゴリズムと、デバイス101の外部IPアドレスおよび外部ポート番号と、差分とを取得する。宛先マッピングアルゴリズム取得部153は、それらをマスタ/スレーブ判定部160に供給する。
図4では、デバイス100がセッション確立要求パケットの送信元である場合において送受信されるパケットを記載しているが、記載の便宜上、デバイス100が宛先の場合において送受信されるパケットを省略している。デバイス100が宛先の場合には、宛先マッピングアルゴリズム取得部153が、デバイス101からのセッション確立要求パケットを受信する。そして、宛先マッピングアルゴリズム取得部153が、4つのマッピング調査要求パケットをサーバ500に送信し、それらの応答パケットから宛先マッピングアルゴリズムを取得する。マッピングアルゴリズム通知部152は、その宛先マッピングアルゴリズムをデバイス101にサーバ500を介して送信する。一方、送信元マッピングアルゴリズム取得部151は、デバイス101からのマッピングアルゴリズム通知パケットを受信して、送信元マッピングアルゴリズムと、デバイス101の外部IPアドレスおよび外部ポート番号と差分とを取得する。
判定テーブル170は、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せごとに、デバイス100をマスタとするか否かを示すフラグを記憶するものである。例えば、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムより複雑である場合には、送信元のデバイスがマスタとなり、単純な方の宛先マッピングアルゴリズムに基づいて外部ポート番号を予測する。逆に、宛先マッピングアルゴリズムが送信元マッピングアルゴリズムより複雑である場合には、宛先のデバイスがマスタとなり、単純な方の送信元マッピングアルゴリズムに基づいて外部ポート番号を予測する。宛先マッピングアルゴリズムと送信元マッピングアルゴリズムとの複雑さが同一である場合には、例えば、送信元のデバイスをマスタとする。
なお、宛先マッピングアルゴリズムと送信元マッピングアルゴリズムとが同一である場合には、送信元および宛先のデバイスに優劣がつかないため、宛先のデバイスをマスタとしてもよい。
マスタ/スレーブ判定部160は、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムに基づいて、デバイス100をマスタとするか否かを判定するものである。このマスタ/スレーブ判定部160は、判定テーブルから、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムに対応するフラグを読み出して、デバイス100をマスタとするか否かを判定する。マスタ/スレーブ判定部160は、判定結果と、デバイス101のマッピングアルゴリズムと、デバイス101の外部IPアドレスおよび外部ポート番号と、差分とを直接通信部180に供給する。
直接通信部180は、デバイス101との間で直接通信を行うものである。直接通信部180は、スレーブ(デバイス101)側のマッピングアルゴリズムに対応する予測アルゴリズムに従って、外部ポート番号および差分から、新たに割り当てられる外部ポート番号を予測する。
具体的には、スレーブ側のマッピングアルゴリズムがアドレス依存マッピングまたはアドレス・ポート依存マッピングである場合、直接通信部180は、予測する外部ポート番号として、受信した外部ポート番号に差分を加えたポート番号を生成する。
直接通信部180は、デバイス101の外部IPアドレスと、生成した外部ポート番号とを宛先とする通信パケットを生成してサーバ500を介さずに送信する。これにより、デバイス101との間の直接通信が実現される。
ここで、デバイス100がマスタであり、マスタ(デバイス100)側のマッピングアルゴリズムがエンドポイント非依存マッピングである場合を考える。この場合には、予測した外部ポート番号のみならず、その周辺の外部ポート番号へもマスタが通信パケットを送信することで、直接通信に成功する確率が向上する。
一方、デバイス100がスレーブであり、かつ、マスタ(デバイス101)側のマッピングアルゴリズムがエンドポイント非依存マッピング以外である場合を考える。この場合には、直接通信部180は、デバイス101の外部IPアドレスと、生成したポート番号とを宛先とするパケットをホールパンチングパケットとして送信する。
ここで、ホールパンチングパケットの有効期間(TTL:Time To Live)は、最上位のルータに届かないように調整することが望ましい。
また、マスタ側のマッピングアルゴリズムがエンドポイント非依存マッピング以外である場合には、スレーブは、マスタ側のルータにおいて解放される外部ポート番号を予測して、その外部ポート番号へホールパンチングパケットを送信する。この際、スレーブがマルチホールパンチングを行うことで、直接通信に成功する確率が向上する。マルチホールパンチングとは、スレーブが複数のホールパンチングパケットを送信することである。マルチホールパンチングにより、マスタが予測した外部ポート番号のみならず、その周辺の外部ポート番号も解放される。外部ポート番号の予測においては、実際に解放された外部ポート番号が予測した外部ポート番号とずれてしまうことがある。例えば、デバイス101側のルータ301には、デバイス101以外のデバイスも接続することがあり、ルータ300が、そのデバイスに外部ポート番号を割り当てたことにより、解放された外部ポート番号が予測とずれてしまうことがある。あるいは、デバイス101内で動作している他のネットワークサービスの内部ポート番号に対してルータ300が外部ポート番号を割り当てたことにより、解放された外部ポート番号が予測とずれてしまうことがある。マルチホールパンチングにより、このような外部ポート番号のずれにも対応することができ、直接通信に成功する確率が向上する。
また、デバイス100がスレーブであり、かつ、スレーブ側のマッピングアルゴリズムがエンドポイント非依存マッピングである場合、直接通信部180は、ホールパンチングパケットを送信しなくてもよい。エンドポイント非依存マッピングでは、宛先が変わっても、スレーブに対応する外部ポート番号が変更されないためである。
ホールパンチングパケットにより新たな外部ポート番号が登録(解放)されると、マスタ(デバイス101)は、解放された外部ポート番号を予測して通信パケットを送信する。直接通信部180は、その通信パケットを受信する。これにより、デバイス100との間の直接通信が実現される。
なお、直接通信部180は、特許請求の範囲に記載の生成部の一例である。
[サーバの構成例]
図5は、第1の実施の形態におけるサーバ500の一構成例を示すブロック図である。このサーバ500は、転送部510、デバイス情報記憶部520およびマッピング調査応答部550を備える。
デバイス情報記憶部520は、サーバ500に接続されたデバイスごとに、そのデバイスの識別情報とデバイスの外部IPアドレスおよび外部ポート番号とを対応付けて記憶するものである。デバイスの識別情報は、直接通信を提供するサービスにおいてデバイスに割り当てられた識別情報であり、デバイス名や、そのデバイスのユーザ名などである。
転送部510は、セッション確立要求パケットおよびマッピングアルゴリズム通知パケットを転送するものである。転送部510は、デバイスがサーバ500との間の通信を開始すると、デバイスの識別情報と、デバイスの外部IPアドレスおよび外部ポート番号とを対応付けてデバイス情報記憶部520に記憶させる。
そして、セッション確立要求パケットをデバイスから受信すると、転送部510は、そのセッション要求パケットが接続を要求するデバイスの外部IPアドレスおよび外部ポート番号をデバイス情報記憶部520から読み出す。そして、転送部510は、読み出した外部IPアドレスおよび外部ポート番号へセッション確立要求パケットを転送する。
セッション確立要求パケットの転送後、セッション確立要求パケットの送信元および宛先の一方からマッピングアルゴリズム通知パケットを受信すると、転送部510は、そのパケットを他方へ転送する。
マッピング調査応答部550は、マッピング調査要求パケットに応じてマッピング調査応答パケットを返信するものである。このマッピング調査応答部550は、マッピング調査要求パケットを受信すると、そのパケットの送信元の外部IPアドレスおよび外部ポート番号を取得する。マッピング調査応答部550は、取得した外部IPアドレスおよび外部ポート番号をペイロードに格納したマッピング調査応答パケットを生成し、マッピング調査要求パケットの送信元に返信する。
図6は、第1の実施の形態におけるデバイス情報記憶部520に記憶される情報の一例を示す図である。デバイス情報記憶部520には、デバイス名と、IPアドレスおよびポート番号とが対応付けて記録される。これらのIPアドレスおよびポート番号は、デバイスの内部IPアドレスおよび内部ポート番号に割り当てられた外部IPアドレスおよび外部ポート番号である。
例えば、デバイス名「D1」がサーバ500に接続されると、そのIPアドレス「Y.Y.Y.1」およびポート番号「8000」が「D1」に対応付けて記憶される。また、デバイス名「D2」がサーバ500に接続されると、そのIPアドレス「Y.Y.Y.2」およびポート番号「8001」が「D1」に対応付けて記憶される。
「D1」のデバイスが、通信対象として「D2」を指定したセッション確立要求パケットをサーバ500に送信すると、サーバ500は、「D2」に対応する「Y.Y.Y.2」および「8001」に、そのパケットを転送する。
図7は、第1の実施の形態におけるマッピング調査要求パケットのデータ構造の一例を示す図である。図7におけるaは、マッピング調査要求パケットRqm1のデータ構造の一例を示す図である。このパケットは、ヘッダにおいて送信元IPアドレス、送信元ポート番号、宛先IPアドレスおよび宛先ポート番号を含む。この送信元IPアドレスおよび送信元ポート番号は、デバイス100の内部IPアドレスおよび内部ポート番号である。また、宛先IPアドレスおよび宛先ポート番号は、サーバ500の外部IPアドレスおよび外部ポート番号である。
図7におけるbは、マッピング調査要求パケットRqm2のデータ構造の一例を示す図である。マッピング調査要求パケットRqm2は、宛先ポート番号が異なる点以外は、マッピング調査要求パケットRqm1と同様の構成である。
図7におけるcは、マッピング調査要求パケットRqm3のデータ構造の一例を示す図である。マッピング調査要求パケットRqm3は、宛先IPアドレスが異なる点以外は、マッピング調査要求パケットRqm1と同様の構成である。
図7におけるdは、マッピング調査要求パケットRqm4のデータ構造の一例を示す図である。マッピング調査要求パケットRqm4は、宛先IPアドレスおよび宛先ポート番号が異なる点以外は、マッピング調査要求パケットRqm1と同様の構成である。
これらのマッピング調査要求パケットに対するマッピング調査応答パケットから、デバイス100は、デバイス100に対応するルータ300のマッピングアルゴリズムを取得することができる。
図8は、第1の実施の形態におけるマッピング調査応答パケットの生成方法を説明するための図である。デバイス100からマッピング調査要求パケットRqm1が送信されると、ルータ300は、そのマッピング調査要求パケットRqm1の送信元の内部IPアドレスおよび内部ポート番号を外部IPアドレスおよび外部ポート番号に変換する。これらの外部IPアドレスおよび外部ポート番号は、デバイス100から直接参照することができないため、マッピング調査応答パケットによりサーバ500から通知してもらう必要がある。
サーバ500は、IPアドレス等が変換されたマッピング調査要求パケットRqm1'の送信元のIPアドレスおよびポート番号をヘッダから取得し、それらをペイロードに格納したマッピング調査応答パケットRpm1を生成する。そして、サーバ500は、そのマッピング調査応答パケットRpm1をデバイス100に返信する。デバイス100は、そのマッピング調査応答パケットRpm1のペイロードを参照することにより、デバイス100に割り当てられた外部IPアドレスおよび外部ポート番号を取得することができる。
図9は、第1の実施の形態におけるエンドポイント非依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図9におけるaは、マッピング調査応答パケットRpm1のデータ構造の一例である。このマッピング調査応答パケットRpm1のペイロードには、送信元IPアドレスおよび送信元ポート番号が格納される。送信元IPアドレスおよび送信元ポート番号は、ルータ300においてデバイス100に割り当てられた外部IPアドレスおよび外部ポート番号である。
図9におけるbは、マッピング調査応答パケットRpm2のデータ構造の一例である。図9におけるcは、マッピング調査応答パケットRpm3のデータ構造の一例であり、図9におけるdは、マッピング調査応答パケットRpm4のデータ構造の一例である。これらのパケットのデータ構造は、マッピング調査応答パケットRpm1と同様である。このことから、宛先が変更されても外部ポート番号の割り当て(すなわち、ポートマッピング)が変更されていないことが推測される。したがって、この場合には、エンドポイント非依存マッピングであると判断される。
図10は、第1の実施の形態におけるアドレス依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図10におけるaは、マッピング調査応答パケットRpm1のデータ構造の一例であり、図10におけるbは、マッピング調査応答パケットRpm2のデータ構造の一例である。また、図10におけるcは、マッピング調査応答パケットRpm3のデータ構造の一例であり、図10におけるdは、マッピング調査応答パケットRpm4のデータ構造の一例である。
マッピング調査応答パケットRpm1およびRpm2において外部ポート番号は変わらない。しかし、マッピング調査応答パケットRpm1における外部ポート番号は、マッピング調査応答パケットRpm3およびRpm4における外部ポート番号と異なっている。このことから、宛先のIPアドレスの変更に応じて、ポートマッピングが変更されたことが推測される。したがって、この場合には、アドレス依存マッピングであると判断される。
図11は、第1の実施の形態におけるアドレス・ポート依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図11におけるaは、マッピング調査応答パケットRpm1のデータ構造の一例であり、図11におけるbは、マッピング調査応答パケットRpm2のデータ構造の一例である。また、図11におけるcは、マッピング調査応答パケットRpm3のデータ構造の一例であり、図11におけるdは、マッピング調査応答パケットRpm4のデータ構造の一例である。
マッピング調査応答パケットRpm1、Rpm2、Rpm3およびRpm4のそれぞれの外部ポート番号が異なる。また、Rpm1の外部ポート番号「8000」と、その次のRpm2の外部ポート番号「8001」との差分は「+1」である。同様に、Rpm2と、その次のRpm3との外部ポート番号の差分も「+1」であり、Rpm3とRpm4との外部ポート番号の差分も「+1」である。このことから、宛先のIPアドレスまたはポート番号の変更に応じて、ポートマッピングが規則的に変更されたことが推測される。したがって、この場合には、アドレス・ポート依存マッピングであると判断される。
図12は、第1の実施の形態におけるランダムマッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図12におけるaは、マッピング調査応答パケットRpm1のデータ構造の一例であり、図12におけるbは、マッピング調査応答パケットRpm2のデータ構造の一例である。また、図12におけるcは、マッピング調査応答パケットRpm3のデータ構造の一例であり、図12におけるdは、マッピング調査応答パケットRpm4のデータ構造の一例である。
マッピング調査応答パケットRpm1、Rpm2、Rpm3およびRpm4のそれぞれの外部ポート番号が異なる。また、Rpm1の外部ポート番号「8000」と、その次のRpm2の外部ポート番号「8011」との差分は「+11」である。しかし、Rpm2と、その次のRpm3との外部ポート番号の差分は「+1」であり、Rpm3とRpm4との外部ポート番号の差分は「+3」である。つまり、送信順において隣り合う外部ポート番号の差分が同一でない。このことから、宛先のIPアドレスまたはポート番号の変更に応じて、ポートマッピングが不規則に変更されたことが推測される。したがって、この場合には、ランダムマッピングであると判断される。
図13は、第1の実施の形態におけるマッピングアルゴリズム通知パケットのデータ構造の一例を示す図である。このマッピングアルゴリズム通知パケットには、マッピングアルゴリズム情報、整数値であるN、送信元IPアドレスおよび送信元ポート番号が含まれる。
マッピングアルゴリズム情報は、デバイスが取得したマッピングアルゴリズムを示す情報である。Nは、マッピング調査応答パケットの送信順において隣り合う外部ポート番号の差分の値である。Nは外部ポート番号を予測するために用いられる。ただし、マッピングアルゴリズムがエンドポイント非依存マッピングまたはランダムマッピングである場合には、外部ポート番号の予測が不要または不可能であるため、Nは格納されない。もしくは、その場合には無効な値がNに設定される。
送信元IPアドレスおよび送信元ポート番号は、送信順において最後のマッピング調査応答パケットRpm4における、デバイスの外部IPアドレスおよび外部ポート番号である。なお、デバイス100は、外部IPアドレスおよび外部ポート番号をマッピングアルゴリズム通知パケットとは別のパケットにより通知してもよい。
[判定テーブルの構成例]
図14は、第1の実施の形態における判定テーブル170の一構成例を示す図である。この判定テーブル170には、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せごとに、送信元をマスタとするか否かを示すフラグが記載される。判定テーブル170では、サーバ500を介して転送されるセッション確立要求パケットの宛先をデバイスAとし、その送信元をデバイスBとしている。
また、「IM」は、エンドポイント非依存マッピング(Endpoint-Independent Mapping)を示す。「AM」は、アドレス依存マッピング(Address-Dependent Mapping)を示す。「PM」は、アドレス・ポート依存マッピング(Address and Port-Dependent Mapping)を示す。「RM」は、ランダムマッピング(Random Mapping)を示す。
デバイスA側の宛先マッピングアルゴリズムがデバイスB側の送信元マッピングアルゴリズムより複雑である場合、デバイスAをマスタとすることを示すフラグが記録される。デバイスB側のマッピングアルゴリズムの方が単純であり、デバイスAの方がデバイスBよりも外部ポート番号を予測しやすいためである。
逆に、デバイスB側の宛先マッピングアルゴリズムがデバイスA側の送信元マッピングアルゴリズムより複雑である場合、デバイスBをマスタとすることを示すフラグが記録される。また、デバイスB側の宛先マッピングアルゴリズムとデバイスA側の送信元マッピングアルゴリズムとが同一である場合、デバイスBをマスタとすることを示すフラグが記録される。
[デバイスの動作例]
図15は、第1の実施の形態におけるデバイス100の動作の一例を示すフローチャートである。この動作は、例えば、デバイス100がルータ300等を介してサーバ500に接続されたときに開始する。
デバイス100は、直接通信が必要なプログラムが実行されたか否かを判断する。直接通信が必要なプログラムは、例えば、オンラインゲームにおける通信対戦を行うためのプログラムや、IP電話における通話を開始するためのプログラムなどである(ステップS901)。
プログラムが実行されていなければ(ステップS901:No)、デバイス100は、セッション確立要求パケットをサーバ500から受信したか否かを判断する(ステップS902)。セッション確立要求パケットを受信していなければ(ステップS902:No)、デバイス100は、ステップS901に戻る。
プログラムが実行されたのであれば(ステップS901:Yes)、デバイス100は、通信対象のデバイスを指定したセッション確立要求パケットを生成してサーバ500に送信する(ステップS904)。
セッション確立要求パケットを受信した場合(ステップS902:Yes)、または、ステップS904の後、デバイス100は、マッピングアルゴリズムを取得するためのマッピングアルゴリズム取得処理を実行する(ステップS920)。そして、デバイス100は、NAT越えを行って直接通信するためのNATトラバーサル処理を実行する(ステップS930)。ステップS930の後、デバイス100は動作を終了する。なお、デバイス101の動作は、デバイス100と同様である。
図16は、第1の実施の形態におけるマッピングアルゴリズム取得処理の一例を示すフローチャートである。デバイス100は、複数のマッピング調査要求パケットをサーバ500に順に送信する(ステップS921)。デバイス100は、複数のマッピング調査応答パケットを受信する(ステップS922)。そして、デバイス100は、それらのマッピング調査応答パケットに基づいて、デバイス100側のマッピングアルゴリズムを取得する(ステップS923)。ステップS923において、デバイス100がセッション確立要求パケットの送信元であれば送信元マッピングアルゴリズムが取得され、宛先であれば宛先マッピングアルゴリズムが取得される。
デバイス100は、取得したマッピングアルゴリズムを通知するマッピングアルゴリズム通知パケットを生成してサーバ500に送信する(ステップS924)。また、デバイス100は、デバイス101が取得したマッピングアルゴリズムを通知するマッピングアルゴリズム通知パケットをサーバ500から受信する(ステップS925)。ステップS925において、デバイス100がセッション確立要求パケットの送信元であれば宛先マッピングアルゴリズムを通知するパケットが受信され、宛先であれば送信元マッピングアルゴリズムを通知するパケットが受信される。ステップS925の後、デバイス100は、マッピングアルゴリズム取得処理を終了する。
図17は、第1の実施の形態におけるNATトラバーサル処理の一例を示すフローチャートである。デバイス100は、判定テーブル170を参照して、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せに対応するフラグを取得する(ステップS935)。
デバイス100は、フラグに従って、デバイス100自身をマスタとするか否かを判定する(ステップS936)。デバイス100をマスタとする場合には(ステップS936:Yes)、デバイス100は、外部ポート番号の予測が必要か否かを判断する。例えば、スレーブ側のマッピングアルゴリズムがエンドポイント非依存マッピングであれば、ポート番号を予測する必要がないと判断される(ステップS937)。
外部ポート番号の予測が必要であれば(ステップS937:Yes)、デバイス100は、スレーブ側のマッピングアルゴリズムに対応する予測アルゴリズムに基づいて、スレーブに新たに割り当てられる外部ポート番号を予測する(ステップS938)。
外部ポート番号の予測が必要でない場合(ステップS937:No)、または、ステップS938の後、デバイス100は、予測した外部ポート番号へ通信パケットを送信する。予測が必要ない場合には、デバイス100は、サーバ500を介してスレーブから受信した外部ポート番号をそのまま宛先として使用し、通信パケットを送信する(ステップS939)。
デバイス100をスレーブとする場合には(ステップS936:No)、デバイス100は、スレーブ側のルータ300において外部ポート番号の開放が必要であるか否かを判断する。例えば、スレーブ側のマッピングアルゴリズムがエンドポイント非依存マッピングであれば、外部ポート番号の開放の必要がないと判断される(ステップS940)。ポート番号の開放が必要であれば(ステップS940:Yes)、デバイス100は、マスタへホールパンチングパケットを送信する(ステップS941)。
ポート番号の開放が必要でない場合(ステップS940:No)、または、ステップS941の後、デバイス100は、必要に応じてデバイス100との間でパケットを送受信し、NATトラバーサル処理を終了する。
[サーバの動作例]
図18は、第1の実施の形態におけるサーバ500の動作の一例を示すフローチャートである。この動作は、例えば、サーバ500にデバイス100および101などのデバイスがルータ300等を介して接続されたときに開始される。
サーバ500は、セッション確立要求パケットを受信したか否かを判断する(ステップS951)。セッション確立要求パケットを受信していなければ(ステップS951:No)、サーバ500は、ステップS951に戻る。
セッション確立要求パケットを受信したのであれば(ステップS951:Yes)、サーバ500は、そのパケットにおいて通信対象として指定されたデバイスへ、セッション確立要求パケットを転送する(ステップS952)。
そして、サーバ500は、複数のマッピング調査応答パケットを受信したか否かを判断する(ステップS957)。マッピング調査応答パケットを受信していなければ(ステップS957:No)、サーバ500はステップS957に戻る。複数のマッピング調査応答パケットを受信したのであれば(ステップS957:Yes)、サーバ500は、それらのパケットに応じてマッピング調査応答パケットを生成して返信する(ステップS958)。
そして、サーバ500は、マッピングアルゴリズム通知パケットを受信したか否かを判断する(ステップS959)。マッピングアルゴリズム通知パケットを受信していなければ(ステップS959:No)、サーバ500はステップS959に戻る。マッピングアルゴリズム通知パケットを受信したのであれば(ステップS959:Yes)、サーバ500は、そのマッピングアルゴリズム通知パケットを転送する(ステップS960)。ステップS960の後、サーバ500は、ステップS951に戻る。
図19は、第1の実施の形態におけるサーバおよびデバイスの動作の一例を示すシーケンス図である。この図では、デバイス100がマスタ、デバイス101がスレーブと判定された場合を想定している。
デバイス101は、デバイス100を指定したセッション確立要求パケットをサーバ500に送信する(ステップS904)。サーバ500は、そのセッション確立要求パケットをデバイス100へ転送する(ステップS952)。
そして、デバイス100は、4つのマッピング調査要求パケットを生成して順にサーバ500へルータ301を介して送信する(ステップS921)。これらのパケットの送信元の内部IPアドレスおよび内部ポート番号は、ルータ301において、外部IPアドレスおよび外部ポート番号に変換される。
サーバ500は、変換された外部IPアドレスおよび外部ポート番号を格納したマッピング調査応答パケットをデバイス101に返信する(ステップS958)。
デバイス101は、マッピング調査応答パケットに基づいて送信元マッピングアルゴリズムを取得する(ステップS923)。デバイス101は、そのマッピングアルゴリズムを通知するマッピングアルゴリズム通知パケットをサーバ500に送信する(ステップS924)。
サーバ5000は、デバイス101からのマッピングアルゴリズム通知パケットをデバイス100へ転送する(ステップS960)。
一方、デバイス100も4つのマッピング調査要求パケットを順にサーバ500へ送信し(ステップS921)、サーバ500は、マッピング調査応答パケットをデバイス100に返信する(ステップS958)。
そして、デバイス101は、宛先マッピングアルゴリズムを取得し(ステップS923)、マッピングアルゴリズム通知パケットをサーバ500に送信する(ステップS924)。サーバ500は、デバイス100からのマッピングアルゴリズム通知パケットをデバイス101へ転送する(ステップS960)。
デバイス100は、判定テーブル170を参照してマスタとなり、デバイス101はスレーブとなる。スレーブのデバイス101は、デバイス100へホールパンチングパケットを送信する(ステップS941)。
一方、デバイス100は、そのホールパンチングパケットにより解放される外部ポート番号を予測する(ステップS938)。そして、デバイス100は、予測した外部ポート番号へ通信パケットを送信する(ステップS939)。
図20は、第1の実施の形態における外部ポート番号の使用状況の一例を示す図である。図20におけるaは、セッション確立要求パケットが送受信されるときの外部ポート番号の使用状況の一例を示す図である。ルータ300は、デバイス100に対して、ポート番号「8001」とサーバ500とを対応付けて登録しているものとする。また、ルータ301は、デバイス101に対して、ポート番号「8001」とサーバ500とを対応付けて登録しているものとする。
デバイス100は、セッション確立要求パケットをサーバ500へ送信する。このセッション確立要求パケットの送信元の内部ポート番号は、ルータ300において「8001」に変換される。サーバ500は、そのセッション確立要求パケットをデバイス101へ転送する。このセッション確立要求パケットの送信元の外部ポート番号「8001」は、ルータ301においてデバイス101の内部ポート番号に変換される。
そして、デバイス100および101は、それぞれ、マッピングアルゴリズムを取得し、そのマッピングアルゴリズムをマッピングアルゴリズム通知パケットによりサーバ500を介して互いに通知しあう。
図20におけるbは、マッピングアルゴリズム通知パケットが送受信されるときの外部ポート番号の使用状況の一例を示す図である。このときの外部ポートの使用状況は、図20におけるaと同様である。
ここで、ルータ300のマッピングアルゴリズムとしてアドレス依存マッピング(AM)が取得され、ルータ301のマッピングアルゴリズムとしてランダムマッピング(RM)が取得された場合を考える。この場合、ルータ300のアドレス依存マッピングの方が単純であるため、デバイス101がマスタとして、ルータ300においてデバイス100に新たに割り当てられる外部ポート番号を予測する。一方、スレーブのデバイス100は、デバイス101へホールパンチングパケットを送信する。
図20におけるcは、ホールパンチングパケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ホールパンチングパケットの宛先のIPアドレスは、サーバ500のIPアドレスと異なるため、ルータ300は、デバイス100に新たに外部ポート番号「8002」を割り当てる。スレーブは、ホールパンチングパケットがルータ301へ届かないようにTTLを調整する。
マスタのデバイス101は、デバイス100の直前の外部ポート番号「8001」から、デバイス100に新たに割り当てられる外部ポート番号「8002」を予測する。デバイス101は、その外部ポート番号へ通信パケットを送信する。
図20におけるdは、通信パケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ルータ300において、予測した外部ポート番号「8002」が解放されているため、通信パケットは、スレーブのデバイス100へ届けられる。
ここで、仮に、判定テーブル170を参照せずに、送信元であるデバイス(100)がマスタとなり、宛先のデバイス(101)がスレーブとして動作する構成について考える。この場合、スレーブのデバイス101がホールパンチングパケットを送信し、ルータ301の外部ポート番号を解放する。
しかし、ルータ301のマッピングアルゴリズムは、ランダムマッピングであるため、どの外部ポート番号が解放されるかをデバイス100が予測することができない。したがって、デバイス100が送信した通信パケットは、スレーブのデバイス101に届かず、直接通信に失敗してしまう。
これに対して、デバイス100または101は、双方のマッピングアルゴリズムの複雑さを比較して、単純な方のマッピングアルゴリズムに対応する予測アルゴリズムに基づいて外部ポート番号の予測を行うため、直接通信が高い確率で成功する。
このように、本技術の第1の実施の形態によれば、デバイス100または101は、送信元および宛先のそれぞれのマッピングアルゴリズムのうち単純な方に対応する予測アルゴリズムに基づいて外部ポート番号を生成する。このため、直接通信に成功する確率を向上させることができる。
<2.第2の実施の形態>
[ルータの構成例]
図21は、第2の実施の形態におけるルータ300の一構成例を示すブロック図である。第1の実施の形態では、ルータ300がフィルタリング処理を実行しない構成としていたが、ルータ300においてはフィルタリング処理が行われることが多い。ルータ300がフィルタリング処理を行う場合、デバイス100は、そのフィルタリング処理も考慮して、マスタとするか否かを判断する。
第2の実施の形態のルータ300は、フィルタリング処理部340およびフィルタリングテーブル350をさらに備える点において第1の実施の形態と異なる。第2の実施の形態におけるルータ301の構成は、ルータ300と同様である。
フィルタリング処理部340は、パケットを通過させるか否かを判断して、通過させないパケットを破棄するフィルタリング処理を実行するものである。このフィルタリング処理部340は、LANの内部から外部へのパケットを受信すると、フィルタリングテーブル350を参照し、そのパケットを通過させるか否かを判断する。そして、フィルタリング処理部340は、通過させるパケットをアドレス変換部320へ供給する。また、フィルタリング処理部340は、アドレス変換部320から、IPアドレスおよびポート番号が変換されたパケットを受信すると、フィルタリングテーブル350を参照し、そのパケットを通過させるか否かを判断する。そして、フィルタリング処理部340は、通過させるパケットをLANの内部へ転送する。
フィルタリングテーブル350は、パケットの送信元および宛先の組合せごとに、そのパケットを通過させるか否かを示す情報を記憶するテーブルである。
ここで、フィルタリング処理においては、エンドポイント非依存フィルタリング、アドレス依存フィルタリング、および、アドレス・ポート依存フィルタリングのいずれかのフィルタリングアルゴリズムが用いられる。
エンドポイント非依存フィルタリングでは、LANの内部のデバイスSから外部へパケットが一旦送信されると、ルータ300は、パケットの送信元に依存せずに、外部からデバイスSへのパケットを通過させる。
ここで、(内部IPアドレス:内部ポート番号)が(X1:x1)のデバイスと、(外部IPアドレス:外部ポート番号)が(Y1:y1)のデバイスと、(外部IPアドレス:外部ポート番号)が(Y2:y2)のデバイスとがある場合を考える。
例えば、初期状態において(X1:x1)から(Y1:y1)へパケットが送信されると、フィルタリングテーブル350において、宛先を(X1:x1)とする外部からのパケットが送信元に関わらずに許可される。このため、ルータ300は、(Y1:y1)から(X1:x1)へのパケットと、送信元の異なる(Y2:Y2)から(X1:x1)へのパケットとのいずれも通過させる。
次に、アドレス依存フィルタリングでは、LANの内部のデバイスSから外部のデバイスDへパケットが送信されると、ルータ300は、IPアドレスがデバイスDと同一の送信元から、デバイスSへのパケットのみを通過させる。
例えば、初期状態において(X1:x1)から(Y1:y1)へパケットが送信されると、フィルタリングテーブル350において、送信元をY1とし、宛先を(X1:x1)とする外部からのパケットが許可される。このため、ルータ300は、(Y1:y1)から(X1:x1)へのパケットを通過させるが、IPアドレスの異なる(Y2:y2)から(X1:x1)へのパケットを通過させない。また、ポート番号の異なる(Y1:y2)から(X1:x1)へのパケットは、IPアドレスが同一であるから通過させる。
そして、アドレス・ポート依存フィルタリングでは、LANの内部のデバイスSから外部のデバイスDへパケットが送信されると、ルータ300は、IPアドレスおよびポート番号がデバイスDと同一の送信元からデバイスSへのパケットのみを通過させる。
例えば、初期状態において(X1:x1)から(Y1:y1)へパケットが送信されると、フィルタリングテーブル350において、送信元を(Y1:y1)とし、宛先を(X1:x1)とする外部からのパケットが許可される。このため、ルータ300は、(Y1:y1)から(X1:x1)へのパケットを通過させるが、IPアドレスの異なる(Y2:Y2)から(X1:x1)へのパケットを通過させない。また、ルータ300は、(Y1:y2)から(X1:x1)へのパケットも、ポート番号が異なるために通過させない。
このように、これらのフィルタリングアルゴリズムは、それぞれ複雑さが異なる。送信元が変わってもパケットを通過させるエンドポイント非依存マッピングよりも、送信元のIPアドレスが変わると通過させないアドレス依存マッピングの方が複雑である。送信元のポート番号が変わってもパケットを通過させるアドレス依存マッピングよりも、送信元のポート番号が変わると通過させないアドレス・ポート依存マッピングの方が複雑である。
つまり、複雑さの度合いが高い順に並べると、アドレス・ポート依存フィルタリング>アドレス依存フィルタリング>エンドポイント非依存フィルタリングの順となる。
フィルタリングアルゴリズムが複雑であるほど、通信パケットを通過させることが困難となる。具体的には、エンドポイント非依存フィルタリングでは、送信元が変わってもパケットを通過させるため、フィルタリングの存在をほぼ考慮しなくてよい。しかし、アドレス依存フィルタリングでは、送信元のIPアドレスが変わるとパケットが破棄されるため、スレーブは、ホールパンチングパケットにより、マスタからの通信パケットを許可させる必要がある。また、アドレス・ポート依存フィルタリングでは、スレーブは、マスタ側で解放される外部ポート番号を予測して、その外部ポート番号へホールパンチングパケットを送信する必要が生じる。
このため、デバイス100または101は、単純な方のアルゴリズムによりフィルタリングを行うルータへ通信パケットを送信することが望ましい。
例えば、デバイス100に対応するルータ300のフィルタリングアルゴリズムより、デバイス101に対応するルータ301のフィルタリングアルゴリズムが複雑である場合を考える。この場合は、デバイス101がマスタとなり、単純なフィルタリングを行う方のルータ300を介して通信パケットを送信することが望ましい。
[フィルタリングテーブルの構成例]
図22は、第2の実施の形態におけるフィルタリングテーブル350の一構成例を示す図である。このフィルタリングテーブル350には、送信元IPアドレス、送信元ポート番号、宛先IPアドレスおよび宛先ポート番号の組合せごとに、そのパケットを許可させるか否かの「動作」を示す情報が記憶される。動作は、例えば、パケットの通過の「許可」や「禁止」を含む。
例えば、初期状態において、内部IPアドレス「192.168.0.1」および外部ポート番号「5000」のLAN内のデバイスから、外部へパケットが送信された場合を考える。そのパケットの宛先の外部IPアドレスが「X.X.X.1」であり、外部ポート番号が「8000」であったとする。
この場合、エンドポイント非依存フィルタリングでは、送信元のIPアドレスおよびポート番号の両方を「any」とし、宛先を「192.168.0.1」および「5000」とするパケットについて許可することを示す情報が登録される。「any」は、どのIPアドレスまたはポート番号も許可や禁止の対象とすることを意味する。
アドレス依存フィルタリングでは、送信元を「X.X.X.1」および「any」とし、宛先を「192.168.0.1」および「5000」とするパケットについて許可することを示す情報が登録される。
アドレス・ポート依存フィルタリングでは、送信元を「X.X.X.1」および「8000」とし、宛先を「192.168.0.1」および「5000」とするパケットについて許可することを示す情報が登録される。
[サーバの構成例]
図23は、第2の実施の形態におけるサーバ500の一構成例を示すブロック図である。第2の実施の形態のサーバ500は、フィルタリングアルゴリズム取得部530およびフィルタリングアルゴリズム通知部540をさらに備える点において第1の実施の形態と異なる。
フィルタリングアルゴリズム取得部530は、ルータのそれぞれにおけるフィルタリングアルゴリズムを取得するものである。このフィルタリングアルゴリズム取得部530は、転送部510から、セッション確立要求パケットの送信元および宛先のそれぞれについて、外部IPアドレスおよび外部ポート番号を受け取る。
フィルタリングアルゴリズム取得部530は、それらの外部IPアドレスおよび外部ポート番号へ、返信を要求する複数のパケットをフィルタリング調査要求パケットとして送信する。前述したように、送信元が変わったときのフィルタリング方法は、フィルタリングアルゴリズムごとに異なる。このアルゴリズムの違いを判断するため、複数のフィルタリング調査要求パケットのそれぞれは、サーバ500により異なる送信元から送信される。
例えば、送信元の異なる4つのフィルタリング調査要求パケットRqf1、Rqf2、Rqf3およびRqf4が順に送信される。Rqf2は、送信元のIPアドレスがRqf1と同一で、送信元のポート番号がRqf1と異なるパケットである。Rqf3は、送信元のIPアドレスがRqf1と異なり、送信元のポート番号がRqf1と同一のパケットである。Rqf4は、送信元のIPアドレスおよびポート番号の両方がRqf1と異なるパケットである。
フィルタリングアルゴリズム取得部530は、フィルタリング調査要求パケットRqf1、Rqf2、Rqf3およびRqf4に対して返信されたフィルタリング調査応答パケットRpf1、Rpf2、Rpf3およびRpf4を受信する。ただし、フィルタリングアルゴリズムによっては、いくつかの応答パケットを受信することができない場合がある。フィルタリングアルゴリズム取得部530は、応答パケットの受信状況に基づいて、フィルタリングアルゴリズムを取得する。
具体的には、フィルタリング調査応答パケットRpf1、Rpf2、Rpf3およびRpf4の全てが受信された場合には、エンドポイント非依存フィルタリングと判断される。このエンドポイント非依存フィルタリングでは、送信元が変わっても、パケットの通過が許可されるためである。
また、フィルタリング調査応答パケットRpf1およびRpf2が受信されたがフィルタリング調査応答パケットRpf3およびRpf4が受信されなかった場合には、アドレス依存フィルタリングであると判断される。このアドレス依存フィルタリングでは、送信元のIPアドレスが変わると、パケットの通過が許可されないためである。
また、フィルタリング調査応答パケットRpf1のみが受信された場合には、アドレス・ポート依存フィルタリングであると判断される。このアドレス・ポート依存フィルタリングでは、送信元のIPアドレスまたはポート番号が変わると、パケットの通過が許可されないためである。
フィルタリングアルゴリズム取得部530は、セッション確立要求パケットの送信元側のルータと、宛先側のルータとのそれぞれのフィルタリングアルゴリズムを取得する。以下、送信元側のルータのフィルタリングアルゴリズムを「送信元フィルタリングアルゴリズム」と称し、宛先側のルータのフィルタリングアルゴリズムを「宛先フィルタリングアルゴリズム」と称する。フィルタリングアルゴリズム取得部530は、送信元および宛先の外部IPアドレスおよび外部ポート番号とともに、取得したフィルタリングアルゴリズムをフィルタリングアルゴリズム通知部540に供給する。
なお、フィルタリングアルゴリズム取得部530は、フィルタリング調査要求パケットの送信と、応答パケットの受信とによりフィルタリングアルゴリズムを取得しているが、この構成に限定されない。例えば、フィルタリングアルゴリズム取得部530は、STUNプロトコルを使用してフィルタリングアルゴリズムを取得してもよい。
フィルタリングアルゴリズム通知部540は、取得したフィルタリングアルゴリズムをデバイスに通知するものである。このフィルタリングアルゴリズム通知部540は、送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムを格納したフィルタリングアルゴリズム通知パケットを生成する。そして、フィルタリングアルゴリズム通知部540は、そのフィルタリングアルゴリズム通知パケットを、セッション確立要求パケットの送信元および宛先のそれぞれへ送信する。
図24は、第2の実施の形態におけるフィルタリング調査要求パケットのデータ構成の一例を示す図である。図24におけるaは、フィルタリング調査要求パケットRqf1のデータ構造の一例を示す図である。このパケットは、ヘッダにおいて送信元IPアドレス、送信元ポート番号、宛先IPアドレスおよび宛先ポート番号を含む。この送信元IPアドレスおよび送信元ポート番号は、サーバ500のIPアドレスおよびポート番号である。また、宛先IPアドレスおよび宛先ポート番号は、ルータ300または301の外部IPアドレスおよび外部ポート番号である。
図24におけるbは、フィルタリング調査要求パケットRqf2のデータ構造の一例を示す図である。フィルタリング調査要求パケットRqf2は、送信元ポート番号が異なる点以外は、フィルタリング調査要求パケットRqf1と同様の構成である。
図24におけるcは、フィルタリング調査要求パケットRqf3のデータ構造の一例を示す図である。フィルタリング調査要求パケットRqf3は、送信元IPアドレスが異なる点以外は、フィルタリング調査要求パケットRqf1と同様の構成である。
図24におけるdは、フィルタリング調査要求パケットRqf4のデータ構造の一例を示す図である。フィルタリング調査要求パケットRqf4は、送信元IPアドレスおよび送信元ポート番号が異なる点以外は、フィルタリング調査要求パケットRqf1と同様の構成である。
これらのフィルタリング調査要求パケットに対するフィルタリング調査応答パケットから、サーバ500は、ルータ300および301のそれぞれのフィルタリングアルゴリズムを取得することができる。
図25は、第2の実施の形態におけるエンドポイント非依存フィルタリングおよびアドレス依存フィルタリングにより処理されるパケットの一例を示す図である。図25におけるaは、エンドポイント非依存フィルタリングにより処理されるパケットの一例を示す図である。エンドポイント非依存フィルタリングでは、送信元の異なる4つのフィルタリング調査要求パケットの全ての通過が許可される。このため、全てのフィルタリング調査要求パケットに対する応答パケットが受信される。
図25におけるbは、アドレス依存フィルタリングにより処理されるパケットの一例を示す図である。アドレス依存フィルタリングでは、送信元のIPアドレスが同一のフィルタリング調査要求パケットRqf1およびRqf2の通過が許可される。しかし、送信元のIPアドレスがRqf1と異なるフィルタリング調査要求パケットRqf3およびRqf4は許可されずに破棄される。このため、サーバ500は、フィルタリング調査応答パケットRpf1およびRpf2のみを受信することができる。
図26は、第2の実施の形態におけるアドレス・ポート依存フィルタリングより処理されるパケットの一例を示す図である。アドレス・ポート依存フィルタリングでは、送信元のIPアドレスまたはポート番号がRqf1と異なるフィルタリング調査要求パケットRqf2、R1f3およびRqf4は許可されずに破棄される。このため、サーバ500は、フィルタリング調査応答パケットRpf1のみを受信することができる。
図25および図26に例示したように、フィルタリングアルゴリズムによりフィルタリング調査応答パケットの受信状況が異なるため、サーバ500は、その受信状況から、フィルタリングアルゴリズムを取得することができる。
図27は、第2の実施の形態におけるフィルタリングアルゴリズム通知パケットのデータ構成の一例を示す図である。このフィルタリングアルゴリズム通知パケットは、送信元フィルタリングアルゴリズム情報および宛先フィルタリングアルゴリズム情報を含む。送信元フィルタリングアルゴリズム情報は、送信元アルゴリズムを識別するための情報である。宛先フィルタリングアルゴリズム情報は、宛先アルゴリズムを識別するための情報である。
[デバイスの構成例]
図28は、第2の実施の形態におけるデバイス100の一構成例を示すブロック図である。第2の実施の形態のデバイス100は、フィルタリング調査応答部130およびフィルタリングアルゴリズム取得部140をさらに備え、判定テーブル170の代わりに判定テーブル171を備える点において第1の実施の形態と異なる。第2の実施の形態のデバイス101の構成は、デバイス100と同様である。
フィルタリング調査応答部130は、フィルタリング調査要求パケットに対して返信するものである。このフィルタリング調査応答部130は、サーバ500からフィルタリング調査要求パケットを受信すると、フィルタリング調査応答パケットを生成してサーバ500に返信する。
フィルタリングアルゴリズム取得部140は、送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムを取得するものである。このフィルタリングアルゴリズム取得部140は、フィルタリングアルゴリズム通知パケットを受信すると、そのパケットから送信元および宛先のそれぞれのフィルタリングアルゴリズムを取得してマスタ/スレーブ判定部160に供給する。
また、第2の実施の形態の判定テーブル171には、送信元マッピングアルゴリズム、送信元フィルタリングアルゴリズム、宛先マッピングアルゴリズムおよび宛先フィルタリングアルゴリズムの組合せごとに、フラグが記憶される。
なお、デバイス100がフィルタリング調査応答部130を備える構成としているが、デバイス100以外のデバイスがデバイス100の代わりにフィルタリング調査応答部130を備える構成としてもよい。ルータ300のフィルタリングを調査するためのフィルタリング調査要求パケットに対する返信は、ルータ300の配下のデバイスであれば、いずれが行ってもよいためである。
[判定テーブルの構成例]
図29は、第2の実施の形態における判定テーブル171の一構成例を示す図である。この判定テーブル171には、送信元マッピングアルゴリズム、送信元フィルタリングアルゴリズム、宛先マッピングアルゴリズムおよび宛先フィルタリングアルゴリズムの組合せごとに、フラグが記憶される。
判定テーブル171において「IF」は、エンドポイント非依存フィルタリング(Endpoint-Independent Filtering)を示す。「AF」は、アドレス依存フィルタリング(Address-Dependent Filtering)を示す。「PF」は、アドレス・ポート依存フィルタリング(Address and Port-Dependent Filtering)を示す。
デバイスA側の宛先フィルタリングアルゴリズムがデバイスB側の送信元フィルタリングアルゴリズムより複雑である場合、デバイスAをマスタとすることを示す情報が記録される。デバイスB側のフィルタリングアルゴリズムの方が単純であり、デバイスAからデバイスBへの通信パケットを通過させやすいためである。
逆に、デバイスB側の送信元フィルタリングアルゴリズムがデバイスA側の宛先フィルタリングアルゴリズムより複雑である場合、デバイスBをマスタとすることを示す情報が記録される。
また、デバイスB側の宛先フィルタリングアルゴリズムとデバイスA側の送信元フィルタリングアルゴリズムとが同一である場合、マッピングアルゴリズムに基づいて、マスタが決定される。
宛先フィルタリングアルゴリズムおよび送信元フィルタリングアルゴリズムが同一で、宛先マッピングアルゴリズムが送信元マッピングアルゴリズムより複雑である場合、デバイスAをマスタとすることを示す情報が記録される。デバイスB側のマッピングアルゴリズムの方が単純であり、デバイスAの方がデバイスBよりも外部ポート番号を予測しやすいためである。
宛先フィルタリングアルゴリズムおよび送信元フィルタリングアルゴリズムが同一で、宛先マッピングアルゴリズムが送信元マッピングアルゴリズムより複雑である場合、デバイスBをマスタとすることを示す情報が記録される。また、宛先フィルタリングアルゴリズムおよび送信元フィルタリングアルゴリズムが同一で、宛先マッピングアルゴリズムおよび送信元マッピングアルゴリズムも同一である場合、デバイスBをマスタとすることを示す情報が記録される。
なお、「ERR」は、直接通信が困難であることを示す。例えば、ランダムマッピングにより割り当てられる外部ポート番号をマスタが予測する場合に、「ERR」が記載される。ランダムマッピングにより割り当てられる外部ポート番号をマスタが正確に予測することはできないためである。この場合には、デバイス100は、例えば、サーバ500を介してデバイス101との間で通信を行う。
[デバイスの動作例]
図30は、第2の実施の形態におけるデバイス100の動作の一例を示すフローチャートである。第2の実施の形態のデバイス100の動作は、ステップS910をさらに実行する点において第1の実施の形態と異なる。第2の実施の形態のデバイス101の動作はデバイス100と同様である。
セッション確立要求パケットを受信した場合(ステップS902:Yes)、または、ステップS904の後、デバイス100は、フィルタリングアルゴリズムを取得するためのフィルタリングアルゴリズム取得処理を実行する(ステップS910)。そして、デバイス100は、マッピングアルゴリズム取得処理(ステップS920)およびNATトラバーサル処理(ステップS930)を実行する。
図31は、第2の実施の形態におけるフィルタリングアルゴリズム取得処理の一例を示すフローチャートである。デバイス100は、サーバ500から、複数のフィルタリング調査要求パケットを受信したか否かを判断する(ステップS911)。フィルタリング調査要求パケットを受信していなければ(ステップS911:No)、デバイス100はステップS911に戻る。
複数のフィルタリング調査要求パケットを受信したのであれば(ステップS911:Yes)、デバイス100は、それらに応じてフィルタリング調査応答パケットを生成して送信する(ステップS912)。そして、デバイス100は、フィルタリングアルゴリズム通知パケットをサーバ500から受信し、そのパケットから送信元および宛先のフィルタリングアルゴリズムを取得する(ステップS913)。ステップS913の後、デバイス100は、フィルタリングアルゴリズム取得処理を終了する。
[サーバの動作例]
図32は、第2の実施の形態におけるサーバ500の動作の一例を示すフローチャートである。第2の実施の形態のサーバ500の動作は、ステップS953乃至S956をさらに実行する点において第1の実施の形態と異なる。
サーバ500は、セッション確立要求パケットを転送し(ステップS952)、複数のフィルタリング調査要求パケットを、送信元および宛先のデバイスのそれぞれに送信する(ステップS953)。サーバ500は、送信元および宛先のデバイスのそれぞれから、フィルタリング調査応答パケットを受信する(ステップS954)。サーバ500は、それらの応答パケットの受信状況から、送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムを取得する(ステップS955)。
そして、サーバ500は、取得したフィルタリングアルゴリズムを格納したフィルタリングアルゴリズム通知パケットを生成して送信元および宛先のそれぞれのデバイスへ送信する(ステップS956)。ステップS956の後、サーバ500は、ステップS957乃至S960を実行する。
図33は、第2の実施の形態における外部ポート番号の使用状況の一例を示す図である。図33におけるaは、デバイス101(送信元)がデバイス100(宛先)へセッション確立要求パケットを送信するときの外部ポート番号の使用状況の一例を示す図である。ルータ300は、デバイス100に対して、ポート番号「8001」とサーバ500とを対応付けてアドレス変換テーブルに登録しているものとする。また、ルータ301は、デバイス101に対して、ポート番号「8001」とサーバ500とを対応付けてアドレス変換テーブルに登録しているものとする。
図33におけるbは、マッピングアルゴリズム通知パケットが送受信されるときの外部ポート番号の使用状況の一例を示す図である。図20におけるbでは、図20におけるaと比較して外部ポートの使用状況に変更はない。
デバイス100および101は、送信元マッピングアルゴリズム、送信元フィルタリングアルゴリズム、宛先マッピングアルゴリズムおよび宛先フィルタリングアルゴリズムを取得する。
ここで、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムとしてアドレス依存マッピング(AM)が取得されたものとする。また、ルータ300における宛先フィルタリングアルゴリズムとしてアドレス・ポート依存フィルタリング(PF)が取得されたものとする。そして、ルータ301における送信元フィルタリングアルゴリズムとしてエンドポイント非依存フィルタリング(IF)が取得されたものとする。
この場合、単純なエンドポイント非依存フィルタリングの方が、通信パケットを通過させやすいため、デバイス100がマスタとなり、デバイス101がスレーブとなる。スレーブのデバイス101は、デバイス100へホールパンチングパケットを送信する。
図33におけるcは、ホールパンチングパケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ホールパンチングパケットの宛先のIPアドレスは、サーバ500のIPアドレスと異なるため、ルータ300は、デバイス100に新たに外部ポート番号「8002」を割り当てる。
マスタのデバイス100は、デバイス100の直前の外部ポート番号「8001」から、デバイス100に新たに割り当てられる外部ポート番号「8002」を予測し、その外部ポート番号へ通信パケットを送信する。
図33におけるdは、通信パケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ルータ300において、予測した外部ポート番号「8002」が解放されているため、通信パケットは、スレーブのデバイス100へ届けられる。
ここで、仮に、判定テーブル171を参照せずに、送信元のデバイス(101)がマスタとなり、宛先のデバイス(100)がスレーブとして動作する構成について考える。この構成では、スレーブのデバイス100がホールパンチングパケットを送信し、ルータ300の外部ポート番号を解放する。
しかし、ルータ300のフィルタリングアルゴリズムは、アドレス・ポート依存フィルタリングである。このため、スレーブがマスタ宛に送信するホールパンチングパケットの送信先ポート番号とマスタが送信する通信パケットの送信元ポート番号が一致する必要がある。且つ、スレーブがマスタ宛のホールパンチングパケットを送信する時にルータ300が割り当てる外部ポート番号とマスタが送信する通信パケットの送信元ポートとが一致する必要がある。したがって、直接通信に失敗する確率が高くなってしまう。
これに対して、デバイス100または101は、双方のフィルタリングアルゴリズムの複雑さを比較して、単純な方のフィルタリングを行うルータにおける外部ポート番号を予測する。したがって、直接通信に成功する確率を向上させることができる。
このように、本技術の第2の実施の形態によれば、デバイス100または101は、フィルタリングアルゴリズムが単純な方のルータにおいて新たに割り当てられる外部ポート番号を生成するため、直接通信に成功する確率を向上させることができる。
<3.第3の実施の形態>
[デバイスの構成例]
図34は、第3の実施の形態におけるデバイス100の一構成例を示すブロック図である。第2の実施の形態では、デバイス100は、デバイス100自身が接続されたネットワークのタイプに関わらず、マスタとするか否かの判定を行っていた。しかし、ネットワークのタイプによっては、その判定を行わなくてよい場合もある。例えば、NATトラバーサルを行わなくてもよい場合や、NATトラバーサルが不可能である場合などである。第3の実施の形態のデバイス100は、ネットワークのタイプを取得してから、必要に応じてマスタとするか否かを判定する点において第2の実施の形態と異なる。
具体的には、第3の実施の形態のデバイス100は、ネットワークタイプ判定部110およびパケット送受信部120をさらに備える点において第2の実施の形態と異なる。第2の実施の形態におけるデバイス101の構成は、デバイス100と同様である。
ネットワークタイプ判定部110は、デバイス100が直接接続されているネットワークの種別をネットワークタイプとして判定するものである。ここで、ネットワークタイプは、タイプT1、T2、T3、T4およびT5に分類される。
ネットワークタイプ判定部110は、まず、通信対象のデバイス101がデバイス100と同一のLANに接続されているか否かを判断する。デバイス101が同一のLAN内のデバイスであれば、ネットワークタイプ判定部110は、ネットワークタイプがタイプT1であると判断する。このタイプT1の場合、NATトラバーサルを行わずとも、デバイス100および101は直接通信が可能である。
ネットワークタイプ判定部110は、タイプT1についての判定結果をフィルタリングアルゴリズム取得部140、マッピングアルゴリズム取得部150、マスタ/スレーブ判定部160およびパケット送受信部120に通知する。タイプT1の場合、フィルタリングアルゴリズム取得部140は、フィルタリングアルゴリズムを取得せず、マッピングアルゴリズム取得部150はマッピングアルゴリズムを取得しない。また、マスタ/スレーブ判定部160は、マスタとするか否かの判定を行わない。タイプT1ではNATトラバーサルを行う必要がないためである。タイプT1の場合、パケット送受信部120が、直接通信部180の代わりにデバイス101と直接通信を行う。
次に、タイプT1でない場合、ネットワークタイプ判定部110は、マッピングアルゴリズム取得部150からマッピングアルゴリズム通知パケットを受け取り、デバイス100がWAN400に直接接続されているか否かを判断する。デバイス100がWAN400に直接接続されていれば、ネットワークタイプ判定部110は、ネットワークタイプがタイプT2であると判断する。このタイプT2の場合、デバイス100のIPアドレスは変換されることがないため、デバイス101が外部ポート番号を予測する必要がなくなる。デバイス101からデバイス100へ通信用パケットを送信すれば確実に通信可能になるため、デバイス100がスレーブ、デバイス101がマスタとなる。したがって、デバイス100は、判定テーブル171を参照して、マスタとするか否かを判定する必要がなくなる。
ネットワークタイプ判定部110は、タイプT2についての判定結果をマスタ/スレーブ判定部160に通知する。タイプT1の場合、マスタ/スレーブ判定部160は、判定テーブル171を参照せずに、デバイス101をマスタと判定する。
次に、タイプT1およびT2のいずれでもない場合、ネットワークタイプ判定部110は、マッピングアルゴリズム通知パケットに基づいてデバイス100の最上位のルータとデバイス101の最上位のルータとが同一であるか否かを判断する。そして、最上位のルータが同一である場合には、ネットワークタイプ判定部110は、最上位のルータがヘアピン機能を有するか否かを判断する。
ここで、ヘアピン機能とは、ルータのLAN側からWAN側の外部IPアドレスへパケットが送信されたとき、ルータが再びLAN側にパケットを転送する機能である。ヘアピン機能は、NATループバックやIPループバックとも呼ばれる。最上位のルータが同一である場合には、LAN内のデバイス100および101の一方から、ルータの外部IPアドレスへ送信したパケットを、LAN内の他方へ転送する必要がある。ヘアピン機能がないと、この転送が行われず、NATトラバーサルを実現することができなくなる。
最上位のルータが異なる場合には、ネットワークタイプ判定部110は、ネットワークタイプがタイプT3であると判断する。最上位のルータが同一であり、かつ、その最上位のルータがヘアピン機能を有する場合には、ネットワークタイプ判定部110は、ネットワークタイプがタイプT4であると判断する。最上位のルータが同一であり、かつ、その最上位のルータがヘアピン機能を有しない場合には、ネットワークタイプ判定部110は、ネットワークタイプがタイプT5であると判断する。タイプT3およびT4では、NATトラバーサルが可能であるが、タイプT5ではNATラバーサルを実現することができないために直接通信を行うことができない。
ネットワークタイプ判定部110は、タイプT5についての判定結果を、パケット送受信部120およびマスタ/スレーブ判定部160に通知する。
タイプT5である場合、マスタ/スレーブ判定部160は、マスタとする否かを判定しない。前述したように、NATトラバーサルが不可能であるためである。
タイプT5の場合、パケット送受信部120は、サーバ500を介してデバイス101との間の通信を行う。この場合、サーバ500は、例えば、TURN(Traversal Using Relay NAT)を使用して、データを中継する。なお、サーバ500は、独自プロトコルを使用してデータを中継してもよい。
[ネットワークタイプ判定部の構成例]
図35は、第3の実施の形態におけるネットワークタイプ判定部110の一構成例を示すブロック図である。このネットワークタイプ判定部110は、隣接デバイス検出部111、アドレスタイプ判定部112およびヘアピン機能調査部113を備える。
隣接デバイス検出部111は、通信対象のデバイス101が、デバイス100自身と同一のLANに接続されたデバイス(以下、「隣接デバイス」と称する)であるか否かを判断するものである。隣接デバイス検出部111は、デバイスを特定するための情報(デバイス名称やユーザ名称など)の通知を要求するパケットをサーチパケットとしてLAN内にブロードキャストする。サーチパケットは、例えば、SSDP(Simple Service Discovery Protocol)を使用して送信される。なお、独自プロトコルを用いて、サーチパケットを定義してもよい。
隣接デバイス検出部111は、サーチパケットに対するサーチ応答パケットを受信し、そのパケットにより通知されたデバイスが通信対象のデバイス101であるか否かを判断する。サーチ応答パケットが、通信対象のデバイス101からのパケットであれば、隣接デバイス検出部111は、隣接デバイスを検出する。隣接デバイス検出部111は、検出結果(すなわち、タイプT1であるか否かの判定結果)をフィルタリングアルゴリズム取得部140、マッピングアルゴリズム取得部150、マスタ/スレーブ判定部160およびパケット送受信部120に通知する。また、隣接デバイス検出部111は、検出結果をアドレスタイプ判定部112にも通知する。ここで、隣接デバイスを検出した場合には、隣接デバイス検出部111は、その内部IPアドレスおよび内部ポート番号もパケット送受信部120に通知する。
アドレスタイプ判定部112は、デバイス101自身のIPアドレスが内部アドレスであるか否かを判定するものである。アドレスタイプ判定部112は、隣接デバイスが検出されなかった場合に、デバイス100自身のIPアドレスを「ipconfig」コマンドの実行などにより取得する。アドレスタイプ判定部112は、取得したIPアドレスがグローバルIPアドレスであるか否かを判定する。IPアドレスがプライベートIPアドレスである場合、アドレスタイプ判定部112は、デバイス100自身のIPアドレスが内部IPアドレスであると判定する。
一方、IPアドレスがグローバルIPアドレスである場合、アドレスタイプ判定部112は、デバイス100の生成したマッピングアルゴリズム通知パケットを参照して、サーバ500が取得したデバイス100の外部IPアドレスを取得する。その外部IPアドレスが、アドレスタイプ判定部112が取得したグローバルIPアドレスと一致するか否かにより、アドレスタイプ判定部112は、ルータによりデバイス100のIPアドレスが変換されたか否かを判断する。IPアドレス変換がされていない(すなわち、一致する場合)場合、アドレスタイプ判定部112は、デバイス100自身のIPアドレスが外部IPアドレスである(言い換えれば、WANに直接接続されている)と判定する。アドレスタイプ判定部112は、外部IPドレスであるか否かの判定結果(すなわち、タイプT2であるか否かの判定結果)をマスタ/スレーブ判定部160およびヘアピン機能調査部113へ通知する。
ヘアピン機能調査部113は、最上位のルータがヘアピン機能を有するか否かを調査するものである。このヘアピン機能調査部113は、デバイス100自身のIPアドレスが内部IPアドレスである場合に、マッピングアルゴリズム通知パケットに基づいて、最上位のルータが同一であるか否かを判断する。
具体的には、ヘアピン機能調査部113は、デバイス100のマッピングアルゴリズム通知パケットから、送信元IPアドレスを取得する。この送信元IPアドレスは、サーバ500が受信したマッピング調査要求パケットの送信元のIPアドレスであり、デバイス100の最上位のルータにおけるIPアドレスに相当する。また、ヘアピン機能調査部113は、デバイス101のマッピングアルゴリズム通知パケットから、送信元IPアドレスを取得する。この送信元IPアドレスは、デバイス101の最上位のルータにおけるIPドレスに相当する。これらの送信元IPアドレスが一致すれば、最上位のルータが同一であると判断される。
最上位のルータが同一であれば、ヘアピン機能調査部113は、マッピングアルゴリズム通知パケットから取得したデバイス100の外部ポート番号とは異なる外部ポート番号を生成する。ヘアピン機能調査部113は、その外部ポート番号と、デバイス100自身に割り当てられた外部IPアドレスとからなる宛先へのパケットをヘアピン調査要求パケットとして送信する。ルータ300がヘアピン機能を有していれば、このヘアピン調査要求パケットは、デバイス100自身へ転送(すなわち、IPループバック)される。
ヘアピン機能調査部113は、ヘアピン調査要求パケットを受信したか否かを判断する。受信した場合には、ヘアピン機能調査部113は、最上位のルータがヘアピン機能を有すると判断する。一方、受信しなかった場合には、ヘアピン機能調査部113は、最上位のルータがヘアピン機能を有しないと判断する。ヘアピン機能調査部113は、その調査結果(言い換えれば、タイプT5であるか否かの判定結果)をパケット送受信部120およびマスタ/スレーブ判定部160に通知する。
なお、ヘアピン機能調査部113は、ヘアピン調査要求パケットの送受信により、ヘアピン機能を調査しているが、この構成に限定されない。例えば、STUNプロトコルを使用して、ヘアピン機能を調査してもよい。
図36は、第3の実施の形態におけるデバイスの動作の一例を示す図である。隣接デバイスが検出された場合には、ネットワークタイプはタイプT1であると判定される。この場合には、NATトラバーサルは不要であり、デバイス100は、同一ネットワーク内でデバイス101と直接通信を行う。
隣接デバイスが検出されなかった場合には、デバイス100自身のIPアドレスが、内部IPドレスであるか否かが判断される。外部IPアドレスであれば、ネットワークタイプはタイプT2であると判定される。この場合には、マスタとするか否かの判定は不要であり、デバイス100は、スレーブとしてNATトラバーサル処理を実行し、直接通信を行う。
デバイス100自身のIPアドレスが内部IPアドレスであれば、最上位ルータが同一であるか否かが判断される。最上位ルータが異なれば、ネットワークタイプはタイプT3であると判定される。
最上位ルータが同一であれば、その最上位ルータがヘアピン機能を有するか否かが調査される。最上位ルータがヘアピン機能を有する場合、ネットワークタイプはタイプT4であると判定される。一方、最上位ルータがヘアピン機能を有しない場合、ネットワークタイプはタイプT5であると判定される。
タイプT3またはT4である場合には、デバイス100は、マスタとするか否かを判定してNATトラバーサル処理を実行し、直接通信を行う。一方、タイプT5である場合には、直接通信が不可能であるため、デバイス100はサーバ500を介してデバイス101と通信を行う。
図37は、第3の実施の形態におけるネットワークタイプT1およびT2の一例を示す図である。図37におけるaは、ネットワークタイプT1の一例を示す図である。デバイス100および101は同一のルータ300に接続されており、同一のLAN内のデバイスである。この場合には、NATトラバーサルを行わずとも、デバイス同士の直接通信が可能である。
図37におけるbは、ネットワークタイプT2の一例を示す図である。デバイス100は、WAN400に直接接続されており、デバイス101はルータ301を介してWAN400に接続されている。この場合には、デバイス100がスレーブとなって、NATトラバーサル処理を実行する。
図38は、第3の実施の形態におけるネットワークタイプT4およびT5の一例を示す図である。デバイス100はルータ300を介してルータ301に接続されており、デバイス101は、ルータ301に直接接続されている。つまり、デバイス100の最上位のルータと、デバイス101の最上位のルータとが同一である。この場合、最上位のルータ301は、デバイス100および101の直接通信において、LAN内のデバイス100から外部へのパケットを、LAN内のデバイス101へ転送(すなわち、IPループバック)する必要がある。したがって、ルータ301がヘアピン機能を有する場合に、NATトラバーサルが実現される。なお、ネットワークタイプT3は、図1に例示した構成と同様である。
[デバイスの動作例]
図39は、第3の実施の形態におけるデバイス100の動作の一例を示すフローチャートである。第3の実施の形態のデバイス100の動作は、ステップS903およびS905をさらに実行する点において第2の実施の形態と異なる。第3の実施の形態のデバイス101の動作はデバイス100と同様である。
直接通信が必要なプログラムが実行されると(ステップS901:Yes)、デバイス100は、宛先のデバイス101が同一のLAN内のデバイス(隣接デバイス)であるか否かを判断する(ステップS903)。
隣接デバイスでなければ(ステップS903:No)、デバイス100は、セッション確立要求パケットをサーバ500へ送信する(ステップS904)。一方、隣接デバイスであれば(ステップS903:Yes)、デバイス100は、サーバ500を介さずに、そのデバイス101との間の通信を開始する(ステップS905)。ステップS905の後、デバイス100は、動作を終了する。
図40は、第3の実施のNATトラバーサル処理の一例を示すフローチャートである。第3の実施の形態のNATトラバーサル処理は、ステップS931、S932、S933およびS934をさらに実行する点において第2の実施の形態と異なる。
デバイス100は、デバイス100自身のアドレスが内部IPアドレスであるか否かを判断する(ステップS931)。内部IPアドレスである場合(ステップS931:Yes)、デバイス100は、デバイス100および101の最上位のルータが同一であるか否かを判断する(ステップS932)。最上位のルータが同一である場合には(ステップS932:Yes)、デバイス100は、その最上位のルータにヘアピン機能があるか否かを判断する(ステップS933)。
最上位のルータが異なる場合(ステップS932:No)、または、最上位のルータにヘアピン機能がある場合(ステップS933:Yes)、デバイス100は、判定テーブル170を参照する(ステップS935)。
デバイス100は、フラグに従って、デバイス100自身をマスタとするか否かを判定する(ステップS936)。デバイス100をマスタとする場合(ステップS936:Yes)、または、自身のアドレスが外部IPアドレスである場合(ステップS931:No)、デバイス100は、ステップS937乃至S939を実行する。
最上位のルータにヘアピン機能がない場合(ステップS933:No)、デバイス100は、サーバ500を介して通信を行う(ステップS934)。ステップS934の後、デバイス100は動作を終了する。
なお、第3の実施の形態では、ステップS940において、例えば、スレーブ側がエンドポイント非依存マッピングであり、かつ、スレーブ側がエンドポイント非依存フィルタリングである場合に、ポート番号の開放が不要と判断される。
このように、本技術の第3の実施の形態によれば、ネットワークタイプに基づいて、必要に応じて、デバイス100をマスタとするか否かを判断するため、多様なネットワーク構成において直接通信を行うことができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、
宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得部と、
前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成部と
を具備する通信装置。
(2)前記送信元マッピングアルゴリズム取得部は、
前記送信元の内部アドレスおよび内部ポート番号に対して割り当てられた前記外部アドレスおよび前記外部ポート番号の通知を要求する複数のパケットをマッピング調査要求パケットとして異なる複数の宛先へ送信するマッピング調査要求パケット送信部と、
前記マッピング調査要求パケットの各々に対するマッピング調査応答パケットを受信して前記マッピング調査応答パケットにより通知された外部アドレスおよび前記外部ポート番号に基づいて前記送信元マッピングアルゴリズムを取得するマッピング調査応答パケット受信部とを備える前記(1)記載の通信装置。
(3)前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを送信元フィルタリングアルゴリズムとして取得する送信元フィルタリングアルゴリズム取得部と、
前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを宛先フィルタリングアルゴリズムとして取得する宛先フィルタリングアルゴリズム取得部とをさらに具備し、
前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先マッピングアルゴリズムに基づいて前記外部ポート番号を生成する前記(1)または(2)記載の通信装置。
(4)前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せごとに前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを示すフラグを記憶するテーブルと、
前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せに対応する前記フラグに基づいて前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定するアルゴリズム判定部とをさらに具備し、
前記生成部は、前記アルゴリズム判定部により前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であると判定された場合には前記外部ポート番号を生成する前記(1)から(3)のいずれかの記載の通信装置。
(5)前記送信元の内部アドレスと前記宛先の内部アドレスとが同一のローカルエリアネットワーク内のアドレスであるか否かを判定する同一ネットワーク内アドレス判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元の内部アドレスと前記宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する前記(4)記載の通信装置。
(6)割り当てられたアドレスが前記内部アドレスであるか否かを判定するアドレスタイプ判定部をさらに具備し、
前記アルゴリズム判定部は、前記割り当てられたアドレスが前記内部アドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する前記(4)または(5)記載の通信装置。
(7)前記送信元マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する送信元変換機器と前記宛先マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する宛先変換機器宛先変換機器とが同一であるか否かを判定する変換機器判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合には前記宛先マッピングアルゴリズムが前記送信元マッピングアルゴリズムよりも複雑であるか否かを判定する前記(4)から(6)のいずれかに記載の通信装置。
(8)前記送信元の内部アドレスに割り当てられる外部アドレスからのパケットを前記送信元の内部アドレスに対応する外部アドレスへ転送するループバック処理を前記送信元変換機器が実行するか否かを判定するループバック判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合、または、前記送信元変換機器と前記宛先変換機器とが同一であり、かつ、前記送信元変換機器が前記ループバック処理を実行する場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する前記(7)記載の通信装置。
(9)前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑でない場合には前記宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へパケットをホールパンチングパケットとして送信するホールパンチングパケット送信部をさらに具備する前記(1)から(8)のいずれかに記載の通信機器。
(10)前記ホールパンチングパケット送信部は、前記ホールパンチングパケット送信部は、前記送信元マッピングアルゴリズムが特定のアルゴリズムである場合には前記外部ポート番号を生成して当該外部ポート番号および前記外部アドレスへ前記ホールパンチングパケットを送信する前記(9)記載の通信機器。
(11)前記外部ポート番号が生成されると当該生成された外部ポート番号に対してパケットを送信するパケット送信部をさらに具備する前記(1)から(10)のいずれかに記載の通信機器。
(12)宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして送信するサーバと、
送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、前記宛先マッピングアルゴリズムを受信する宛先マッピングアルゴリズム受信部と、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成部とを備える通信機器と
を具備する通信システム。
(13)前記サーバは、
前記宛先マッピングアルゴリズムを送信する宛先マッピングアルゴリズム送信部と
前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して送信元フィルタリングアルゴリズムとして送信する送信元フィルタリングアルゴリズム送信部と、
前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して宛先フィルタリングアルゴリズムとして送信するフィルタリングアルゴリズム送信部とを備え、
前記通信機器は、
前記送信元フィルタリングアルゴリズムを受信する送信元フィルタリングアルゴリズム受信部と、
前記宛先フィルタリングアルゴリズムを受信する宛先フィルタリングアルゴリズム受信部とをさらに備え、
前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先マッピングアルゴリズムに基づいて新たに割り当てられる前記外部ポート番号を生成する前記(12)記載の通信システム。
(14)前記送信元フィルタリングアルゴリズム送信部および前記宛先フィルタリングアルゴリズム送信部は、
前記送信元および前記宛先のそれぞれの内部アドレスおよび内部ポート番号に割り当てられた外部アドレスおよび外部ポート番号に対して返信を要求する複数のパケットをフィルタリング調査要求パケットとして前記サーバにおける異なる外部アドレスおよび外部ポート番号から送信するフィルタリング調査要求パケット送信部と、
前記フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて前記送信元フィルタリングアルゴリズムおよび前記宛先フィルタリングアルゴリズムを取得して送信するフィルタリングアルゴリズム取得部とを備える前記(13)記載の通信システム。
(15)送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成手順と
を具備する通信機器の制御方法。
(16)送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成手順と
をコンピュータに実行させるためのプログラム。
100、101 デバイス
110 ネットワークタイプ判定部
111 隣接デバイス検出部
112 アドレスタイプ判定部
113 ヘアピン機能調査部
120 パケット送受信部
130 フィルタリング調査応答部
140 フィルタリングアルゴリズム取得部
150 マッピングアルゴリズム取得部
151 送信元マッピングアルゴリズム取得部
152 マッピングアルゴリズム通知部
153 宛先マッピングアルゴリズム取得部
160 マスタ/スレーブ判定部
170、171 判定テーブル
180 直接通信部
300、301 ルータ
310 ルーティング処理部
320 アドレス変換部
330 アドレス変換テーブル
340 フィルタリング処理部
350 フィルタリングテーブル
400 WAN
500 サーバ
510 転送部
520 デバイス情報記憶部
530 フィルタリングアルゴリズム取得部
540 フィルタリングアルゴリズム通知部
550 マッピング調査応答部

Claims (16)

  1. 送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、
    宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得部と、
    前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部と
    を具備する通信装置。
  2. 前記送信元マッピングアルゴリズム取得部は、
    前記送信元の内部アドレスおよび内部ポート番号に対して割り当てられた前記外部アドレスおよび前記外部ポート番号の通知を要求する複数のパケットをマッピング調査要求パケットとして異なる複数の宛先へ送信するマッピング調査要求パケット送信部と、
    前記マッピング調査要求パケットの各々に対するマッピング調査応答パケットを受信して前記マッピング調査応答パケットにより通知された外部アドレスおよび前記外部ポート番号に基づいて前記送信元マッピングアルゴリズムを取得するマッピング調査応答パケット受信部とを備える請求項1記載の通信装置。
  3. 前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを送信元フィルタリングアルゴリズムとして取得する送信元フィルタリングアルゴリズム取得部と、
    前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを宛先フィルタリングアルゴリズムとして取得する宛先フィルタリングアルゴリズム取得部とをさらに具備し、
    前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記外部ポート番号を生成する請求項1記載の通信装置。
  4. 前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せごとに前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを示すフラグを記憶するテーブルと、
    前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せに対応する前記フラグに基づいて前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定するアルゴリズム判定部とをさらに具備し、
    前記生成部は、前記アルゴリズム判定部により前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であると判定された場合には前記外部ポート番号を生成する請求項1記載の通信装置。
  5. 前記送信元の内部アドレスと前記宛先の内部アドレスとが同一のローカルエリアネットワーク内のアドレスであるか否かを判定する同一ネットワーク内アドレス判定部をさらに具備し、
    前記アルゴリズム判定部は、前記送信元の内部アドレスと前記宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する請求項4記載の通信装置。
  6. 割り当てられたアドレスが前記内部アドレスであるか否かを判定するアドレスタイプ判定部をさらに具備し、
    前記アルゴリズム判定部は、前記割り当てられたアドレスが前記内部アドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する請求項4記載の通信装置。
  7. 前記送信元マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する送信元変換機器と前記宛先マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する宛先変換機器宛先変換機器とが同一であるか否かを判定する変換機器判定部をさらに具備し、
    前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合には前記宛先マッピングアルゴリズムが前記送信元マッピングアルゴリズムよりも複雑であるか否かを判定する請求項4記載の通信装置。
  8. 前記送信元の内部アドレスに割り当てられる外部アドレスからのパケットを前記送信元の内部アドレスに対応する外部アドレスへ転送するループバック処理を前記送信元変換機器が実行するか否かを判定するループバック判定部をさらに具備し、
    前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合、または、前記送信元変換機器と前記宛先変換機器とが同一であり、かつ、前記送信元変換機器が前記ループバック処理を実行する場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する請求項7記載の通信装置。
  9. 前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑でない場合には前記宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へパケットをホールパンチングパケットとして送信するホールパンチングパケット送信部をさらに具備する請求項1記載の通信機器。
  10. 前記ホールパンチングパケット送信部は、前記送信元マッピングアルゴリズムが特定のアルゴリズムである場合には前記外部ポート番号を生成して当該外部ポート番号および前記外部アドレスへ前記ホールパンチングパケットを送信する請求項9記載の通信機器。
  11. 前記外部ポート番号が生成されると当該生成された外部ポート番号に対してパケットを送信するパケット送信部をさらに具備する請求項1記載の通信機器。
  12. 宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして送信するサーバと、
    送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、前記宛先マッピングアルゴリズムを受信する宛先マッピングアルゴリズム受信部と、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部とを備える通信機器と
    を具備する通信システム。
  13. 前記サーバは、
    前記宛先マッピングアルゴリズムを送信する宛先マッピングアルゴリズム送信部と
    前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して送信元フィルタリングアルゴリズムとして送信する送信元フィルタリングアルゴリズム送信部と、
    前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して宛先フィルタリングアルゴリズムとして送信するフィルタリングアルゴリズム送信部とを備え、
    前記通信機器は、
    前記送信元フィルタリングアルゴリズムを受信する送信元フィルタリングアルゴリズム受信部と、
    前記宛先フィルタリングアルゴリズムを受信する宛先フィルタリングアルゴリズム受信部とをさらに備え、
    前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる前記外部ポート番号を生成する請求項12記載の通信システム。
  14. 前記送信元フィルタリングアルゴリズム送信部および前記宛先フィルタリングアルゴリズム送信部は、
    前記送信元および前記宛先のそれぞれの内部アドレスおよび内部ポート番号に割り当てられた外部アドレスおよび外部ポート番号に対して返信を要求する複数のパケットをフィルタリング調査要求パケットとして前記サーバにおける異なる外部アドレスおよび外部ポート番号から送信するフィルタリング調査要求パケット送信部と、
    前記フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて前記送信元フィルタリングアルゴリズムおよび前記宛先フィルタリングアルゴリズムを取得して送信するフィルタリングアルゴリズム取得部とを備える請求項13記載の通信システム。
  15. 送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
    宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
    生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成手順と
    を具備する通信機器の制御方法。
  16. 送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
    宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
    生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成手順と
    をコンピュータに実行させるためのプログラム。
JP2013072362A 2013-03-29 2013-03-29 通信機器、通信システム、通信機器の制御方法およびプログラム Pending JP2014197774A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013072362A JP2014197774A (ja) 2013-03-29 2013-03-29 通信機器、通信システム、通信機器の制御方法およびプログラム
US14/205,468 US20140294009A1 (en) 2013-03-29 2014-03-12 Communication apparatus, communication system, control method of communication apparatus and program
CN201410108280.8A CN104079487A (zh) 2013-03-29 2014-03-21 通信设备、通信系统、通信设备的控制方法以及程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013072362A JP2014197774A (ja) 2013-03-29 2013-03-29 通信機器、通信システム、通信機器の制御方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2014197774A true JP2014197774A (ja) 2014-10-16

Family

ID=51600539

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013072362A Pending JP2014197774A (ja) 2013-03-29 2013-03-29 通信機器、通信システム、通信機器の制御方法およびプログラム

Country Status (3)

Country Link
US (1) US20140294009A1 (ja)
JP (1) JP2014197774A (ja)
CN (1) CN104079487A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018229935A1 (ja) * 2017-06-15 2018-12-20 三菱電機株式会社 遠隔操作システム及び家電機器
JP2020522208A (ja) * 2017-05-28 2020-07-27 ドライブネッツ リミテッド 通信ネットワークにおけるサービスの提供

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10523595B2 (en) * 2014-04-02 2019-12-31 Comcast Cable Communications, Llc Application port management
US11024136B2 (en) * 2015-04-02 2021-06-01 Techcam, Llc Method and apparatus for remote surveillance
WO2016169015A1 (zh) * 2015-04-23 2016-10-27 华为技术有限公司 网络通信和直接通信之间的切换方法和装置
EP3313033B1 (en) * 2015-06-19 2020-02-12 Sony Corporation Device and method
US10218453B2 (en) * 2016-04-27 2019-02-26 Juniper Networks, Inc. Methods and apparatus for logical associations between routers and optical nodes within a wavelength division multiplexing (WDM) system
JP2018085634A (ja) * 2016-11-24 2018-05-31 富士通株式会社 情報処理装置
US11424959B2 (en) * 2017-02-08 2022-08-23 Nippon Telegraph And Telephone Corporation Communication apparatus and communication method that control processing sequence of communication packet
US10721134B2 (en) 2017-08-30 2020-07-21 Citrix Systems, Inc. Inferring radio type from clustering algorithms
US11271775B2 (en) * 2018-06-29 2022-03-08 Intel Corporation Technologies for hairpinning network traffic
JP7067815B1 (ja) * 2021-01-15 2022-05-16 Necプラットフォームズ株式会社 セキュリティ機器、方法、及び制御プログラム
CN114928589B (zh) * 2022-03-17 2024-04-12 京东科技信息技术有限公司 数据传输方法、数据传输装置、计算机可读介质及设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US7570636B2 (en) * 2004-06-29 2009-08-04 Damaka, Inc. System and method for traversing a NAT device for peer-to-peer hybrid communications
US8296437B2 (en) * 2005-12-29 2012-10-23 Logmein, Inc. Server-mediated setup and maintenance of peer-to-peer client computer communications
US20070153812A1 (en) * 2005-12-29 2007-07-05 John Kemp Dynamic discovery of a network service on a mobile device
US7856506B2 (en) * 2008-03-05 2010-12-21 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US8411683B2 (en) * 2009-09-04 2013-04-02 Comcast Cable Communications, Llc Method and apparatus for providing connectivity in a network with multiple packet protocols

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020522208A (ja) * 2017-05-28 2020-07-27 ドライブネッツ リミテッド 通信ネットワークにおけるサービスの提供
JP7110243B2 (ja) 2017-05-28 2022-08-01 ドライブネッツ リミテッド 通信ネットワークにおけるサービスの提供
WO2018229935A1 (ja) * 2017-06-15 2018-12-20 三菱電機株式会社 遠隔操作システム及び家電機器
JPWO2018229935A1 (ja) * 2017-06-15 2019-11-07 三菱電機株式会社 遠隔操作システム及び家電機器

Also Published As

Publication number Publication date
US20140294009A1 (en) 2014-10-02
CN104079487A (zh) 2014-10-01

Similar Documents

Publication Publication Date Title
JP2014197774A (ja) 通信機器、通信システム、通信機器の制御方法およびプログラム
JP4411332B2 (ja) Ip通信装置及びip通信システム並びにこれらのip通信方法
KR101510103B1 (ko) Nat 디바이스로 구성된 네트워크에서의 원격 접속 방법
US20090313386A1 (en) Communication apparatus, communication method and communication system
US9049122B2 (en) Bandwidth probing messages
EP2795850B1 (en) Modifying a property of a sequence of sent packets to uniquely identify an entity on a network such as an encrypted network
WO2011107052A2 (zh) 一种防止地址冲突的方法及接入节点
US20170207921A1 (en) Access to a node
EP2690832B1 (en) Communication device, communication system, and communication method
CN106789666B (zh) 一种确定转换后端口的方法和装置
WO2014156143A1 (ja) ホームゲートウェイ装置およびパケット転送方法
JP2007104396A (ja) 不正接続防止システムおよび方法、プログラム
JP2010226665A (ja) 負荷分散システム、負荷分散装置、及び負荷分散方法
JP5846502B2 (ja) 異なるネットワーク間の通信を実現するための方法および装置
JP6293902B2 (ja) ブラウザ発信プロシージャのためのモバイルデバイスベースのプロキシ
CN104052826B (zh) 基于dhcp的发现网络媒体服务器的方法和装置
WO2015184979A1 (zh) 处理报文、发送信息、接收信息的方法及装置
WO2014132774A1 (ja) ノード情報検出装置、ノード情報検出方法、及びプログラム
JP2012209847A (ja) IPv6NAT装置内折り返し通信方法
JP6256471B2 (ja) 通信装置、通信方法、及びプログラム
JP5201579B2 (ja) アドレス変換装置、アドレス変換方法およびプログラム
JP2005318121A (ja) セッション管理装置
JP2009130712A (ja) ゲートウエイ装置および通信制御方法
KR101253025B1 (ko) Udp 푸시 데이터 전송 시스템 및 그 제어방법과, 그 시스템에 포함되는 통신 단말기 및 그 제어방법
US9871717B2 (en) Data processing