(57)【要約】【課題】デバイス同士が直接通信に成功する確率を向上させる。【解決手段】送信元アルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する。宛先マッピングアルゴリズム取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する。生成部が、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する。【選択図】図４
2014197774.tif 000002
【特許請求の範囲】
【請求項１】
送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、
宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得部と、
前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部と
を具備する通信装置。
【請求項２】
前記送信元マッピングアルゴリズム取得部は、
前記送信元の内部アドレスおよび内部ポート番号に対して割り当てられた前記外部アドレスおよび前記外部ポート番号の通知を要求する複数のパケットをマッピング調査要求パケットとして異なる複数の宛先へ送信するマッピング調査要求パケット送信部と、
前記マッピング調査要求パケットの各々に対するマッピング調査応答パケットを受信して前記マッピング調査応答パケットにより通知された外部アドレスおよび前記外部ポート番号に基づいて前記送信元マッピングアルゴリズムを取得するマッピング調査応答パケット受信部とを備える請求項１記載の通信装置。
【請求項３】
前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを送信元フィルタリングアルゴリズムとして取得する送信元フィルタリングアルゴリズム取得部と、
前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを宛先フィルタリングアルゴリズムとして取得する宛先フィルタリングアルゴリズム取得部とをさらに具備し、
前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記外部ポート番号を生成する請求項１記載の通信装置。
【請求項４】
前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せごとに前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを示すフラグを記憶するテーブルと、
前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せに対応する前記フラグに基づいて前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定するアルゴリズム判定部とをさらに具備し、
前記生成部は、前記アルゴリズム判定部により前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であると判定された場合には前記外部ポート番号を生成する請求項１記載の通信装置。
【請求項５】
前記送信元の内部アドレスと前記宛先の内部アドレスとが同一のローカルエリアネットワーク内のアドレスであるか否かを判定する同一ネットワーク内アドレス判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元の内部アドレスと前記宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する請求項４記載の通信装置。
【請求項６】
割り当てられたアドレスが前記内部アドレスであるか否かを判定するアドレスタイプ判定部をさらに具備し、
前記アルゴリズム判定部は、前記割り当てられたアドレスが前記内部アドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する請求項４記載の通信装置。
【請求項７】
前記送信元マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する送信元変換機器と前記宛先マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する宛先変換機器宛先変換機器とが同一であるか否かを判定する変換機器判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合には前記宛先マッピングアルゴリズムが前記送信元マッピングアルゴリズムよりも複雑であるか否かを判定する請求項４記載の通信装置。
【請求項８】
前記送信元の内部アドレスに割り当てられる外部アドレスからのパケットを前記送信元の内部アドレスに対応する外部アドレスへ転送するループバック処理を前記送信元変換機器が実行するか否かを判定するループバック判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合、または、前記送信元変換機器と前記宛先変換機器とが同一であり、かつ、前記送信元変換機器が前記ループバック処理を実行する場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する請求項７記載の通信装置。
【請求項９】
前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑でない場合には前記宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へパケットをホールパンチングパケットとして送信するホールパンチングパケット送信部をさらに具備する請求項１記載の通信機器。
【請求項１０】
前記ホールパンチングパケット送信部は、前記送信元マッピングアルゴリズムが特定のアルゴリズムである場合には前記外部ポート番号を生成して当該外部ポート番号および前記外部アドレスへ前記ホールパンチングパケットを送信する請求項９記載の通信機器。
【請求項１１】
前記外部ポート番号が生成されると当該生成された外部ポート番号に対してパケットを送信するパケット送信部をさらに具備する請求項１記載の通信機器。
【請求項１２】
宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして送信するサーバと、
送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、前記宛先マッピングアルゴリズムを受信する宛先マッピングアルゴリズム受信部と、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部とを備える通信機器と
を具備する通信システム。
【請求項１３】
前記サーバは、
前記宛先マッピングアルゴリズムを送信する宛先マッピングアルゴリズム送信部と
前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して送信元フィルタリングアルゴリズムとして送信する送信元フィルタリングアルゴリズム送信部と、
前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して宛先フィルタリングアルゴリズムとして送信するフィルタリングアルゴリズム送信部とを備え、
前記通信機器は、
前記送信元フィルタリングアルゴリズムを受信する送信元フィルタリングアルゴリズム受信部と、
前記宛先フィルタリングアルゴリズムを受信する宛先フィルタリングアルゴリズム受信部とをさらに備え、
前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる前記外部ポート番号を生成する請求項１２記載の通信システム。
【請求項１４】
前記送信元フィルタリングアルゴリズム送信部および前記宛先フィルタリングアルゴリズム送信部は、
前記送信元および前記宛先のそれぞれの内部アドレスおよび内部ポート番号に割り当てられた外部アドレスおよび外部ポート番号に対して返信を要求する複数のパケットをフィルタリング調査要求パケットとして前記サーバにおける異なる外部アドレスおよび外部ポート番号から送信するフィルタリング調査要求パケット送信部と、
前記フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて前記送信元フィルタリングアルゴリズムおよび前記宛先フィルタリングアルゴリズムを取得して送信するフィルタリングアルゴリズム取得部とを備える請求項１３記載の通信システム。
【請求項１５】
送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成手順と
を具備する通信機器の制御方法。
【請求項１６】
送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成手順と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、通信機器、通信システム、通信機器の制御方法およびプログラムに関する。詳しくは、他の通信機器と直接通信を行う通信機器、通信システム、通信機器の制御方法およびプログラムに関する。
【背景技術】
【０００２】
従来より、ＩＰｖ４（Internet Protocol version 4）アドレス枯渇の問題を当面回避するために、ＮＡＴ（Network Address Translation）機能が利用されている。ＮＡＴ機能とは、ＩＰ（Internet Protocol）アドレスを別のＩＰアドレスに変換する機能である。近年では、ＩＰアドレスに加えてポート番号も変換することができるＮＡＰＴ（Network Address Port Translation）またはＩＰマスカレードと呼ばれるＮＡＴ機能がよく用いられる。
【０００３】
ＮＡＰＴにおいては、例えば、ＬＡＮ（Local Area Network）内の内部ＩＰ（Internet Protocol）アドレスおよび内部ポート番号に対して、外部ＩＰアドレスおよび外部ポート番号が割り当てられる。ルータなどのＮＡＴ機器は、複数の外部ポート番号を割り当てることができるため、ＮＡＰＴにより複数の内部ＩＰアドレスと、１つの外部ＩＰアドレスとを相互に変換することができる。これにより、ＬＡＮ内の複数のデバイスが１つの外部ＩＰアドレスを利用して同時に外部のデバイスとの間で通信を行うことができる。
【０００４】
ここで、ＮＡＴ機器が、ＬＡＮ内のデバイスに動的に外部ポート番号を割り当てる場合、ＬＡＮ外のデバイスは、ＬＡＮ内のデバイスに対応する外部ポート番号を取得することが困難となる。この問題を解決して、外部のデバイスが、ＮＡＴ機器の配下のデバイスにアクセスすることをＮＡＴトラバーサルという。
【０００５】
ＮＡＴトラバーサルを実現する方法として、内部ＩＰアドレスに対する外部ポート番号の割り当て（すなわち、ポートマッピング）を、利用者が手動で行う方法が挙げられるが、利用者に対して専門知識が求められるために実行が困難である。そこで、ポートマッピングを自動で行うために、ＵＰｎＰ（Universal Plug and Play）やＳＴＵＮ（Simple Traversal of UDP through NATs）などのプロトコルが利用されている。このうち、ＵＰｎＰでは、静的なポートマッピングしか行うことができず、さらにＵＰｎＰにＮＡＴ機器およびデバイスの両方が対応していないと適用できないため汎用性に乏しい。
【０００６】
一方、ＳＴＵＮでは、デバイスがＳＴＵＮに対応していれば、ＮＡＴ機器に依存せずにＮＡＴトラバーサルを行うことができる。ＳＴＵＮでは、デバイスＳが、通信対象のデバイスＤに対するポートマッピングのアルゴリズムを調査することができる。また、このＳＴＵＮを利用する通信システムでは、ホールパンチングと呼ばれる技術がよく用いられる。ホールパンチングでは、例えば、デバイスＤが、デバイスＤ側のＮＡＴ機器を介してデバイスＳへ向けてホールパンチングパケットを送信する。このホールパンチングパケットにより、デバイスＤ側のＮＡＴ機器において、デバイスＳとの通信に使用可能なポート番号が登録（言い換えれば、解放）される。ただし、デバイスＳ側にもＮＡＴ機器があると、このホールパンチングパケットは、デバイスＳには届かない。この時点では、デバイスＳ側のＮＡＴ機器において、デバイスＤとの間の通信に使用可能なポート番号が解放されていないためである。
【０００７】
ホールパンチングパケットがデバイスＳに届かないため、デバイスＳは、デバイスＤ側のＮＡＴ機器において解放されたポート番号を取得することができない。そこで、デバイスＳは、ＳＴＵＮにより調査したポートマッピングのアルゴリズムに基づいて、解放されるポート番号を予測し、そのポート番号にパケットを送信する。これらのＳＴＵＮおよびホールパンチングの利用により、異なるＬＡＮ内のデバイス同士が直接通信を行うことができる。デバイス同士が直接通信を行うことにより、サーバとデバイスとの間の通信量や、サーバの負荷が軽減される。
【０００８】
このような直接通信を行うには、デバイスＳ、Ｄが事前に相手のＩＰアドレスおよびポート番号を取得する必要があるため、サーバが、ＩＰアドレス等をデバイスのそれぞれへ通知する通信システムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−４５６７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述の従来技術では、直接通信に失敗するおそれがある。例えば、ホールパンチングパケットを生成するデバイスＤが、他のデバイスＳ'との間で通信を行ったことにより、デバイスＳが予測した外部ポート番号が、そのデバイスＳ'との通信において使用されてしまうことがある。この場合、デバイスＳが予測したポート番号が、ホールパンチングにより実際に解放されたポート番号と異なる値となるため、デバイスＳが送信したパケットは、デバイスＤに届かない。この結果、直接通信に失敗してしまう。
【００１１】
本技術はこのような状況に鑑みて生み出されたものであり、デバイス同士が直接通信に成功する確率を向上させることを目的とする。
【課題を解決するための手段】
【００１２】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得部と、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には上記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部とを具備する通信装置、および、その制御方法ならびに当該方法をコンピュータに実行させるためのプログラムである。これにより、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる外部ポート番号が生成されるという作用をもたらす。
【００１３】
また、この第１の側面において、上記送信元マッピングアルゴリズム取得部は、上記送信元の内部アドレスおよび内部ポート番号に対して割り当てられた上記外部アドレスおよび上記外部ポート番号の通知を要求する複数のパケットをマッピング調査要求パケットとして異なる複数の宛先へ送信するマッピング調査要求パケット送信部と、上記マッピング調査要求パケットの各々に対するマッピング調査応答パケットを受信して上記マッピング調査応答パケットにより通知された外部アドレスおよび上記外部ポート番号に基づいて上記送信元マッピングアルゴリズムを取得するマッピング調査応答パケット受信部とを備えてもよい。これにより、マッピング調査応答パケットにより通知された外部アドレスおよび外部ポート番号に基づいて送信元マッピングアルゴリズムが取得されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを送信元フィルタリングアルゴリズムとして取得する送信元フィルタリングアルゴリズム取得部と、上記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを宛先フィルタリングアルゴリズムとして取得する宛先フィルタリングアルゴリズム取得部とをさらに具備し、上記生成部は、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムよりも複雑である場合、または、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムと同一であり、かつ、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には上記外部ポート番号を生成してもよい。これにより、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムよりも複雑である場合、または、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムと同一であり、かつ、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には外部ポート番号が生成されるという作用をもたらす。
【００１５】
また、この第１の側面において、上記送信元マッピングアルゴリズムおよび上記宛先マッピングアルゴリズムの組合せごとに上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを示すフラグを記憶するテーブルと、上記送信元マッピングアルゴリズムおよび上記宛先マッピングアルゴリズムの組合せに対応する上記フラグに基づいて上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定するアルゴリズム判定部とをさらに具備し、上記生成部は、上記アルゴリズム判定部により上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であると判定された場合には上記外部ポート番号を生成してもよい。これにより、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せごとにテーブルに記憶されたフラグに基づいて送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
【００１６】
また、この第１の側面において、上記送信元の内部アドレスと上記宛先の内部アドレスとが同一のローカルエリアネットワーク内のアドレスであるか否かを判定する同一ネットワーク内アドレス判定部をさらに具備し、上記アルゴリズム判定部は、上記送信元の内部アドレスと上記宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、送信元の内部アドレスと宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
【００１７】
また、この第１の側面において、割り当てられたアドレスが上記内部アドレスであるか否かを判定するアドレスタイプ判定部をさらに具備し、上記アルゴリズム判定部は、上記割り当てられたアドレスが上記内部アドレスである場合には上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、割り当てられたアドレスが内部アドレスである場合には送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
【００１８】
また、この第１の側面において、上記送信元マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する送信元変換機器と上記宛先マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する宛先変換機器とが同一であるか否かを判定する変換機器判定部をさらに具備し、上記アルゴリズム判定部は、上記送信元変換機器と上記宛先変換機器とが異なる場合には上記宛先マッピングアルゴリズムが上記送信元マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、送信元変換機器と宛先変換機器とが異なる場合には宛先マッピングアルゴリズムが上記送信元マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
【００１９】
また、この第１の側面において、上記送信元の内部アドレスに割り当てられる外部アドレスからのパケットを上記送信元の内部アドレスに対応する外部アドレスへ転送するループバック処理を上記送信元変換機器が実行するか否かを判定するループバック判定部をさらに具備し、上記アルゴリズム判定部は、上記送信元変換機器と上記宛先変換機器とが異なる場合、または、上記送信元変換機器と上記宛先変換機器とが同一であり、かつ、上記送信元変換機器が上記ループバック処理を実行する場合には上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑であるか否かを判定してもよい。これにより、送信元変換機器と宛先変換機器とが異なる場合、または、送信元変換機器と宛先変換機器とが同一であり、かつ、送信元変換機器がループバック処理を実行する場合には送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑であるか否かが判定されるという作用をもたらす。
【００２０】
また、この第１の側面において、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑でない場合には上記宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へパケットをホールパンチングパケットとして送信するホールパンチングパケット送信部をさらに具備してもよい。これにより、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑でない場合には宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へホールパンチングパケットが送信されるという作用をもたらす。
【００２１】
また、この第１の側面において、前記ホールパンチングパケット送信部は、前記ホールパンチングパケット送信部は、前記送信元マッピングアルゴリズムが特定のアルゴリズムである場合には前記外部ポート番号を生成して当該外部ポート番号および前記外部アドレスへ前記ホールパンチングパケットを送信してもよい。これにより、送信元マッピングアルゴリズムが特定のアルゴリズムである場合に生成された外部ポート番号および外部アドレスへホールパンチングパケットが送信されるという作用をもたらす。
【００２２】
また、この第１の側面において、上記外部ポート番号が生成されると当該生成された外部ポート番号に対してパケットを送信するパケット送信部をさらに具備してもよい。これにより、外部ポート番号が生成されると外部ポート番号に対してパケットが送信されるという作用をもたらす。
【００２３】
また、本技術の第２の側面は、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして送信するサーバと、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、上記宛先マッピングアルゴリズムを受信する宛先マッピングアルゴリズム受信部と、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には上記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を生成する生成部とを備える通信機器とを具備する通信システムである。これにより、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる外部ポート番号が生成されるという作用をもたらす。
【００２４】
また、この第２の側面において、上記サーバは、上記宛先マッピングアルゴリズムを送信する宛先マッピングアルゴリズム送信部と上記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して送信元フィルタリングアルゴリズムとして送信する送信元フィルタリングアルゴリズム送信部と、上記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して宛先フィルタリングアルゴリズムとして送信するフィルタリングアルゴリズム送信部とを備え、上記通信機器は、上記送信元フィルタリングアルゴリズムを受信する送信元フィルタリングアルゴリズム受信部と、上記宛先フィルタリングアルゴリズムを受信する宛先フィルタリングアルゴリズム受信部とをさらに備え、上記生成部は、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムよりも複雑である場合、または、上記送信元フィルタリングアルゴリズムが上記宛先フィルタリングアルゴリズムと同一であり、かつ、上記送信元マッピングアルゴリズムが上記宛先マッピングアルゴリズムよりも複雑である場合には新たに割り当てられる上記外部ポート番号を生成してもよい。これにより、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムよりも複雑である場合、または、送信元フィルタリングアルゴリズムが宛先フィルタリングアルゴリズムと同一であり、かつ、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムよりも複雑である場合には外部ポート番号が生成されるという作用をもたらす。
【００２５】
また、この第２の側面において、上記送信元フィルタリングアルゴリズム送信部および上記宛先フィルタリングアルゴリズム送信部は、上記送信元および上記宛先のそれぞれの内部アドレスおよび内部ポート番号に割り当てられた外部アドレスおよび外部ポート番号に対して返信を要求する複数のパケットをフィルタリング調査要求パケットとして上記サーバにおける異なる外部アドレスおよび外部ポート番号から送信するフィルタリング調査要求パケット送信部と、上記フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて上記送信元フィルタリングアルゴリズムおよび上記宛先フィルタリングアルゴリズムを取得して送信するフィルタリングアルゴリズム取得部とを備えてもよい。これにより、フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムが取得されるという作用をもたらす。
【発明の効果】
【００２６】
本技術によれば、デバイス同士が直接通信に成功する確率を向上させることができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００２７】
【図１】第１の実施の形態における通信システムの一構成例を示すブロック図である。
【図２】第１の実施の形態におけるルータの一構成例を示すブロック図である。
【図３】第１の実施の形態におけるアドレス変換テーブルの一構成例を示す図である。
【図４】第１の実施の形態におけるデバイスの一構成例を示すブロック図である。
【図５】第１の実施の形態におけるサーバの一構成例を示すブロック図である。
【図６】第１の実施の形態におけるデバイス情報記憶部５２０に記憶される情報の一例を示す図である。
【図７】第１の実施の形態におけるマッピング調査要求パケットのデータ構造の一例を示す図である。
【図８】第１の実施の形態におけるマッピング調査応答パケットの生成方法を説明するための図である。
【図９】第１の実施の形態におけるエンドポイント非依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。
【図１０】第１の実施の形態におけるアドレス依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。
【図１１】第１の実施の形態におけるアドレス・ポート依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。
【図１２】第１の実施の形態におけるランダムマッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。
【図１３】第１の実施の形態におけるマッピングアルゴリズム通知パケットのデータ構造の一例を示す図である。
【図１４】第１の実施の形態における判定テーブルの一構成例を示す図である。
【図１５】第１の実施の形態におけるデバイスの動作の一例を示すフローチャートである。
【図１６】第１の実施の形態におけるマッピングアルゴリズム取得処理の一例を示すフローチャートである。
【図１７】第１の実施の形態におけるＮＡＴトラバーサル処理の一例を示すフローチャートである。
【図１８】第１の実施の形態におけるサーバの動作の一例を示すフローチャートである。
【図１９】第１の実施の形態におけるサーバおよびデバイスの動作の一例を示すシーケンス図である。
【図２０】第１の実施の形態における外部ポート番号の使用状況の一例を示す図である。
【図２１】第２の実施の形態におけるルータの一構成例を示すブロック図である。
【図２２】第２の実施の形態におけるフィルタリングテーブルの一構成例を示す図である。
【図２３】第２の実施の形態におけるサーバの一構成例を示すブロック図である。
【図２４】第２の実施の形態におけるフィルタリング調査要求パケットのデータ構造の一例を示す図である。
【図２５】第２の実施の形態におけるエンドポイント非依存フィルタリングおよびアドレス依存フィルタリングにより処理されるパケットの一例を示す図である。
【図２６】第２の実施の形態におけるアドレス・ポート依存フィルタリングより処理されるパケットの一例を示す図である。
【図２７】第２の実施の形態におけるフィルタリングアルゴリズム通知パケットのデータ構成の一例を示す図である。
【図２８】第２の実施の形態におけるデバイスの一構成例を示すブロック図である。
【図２９】第２の実施の形態における判定テーブルの一構成例を示す図である。
【図３０】第２の実施の形態におけるデバイスの動作の一例を示すフローチャートである。
【図３１】第２の実施の形態におけるフィルタリングアルゴリズム取得処理の一例を示すフローチャートである。
【図３２】第２の実施の形態におけるサーバの動作の一例を示すフローチャートである。
【図３３】第２の実施の形態における外部ポート番号の使用状況の一例を示す図である。
【図３４】第３の実施の形態におけるデバイスの一構成例を示すブロック図である。
【図３５】第３の実施の形態におけるネットワークタイプ判定部の一構成例を示すブロック図である。
【図３６】第３の実施の形態におけるデバイスの動作の一例を示す図である。
【図３７】第３の実施の形態におけるネットワークタイプＴ１およびＴ２の一例を示す図である。
【図３８】第３の実施の形態におけるネットワークタイプＴ４およびＴ５の一例を示す図である。
【図３９】第３の実施の形態におけるデバイスの動作の一例を示すフローチャートである。
【図４０】第３の実施の形態におけるＮＡＴトラバーサル処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２８】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（マッピングアルゴリズムに基づいてマスタを判定する例）
２．第２の実施の形態（フィルタリングアルゴリズムおよびマッピングアルゴリズムに基づいてマスタを判定する例）
３．第３の実施の形態（ネットワークタイプを判定してからマッピングアルゴリズムに基づいてマスタを判定する例）
【００２９】
＜１．第１の実施の形態＞
［通信システムの構成例］
図１は、第１の実施の形態における通信システムの一構成例を示すブロック図である。この通信システムは、デバイス同士が直接通信を行うためのシステムであり、ＩＰ電話サービス、ビデオ会議システム、または、オンラインゲームなどにおいて利用される。通信システムは、例えば、デバイス１００および１０１と、サーバ５００とを備える。
【００３０】
デバイス１００および１０１は、互いに異なるＬＡＮ内の通信機器である。デバイス１００および１０１には、それぞれのＬＡＮにおいてＤＨＣＰ（Dynamic Host Configuration Protocol）サーバなどにより、プライベートＩＰアドレスが配布される。ＤＨＣＰサーバは、図１において省略されている。なお、ＬＡＮ内のデバイス１００または１０１がグローバルＩＰアドレスを有する構成であってもよい。また、デバイス１００および１０１に静的なプライベートＩＰアドレスが設定されていてもよい。また、デバイス１００および１０１は、特許請求の範囲に記載の通信機器の一例である。
【００３１】
デバイス１００は、ルータ３００に接続されており、一方、デバイス１０１はルータ３０１に接続されている。このルータ３００は、デバイス１００のＩＰアドレスおよびポート番号を、ルータ３００のグローバルＩＰアドレスおよびポート番号に変換する。一方、ルータ３０１は、デバイス１０１のＩＰアドレスおよびポート番号を、ルータ３０１のグローバルＩＰアドレスおよびポート番号に変換する。
【００３２】
ここで、変換前のＩＰアドレス（プライベートＩＰアドレスなど）およびポート番号を、以下、「内部ＩＰアドレス」および「内部ポート番号」と称する。また、変換後のグローバルＩＰアドレスおよびポート番号を、以下、「外部ＩＰアドレス」および「外部ポート番号」と称する。
【００３３】
これらのルータ３００には、デバイス１００の他、デバイス１００と同一のＬＡＮ内のデバイスが必要に応じて接続される。ルータ３０１にも、デバイス１０１と同一のＬＡＮ内のデバイスが必要に応じて接続される。また、デバイス１００および１０１は、それぞれルータ３００および３０１を介して、インターネットなどのＷＡＮ（Wide Area Network）４００に接続される。
【００３４】
なお、ルータがＩＰアドレスおよびポート番号の変換を行う構成としているが、ルータ以外の機器がアドレスおよびポートの変換を行う構成としてもよい。例えば、ＮＡＴ機能を有するＯＳ（Operation System）がインストールされた機器がＩＰアドレスおよびポート番号の変換を行ってもよい。
【００３５】
また、ルータ３００および３０１とＷＡＮ４００との間に１つ以上のルータがさらに設けられ、ルータ３００および３０１は、それらのルータを介してＷＡＮ４００に接続する構成であってもよい。
【００３６】
サーバ５００は、デバイス１００および１０１を管理する機器である。サーバ５００は、デバイス１００および１０１が直接通信を行う際に、その直接通信に必要な情報をデバイス１００および１０１に送信する。また、サーバ５００には、複数のグローバルＩＰアドレスが割り当てられている。これらのＩＰアドレスの利用方法については後述する。
【００３７】
サーバ５００にデバイス１００およびデバイス１０１が接続され、その一方が他方との間の直接通信を要求するセッション確立要求パケットをサーバ５００へ送信すると、サーバ５００は、そのパケットを他方に転送する。
【００３８】
そして、デバイス１００は、デバイス１００の内部ＩＰアドレスおよび内部ポート番号にルータ３００の外部ＩＰアドレスおよび外部ポート番号を割り当てるマッピングアルゴリズムを取得する。一方、デバイス１０１も、デバイス１０１の内部ＩＰアドレスおよび内部ポート番号にルータ３０１の外部ＩＰアドレスおよび外部ポート番号を割り当てるマッピングアルゴリズムを取得する。デバイス１００および１０１のそれぞれは、取得したマッピングアルゴリズムを、サーバ５００を介して相互に通知しあう。また、デバイス１００および１０１は、それぞれの外部ＩＰアドレスおよび外部ポート番号をサーバ５００を介して互いに通知しあう。
【００３９】
デバイス１００および１０１は、取得したマッピングアルゴリズムに基づいて、いずれがマスタとなるかを判定する。ここで、マスタは、直接通信を試みる２つのデバイスのうち、ホールパンチングパケットにより新たに割り当てられる（言い換えれば、解放される）外部ポート番号を必要に応じて予測する方のデバイスである。一方、スレーブは、ホールパンチングパケットを必要に応じて送信し、外部ポート番号を新たに解放する方のデバイスである。
【００４０】
スレーブは、マスタを宛先とするパケットをホールパンチングパケットとして、必要に応じて送信する。そして、マスタは、スレーブの外部ポート番号とスレーブに基づいてスレーブに新たに割り当てられる外部ポート番号を必要に応じて予測し、その予測したポート番号に対して通信パケットを送信する。これにより、マスタおよびスレーブの間の直接通信が実現される。
【００４１】
［ルータの構成例］
図２は、第１の実施の形態におけるルータ３００の一構成例を示すブロック図である。ルータ３００は、ルーティング処理部３１０、アドレス変換部３２０およびアドレス変換テーブル３３０を備える。ルータ３０１の構成は、ルータ３００と同様である。
【００４２】
ルーティング処理部３１０は、パケットを受信すると、受信したパケットの宛先に基づいて、そのパケットの経路を選択（すなわち、ルーティング）するものである。このルーティング処理部３１０は、アドレス変換後のＬＡＮの内部からのパケットを外部へ転送し、アドレス変換部３２０を介して、外部からのパケットを内部へ転送する。
【００４３】
アドレス変換部３２０は、内部ＩＰアドレスおよび内部ポート番号と外部ＩＰアドレスおよび外部ポート番号とを相互に変換するものである。このアドレス変換部３２０は、ＬＡＮの内部から外部へのパケットを受信すると、そのパケットの送信元の内部ＩＰアドレスおよび内部ポート番号に対応する外部ポート番号がアドレス変換テーブル３３０に登録されているか否かを判断する。
【００４４】
対応する外部ポート番号が登録されていれば、アドレス変換部３２０は、内部ＩＰアドレスおよび内部ポート番号を、ルータ３００の外部ＩＰアドレスと、その外部ポート番号とに変換してルーティング処理部３１０に供給する。
【００４５】
一方、対応する外部ポート番号が登録されていなければ、アドレス変換部３２０は、予め設定されたマッピングアルゴリズムに従って内部ＩＰアドレスおよび内部ポート番号に対して新たに外部ポート番号を割り当てアドレス変換テーブル３３０に登録する。そして、アドレス変換部３２０は、内部ＩＰアドレスおよび内部ポート番号を、ルータ３００の外部ＩＰアドレスと、割り当てた外部ポート番号とに変換してルーティング処理部３１０に供給する。
【００４６】
ここで、マッピングアルゴリズムとして、例えば、エンドポイント非依存マッピング、アドレス依存マッピング、アドレス・ポート依存マッピング、および、ランダムマッピングのいずれかのアルゴリズムが用いられる。これらのアルゴリズムの詳細については後述する。これらのうち、エンドポイント非依存マッピング、アドレス依存マッピング、および、アドレス・ポート依存マッピングは、ＲＦＣ（Request for Comments）４７８７等に規定されている。
【００４７】
また、アドレス変換部３２０は、ＬＡＮの外部から内部へのパケットをルーティング処理部３１０から受け取る。アドレス変換部３２０は、そのパケットの宛先の外部ポート番号に対応する内部ＩＰアドレスおよび内部ポート番号がアドレス変換テーブル３３０に登録されているか否かを判断する。
【００４８】
対応する内部ＩＰアドレスおよび内部ポート番号が登録されていれば、アドレス変換部３２０は、外部ＩＰアドレスおよび外部ポート番号を、その内部ＩＰアドレスおよび内部ポート番号に変換して、その宛先に転送する。
【００４９】
一方、対応する内部ＩＰアドレスおよび内部ポート番号が登録されていなければ、アドレス変換部３２０は、受信したパケットを破棄する。
【００５０】
［アドレス変換テーブルの構成例］
図３は、第１の実施の形態におけるアドレス変換テーブル３３０の一構成例を示す図である。このアドレス変換テーブル３３０には、内部ＩＰアドレスおよび内部ポート番号ごとに、外部ＩＰアドレス、外部ポート番号および宛先が登録される。
【００５１】
アドレス変換テーブル３３０に登録される宛先は、ＬＡＮの内部から外部へ送信されたパケットの宛先のＩＰアドレスとポート番号であり、そのパケットの送信元の内部ＩＰアドレスおよび内部ポート番号に対応付けて登録される。
【００５２】
この宛先は、マッピングアルゴリズムにおいて、外部ポート番号を新たに割り当てるか否かの判断に用いられる。
【００５３】
具体的には、エンドポイント非依存マッピングにおいては、宛先は参照されない。これは、エンドポイント非依存マッピングでは、内部ＩＰアドレスおよび内部ポート番号に対する外部ポート番号が一旦登録されると、宛先が変わっても、新たに外部ポート番号を割り当てないためである。
【００５４】
例えば、（内部ＩＰアドレス：内部ポート番号）が（Ｘ１：ｘ１）のデバイスと、（外部ＩＰアドレス：外部ポート番号）が（Ｙ１：ｙ１）のデバイスと、（外部ＩＰアドレス：外部ポート番号）が（Ｙ２：ｙ２）のデバイスとがある場合を考える。（Ｘ１：ｘ１）のデバイスは、例えば、デバイス１０１であり、（Ｙ１：ｙ１）のデバイスは、例えば、サーバ５００である。（Ｙ２：ｙ２）のデバイスは、例えば、ルータ３０１である。また、ルータ３００の通信インターフェースの外部ＩＰアドレスはＸ１'であり、ルータ３００の外部ポート番号はｘ１'やｘ２'などである。
【００５５】
エンドポイント非依存マッピングでは、初期状態において（Ｘ１：ｘ１）から（Ｙ１：ｙ１）へパケットが送信されると、（Ｘ１：ｘ１）に対して、ルータ３００の（Ｘ１'：ｘ１'）が割り当てられる。しかし、その後に、（Ｘ１：ｘ１）から（Ｙ２：ｙ２）へパケットが送信されても、（Ｘ１：ｘ１）に対して新たに外部ポート番号が割り当てられず、そのパケットの送信元は（Ｘ１'：ｘ１'）に変換される。
【００５６】
次に、アドレス依存マッピングにおいては、宛先のＩＰアドレスが変わると、新たに外部ポート番号が割り当てられる。
【００５７】
アドレス依存マッピングでは、例えば、初期状態において（Ｘ１：ｘ１）から（Ｙ１：ｙ１）へパケットが送信されると、（Ｘ１：ｘ１）に対応付けて（Ｘ１'：ｘ１'）と宛先Ｙ１とが登録される。その後に、（Ｘ１：ｘ１）から（Ｙ２：ｙ２）へパケットが送信されると、宛先のＩＰアドレスが異なるため、（Ｘ１：ｘ１）に対して新たに（Ｘ１'：ｘ２'）が宛先Ｙ２と関連付けて割り当てられる。一方、（Ｘ１：ｘ１）から（Ｙ１：ｙ２）へパケットが送信されても、宛先のＩＰアドレスが同一であるから、新たな外部ポート番号は割り当てられない。図３に例示したアドレス変換テーブル３３０は、このアドレス依存マッピングにおいて用いられるテーブルである。
【００５８】
そして、アドレス・ポート依存マッピングにおいては、宛先のＩＰアドレスまたはポート番号が変わると、新たに外部ポート番号が割り当てられる。
【００５９】
アドレス・ポート依存マッピングでは、例えば、初期状態において（Ｘ１：ｘ１）から（Ｙ１：ｙ１）へパケットが送信されると、（Ｘ１：ｘ１）に対応付けて、（Ｘ１'：ｘ１'）および宛先（Ｙ１：ｙ１）が登録される。その後に、（Ｘ１：ｘ１）から（Ｙ２：ｙ２）へパケットが送信されると、宛先のＩＰアドレスが異なるため、（Ｘ１：ｘ１）に対して新たに（Ｘ１'：ｘ２'）が宛先（Ｙ２：ｙ２）と関連付けて割り当てられる。また、（Ｘ１：ｘ１）から（Ｙ１：ｙ２）へパケットが送信された場合も、宛先のポート番号が異なるため、新たな外部ポート番号が割り当てられる。
【００６０】
これらのエンドポイント非依存マッピング、アドレス依存マッピング、および、アドレス・ポート依存マッピングでは、規則的に生成された外部ポート番号が割り当てられる。例えば、ある外部ポート番号ｘ１'を割り当てた後、その次に新たに外部ポート番号を割り当てる場合、ｘ１'をインクリメントした番号が割り当てられる。
【００６１】
これに対して、ランダムマッピングにおいては、宛先のＩＰアドレスまたはポート番号が変わるたびに、不規則に生成された外部ポート番号が割り当てられる。
【００６２】
このように、これらのマッピングアルゴリズムは、それぞれ複雑さが異なる。宛先が変わっても新たに外部ポート番号を割り当てないエンドポイント非依存マッピングよりも、宛先が変わるたびに外部ポート番号を割り当てるアドレス依存マッピングの方が複雑である。また、宛先のポート番号が変わっても新たに外部ポート番号を割り当てないアドレス依存マッピングよりも、宛先のポート番号が変わるたびに外部ポート番号を割り当てるアドレス・ポート依存マッピングの方が複雑である。また、規則的にポート番号を割り当てるアドレス・ポート依存マッピングよりも、不規則にポート番号を割り当てるランダムマッピングの方が複雑である。
【００６３】
つまり、複雑さの度合いが高い順に並べると、ランダムマッピング＞アドレス・ポート依存マッピング＞アドレス依存マッピング＞エンドポイント非依存マッピングの順となる。
【００６４】
アルゴリズムが複雑であるほど、新たに割り当てられる外部ポート番号の予測が困難となる。このため、デバイス１００または１０１は、単純な方のアルゴリズムにより割り当てられる外部ポート番号を予測することが望ましい。例えば、デバイス１００に対応するルータ３００のマッピングアルゴリズムより、デバイス１０１に対応するルータ３０１のマッピングアルゴリズムが複雑である場合を考える。この場合は、デバイス１０１がマスタとなり、単純な方のルータ３００のマッピングアルゴリズムに対応する予測アルゴリズムに基づいて外部ポート番号を予測すればよい。
【００６５】
［デバイスの構成例］
図４は、第１の実施の形態におけるデバイス１００の一構成例を示すブロック図である。このデバイス１００は、マッピングアルゴリズム取得部１５０、マスタ／スレーブ判定部１６０および判定テーブル１７０および直接通信部１８０を備える。また、マッピングアルゴリズム取得部１５０は、送信元マッピングアルゴリズム取得部１５１、マッピングアルゴリズム通知部１５２および宛先マッピングアルゴリズム取得部１５３を備える。デバイス１０１の構成は、デバイス１００と同様である。
【００６６】
送信元マッピングアルゴリズム取得部１５１は、送信元のデバイスの内部ＩＰアドレスおよび内部ポート番号に対して外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得するものである。送信元マッピングアルゴリズム取得部１５１は、直接通信が必要な場合に、通信対象のデバイスを指定したセッション確立要求パケットをサーバ５００に送信する。このセッション確立要求パケットは、例えば、ＳＩＰ（Session Initiation Protocol）に従って送受信される。
【００６７】
セッション確立要求パケットを送信した後、送信元マッピングアルゴリズム取得部１５１は、複数のマッピング調査要求パケットをサーバ５００へ送信する。これらのマッピング調査要求パケットは、デバイス１００の内部ＩＰアドレスおよび内部ポート番号に対して割り当てられた外部ＩＰアドレスおよび外部ポート番号の通知を要求するパケットである。前述したように、宛先が変わったときのマッピング方法は、マッピングアルゴリズムごとに異なる。このアルゴリズムの違いを判断するために、複数のマッピング調査要求パケットは、それぞれ異なる宛先に順に送信される。
【００６８】
例えば、宛先の異なる４つのマッピング調査要求パケットＲｑｍ１、Ｒｑｍ２、Ｒｑｍ３およびＲｑｍ４が順に送信される。Ｒｑｍ２は、宛先のＩＰアドレスがＲｑｍ１と同一で、宛先のポート番号がＲｑｍ１と異なるパケットである。Ｒｑｍ３は、宛先のＩＰアドレスがＲｑｍ１と異なり、宛先のポート番号がＲｑｍ１と同一のパケットである。Ｒｑｍ４は、宛先のＩＰアドレスおよびポート番号の両方がＲｑｍ１と異なるパケットである。これらの４つのパケットを１つのサーバ５００で受信するには、複数の外部ＩＰアドレスが必要となる。このため、サーバ５００の通信インターフェースには複数の外部ＩＰアドレスが割り当てられている。
【００６９】
ルータ３００は、マッピング調査要求パケットの送信元の内部ＩＰアドレスおよび内部ポート番号に外部ＩＰアドレスおよび外部ポート番号を割り当てる。サーバ５００はマッピング調査要求パケットＲｑｍ１の送信元の外部ＩＰアドレスおよび外部ポート番号をペイロードに格納したマッピング調査応答パケットＲｐｍ１を生成して、デバイス１００に返信する。同様に、サーバ５００は、マッピング調査要求パケットＲｑｍ２、Ｒｑｍ３およびＲｑｍ４に応じてマッピング調査応答パケットＲｐｍ２、Ｒｐｍ３およびＲｐｍ４を生成してデバイス１００に返信する
【００７０】
送信元マッピングアルゴリズム取得部１５１は、それらのマッピング調査応答パケットを受信し、そのペイロードから、外部ＩＰアドレスおよび外部ポート番号を取得する。そして、送信元マッピングアルゴリズム取得部１５１は、それらの外部ＩＰアドレスおよび外部ポート番号から、送信元マッピングアルゴリズムを取得する。
【００７１】
具体的には、４つのマッピング調査要求パケットに対する外部ポート番号が全て同一である場合、送信元マッピングアルゴリズム取得部１５１は、エンドポイント非依存マッピングであると判断する。このエンドポイント非依存マッピングでは、宛先が変わっても、ＬＡＮ内のデバイスに対応するポート番号は変更されないためである。
【００７２】
また、マッピング調査応答パケットＲｐｍ１およびＲｐｍ２の外部ポート番号は同一であるが、マッピング調査応答パケットＲｐｍ１と、Ｒｐｍ３およびＲｐｍ４との外部ポート番号が異なる場合を考える。この場合には、送信元マッピングアルゴリズム取得部１５１は、アドレス依存マッピングであると判断する。このアドレス依存マッピングでは、宛先のＩＰアドレスが変わるとＬＡＮ内のデバイスに対応するポート番号が変更されるためである。
【００７３】
また、４つのマッピング調査要求パケットに対する外部ポート番号が全て異なる場合、送信元マッピングアルゴリズム取得部１５１は、マッピング調査要求パケットの送信順序において隣り合う外部ポート番号の差分を算出する。４つのマッピング調査要求パケットが順に送信されたため、３つの差分が算出される。それらの差分が同一である場合は、送信元マッピングアルゴリズム取得部１５１は、アドレス・ポート依存マッピングであると判断する。このアドレス・ポート依存マッピングでは、宛先のＩＰアドレスまたはポート番号が変わるとＬＡＮ内のデバイスに対応するポート番号が規則的に変更されるためである。
【００７４】
４つのマッピング調査要求パケットに対する外部ポート番号が全て異なり、算出した３つの差分が同一でない場合には、送信元マッピングアルゴリズム取得部１５１は、ランダムマッピングであると判断する。このランダムマッピングでは、宛先のＩＰアドレスまたはポート番号が変わるとＬＡＮ内のデバイスに対応するポート番号が不規則に変更されるためである。
【００７５】
送信元マッピングアルゴリズム取得部１５１は、送信元マッピングアルゴリズムと、デバイス１００の外部ＩＰアドレスおよび外部ポート番号と、算出した差分とをマッピングアルゴリズム通知部１５２に供給する。また、送信元マッピングアルゴリズム取得部１５１は、送信元マッピングアルゴリズムをマスタ／スレーブ判定部１６０に供給する。
【００７６】
マッピングアルゴリズム通知部１５２は、デバイス１００が取得したマッピングアルゴリズムをデバイス１０１にサーバ５００を介して通知するものである。このマッピングアルゴリズム通知部１５２は、デバイス１００が取得したマッピングアルゴリズムと、デバイス１００の外部ＩＰアドレスおよび外部ポート番号と、差分とをペイロードに格納したマッピングアルゴリズム通知パケットを生成する。マッピングアルゴリズム通知部１５２は、そのマッピングアルゴリズム通知パケットをサーバ５００に送信する。サーバ５００は、そのマッピングアルゴリズム通知パケットをデバイス１０１に転送する。
【００７７】
宛先マッピングアルゴリズム取得部１５３は、宛先のデバイスの内部ＩＰアドレスおよび内部ポート番号に対して外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得するものである。この宛先マッピングアルゴリズム取得部１５３は、サーバ５００により転送された、デバイス１０１からのマッピングアルゴリズム通知パケットを受信する。宛先マッピングアルゴリズム取得部１５３は、そのマッピングアルゴリズム通知パケットのペイロードから宛先マッピングアルゴリズムと、デバイス１０１の外部ＩＰアドレスおよび外部ポート番号と、差分とを取得する。宛先マッピングアルゴリズム取得部１５３は、それらをマスタ／スレーブ判定部１６０に供給する。
【００７８】
図４では、デバイス１００がセッション確立要求パケットの送信元である場合において送受信されるパケットを記載しているが、記載の便宜上、デバイス１００が宛先の場合において送受信されるパケットを省略している。デバイス１００が宛先の場合には、宛先マッピングアルゴリズム取得部１５３が、デバイス１０１からのセッション確立要求パケットを受信する。そして、宛先マッピングアルゴリズム取得部１５３が、４つのマッピング調査要求パケットをサーバ５００に送信し、それらの応答パケットから宛先マッピングアルゴリズムを取得する。マッピングアルゴリズム通知部１５２は、その宛先マッピングアルゴリズムをデバイス１０１にサーバ５００を介して送信する。一方、送信元マッピングアルゴリズム取得部１５１は、デバイス１０１からのマッピングアルゴリズム通知パケットを受信して、送信元マッピングアルゴリズムと、デバイス１０１の外部ＩＰアドレスおよび外部ポート番号と差分とを取得する。
【００７９】
判定テーブル１７０は、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せごとに、デバイス１００をマスタとするか否かを示すフラグを記憶するものである。例えば、送信元マッピングアルゴリズムが宛先マッピングアルゴリズムより複雑である場合には、送信元のデバイスがマスタとなり、単純な方の宛先マッピングアルゴリズムに基づいて外部ポート番号を予測する。逆に、宛先マッピングアルゴリズムが送信元マッピングアルゴリズムより複雑である場合には、宛先のデバイスがマスタとなり、単純な方の送信元マッピングアルゴリズムに基づいて外部ポート番号を予測する。宛先マッピングアルゴリズムと送信元マッピングアルゴリズムとの複雑さが同一である場合には、例えば、送信元のデバイスをマスタとする。
【００８０】
なお、宛先マッピングアルゴリズムと送信元マッピングアルゴリズムとが同一である場合には、送信元および宛先のデバイスに優劣がつかないため、宛先のデバイスをマスタとしてもよい。
【００８１】
マスタ／スレーブ判定部１６０は、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムに基づいて、デバイス１００をマスタとするか否かを判定するものである。このマスタ／スレーブ判定部１６０は、判定テーブルから、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムに対応するフラグを読み出して、デバイス１００をマスタとするか否かを判定する。マスタ／スレーブ判定部１６０は、判定結果と、デバイス１０１のマッピングアルゴリズムと、デバイス１０１の外部ＩＰアドレスおよび外部ポート番号と、差分とを直接通信部１８０に供給する。
【００８２】
直接通信部１８０は、デバイス１０１との間で直接通信を行うものである。直接通信部１８０は、スレーブ（デバイス１０１）側のマッピングアルゴリズムに対応する予測アルゴリズムに従って、外部ポート番号および差分から、新たに割り当てられる外部ポート番号を予測する。
【００８３】
具体的には、スレーブ側のマッピングアルゴリズムがアドレス依存マッピングまたはアドレス・ポート依存マッピングである場合、直接通信部１８０は、予測する外部ポート番号として、受信した外部ポート番号に差分を加えたポート番号を生成する。
【００８４】
直接通信部１８０は、デバイス１０１の外部ＩＰアドレスと、生成した外部ポート番号とを宛先とする通信パケットを生成してサーバ５００を介さずに送信する。これにより、デバイス１０１との間の直接通信が実現される。
【００８５】
ここで、デバイス１００がマスタであり、マスタ（デバイス１００）側のマッピングアルゴリズムがエンドポイント非依存マッピングである場合を考える。この場合には、予測した外部ポート番号のみならず、その周辺の外部ポート番号へもマスタが通信パケットを送信することで、直接通信に成功する確率が向上する。
【００８６】
一方、デバイス１００がスレーブであり、かつ、マスタ（デバイス１０１）側のマッピングアルゴリズムがエンドポイント非依存マッピング以外である場合を考える。この場合には、直接通信部１８０は、デバイス１０１の外部ＩＰアドレスと、生成したポート番号とを宛先とするパケットをホールパンチングパケットとして送信する。
【００８７】
ここで、ホールパンチングパケットの有効期間（ＴＴＬ：Time To Live）は、最上位のルータに届かないように調整することが望ましい。
【００８８】
また、マスタ側のマッピングアルゴリズムがエンドポイント非依存マッピング以外である場合には、スレーブは、マスタ側のルータにおいて解放される外部ポート番号を予測して、その外部ポート番号へホールパンチングパケットを送信する。この際、スレーブがマルチホールパンチングを行うことで、直接通信に成功する確率が向上する。マルチホールパンチングとは、スレーブが複数のホールパンチングパケットを送信することである。マルチホールパンチングにより、マスタが予測した外部ポート番号のみならず、その周辺の外部ポート番号も解放される。外部ポート番号の予測においては、実際に解放された外部ポート番号が予測した外部ポート番号とずれてしまうことがある。例えば、デバイス１０１側のルータ３０１には、デバイス１０１以外のデバイスも接続することがあり、ルータ３００が、そのデバイスに外部ポート番号を割り当てたことにより、解放された外部ポート番号が予測とずれてしまうことがある。あるいは、デバイス１０１内で動作している他のネットワークサービスの内部ポート番号に対してルータ３００が外部ポート番号を割り当てたことにより、解放された外部ポート番号が予測とずれてしまうことがある。マルチホールパンチングにより、このような外部ポート番号のずれにも対応することができ、直接通信に成功する確率が向上する。
【００８９】
また、デバイス１００がスレーブであり、かつ、スレーブ側のマッピングアルゴリズムがエンドポイント非依存マッピングである場合、直接通信部１８０は、ホールパンチングパケットを送信しなくてもよい。エンドポイント非依存マッピングでは、宛先が変わっても、スレーブに対応する外部ポート番号が変更されないためである。
【００９０】
ホールパンチングパケットにより新たな外部ポート番号が登録（解放）されると、マスタ（デバイス１０１）は、解放された外部ポート番号を予測して通信パケットを送信する。直接通信部１８０は、その通信パケットを受信する。これにより、デバイス１００との間の直接通信が実現される。
【００９１】
なお、直接通信部１８０は、特許請求の範囲に記載の生成部の一例である。
【００９２】
［サーバの構成例］
図５は、第１の実施の形態におけるサーバ５００の一構成例を示すブロック図である。このサーバ５００は、転送部５１０、デバイス情報記憶部５２０およびマッピング調査応答部５５０を備える。
【００９３】
デバイス情報記憶部５２０は、サーバ５００に接続されたデバイスごとに、そのデバイスの識別情報とデバイスの外部ＩＰアドレスおよび外部ポート番号とを対応付けて記憶するものである。デバイスの識別情報は、直接通信を提供するサービスにおいてデバイスに割り当てられた識別情報であり、デバイス名や、そのデバイスのユーザ名などである。
【００９４】
転送部５１０は、セッション確立要求パケットおよびマッピングアルゴリズム通知パケットを転送するものである。転送部５１０は、デバイスがサーバ５００との間の通信を開始すると、デバイスの識別情報と、デバイスの外部ＩＰアドレスおよび外部ポート番号とを対応付けてデバイス情報記憶部５２０に記憶させる。
【００９５】
そして、セッション確立要求パケットをデバイスから受信すると、転送部５１０は、そのセッション要求パケットが接続を要求するデバイスの外部ＩＰアドレスおよび外部ポート番号をデバイス情報記憶部５２０から読み出す。そして、転送部５１０は、読み出した外部ＩＰアドレスおよび外部ポート番号へセッション確立要求パケットを転送する。
【００９６】
セッション確立要求パケットの転送後、セッション確立要求パケットの送信元および宛先の一方からマッピングアルゴリズム通知パケットを受信すると、転送部５１０は、そのパケットを他方へ転送する。
【００９７】
マッピング調査応答部５５０は、マッピング調査要求パケットに応じてマッピング調査応答パケットを返信するものである。このマッピング調査応答部５５０は、マッピング調査要求パケットを受信すると、そのパケットの送信元の外部ＩＰアドレスおよび外部ポート番号を取得する。マッピング調査応答部５５０は、取得した外部ＩＰアドレスおよび外部ポート番号をペイロードに格納したマッピング調査応答パケットを生成し、マッピング調査要求パケットの送信元に返信する。
【００９８】
図６は、第１の実施の形態におけるデバイス情報記憶部５２０に記憶される情報の一例を示す図である。デバイス情報記憶部５２０には、デバイス名と、ＩＰアドレスおよびポート番号とが対応付けて記録される。これらのＩＰアドレスおよびポート番号は、デバイスの内部ＩＰアドレスおよび内部ポート番号に割り当てられた外部ＩＰアドレスおよび外部ポート番号である。
【００９９】
例えば、デバイス名「Ｄ１」がサーバ５００に接続されると、そのＩＰアドレス「Ｙ．Ｙ．Ｙ．１」およびポート番号「８０００」が「Ｄ１」に対応付けて記憶される。また、デバイス名「Ｄ２」がサーバ５００に接続されると、そのＩＰアドレス「Ｙ．Ｙ．Ｙ．２」およびポート番号「８００１」が「Ｄ１」に対応付けて記憶される。
【０１００】
「Ｄ１」のデバイスが、通信対象として「Ｄ２」を指定したセッション確立要求パケットをサーバ５００に送信すると、サーバ５００は、「Ｄ２」に対応する「Ｙ．Ｙ．Ｙ．２」および「８００１」に、そのパケットを転送する。
【０１０１】
図７は、第１の実施の形態におけるマッピング調査要求パケットのデータ構造の一例を示す図である。図７におけるａは、マッピング調査要求パケットＲｑｍ１のデータ構造の一例を示す図である。このパケットは、ヘッダにおいて送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレスおよび宛先ポート番号を含む。この送信元ＩＰアドレスおよび送信元ポート番号は、デバイス１００の内部ＩＰアドレスおよび内部ポート番号である。また、宛先ＩＰアドレスおよび宛先ポート番号は、サーバ５００の外部ＩＰアドレスおよび外部ポート番号である。
【０１０２】
図７におけるｂは、マッピング調査要求パケットＲｑｍ２のデータ構造の一例を示す図である。マッピング調査要求パケットＲｑｍ２は、宛先ポート番号が異なる点以外は、マッピング調査要求パケットＲｑｍ１と同様の構成である。
【０１０３】
図７におけるｃは、マッピング調査要求パケットＲｑｍ３のデータ構造の一例を示す図である。マッピング調査要求パケットＲｑｍ３は、宛先ＩＰアドレスが異なる点以外は、マッピング調査要求パケットＲｑｍ１と同様の構成である。
【０１０４】
図７におけるｄは、マッピング調査要求パケットＲｑｍ４のデータ構造の一例を示す図である。マッピング調査要求パケットＲｑｍ４は、宛先ＩＰアドレスおよび宛先ポート番号が異なる点以外は、マッピング調査要求パケットＲｑｍ１と同様の構成である。
【０１０５】
これらのマッピング調査要求パケットに対するマッピング調査応答パケットから、デバイス１００は、デバイス１００に対応するルータ３００のマッピングアルゴリズムを取得することができる。
【０１０６】
図８は、第１の実施の形態におけるマッピング調査応答パケットの生成方法を説明するための図である。デバイス１００からマッピング調査要求パケットＲｑｍ１が送信されると、ルータ３００は、そのマッピング調査要求パケットＲｑｍ１の送信元の内部ＩＰアドレスおよび内部ポート番号を外部ＩＰアドレスおよび外部ポート番号に変換する。これらの外部ＩＰアドレスおよび外部ポート番号は、デバイス１００から直接参照することができないため、マッピング調査応答パケットによりサーバ５００から通知してもらう必要がある。
【０１０７】
サーバ５００は、ＩＰアドレス等が変換されたマッピング調査要求パケットＲｑｍ１'の送信元のＩＰアドレスおよびポート番号をヘッダから取得し、それらをペイロードに格納したマッピング調査応答パケットＲｐｍ１を生成する。そして、サーバ５００は、そのマッピング調査応答パケットＲｐｍ１をデバイス１００に返信する。デバイス１００は、そのマッピング調査応答パケットＲｐｍ１のペイロードを参照することにより、デバイス１００に割り当てられた外部ＩＰアドレスおよび外部ポート番号を取得することができる。
【０１０８】
図９は、第１の実施の形態におけるエンドポイント非依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図９におけるａは、マッピング調査応答パケットＲｐｍ１のデータ構造の一例である。このマッピング調査応答パケットＲｐｍ１のペイロードには、送信元ＩＰアドレスおよび送信元ポート番号が格納される。送信元ＩＰアドレスおよび送信元ポート番号は、ルータ３００においてデバイス１００に割り当てられた外部ＩＰアドレスおよび外部ポート番号である。
【０１０９】
図９におけるｂは、マッピング調査応答パケットＲｐｍ２のデータ構造の一例である。図９におけるｃは、マッピング調査応答パケットＲｐｍ３のデータ構造の一例であり、図９におけるｄは、マッピング調査応答パケットＲｐｍ４のデータ構造の一例である。これらのパケットのデータ構造は、マッピング調査応答パケットＲｐｍ１と同様である。このことから、宛先が変更されても外部ポート番号の割り当て（すなわち、ポートマッピング）が変更されていないことが推測される。したがって、この場合には、エンドポイント非依存マッピングであると判断される。
【０１１０】
図１０は、第１の実施の形態におけるアドレス依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図１０におけるａは、マッピング調査応答パケットＲｐｍ１のデータ構造の一例であり、図１０におけるｂは、マッピング調査応答パケットＲｐｍ２のデータ構造の一例である。また、図１０におけるｃは、マッピング調査応答パケットＲｐｍ３のデータ構造の一例であり、図１０におけるｄは、マッピング調査応答パケットＲｐｍ４のデータ構造の一例である。
【０１１１】
マッピング調査応答パケットＲｐｍ１およびＲｐｍ２において外部ポート番号は変わらない。しかし、マッピング調査応答パケットＲｐｍ１における外部ポート番号は、マッピング調査応答パケットＲｐｍ３およびＲｐｍ４における外部ポート番号と異なっている。このことから、宛先のＩＰアドレスの変更に応じて、ポートマッピングが変更されたことが推測される。したがって、この場合には、アドレス依存マッピングであると判断される。
【０１１２】
図１１は、第１の実施の形態におけるアドレス・ポート依存マッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図１１におけるａは、マッピング調査応答パケットＲｐｍ１のデータ構造の一例であり、図１１におけるｂは、マッピング調査応答パケットＲｐｍ２のデータ構造の一例である。また、図１１におけるｃは、マッピング調査応答パケットＲｐｍ３のデータ構造の一例であり、図１１におけるｄは、マッピング調査応答パケットＲｐｍ４のデータ構造の一例である。
【０１１３】
マッピング調査応答パケットＲｐｍ１、Ｒｐｍ２、Ｒｐｍ３およびＲｐｍ４のそれぞれの外部ポート番号が異なる。また、Ｒｐｍ１の外部ポート番号「８０００」と、その次のＲｐｍ２の外部ポート番号「８００１」との差分は「＋１」である。同様に、Ｒｐｍ２と、その次のＲｐｍ３との外部ポート番号の差分も「＋１」であり、Ｒｐｍ３とＲｐｍ４との外部ポート番号の差分も「＋１」である。このことから、宛先のＩＰアドレスまたはポート番号の変更に応じて、ポートマッピングが規則的に変更されたことが推測される。したがって、この場合には、アドレス・ポート依存マッピングであると判断される。
【０１１４】
図１２は、第１の実施の形態におけるランダムマッピング時のマッピング調査応答パケットのデータ構造の一例を示す図である。図１２におけるａは、マッピング調査応答パケットＲｐｍ１のデータ構造の一例であり、図１２におけるｂは、マッピング調査応答パケットＲｐｍ２のデータ構造の一例である。また、図１２におけるｃは、マッピング調査応答パケットＲｐｍ３のデータ構造の一例であり、図１２におけるｄは、マッピング調査応答パケットＲｐｍ４のデータ構造の一例である。
【０１１５】
マッピング調査応答パケットＲｐｍ１、Ｒｐｍ２、Ｒｐｍ３およびＲｐｍ４のそれぞれの外部ポート番号が異なる。また、Ｒｐｍ１の外部ポート番号「８０００」と、その次のＲｐｍ２の外部ポート番号「８０１１」との差分は「＋１１」である。しかし、Ｒｐｍ２と、その次のＲｐｍ３との外部ポート番号の差分は「＋１」であり、Ｒｐｍ３とＲｐｍ４との外部ポート番号の差分は「＋３」である。つまり、送信順において隣り合う外部ポート番号の差分が同一でない。このことから、宛先のＩＰアドレスまたはポート番号の変更に応じて、ポートマッピングが不規則に変更されたことが推測される。したがって、この場合には、ランダムマッピングであると判断される。
【０１１６】
図１３は、第１の実施の形態におけるマッピングアルゴリズム通知パケットのデータ構造の一例を示す図である。このマッピングアルゴリズム通知パケットには、マッピングアルゴリズム情報、整数値であるＮ、送信元ＩＰアドレスおよび送信元ポート番号が含まれる。
【０１１７】
マッピングアルゴリズム情報は、デバイスが取得したマッピングアルゴリズムを示す情報である。Ｎは、マッピング調査応答パケットの送信順において隣り合う外部ポート番号の差分の値である。Ｎは外部ポート番号を予測するために用いられる。ただし、マッピングアルゴリズムがエンドポイント非依存マッピングまたはランダムマッピングである場合には、外部ポート番号の予測が不要または不可能であるため、Ｎは格納されない。もしくは、その場合には無効な値がＮに設定される。
【０１１８】
送信元ＩＰアドレスおよび送信元ポート番号は、送信順において最後のマッピング調査応答パケットＲｐｍ４における、デバイスの外部ＩＰアドレスおよび外部ポート番号である。なお、デバイス１００は、外部ＩＰアドレスおよび外部ポート番号をマッピングアルゴリズム通知パケットとは別のパケットにより通知してもよい。
【０１１９】
［判定テーブルの構成例］
図１４は、第１の実施の形態における判定テーブル１７０の一構成例を示す図である。この判定テーブル１７０には、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せごとに、送信元をマスタとするか否かを示すフラグが記載される。判定テーブル１７０では、サーバ５００を介して転送されるセッション確立要求パケットの宛先をデバイスＡとし、その送信元をデバイスＢとしている。
【０１２０】
また、「ＩＭ」は、エンドポイント非依存マッピング（Endpoint-Independent Mapping）を示す。「ＡＭ」は、アドレス依存マッピング（Address-Dependent Mapping）を示す。「ＰＭ」は、アドレス・ポート依存マッピング（Address and Port-Dependent Mapping）を示す。「ＲＭ」は、ランダムマッピング（Random Mapping）を示す。
【０１２１】
デバイスＡ側の宛先マッピングアルゴリズムがデバイスＢ側の送信元マッピングアルゴリズムより複雑である場合、デバイスＡをマスタとすることを示すフラグが記録される。デバイスＢ側のマッピングアルゴリズムの方が単純であり、デバイスＡの方がデバイスＢよりも外部ポート番号を予測しやすいためである。
【０１２２】
逆に、デバイスＢ側の宛先マッピングアルゴリズムがデバイスＡ側の送信元マッピングアルゴリズムより複雑である場合、デバイスＢをマスタとすることを示すフラグが記録される。また、デバイスＢ側の宛先マッピングアルゴリズムとデバイスＡ側の送信元マッピングアルゴリズムとが同一である場合、デバイスＢをマスタとすることを示すフラグが記録される。
【０１２３】
［デバイスの動作例］
図１５は、第１の実施の形態におけるデバイス１００の動作の一例を示すフローチャートである。この動作は、例えば、デバイス１００がルータ３００等を介してサーバ５００に接続されたときに開始する。
【０１２４】
デバイス１００は、直接通信が必要なプログラムが実行されたか否かを判断する。直接通信が必要なプログラムは、例えば、オンラインゲームにおける通信対戦を行うためのプログラムや、ＩＰ電話における通話を開始するためのプログラムなどである（ステップＳ９０１）。
【０１２５】
プログラムが実行されていなければ（ステップＳ９０１：Ｎｏ）、デバイス１００は、セッション確立要求パケットをサーバ５００から受信したか否かを判断する（ステップＳ９０２）。セッション確立要求パケットを受信していなければ（ステップＳ９０２：Ｎｏ）、デバイス１００は、ステップＳ９０１に戻る。
【０１２６】
プログラムが実行されたのであれば（ステップＳ９０１：Ｙｅｓ）、デバイス１００は、通信対象のデバイスを指定したセッション確立要求パケットを生成してサーバ５００に送信する（ステップＳ９０４）。
【０１２７】
セッション確立要求パケットを受信した場合（ステップＳ９０２：Ｙｅｓ）、または、ステップＳ９０４の後、デバイス１００は、マッピングアルゴリズムを取得するためのマッピングアルゴリズム取得処理を実行する（ステップＳ９２０）。そして、デバイス１００は、ＮＡＴ越えを行って直接通信するためのＮＡＴトラバーサル処理を実行する（ステップＳ９３０）。ステップＳ９３０の後、デバイス１００は動作を終了する。なお、デバイス１０１の動作は、デバイス１００と同様である。
【０１２８】
図１６は、第１の実施の形態におけるマッピングアルゴリズム取得処理の一例を示すフローチャートである。デバイス１００は、複数のマッピング調査要求パケットをサーバ５００に順に送信する（ステップＳ９２１）。デバイス１００は、複数のマッピング調査応答パケットを受信する（ステップＳ９２２）。そして、デバイス１００は、それらのマッピング調査応答パケットに基づいて、デバイス１００側のマッピングアルゴリズムを取得する（ステップＳ９２３）。ステップＳ９２３において、デバイス１００がセッション確立要求パケットの送信元であれば送信元マッピングアルゴリズムが取得され、宛先であれば宛先マッピングアルゴリズムが取得される。
【０１２９】
デバイス１００は、取得したマッピングアルゴリズムを通知するマッピングアルゴリズム通知パケットを生成してサーバ５００に送信する（ステップＳ９２４）。また、デバイス１００は、デバイス１０１が取得したマッピングアルゴリズムを通知するマッピングアルゴリズム通知パケットをサーバ５００から受信する（ステップＳ９２５）。ステップＳ９２５において、デバイス１００がセッション確立要求パケットの送信元であれば宛先マッピングアルゴリズムを通知するパケットが受信され、宛先であれば送信元マッピングアルゴリズムを通知するパケットが受信される。ステップＳ９２５の後、デバイス１００は、マッピングアルゴリズム取得処理を終了する。
【０１３０】
図１７は、第１の実施の形態におけるＮＡＴトラバーサル処理の一例を示すフローチャートである。デバイス１００は、判定テーブル１７０を参照して、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムの組合せに対応するフラグを取得する（ステップＳ９３５）。
【０１３１】
デバイス１００は、フラグに従って、デバイス１００自身をマスタとするか否かを判定する（ステップＳ９３６）。デバイス１００をマスタとする場合には（ステップＳ９３６：Ｙｅｓ）、デバイス１００は、外部ポート番号の予測が必要か否かを判断する。例えば、スレーブ側のマッピングアルゴリズムがエンドポイント非依存マッピングであれば、ポート番号を予測する必要がないと判断される（ステップＳ９３７）。
【０１３２】
外部ポート番号の予測が必要であれば（ステップＳ９３７：Ｙｅｓ）、デバイス１００は、スレーブ側のマッピングアルゴリズムに対応する予測アルゴリズムに基づいて、スレーブに新たに割り当てられる外部ポート番号を予測する（ステップＳ９３８）。
【０１３３】
外部ポート番号の予測が必要でない場合（ステップＳ９３７：Ｎｏ）、または、ステップＳ９３８の後、デバイス１００は、予測した外部ポート番号へ通信パケットを送信する。予測が必要ない場合には、デバイス１００は、サーバ５００を介してスレーブから受信した外部ポート番号をそのまま宛先として使用し、通信パケットを送信する（ステップＳ９３９）。
【０１３４】
デバイス１００をスレーブとする場合には（ステップＳ９３６：Ｎｏ）、デバイス１００は、スレーブ側のルータ３００において外部ポート番号の開放が必要であるか否かを判断する。例えば、スレーブ側のマッピングアルゴリズムがエンドポイント非依存マッピングであれば、外部ポート番号の開放の必要がないと判断される（ステップＳ９４０）。ポート番号の開放が必要であれば（ステップＳ９４０：Ｙｅｓ）、デバイス１００は、マスタへホールパンチングパケットを送信する（ステップＳ９４１）。
【０１３５】
ポート番号の開放が必要でない場合（ステップＳ９４０：Ｎｏ）、または、ステップＳ９４１の後、デバイス１００は、必要に応じてデバイス１００との間でパケットを送受信し、ＮＡＴトラバーサル処理を終了する。
【０１３６】
［サーバの動作例］
図１８は、第１の実施の形態におけるサーバ５００の動作の一例を示すフローチャートである。この動作は、例えば、サーバ５００にデバイス１００および１０１などのデバイスがルータ３００等を介して接続されたときに開始される。
【０１３７】
サーバ５００は、セッション確立要求パケットを受信したか否かを判断する（ステップＳ９５１）。セッション確立要求パケットを受信していなければ（ステップＳ９５１：Ｎｏ）、サーバ５００は、ステップＳ９５１に戻る。
【０１３８】
セッション確立要求パケットを受信したのであれば（ステップＳ９５１：Ｙｅｓ）、サーバ５００は、そのパケットにおいて通信対象として指定されたデバイスへ、セッション確立要求パケットを転送する（ステップＳ９５２）。
【０１３９】
そして、サーバ５００は、複数のマッピング調査応答パケットを受信したか否かを判断する（ステップＳ９５７）。マッピング調査応答パケットを受信していなければ（ステップＳ９５７：Ｎｏ）、サーバ５００はステップＳ９５７に戻る。複数のマッピング調査応答パケットを受信したのであれば（ステップＳ９５７：Ｙｅｓ）、サーバ５００は、それらのパケットに応じてマッピング調査応答パケットを生成して返信する（ステップＳ９５８）。
【０１４０】
そして、サーバ５００は、マッピングアルゴリズム通知パケットを受信したか否かを判断する（ステップＳ９５９）。マッピングアルゴリズム通知パケットを受信していなければ（ステップＳ９５９：Ｎｏ）、サーバ５００はステップＳ９５９に戻る。マッピングアルゴリズム通知パケットを受信したのであれば（ステップＳ９５９：Ｙｅｓ）、サーバ５００は、そのマッピングアルゴリズム通知パケットを転送する（ステップＳ９６０）。ステップＳ９６０の後、サーバ５００は、ステップＳ９５１に戻る。
【０１４１】
図１９は、第１の実施の形態におけるサーバおよびデバイスの動作の一例を示すシーケンス図である。この図では、デバイス１００がマスタ、デバイス１０１がスレーブと判定された場合を想定している。
【０１４２】
デバイス１０１は、デバイス１００を指定したセッション確立要求パケットをサーバ５００に送信する（ステップＳ９０４）。サーバ５００は、そのセッション確立要求パケットをデバイス１００へ転送する（ステップＳ９５２）。
【０１４３】
そして、デバイス１００は、４つのマッピング調査要求パケットを生成して順にサーバ５００へルータ３０１を介して送信する（ステップＳ９２１）。これらのパケットの送信元の内部ＩＰアドレスおよび内部ポート番号は、ルータ３０１において、外部ＩＰアドレスおよび外部ポート番号に変換される。
【０１４４】
サーバ５００は、変換された外部ＩＰアドレスおよび外部ポート番号を格納したマッピング調査応答パケットをデバイス１０１に返信する（ステップＳ９５８）。
【０１４５】
デバイス１０１は、マッピング調査応答パケットに基づいて送信元マッピングアルゴリズムを取得する（ステップＳ９２３）。デバイス１０１は、そのマッピングアルゴリズムを通知するマッピングアルゴリズム通知パケットをサーバ５００に送信する（ステップＳ９２４）。
【０１４６】
サーバ５０００は、デバイス１０１からのマッピングアルゴリズム通知パケットをデバイス１００へ転送する（ステップＳ９６０）。
【０１４７】
一方、デバイス１００も４つのマッピング調査要求パケットを順にサーバ５００へ送信し（ステップＳ９２１）、サーバ５００は、マッピング調査応答パケットをデバイス１００に返信する（ステップＳ９５８）。
【０１４８】
そして、デバイス１０１は、宛先マッピングアルゴリズムを取得し（ステップＳ９２３）、マッピングアルゴリズム通知パケットをサーバ５００に送信する（ステップＳ９２４）。サーバ５００は、デバイス１００からのマッピングアルゴリズム通知パケットをデバイス１０１へ転送する（ステップＳ９６０）。
【０１４９】
デバイス１００は、判定テーブル１７０を参照してマスタとなり、デバイス１０１はスレーブとなる。スレーブのデバイス１０１は、デバイス１００へホールパンチングパケットを送信する（ステップＳ９４１）。
【０１５０】
一方、デバイス１００は、そのホールパンチングパケットにより解放される外部ポート番号を予測する（ステップＳ９３８）。そして、デバイス１００は、予測した外部ポート番号へ通信パケットを送信する（ステップＳ９３９）。
【０１５１】
図２０は、第１の実施の形態における外部ポート番号の使用状況の一例を示す図である。図２０におけるａは、セッション確立要求パケットが送受信されるときの外部ポート番号の使用状況の一例を示す図である。ルータ３００は、デバイス１００に対して、ポート番号「８００１」とサーバ５００とを対応付けて登録しているものとする。また、ルータ３０１は、デバイス１０１に対して、ポート番号「８００１」とサーバ５００とを対応付けて登録しているものとする。
【０１５２】
デバイス１００は、セッション確立要求パケットをサーバ５００へ送信する。このセッション確立要求パケットの送信元の内部ポート番号は、ルータ３００において「８００１」に変換される。サーバ５００は、そのセッション確立要求パケットをデバイス１０１へ転送する。このセッション確立要求パケットの送信元の外部ポート番号「８００１」は、ルータ３０１においてデバイス１０１の内部ポート番号に変換される。
【０１５３】
そして、デバイス１００および１０１は、それぞれ、マッピングアルゴリズムを取得し、そのマッピングアルゴリズムをマッピングアルゴリズム通知パケットによりサーバ５００を介して互いに通知しあう。
【０１５４】
図２０におけるｂは、マッピングアルゴリズム通知パケットが送受信されるときの外部ポート番号の使用状況の一例を示す図である。このときの外部ポートの使用状況は、図２０におけるａと同様である。
【０１５５】
ここで、ルータ３００のマッピングアルゴリズムとしてアドレス依存マッピング（ＡＭ）が取得され、ルータ３０１のマッピングアルゴリズムとしてランダムマッピング（ＲＭ）が取得された場合を考える。この場合、ルータ３００のアドレス依存マッピングの方が単純であるため、デバイス１０１がマスタとして、ルータ３００においてデバイス１００に新たに割り当てられる外部ポート番号を予測する。一方、スレーブのデバイス１００は、デバイス１０１へホールパンチングパケットを送信する。
【０１５６】
図２０におけるｃは、ホールパンチングパケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ホールパンチングパケットの宛先のＩＰアドレスは、サーバ５００のＩＰアドレスと異なるため、ルータ３００は、デバイス１００に新たに外部ポート番号「８００２」を割り当てる。スレーブは、ホールパンチングパケットがルータ３０１へ届かないようにＴＴＬを調整する。
【０１５７】
マスタのデバイス１０１は、デバイス１００の直前の外部ポート番号「８００１」から、デバイス１００に新たに割り当てられる外部ポート番号「８００２」を予測する。デバイス１０１は、その外部ポート番号へ通信パケットを送信する。
【０１５８】
図２０におけるｄは、通信パケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ルータ３００において、予測した外部ポート番号「８００２」が解放されているため、通信パケットは、スレーブのデバイス１００へ届けられる。
【０１５９】
ここで、仮に、判定テーブル１７０を参照せずに、送信元であるデバイス（１００）がマスタとなり、宛先のデバイス（１０１）がスレーブとして動作する構成について考える。この場合、スレーブのデバイス１０１がホールパンチングパケットを送信し、ルータ３０１の外部ポート番号を解放する。
【０１６０】
しかし、ルータ３０１のマッピングアルゴリズムは、ランダムマッピングであるため、どの外部ポート番号が解放されるかをデバイス１００が予測することができない。したがって、デバイス１００が送信した通信パケットは、スレーブのデバイス１０１に届かず、直接通信に失敗してしまう。
【０１６１】
これに対して、デバイス１００または１０１は、双方のマッピングアルゴリズムの複雑さを比較して、単純な方のマッピングアルゴリズムに対応する予測アルゴリズムに基づいて外部ポート番号の予測を行うため、直接通信が高い確率で成功する。
【０１６２】
このように、本技術の第１の実施の形態によれば、デバイス１００または１０１は、送信元および宛先のそれぞれのマッピングアルゴリズムのうち単純な方に対応する予測アルゴリズムに基づいて外部ポート番号を生成する。このため、直接通信に成功する確率を向上させることができる。
【０１６３】
＜２．第２の実施の形態＞
［ルータの構成例］
図２１は、第２の実施の形態におけるルータ３００の一構成例を示すブロック図である。第１の実施の形態では、ルータ３００がフィルタリング処理を実行しない構成としていたが、ルータ３００においてはフィルタリング処理が行われることが多い。ルータ３００がフィルタリング処理を行う場合、デバイス１００は、そのフィルタリング処理も考慮して、マスタとするか否かを判断する。
【０１６４】
第２の実施の形態のルータ３００は、フィルタリング処理部３４０およびフィルタリングテーブル３５０をさらに備える点において第１の実施の形態と異なる。第２の実施の形態におけるルータ３０１の構成は、ルータ３００と同様である。
【０１６５】
フィルタリング処理部３４０は、パケットを通過させるか否かを判断して、通過させないパケットを破棄するフィルタリング処理を実行するものである。このフィルタリング処理部３４０は、ＬＡＮの内部から外部へのパケットを受信すると、フィルタリングテーブル３５０を参照し、そのパケットを通過させるか否かを判断する。そして、フィルタリング処理部３４０は、通過させるパケットをアドレス変換部３２０へ供給する。また、フィルタリング処理部３４０は、アドレス変換部３２０から、ＩＰアドレスおよびポート番号が変換されたパケットを受信すると、フィルタリングテーブル３５０を参照し、そのパケットを通過させるか否かを判断する。そして、フィルタリング処理部３４０は、通過させるパケットをＬＡＮの内部へ転送する。
【０１６６】
フィルタリングテーブル３５０は、パケットの送信元および宛先の組合せごとに、そのパケットを通過させるか否かを示す情報を記憶するテーブルである。
【０１６７】
ここで、フィルタリング処理においては、エンドポイント非依存フィルタリング、アドレス依存フィルタリング、および、アドレス・ポート依存フィルタリングのいずれかのフィルタリングアルゴリズムが用いられる。
【０１６８】
エンドポイント非依存フィルタリングでは、ＬＡＮの内部のデバイスＳから外部へパケットが一旦送信されると、ルータ３００は、パケットの送信元に依存せずに、外部からデバイスＳへのパケットを通過させる。
【０１６９】
ここで、（内部ＩＰアドレス：内部ポート番号）が（Ｘ１：ｘ１）のデバイスと、（外部ＩＰアドレス：外部ポート番号）が（Ｙ１：ｙ１）のデバイスと、（外部ＩＰアドレス：外部ポート番号）が（Ｙ２：ｙ２）のデバイスとがある場合を考える。
【０１７０】
例えば、初期状態において（Ｘ１：ｘ１）から（Ｙ１：ｙ１）へパケットが送信されると、フィルタリングテーブル３５０において、宛先を（Ｘ１：ｘ１）とする外部からのパケットが送信元に関わらずに許可される。このため、ルータ３００は、（Ｙ１：ｙ１）から（Ｘ１：ｘ１）へのパケットと、送信元の異なる（Ｙ２：Ｙ２）から（Ｘ１：ｘ１）へのパケットとのいずれも通過させる。
【０１７１】
次に、アドレス依存フィルタリングでは、ＬＡＮの内部のデバイスＳから外部のデバイスＤへパケットが送信されると、ルータ３００は、ＩＰアドレスがデバイスＤと同一の送信元から、デバイスＳへのパケットのみを通過させる。
【０１７２】
例えば、初期状態において（Ｘ１：ｘ１）から（Ｙ１：ｙ１）へパケットが送信されると、フィルタリングテーブル３５０において、送信元をＹ１とし、宛先を（Ｘ１：ｘ１）とする外部からのパケットが許可される。このため、ルータ３００は、（Ｙ１：ｙ１）から（Ｘ１：ｘ１）へのパケットを通過させるが、ＩＰアドレスの異なる（Ｙ２：ｙ２）から（Ｘ１：ｘ１）へのパケットを通過させない。また、ポート番号の異なる（Ｙ１：ｙ２）から（Ｘ１：ｘ１）へのパケットは、ＩＰアドレスが同一であるから通過させる。
【０１７３】
そして、アドレス・ポート依存フィルタリングでは、ＬＡＮの内部のデバイスＳから外部のデバイスＤへパケットが送信されると、ルータ３００は、ＩＰアドレスおよびポート番号がデバイスＤと同一の送信元からデバイスＳへのパケットのみを通過させる。
【０１７４】
例えば、初期状態において（Ｘ１：ｘ１）から（Ｙ１：ｙ１）へパケットが送信されると、フィルタリングテーブル３５０において、送信元を（Ｙ１：ｙ１）とし、宛先を（Ｘ１：ｘ１）とする外部からのパケットが許可される。このため、ルータ３００は、（Ｙ１：ｙ１）から（Ｘ１：ｘ１）へのパケットを通過させるが、ＩＰアドレスの異なる（Ｙ２：Ｙ２）から（Ｘ１：ｘ１）へのパケットを通過させない。また、ルータ３００は、（Ｙ１：ｙ２）から（Ｘ１：ｘ１）へのパケットも、ポート番号が異なるために通過させない。
【０１７５】
このように、これらのフィルタリングアルゴリズムは、それぞれ複雑さが異なる。送信元が変わってもパケットを通過させるエンドポイント非依存マッピングよりも、送信元のＩＰアドレスが変わると通過させないアドレス依存マッピングの方が複雑である。送信元のポート番号が変わってもパケットを通過させるアドレス依存マッピングよりも、送信元のポート番号が変わると通過させないアドレス・ポート依存マッピングの方が複雑である。
【０１７６】
つまり、複雑さの度合いが高い順に並べると、アドレス・ポート依存フィルタリング＞アドレス依存フィルタリング＞エンドポイント非依存フィルタリングの順となる。
【０１７７】
フィルタリングアルゴリズムが複雑であるほど、通信パケットを通過させることが困難となる。具体的には、エンドポイント非依存フィルタリングでは、送信元が変わってもパケットを通過させるため、フィルタリングの存在をほぼ考慮しなくてよい。しかし、アドレス依存フィルタリングでは、送信元のＩＰアドレスが変わるとパケットが破棄されるため、スレーブは、ホールパンチングパケットにより、マスタからの通信パケットを許可させる必要がある。また、アドレス・ポート依存フィルタリングでは、スレーブは、マスタ側で解放される外部ポート番号を予測して、その外部ポート番号へホールパンチングパケットを送信する必要が生じる。
【０１７８】
このため、デバイス１００または１０１は、単純な方のアルゴリズムによりフィルタリングを行うルータへ通信パケットを送信することが望ましい。
【０１７９】
例えば、デバイス１００に対応するルータ３００のフィルタリングアルゴリズムより、デバイス１０１に対応するルータ３０１のフィルタリングアルゴリズムが複雑である場合を考える。この場合は、デバイス１０１がマスタとなり、単純なフィルタリングを行う方のルータ３００を介して通信パケットを送信することが望ましい。
【０１８０】
［フィルタリングテーブルの構成例］
図２２は、第２の実施の形態におけるフィルタリングテーブル３５０の一構成例を示す図である。このフィルタリングテーブル３５０には、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレスおよび宛先ポート番号の組合せごとに、そのパケットを許可させるか否かの「動作」を示す情報が記憶される。動作は、例えば、パケットの通過の「許可」や「禁止」を含む。
【０１８１】
例えば、初期状態において、内部ＩＰアドレス「１９２．１６８．０．１」および外部ポート番号「５０００」のＬＡＮ内のデバイスから、外部へパケットが送信された場合を考える。そのパケットの宛先の外部ＩＰアドレスが「Ｘ．Ｘ．Ｘ．１」であり、外部ポート番号が「８０００」であったとする。
【０１８２】
この場合、エンドポイント非依存フィルタリングでは、送信元のＩＰアドレスおよびポート番号の両方を「ａｎｙ」とし、宛先を「１９２．１６８．０．１」および「５０００」とするパケットについて許可することを示す情報が登録される。「ａｎｙ」は、どのＩＰアドレスまたはポート番号も許可や禁止の対象とすることを意味する。
【０１８３】
アドレス依存フィルタリングでは、送信元を「Ｘ．Ｘ．Ｘ．１」および「ａｎｙ」とし、宛先を「１９２．１６８．０．１」および「５０００」とするパケットについて許可することを示す情報が登録される。
【０１８４】
アドレス・ポート依存フィルタリングでは、送信元を「Ｘ．Ｘ．Ｘ．１」および「８０００」とし、宛先を「１９２．１６８．０．１」および「５０００」とするパケットについて許可することを示す情報が登録される。
【０１８５】
［サーバの構成例］
図２３は、第２の実施の形態におけるサーバ５００の一構成例を示すブロック図である。第２の実施の形態のサーバ５００は、フィルタリングアルゴリズム取得部５３０およびフィルタリングアルゴリズム通知部５４０をさらに備える点において第１の実施の形態と異なる。
【０１８６】
フィルタリングアルゴリズム取得部５３０は、ルータのそれぞれにおけるフィルタリングアルゴリズムを取得するものである。このフィルタリングアルゴリズム取得部５３０は、転送部５１０から、セッション確立要求パケットの送信元および宛先のそれぞれについて、外部ＩＰアドレスおよび外部ポート番号を受け取る。
【０１８７】
フィルタリングアルゴリズム取得部５３０は、それらの外部ＩＰアドレスおよび外部ポート番号へ、返信を要求する複数のパケットをフィルタリング調査要求パケットとして送信する。前述したように、送信元が変わったときのフィルタリング方法は、フィルタリングアルゴリズムごとに異なる。このアルゴリズムの違いを判断するため、複数のフィルタリング調査要求パケットのそれぞれは、サーバ５００により異なる送信元から送信される。
【０１８８】
例えば、送信元の異なる４つのフィルタリング調査要求パケットＲｑｆ１、Ｒｑｆ２、Ｒｑｆ３およびＲｑｆ４が順に送信される。Ｒｑｆ２は、送信元のＩＰアドレスがＲｑｆ１と同一で、送信元のポート番号がＲｑｆ１と異なるパケットである。Ｒｑｆ３は、送信元のＩＰアドレスがＲｑｆ１と異なり、送信元のポート番号がＲｑｆ１と同一のパケットである。Ｒｑｆ４は、送信元のＩＰアドレスおよびポート番号の両方がＲｑｆ１と異なるパケットである。
【０１８９】
フィルタリングアルゴリズム取得部５３０は、フィルタリング調査要求パケットＲｑｆ１、Ｒｑｆ２、Ｒｑｆ３およびＲｑｆ４に対して返信されたフィルタリング調査応答パケットＲｐｆ１、Ｒｐｆ２、Ｒｐｆ３およびＲｐｆ４を受信する。ただし、フィルタリングアルゴリズムによっては、いくつかの応答パケットを受信することができない場合がある。フィルタリングアルゴリズム取得部５３０は、応答パケットの受信状況に基づいて、フィルタリングアルゴリズムを取得する。
【０１９０】
具体的には、フィルタリング調査応答パケットＲｐｆ１、Ｒｐｆ２、Ｒｐｆ３およびＲｐｆ４の全てが受信された場合には、エンドポイント非依存フィルタリングと判断される。このエンドポイント非依存フィルタリングでは、送信元が変わっても、パケットの通過が許可されるためである。
【０１９１】
また、フィルタリング調査応答パケットＲｐｆ１およびＲｐｆ２が受信されたがフィルタリング調査応答パケットＲｐｆ３およびＲｐｆ４が受信されなかった場合には、アドレス依存フィルタリングであると判断される。このアドレス依存フィルタリングでは、送信元のＩＰアドレスが変わると、パケットの通過が許可されないためである。
【０１９２】
また、フィルタリング調査応答パケットＲｐｆ１のみが受信された場合には、アドレス・ポート依存フィルタリングであると判断される。このアドレス・ポート依存フィルタリングでは、送信元のＩＰアドレスまたはポート番号が変わると、パケットの通過が許可されないためである。
【０１９３】
フィルタリングアルゴリズム取得部５３０は、セッション確立要求パケットの送信元側のルータと、宛先側のルータとのそれぞれのフィルタリングアルゴリズムを取得する。以下、送信元側のルータのフィルタリングアルゴリズムを「送信元フィルタリングアルゴリズム」と称し、宛先側のルータのフィルタリングアルゴリズムを「宛先フィルタリングアルゴリズム」と称する。フィルタリングアルゴリズム取得部５３０は、送信元および宛先の外部ＩＰアドレスおよび外部ポート番号とともに、取得したフィルタリングアルゴリズムをフィルタリングアルゴリズム通知部５４０に供給する。
【０１９４】
なお、フィルタリングアルゴリズム取得部５３０は、フィルタリング調査要求パケットの送信と、応答パケットの受信とによりフィルタリングアルゴリズムを取得しているが、この構成に限定されない。例えば、フィルタリングアルゴリズム取得部５３０は、ＳＴＵＮプロトコルを使用してフィルタリングアルゴリズムを取得してもよい。
【０１９５】
フィルタリングアルゴリズム通知部５４０は、取得したフィルタリングアルゴリズムをデバイスに通知するものである。このフィルタリングアルゴリズム通知部５４０は、送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムを格納したフィルタリングアルゴリズム通知パケットを生成する。そして、フィルタリングアルゴリズム通知部５４０は、そのフィルタリングアルゴリズム通知パケットを、セッション確立要求パケットの送信元および宛先のそれぞれへ送信する。
【０１９６】
図２４は、第２の実施の形態におけるフィルタリング調査要求パケットのデータ構成の一例を示す図である。図２４におけるａは、フィルタリング調査要求パケットＲｑｆ１のデータ構造の一例を示す図である。このパケットは、ヘッダにおいて送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレスおよび宛先ポート番号を含む。この送信元ＩＰアドレスおよび送信元ポート番号は、サーバ５００のＩＰアドレスおよびポート番号である。また、宛先ＩＰアドレスおよび宛先ポート番号は、ルータ３００または３０１の外部ＩＰアドレスおよび外部ポート番号である。
【０１９７】
図２４におけるｂは、フィルタリング調査要求パケットＲｑｆ２のデータ構造の一例を示す図である。フィルタリング調査要求パケットＲｑｆ２は、送信元ポート番号が異なる点以外は、フィルタリング調査要求パケットＲｑｆ１と同様の構成である。
【０１９８】
図２４におけるｃは、フィルタリング調査要求パケットＲｑｆ３のデータ構造の一例を示す図である。フィルタリング調査要求パケットＲｑｆ３は、送信元ＩＰアドレスが異なる点以外は、フィルタリング調査要求パケットＲｑｆ１と同様の構成である。
【０１９９】
図２４におけるｄは、フィルタリング調査要求パケットＲｑｆ４のデータ構造の一例を示す図である。フィルタリング調査要求パケットＲｑｆ４は、送信元ＩＰアドレスおよび送信元ポート番号が異なる点以外は、フィルタリング調査要求パケットＲｑｆ１と同様の構成である。
【０２００】
これらのフィルタリング調査要求パケットに対するフィルタリング調査応答パケットから、サーバ５００は、ルータ３００および３０１のそれぞれのフィルタリングアルゴリズムを取得することができる。
【０２０１】
図２５は、第２の実施の形態におけるエンドポイント非依存フィルタリングおよびアドレス依存フィルタリングにより処理されるパケットの一例を示す図である。図２５におけるａは、エンドポイント非依存フィルタリングにより処理されるパケットの一例を示す図である。エンドポイント非依存フィルタリングでは、送信元の異なる４つのフィルタリング調査要求パケットの全ての通過が許可される。このため、全てのフィルタリング調査要求パケットに対する応答パケットが受信される。
【０２０２】
図２５におけるｂは、アドレス依存フィルタリングにより処理されるパケットの一例を示す図である。アドレス依存フィルタリングでは、送信元のＩＰアドレスが同一のフィルタリング調査要求パケットＲｑｆ１およびＲｑｆ２の通過が許可される。しかし、送信元のＩＰアドレスがＲｑｆ１と異なるフィルタリング調査要求パケットＲｑｆ３およびＲｑｆ４は許可されずに破棄される。このため、サーバ５００は、フィルタリング調査応答パケットＲｐｆ１およびＲｐｆ２のみを受信することができる。
【０２０３】
図２６は、第２の実施の形態におけるアドレス・ポート依存フィルタリングより処理されるパケットの一例を示す図である。アドレス・ポート依存フィルタリングでは、送信元のＩＰアドレスまたはポート番号がＲｑｆ１と異なるフィルタリング調査要求パケットＲｑｆ２、Ｒ１ｆ３およびＲｑｆ４は許可されずに破棄される。このため、サーバ５００は、フィルタリング調査応答パケットＲｐｆ１のみを受信することができる。
【０２０４】
図２５および図２６に例示したように、フィルタリングアルゴリズムによりフィルタリング調査応答パケットの受信状況が異なるため、サーバ５００は、その受信状況から、フィルタリングアルゴリズムを取得することができる。
【０２０５】
図２７は、第２の実施の形態におけるフィルタリングアルゴリズム通知パケットのデータ構成の一例を示す図である。このフィルタリングアルゴリズム通知パケットは、送信元フィルタリングアルゴリズム情報および宛先フィルタリングアルゴリズム情報を含む。送信元フィルタリングアルゴリズム情報は、送信元アルゴリズムを識別するための情報である。宛先フィルタリングアルゴリズム情報は、宛先アルゴリズムを識別するための情報である。
【０２０６】
［デバイスの構成例］
図２８は、第２の実施の形態におけるデバイス１００の一構成例を示すブロック図である。第２の実施の形態のデバイス１００は、フィルタリング調査応答部１３０およびフィルタリングアルゴリズム取得部１４０をさらに備え、判定テーブル１７０の代わりに判定テーブル１７１を備える点において第１の実施の形態と異なる。第２の実施の形態のデバイス１０１の構成は、デバイス１００と同様である。
【０２０７】
フィルタリング調査応答部１３０は、フィルタリング調査要求パケットに対して返信するものである。このフィルタリング調査応答部１３０は、サーバ５００からフィルタリング調査要求パケットを受信すると、フィルタリング調査応答パケットを生成してサーバ５００に返信する。
【０２０８】
フィルタリングアルゴリズム取得部１４０は、送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムを取得するものである。このフィルタリングアルゴリズム取得部１４０は、フィルタリングアルゴリズム通知パケットを受信すると、そのパケットから送信元および宛先のそれぞれのフィルタリングアルゴリズムを取得してマスタ／スレーブ判定部１６０に供給する。
【０２０９】
また、第２の実施の形態の判定テーブル１７１には、送信元マッピングアルゴリズム、送信元フィルタリングアルゴリズム、宛先マッピングアルゴリズムおよび宛先フィルタリングアルゴリズムの組合せごとに、フラグが記憶される。
【０２１０】
なお、デバイス１００がフィルタリング調査応答部１３０を備える構成としているが、デバイス１００以外のデバイスがデバイス１００の代わりにフィルタリング調査応答部１３０を備える構成としてもよい。ルータ３００のフィルタリングを調査するためのフィルタリング調査要求パケットに対する返信は、ルータ３００の配下のデバイスであれば、いずれが行ってもよいためである。
【０２１１】
［判定テーブルの構成例］
図２９は、第２の実施の形態における判定テーブル１７１の一構成例を示す図である。この判定テーブル１７１には、送信元マッピングアルゴリズム、送信元フィルタリングアルゴリズム、宛先マッピングアルゴリズムおよび宛先フィルタリングアルゴリズムの組合せごとに、フラグが記憶される。
【０２１２】
判定テーブル１７１において「ＩＦ」は、エンドポイント非依存フィルタリング（Endpoint-Independent Filtering）を示す。「ＡＦ」は、アドレス依存フィルタリング（Address-Dependent Filtering）を示す。「ＰＦ」は、アドレス・ポート依存フィルタリング（Address and Port-Dependent Filtering）を示す。
【０２１３】
デバイスＡ側の宛先フィルタリングアルゴリズムがデバイスＢ側の送信元フィルタリングアルゴリズムより複雑である場合、デバイスＡをマスタとすることを示す情報が記録される。デバイスＢ側のフィルタリングアルゴリズムの方が単純であり、デバイスＡからデバイスＢへの通信パケットを通過させやすいためである。
【０２１４】
逆に、デバイスＢ側の送信元フィルタリングアルゴリズムがデバイスＡ側の宛先フィルタリングアルゴリズムより複雑である場合、デバイスＢをマスタとすることを示す情報が記録される。
【０２１５】
また、デバイスＢ側の宛先フィルタリングアルゴリズムとデバイスＡ側の送信元フィルタリングアルゴリズムとが同一である場合、マッピングアルゴリズムに基づいて、マスタが決定される。
【０２１６】
宛先フィルタリングアルゴリズムおよび送信元フィルタリングアルゴリズムが同一で、宛先マッピングアルゴリズムが送信元マッピングアルゴリズムより複雑である場合、デバイスＡをマスタとすることを示す情報が記録される。デバイスＢ側のマッピングアルゴリズムの方が単純であり、デバイスＡの方がデバイスＢよりも外部ポート番号を予測しやすいためである。
【０２１７】
宛先フィルタリングアルゴリズムおよび送信元フィルタリングアルゴリズムが同一で、宛先マッピングアルゴリズムが送信元マッピングアルゴリズムより複雑である場合、デバイスＢをマスタとすることを示す情報が記録される。また、宛先フィルタリングアルゴリズムおよび送信元フィルタリングアルゴリズムが同一で、宛先マッピングアルゴリズムおよび送信元マッピングアルゴリズムも同一である場合、デバイスＢをマスタとすることを示す情報が記録される。
【０２１８】
なお、「ＥＲＲ」は、直接通信が困難であることを示す。例えば、ランダムマッピングにより割り当てられる外部ポート番号をマスタが予測する場合に、「ＥＲＲ」が記載される。ランダムマッピングにより割り当てられる外部ポート番号をマスタが正確に予測することはできないためである。この場合には、デバイス１００は、例えば、サーバ５００を介してデバイス１０１との間で通信を行う。
【０２１９】
［デバイスの動作例］
図３０は、第２の実施の形態におけるデバイス１００の動作の一例を示すフローチャートである。第２の実施の形態のデバイス１００の動作は、ステップＳ９１０をさらに実行する点において第１の実施の形態と異なる。第２の実施の形態のデバイス１０１の動作はデバイス１００と同様である。
【０２２０】
セッション確立要求パケットを受信した場合（ステップＳ９０２：Ｙｅｓ）、または、ステップＳ９０４の後、デバイス１００は、フィルタリングアルゴリズムを取得するためのフィルタリングアルゴリズム取得処理を実行する（ステップＳ９１０）。そして、デバイス１００は、マッピングアルゴリズム取得処理（ステップＳ９２０）およびＮＡＴトラバーサル処理（ステップＳ９３０）を実行する。
【０２２１】
図３１は、第２の実施の形態におけるフィルタリングアルゴリズム取得処理の一例を示すフローチャートである。デバイス１００は、サーバ５００から、複数のフィルタリング調査要求パケットを受信したか否かを判断する（ステップＳ９１１）。フィルタリング調査要求パケットを受信していなければ（ステップＳ９１１：Ｎｏ）、デバイス１００はステップＳ９１１に戻る。
【０２２２】
複数のフィルタリング調査要求パケットを受信したのであれば（ステップＳ９１１：Ｙｅｓ）、デバイス１００は、それらに応じてフィルタリング調査応答パケットを生成して送信する（ステップＳ９１２）。そして、デバイス１００は、フィルタリングアルゴリズム通知パケットをサーバ５００から受信し、そのパケットから送信元および宛先のフィルタリングアルゴリズムを取得する（ステップＳ９１３）。ステップＳ９１３の後、デバイス１００は、フィルタリングアルゴリズム取得処理を終了する。
【０２２３】
［サーバの動作例］
図３２は、第２の実施の形態におけるサーバ５００の動作の一例を示すフローチャートである。第２の実施の形態のサーバ５００の動作は、ステップＳ９５３乃至Ｓ９５６をさらに実行する点において第１の実施の形態と異なる。
【０２２４】
サーバ５００は、セッション確立要求パケットを転送し（ステップＳ９５２）、複数のフィルタリング調査要求パケットを、送信元および宛先のデバイスのそれぞれに送信する（ステップＳ９５３）。サーバ５００は、送信元および宛先のデバイスのそれぞれから、フィルタリング調査応答パケットを受信する（ステップＳ９５４）。サーバ５００は、それらの応答パケットの受信状況から、送信元フィルタリングアルゴリズムおよび宛先フィルタリングアルゴリズムを取得する（ステップＳ９５５）。
【０２２５】
そして、サーバ５００は、取得したフィルタリングアルゴリズムを格納したフィルタリングアルゴリズム通知パケットを生成して送信元および宛先のそれぞれのデバイスへ送信する（ステップＳ９５６）。ステップＳ９５６の後、サーバ５００は、ステップＳ９５７乃至Ｓ９６０を実行する。
【０２２６】
図３３は、第２の実施の形態における外部ポート番号の使用状況の一例を示す図である。図３３におけるａは、デバイス１０１（送信元）がデバイス１００（宛先）へセッション確立要求パケットを送信するときの外部ポート番号の使用状況の一例を示す図である。ルータ３００は、デバイス１００に対して、ポート番号「８００１」とサーバ５００とを対応付けてアドレス変換テーブルに登録しているものとする。また、ルータ３０１は、デバイス１０１に対して、ポート番号「８００１」とサーバ５００とを対応付けてアドレス変換テーブルに登録しているものとする。
【０２２７】
図３３におけるｂは、マッピングアルゴリズム通知パケットが送受信されるときの外部ポート番号の使用状況の一例を示す図である。図２０におけるｂでは、図２０におけるａと比較して外部ポートの使用状況に変更はない。
【０２２８】
デバイス１００および１０１は、送信元マッピングアルゴリズム、送信元フィルタリングアルゴリズム、宛先マッピングアルゴリズムおよび宛先フィルタリングアルゴリズムを取得する。
【０２２９】
ここで、送信元マッピングアルゴリズムおよび宛先マッピングアルゴリズムとしてアドレス依存マッピング（ＡＭ）が取得されたものとする。また、ルータ３００における宛先フィルタリングアルゴリズムとしてアドレス・ポート依存フィルタリング（ＰＦ）が取得されたものとする。そして、ルータ３０１における送信元フィルタリングアルゴリズムとしてエンドポイント非依存フィルタリング（ＩＦ）が取得されたものとする。
【０２３０】
この場合、単純なエンドポイント非依存フィルタリングの方が、通信パケットを通過させやすいため、デバイス１００がマスタとなり、デバイス１０１がスレーブとなる。スレーブのデバイス１０１は、デバイス１００へホールパンチングパケットを送信する。
【０２３１】
図３３におけるｃは、ホールパンチングパケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ホールパンチングパケットの宛先のＩＰアドレスは、サーバ５００のＩＰアドレスと異なるため、ルータ３００は、デバイス１００に新たに外部ポート番号「８００２」を割り当てる。
【０２３２】
マスタのデバイス１００は、デバイス１００の直前の外部ポート番号「８００１」から、デバイス１００に新たに割り当てられる外部ポート番号「８００２」を予測し、その外部ポート番号へ通信パケットを送信する。
【０２３３】
図３３におけるｄは、通信パケットが送信されたときの外部ポート番号の使用状況の一例を示す図である。ルータ３００において、予測した外部ポート番号「８００２」が解放されているため、通信パケットは、スレーブのデバイス１００へ届けられる。
【０２３４】
ここで、仮に、判定テーブル１７１を参照せずに、送信元のデバイス（１０１）がマスタとなり、宛先のデバイス（１００）がスレーブとして動作する構成について考える。この構成では、スレーブのデバイス１００がホールパンチングパケットを送信し、ルータ３００の外部ポート番号を解放する。
【０２３５】
しかし、ルータ３００のフィルタリングアルゴリズムは、アドレス・ポート依存フィルタリングである。このため、スレーブがマスタ宛に送信するホールパンチングパケットの送信先ポート番号とマスタが送信する通信パケットの送信元ポート番号が一致する必要がある。且つ、スレーブがマスタ宛のホールパンチングパケットを送信する時にルータ３００が割り当てる外部ポート番号とマスタが送信する通信パケットの送信元ポートとが一致する必要がある。したがって、直接通信に失敗する確率が高くなってしまう。
【０２３６】
これに対して、デバイス１００または１０１は、双方のフィルタリングアルゴリズムの複雑さを比較して、単純な方のフィルタリングを行うルータにおける外部ポート番号を予測する。したがって、直接通信に成功する確率を向上させることができる。
【０２３７】
このように、本技術の第２の実施の形態によれば、デバイス１００または１０１は、フィルタリングアルゴリズムが単純な方のルータにおいて新たに割り当てられる外部ポート番号を生成するため、直接通信に成功する確率を向上させることができる。
【０２３８】
＜３．第３の実施の形態＞
［デバイスの構成例］
図３４は、第３の実施の形態におけるデバイス１００の一構成例を示すブロック図である。第２の実施の形態では、デバイス１００は、デバイス１００自身が接続されたネットワークのタイプに関わらず、マスタとするか否かの判定を行っていた。しかし、ネットワークのタイプによっては、その判定を行わなくてよい場合もある。例えば、ＮＡＴトラバーサルを行わなくてもよい場合や、ＮＡＴトラバーサルが不可能である場合などである。第３の実施の形態のデバイス１００は、ネットワークのタイプを取得してから、必要に応じてマスタとするか否かを判定する点において第２の実施の形態と異なる。
【０２３９】
具体的には、第３の実施の形態のデバイス１００は、ネットワークタイプ判定部１１０およびパケット送受信部１２０をさらに備える点において第２の実施の形態と異なる。第２の実施の形態におけるデバイス１０１の構成は、デバイス１００と同様である。
【０２４０】
ネットワークタイプ判定部１１０は、デバイス１００が直接接続されているネットワークの種別をネットワークタイプとして判定するものである。ここで、ネットワークタイプは、タイプＴ１、Ｔ２、Ｔ３、Ｔ４およびＴ５に分類される。
【０２４１】
ネットワークタイプ判定部１１０は、まず、通信対象のデバイス１０１がデバイス１００と同一のＬＡＮに接続されているか否かを判断する。デバイス１０１が同一のＬＡＮ内のデバイスであれば、ネットワークタイプ判定部１１０は、ネットワークタイプがタイプＴ１であると判断する。このタイプＴ１の場合、ＮＡＴトラバーサルを行わずとも、デバイス１００および１０１は直接通信が可能である。
【０２４２】
ネットワークタイプ判定部１１０は、タイプＴ１についての判定結果をフィルタリングアルゴリズム取得部１４０、マッピングアルゴリズム取得部１５０、マスタ／スレーブ判定部１６０およびパケット送受信部１２０に通知する。タイプＴ１の場合、フィルタリングアルゴリズム取得部１４０は、フィルタリングアルゴリズムを取得せず、マッピングアルゴリズム取得部１５０はマッピングアルゴリズムを取得しない。また、マスタ／スレーブ判定部１６０は、マスタとするか否かの判定を行わない。タイプＴ１ではＮＡＴトラバーサルを行う必要がないためである。タイプＴ１の場合、パケット送受信部１２０が、直接通信部１８０の代わりにデバイス１０１と直接通信を行う。
【０２４３】
次に、タイプＴ１でない場合、ネットワークタイプ判定部１１０は、マッピングアルゴリズム取得部１５０からマッピングアルゴリズム通知パケットを受け取り、デバイス１００がＷＡＮ４００に直接接続されているか否かを判断する。デバイス１００がＷＡＮ４００に直接接続されていれば、ネットワークタイプ判定部１１０は、ネットワークタイプがタイプＴ２であると判断する。このタイプＴ２の場合、デバイス１００のＩＰアドレスは変換されることがないため、デバイス１０１が外部ポート番号を予測する必要がなくなる。デバイス１０１からデバイス１００へ通信用パケットを送信すれば確実に通信可能になるため、デバイス１００がスレーブ、デバイス１０１がマスタとなる。したがって、デバイス１００は、判定テーブル１７１を参照して、マスタとするか否かを判定する必要がなくなる。
【０２４４】
ネットワークタイプ判定部１１０は、タイプＴ２についての判定結果をマスタ／スレーブ判定部１６０に通知する。タイプＴ１の場合、マスタ／スレーブ判定部１６０は、判定テーブル１７１を参照せずに、デバイス１０１をマスタと判定する。
【０２４５】
次に、タイプＴ１およびＴ２のいずれでもない場合、ネットワークタイプ判定部１１０は、マッピングアルゴリズム通知パケットに基づいてデバイス１００の最上位のルータとデバイス１０１の最上位のルータとが同一であるか否かを判断する。そして、最上位のルータが同一である場合には、ネットワークタイプ判定部１１０は、最上位のルータがヘアピン機能を有するか否かを判断する。
【０２４６】
ここで、ヘアピン機能とは、ルータのＬＡＮ側からＷＡＮ側の外部ＩＰアドレスへパケットが送信されたとき、ルータが再びＬＡＮ側にパケットを転送する機能である。ヘアピン機能は、ＮＡＴループバックやＩＰループバックとも呼ばれる。最上位のルータが同一である場合には、ＬＡＮ内のデバイス１００および１０１の一方から、ルータの外部ＩＰアドレスへ送信したパケットを、ＬＡＮ内の他方へ転送する必要がある。ヘアピン機能がないと、この転送が行われず、ＮＡＴトラバーサルを実現することができなくなる。
【０２４７】
最上位のルータが異なる場合には、ネットワークタイプ判定部１１０は、ネットワークタイプがタイプＴ３であると判断する。最上位のルータが同一であり、かつ、その最上位のルータがヘアピン機能を有する場合には、ネットワークタイプ判定部１１０は、ネットワークタイプがタイプＴ４であると判断する。最上位のルータが同一であり、かつ、その最上位のルータがヘアピン機能を有しない場合には、ネットワークタイプ判定部１１０は、ネットワークタイプがタイプＴ５であると判断する。タイプＴ３およびＴ４では、ＮＡＴトラバーサルが可能であるが、タイプＴ５ではＮＡＴラバーサルを実現することができないために直接通信を行うことができない。
【０２４８】
ネットワークタイプ判定部１１０は、タイプＴ５についての判定結果を、パケット送受信部１２０およびマスタ／スレーブ判定部１６０に通知する。
【０２４９】
タイプＴ５である場合、マスタ／スレーブ判定部１６０は、マスタとする否かを判定しない。前述したように、ＮＡＴトラバーサルが不可能であるためである。
【０２５０】
タイプＴ５の場合、パケット送受信部１２０は、サーバ５００を介してデバイス１０１との間の通信を行う。この場合、サーバ５００は、例えば、ＴＵＲＮ（Traversal Using Relay NAT）を使用して、データを中継する。なお、サーバ５００は、独自プロトコルを使用してデータを中継してもよい。
【０２５１】
［ネットワークタイプ判定部の構成例］
図３５は、第３の実施の形態におけるネットワークタイプ判定部１１０の一構成例を示すブロック図である。このネットワークタイプ判定部１１０は、隣接デバイス検出部１１１、アドレスタイプ判定部１１２およびヘアピン機能調査部１１３を備える。
【０２５２】
隣接デバイス検出部１１１は、通信対象のデバイス１０１が、デバイス１００自身と同一のＬＡＮに接続されたデバイス（以下、「隣接デバイス」と称する）であるか否かを判断するものである。隣接デバイス検出部１１１は、デバイスを特定するための情報（デバイス名称やユーザ名称など）の通知を要求するパケットをサーチパケットとしてＬＡＮ内にブロードキャストする。サーチパケットは、例えば、ＳＳＤＰ（Simple Service Discovery Protocol）を使用して送信される。なお、独自プロトコルを用いて、サーチパケットを定義してもよい。
【０２５３】
隣接デバイス検出部１１１は、サーチパケットに対するサーチ応答パケットを受信し、そのパケットにより通知されたデバイスが通信対象のデバイス１０１であるか否かを判断する。サーチ応答パケットが、通信対象のデバイス１０１からのパケットであれば、隣接デバイス検出部１１１は、隣接デバイスを検出する。隣接デバイス検出部１１１は、検出結果（すなわち、タイプＴ１であるか否かの判定結果）をフィルタリングアルゴリズム取得部１４０、マッピングアルゴリズム取得部１５０、マスタ／スレーブ判定部１６０およびパケット送受信部１２０に通知する。また、隣接デバイス検出部１１１は、検出結果をアドレスタイプ判定部１１２にも通知する。ここで、隣接デバイスを検出した場合には、隣接デバイス検出部１１１は、その内部ＩＰアドレスおよび内部ポート番号もパケット送受信部１２０に通知する。
【０２５４】
アドレスタイプ判定部１１２は、デバイス１０１自身のＩＰアドレスが内部アドレスであるか否かを判定するものである。アドレスタイプ判定部１１２は、隣接デバイスが検出されなかった場合に、デバイス１００自身のＩＰアドレスを「ｉｐｃｏｎｆｉｇ」コマンドの実行などにより取得する。アドレスタイプ判定部１１２は、取得したＩＰアドレスがグローバルＩＰアドレスであるか否かを判定する。ＩＰアドレスがプライベートＩＰアドレスである場合、アドレスタイプ判定部１１２は、デバイス１００自身のＩＰアドレスが内部ＩＰアドレスであると判定する。
【０２５５】
一方、ＩＰアドレスがグローバルＩＰアドレスである場合、アドレスタイプ判定部１１２は、デバイス１００の生成したマッピングアルゴリズム通知パケットを参照して、サーバ５００が取得したデバイス１００の外部ＩＰアドレスを取得する。その外部ＩＰアドレスが、アドレスタイプ判定部１１２が取得したグローバルＩＰアドレスと一致するか否かにより、アドレスタイプ判定部１１２は、ルータによりデバイス１００のＩＰアドレスが変換されたか否かを判断する。ＩＰアドレス変換がされていない（すなわち、一致する場合）場合、アドレスタイプ判定部１１２は、デバイス１００自身のＩＰアドレスが外部ＩＰアドレスである（言い換えれば、ＷＡＮに直接接続されている）と判定する。アドレスタイプ判定部１１２は、外部ＩＰドレスであるか否かの判定結果（すなわち、タイプＴ２であるか否かの判定結果）をマスタ／スレーブ判定部１６０およびヘアピン機能調査部１１３へ通知する。
【０２５６】
ヘアピン機能調査部１１３は、最上位のルータがヘアピン機能を有するか否かを調査するものである。このヘアピン機能調査部１１３は、デバイス１００自身のＩＰアドレスが内部ＩＰアドレスである場合に、マッピングアルゴリズム通知パケットに基づいて、最上位のルータが同一であるか否かを判断する。
【０２５７】
具体的には、ヘアピン機能調査部１１３は、デバイス１００のマッピングアルゴリズム通知パケットから、送信元ＩＰアドレスを取得する。この送信元ＩＰアドレスは、サーバ５００が受信したマッピング調査要求パケットの送信元のＩＰアドレスであり、デバイス１００の最上位のルータにおけるＩＰアドレスに相当する。また、ヘアピン機能調査部１１３は、デバイス１０１のマッピングアルゴリズム通知パケットから、送信元ＩＰアドレスを取得する。この送信元ＩＰアドレスは、デバイス１０１の最上位のルータにおけるＩＰドレスに相当する。これらの送信元ＩＰアドレスが一致すれば、最上位のルータが同一であると判断される。
【０２５８】
最上位のルータが同一であれば、ヘアピン機能調査部１１３は、マッピングアルゴリズム通知パケットから取得したデバイス１００の外部ポート番号とは異なる外部ポート番号を生成する。ヘアピン機能調査部１１３は、その外部ポート番号と、デバイス１００自身に割り当てられた外部ＩＰアドレスとからなる宛先へのパケットをヘアピン調査要求パケットとして送信する。ルータ３００がヘアピン機能を有していれば、このヘアピン調査要求パケットは、デバイス１００自身へ転送（すなわち、ＩＰループバック）される。
【０２５９】
ヘアピン機能調査部１１３は、ヘアピン調査要求パケットを受信したか否かを判断する。受信した場合には、ヘアピン機能調査部１１３は、最上位のルータがヘアピン機能を有すると判断する。一方、受信しなかった場合には、ヘアピン機能調査部１１３は、最上位のルータがヘアピン機能を有しないと判断する。ヘアピン機能調査部１１３は、その調査結果（言い換えれば、タイプＴ５であるか否かの判定結果）をパケット送受信部１２０およびマスタ／スレーブ判定部１６０に通知する。
【０２６０】
なお、ヘアピン機能調査部１１３は、ヘアピン調査要求パケットの送受信により、ヘアピン機能を調査しているが、この構成に限定されない。例えば、ＳＴＵＮプロトコルを使用して、ヘアピン機能を調査してもよい。
【０２６１】
図３６は、第３の実施の形態におけるデバイスの動作の一例を示す図である。隣接デバイスが検出された場合には、ネットワークタイプはタイプＴ１であると判定される。この場合には、ＮＡＴトラバーサルは不要であり、デバイス１００は、同一ネットワーク内でデバイス１０１と直接通信を行う。
【０２６２】
隣接デバイスが検出されなかった場合には、デバイス１００自身のＩＰアドレスが、内部ＩＰドレスであるか否かが判断される。外部ＩＰアドレスであれば、ネットワークタイプはタイプＴ２であると判定される。この場合には、マスタとするか否かの判定は不要であり、デバイス１００は、スレーブとしてＮＡＴトラバーサル処理を実行し、直接通信を行う。
【０２６３】
デバイス１００自身のＩＰアドレスが内部ＩＰアドレスであれば、最上位ルータが同一であるか否かが判断される。最上位ルータが異なれば、ネットワークタイプはタイプＴ３であると判定される。
【０２６４】
最上位ルータが同一であれば、その最上位ルータがヘアピン機能を有するか否かが調査される。最上位ルータがヘアピン機能を有する場合、ネットワークタイプはタイプＴ４であると判定される。一方、最上位ルータがヘアピン機能を有しない場合、ネットワークタイプはタイプＴ５であると判定される。
【０２６５】
タイプＴ３またはＴ４である場合には、デバイス１００は、マスタとするか否かを判定してＮＡＴトラバーサル処理を実行し、直接通信を行う。一方、タイプＴ５である場合には、直接通信が不可能であるため、デバイス１００はサーバ５００を介してデバイス１０１と通信を行う。
【０２６６】
図３７は、第３の実施の形態におけるネットワークタイプＴ１およびＴ２の一例を示す図である。図３７におけるａは、ネットワークタイプＴ１の一例を示す図である。デバイス１００および１０１は同一のルータ３００に接続されており、同一のＬＡＮ内のデバイスである。この場合には、ＮＡＴトラバーサルを行わずとも、デバイス同士の直接通信が可能である。
【０２６７】
図３７におけるｂは、ネットワークタイプＴ２の一例を示す図である。デバイス１００は、ＷＡＮ４００に直接接続されており、デバイス１０１はルータ３０１を介してＷＡＮ４００に接続されている。この場合には、デバイス１００がスレーブとなって、ＮＡＴトラバーサル処理を実行する。
【０２６８】
図３８は、第３の実施の形態におけるネットワークタイプＴ４およびＴ５の一例を示す図である。デバイス１００はルータ３００を介してルータ３０１に接続されており、デバイス１０１は、ルータ３０１に直接接続されている。つまり、デバイス１００の最上位のルータと、デバイス１０１の最上位のルータとが同一である。この場合、最上位のルータ３０１は、デバイス１００および１０１の直接通信において、ＬＡＮ内のデバイス１００から外部へのパケットを、ＬＡＮ内のデバイス１０１へ転送（すなわち、ＩＰループバック）する必要がある。したがって、ルータ３０１がヘアピン機能を有する場合に、ＮＡＴトラバーサルが実現される。なお、ネットワークタイプＴ３は、図１に例示した構成と同様である。
【０２６９】
［デバイスの動作例］
図３９は、第３の実施の形態におけるデバイス１００の動作の一例を示すフローチャートである。第３の実施の形態のデバイス１００の動作は、ステップＳ９０３およびＳ９０５をさらに実行する点において第２の実施の形態と異なる。第３の実施の形態のデバイス１０１の動作はデバイス１００と同様である。
【０２７０】
直接通信が必要なプログラムが実行されると（ステップＳ９０１：Ｙｅｓ）、デバイス１００は、宛先のデバイス１０１が同一のＬＡＮ内のデバイス（隣接デバイス）であるか否かを判断する（ステップＳ９０３）。
【０２７１】
隣接デバイスでなければ（ステップＳ９０３：Ｎｏ）、デバイス１００は、セッション確立要求パケットをサーバ５００へ送信する（ステップＳ９０４）。一方、隣接デバイスであれば（ステップＳ９０３：Ｙｅｓ）、デバイス１００は、サーバ５００を介さずに、そのデバイス１０１との間の通信を開始する（ステップＳ９０５）。ステップＳ９０５の後、デバイス１００は、動作を終了する。
【０２７２】
図４０は、第３の実施のＮＡＴトラバーサル処理の一例を示すフローチャートである。第３の実施の形態のＮＡＴトラバーサル処理は、ステップＳ９３１、Ｓ９３２、Ｓ９３３およびＳ９３４をさらに実行する点において第２の実施の形態と異なる。
【０２７３】
デバイス１００は、デバイス１００自身のアドレスが内部ＩＰアドレスであるか否かを判断する（ステップＳ９３１）。内部ＩＰアドレスである場合（ステップＳ９３１：Ｙｅｓ）、デバイス１００は、デバイス１００および１０１の最上位のルータが同一であるか否かを判断する（ステップＳ９３２）。最上位のルータが同一である場合には（ステップＳ９３２：Ｙｅｓ）、デバイス１００は、その最上位のルータにヘアピン機能があるか否かを判断する（ステップＳ９３３）。
【０２７４】
最上位のルータが異なる場合（ステップＳ９３２：Ｎｏ）、または、最上位のルータにヘアピン機能がある場合（ステップＳ９３３：Ｙｅｓ）、デバイス１００は、判定テーブル１７０を参照する（ステップＳ９３５）。
【０２７５】
デバイス１００は、フラグに従って、デバイス１００自身をマスタとするか否かを判定する（ステップＳ９３６）。デバイス１００をマスタとする場合（ステップＳ９３６：Ｙｅｓ）、または、自身のアドレスが外部ＩＰアドレスである場合（ステップＳ９３１：Ｎｏ）、デバイス１００は、ステップＳ９３７乃至Ｓ９３９を実行する。
【０２７６】
最上位のルータにヘアピン機能がない場合（ステップＳ９３３：Ｎｏ）、デバイス１００は、サーバ５００を介して通信を行う（ステップＳ９３４）。ステップＳ９３４の後、デバイス１００は動作を終了する。
【０２７７】
なお、第３の実施の形態では、ステップＳ９４０において、例えば、スレーブ側がエンドポイント非依存マッピングであり、かつ、スレーブ側がエンドポイント非依存フィルタリングである場合に、ポート番号の開放が不要と判断される。
【０２７８】
このように、本技術の第３の実施の形態によれば、ネットワークタイプに基づいて、必要に応じて、デバイス１００をマスタとするか否かを判断するため、多様なネットワーク構成において直接通信を行うことができる。
【０２７９】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０２８０】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０２８１】
なお、本技術は以下のような構成もとることができる。
（１）送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、
宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得部と、
前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成部と
を具備する通信装置。
（２）前記送信元マッピングアルゴリズム取得部は、
前記送信元の内部アドレスおよび内部ポート番号に対して割り当てられた前記外部アドレスおよび前記外部ポート番号の通知を要求する複数のパケットをマッピング調査要求パケットとして異なる複数の宛先へ送信するマッピング調査要求パケット送信部と、
前記マッピング調査要求パケットの各々に対するマッピング調査応答パケットを受信して前記マッピング調査応答パケットにより通知された外部アドレスおよび前記外部ポート番号に基づいて前記送信元マッピングアルゴリズムを取得するマッピング調査応答パケット受信部とを備える前記（１）記載の通信装置。
（３）前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを送信元フィルタリングアルゴリズムとして取得する送信元フィルタリングアルゴリズム取得部と、
前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを宛先フィルタリングアルゴリズムとして取得する宛先フィルタリングアルゴリズム取得部とをさらに具備し、
前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先マッピングアルゴリズムに基づいて前記外部ポート番号を生成する前記（１）または（２）記載の通信装置。
（４）前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せごとに前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを示すフラグを記憶するテーブルと、
前記送信元マッピングアルゴリズムおよび前記宛先マッピングアルゴリズムの組合せに対応する前記フラグに基づいて前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定するアルゴリズム判定部とをさらに具備し、
前記生成部は、前記アルゴリズム判定部により前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であると判定された場合には前記外部ポート番号を生成する前記（１）から（３）のいずれかの記載の通信装置。
（５）前記送信元の内部アドレスと前記宛先の内部アドレスとが同一のローカルエリアネットワーク内のアドレスであるか否かを判定する同一ネットワーク内アドレス判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元の内部アドレスと前記宛先の内部アドレスとが異なるローカルエリアネットワーク内のアドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する前記（４）記載の通信装置。
（６）割り当てられたアドレスが前記内部アドレスであるか否かを判定するアドレスタイプ判定部をさらに具備し、
前記アルゴリズム判定部は、前記割り当てられたアドレスが前記内部アドレスである場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する前記（４）または（５）記載の通信装置。
（７）前記送信元マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する送信元変換機器と前記宛先マッピングアルゴリズムを実行して内部アドレスおよび内部ポート番号を外部アドレスおよび外部ポート番号に変換する宛先変換機器宛先変換機器とが同一であるか否かを判定する変換機器判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合には前記宛先マッピングアルゴリズムが前記送信元マッピングアルゴリズムよりも複雑であるか否かを判定する前記（４）から（６）のいずれかに記載の通信装置。
（８）前記送信元の内部アドレスに割り当てられる外部アドレスからのパケットを前記送信元の内部アドレスに対応する外部アドレスへ転送するループバック処理を前記送信元変換機器が実行するか否かを判定するループバック判定部をさらに具備し、
前記アルゴリズム判定部は、前記送信元変換機器と前記宛先変換機器とが異なる場合、または、前記送信元変換機器と前記宛先変換機器とが同一であり、かつ、前記送信元変換機器が前記ループバック処理を実行する場合には前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑であるか否かを判定する前記（７）記載の通信装置。
（９）前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑でない場合には前記宛先の内部アドレスおよび内部ポート番号に対して割り当てられた外部アドレスおよび外部ポート番号へパケットをホールパンチングパケットとして送信するホールパンチングパケット送信部をさらに具備する前記（１）から（８）のいずれかに記載の通信機器。
（１０）前記ホールパンチングパケット送信部は、前記ホールパンチングパケット送信部は、前記送信元マッピングアルゴリズムが特定のアルゴリズムである場合には前記外部ポート番号を生成して当該外部ポート番号および前記外部アドレスへ前記ホールパンチングパケットを送信する前記（９）記載の通信機器。
（１１）前記外部ポート番号が生成されると当該生成された外部ポート番号に対してパケットを送信するパケット送信部をさらに具備する前記（１）から（１０）のいずれかに記載の通信機器。
（１２）宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして送信するサーバと、
送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得部と、前記宛先マッピングアルゴリズムを受信する宛先マッピングアルゴリズム受信部と、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成部とを備える通信機器と
を具備する通信システム。
（１３）前記サーバは、
前記宛先マッピングアルゴリズムを送信する宛先マッピングアルゴリズム送信部と
前記送信元の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して送信元フィルタリングアルゴリズムとして送信する送信元フィルタリングアルゴリズム送信部と、
前記宛先の内部アドレスおよび内部ポート番号へのパケットを通過させるか否かを判断するアルゴリズムを取得して宛先フィルタリングアルゴリズムとして送信するフィルタリングアルゴリズム送信部とを備え、
前記通信機器は、
前記送信元フィルタリングアルゴリズムを受信する送信元フィルタリングアルゴリズム受信部と、
前記宛先フィルタリングアルゴリズムを受信する宛先フィルタリングアルゴリズム受信部とをさらに備え、
前記生成部は、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムよりも複雑である場合、または、前記送信元フィルタリングアルゴリズムが前記宛先フィルタリングアルゴリズムと同一であり、かつ、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先マッピングアルゴリズムに基づいて新たに割り当てられる前記外部ポート番号を生成する前記（１２）記載の通信システム。
（１４）前記送信元フィルタリングアルゴリズム送信部および前記宛先フィルタリングアルゴリズム送信部は、
前記送信元および前記宛先のそれぞれの内部アドレスおよび内部ポート番号に割り当てられた外部アドレスおよび外部ポート番号に対して返信を要求する複数のパケットをフィルタリング調査要求パケットとして前記サーバにおける異なる外部アドレスおよび外部ポート番号から送信するフィルタリング調査要求パケット送信部と、
前記フィルタリング調査要求パケットの各々に対する返信があったか否かに基づいて前記送信元フィルタリングアルゴリズムおよび前記宛先フィルタリングアルゴリズムを取得して送信するフィルタリングアルゴリズム取得部とを備える前記（１３）記載の通信システム。
（１５）送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成手順と
を具備する通信機器の制御方法。
（１６）送信元マッピングアルゴリズム取得部が、送信元の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを送信元マッピングアルゴリズムとして取得する送信元マッピングアルゴリズム取得手順と、
宛先マッピング取得部が、宛先の内部アドレスおよび内部ポート番号に外部アドレスおよび外部ポート番号を割り当てるアルゴリズムを宛先マッピングアルゴリズムとして取得する宛先マッピングアルゴリズム取得手順と、
生成部が、前記送信元マッピングアルゴリズムが前記宛先マッピングアルゴリズムよりも複雑である場合には前記宛先の内部アドレスおよび内部ポート番号に対して新たに割り当てられる外部ポート番号を前記宛先マッピングアルゴリズムに基づいて生成する生成手順と
をコンピュータに実行させるためのプログラム。
【符号の説明】
【０２８２】
１００、１０１  デバイス
１１０  ネットワークタイプ判定部
１１１  隣接デバイス検出部
１１２  アドレスタイプ判定部
１１３  ヘアピン機能調査部
１２０  パケット送受信部
１３０  フィルタリング調査応答部
１４０  フィルタリングアルゴリズム取得部
１５０  マッピングアルゴリズム取得部
１５１  送信元マッピングアルゴリズム取得部
１５２  マッピングアルゴリズム通知部
１５３  宛先マッピングアルゴリズム取得部
１６０  マスタ／スレーブ判定部
１７０、１７１  判定テーブル
１８０  直接通信部
３００、３０１  ルータ
３１０  ルーティング処理部
３２０  アドレス変換部
３３０  アドレス変換テーブル
３４０  フィルタリング処理部
３５０  フィルタリングテーブル
４００  ＷＡＮ
５００  サーバ
５１０  転送部
５２０  デバイス情報記憶部
５３０  フィルタリングアルゴリズム取得部
５４０  フィルタリングアルゴリズム通知部
５５０  マッピング調査応答部
【図１】
2014197774.tif 000003
【図２】
2014197774.tif 000004
【図３】
2014197774.tif 000005
【図４】
2014197774.tif 000006
【図５】
2014197774.tif 000007
【図６】
2014197774.tif 000008
【図７】
2014197774.tif 000009
【図８】
2014197774.tif 000010
【図９】
2014197774.tif 000011
【図１０】
2014197774.tif 000012
【図１１】
2014197774.tif 000013
【図１２】
2014197774.tif 000014
【図１３】
2014197774.tif 000015
【図１４】
2014197774.tif 000016
【図１５】
2014197774.tif 000017
【図１６】
2014197774.tif 000018
【図１７】
2014197774.tif 000019
【図１８】
2014197774.tif 000020
【図１９】
2014197774.tif 000021
【図２０】
2014197774.tif 000022
【図２１】
2014197774.tif 000023
【図２２】
2014197774.tif 000024
【図２３】
2014197774.tif 000025
【図２４】
2014197774.tif 000026
【図２５】
2014197774.tif 000027
【図２６】
2014197774.tif 000028
【図２７】
2014197774.tif 000029
【図２８】
2014197774.tif 000030
【図２９】
2014197774.tif 000031
【図３０】
2014197774.tif 000032
【図３１】
2014197774.tif 000033
【図３２】
2014197774.tif 000034
【図３３】
2014197774.tif 000035
【図３４】
2014197774.tif 000036
【図３５】
2014197774.tif 000037
【図３６】
2014197774.tif 000038
【図３７】
2014197774.tif 000039
【図３８】
2014197774.tif 000040
【図３９】
2014197774.tif 000041
【図４０】
2014197774.tif 000042