(58)【調査した分野】(Int.Cl.,DB名)
インターネットに接続された上段NAT(Network Address Translation)装置と、前記上段NAT装置に接続された下段NAT装置とを介して、前記インターネットに接続されたサーバ装置と通信する通信装置であって、
前記上段NAT装置のLAN側IPアドレスを示す情報および前記下段NAT装置のWAN側IPアドレスを示す情報を収集する接続環境確認部と、
前記下段NAT装置の所定のポート番号に到達したパケットを前記通信装置に転送させるためのポートマッピング命令を前記下段NAT装置に対して行う判定用ポートマッピング命令部と、
ソースルーティング設定された判定パケットを生成する判定パケット生成部であって、
前記接続環境確認部が収集した、上段NAT装置のLAN側IPアドレスを、前記判定パケットの中継宛先として決定する中継宛先決定部、
前記接続環境確認部が収集した、前記下段NAT装置のWAN側IPアドレスを、前記判定パケットの最終宛先として決定する最終宛先決定部、および、
前記ポートマッピング命令に用いられた前記所定のポート番号と同じポート番号を、前記判定パケットの宛先ポート番号として決定する宛先ポート決定部
を有する判定パケット生成部と、
前記判定パケット生成部で生成された判定パケットを送信する判定パケット送信部と、
前記判定パケット送信部から送信され、前記上段NAT装置および前記下段NAT装置を経て、前記通信装置に到達する前記判定パケットを受信する判定パケット受信部と、
前記判定パケット受信部により受信された前記判定パケットに示される送信元ポート番号である、前記下段NAT装置のWAN側ポート番号を取得するポート番号取得部と
を備える通信装置。
前記通信装置は、さらに、前記判定パケット生成部で生成された判定パケットの送信元ポート番号と同じ送信元ポート番号を用いて前記サーバ装置に通知依頼パケットを送信することで、前記サーバ装置と通信する他の通信装置へのNAT越え情報の通知を、前記サーバ装置に行わせるNAT越え情報通知部を備え、
前記NAT越え情報は、前記サーバ装置に受信された前記通知依頼パケットに示される前記上段NAT装置のWAN側IPアドレスとWAN側ポート番号とを含む
請求項1記載の通信装置。
前記ポート発番規則特定部は、(a)複数の前記判定パケットのそれぞれについて、前記判定パケット送信部により送信された際の送信元ポート番号と、前記ポート番号取得部により取得されたWAN側ポート番号とが一致しているか否か、または、(b)前記ポート番号取得部により順次取得された複数のWAN側ポート番号における、連続して取得された2つのWAN側ポート番号間の差分が一定であるか否か、に応じて前記ポート発番規則を特定する
請求項3または4に記載の通信装置。
インターネットに接続された上段NAT(Network Address Translation)装置と、前記上段NAT装置に接続された下段NAT装置とを介して、前記インターネットに接続されたサーバ装置と通信する通信装置によって実行される通信方法であって、
前記上段NAT装置のLAN側IPアドレスを示す情報および前記下段NAT装置のWAN側IPアドレスを示す情報を収集する接続環境確認ステップと、
前記下段NAT装置の所定のポート番号に到達したパケットを前記通信装置に転送させるためのポートマッピング命令を前記下段NAT装置に対して行う判定用ポートマッピング命令ステップと、
ソースルーティング設定された判定パケットを生成する判定パケット生成ステップであって、
前記接続環境確認ステップにおいて収集された、上段NAT装置のLAN側IPアドレスを、前記判定パケットの中継宛先として決定する中継宛先決定ステップ、
前記接続環境確認ステップにおいて収集された、前記下段NAT装置のWAN側IPアドレスを、前記判定パケットの最終宛先として決定する最終宛先決定ステップ、および、
前記ポートマッピング命令に用いられた前記所定のポート番号と同じポート番号を、前記判定パケットの宛先ポート番号として決定する宛先ポート決定ステップ
を含む判定パケット生成ステップと、
前記判定パケット生成ステップにおいて生成された判定パケットを送信する判定パケット送信ステップと、
前記判定パケット送信ステップにおいて送信され、前記上段NAT装置および前記下段NAT装置を経て、前記通信装置に到達する前記判定パケットを受信する判定パケット受信ステップと、
前記判定パケット受信ステップにおいて受信された前記判定パケットに示される送信元ポート番号である、前記下段NAT装置のWAN側ポート番号を取得するポート番号取得ステップと
を含む通信方法。
インターネットに接続された上段NAT(Network Address Translation)装置と、前記上段NAT装置に接続された下段NAT装置とを介して、前記インターネットに接続されたサーバ装置と通信する通信装置に用いられる集積回路であって、
前記上段NAT装置のLAN側IPアドレスを示す情報および前記下段NAT装置のWAN側IPアドレスを示す情報を収集する接続環境確認部と、
前記下段NAT装置の所定のポート番号に到達したパケットを前記通信装置に転送させるためのポートマッピング命令を前記下段NAT装置に対して行う判定用ポートマッピング命令部と、
ソースルーティング設定された判定パケットを生成する判定パケット生成部であって、
前記接続環境確認部が収集した、上段NAT装置のLAN側IPアドレスを、前記判定パケットの中継宛先として決定する中継宛先決定部、
前記接続環境確認部が収集した、前記下段NAT装置のWAN側IPアドレスを、前記判定パケットの最終宛先として決定する最終宛先決定部、および、
前記ポートマッピング命令に用いられた前記所定のポート番号と同じポート番号を、前記判定パケットの宛先ポート番号として決定する宛先ポート決定部
を有する判定パケット生成部と、
前記判定パケット生成部で生成された判定パケットを送信する判定パケット送信部と、
前記判定パケット送信部から送信され、前記上段NAT装置および前記下段NAT装置を経て、前記通信装置に到達する前記判定パケットを受信する判定パケット受信部と、
前記判定パケット受信部により受信された前記判定パケットに示される送信元ポート番号である、前記下段NAT装置のWAN側ポート番号を取得するポート番号取得部と
を備える集積回路。
【背景技術】
【0002】
従来のインターネット技術を用いた通信方法においては、インターネットに直接接続された装置に対し、当該装置ごとに一意に定められたアドレスであるグローバルIPv4アドレス(以下グローバルIPアドレスと記載する)が割り当てられる。
【0003】
しかし、グローバルIPアドレスの数は限られており、特に家庭向けのインターネット接続サービスにおいては、サービス一契約につき一つのグローバルIPアドレスしか割り当てられないことが多い。すなわち、サービス一契約につき一台の装置しかインターネットに直接接続することができない。
【0004】
そこで、使用できるグローバルIPアドレスの数を越える複数の装置が同時にインターネット上の装置と通信できるようにするため、プライベートIPアドレスとNAT機能を有したルータ(以下、「NAT装置」という。)とを利用したネットワーク構成が広く利用されている。
【0005】
なお、プライベートIPアドレスとは、グローバルインターネット上のパケットの送信元IPアドレスおよび宛先IPアドレスとして使うことは出来ないが、ネットワーク装置のデバッグおよび企業内などの閉じられた(プライベートな)ネットワークにおける使用を目的としたIPアドレスである。
【0006】
また、NAT装置とは、グローバルIPアドレスとプライベートIPアドレスとの相互変換等を実行するネットワークアドレス変換(NAT)機能を有したネットワーク中継装置である。
【0007】
なお、本明細書、請求の範囲、および図面において、「NAT」とはポート変換も行うNAPT(ネットワークアドレスポート変換、Network Address Port Translation)を含む意味で使用している。
【0008】
NAT機能について
図1を用いて説明する。NAT装置102はNAT機能として、自身のLAN(Local Area Network)側の通信機器101から、自身のWAN(Wide Area Network)側の通信機器104への通信パケットが送信されて来た場合、上位ネットワーク(インターネット103)へ転送する機能を有する。
【0009】
NAT装置102は、この転送の際、通信パケット内の送信元IPアドレスと送信元ポートとを、それぞれNAT装置102自身のWAN側IPアドレスと、新たに割り当てるポート番号とに書き換える。そして、その返信として戻ってくる返信パケットは、NAT装置102によって、宛先IPアドレスとポート番号とがアドレス変換テーブル105に従って書き換えられ、通信機器101へ転送される。
【0010】
図1の例では、IPアドレス“10.0.0.1”をWAN側に有するNAT装置102が、IPアドレス“192.168.0.2”を有する通信機器101の10000番ポートから送信された、宛先IPアドレス“10.0.0.2”の80番ポート宛のパケットを受信する。
【0011】
NAT装置102は、当該パケットを受信すると、まず、アドレス変換テーブル105を参照し、受信したパケットの送信元IPアドレスと送信元ポートとが、アドレス変換テーブル105に既に存在するかどうかをチェックする。その結果、アドレス変換テーブル105に該当データがない場合には、新たにアドレス変換テーブル105を作成する。
【0012】
図1の例では、該当データが存在せず、新たに送信元ポート20000番を用いたアドレス変換テーブル105が作成された場合を想定している。なお、新たにアドレス変換テーブル105を作成する時に用いる送信元ポート番号は、他のアドレス変換に用いられてない番号であれば、任意のポート番号でよい。
【0013】
NAT装置102は、新たにアドレス変換テーブル105を作成した後、作成したアドレス変換テーブル105に従い、受信したパケットの送信元IPアドレスである“192.168.0.2”および送信元ポート番号である“10000”を、それぞれIPアドレス“10.0.0.1”およびポート番号“20000”に書き換えて、IPアドレス“10.0.0.2”を有する通信機器104に当該パケットを送信する。
【0014】
そして、NAT装置102は、その返信として通信機器104から送信された、宛先IPアドレス“10.0.0.1”の20000番ポート宛の返信パケットを受信すると、アドレス変換テーブル105を参照し、宛先IPアドレスである“10.0.0.1”および宛先ポート番号である“20000”を、それぞれIPアドレス“192.168.0.2”およびポート番号“10000”に書き換える。
【0015】
これにより、通信機器101はNAT装置102で行われるアドレス変換に影響されることなく、通信機器104と通信を行うことができ、通信機器104に対する情報の伝達および通信機器104からの情報の取得をすることができる。
【0016】
しかし、NAT機能のアドレス変換時に新たに割り当てるポート番号の割り当て基準やポート発番規則は、製品によって異なる。
【0017】
具体的には、NAT機能のアドレス割り当て時のポート割り当て基準は主に3種類に分類され、ポート発番規則も主に3種類に分類される。
【0018】
図2に、NAT機能のポート割り当て基準分類について示す。
図2の(1)は、Cone型と呼ばれるポート割り当て基準分類であり、通信相手であるサーバAおよびサーバBなどの宛先IPアドレス、並びに、宛先ポートがポートpであるかポートqであるかなどによらず、常に同じポートをアドレス変換時に割り当てる分類である。
【0019】
図2の(2)は、Address Sensitive型と呼ばれるポート割り当て基準分類であり、通信相手のサーバAおよびサーバBの宛先IPアドレスによって、割り当てるポートを変えるポート割り当て基準分類である。但し、通信相手の宛先ポートがポートpであるかポートqであるかなどによらず、常に同じポートをアドレス変換時に割り当てる。
【0020】
図2の(3)は、port Sensitive型と呼ばれるポート割り当て基準分類であり、通信相手のサーバAおよびサーバBの宛先IPアドレスによって、割り当てるポートを変え、さらに宛先ポートがポートpであるかポートqであるかなどによっても、ポート割り当てを変えるポート割り当て基準分類である。
【0021】
図3に、NAT機能のポート発番規則分類について示す。
図3の(1)は、Port Reuse型と呼ばれるポート発番規則分類であり、端末の送信する通信パケットの送信元ポート番号と同じポートをNAT装置でも割り当てる分類である。なお、NAT装置のアドレス変換テーブル内で既にポートが使用されている場合には、別のポートを割り当てることもある。
【0022】
図3の(2)は、Sequential型と呼ばれるポート発番規則分類であり、端末から3つの通信パケットがそれぞれ送信元ポートとして1番ポート、3番ポート、5番ポートを用いて、順に送信された場合の例を示している。
【0023】
Sequential型では、端末の送信する通信パケットの送信元ポートに関わらず、送信されてきた通信パケット順に、一定間隔(
図3では一定間隔Δ=5)だけ離れたポート番号が割り当てられる。なお、このポート番号の間隔は製品によって異なる。
【0024】
図3の(3)は、Random型と呼ばれるポート発番規則分類であり、端末の送信する通信パケットの送信元ポートおよび順番に関わらず、不規則にポート番号を割り当てるポート発番規則分類である。
【0025】
また、NAT装置のNAT機能には、セキュリティの観点から、WAN側から来た通信パケットの送信元IPアドレスやポート番号に基づいて、フィルタリングする機能が備えられている場合もある。
【0026】
前述のように、プライベートIPアドレスとNAT装置とを用いたネットワーク構成では、NAT装置の配下の端末から通信を開始する限り、当該端末はインターネット上の他の装置と直接通信可能である。
【0027】
しかし、インターネット上の他の装置からの通信、もしくは異なるNAT装置の配下にある2端末間でのP2P(Peer to Peer)通信を行うには、お互いが通信相手端末側のNAT装置を越えて、通信を行わなければならない。
【0028】
これは一般的に“NAT越え”と呼ばれている。NAT越えは、非特許文献1で示されているUPnP(Universal Plug and Play)のIGD(Internet Gateway Device)対応のNAT装置、もしくは、NAT−PMP(NAT Port mapping Protocol)対応のNAT装置を利用すること、または、非特許文献2で示されているSTUN(Simple Traversal of UDP through NATs)を利用することで行われ、これによりP2P通信が可能となる。
【0029】
しかし、前者の方法では、NAT装置のポートを端末から直接コントロールするため、安定した通信および接続が期待できるが、NAT装置がUPnPのIGDまたは、それと同等の機能に対応していなければ、使用できない。
【0030】
また、STUNは、外部サーバを利用することで多くのNAT装置に対応できる可能性を有する。しかし、通信経路上に存在するNAT装置のNAT分類およびその組合せによっては、NAT装置のフィルタリング機能によって、通信パケットが遮断されてしまい、NAT越えできないものもある。つまり、STUNを用いる方法は、UPnPを用いる方法と比べると確実性が劣る。
【0031】
特に、NAT装置が2つ以上存在する多段NAT環境では、複数あるNAT装置のうち、最も制限の厳しいNAT装置の性質が支配的になるため、STUNによる接続成功率は、さらに低下しやすい。
【0032】
特許文献1には、NAT装置のNAT種別判定結果情報に加え、UPnP対応有無情報を、端末間で、外部サーバ経由で交換することにより、外部サーバと端末との間にNAT装置が2つ以上存在する多段NAT環境でも、STUNを用いたNAT越え、または、UPnPのIGDもしくはNAT−PMP等を用いたNAT越えを行うことで接続率を向上させる方式が記載されている。
【発明を実施するための形態】
【0061】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【0062】
LSNは、キャリアおよびISPの方針、考え方によってその仕様は確定的ではないが、接続性や既存アプリとの互換性を考慮して、NATのポート割り当て基準はCone型になる可能性が高い。
【0063】
Cone型NATは、NATについての制限が他の2つより緩い。そのため、STUN等の従来手法である、外部サーバと端末との間でのNAT種別判別手法を多段NAT環境で適用した結果は、下段NAT装置である宅内NAT装置のNAT制限条件が支配的となる。その結果、例えば
図5のように判別される。
【0064】
すなわち、Cone型NATは、上りパケットに対するポート番号を固定的に変換するため、多段NAT環境全体としては下段NAT装置のNAT制限と等価となる。例えば、上段:Cone型、下段:Cone型であれば、多段NATとしてもCone型と判別される(
図5の(1))。
【0065】
上段:Cone型、下段:Address Sensitive型であれば、多段NATとしてはAddress Sensitive型と判別される(
図5の(2))。また、上段:Cone型、下段:Port Sensitive型であれば、多段NATとしてはPort Sensitive型と判別される(
図5の(3))。
【0066】
なお、
図5での上段NAT装置302、312および322はLSNに相当し、下段NAT装置303、313および323は、宅内NAT装置に相当する。
【0067】
以上の理由により、下段NAT装置である宅内NAT装置のポート割り当て基準を、容易に判定することができる。
【0068】
本発明は、3段以上の多段NAT環境においても、適用可能であるが、実施の形態では、NAT装置が2段の多段NAT環境での例を示す。
【0069】
具体的には、実施の形態1では、下段NAT装置である宅内NAT装置がCone型である場合の、NAT越えを伴う通信の一例を示し、実施の形態2では、下段NAT装置である宅内NAT装置がAddress Sensitive型もしくはPort Sensitive型である場合の、NAT越えを伴う通信の一例を示す。
【0070】
なお、以下で説明する実施の形態のそれぞれは、本発明の好ましい一具体例を示すものである。各実施の形態で示される数値、形状、構成要素、構成要素の配置及び接続形態などは、一例であり、本発明を限定する主旨ではない。本発明は、請求の範囲によって限定される。よって、以下の各実施の形態における構成要素のうち、請求項1に記載されていない構成要素は、本発明の課題を達成するのに必ずしも必要ではないが、より好ましい形態を構成するものとして説明される。
【0071】
(実施の形態1)
実施の形態1では、下段NAT装置である宅内NAT装置がCone型である場合の、NAT越えを伴う通信の一例を示す。
【0072】
まず、実施の形態1における通信システムの構成を説明する。
【0073】
図6は、実施の形態1における通信システムの構成の一例を示す図である。
【0074】
図6に示す実施の形態1における通信システム400は、外部サーバ401、ISPレベルで設置するLSNに相当する上段NAT装置a403および上段NAT装置b406、宅内NAT装置に相当する下段NAT装置a404および下段NAT装置b407、並びに端末装置a405および端末装置b408を備える。
【0075】
また、外部サーバ401、上段NAT装置a403、および上段NAT装置b406は、通信回線を介してインターネット402に接続されている。
【0076】
本実施の形態では、端末装置a405と端末装置b408とがP2P通信を行う上で、端末装置a405から端末装置b408へ向けての通信を開始し、端末装置a405がNAT越えのシーケンスを実行する場合を想定する。端末装置a405は具体的には、外部サーバ401と通信することで、端末装置b408へ向けての通信を開始する。
【0077】
外部サーバ401は、端末装置a405から、上段NAT装置a403のWAN側IPアドレスおよびNAT越えに使用するポート情報などのNAT越え情報を受信する機能、および、端末装置a405の通信相手となる端末装置b408へ、上記NAT越え情報を通知する機能を備える。
【0078】
インターネット402は、例えば光回線、CATV、または電話回線等で構成された有線回線、もしくは、無線回線を用いて構成された公衆通信ネットワーク、もしくは、専用通信ネットワークである。インターネット402に接続された端末装置間で所定の通信プロトコルにしたがってデータのやり取りを行うことが可能である。
【0079】
端末装置a405および端末装置b408は、TCPまたはUDPでIPネットワークと通信できる機能を持ち、それぞれの目的に合わせてデータ通信を行う。
【0080】
また、端末装置a405は、本発明の通信装置の一例である。端末装置a405は、各NAT装置へ通信パケットを送信することで、各NAT装置のIPアドレスなどの接続環境を示すNAT情報を取得する機能と、下段NAT装置a404へUPnPのIGD等により判定用のポートマッピングの設定をさせる機能と、ソースルーティング機能を用いた判定パケットを上段NAT装置a403経由で下段NAT装置a404へ送信する機能と、当該判定パケットを受信する機能と、当該判定パケットから得た結果情報に基づいて、NAT越え用に下段NAT装置a404へUPnPのIGD等でポートマッピング設定をする機能と、NAT越え情報を外部サーバ401に通知する機能とを持つ。
【0081】
なお、「ポートマッピング」は、一般に「ポートフォワード」等とも呼ばれる。
【0082】
端末装置b408は、外部サーバ401と通信することで、端末装置a405のNAT越え情報を取得する機能と、取得したNAT越え情報を元に端末装置a405へアクセスする機能とを備える。
【0083】
これらの機能と端末装置a405および端末装置b408の構成との関係については後述する。
【0084】
上段NAT装置a403、上段NAT装置b406、下段NAT装置a404および下段NAT装置b407は、NAT機能を持つルータであり、パケットのルーティング機能をもつと共にLANの一部を構成する。
【0085】
このLANに接続する各端末はプライベートIPアドレスをもち、同一LAN内に存在する端末同士ではプライベートIPアドレスを用いて通信を行うことができる。
【0086】
次に、外部サーバ401、端末装置a405および端末装置b408のハードウェア構成を、
図7を用いて説明する。
【0087】
外部サーバ401、端末装置a405および端末装置b408は、ソフトウェアを実行可能な通常のハードウェア構成を有する情報処理装置により実現可能である。
【0088】
外部サーバ401、端末装置a405および端末装置b408には、CPU(演算処理装置)501と、主記憶装置502と、通信制御装置503と、外部記憶装置504と、入力装置505と、出力装置506と、が含まれる。
【0089】
各装置は、バス507を介して相互に接続され、各装置間で必要な情報が伝送可能に構成されている。なお、
図7に示されたハードウェア構成は一例であり、外部サーバ401および端末装置a405および端末装置b408のハードウェア構成は、必ずしも、この通りである必要はない。
【0090】
図8は、端末装置a405の機能ブロックの一例を示す。各機能ブロックは、例えば、端末装置a405の主記憶装置502または外部記憶装置504に格納されたプログラムがCPU501によって実行されることで実現される。
【0091】
接続環境確認部601は、端末装置a405と外部サーバ401との間にある全ての、NAT機能を備えたNAT装置の情報を収集する。ここで得られた情報を判定パケット生成部603へ通知する。ここで収集する情報は、端末装置a405と外部サーバ401との間にあるNAT装置のWAN側IPアドレスと、LAN側IPアドレスと、UPnPのIGDまたはNAT−PMP等のポートマッピング設定機能の有無情報等である。
【0092】
つまり、上段NAT装置a403のLAN側IPアドレスを示す情報、下段NAT装置a404のWAN側IPアドレスを示す情報、上段NAT装置a403のポートマッピング設定機能の有無情報、および下段NAT装置a404のポートマッピング設定機能の有無情報等が、接続環境確認部601によって収集される。
【0093】
なお、上記の、接続環境確認部601が収集する情報は一例であり、これらに限定されるものではない。
【0094】
判定用ポートマッピング命令部602は、宛先ポート決定部606で決定されるポート番号を用いて、宅内NAT装置に相当する下段NAT装置a404へ、UPnPのIGD等によりポートマッピング命令を行う。
【0095】
つまり、判定用ポートマッピング命令部602は、下段NAT装置a404のWAN側の所定のポート番号に到達したパケットを端末装置a405に転送させるためのポートマッピング命令を下段NAT装置a404に対して行う。
【0096】
判定パケット生成部603は、判定パケット送信部608により送信され、かつ、判定パケット受信部609に受信される、ソースルーティングの設定がされた判定パケットを生成する。
【0097】
具体的には、判定パケット生成部603は、接続環境確認部601が収集した上段NAT装置a403のLAN側IPアドレスを判定パケットの中継宛先として決定する中継宛先決定部604と、接続環境確認部601が収集した下段NAT装置a404のWAN側IPアドレスを判定パケットの最終宛先として決定する最終宛先決定部605と、ポートマッピング命令に用いられた所定のポート番号と同じポート番号を、判定パケットの宛先ポート番号として決定する宛先ポート決定部606と、任意の送信元ポート番号を決定する送信元ポート決定部607とを有する。
【0098】
判定パケット送信部608は、判定パケット生成部603で生成された、ソースルーティング設定された判定パケットをネットワークへ送信する。
【0099】
判定パケット受信部609は、判定パケット送信部608から送信され、上段NAT装置a403および下段NAT装置a404を経て、端末装置a405自身へ送られてくる判定パケットを受信する。
【0100】
ポート番号取得部615は、判定パケット受信部609により受信された判定パケットに示される送信元ポート番号である、下段NAT装置a404のWAN側ポート番号を取得する。ポート番号取得部615により取得された当該WAN側ポート番号は、判定結果として、ポート発番規則特定部610へ通知される。
【0101】
ポート発番規則特定部610は、下段NAT装置a404における、通信に使用するWAN側ポート番号の決定の規則であるポート発番規則を特定する。
【0102】
具体的には、判定パケット受信部609が、判定パケット送信部608により送信された複数の判定パケットを受信し、かつ、ポート番号取得部615が、これら複数の判定パケットのそれぞれに示される、下段NAT装置a404のWAN側ポート番号を取得する。
【0103】
ポート発番規則特定部610は、ポート番号取得部615から順次得られる複数のWAN側ポート番号に基づいて、下段NAT装置a404のポート発番規則を特定する。
【0104】
ポート発番規則特定部610による、NAT装置のポート発番規則の特定手法については、
図14を用いて後述する。
【0105】
ポート発番規則特定部610は、特定した結果をNAT越え用ポート決定部613へ通知し、NAT越え用ポート決定部613は、当該結果に示されるポート番号をNAT越えのための処理に用いる。
【0106】
なお、下段NAT装置a404のポート割り当て基準がCone型であることが予め分かっている場合、NAT越えのために、ポート発番規則を特定する必要がない。そのため、この場合は、ポート発番規則特定部610が有する機能を用いずにNAT越え用ポート決定部613へ処理が移行する。
【0107】
NAT越え用ポート決定部613は、ポート発番規則特定部610から得られた結果から、NAT越え用ポートマッピング命令部611でポートマッピング命令に用いるポート番号と、NAT越え情報通知部612で用いられる通知依頼パケットの送信元ポート番号とを決定する。
【0108】
なお、下段NAT装置a404のポート割り当て基準がCone型であることが予め分かっている場合、上述のように、ポート発番規則特定部610ではポート発番規則の特定をせず、判定パケット受信部609で受信した1つの判定パケットの送信元ポート番号が、ポートマッピング命令に用いるポート番号として決定される。
【0109】
NAT越え用ポートマッピング命令部611は、NAT越え用ポート決定部613で決定された、NAT越え用にポートマッピングすべきポート番号を用いて、下段NAT装置a404へUPnPのIGD等を用いてポートマッピング命令をする。
【0110】
NAT越え情報通知部612は、NAT越え用ポート決定部613で決定された送信元ポート番号を用いて、外部サーバ401へ通知依頼パケットを送信することで、外部サーバ401と通信する他の端末装置へのNAT越え情報の通知を、外部サーバ401に行わせる。
【0111】
当該NAT越え情報には、外部サーバ401に受信された通知依頼パケットに示される上段NAT装置a403のWAN側IPアドレスとWAN側ポート番号とが含まれている。つまり、当該NAT越え情報には、当該他の端末装置がNAT越えをして端末装置a405と通信するために必要な、パケットの宛先を示す情報が含まれている。
【0112】
なお、ポート発番規則特定部610等の、
図8において点線の矩形で示される機能ブロックは、端末装置a405が備えていなくてもよい。例えば、端末装置a405のポート番号取得部615が取得した、下段NAT装置a404のWAN側ポート番号を他の装置に送信し、当該他の装置に、ポート発番規則の特定およびNAT越え用のポート番号の決定等の処理を行わせてもよい。
【0113】
また、
図8に示す機能構成の一部または全部は、1つの集積回路として実現することができる。つまり、端末装置a405は、集積回路によって実現することができる。
【0114】
外部サーバ401は、端末装置a405から受信した通知依頼パケットからNAT越え情報を取得し、それを他端末へ通知する通信機器である。外部サーバ401は、従来のNAT越え手法で用いられる認証サーバまたはセッション管理サーバ等で実現できるものであるため、機能ブロック図は省略する。
【0115】
端末装置b408は、端末装置a405からの通信依頼を外部サーバ401経由で受信し、外部サーバ401から端末装置a405との通信のためのNAT越え情報を受信し、その情報を基に端末装置a405へアクセスする機能を有する。つまり、端末装置b408は、従来のSTUNあるいはそれに準じた機能を持った通信機器もしくは通信手段である。そのため、端末装置b408の機能ブロック図は省略する。
【0116】
次に、
図9を用いて、端末装置a405の基本的な処理の流れを説明する。
【0117】
図9は、本発明の実施の形態1における端末装置a405の基本的な処理の流れを示すフロー図である。
【0118】
接続環境確認部601は、NAT情報を収集する(S10)。具体的には、上段NAT装置a403のLAN側IPアドレスを示す情報、下段NAT装置a404のWAN側IPアドレスを示す情報、上段NAT装置a403のポートマッピング設定機能の有無情報、および下段NAT装置a404のポートマッピング設定機能の有無情報等が収集される。
【0119】
判定用ポートマッピング命令部602は、下段NAT装置a404に対し、所定のポート番号を用いてポートマッピング命令を行う(S11)。
【0120】
判定パケット生成部603は、ソースルーティング設定された判定パケットを生成する(S20)。具体的には以下の処理が行われる。
【0121】
中継宛先決定部604は、接続環境確認部601が収集した、上段NAT装置a403のLAN側IPアドレスを、判定パケットの中継宛先として決定する(S21)。
【0122】
最終宛先決定部605は、接続環境確認部601が収集した、下段NAT装置a404のWAN側IPアドレスを、判定パケットの最終宛先として決定する(S22)。
【0123】
宛先ポート決定部606は、判定用ポートマッピング命令部602によるポートマッピング命令に用いられた所定のポート番号と同じポート番号を、判定パケットの宛先ポート番号として決定する(S23)。
【0124】
なお、宛先ポート決定部606で決定される宛先ポート番号と、ポートマッピング命令に用いられる所定のポート番号とが同一であれば、当該同一のポート番号は、宛先ポート決定部606および判定用ポートマッピング命令部602のいずれが決定してもよい。
【0125】
判定パケット送信部608は、判定パケット生成部603で生成された判定パケットを送信する(S30)。
【0126】
判定パケット受信部609は、判定パケット送信部608から送信され、上段NAT装置a403および下段NAT装置a404を経て、端末装置a405に到達する判定パケットを受信する(S31)。
【0127】
ポート番号取得部615は、判定パケット受信部609により受信された判定パケットに示される送信元ポート番号である、下段NAT装置a404のWAN側ポート番号を取得する(S32)。
【0128】
以上の基本的な処理を実行する端末装置a405を含む通信システム400における通信シーケンスの一例を、
図10〜
図12を用いて説明する。
【0129】
具体的には、
図10の環境を例に、端末装置a405から端末装置b408へNAT越えをしてP2P通信を確立するまでの一連の処理の流れを、フロー図である
図11および
図12を用いて説明する。
【0130】
図10は、実施の形態1の通信システム400における各装置に割り当てられたIPアドレスの例を示す図である。
【0131】
図10に示すように各装置に1つまたは2つのIPアドレスが割り当てられている環境を想定する。例えば、
図10において、下段NAT装置a404には、LAN側IPアドレスとして“192.168.11.1”が割り当てられ、WAN側IPアドレスとして“192.168.10.2”が割り当てられている。また、上段NAT装置a403には、LAN側IPアドレスとして“192.168.10.1”が割り当てられ、WAN側IPアドレスとして“10.0.0.2”が割り当てられている。
【0132】
このような環境において、端末装置a405が、自身が生成し送信した判定パケットを受信するまでの通信シーケンスを、
図11を用いて説明する。
【0133】
まず、端末装置a405の接続環境確認部601は、端末装置a405と外部サーバ401との間にある全てのNAT装置についてのNAT情報を取得する(S801)。接続環境確認部601が取得するNAT情報は、NAT装置(本実施の形態では403および404)のWAN側IPアドレス、LAN側IPアドレス、および、UPnPのIGDまたはNAT−PMP等のポートマッピング設定機能の有無を示す情報等である。接続環境確認部601は、その他の情報を取得してもよい。
【0134】
また、NAT装置のWAN側IPアドレスおよびLAN側IPアドレスは、traceroute等のICMPパケットまたはUPnPのGetExternalIPAddress等を用いることにより得ることができる。またUPnPのIGDまたはNAT−PMP等のポートマッピング設定機能の有無は、UPnPのIGD等の機能を使うことにより判断することができる。
【0135】
なお、S801の処理は、端末装置a405がネットワークに接続された時または電源の起動時に行われてもよく、S802を行う前に実行することができれば、いつでもよい。
【0136】
次に、端末装置a405の判定用ポートマッピング命令部602は、下段NAT装置a404へ、UPnPのIGD等のポートマッピング設定機能を用いて、端末装置a405内の宛先ポート決定部606により決定される所定のポート番号を用いた判定用ポートマッピング命令を行う(S802)。
【0137】
本実施の形態では、端末装置a405の宛先ポート決定部606によって決定される所定のポート番号を、d番として以後説明する。
【0138】
下段NAT装置a404は、端末装置a405から判定用ポートマッピング命令を受け、指定されたポートであるd番ポートに対し、UPnPのIGD等でポートマッピングの設定を行う。これにより、以後、下段NAT装置a404のWAN側IPアドレスである“192.168.10.2”のd番ポート宛にパケットがWAN側から来た場合、下段NAT装置a404はそのパケットの宛先を端末装置a405のIPアドレスである“192.168.11.2”のd番ポートに書き換えることで、当該パケットを端末装置a405へ転送する(S803およびS804)。
【0139】
なお、この端末装置a405へのパケット転送時に、宛先ポート番号をd番以外のポートに転送するように指定してもよい。
【0140】
端末装置a405の判定パケット生成部603は、S801で得たNAT情報を元に判定パケットを生成する(S805)。
【0141】
ここで、判定パケットはソースルーティング設定がなされるため、通常のIPパケットにおける宛先IPアドレスと送信元IPアドレスだけでなく、最終宛先IPアドレスが判定パケット内に含められる。すなわち、通常のIPヘッダ部にある宛先IPアドレス部に指定されるIPアドレスは、中継宛先IPアドレスとして扱われる。従って、以下、判定パケットの生成時にIPヘッダ部の宛先IPアドレス部に指定されるIPアドレスを、中継宛先IPアドレスと表記する。
【0142】
図10に示す環境例の下では、端末装置a405の中継宛先決定部604が、中継宛先IPアドレスに、上段NAT装置a403のLAN側IPアドレスである“192.168.10.1”を指定する。また、最終宛先決定部605が、最終宛先IPアドレスに、下段NAT装置a404のWAN側IPアドレス“192.168.10.2”を指定する。
【0143】
一般的に市販されているブロードバンドNAT装置の中には、IPヘッダのオプション部に指定される、ソースルーティング用の最終宛先IPアドレスを含む通信パケットをフィルタリングする製品も存在する。そのため、本発明では、IPヘッダのオプション部に最終宛先IPアドレスを指定するのでなく、通信パケットのデータ部などのIPヘッダ部以外に、最終宛先IPアドレスを指定して、ソースルーティングと同等の機能を行わせることも可能である。
【0144】
また、端末装置a405の宛先ポート決定部606が、判定パケットの宛先ポート番号を指定する。本実施の形態では上述のようにd番を指定する。さらに、端末装置a405の送信元ポート決定部607が、任意のポート番号を判定パケットの送信元ポート番号に指定する。本実施の形態ではs番ポートを送信元ポート番号に用いると想定する。
【0145】
そして、端末装置a405の判定パケット送信部608が、S805で生成された判定パケットを送信する。送信された判定パケットは、下段NAT装置a404を通過し、中継宛先IPアドレスで指定されている上段NAT装置a403によって受信される(S806、S807およびS808)。
【0146】
このときS807で下段NAT装置a404が判定パケットの送信元IPアドレスと送信元ポート番号とをアドレス変換する。このときのアドレス変換では、送信元IPアドレスは“192.168.11.2”から、下段NAT装置a404のWAN側IPアドレスである“192.168.10.2”に変換される。また、送信元ポート番号はs番から、s´番に変換されたと想定する。
【0147】
上段NAT装置a403は、S808で受信した判定パケットのIPヘッダ部にある宛先IPアドレス部の中継宛先IPアドレスを、判定パケット内に記述されている最終宛先IPアドレスに変更する(S809)。
【0148】
上段NAT装置a403は、S809で宛先変更が行われた判定パケットを、下段NAT装置a404の、S804でポートマッピングされたポートd番ポートへ送信する(S810)。
【0149】
下段NAT装置a404は、S810で上段NAT装置a403から送信された判定パケットの宛先IPアドレスを、端末装置a405のIPアドレス“192.168.11.2”へ変更し、転送する(S811)。
【0150】
なお、S810およびS811が完了した後には、S802、S803およびS804において、下段NAT装置a404へUPnPのIGD等で設定したポートマッピング機能を停止させる処理を行ってもよい。
【0151】
端末装置a405の判定パケット受信部609は、S810およびS811で送信され転送された判定パケットを受信する(S812)。ここで受信された判定パケットの送信元IPアドレスと送信元ポート番号とは、それぞれ下段NAT装置a404のWAN側IPアドレスである“192.168.10.2”と、下段NAT装置a404がS807においてアドレス変換した結果のポート番号である“s´”とである。
【0152】
端末装置a405のポート番号取得部615は、判定パケット受信部609が受信した判定パケットの送信元ポート番号である、下段NAT装置a404のWAN側ポート番号である“s´”を取得する。
【0153】
次に、端末装置a405が、NAT越え用のポートを決定してから、NAT越えアクセスを行うまでの各装置の処理の流れを、
図12を用いて説明する。
【0154】
ここで、本実施の形態は、下段NAT装置a404のポート割り当て基準がCone型である場合を想定しており、この場合、
図12におけるS901で必要になるNAT越え用ポートの決定には、ポート発番規則を特定する必要がない。
【0155】
そのため、端末装置a405の各機能ブロックの処理の流れとしては、判定パケット受信部609から、NAT越え用ポート決定部613へ処理が遷移する。
【0156】
端末装置a405のNAT越え用ポート決定部613は、S902で下段NAT装置a404へUPnPのIGD等でポートマッピング命令を行う際に用いるNAT越え用ポート番号と、S905で用いるNAT越え情報の通知依頼パケットの送信元ポート番号とを決定する(S901)。
【0157】
ここで、上述のように、本実施の形態における下段NAT装置a404のポート割り当て基準はCone型である。従って、NAT越え用に決定されるポート番号と、NAT越え情報の通知依頼パケットの送信元ポート番号とは、それぞれS812で受信した判定パケットの送信元ポート番号であるs´番ポートと、S806で用いられた送信元ポートs番とである。
【0158】
そのため、端末装置a405のNAT越え用ポートマッピング命令部611は、下段NAT装置a404へ、s´番ポートのポートマッピング命令をUPnPのIGD等を用いて、送信する(S902)。
【0159】
下段NAT装置a404は、S902で送信されたNAT用ポートマッピング命令を受信し(S903)、指定されたポート番号s´番のポートに対してポートマッピング設定を行う(S904)。以後、下段NAT装置a404のWAN側IPアドレスである“192.168.10.2”のs´番ポート宛にパケットがWAN側から来た場合、下段NAT装置a404はそのパケットの宛先を、端末装置a405のIPアドレスである“192.168.11.2”のs番ポートへ書き換えることで、当該パケットを端末装置a405に転送する。
【0160】
端末装置a405のNAT越え情報通知部612は、送信元IPアドレスを“192.168.11.2”、送信元ポートをs番ポートとして、外部サーバ401宛に通知依頼パケットを送信する。
【0161】
具体的には、当該通知依頼パケットは、宛先IPアドレスとして“10.0.0.1”が指定され、宛先ポート番号として外部サーバ401が指定する任意のポート番号が指定される。このようにして、NAT越え情報の外部サーバ401への送信が行われる(S905)。
【0162】
このとき、下段NAT装置a404でアドレス変換が行われるが、下段NAT装置a404はCone型であり、かつ、端末装置a405からの通知依頼パケットの送信元ポート番号は、判定パケットの送信時(S806)の送信元ポート番号と同じ“s”である。
【0163】
したがって、送信元IPアドレスと送信元ポートが、それぞれ“192.168.10.2”と、S807における変換結果であるs´番ポートに変換される(S906)。
【0164】
さらに、上段NAT装置a403でもアドレス変換されることになる(S907)。このときの変換後の送信元IPアドレスは“10.0.0.2”である。また、当該変換後の送信元ポートを、s´´番ポートとする。
【0165】
S908で外部サーバ401に届く通信パケットの送信元IPアドレスと送信元ポート番号とは、それぞれ上段NAT装置a403によるアドレス変換後の“10.0.0.2”と“s´´”とである。外部サーバ401は、これらの情報を、NAT越え情報として外部サーバ401内に保存する(S908)。
【0166】
またS905において端末装置a405から送信される通知依頼パケット内に、端末装置a405の通信相手となる端末装置b408の識別子またはID等を含めて送ってもよい。つまり、端末装置a405は、通信相手の識別子等を外部サーバ401に通知することもできる。
【0167】
S908の処理を終えた外部サーバ401は、端末装置a405の通信相手となる端末装置b408に、S908で得たNAT越え情報を通知する(S909およびS910)。
【0168】
このとき通知される情報は、上段NAT装置a403のWAN側IPアドレスである“10.0.0.2”とポート番号“s´´”とであるが、それ以外の情報が含まれていてもよい。
【0169】
端末装置b408は、S910で外部サーバ401から受信したNAT越え情報を用いて、端末装置a405へNAT越えをしてアクセスする(S911)。
【0170】
このときの通信パケットの宛先IPアドレスと宛先ポート番号はそれぞれ、S910で得たNAT越え情報に示される、上段NAT装置a403のWAN側IPアドレス“10.0.0.2”と、端末装置a405−外部サーバ401間通信で上段NAT装置a403で行われたアドレス変換後のポート番号“s´´”である。
【0171】
端末装置b408が、この通信パケットを送信した場合、上段NAT装置a403は、この通信パケットの宛先IPアドレスと宛先ポート番号とを、それぞれ“192.168.10.2”と“s´”とへ書き換え、下段NAT装置a404へ転送する(S912)。
【0172】
つまり、下段NAT装置a404は、S903およびS904でポートマッピング設定されたポートであるs´番ポートで当該通信パケットを受信する。そのため、下段NAT装置a404は、当該通信パケットの宛先IPアドレスと宛先ポート番号とを、それぞれ端末装置a405のIPアドレス“192.168.11.2”と“s”とに書き換え、端末装置a405に転送する(S913)。
【0173】
このようにして、端末装置a405は、端末装置b408からのNAT越えを果たした当該通信パケットを受信する(S914)。
【0174】
端末装置a405は、S914で受信した通信パケットに対して返信する。これにより、端末装置a405から端末装置b408へのNAT越えが果たされ、P2P通信が確立される(S915およびS916)。
【0175】
以上の処理の流れにより、
図10に例示するネットワーク構成において、下段NAT装置a404のポート割り当て分類がCone型である場合、端末装置b408から端末装置a405への通信パケットが、下段NAT装置a404に設けられたNAT越え用ポートとして設定されたポートに到達する。これにより、当該通信パケットは下段NAT装置a404を通過して端末装置a405に到達する。つまり、端末装置b408から端末装置a405への通信におけるNAT越えが行われる。
【0176】
また、端末装置a405から端末装置b408への通信パケットは、上記の端末装置b408から端末装置a405への通信パケットの返信として、同じ経路(ポート番号)を用いて、上段NAT装置b406および下段NAT装置b407へ送信される。従って、当該返信の通信パケットは、前記2つのNAT装置でフィルタリングされることがない。つまり、端末装置a405から端末装置b408への通信におけるNAT越えがなされ、端末装置a405から端末装置b408への通信が実現できる。
【0177】
(実施の形態2)
実施の形態2では、下段NAT装置である宅内NAT装置がAddress Sensitive型またはPort Sensitive型である場合の、NAT越えを伴う通信の一例を示す。
【0178】
実施の形態2における、通信システムの構成、ならびに各装置のハードウェア構成および機能ブロック構成は実施の形態1の
図6、
図7、および
図8と同様のため説明は省略する。
【0179】
また、実施の形態2における端末装置a405の基本的な処理の流れは、
図9に示す通りであり、ここでの説明は省略する。
【0180】
以下に、多段NAT環境下で異なるNAT装置配下にある端末装置a405と端末装置b408との間で、NAT越えを行い、P2P通信を行う場合の各装置の処理を説明する。
【0181】
具体的には、実施の形態1と同様に、
図10に例示される環境下において、端末装置a405から端末装置b408へNAT越えをして、P2P通信をするまでの処理の流れを、
図11および
図13を用いて説明する。
【0182】
まず、端末装置a405の接続環境確認部601は、端末装置a405と外部サーバ401との間にある全てのNAT装置についてのNAT情報を取得する(S801)。接続環境確認部601が取得するNAT情報は、NAT装置(本実施の形態では403および404)のWAN側IPアドレス、LAN側IPアドレス、および、UPnPのIGDまたはNAT−PMP等のポートマッピング設定機能の有無を示す情報等である。接続環境確認部601は、その他の情報を取得してもよい。
【0183】
また、NAT装置のWAN側IPアドレスおよびLAN側IPアドレスは、traceroute等のICMPパケットまたはUPnPのGetExternalIPAddress等を用いることにより得ることができる。またUPnPのIGDまたはNAT−PMP等のポートマッピング設定機能の有無は、UPnPのIGD等の機能を使うことにより判断することができる。
【0184】
本実施の形態では、S801が実行された後に、実施の形態1と同様に
図11のS802〜S812までが行われる。しかし、本実施の形態では、下段NAT装置a404のポート発番規則の特定を行う必要がある。そのため、具体的には、
図11のS802〜S812の一連の処理を少なくとも3回行う必要がある。
【0185】
そこで、本実施の形態では
図11のS802〜S812の一連の処理が3回行われる。また、S802〜S812を行うにあたって、その都度変化させるべき項目は、S805の判定パケット生成の際に設定される送信元ポート番号である。
【0186】
本実施の形態では、n回目のS802〜S812で、端末装置a405が判定パケットの送信元ポートとして使用するポートをs(n)番ポートと表し、S807で、下段NAT装置a404がs(n)番ポートを変換した結果のポートをs´(n)番ポートと表す。
【0187】
すなわち1回目のS802〜S812で用いられる判定パケットは、端末装置a405から送信される時点では、送信元ポートとしてs(1)番ポートが用いられ、下段NAT装置a404ではs(1)番ポートからs´(1)番ポートへとアドレス変換される。
【0188】
このようなS802〜S812の一連の処理が3回行われた後、端末装置a405のポート発番規則特定部610は、各回で用いられた判定パケットの送信元ポート番号として使用されたs(1)、s(2)、およびs(3)、ならびに、それらの変換結果として得られるポート番号s´(1)、s´(2)、およびs´(3)を用いて、下段NAT装置a404のポート発番規則の特定を、例えば
図14に示す処理フローに沿って実行する(
図13のS1001)。
【0189】
ここで、
図14に示されるポート発番規則の特定処理では、ポート発番規則特定部610は、s(n)とs´(n)とを比較する(S1101)。この比較の結果、s(n)とs´(n)が等しい場合(S1101でY)、ポート発番規則特定部610は、下段NAT装置a404のポート発番規則を(1)Port Reuse型と特定し、異なる場合には、次の比較処理(S1102)へ移行する。
【0190】
すなわち、本実施の形態では“s(1)=s´(1)”かつ“s(2)=s´(2)”かつ“s(3)=s´(3)”の場合、ポート発番規則を[1]Port Reuse型と特定する。
【0191】
次の比較処理(S1102)では、ポート発番規則特定部610は、s´(n)−s´(n−1)が一定である場合に、ポート発番規則を[2]Sequential型と特定し、一定ではない場合には[3]Random型と特定する。
【0192】
すなわち、ポート発番規則特定部610は、“s´(3)−s´(2)=s´(2)−s´(1)”である場合、言い換えるとポート割り当て間隔が一定である場合に、ポート発番規則を[2]Sequential型と特定し、それ以外である場合には、[3]Random型と特定する。
【0193】
なお、下段NAT装置a404のポート発番規則が[3]Random型と特定された場合、本発明で提案するNAT越え手法を行うことはできない。そのため、[3]Random型と特定された場合には、端末装置a405は、例えば外部サーバ401にNAT越え不可な旨を通知してもよい。また、外部サーバ401は、当該通知内容を端末装置b408に知らせてもよい。
【0194】
ここで、[1]Port Reuse型および[2]Sequential型のNAT装置は、ポート発番規則に従って、ポートマッピング設定をするポート番号を決定する。そのため、決定したポート番号が既に他の通信で使用されている場合には、本来のポート発番規則に反したポート番号を割り当てることがある。従って、本来[1]Port Reuse型および[2]Sequential型のNAT装置でも、状況によっては間違ったポート発番規則が特定されることもあるが、この場合の対処については、本発明の本義ではないため、省略する。
【0195】
図13に示す、S1002〜S1017は、実施の形態1のS901〜S916とほぼ同等であるが、使用する送信元ポート番号および下段NAT装置a404でのアドレス変換等に差異がある。そこで、下段NAT装置a404が[1]Port Reuse型である場合を実施の形態2の具体例1とし、[2]Sequential型である場合を実施の形態2の具体例2として、S1002〜S1017の説明を以下に示す。
【0196】
(実施の形態2の具体例1:Port Reuse型)
端末装置a405のポート発番規則特定部610が、下段NAT装置a404のポート発番規則を、Port Reuse型であると特定した後、NAT越え用ポート決定部613は、下段NAT装置a404にNAT越え用にポートマッピング設定をするポート番号を決定する(S1002)。
【0197】
ここで、下段NAT装置a404がPort Reuse型であるときのポートマッピングの対象となるポート番号は、下段NAT装置a404でアドレス変換後に割り当てられるポート番号であり、S1006でのNAT越え情報送信時に、端末装置a405が用いる送信元ポート番号と同じポート番号である。
【0198】
S1006でのNAT越え情報送信時に、端末装置a405が用いる送信元ポート番号は任意の番号でよい。しかし、S802〜S812で用いたポート番号s(1)、s(2)およびs(3)は、直前に使用したポート番号のため、下段NAT装置a404が本来のポート発番規則であるPort Reuse規則に反したポート発番を行う可能性があるため、避けるべきである。
【0199】
ここで、以後の説明のために、S1006でのNAT越え情報送信時に、端末装置a405が通知依頼パケットの送信元ポート番号として用いるポート番号を“s_pr”と表記する。この場合、NAT越え用としてポートマッピング設定をするポート番号も“s_pr”となる。
【0200】
S1002で決定したNAT越え用のポート番号“s_pr”を用いて、端末装置a405のNAT越え用ポートマッピング命令部611から下段NAT装置a404へUPnPのIGD等でポートマッピング命令を行う。下段NAT装置a404は当該命令に従い、s_pr番ポートに対してポートマッピング設定を行う(S1003、S1004およびS1005)。
【0201】
以後、下段NAT装置a404のWAN側IPアドレスである“192.168.10.2”のs_pr番ポート宛にパケットがWAN側から来た場合、下段NAT装置a404は、そのパケットの宛先を端末装置a405のIPアドレスである“192.168.11.2”のs_pr番ポートへ変換し、当該パケットを端末装置a405へ転送する。なお、この端末装置a405へのパケット転送時に、宛先ポートとしてs_pr番以外のポートを指定してもよい。
【0202】
次に、端末装置a405のNAT越え情報通知部612から、外部サーバ401へNAT越え情報を通知する(S1006)。具体的には、以下の処理が行われる。すなわち、NAT越え情報通知部612は、送信元IPアドレスと送信元ポート番号とを、それぞれ“192.168.11.2”と“s_pr”とした通知依頼パケットを、外部サーバ401宛に送信する。当該通知依頼パケットの宛先IPアドレスは、“10.0.0.1”であり、宛先ポート番号は外部サーバ401が指定する任意のポート番号である。
【0203】
この場合、当該通知依頼パケットの、下段NAT装置a404でのアドレス変換後の送信元IPアドレスと送信元ポート番号は、それぞれ“192.168.10.2”と“s_pr”になる(S1007)。さらに、上段NAT装置a403でもアドレス変換される(S1008)。このとき変換後の送信元IPアドレスは“10.0.0.2”である。また、このときの変換後の送信元ポートをs´´_pr番ポートとする。
【0204】
外部サーバ401に届く通知依頼パケットの送信元IPアドレスと送信元ポート番号とは、それぞれ上段NAT装置a403によるアドレス変換により得られた“10.0.0.2”と“s´´_pr”とである。これらの情報はNAT越え情報として外部サーバ401内に保存される(S1009)。
【0205】
またこのとき、端末装置a405から送信される通知依頼パケット内に、端末装置a405の通信相手となる端末装置b408の識別子またはID等を含めて送ってもよい。
【0206】
S1009の処理を終えた外部サーバ401は、端末装置a405の通信相手となる端末装置b408に、NAT越え情報を通知する(S1010およびS1011)。
【0207】
このとき通知される情報は、上段NAT装置a403のWAN側IPアドレスである“10.0.0.2”と上段NAT装置a403によるアドレス変換後のポート番号“s´´_pr”であるが、それ以外の情報を含めてもよい。
【0208】
端末装置b408は、S1011で外部サーバ401から通知されたNAT越え情報を用いて、端末装置a405へNAT越えをしてアクセスする(S1012)。
【0209】
このときの通信パケットの宛先IPアドレスと宛先ポート番号は、上段NAT装置a403のWAN側IPアドレス“10.0.0.2”と端末装置a405−外部サーバ401間通信において上段NAT装置a403で行われたアドレス変換後のポート番号“s´´_pr”である。
【0210】
上段NAT装置a403はこの通信パケットを受信すると、その宛先IPアドレスと宛先ポート番号を、それぞれ“192.168.10.2”と“s_pr”へ書き換え、下段NAT装置a404へ転送する(S1013)。
【0211】
この場合、下段NAT装置a404は、自身のWAN側IPアドレスと、S1004およびS1005でポートマッピング設定されたs_pr番ポートとを宛先とする通信パケットを受信する。そのため、下段NAT装置a404は、当該通信パケットの宛先IPアドレスと宛先ポート番号を、それぞれ端末装置a405のIPアドレス“192.168.11.2”と“s_pr”に書き換え、端末装置a405に転送する(S1014)。
【0212】
このようにして、端末装置a405は、端末装置b408からのNAT越えを果たした通信パケットを受信する(S1015)。
【0213】
端末装置a405は、S1015で受信した通信パケットに対して返信する。これにより、端末装置a405から端末装置b408へのNAT越えが果たされ、P2P通信が確立される(S1016およびS1017)。
【0214】
以上の処理の流れにより、
図10に例示するネットワーク構成において、下段NAT装置a404のポート割り当て分類がAddress Sensitive型もしくはPort Sensitive型であり、かつ、ポート発番規則がPort Reuse型である場合のNAT越えが実現される。具体的には、端末装置b408から端末装置a405への通信パケットが、下段NAT装置a404に設けられたNAT越え用ポートとして設定されたポートに到達する。これにより、当該通信パケットは下段NAT装置a404を通過して端末装置a405に到達する。つまり、端末装置b408から端末装置a405への通信におけるNAT越えが行われる。
【0215】
また、下段NAT装置a404で次に用いられるポート番号を予測して、予測したポート番号がNAT越え用ポートとして設定されている。そのため、端末装置a405から端末装置b408への通信パケットは、端末装置b408から端末装置a405への通信パケットと同じ経路(ポート番号)を用いて、上段NAT装置b406および下段NAT装置b407へ送信される。従って、当該通信パケットは、前記2つのNAT装置でフィルタリングされることがない。つまり、端末装置a405から端末装置b408への通信におけるNAT越えがなされ、端末装置a405から端末装置b408への通信が実現できる。
【0216】
(実施の形態2の具体例2:Sequential型)
端末装置a405のポート発番規則特定部610が、下段NAT装置a404のポート発番規則をSequential型であると特定した後、NAT越え用ポート決定部613は、下段NAT装置a404にNAT越え用にポートマッピング設定するポート番号を決定する(S1002)。
【0217】
ここで、下段NAT装置a404がSequential型であるときのポートマッピング設定すべきポート番号は、下段NAT装置a404で次のアドレス変換の際に割り当てられるポート番号であり、以下のように算出される。例えば、S802〜S812を複数回行った場合において最後に得られた判定パケットの送信元ポート番号が“s´(3)”である場合、ポートマッピング設定すべきポート番号は“s´(3)+(s´(3)−s´(2))”である。
【0218】
ここで、以後の説明のために、S1006のNAT越え情報送信時に、端末装置a405が通知依頼パケットの送信元として用いる送信元ポート番号を“s_se”とし、NAT越え用としてポートマッピング設定をするポート番号を、s´_seとする。なお、s´_se=s´(3)+(s´(3)−s´(2))である。
【0219】
この場合、端末装置a405のNAT越え用ポートマッピング命令部611は、S1002で決定されたNAT越え用のポート番号“s´_se”を用いて、下段NAT装置a404へUPnPのIGD等でポートマッピング設定を行う(S1003およびS1004およびS1005)。
【0220】
以後、下段NAT装置a404のWAN側IPアドレスである“192.168.10.2”のs´_se番ポート宛にパケットがWAN側から来た場合、下段NAT装置a404は、そのパケットの宛先を端末装置a405のIPアドレスである“192.168.11.2”のs_se番ポートへ変換し、当該パケットを端末装置a405へ転送する。この端末装置a405へのパケット転送時に、宛先ポートとしてs_se番以外のポートを指定してもよい。
【0221】
次に、端末装置a405のNAT越え情報通知部612から、外部サーバ401へNAT越え情報を通知する(S1006)。具体的には、以下の処理が行われる。すなわち、NAT越え情報通知部612は、送信元IPアドレスと送信元ポート番号とを、それぞれ“192.168.11.2”と“s_se”とした通知依頼パケットを、外部サーバ401宛に送信する。当該通知依頼パケットの宛先IPアドレスは、“10.0.0.1”であり、宛先ポート番号は外部サーバ401が指定する任意のポート番号である。
【0222】
この場合、当該通知依頼パケットの、下段NAT装置a404でのアドレス変換後の送信元IPアドレスと送信元ポート番号は、それぞれ“192.168.10.2”と“s´_se”になる(S1007)。さらに、上段NAT装置a403でもアドレス変換される(S1008)。
【0223】
このとき変換後の送信元IPアドレスと送信元ポートは“10.0.0.2”である。また、このときの変換後の送信元ポートをs´´_se番ポートとする。
【0224】
外部サーバ401に届く通知依頼パケットの送信元IPアドレスと送信元ポート番号は、それぞれ上段NAT装置a403によるアドレス変換により得られた“10.0.0.2”と“s´´_se”である。これらの情報はNAT越え情報として外部サーバ401内に保存される(S1009)。
【0225】
またこのとき、端末装置a405から送信される通知依頼パケット内に、端末装置a405の通信相手となる端末装置b408の識別子やID等を含めて送ってもよい。
【0226】
S1009の処理を終えた外部サーバ401は、端末装置a405の通信相手となる端末装置b408に、NAT越え情報を通知する(S1010およびS1011)。
【0227】
このとき通知される情報は、上段NAT装置a403のWAN側IPアドレスである“10.0.0.2”と上段NAT装置a403によるアドレス変換後のポート番号“s´´_se”であるが、それ以外の情報を含めてもよい。
【0228】
端末装置b408は、S1011で、外部サーバ401から通知されたNAT越え情報を用いて、端末装置a405へNAT越えをしてアクセスする(S1012)。
【0229】
このときの通信パケットの宛先IPアドレスと宛先ポート番号は、S1011で得たNAT越え情報に示される、上段NAT装置a403のWAN側IPアドレス“10.0.0.2”と端末装置a405−外部サーバ401間通信において上段NAT装置a403で行われたアドレス変換後のポート番号“s´´_se”である。
【0230】
上段NAT装置a403はこの通信パケットを受信すると、その宛先IPアドレスと宛先ポート番号を、それぞれ“192.168.10.2”と“s´_se”へ書き換え、下段NAT装置a404へ転送する(S1013)。
【0231】
この場合、下段NAT装置a404は、自身のWAN側IPアドレスと、S1004およびS1005でポートマッピング設定されたs´_se番ポートとを宛先とする通信パケットを受信する。そのため、下段NAT装置a404は、当該通信パケットの宛先IPアドレスと宛先ポート番号を、それぞれ端末装置a405のIPアドレス“192.168.11.2”と“s_se”に書き換え、端末装置a405に転送する(S1014)。
【0232】
このようにして、端末装置a405は、端末装置b408からのNAT越えを果たした通信パケットを受信する(S1015)。
【0233】
端末装置a405は、1015で受信した通信パケットに対して返信する。これにより、端末装置a405から端末装置b408へのNAT越えが果たされ、P2P通信が確立される(S1016およびS1017)。
【0234】
以上の処理の流れにより、
図10に例示するネットワーク構成において、下段NAT装置a404のポート割り当て分類がAddress Sensitive型もしくはPort Sensitive型であり、ポート発番規則がSequential型である場合のNAT越えが実現される。具体的には、端末装置b408から端末装置a405への通信パケットが、下段NAT装置a404に設けられたNAT越え用ポートとして設定されたポートに到達する。これにより、当該通信パケットは下段NAT装置a404を通過して端末装置a405に到達する。つまり、端末装置b408から端末装置a405への通信におけるNAT越えが行われる。
【0235】
また、下段NAT装置a404で次に用いられるポート番号を予測して、予測したポート番号がNAT越え用ポートとして設定されている。そのため、端末装置a405から端末装置b408への通信パケットは、端末装置b408から端末装置a405への通信パケットと同じ経路(ポート番号)を用いて、上段NAT装置b406および下段NAT装置b407へ送信される。従って、当該通信パケットは、前記2つのNAT装置でフィルタリングされることがない。つまり、端末装置a405から端末装置b408への通信におけるNAT越えがなされ、端末装置a405から端末装置b408への通信が実現できる。
【0236】
以上、本発明の通信装置および通信方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を各実施の形態に施したもの、および、互いに異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。