説明

IP通信装置、通信システム、判定方法およびプログラム

【課題】本発明は、NAT機能を有するルータの配下に接続されているときにルータのNAT種別が変化しても、通信時に迅速な判定を行って通信不可を回避するIP通信装置、通信システム、判定方法およびプログラムを提供することを目的とする。
【解決手段】STUNサーバを使ったNAT種別判定処理を定期的に実行するとともに、通信開始のイベントが発生すると、ルータを介してSTUNサーバAとSTUNサーバABに対してポート番号取得のためのリクエストを送信し、NAT種別がコーン系であるかまたはシンメトリックに変化しているかを判定するNAT種別不整合判定処理を行う。この構成によって、定期的なNAT種別判定処理の合間にNAT種別がシンメトリックに変化していても、通信時に短時間に判定が可能になる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インターネット網(Internet)に接続されてNAT(Network Address Translation)機能を備えたルータなどの中継装置のNAT種別が変化した場合でも対応できるIP通信装置、通信システム、判定方法およびプログラムに関するものである。
【背景技術】
【0002】
インターネット網の普及で、利用可能なグローバルIPアドレスが枯渇するようになってきている。IPv4(Internet Protocol version 4)が採用されてきたため、従来1個のグローバルIPアドレスを何台かのIP通信装置で共用してきたが、各IP通信装置にそれぞれグローバルIPアドレスを割り当てるIPv6(Internet Protocol version 6)へ移行する動きもある。しかし、IPv4もセキュリティを高めることができるなど利点も多く、しばらくはIPv4が主流で推移すると予想される。
【0003】
複数のIP通信装置を接続してLAN(Local area Network)を構築し、インターネット網に接続されたルータなどの中継装置を介して、グローバルIPアドレスを1個だけ使ってLAN内部のIP通信装置をインターネットに接続するには、中継装置にアドレス変換するためのNAT機能が必要になる。ここでは、IP通信装置はInternet Protocol(IP)で通信する装置を指し、インターネット網はIPで通信を行うWAN(Wide area Network)のことを指すと定義する。
【0004】
さて、NAT機能の中の動的NATと呼ばれるものは、LAN側の端末からインターネット網側にアクセスする場合にグローバルIPアドレスと任意のポート番号を割り当て、さらにこのポート番号と端末のLAN側のIPアドレスを動的に関連付け、ポート番号の識別と変換を行うことにより複数の端末が同時にインターネットなどへ接続することが可能にする。これはNAPT(Network Address Port Translation)、またはIPマスカレードとも呼ばれる。この機能により複数の端末が同時に接続でき、しかもセキュリティ機能は高いため、不足するグローバルIPアドレスの数を補うことができ、IPv4にとっては有用である。
【0005】
ところで、NAT機能を有するルータのLANに接続されたIP通信装置同士でWANを経由し、UDP(User Datagram Protcol)のトンネリング通信を可能にするために、RFC3489で規定されたSTUN(Simple Traversal of UDP through NATs)では、NATを次のように分類している。これによるとNATにはコーン(Cone)系のNATとシンメトリック(Symmetric)のNATの2種類が存在し、さらにこのコーン(Cone)系のNATは次の3種類に分かれる。
【0006】
第1のコーン(Cone)系のNATはフルコーン(Full Cone)と呼ばれるもので、NATのLANに接続された所定のIP通信装置から送信されるパケットには宛先に関わらず同じWAN側のポート番号を割り当てるものである。WAN側のポート番号には、LAN内のローカルポート番号と同一の番号の割り当てが許容される。このようなLAN内のローカルポートとWAN側のポート番号を一致させ、割り当てるNAT機能をポートリユース(Port Reuse)機能と呼ぶ。インターネット網すなわちWAN側に接続された外部のIP通信装置がフルコーンNATの下に在るIP通信装置へパケットを送る場合、NATによってマッピングされたグローバルIPアドレスおよびWAN側のポート番号を宛先として送信すると、そのパケットはLAN内のこのグローバルIPアドレスおよびWAN側のポート番号で特定されるIP通信装置へ転送される。すなわち、フルコーンのNATはWANに接続された任意のIP通信装置から送信されたパケットを通過させるものである。
【0007】
次に、第2のコーン(Cone)系のNATはリストリクテッドコーン(Restricted Cone)と呼ばれるもので、NAT内部の所定のIP通信装置から送信されるパケットには宛先に関わらず同じポート番号を割り当てるが、受信時には前にNAT内部のIP通信装置から送信したパケットの送信先グローバルIPアドレスと同一のIPアドレスを送信元としたパケットのみを受信するものである。言い換えれば、リストリクテッドコーンNATは、グローバルIPアドレスが一度送信処理を行った相手先アドレスと同じであれば相手からのパケットのみを通過させ、LAN側のIP通信装置へ転送するものである。
【0008】
さらに、第3のコーン(Cone)系のNATはポートリストリクテッドコーン(Port Restricted Cone)と呼ばれるもので、上記第1,2のNATと同様に、NATのLANに接続された所定のIP通信装置から送信されるパケットには宛先に関わらず同じWAN側ポート番号の割り当てを行うが、受信時にはNATのLAN側に接続されたIP通信装置から既に一度に送信したことのある相手先IPアドレスおよびポート番号と同一のIPアドレスおよびポート番号を送信元として送信されて来たパケットのみを受信するものである。言い換えればポートリストリクテッドコーンNATは、グローバルIPアドレスに加えてWAN側ポート番号についても一度送信処理を行った相手先のものと同じである場合のみ、相手からのパケットのみを通過させ、LAN側のIP通信装置へ転送するものである。
【0009】
そして、シンメトリック(Symmetric)は、送信先グローバルIPアドレスが異なればWAN側ポート番号を変え、送信先ごとに個別にWAN側ポート番号を割り当てる。すなわちLAN側のIP通信装置からWAN側のIP通信装置へ宛てたパケットを送信する場合、LAN内の同じローカルIPアドレスおよびポート番号からのパケット送信であっても、宛先が異なれば送信のためのWAN側ポート番号として別のポート番号が割り当てられる。
【0010】
上述した4種類のNATは、フルコーン、リストリクテッドコーン、ポートリストリクテッドコーン、シンメトリックの順でNAT越え(トンネリング)が難しくなる。このため、この順で使用するNATの特性を選べば、セキュリティのレベルを上げることができる。
【0011】
一般的にNAT機能付きルータが配下のIP通信装置にNAT種別に関する情報を通知することはなく、そのままではIP通信装置はNAT越え動作の可否判定を含めたNAT越え動作をすることはできない。そこで、RFC3489の規定に沿って、STUNサーバへ複数種類のバインディングリクエスト(Binding Request)を送信し、その応答であるバインディングレスポンス(Binding Response)をもとにしてNAT種別を判定する処理が行われる。
【0012】
たとえばNATルータのNAT種別を判定する場合、図18に示す手順で判定が行われる。IP通信装置は、動作状態を知りたいポートからNATルータを介してSTUNサーバへバインディングリクエストを送信し、STUNサーバからのバインディングレスポンスの受信結果(受信できたかを含む)から現在のNAT種別を取得する(たとえば、非特許文献1参照、特許文献1)。NAT種別判定のためのメッセージ送受信処理は図12に示す[STUNテスト1][STUNテスト1’][STUNテスト2][STUNテスト3]を組み合わせることによって、最大で4回行われる。
【0013】
[STUNテスト1]について
最初のSTUNテストである[STUNテスト1]は図12(a)に示すように行われ、NATルータを介して送信されるバインディングリクエストは属性を指定しないメッセージである。パケット送信元すなわちIP通信装置のローカルIPアドレスおよびローカルポート番号に対応するグローバルIPアドレスおよびWAN側のポート番号を取得するため、NATルータの配下のIP通信装置がSTUNサーバAへ送信を行う。本送信に対するバインディングレスポンスを受信することで、グローバルIPアドレスおよびWAN側のポート番号を取得することができる。
【0014】
[STUNテスト1’]について
[STUNテスト1’]で送信されるバインディングリクエストも前記[STUNテスト1]と同じ、属性を指定しないメッセージである。但し、IP通信装置からSTUNサーバBへ送信を行い、グローバルIPアドレスおよびWAN側のポート番号を取得するためのものである。[STUNテスト1’]における送受信は、図12(c)に示すような関係で行われる。
【0015】
[STUNテスト2]について
[STUNテスト2]は図12(b)に示すように行われ、この場合のバインディングリクエストは、STUNサーバAに送信した場合、STUNサーバBのSTUNサーバAとは異なるポートがバインディングレスポンスの送信元となるように要求するメッセージである。すなわち返送されるレスポンスは、送信元がSTUNサーバBのIPアドレスとなる。
【0016】
[STUNテスト3]について
[STUNテスト3]は図12(d)に示すように行われ、この場合の送信されるバインディングリクエストは、STUNサーバの送信元のポート番号だけを変えて応答するように要求するメッセージである。すなわちSTUNサーバA(B)に対し、レスポンスを返送する際のポート番号だけを変更するように指示したバインディングリクエストを送信する。これに応じてSTUNサーバA(B)は、レスポンスを返すポート番号を前記[STUNテスト1]でレスポンスを返した際のポートとは異なる番号にしてレスポンスを返送する。この[STUNテスト3]ではSTUNサーバA(B)からのレスポンスがNATルータを通過してIP通信装置で受信できるか否かを調べる。
【0017】
まず、図18のフローチャートに示すように[STUNテスト1]を行うため、IP通信装置はSTUNサーバAへバインディングリクエストを送信し(step101)、バインディングレスポンスの有無を判定する(step102)。バインディングレスポンスがなければUDPブロックされていると判断する。
【0018】
バインディングレスポンスが正常に受信できた場合、IP通信装置はこのバインディングレスポンスに設定されているバインディングリクエスト送信時のグローバルIPアドレスとWAN側のポート番号を取得し、取得したグローバルIPアドレスおよびWAN側ポート番号と、IP通信装置自身のIPアドレスおよびバインディングリクエスト送信時のポート番号とを比較する(step103)。
【0019】
両者が一致する場合(step103:Yes)、IP通信装置に直接グローバルIPアドレスが割り振られているため、IP通信装置の上位にNATルータは存在しないと判断する。
【0020】
この後[STUNテスト2]を行う。STUNサーバAにバインディングリクエストを送信し(step104)、STUNサーバAからSTUNサーバBへの要求で、STUNサーバBから送信されるバインディングレスポンスの受信結果を確認する(step105)。STUNサーバBからバインディングレスポンスがあった場合、IP通信装置はインターネットにオープンの状態で接続されていると判断でき、バインディングレスポンスがなければUDPファイアウォールで遮断されていると判断できる。
【0021】
step101での[STUNテスト1]の結果、バインディングレスポンスに設定されている送信元グローバルIPアドレスおよびWAN側のポート番号と、バインディングリクエストを送信したIP通信装置のIPアドレスおよびポート番号が不一致の場合(step103:No)、このIP通信装置がNATに接続された環境にあると判断する。次に上記と同様に、[STUNテスト2]を行う。STUNサーバAにバインディングリクエストを送信し(step106)し、STUNサーバAからSTUNサーバBへの要求で、STUNサーバBから送信されるバインディングレスポンスの受信結果を確認する(step107)。STUNサーバBからバインディングレスポンスを受信できた場合(step107:Yes)、送信元が送信先とは異なるグローバルIPアドレスおよびWAN側のポート番号のパケットでもNATを通過したことになるため、NAT種別はフルコーンと判定される。
【0022】
このバインディングレスポンスがIP通信装置で受信できない場合、次に[STUNテスト1’]を行う。すなわちIP通信装置はSTUNサーバBにバインディングリクエストを送信する(step108)。このSTUNサーバBからのバインディングレスポンスにより取得できるNATのWAN側のポート番号と[STUNテスト1]で取得したWAN側のポート番号を比較する(step109)。この結果、WAN側のポート番号が一致しない場合は(step109:No)、送信先(STUNサーバA、STUNサーバB)ごとに異なったWAN側のポート番号がNATにより割り当てられたことになり、NATはシンメトリックと判定される。
【0023】
WAN側のポート番号が一致する場合は(step109:Yes)、次に同一グローバルIPアドレスで、かつ異なるWAN側のポート番号からのバインディングレスポンスが受信できるかを判定するために[STUNテスト3]を行う。すなわちSTUNサーバAにバインディングリクエストを送信し(step110)、STUNサーバAからグローバルIPアドレスが同一であって、WAN側のポート番号だけ変更されたバインディングレスポンスをNATルータに送信させる。
【0024】
このSTUNサーバAからのバインディングレスポンスをIP通信装置で受信できたかを判定する(step111)。受信できない場合、NATルータは一度送信を行ったグローバルIPアドレスでありながら、別のポート番号から送られるパケットは通さない(送信処理を行った送信先ポート番号からのパケットのみを通過させるNAT)ということを意味するから、これはポートリストリクテッドコーンと判定される。受信できた場合、前に送信処理を行った送信先ポート番号以外のポート番号からのパケットであっても通すことから、リストリクテッドコーンと判定される。
【0025】
以上説明したように、従来はRFC3489で規定されたSTUNによって定期的にNAT種別が判定されていた。この判定はNATルータのLAN側に接続したIP通信装置が本NATルータをトンネリングし、通信するためには不可欠の機能であるが、この機能を実行するためには図18のフローチャートに従ってバインディングリクエストを送信するSTUNテストを最大4回しなければならず、一回のSTUNテストで行われるバインディングリクエスト/バインディングレスポンスの再送時間までを考えると、これらのSTUNテストを行うためには比較的長い時間、たとえば40秒を越える時間を必要とするケースもある。従って、利用者が実際に電話をかける度にこのようなNAT種別判定機能を実行した場合、オフフックした後、相手が呼び出される(リングバックトーンなどを聴取する)まで40秒以上待たされるケースも発生する可能性がある。このため、発呼の度にこの判定を実施することは電話サービスの観点から非現実的である。本来、本NAT種別判定機能は通信動作の負荷にならないよう、日常生活の通話が行われる時間帯と異なる時間帯を選んで定期的に行われるのが通例である。
【0026】
図10は、プロトコルSIP(Session Initiation Protocol)に準拠してIP電話機同士でVoIP通話を行う通信システムである。双方のIP電話機はNAT機能を有するルータの配下に接続されている。NATルータのWAN側ポートはインターネット網に接続されている。インターネット網にはVoIP(Voice over Internet Protocol)通話の呼制御を行うSIPサーバが置かれている。またIP電話機同士がP2Pで通信できない場合は、VoIPトラフィックのみを通信させるメディア中継サーバを介して通信が行われる。図10(a)はIP電話機がP2P(Peer to Peer)で通信できる場合の概念図、図10(b)はNATルータの状態が切り換わって従来の手順ではP2P通信できなくなった場合を示す概念図である。図10(c)はP2P通信ではなくメディア中継サーバを介して通信する場合の概念図である。
【0027】
図10(a)の場合は、STUNに従って取得されたNAT種別がフルコーンであり、NATルータ配下のIP電話機同士は問題なくSIPで呼制御が行われ、その後P2Pで通話できる。定期的なNAT種別判定の最新の判定結果がフルコーンである場合、一方のIP電話機から発呼する際にNAT種別フルコーンが維持されていれば図10(a)のようにP2Pで音声通話ができる。
【0028】
ところで、従来のNATには次のような問題もある。定期的なNAT種別判定処理終了後、次のNAT種別判定処理までの間に、ルータでのNAT種別が定期的な判定結果とは異なる動作種別へ変化し、定期的なNAT種別判定結果を基にした通信方法では外部からのアクセスがNATで遮断され、通信不可になる場合がある。この現象はポートリユース機能を保有するNATルータなどで発生する。
【0029】
以下ポートリユース機能を有するNATルータにおいてNAT種別が変化する場合について詳述する。NATルータに別のIP通信装置が接続されて使用されている状態で新たにIP通信装置を接続する。この後で接続したIP通信装置が通信を行うためにローカルポート番号を使用して通信を行うが、このローカルポート番号と同じWAN側のポート番号は先に接続されたIP通信装置に対応して使用されていたとする。ポートリユース機能を備えているルータでは、ローカルポート番号とWAN側のポート番号を一致させ割り当てる機能を有しているが、以下のような接続がされると、コーン系と判定されたNATルータであっても、シンメトリックと同じNAT動作を行う場合がある。
【0030】
NATルータがポートリユース機能によってコーン系の動作からシンメトリックの動作に変化する原因の1つとしては、次のようなことがある。図19(a)はコーン系のNAT機能で動作する場合を説明する図、図19(b)はコーン系のNAT機能で動作するはずのIP通信装置がシンメトリックのNAT機能で動作してしまうことを説明する図である。図19(a)においてはNATルータに1台のIP通信装置が接続されている。ローカルポート番号がたとえば「15000」のIP通信装置を接続した場合、ポートリユース機能によってNATルータのWAN側ポート番号も同じ「15000」に割り当てられる。そして、この場合NATルータはコーン系のNAT機能で動作する。
【0031】
しかし、図19(b)に示すように、既にローカルポート番号が「15000」のIP通信装置aが接続され、WAN側ポート番号「15000」がIP通信装置aに割り当てられているとき、同じローカルポート番号「15000」を使用するIP通信装置bが新たに接続された場合、IP通信装置bのWAN側のポート番号は「15000」が使用中であるため、ポートリユース機能を有しているNATルータでもこの番号を割り当てられない。このためIP通信装置bに関連付けるWAN側ポート番号としては、別のWポート番号、たとえば「1024」を割り当てる。
【0032】
このようにポート番号の重複を避ける割り当てが行われると、ポートリユース機能が中止され、NATルータは固有の割り当てルールによりWAN側のポートを割り当てるようになる。このような動作モードになった場合、同じIP通信装置bの「15000」のローカルポートからの送信であっても、送信先が変わることにより任意のWAN側ポートを割り当て、コーン系とは異なる動作を行う場合がある。この「送信先によりWAN側ポートが変化する」という動作は、シンメトリックのNATルータの動作と同じになる。
【0033】
このように後から接続されたIP通信装置に対して、このルータは本来予定されているローカルポート番号と一致するWAN側ポート番号に代えて、別の任意のWAN側ポート番号を割り当て、この任意に割り当てられたポートにおいてはシンメトリックのNAT動作を行う。このようにNATルータの状態が切り換わると、図10(b)に示すように正常にP2P通信ができなくなる。調査した結果、こうした動作を行うNATルータは市販されているポートリユース機能を備えたNATルータの約40%を占めている。
【0034】
また、通常、NAT種別判定動作を行うポート使用範囲は、処理を簡易にするために排他制御などを行わないようにする必要から、たとえばIP電話機のVoIPトラフィックのポートとNAT種別判定のポートとでは、両者が互いに影響しない独立した範囲でそれぞれポート番号を取得するように使い分けられている。ある所定の範囲内のポートで順次NAT種別判定を行っても、この検知処理は通信で使用するポート範囲とは異なる領域のポート番号で判定を行うため、音声パケットなどのデータ通信を邪魔することはない。しかしながら、使用するポート番号が異なるため音声パケットなどのデータ通信を行うポート番号でシンメトリックの動作を行うかを通常のNAT種別判定処理では検出できない。
【0035】
たとえば、IP電話機などの場合、1024〜49151の使用可能なポート番号の中で、音声パケット通信のポート番号は10000〜20000の番号が使用されるのが通例であり、NAT種別判定を行うポート番号はたとえば30000〜40000の中から選ばれる。排他制御などを行わないように、両者のポート番号は互いに影響しない範囲の番号となっている。
【0036】
しかしながら、PC(Personal Computer)などのIP通信装置のポート使用領域にはIP電話機などのような制限はなく、ポート指定はアプリケーション次第であって、1024〜49151(あるいはそれ以上)のどの番号も使用可能である。従って、ポートリユースのNATルータの場合、実際にどのポート番号が使用されるか分からず、後から接続されるIP電話機において使用が予定されていた10000〜20000のポート番号が、利用者の知らない間にポートリユース機能が使用できずに別のポートにマッピングされる可能性が生じるのである。
【0037】
また、NATの種類が変化してシンメトリックで動作するということは、SIPで通信するシステムにおいては、P2Pの通信に移行できるのか、SBC(Session Border Controller)サーバなどを介しての通信に移行するのか、ということで結果が大きく分かれる。SBCサーバはデータ通信を行うメディア中継サーバの1つであって、NATで保護された2つのIPネットワーク間でもVoIPトラフィックだけを通信させるものである。
【0038】
NAT種別がシンメトリックの動作に切り換わったことが把握できていれば、発信を行う際に最初から図10(c)に示すようにSBCサーバを介して通信するように制御することができ、異なるIPネットワーク間のIP電話機の通話が可能になる。しかしSBCサーバを介するデータ通信は通信系への負荷も大きい。NAT種別がシンメトリックでP2Pに移行できない場合は、負荷が大きくなるSBCサーバ経由での通信をせざるを得ないが、SBCサーバ維持するには前記の通りコスト面などで問題となるため、通信事業者としては極力P2Pでの通信が望まれている。
【先行技術文献】
【特許文献】
【0039】
【特許文献1】特開2006−253824号公報
【非特許文献】
【0040】
【非特許文献1】Geoff Huston著、"Anatomy: A Look Inside Network Address Translators"、 The Internet Protocol Journal、Cisco Systems Inc.、2004年9月、Volume 7、Number 3、p.2−32
【発明の概要】
【発明が解決しようとする課題】
【0041】
前述のようにNATルータがポートリユース機能を有するものである場合、この種のNATルータのNATは通常はコーン系の動作であるが、図19(b)に示すようにポートが重複するIP通信装置をこれに接続したときに自動的に空き状態のほかのポートを割り当て、実質的にシンメトリックのNATに変化する場合がある。そのことを利用者が認識していない場合、コーン系の動作が予定されているのにも関わらず、利用者の知らない間にシンメトリックの動作に変化する。IP電話機のデータ通信用のポートとしてほかの予定外のポートが割り当てられた状態で、その変化がつかめないままIP電話機3aがデータ通信用のポートを指定(たとえば1500)しても、図10(b)に示すようにNATルータ2aはほかのポートで受けようとするので、IP電話機3bから送信されたメッセージはNATルータ2aにてブロックされる可能性がある。また、たとえブロックされない場合でも、実際に通信(送信)を行っているポートは別(1500)であるため、通常、パケット送信が行われていない元のポート(1024)は一定時間送信がないポートとしてNATルータ側でクローズされ、通信できなくなる。
【0042】
上記のような場合、発呼処理の段階ではSIPポートへの影響はないため、通話前の処理は完了し、IP電話機はプロトコルP2P通信を始めようとする。しかしNATルータはシンメトリックと同様なポート割り当て動作に切り換わっているので、通話相手のIP電話機から直接送られてくる音声データはNATルータによりブロックされ自端末に届かない現象などが発生する。使用者からこの状況を見た場合、正常に発信操作はできたものの、相手からの音声が聞こえない通信事故のような状態に陥る。このように、たとえNAT種別判定を定期的に行っていても、あるときNATルータがシンメトリックの動作に変化し、IP電話機が定期的な判定で取得しているルータのNAT種別情報と、実際に通話しようとするときのNAT種別が不整合であれば発信操作をしても相手と通信することができず、NATが変化してから次の定期的なNAT判定まで通信不可となってしまう。
【0043】
またIP電話機がNATルータのNAT種別をリアルタイムで判別するために頻繁にRFC3489のNAT種別判定動作を行うと、NAT種別の判定は1回あたり比較的長い時間(40秒)を要する処理であるため、トラフィックの混雑を引き起こし、またIP電話機の発信動作に支障が生じることがある。
【0044】
発呼処理の際に最初から図10(c)に示すように音声データなどのデータ通信(通話)をメディア中継サーバ5(SBCサーバ)が介するようにすれば前述の通信事故のような状態に陥ることは回避できる。しかしながら、前述の通り全ての通信をSBCサーバ経由とした場合、SBCサーバ設置や維持コストなどの面で通信事業者の負担が問題となる。
【0045】
本発明は、できるだけメディア中継サーバ5に負荷をかけないようにするために、P2P接続を推奨し、ネットワークと接続されるNATルータのNAT種別が変化していても、通信時に迅速な判定を行って通信不可を回避するIP通信装置、通信システム、判定方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0046】
このような問題を解決するために本発明のIP通信装置は、通信開始のイベントが発生すると第1のサーバに対してWAN側のポート番号確認のための第1のリクエストを生成し、さらに第2のサーバに対してWAN側のポート番号確認のための第2のリクエストを生成し、第1のリクエストに応じて返送されて来る第1のレスポンスにより入手したNATルータのWAN側のポート番号と、第2のリクエストに応じて返送されて来る第2のレスポンスにより入手した該NATルータのWAN側のポート番号が一致した場合にはNAT種別をコーン系と判定し、不一致の場合にはシンメトリックと判定するNAT種別不整合判定処理部を備えたものである。
【発明の効果】
【0047】
本発明は、通信開始のイベントが発生すると第1のサーバに対してWAN側のポート番号確認のための第1のリクエストを生成し、さらに第2のサーバに対してWAN側のポート番号確認のための第2のリクエストを生成し、第1のリクエストに応じて返送されて来る第1のレスポンスにより入手したNATルータのWAN側のポート番号と、第2のリクエストに応じて返送されて来る第2のレスポンスにより入手した該NATルータのWAN側のポート番号が一致した場合にはNAT種別をコーン系と判定し、不一致の場合にはシンメトリックと判定するNAT種別判定処理部を備えたものであり、定期的なNAT種別の判定処理の間にNATルータのNAT種別が変化していても、通信開始時に短時間に判定を行うことで通信不可となる状態を回避することができる。また定期的に行われるNAT種別の判定処理の間にNAT種別が変化した場合も、通信時に短時間で判定を行って通信不可となる状態を回避することができる。
【図面の簡単な説明】
【0048】
【図1】本発明の実施の形態におけるNATルータを介してIP通信装置同士が通信を行う通信システムの構成図
【図2】本発明のIP通信装置の一例であるIP電話機の外観図
【図3】本発明のIP電話機のハードウェアブロック図
【図4】本発明の機能ブロック構成図
【図5】本実施の形態における通信システムで使用されるNATルータのハードウェアの構成図
【図6】IP電話機のソフトウェア的な機能ブロック構成図
【図7】本実施の形態における通信システムで使用されるSIPサーバ(呼制御サーバ)またはメディア中継サーバが持つハードウェア構成を示す図
【図8】SIPサーバの機能ブロック構成図
【図9】NATルータ配下のIP電話機がプロトコルP2Pで互いに通信できる場合のシーケンス図
【図10】(a)IP電話機がP2P(Peer to Peer)で通信できる場合の概念図、(b)NATルータの状態が切り換わって従来の手順ではP2P通信できなくなった場合を示す概念図、(c)P2P通信ではなくメディア中継サーバを介して通信する場合の概念図
【図11】(a)バインディングリクエストのSTUNメッセージ簡易フォーマット図、(b)バインディングレスポンスのSTUNメッセージ簡易フォーマット図
【図12】(a)[STUNテスト1]におけるメッセージの送受信の概念図、(b)[STUNテスト2]におけるメッセージの送受信の概念図、(c)[STUNテスト1’]におけるメッセージの送受信の概念図、(d)[STUNテスト3]におけるメッセージの送受信の概念図
【図13】定期的に行われるNAT種別判定においてNAT種別がコーン系と判定されている場合に、発呼のイベントがあった際のIP電話機の動作をマクロ的に示したフローチャート
【図14】本実施の形態におけるIP電話機は発呼イベントが検出されたときの処理のフローチャート
【図15】本発明の実施の形態におけるNATルータのNAT種別がコーン系の場合の外部アドレス検出処理のシーケンス図
【図16】本発明の実施の形態において、IP電話機から発呼する際、前回までのNAT種別判定結果がシンメトリックである場合の通信のシーケンス図
【図17】本発明の実施の形態におけるプログラムの構成図
【図18】STUNリクエストを送信し受信したSTUNレスポンスの結果から現在のNATの動作状態を取得するフローチャート
【図19】(a)コーン系のNAT機能で動作する場合を説明する図、(b)コーン系のNAT機能で動作するはずのIP通信装置がシンメトリックのNAT機能で動作してしまうことを説明する図
【発明を実施するための形態】
【0049】
本発明の第1の構成は、NAT機能を有する中継装置の配下接続可能なIP通信装置であって、STUNサーバに対して第1のリクエストまたは第2のリクエストを送信し、これらリクエストに対して送り返されて来るレスポンスを受信する通信制御部と、STUNサーバからのレスポンスを受信したとき、前記中継装置が生成したマッピング情報とWAN側のポート番号情報を取り出す位置情報取出部と、前記中継装置を介して、STUNサーバへのリクエストを送信する動作および該リクエストに応答して返送されて来るレスポンスを受信する動作を複数回行うことによって前記中継機器のNAT種別を判定するNAT種別判定処理を定期的に実行し、判定結果に応じて最新のNAT種別情報を更新するNAT種別判定処理部と、通信開始のイベントが発生すると、前記中継装置を介してSTUNサーバに対してポート番号取得のために第1のリクエストを送信し、前記第1のリクエストに応答して返送されて来る第1のレスポンスから第1の送信元ポート番号を取り出し、前記中継装置を介してほかのSTUNサーバに対してポート番号取得のために第2のリクエストを送信し、前記第2のリクエストに応答して返送されて来る第2のレスポンスから第2の送信元ポート番号を取り出し、第1の送信元ポート番号と第2の送信元ポート番号が一致した場合には前記中継装置のNAT種別をコーン系と判定し、第1の送信元ポート番号と第2の送信元ポート番号が不一致の場合には前記中継装置のNAT種別をシンメトリックと判定するNAT種別不整合判定処理部を備えたことを特徴とするIP通信装置である。
【0050】
この構成によって、2つのネットワークを接続する中継機器のNAT種別が変化していても、通信時に短時間に判定を行って通信不可を回避することができる。
【0051】
本発明の第2の構成は、前記第1の構成においてさらにNAT種別判定処理部がRFC3489で規定されたプロトコルSTUNに準拠して定期的にSTUNサーバとの間でSTUNメッセージをそれぞれ送受信してNAT種別判定を行うIP通信装置である。
【0052】
この構成によって、定期的に行われるNAT種別判定処理で一度判定処理が完了し、次の判定処理が行われる前にNAT種別が変化した場合も、通信時に短時間で判定を行って通信不可を回避することができる。
【0053】
本発明の第3の構成は、ネットワークに接続されたSTUNサーバと、このネットワークに接続され、NAT機能を有する中継装置と、前記中継装置の配下接続可能なIP通信装置とを備えた通信システムであって、中継機器のNAT種別を判定するNAT種別判定処理を定期的に実行し、判定結果に応じて最新のNAT種別情報を更新するNAT種別判定処理部を備え、さらに、IP通信装置に通信開始のイベントが発生すると前記中継装置を介してSTUNサーバに対してポート番号取得のために第1のリクエストを送信し、前記第1のリクエストに応答して返送されて来る第1のレスポンスから第1の送信元ポート番号を取り出し、前記NAT種別判定処理部が判定した最新のNAT種別情報がコーン系を示している場合には第1のリクエストを送信したときの宛先とは異なるほかのSTUNサーバに対してポート番号取得のために第2のリクエストを送信し、前記第2のリクエストに応答して返送されて来る第2のレスポンスから第2の送信元ポート番号を取り出し、前記第1のリクエストに関するWAN側のポート番号と前記第2のリクエストに関するWAN側のポート番号が一致した場合にはNAT種別は変化無と判定し、不一致の場合にはシンメトリックに切り換わったと判定するNAT種別判定処理部を備え、このNAT種別不整合判定処理部が変化無と判定した場合はコーン系に対応した通信のシーケンスを開始し、シンメトリックであると判定した場合はシンメトリックに対応した通信のシーケンスを開始するように構成したIP通信装置である。
【0054】
この構成によって、中継機器のNAT種別が変化していても、通信時にコーン系のままであるかまたはシンメトリックに切り換わったかを短時間に判定することができ、コーン系からシンメトリックに切り換わった場合にpeer to peer(以下P2Pと略す)の音声通信が正常にできなくなる事態を未然に回避することができる。
【0055】
本発明の第4の構成は、下P2P通信を行うことが前提の第1の電話機が第2の電話機にネットワークの呼制御サーバを介して発呼したとき、発呼処理の中でNAT種別がシンメトリックと判定した場合、第1の電話機はビジー動作を行うことを特徴とする通信システムである。
【0056】
この構成によって、電話として利用されるとき、呼び出しの後に音声パケットのみが不通になるという現象を発生させることなく、実動作上P2Pで音声通信が正常にできないことをビジーという状態で操作者に通知することができ、電話の操作性が向上する。
【0057】
(実施の形態)
以下、本発明の実施の形態として、NAT機能付きの中継装置(以下、NATルータ)の配下に接続されたIP電話機において、NATルータのNAT種別が変化していても、通信時に迅速な判定を行って通信不可を回避できるようにした例について説明する。本実施の形態においては、IP電話機置が接続される中継装置としてNAT機能付きルータ(NATルータ)を説明するが、ゲートウェイ、PBX(Private Branch eXchange)などでNAT機能付きの中継装置またはサーバでもよい。また、実施の形態の通信システムは、NAT機能を有するNATルータと2台のSTUNサーバから構成されて、NAT機能を有するNATルータは異なった2つのIPネットワークの間に介在し、このIPネットワークの一方がインターネット網(WAN:Wide Area Network)であり、他方がたとえばEathernet(登録商標)などのLAN(Local Area Network)である。2台のSTUNサーバはインターネット網に接続される。
【0058】
但し、STUNサーバは2つのグローバルIPアドレスを制御可能な1台のサーバでも実現可能である。
【0059】
図1は、プロトコルSIP(Session Initiation Protocol)に準拠してIP電話機同士でVoIP通話を行う通信システムである。IP電話機3a(本発明における第1のIP通信装置)はNATルータ2aの配下に、またIP電話機3b(本発明における第2のIP通信装置)はNATルータ2bの配下に接続されている。NAT機能を有するNATルータ2a,2bのWAN側ポートはインターネット網1に接続されている。NATルータ2aとIP電話機3a、NATルータ2bとIP電話機3bはそれぞれLANを構成しており、これら各LANはNATルータ2a,2bのNATによってインターネット網1から保護されている。
【0060】
このインターネット網1にはVoIP通話の呼制御を行うSIPサーバ4(本発明における呼制御サーバ)が接続される。さらに、メディアプロキシとして機能するメディア中継サーバ5が接続されている。実施の形態の場合、メディア中継サーバはSBC(Session Border Controller)サーバであり、インターネット網1の中でIP電話機のVoIPトラフィックのみを通信させる。NATルータ2a,2bのNAT種別がシンメトリックの場合は、このメディア中継サーバ5を介して通信が行われる。
【0061】
これに対して、NATルータ2a,2bのNAT種別がコーン系である場合は、メディア中継サーバ5を介すことなく、IP電話機3a,3bがP2Pで直接通信を行うことが可能になる。
【0062】
次に、実施の形態の通信システムにおいては、インターネット網1にSIPサーバ4、メディア中継サーバ5、NATルータ2a、NATルータ2b、STUNサーバA6a(本発明の第1のサーバに相当)、STUNサーバB6b(本発明の第2のサーバに相当)が接続される。IP電話機3a,3bはこのNATルータ2a,2bに接続される。従って、IP電話機3a,3bが互いにP2P通信を行うには、NATルータ2a,2bのインターネット網側に割り当てられる(以下「WAN側の」と記述する)グローバルIPアドレスとポート番号を知る必要がある。このためIP電話機3a,3bはRFC3489に準拠して、NATルータ2a,2bを介してSTUNサーバA6aまたはSTUNサーバB6bにバインディングリクエスト(本発明におけるWAN側のポート番号確認のためのリクエスト)を送信し、その応答として受信したバインディングレスポンスをもとにNATルータ2a,2bのグローバルIPアドレスとWAN側のポート番号の情報取得を行っている。
【0063】
図2は本発明のIP通信装置の一例であるIP電話機3aの外観図である。IP電話機3aは、ハンドセット302が本体301の上に載置され、使用者がハンドセット302を取り上げたときオフフックとなり、ハンドセット302を載置台に載せたときオンフックとなる。本体301には表示部303が設けられ、ダイヤル番号などの操作内容、操作ガイドなどを表示する。表示部303の付近に機能ボタン305が配置され、さらに機能ボタン305の周辺には「0」〜「9」、「*」、「#」のダイヤルボタン304が設けられている。このダイヤルボタン304を押下することでダイヤルなどできる。
【0064】
図3は本発明のIP電話機3a,3bのハードウェアブロック図であり、図4は本発明の機能ブロック構成図である。図3,4に示すようにIP電話機3a,3bには本体301の内部に基板が内蔵されており、基板にはVoIP通話の処理を行うDSP(Digital Signal Processor)306、CPU(Central Processing unit)307、プログラムを記憶したROM(Read Only Memory)308、作業領域となるRAM(Random Access Memory)309が搭載されている。このほかハンドセット302に接続される入出力インターフェース(I/F)310、ネットワークケーブルに接続されるネットワークインターフェース(I/F)311が設けられている。
【0065】
図4は本実施の形態におけるIP電話機3aの機能ブロック構成を示す。図4に示すように、IP電話機3a,3bのそれぞれのCPU307は所定のメモリに格納されたプログラムを読み出して実行することでVoIP処理部313として機能し、IP電話機3a,3b間のVoIP通話の通信制御を行う。このVoIP処理部313には音声処理部315とパケット処理部316が設けられ、回線接続部314を介してNATルータ2a,2bとの間で送受信するIPパケットのRTP(Real−time Transport Protocol)ペイロードを取り出し、この音声データを音声処理部315において復号化し、D/A変換後にアナログ音声信号としてハンドセット302から出力する。また、音声処理部315はハンドセット302から入出力部317を介して入力されたアナログ音声信号をA/D変換して符号化し、これをIPパケットにして回線接続部314から送信する。
【0066】
図5は本実施の形態における通信システムで使用されるNATルータ2a,2bのハードウェアの構成図である。図示しないが、NATルータ2a,2bは箱型のケース表面にネットワークケーブル(たとえばEathernet(登録商標)ケーブル)の端子を挿入する接続口(LAN側接続子204、WAN側接続子205)が配設された外観を有している。NATルータ2a,2bの内部には通信処理を行うためのプロセッサ、すなわちCPU201が設けられている。さらに機能に応じてDSP(図示しない)を設けることもできる。CPU201は、外部バスによってROM202に接続され、ROM202からプログラムを読み出して、メインメモリとなるRAM203に読み出して処理を実行する。また、CPU201は外部バスを介してLAN側接続子204、WAN側接続子205に接続される。LAN側接続子204はネットワークケーブルによってIP電話機3aまたはIP電話機3bに接続され、WAN側接続子205はインターネット網1に接続される。LAN側接続子204、WAN側接続子205を経由して送受信されるIPパケットはNATルータ2a,2bにおいてNAT処理が行われることで通信が可能になる。
【0067】
図6はIP電話機3a,3bのソフトウェア的な機能ブロック構成図を示す。この各機能ブロックは、CPU307にプログラムを読み込んで機能実現手段として構成される各機能をそれぞれ表す。通信制御部209はSIPやRTPなど上位層の通信制御、NAT種別判定、位置情報取得の為のバインディングリクエストおよびバインディングレスポンスの送受信を行う。通信プロトコル処理部207において通信のための制御を行い、通信情報処理部208において、音声データのための処理が行なわれ、回線処理部206で対応する装置と通信する。
【0068】
グローバルアドレス・ポート検出プロトコル処理部210は、NATルータの外側のグローバルIPアドレスやポート番号を検出する為、およびNAT種別判定の為のバインディグリクエストをSTUNサーバに対して送信する処理を制御する。このグローバルアドレス・ポート検出プロトコル処理部210は、STUNテスト1,2,1’,3、およびNAT種別不整合判定処理などの目的に応じてバインディングリクエストのフラグを設定し、通信制御部209にバインディングリクエストの送信を指示する。バインディングリクエストはNATルータを通ってSTUNサーバへ送られる。送信したバインディングリクエストに応じて返されるバインディングレスポンスが受信されると、通信制御部209はバインディングレスポンスを受信バインディングレスポンスから設定されている情報を取り出す。
【0069】
位置情報取出部211は、通信制御部209で取り出された情報からWAN側のグローバルIPアドレスやポート番号などの情報を抽出する。
【0070】
NAT種別判定処理部212は、STUNサーバへ送ったバインディングリクエストに応じたバインディングレスポンスが受信できるか否か、またはバインディングレスポンスから抽出されたグローバルIPアドレスおよびWAN側のポート番号と自己に割り当てられたIPアドレスおよびポート番号と比較して一致するか否かを調べることにより、接続されているNATルータのNAT種別判定を行う。これらの機能ブロックは、RFC3489で規定されて定期的に行われるNAT種別の判定処理においても使用され、また本発明の実施の形態において発呼イベントが生じた際の外部アドレス判定処理においても使用される。
【0071】
NAT種別不整合判定処理部213は、発呼イベントが生じた際に、STUNサーバAに対して送信した第1のリクエストに応答して返送される第1のレスポンスから取り出した第1のWAN側のポート番号と、STUNサーバBに対して送信した第2のリクエストに応答して返送される第2のレスポンスからから取り出した第2のWAN側のポート番号を比較し、接続されているNATルータの端末で通信に使用するポートに対してNATが割り当てるポート割り当てのルールがシンメトリックか否かを判定する。第1のWAN側のポート番号と第2のWAN側のポート番号が不一致の場合には前記接続されているNATルータのNAT種別をシンメトリックに変化したと判定する。
【0072】
NAT種別不整合判定処理部213は、発呼イベントが生じた際に、STUNサーバAに対して送信した第1のリクエストに応答して返送される第1のレスポンスから取り出した第1の送信元ポート番号と、STUNサーバBに対して送信した第2のリクエストに応答して返送される第2のレスポンスからから取り出した第2の送信元ポート番号を比較し、前記接続されているNATルータのNAT種別がコーン系であるかまたはシンメトリックであるかを判定する。第1の送信元ポート番号と第2の送信元ポート番号が不一致の場合には前記接続されているNATルータのNAT種別をシンメトリックに変化したと判定する。
【0073】
なお図6の位置情報取出部211、グローバルアドレス・ポート検出プロトコル処理部210、NAT種別判定処理部212、NAT種別不整合判定処理部213におけるソフトウェア的構成はプログラムのところで詳述する。また、マッピング位置情報はRAM309の中に設けられたテーブルに保持される。
【0074】
図7は本実施の形態における通信システムで使用されるSIPサーバ4(呼制御サーバ)またはメディア中継サーバ5が持つハードウェア構成を示す図であり、これらのサーバはパーソナルコンピュータなどと同様の構成を有し、CPU401、プログラムを記憶したROM402、RAM403が搭載されるとともに、ネットワークケーブルに接続されるネットワークインターフェース(I/F)404が設けられている。
【0075】
図8はSIPサーバ4の機能ブロック構成図を示す。SIPサーバ4には3種類のサーバが搭載されている。第1のサーバはプロキシサーバ411であり、ネットワークからのリクエストやレスポンスを中継するサーバである。第2のサーバはリダイレクトサーバ412であり、これはリクエストがあったときそのパケットの送信先位置情報(URI(Uniform Resource Identifier))を参照するものである。さらに第3のサーバは登録サーバ413であって、IP電話機3a,3bからREGISTERのメッセージが送信されると、そのURIをロケーションサーバ(図示しない)に格納する。メディア中継サーバ5の機能ブロック構成は図示しないが、図8の構成で単機能のプロキシサーバになる。
【0076】
ここで、IP電話機3aとIP電話機3b間で通話するときに、通常行われるシーケンスについて説明する。図9はNATルータ2a,2b配下のIP電話機3a,3bがプロトコルP2Pで互いに通信できる場合のシーケンス図を示す。ここで、以下説明を容易にするため具体的な例を挙げて説明する。
【0077】
IP電話機3aはIPアドレスが「192.168.0.2」、SIP通信用ポート番号が「5060」、データ通信(VoIP)用のポート番号が「15000」とし、IP電話機3bはLAN側のIPアドレスが「192.169.0.2」、SIP通信用ポート番号が「5060」、データ通信(VoIP)用のポート番号が「15000」とする。また、NATルータ2aのLAN側のIPアドレスは「192.168.0.1」、WAN側のIPアドレスが「192.196.0.1」、SIP通信用ポート番号が「5060」、データ通信(VoIP)用のポート番号が「15000」とし、NATルータ2bのLAN側のIPアドレスは「192.169.0.1」、グローバルIPアドレスが「192.197.0.1」、SIP通信用ポート番号が「5060」、データ通信用ポート番号が「15000」とする。また、SIPサーバ4のグローバルIPアドレスが「192.198.0.1」とする。以下に整理して記載する。
[IP電話機3a]
LAN側のIPアドレス: 「192.168.0.2」
SIP通信用ポート番号: 「5060」
データ通信(VoIP)用のポート番号: 「15000」
[NATルータ2a]
LAN側のIPアドレス: 「192.168.0.1」
グローバルIPアドレス: 「192.196.0.1」
SIP通信用ポート番号: 「5060」
データ通信(VoIP)用のポート番号: 「15000」
[IP電話機3b]
LAN側のIPアドレス: 「192.169.0.2」
SIP通信用ポート番号: 「5060」
データ通信(VoIP)用のポート番号: 「15000」
[NATルータ2b]
LAN側のIPアドレス: 「192.169.0.1」
グローバルIPアドレス: 「192.197.0.1」
SIP通信用ポート番号: 「5060」
データ通信用ポート番号: 「15000」
[SIPサーバ4]
グローバルIPアドレス: 「192.198.0.1」
なお、これらはあくまで例示のアドレスとポートである。
【0078】
上記したグローバルIPアドレス「192.196.0.1」の情報は、IP電話機3aがSTUNサーバA,Bを使って定期的なNAT種別判定を行うことにより取得することができ、IP電話機3a内のメモリに記憶される。
【0079】
一般的に端末(ローカル)で使用するSIP通信用ポート番号はシステムで予め決定されるものであり、動的に変化するものではない。本実施の形態ではSIP通信用ポート番号として「5060」が決められている。また、データ通信で使用するポート番号は通常は実際にデータ通信を行う際に割り当てられるため、ある番号に固定されていない(使用時に動的にポート番号が割り当てられる)。但し、ここでは明示的に説明するためにデータ通信のポート番号として「15000」が割り当てられるものとする。
【0080】
NATルータ2aのグローバルIPアドレス「192.196.0.1」は、たとえば午前5時に定期的に行われた判定で取得されたものである。同様に、NATルータ2bのグローバルIPアドレス「192.197.0.1」についても定期的なNAT種別判定で取得されたものである。
【0081】
図11はNAT種別判定で使われるメッセージのフォーマットを示す。まず、STUNメッセージのフォーマットについて説明する。図11(a)はバインディングリクエストのSTUNメッセージ簡易フォーマット図である。通常この簡易フォーマットが使用される。図11(a)に示すようにバインディングリクエストはヘッダ部とメッセージ部から構成される。このメッセージ部にはリクエストの属性としてCHANGE−REQUESTが書き込まれる。そして、IPchangeフラグとポートchangeフラグの2つのフラグがセットされる。
【0082】
IPchangeフラグをOFFにしてバインディングリクエストをSTUNサーバAへ送信すると、このバインディングリクエストに対する応答が送信先サーバ(STUNサーバA)のグローバルIPアドレスから返される。バインディングリクエストに対する相手からの応答はバインディングレスポンスと呼ばれる。
【0083】
またバインディングリクエストのIPchangeフラグがONに設定されている場合は、このバインディングリクエストに対する応答(バインディングレスポンス)は送信先のサーバのグローバルIPアドレスと対になった別のグローバルIPアドレスをもつサーバから送信される。
【0084】
すなわち、IPchangeフラグについて整理すると、
IPchangeフラグ:OFF
このリクエストの宛先IPアドレスと同じIPアドレスを送信元としてバインディングレスポンスが返される。
【0085】
IPchangeフラグ:ON
このリクエストの宛先IPアドレスとは異なるIPアドレスを送信元としてバインディングレスポンスが返される。たとえばSTUNサーバAにバインディングリクエストを送ると、STUNサーバBからバインディングレスポンスが返される。
【0086】
また、バインディングリクエストのポートchangeフラグがOFFの場合、このリクエストを送信した送信先のWAN側のポート番号と同じポート番号を使ってバインディングレスポンスが送信される。
【0087】
バインディングリクエストのポートchangeフラグがONの場合は、このリクエストを送信したWAN側のポート番号と対になった別のポート番号を使ってバインディングレスポンスが送信される。従って、この組み合わせにより、バインディングリクエストは4通りのバインディングレスポンスを取得することができる。
【0088】
すなわち、ポートchangeフラグについて整理すると、
ポートchangeフラグ:OFF
このリクエストを送信したときの送信先のWAN側のポート番号(STUNサーバAのポート番号)と同じポート番号を使ってバインディングレスポンスが送信される。
【0089】
STUNサーバAがポート8080でバインディングリクエストを受信したなら、STUNサーバAはそれに対するバインディングレスポンスを同じ8080から送信する。
IP電話機がIPchangeフラグとポートchangeフラグを何れもOFFにしてリクエストを送信すると、それに対するバインディングレスポンスを受信したときに、該リクエストを転送した際の送信元グローバルIPアドレスとWAN側のポート番号を取得できる。
【0090】
ポートchangeフラグ:ON
このリクエストを送信した送信先のWAN側のポート番号(STUNサーバAのポート番号)とは異なる別のポート番号を使ってバインディングレスポンスが送信される。
【0091】
STUNサーバAがポート8080でバインディングリクエストを受信したなら、STUNサーバAはそれに対するバインディングレスポンスをほかの8081から送信する。
【0092】
図11(b)はバインディングレスポンスのSTUNメッセージ簡易フォーマット図である。このバインディングレスポンスのメッセージ部にはレスポンスの属性として、MAPPED−ADDRESS、SOURCE−ADDRESS、CHANGE−ADDRESSが書き込まれる。
【0093】
このうちMAPPED−ADDRESSには、バインディングリクエストを送信した際に通過したNATルータ2a,2bのグローバルIPアドレスおよびWAN側のポート番号が書き込まれ、SOURCE−ADDRESSにはバインディングレスポンスを送信したSTUNサーバの送信元グローバルIPアドレスおよびWAN側のポート番号が書き込まれる。
【0094】
そしてバインディングレスポンスのCHANGE−ADDRESSには、バインディングリクエストにおいてIPchangeフラグまたはポートchangeフラグの何れか1つまたは両方のフラグをONに設定したときに、STUNサーバによってバインディングリクエストの送信先のグローバルIPアドレスおよびWAN側のポート番号とは異なるグローバルIPアドレスおよびWAN側のポート番号が書き込まれる。すなわちバインディングリクエストを受けたSTUNサーバ(STUNサーバAまたはSTUNサーバB)は、該リクエストに対するレスポンスを送信する際に、ほかのグローバルIPアドレスおよびWAN側のポート番号をCHANGE−ADDRESSの欄に書き込み、バインディングレスポンスを送信する。
【0095】
このようにバインディングメッセージの送り元がCHANGE−REQUESTの属性を指定することで、マッピングされているグローバルIPアドレスとWAN側のポート番号を取得したり、送信先STUNサーバからのレスポンスを受信できるか否か、あるいは送信先のSTUNサーバとは異なる(対となる)別のIPアドレス,ポート番号からのレスポンスを受信できるか、またはIPアドレスが同じでポート番号だけが異なるレスポンスを受信できるか、などの判定処理を行うことができる。
【0096】
本実施の形態におけるIP電話機の定期的なNAT種別の判定はすでに背景技術の項で図12および図18に基づいて説明したNAT種別判定処理(RFC3489で規定)と同様である。すなわちIP電話機3aのグローバルアドレス・ポート検出プロトコル処理部210によりNATルータ2aを介してSTUNサーバへSTUNリクエストを送信し、位置情報取出部211およびNAT種別判定処理部212が受信したSTUNレスポンスの結果から現在のNATの動作状態を取得する。
【0097】
図13は定期的に行われるNAT種別判定においてNAT種別がコーン系と判定されている場合に、発呼のイベントがあった際のIP電話機3aの動作をマクロ的に示したフローチャートである。待機時、IP電話機3aは発呼のイベントの有無を監視している(step1)。たとえば本実施の形態に示される電話機の場合は、使用者によって発呼に関連する操作が為された場合、またはハンドセットのオフフックや電話帳表示の為のボタン操作などが為された場合に発呼のイベント有りと認識する。
【0098】
IP電話機3aは発呼のイベントを取得すると外部アドレスの判定処理を実行する(step2)。この外部アドレスの判定処理の手順については後で図14に沿って詳細に説明する。
【0099】
次にstep3においてNAT種別がコーン系からシンメトリックへ変化していないか否かが判定され、シンメトリックへ変化したことが判明した場合は設定をシンメトリックに変更し(step4)、シンメトリックに対応した通信を開始の処理に移る。判定の結果がコーン系である場合にはNAT種別はそのままで通信を開始させる(step5)。通話が終了すると、step1に戻って待機する。
【0100】
次に本実施の形態において、発呼イベントが検出されたときに行われるNAT種別不整合判定処理について詳細に説明する。NAT種別不整合判定処理は、通信開始時、図13に示す外部アドレスの判定処理の後に実行される。
【0101】
図14は本実施の形態におけるIP電話機3aは発呼イベントが検出されたときの処理のフローチャートを示す。発呼イベントが検出されたときIP電話機3aは前述のように、NATルータ2aのグローバルIPアドレスやポート番号を検出するためのバインディングリクエスト(本発明におけるWAN側のポート番号確認のための第1のリクエスト)をSTUNサーバAに送信する(step11)。このときのバインディングリクエストではIPchangeフラグ,ポートchangeフラグをともにOFFにすることにより、そのリクエストに対するバインディングレスポンスが同じグローバルIPアドレスを発信元とし、かつ同じSTUNサーバAが該リクエストを受けたときと同じポート番号を使ってバインディングレスポンスを返信するようにSTUNサーバAに伝える。なお、前述のようにSTUNサーバへバインディングリクエストを送って該リクエストに応じてSTUNサーバから返されるバインディングレスポンスのMAPPED−ADDRESSには、該バインディングリクエストを送信した際に通過したNATルータのグローバルIPアドレスおよびWAN側ポート番号が書き込まれる。
【0102】
step11で送信したリクエストに応じてSTUNサーバAから返送されるバインディングレスポンス(本発明における第1のレスポンス)のSOURCE−ADDRESSには、NATルータ2aがSTUNサーバAへバインディングリクエストを転送した際のNATルータ2aの外部IPアドレスおよびWAN側ポート番号(STUNサーバAからのレスポンス受信した際の外部IPアドレスおよびポート番号に同じ)が収められている。IP電話機3aはSTUNサーバAからのバインディングレスポンスを受信すると、このバインディングレスポンスに収められた情報より、NATルータ2aの外部IPアドレスおよびNATルータ2aが開いたWAN側のポート番号を検出する(step12)。
【0103】
次ぎにIP電話機3aは、前回までのNAT種別判定結果を調べ(step13)、前回のNAT種別判定結果がコーン系であるか否かによって動作を切り換える。step13において、前回までのNAT種別判定結果がコーン系以外のNAT種別であるときは、コーン系以外に対応した処理実行する(step14)。フルコーン、レストリクテッドコーン、ポートレストリクテッドがコーン系のNATであり、シンメトリックとオープンネットワークがコーン系以外である。
【0104】
前回までのNATルータ2aのNAT種別がコーン系(すなわちフルコーン、ポートリストリクテッドコーン、リストリクテッドコーンの3種類)のNAT種別である場合、step15においてコーン系を維持しているかまたはシンメトリックに切り換わったかを確認するためのNAT種別不整合判定処理を実行する。
【0105】
step15では、step11で送信したグローバルIPアドレスおよびポート番号とは異なるグローバルIPアドレスとポート番号(すなわちSTUNサーバBのIPアドレスとポート番号)へバインディングリクエストを送信する。このときのバインディングリクエストでも、IPchangeフラグ,ポートchangeフラグをともにOFFにすることにより、そのリクエストに対するバインディングレスポンスが同じグローバルIPアドレス(すなわちSTUNサーバBのIPアドレス)を発信元とし、かつ同じSTUNサーバBが該リクエストを受けたときと同じポート番号を使ってバインディングレスポンスを返信するようにSTUNサーバBに伝える。このバインディングリクエストに対してSTUNサーバBがバインディングレスポンスを返送する。
【0106】
IP電話機3aはSTUNサーバBからのバインディングレスポンス(本発明における第2のレスポンス)を受信すると、このバインディングレスポンスのMAPPED−ADDRESSに収められた情報より、NATルータ2aがSTUNサーバBへバインディングリクエストを転送した際のNATルータ2aの外部IPアドレスおよびWAN側ポート番号(STUNサーバBからのレスポンスを受信した際の外部IPアドレスおよびポート番号に同じ)を検出する(step16)。
【0107】
次にIP電話機3aは、一回目の検出結果のポート番号(STUNサーバAからレスポンスを受信したときのNATルータ2aのWAN側ポート番号)と、二回目の検出結果のポート番号(STUNサーバBからレスポンスを受信したときのNATルータ2aのWAN側ポート番号)とを比較する(step17)。
【0108】
step17において、一回目と二回目の検出結果のポート番号が異なっていればシンメトリックと判断する。すなわち第1の宛先であるSTUNサーバAから返されたレスポンスと、第1の宛先とは異なる第2の宛先であるSTUNサーバBから返されたレスポンスがNATルータ2aの異なるポートを通して受信されたので、そのときにNATルータ2aはシンメトリックの動作としていると判定することができる。そしてこの場合にIP電話機3aはシンメトリックに対応した処理実行する(step18)。
【0109】
step17において、一回目と二回目の検出結果のポート番号が一致していればコーン系で有ると判定し、コーン系に対応した処理を実行する(step9)。すなわち第1の宛先であるSTUNサーバAから返されたレスポンスと、第1の宛先とは異なる第2の宛先であるSTUNサーバBから返されたレスポンスがNATルータ2aの同じポートを通して受信されたのであるから、両ポート番号が一致していればコーン系で有ると判定することができる。
【0110】
後処理としては、このようなNAT種別不整合判定処理でシンメトリックと判断される場合に、NAT種別をシンメトリックに変更してシンメトリックの動作に移行させ、NAT種別を整合させる。またIP電話機の場合、シンメトリックに切り換わっている場合には発呼したIP電話機に対して呼制御サーバからビジートーンを送出することにより、発呼者は通話できないことを即座に知ることができ、不整合の判定は短時間で行えるので、直ぐに通話が可能になる。
【0111】
なお、発呼イベントの際の外部アドレスの判定処理は従来でも行われ、通話開始の際の不可欠な処理であるが、本発明の実施の形態では外部アドレス判定処理の後にNAT種別不整合判定処理を行う。また本実施の形態では2つの判定処理ともグローバルIPアドレスおよびポートを検出するためにバインディングリクエストとバインディングレスポンスを利用しているが、NAT種別不整合判定処理はSTUNサーバだけでなく、ほかのサーバを利用して判定を行うこともできる。
【0112】
次に本実施の形態において、IP電話機3a、IP電話機3b間で実際に通話が行われる場合のシーケンスについて説明する。
【0113】
図9は、図1のネットワーク構成において本発明の実施の形態におけるNATルータ配下のIP電話機がプロトコルP2Pで互いに正常に通信する場合のシーケンス図をしめす。本実施の形態では、図9に示す処理を開始する前に、予めIP電話機3a,3bはSIPサーバ4の登録サーバ413に対して登録を行っておく。図9では図示しないが、IP電話機3a,3bはNATルータ2a,2b経由で登録サーバ413にREGISTERメッセージを送信し、登録サーバ413がそのURIを登録して200OKを送信することで行われる。
【0114】
発呼の際にINVITEまたは200OKの送信時に提示するSDP(Session Description Protocol)におけるデータ通信用のパラメータを指定する。IP電話機3aは以上のようなNAT種別判定動作を定期的に行い、NATルータのNAT種別情報およびデータ通信用のパラメータを記録および更新している。
【0115】
発呼の処理では、まず図9に示すようにIP電話機3aからのINVITEメッセージがSIPサーバ4(グローバルIPアドレス:「192.198.0.1」)当てに発信される。IP電話機3aからのINVITEメッセージは、まずNATルータ2aに転送され、NATルータ2aでは、{LAN側のIPアドレス「192.168.0.2」、ローカルポート番号「5060」}→{グローバルIPアドレス「192.196.0.1」、ポート番号「5060」}というアドレス変換が行われる。そしてNATルータ2aからNATルータ2aのグローバルIPアドレス「192.196.0.1」を送信元アドレスとして、ポート番号を「5060」としてSIPサーバ4宛てのINVITEメッセージが送信される。
【0116】
前述のようにSIPサーバ4の登録サーバ413(図8参照)には予めIP電話機3bのグローバルIPアドレス「192.197.0.1」、ポート番号「5060」が登録されているから、SIPサーバ4はこの位置情報に従ってIP電話機3b宛て(送信先グローバルIPアドレス「192.197.0.1」、ポート番号「5060」)のINVITEメッセージを送信する。
【0117】
相手方NATルータ2bはこのINVITEに対し、{グローバルIPアドレス「192.197.0.1」、ポート番号「5060」}を{LAN側のIPアドレス「192.168.0.2」、ローカルポート番号「5060」}にアドレス変換する。この変換後のINVITEメッセージがIP電話機3bに送られ、IP電話機3bにて着信したことになる。
【0118】
一方、図9に示すようにSIPサーバ4はINVITEをNATルータ2bに送信した後、発信元IP電話機3aに対し処理中であることを示す100TryingをNATルータ2a経由で送信する。
【0119】
着信側電話機の動作としては、上記したようにINVITEメッセージが着信したIP電話機3bはこの着信を契機に呼び出しするためのベルを鳴らす。さらにIP電話機3bは180RingingメッセージをNATルータ2b、SIPサーバ4、NATルータ2a経由でIP電話機3aに向けて送信する。この180Ringingメッセージの着信によりIP電話機3aは呼び出し中状態であることを発信側に伝える。
【0120】
ベルの鳴動に対して、IP電話機3bにおいてハンドセットが利用者によってオフフックされると、IP電話機3bは200OKをSIPサーバ4に宛てて送信する。これは一旦NATルータ2bに転送され、NATルータ2bはそのときのマッピングに従ってアドレス変換を行い、SIPサーバ4宛てに200OKを送信する。これを受けたSIPサーバ4は、この200OKをNATルータ3a宛てに送信する。
【0121】
この200OKを受信したNATルータ3aはマッピングに従ってアドレス変換を行い、IP電話3aにパケットを通知する。IP電話3aで200OKを受信すると、IP電話機3aはACKメッセージを送信し、NATルータ2aにおいてメッセージのアドレス変換を行ってSIPサーバ4へ転送し、SIPサーバ4の制御によってACKはNATルータ2bを経てIP電話機3bに送信される。この後、IP電話機3a,3bはNATルータ2a,2bを介して音声などのデータ通信を行うことができるようになり、通話データはメディア中継サーバ5を介すことなく、プロトコルP2Pで互いに送受信され、通話状態となる。IP電話機3a,3bが直接セッションで通話データを送受信するポート番号は前述の設定のように「1500」となるが、NATルータ2a,2bもデータ通信用ポートとしてポート番号:「15000」を空けているので、データをそのまま通過させる。
【0122】
終話するときは、一方のIP電話機がオンフックされると、他方のIP電話機へBYEのメッセージが送信され、これに対してこの他方から200OKが送られて終話し、初期状態となる。
【0123】
次に本発明の実施の形態において、前回までのNAT種別判定結果がコーン系であって、発呼する際のNAT種別不整合判定でもコーン系が維持されている場合の通信時のシーケンスを説明する。図15に示すように、IP電話機3aが発呼のイベントを取得すると、まずIP電話機3aは従来同様、バインディングリクエスト1をNATルータ2aを介してSTUNサーバAへ送信する。これに対してSTUNサーバAからのバインディングレスポンス1が送信され、IP電話機3aは該レスポンスに書き込まれた情報から、NATルータ2aのグローバルIPアドレスおよびWAN側のポート番号の情報を取り出す。
【0124】
次にIP電話機3aは前回までのNAT種別判定結果を調べ、前回のNAT種別判定結果がコーン系であるか否かによって動作を切り換える。前回の判定結果がコーン系である場合、IP電話機3aはSIPサーバ4へINVITEメッセージを投げる前に、コーン系からシンメトリックに切り換わっているか否かを確認するためのNAT種別不整合判定を行う。
【0125】
NAT種別不整合判定では、IP電話機3aはバインディングリクエスト1’をSTUNサーバBへ送信する。これに対してSTUNサーバBからのバインディングレスポンス1’が送信される。IP電話機3aは該レスポンスに書き込まれた情報から、NATルータ2aがバインディングリクエスト1’を転送する際に使用した外部グローバルIPアドレスおよびWAN側のポート番号の情報を取り出す。IP電話機3aは、NATルータ2aのWAN側ポート番号の情報を取り出すためのバインディングレスポンス1と、その後STUNサーバBへリクエスト1’を送信することによってSTUNサーバBから返されるバインディングレスポンス1’の2つのレスポンスに書き込まれたWAN側のポート番号の情報から、NATルータ2aがコーン系かまたはシンメトリックに切り換わっているか否かを判定する。
【0126】
図15に示す例では、NAT種別不整合判定によってコーン系と判断されるため、IP電話機3aはINVITEをSIPサーバ4に送信し、SIPサーバ4はこのメッセージをNATルータ2b経由でIP電話機3bに送信する。
【0127】
IP電話機3bはベルを鳴らし、180Ringing、200OKをNATルータ2bに送信する。このメッセージをNATルータ2bはSIPサーバ4、NATルータ2aを経てIP電話機3aに送信する。IP電話機3aは呼び出中となり、オフフックすると、AckがSIPサーバ4に送信され、SIPサーバ4はこのAckをNATルータ2b経由でIP電話機3bに送信する。これによりIP電話機3a,3b間の通話が開始される。通話を終了するときには、一方のIP電話機をオンフックすることでBYEメッセージが他方のIP電話機に送信され、初期状態となる。
【0128】
なおNAT種別不整合判定によってシンメトリックと判断された場合は、次の図16に示すシンメトリックに対応した通信のシーケンスとなり、IP電話機3aはINVITEをSIPサーバ4に送信し、SIPサーバ4はこのメッセージをNATルータ2b経由でIP電話機3bに送信する。
【0129】
図16は本発明の実施の形態において、IP電話機3aから発呼する際、前回までのNAT種別判定結果がシンメトリックである場合の通信のシーケンス図である。IP電話機3aが発呼のイベントを取得すると、前回までのNAT種別判定結果を調べ、NAT種別判定結果がシンメトリックである場合には直ぐにシンメトリックに対応した通信のシーケンスを開始する。
【0130】
すなわちIP電話機3aは、INVITEをSIPサーバ4に送信し、SIPサーバ4はこのINVITEメッセージをNATルータ2bを介してIP電話機3bに送信する。なお、IP電話機3aからIP電話機3bに呼び出しがあったことは別途メディア中継サーバ5に伝えられる。
【0131】
これに対し、IP電話機3bは、180Ringingおよび200OKを、NATルータ2bを介してSIPサーバ4に送り、SIPサーバ4はこれらをNATルータ2aを介してIP電話機3aに順に送信する。メッセージが着信するとIP電話機3aはAckをSIPサーバ4に送信し、SIPサーバ4はこのAckメッセージをNATルータ2b経由でIP電話機3bに送信する。
【0132】
これによりメディア中継サーバ5によってIP電話機3a,3b間にそれぞれセッションが張られ、IP電話機3a,3b間でメディア中継サーバ5を介して通話が開始される。通話を終了するときには、一方のIP電話機をオンフックすることでBYEメッセージが他方のIP電話機に送信され、初期状態となる。
【0133】
続いて、IP電話機3aに搭載される実施の形態におけるプログラムについて説明する。図17は図14のフローチャートで示した手順でNAT種別不整合判定処理を行うためのプログラムを示す。
【0134】
図17に示すようにこのプログラムには、IP電話機3aにおける発呼のイベントを取得する発呼のイベント取得手段501と、バインディングリクエスト1を送信する一回目メッセージ生成手段502とバインディングリクエスト2を送信する二回目メッセージ生成手段505とが設けられている。
【0135】
一回目メッセージ生成手段502はグローバルIPアドレス、ポート番号を検出するためのバインディングリクエスト1を生成し、通信制御部209からSTUNサーバAに送信させる。二回目メッセージ生成手段505はバインディングリクエスト2を生成してSTUNサーバB宛てにこれを送信させる。
【0136】
さらに、通信制御部209がバインディングリクエスト1,2に対するSTUNサーバA,Bからのバインディングレスポンス1,2を受信すると、そのメッセージからグローバルIPアドレス、ポート番号を取り出すアドレスポート取出手段503が設けられている。
【0137】
また、アドレスポート取出手段503がバインディングリクエスト1を受信したとき、NATがコーン系とそれ以外を判定するためのNAT種別確認手段504と、バインディングレスポンス2、バインディングレスポンス1から、別機能として、シンメトリックの状態をNAT種別確認手段504が検出したとき、シンメトリックへ動作状態を移行させるNAT変化処理手段506が設けられている。
【0138】
このほか、NAT種別判定処理を実行するために、タイマー510が計時し、所定の時刻が到来すると、時刻のイベント取得手段507がこのイベントを取得し、これによってSTUNメッセージ生成手段508が通信制御部209を介して[STUNテスト1][STUNテスト2][STUNテスト1’][STUNテスト3]を実行させる。アドレスポート取出手段503はこの応答結果をNAT種別判定手段509に送信し、これを基に判定する。
【0139】
これら一回目メッセージ生成手段502、二回目メッセージ生成手段505、STUNメッセージ生成手段508は、図6に示すグローバルアドレス・ポート検出プロトコル処理部210に位置付けられて機能するものであり、アドレスポート取出手段503は位置情報取出部211に位置付けられて機能し、さらに、NAT種別確認手段504、NAT変化処理手段506はNAT種別判定処理部212において機能するものである。
【0140】
図17に示したプログラムの各手段の機能を説明すると、発呼のイベント取得手段501が発呼のイベントを取得すると、一回目メッセージ生成手段502がバインディングリクエスト1を生成して通信制御部209によってSTUNサーバAに送信させ、STUNサーバAからバインディングレスポンス1を受信すると、アドレスポート取出手段503はこの受信メッセージからグローバルIPアドレスおよびNATルータ2aのWAN側ポート番号の情報を取り出す。
【0141】
次にNAT種別判定手段509が判定した前回までのNAT種別判定結果を調べる。前回までのNAT種別判定結果がコーン系である場合に、二回目メッセージ生成手段505がバインディングリクエスト1のグローバルIPアドレス,ポート番号とは異なるグローバルIPアドレス(STUNサーバB)とポート番号へのバインディングリクエスト2を生成し、通信制御部209によってSTUNサーバBに送信させる。通信制御部209がSTUNサーバBからバインディングレスポンス2を受信すると、アドレスポート取出手段503はこの受信メッセージからそのグローバルIPアドレスおよびNATルータ2aのWAN側ポート番号の情報を取り出す。
【0142】
次いで、この結果からNAT種別確認手段504が、一回目の検出結果のWAN側ポート番号と、二回目の検出結果のWAN側ポート番号とを比較する。一回目と二回目のポート番号が異なっていれば、NAT種別確認手段504は現在のNAT種別をシンメトリックと判断し、NAT変化処理手段506がシンメトリックの動作に移行させる。一回目と二回目のポート番号が一致していれば現在のNAT種別はコーン系であるから、NAT変化処理手段506はNAT種別変化無しとする。
【0143】
以上説明したように、本発明の実施の形態によれば、通信を開始するときに、使用する端末が接続されたNATルータのWAN側ポート番号を検出するための処理(STUNテスト1)の後、別のSTUNサーバへの同様の処理(STUNテスト1’)を行ってWAN側ポート番号を検出するとともにそれらの処理によって検出した2つのWAN側ポート番号が一致しているか否かを調べることにより短時間にNAT種別が変化、とくにコーン系からシンメトリックへ変化していることを検知でき、その結果をそれぞれの通信システムに反映することができ、通信不可の状態を回避するとともにP2Pによる通信が可能な設定に戻すことができ、メディア中継サーバ5の負荷を軽減し、ネットワークのトラブルを回避することを可能にする。
【産業上の利用可能性】
【0144】
本発明は、インターネット網に接続されるNATルータ、IP電話機システム、IP電話機の通信方法およびそのプログラムとして好適に適用できる。
【符号の説明】
【0145】
1 インターネット網
2a,2b NATルータ
3a,3b IP電話機
4 SIPサーバ
5 メディア中継サーバ
201 CPU
202 ROM
203 RAM
204 LAN側接続子
205 WAN側接続子
206 回線処理部
207 通信プロトコル処理部
208 通信情報処理部
209 通信制御部
210 グローバルアドレス・ポート検出プロトコル処理部
211 位置情報取出部
212 NAT種別判定処理部
301 本体
302 ハンドセット
303 表示部
304 ダイヤルボタン
305 機能ボタン
306 DSP
307,401 CPU
308,402 ROM
309,403 RAM
310 入出力インターフェース(I/F)
311,404 ネットワークインターフェース(I/F)
313 VoIP処理部
314 回線接続部
315 音声処理部
316 パケット処理部
411 プロキシサーバ
412 リダイレクトサーバ
413 登録サーバ
501 発呼のイベント取得手段
502 一回目メッセージ生成手段
503 アドレスポート取出手段
504 NAT種別確認手段
505 二回目メッセージ生成手段
506 NAT変化処理手段
507 時刻のイベント取得手段
508 STUNメッセージ生成手段
509 NAT種別判定手段
510 タイマー

【特許請求の範囲】
【請求項1】
NAT機能を有する中継装置を介して通信を行うIP通信装置であって、
サーバに対して第1のリクエストまたは第2のリクエストを送信し、これらリクエストに対して送り返されて来るレスポンスを受信する通信制御部と、
前記サーバから送り返されたレスポンスより前記中継装置が生成したマッピング情報とWAN側のポート番号情報を取り出す位置情報取出部と、
前記サーバへリクエストを送信する動作および該リクエストに応答して返送されて来るレスポンスを受信する動作を複数回行うことによって前記中継機器のNAT種別を判定するNAT種別判定処理を定期的に実行し、判定結果に応じて最新のNAT種別情報を更新するNAT種別判定処理部と、
通信開始のイベントが発生すると、前記中継装置を介してサーバに対してポート番号取得のために第1のリクエストを送信し、前記第1のリクエストに応答して返送されて来る第1のレスポンスから第1の送信元ポート番号を取り出し、前記中継装置を介してほかのサーバに対してポート番号取得のために第2のリクエストを送信し、前記第2のリクエストに応答して返送されて来る第2のレスポンスから第2の送信元ポート番号を取り出し、第1の送信元ポート番号と第2の送信元ポート番号が一致した場合には前記中継装置のNAT種別をコーン系と判定し、第1の送信元ポート番号と第2の送信元ポート番号が不一致の場合には前記中継装置のNAT種別をシンメトリックと判定するNAT種別不整合判定処理部を有すること特徴とするIP通信装置。
【請求項2】
前記NAT種別判定処理部は、RFC3489で規定されたプロトコルSTUNに準拠して定期的に前記第1のSTUNサーバおよび前記第2のSTUNサーバとの間でSTUNメッセージをそれぞれ送受信してNAT種別判定を行うことを特徴とする請求項1記載のIP通信装置。
【請求項3】
NAT種別不整合判定処理部は最新のNAT種別情報がコーン系を示している場合に、第1のリクエストを送信したときの宛先とは異なるほかのサーバに対してポート番号取得のために第2のリクエストを送信し、第1の送信元ポート番号と第2の送信元ポート番号が一致した場合には前記中継装置のNAT種別をコーン系と判定し、第1の送信元ポート番号と第2の送信元ポート番号が不一致の場合には前記中継装置のNAT種別をシンメトリックと判定し、
前記NAT種別不整合判定処理部が、NAT種別をコーン系であると判定した場合はコーン系に対応した通信のシーケンスを開始し、
前記NAT種別不整合判定処理部が、NAT種別をシンメトリックであると判定した場合はシンメトリックに対応した通信のシーケンスを開始することを特徴とする請求項1記載のIP通信装置。
【請求項4】
ネットワークに接続されたSTUNサーバと、このネットワークに接続され、NAT機能を有する中継装置と、前記中継装置に接続可能なIP通信装置とを備えた通信システムであって、
IP通信装置に通信開始のイベントが発生すると、前記IP通信装置は前記中継装置を介してSTUNサーバに対してポート番号取得のために第1のリクエストを送信し、前記第1のリクエストに応答して返送されて来る第1のレスポンスから第1の送信元ポート番号を取り出し、前記中継装置を介してほかのSTUNサーバに対してポート番号取得のために第2のリクエストを送信し、前記第2のリクエストに応答して返送されて来る第2のレスポンスから第2の送信元ポート番号を取り出し、第1の送信元ポート番号と第2の送信元ポート番号が一致した場合には前記中継装置のNAT種別をコーン系と判定し、第1の送信元ポート番号と第2の送信元ポート番号が不一致の場合には前記中継装置のNAT種別をシンメトリックと判定することを特徴とする通信システム。
【請求項5】
前記中継装置がルータまたはPBXであることを特徴とする請求項4記載の通信システム。
【請求項6】
前記第1および第2のIP通信装置がIP電話機であって、第1の電話機が第2の電話にネットワークの呼制御サーバを介して発呼したとき、前記NAT種別判定処理部がNAT種別をコーン系またはシンメトリックと判定し終わるまで、前記第1の電話機がビジー動作を行うことを特徴とする請求項4または5記載の通信システム。
【請求項7】
IP通信装置がIP電話機であって、第1の電話機が前記第2の電話にネットワークの呼制御サーバを介して第1の電話機に対して発呼した際に、以前に第1の電話機が取得した中継装置に関するNAT種別がコーン系であって発呼の際にシンメトリックである判定した場合には、該中継装置に関するNAT種別をシンメトリックの設定に変更することを特徴とする請求項4または5記載の通信システム。
【請求項8】
NAT機能を有する中継機器を介して通信を行うIP通信装置が実行するNAT種別の判定方法であって、
前記中継装置を介して、STUNサーバへのリクエストの送信する動作および該リクエストに応答して返送されて来るレスポンスを受信する動作を複数回行うことによって前記中継機器のNAT種別を判定するNAT種別判定処理を定期的に実行し、判定結果に応じて最新のNAT種別情報を更新し、
通信開始のイベントが発生すると、前記中継装置を介してSTUNサーバに対してポート番号取得のために第1のリクエストを送信し、前記第1のリクエストに応答して返送されて来る第1のレスポンスから第1の送信元ポート番号を取り出す第1のステップと、
前記NAT種別情報がコーン系を示している場合に、前記中継装置を介してほかのSTUNサーバに対してポート番号取得のために第2のリクエストを送信し、前記第2のリクエストに応答して返送されて来る第2のレスポンスから第2の送信元ポート番号を取り出す第2のステップと、
第1の送信元ポート番号と第2の送信元ポート番号が不一致の場合には前記中継装置のNAT種別をシンメトリックと判定する第3のステップと、
を有すること特徴とするNAT種別の判定方法。
【請求項9】
所定の時間が到来すると、RFC3489で規定されたプロトコルSTUNに準拠して、前記第1サーバおよび前記第2サーバとの間でSTUNメッセージをそれぞれ送受信し、NAT種別判定を行うことを特徴とする請求項8記載の判定方法。
【請求項10】
前記NAT種別判定処理は、
前記中継装置を介して第1のIPアドレスおよび第1のポート番号からなる第1の宛先であるSTUNサーバに対してリクエストを送信し、該リクエストに応答して返送されるレスポンスを受信することで、グローバルIPアドレスおよびWAN側のポート番号を取得する第1のテストと、
前記第1の宛先のSTUNサーバに対し、レスポンスの送信元IPアドレスおよびポート番号の変更を指定した情報を含むリクエストを送信し、該リクエストに応答して第1の宛先とは異なるグローバルIPアドレスおよびWAN側のポート番号から返送されるレスポンスを受信可能であるか否かを試す第2のテストと、
第1の宛先とは異なる第2のIPアドレスおよび第2のポート番号のSTUNサーバに対してリクエストを送信し、該リクエストに応答して返送されるレスポンスを受信することでグローバルIPアドレスおよびWAN側のポート番号を取得する第3のテストと、
レスポンスの送信元ポート番号のみの変更を指定したリクエストを前記第2のIPアドレスおよび第2のポート番号のSTUNサーバに対して送信し、該リクエストに応答して送信元ポート番号を異なる番号にしたレスポンスが前記中継装置を介して受信可能であるか否かを試す第4のテストと、
を組み合わせることによってNAT種別を判定することを特徴とする請求項8記載のNAT種別の判定方法。
【請求項11】
通信開始のイベントが発生すると、IP通信装置から第1の宛先であるSTUNサーバに対してWAN側のポート番号取得のための第1のリクエストを生成する一回目メッセージ生成手段と、
前記第1の宛先とは異なる宛先のSTUNサーバ対してWAN側のポート番号取得のための第2のリクエストを生成する二回目メッセージ生成手段と、
前記第1のリクエストに応答して返送されて来る第1のレスポンスから第1の送信元ポート番号を取り出し、前記第2のリクエストに応答して返送されて来る第2のレスポンスから第2の送信元ポート番号を取り出す応答取出手段と、
第1の送信元ポート番号と第2の送信元ポート番号が一致した場合にはNAT種別をコーン系と判定し、不一致の場合にはシンメトリックと判定するNAT種別判定手段として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2010−287982(P2010−287982A)
【公開日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願番号】特願2009−138888(P2009−138888)
【出願日】平成21年6月10日(2009.6.10)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】