(57)【要約】【課題】本発明は、ＮＡＴ機能を有するルータの配下に接続されているときにルータのＮＡＴ種別が変化しても、通信時に迅速な判定を行って通信不可を回避するＩＰ通信装置、通信システム、判定方法およびプログラムを提供することを目的とする。【解決手段】ＳＴＵＮサーバを使ったＮＡＴ種別判定処理を定期的に実行するとともに、通信開始のイベントが発生すると、ルータを介してＳＴＵＮサーバＡとＳＴＵＮサーバＡＢに対してポート番号取得のためのリクエストを送信し、ＮＡＴ種別がコーン系であるかまたはシンメトリックに変化しているかを判定するＮＡＴ種別不整合判定処理を行う。この構成によって、定期的なＮＡＴ種別判定処理の合間にＮＡＴ種別がシンメトリックに変化していても、通信時に短時間に判定が可能になる。【選択図】図１３
2010287982.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＴ機能を有する中継装置を介して通信を行うＩＰ通信装置であって、
サーバに対して第１のリクエストまたは第２のリクエストを送信し、これらリクエストに対して送り返されて来るレスポンスを受信する通信制御部と、
前記サーバから送り返されたレスポンスより前記中継装置が生成したマッピング情報とＷＡＮ側のポート番号情報を取り出す位置情報取出部と、
前記サーバへリクエストを送信する動作および該リクエストに応答して返送されて来るレスポンスを受信する動作を複数回行うことによって前記中継機器のＮＡＴ種別を判定するＮＡＴ種別判定処理を定期的に実行し、判定結果に応じて最新のＮＡＴ種別情報を更新するＮＡＴ種別判定処理部と、
通信開始のイベントが発生すると、前記中継装置を介してサーバに対してポート番号取得のために第１のリクエストを送信し、前記第１のリクエストに応答して返送されて来る第１のレスポンスから第１の送信元ポート番号を取り出し、前記中継装置を介してほかのサーバに対してポート番号取得のために第２のリクエストを送信し、前記第２のリクエストに応答して返送されて来る第２のレスポンスから第２の送信元ポート番号を取り出し、第１の送信元ポート番号と第２の送信元ポート番号が一致した場合には前記中継装置のＮＡＴ種別をコーン系と判定し、第１の送信元ポート番号と第２の送信元ポート番号が不一致の場合には前記中継装置のＮＡＴ種別をシンメトリックと判定するＮＡＴ種別不整合判定処理部を有すること特徴とするＩＰ通信装置。
【請求項２】
前記ＮＡＴ種別判定処理部は、ＲＦＣ３４８９で規定されたプロトコルＳＴＵＮに準拠して定期的に前記第１のＳＴＵＮサーバおよび前記第２のＳＴＵＮサーバとの間でＳＴＵＮメッセージをそれぞれ送受信してＮＡＴ種別判定を行うことを特徴とする請求項１記載のＩＰ通信装置。
【請求項３】
ＮＡＴ種別不整合判定処理部は最新のＮＡＴ種別情報がコーン系を示している場合に、第１のリクエストを送信したときの宛先とは異なるほかのサーバに対してポート番号取得のために第２のリクエストを送信し、第１の送信元ポート番号と第２の送信元ポート番号が一致した場合には前記中継装置のＮＡＴ種別をコーン系と判定し、第１の送信元ポート番号と第２の送信元ポート番号が不一致の場合には前記中継装置のＮＡＴ種別をシンメトリックと判定し、
前記ＮＡＴ種別不整合判定処理部が、ＮＡＴ種別をコーン系であると判定した場合はコーン系に対応した通信のシーケンスを開始し、
前記ＮＡＴ種別不整合判定処理部が、ＮＡＴ種別をシンメトリックであると判定した場合はシンメトリックに対応した通信のシーケンスを開始することを特徴とする請求項１記載のＩＰ通信装置。
【請求項４】
ネットワークに接続されたＳＴＵＮサーバと、このネットワークに接続され、ＮＡＴ機能を有する中継装置と、前記中継装置に接続可能なＩＰ通信装置とを備えた通信システムであって、
ＩＰ通信装置に通信開始のイベントが発生すると、前記ＩＰ通信装置は前記中継装置を介してＳＴＵＮサーバに対してポート番号取得のために第１のリクエストを送信し、前記第１のリクエストに応答して返送されて来る第１のレスポンスから第１の送信元ポート番号を取り出し、前記中継装置を介してほかのＳＴＵＮサーバに対してポート番号取得のために第２のリクエストを送信し、前記第２のリクエストに応答して返送されて来る第２のレスポンスから第２の送信元ポート番号を取り出し、第１の送信元ポート番号と第２の送信元ポート番号が一致した場合には前記中継装置のＮＡＴ種別をコーン系と判定し、第１の送信元ポート番号と第２の送信元ポート番号が不一致の場合には前記中継装置のＮＡＴ種別をシンメトリックと判定することを特徴とする通信システム。
【請求項５】
前記中継装置がルータまたはＰＢＸであることを特徴とする請求項４記載の通信システム。
【請求項６】
前記第１および第２のＩＰ通信装置がＩＰ電話機であって、第１の電話機が第２の電話にネットワークの呼制御サーバを介して発呼したとき、前記ＮＡＴ種別判定処理部がＮＡＴ種別をコーン系またはシンメトリックと判定し終わるまで、前記第１の電話機がビジー動作を行うことを特徴とする請求項４または５記載の通信システム。
【請求項７】
ＩＰ通信装置がＩＰ電話機であって、第１の電話機が前記第２の電話にネットワークの呼制御サーバを介して第１の電話機に対して発呼した際に、以前に第１の電話機が取得した中継装置に関するＮＡＴ種別がコーン系であって発呼の際にシンメトリックである判定した場合には、該中継装置に関するＮＡＴ種別をシンメトリックの設定に変更することを特徴とする請求項４または５記載の通信システム。
【請求項８】
ＮＡＴ機能を有する中継機器を介して通信を行うＩＰ通信装置が実行するＮＡＴ種別の判定方法であって、
前記中継装置を介して、ＳＴＵＮサーバへのリクエストの送信する動作および該リクエストに応答して返送されて来るレスポンスを受信する動作を複数回行うことによって前記中継機器のＮＡＴ種別を判定するＮＡＴ種別判定処理を定期的に実行し、判定結果に応じて最新のＮＡＴ種別情報を更新し、
通信開始のイベントが発生すると、前記中継装置を介してＳＴＵＮサーバに対してポート番号取得のために第１のリクエストを送信し、前記第１のリクエストに応答して返送されて来る第１のレスポンスから第１の送信元ポート番号を取り出す第１のステップと、
前記ＮＡＴ種別情報がコーン系を示している場合に、前記中継装置を介してほかのＳＴＵＮサーバに対してポート番号取得のために第２のリクエストを送信し、前記第２のリクエストに応答して返送されて来る第２のレスポンスから第２の送信元ポート番号を取り出す第２のステップと、
第１の送信元ポート番号と第２の送信元ポート番号が不一致の場合には前記中継装置のＮＡＴ種別をシンメトリックと判定する第３のステップと、
を有すること特徴とするＮＡＴ種別の判定方法。
【請求項９】
所定の時間が到来すると、ＲＦＣ３４８９で規定されたプロトコルＳＴＵＮに準拠して、前記第１サーバおよび前記第２サーバとの間でＳＴＵＮメッセージをそれぞれ送受信し、ＮＡＴ種別判定を行うことを特徴とする請求項８記載の判定方法。
【請求項１０】
前記ＮＡＴ種別判定処理は、
前記中継装置を介して第１のＩＰアドレスおよび第１のポート番号からなる第１の宛先であるＳＴＵＮサーバに対してリクエストを送信し、該リクエストに応答して返送されるレスポンスを受信することで、グローバルＩＰアドレスおよびＷＡＮ側のポート番号を取得する第１のテストと、
前記第１の宛先のＳＴＵＮサーバに対し、レスポンスの送信元ＩＰアドレスおよびポート番号の変更を指定した情報を含むリクエストを送信し、該リクエストに応答して第１の宛先とは異なるグローバルＩＰアドレスおよびＷＡＮ側のポート番号から返送されるレスポンスを受信可能であるか否かを試す第２のテストと、
第１の宛先とは異なる第２のＩＰアドレスおよび第２のポート番号のＳＴＵＮサーバに対してリクエストを送信し、該リクエストに応答して返送されるレスポンスを受信することでグローバルＩＰアドレスおよびＷＡＮ側のポート番号を取得する第３のテストと、
レスポンスの送信元ポート番号のみの変更を指定したリクエストを前記第２のＩＰアドレスおよび第２のポート番号のＳＴＵＮサーバに対して送信し、該リクエストに応答して送信元ポート番号を異なる番号にしたレスポンスが前記中継装置を介して受信可能であるか否かを試す第４のテストと、
を組み合わせることによってＮＡＴ種別を判定することを特徴とする請求項８記載のＮＡＴ種別の判定方法。
【請求項１１】
通信開始のイベントが発生すると、ＩＰ通信装置から第１の宛先であるＳＴＵＮサーバに対してＷＡＮ側のポート番号取得のための第１のリクエストを生成する一回目メッセージ生成手段と、
前記第１の宛先とは異なる宛先のＳＴＵＮサーバ対してＷＡＮ側のポート番号取得のための第２のリクエストを生成する二回目メッセージ生成手段と、
前記第１のリクエストに応答して返送されて来る第１のレスポンスから第１の送信元ポート番号を取り出し、前記第２のリクエストに応答して返送されて来る第２のレスポンスから第２の送信元ポート番号を取り出す応答取出手段と、
第１の送信元ポート番号と第２の送信元ポート番号が一致した場合にはＮＡＴ種別をコーン系と判定し、不一致の場合にはシンメトリックと判定するＮＡＴ種別判定手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネット網（Ｉｎｔｅｒｎｅｔ）に接続されてＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）機能を備えたルータなどの中継装置のＮＡＴ種別が変化した場合でも対応できるＩＰ通信装置、通信システム、判定方法およびプログラムに関するものである。
【背景技術】
【０００２】
インターネット網の普及で、利用可能なグローバルＩＰアドレスが枯渇するようになってきている。ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）が採用されてきたため、従来１個のグローバルＩＰアドレスを何台かのＩＰ通信装置で共用してきたが、各ＩＰ通信装置にそれぞれグローバルＩＰアドレスを割り当てるＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）へ移行する動きもある。しかし、ＩＰｖ４もセキュリティを高めることができるなど利点も多く、しばらくはＩＰｖ４が主流で推移すると予想される。
【０００３】
複数のＩＰ通信装置を接続してＬＡＮ（Ｌｏｃａｌ  ａｒｅａ  Ｎｅｔｗｏｒｋ）を構築し、インターネット網に接続されたルータなどの中継装置を介して、グローバルＩＰアドレスを１個だけ使ってＬＡＮ内部のＩＰ通信装置をインターネットに接続するには、中継装置にアドレス変換するためのＮＡＴ機能が必要になる。ここでは、ＩＰ通信装置はＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＩＰ）で通信する装置を指し、インターネット網はＩＰで通信を行うＷＡＮ（Ｗｉｄｅ  ａｒｅａ  Ｎｅｔｗｏｒｋ）のことを指すと定義する。
【０００４】
さて、ＮＡＴ機能の中の動的ＮＡＴと呼ばれるものは、ＬＡＮ側の端末からインターネット網側にアクセスする場合にグローバルＩＰアドレスと任意のポート番号を割り当て、さらにこのポート番号と端末のＬＡＮ側のＩＰアドレスを動的に関連付け、ポート番号の識別と変換を行うことにより複数の端末が同時にインターネットなどへ接続することが可能にする。これはＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）、またはＩＰマスカレードとも呼ばれる。この機能により複数の端末が同時に接続でき、しかもセキュリティ機能は高いため、不足するグローバルＩＰアドレスの数を補うことができ、ＩＰｖ４にとっては有用である。
【０００５】
ところで、ＮＡＴ機能を有するルータのＬＡＮに接続されたＩＰ通信装置同士でＷＡＮを経由し、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｃｏｌ）のトンネリング通信を可能にするために、ＲＦＣ３４８９で規定されたＳＴＵＮ（Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  ｏｆ  ＵＤＰ  ｔｈｒｏｕｇｈ  ＮＡＴｓ）では、ＮＡＴを次のように分類している。これによるとＮＡＴにはコーン（Ｃｏｎｅ）系のＮＡＴとシンメトリック（Ｓｙｍｍｅｔｒｉｃ）のＮＡＴの２種類が存在し、さらにこのコーン（Ｃｏｎｅ）系のＮＡＴは次の３種類に分かれる。
【０００６】
第１のコーン（Ｃｏｎｅ）系のＮＡＴはフルコーン（Ｆｕｌｌ  Ｃｏｎｅ）と呼ばれるもので、ＮＡＴのＬＡＮに接続された所定のＩＰ通信装置から送信されるパケットには宛先に関わらず同じＷＡＮ側のポート番号を割り当てるものである。ＷＡＮ側のポート番号には、ＬＡＮ内のローカルポート番号と同一の番号の割り当てが許容される。このようなＬＡＮ内のローカルポートとＷＡＮ側のポート番号を一致させ、割り当てるＮＡＴ機能をポートリユース（Ｐｏｒｔ  Ｒｅｕｓｅ）機能と呼ぶ。インターネット網すなわちＷＡＮ側に接続された外部のＩＰ通信装置がフルコーンＮＡＴの下に在るＩＰ通信装置へパケットを送る場合、ＮＡＴによってマッピングされたグローバルＩＰアドレスおよびＷＡＮ側のポート番号を宛先として送信すると、そのパケットはＬＡＮ内のこのグローバルＩＰアドレスおよびＷＡＮ側のポート番号で特定されるＩＰ通信装置へ転送される。すなわち、フルコーンのＮＡＴはＷＡＮに接続された任意のＩＰ通信装置から送信されたパケットを通過させるものである。
【０００７】
次に、第２のコーン（Ｃｏｎｅ）系のＮＡＴはリストリクテッドコーン（Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ）と呼ばれるもので、ＮＡＴ内部の所定のＩＰ通信装置から送信されるパケットには宛先に関わらず同じポート番号を割り当てるが、受信時には前にＮＡＴ内部のＩＰ通信装置から送信したパケットの送信先グローバルＩＰアドレスと同一のＩＰアドレスを送信元としたパケットのみを受信するものである。言い換えれば、リストリクテッドコーンＮＡＴは、グローバルＩＰアドレスが一度送信処理を行った相手先アドレスと同じであれば相手からのパケットのみを通過させ、ＬＡＮ側のＩＰ通信装置へ転送するものである。
【０００８】
さらに、第３のコーン（Ｃｏｎｅ）系のＮＡＴはポートリストリクテッドコーン（Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ）と呼ばれるもので、上記第１，２のＮＡＴと同様に、ＮＡＴのＬＡＮに接続された所定のＩＰ通信装置から送信されるパケットには宛先に関わらず同じＷＡＮ側ポート番号の割り当てを行うが、受信時にはＮＡＴのＬＡＮ側に接続されたＩＰ通信装置から既に一度に送信したことのある相手先ＩＰアドレスおよびポート番号と同一のＩＰアドレスおよびポート番号を送信元として送信されて来たパケットのみを受信するものである。言い換えればポートリストリクテッドコーンＮＡＴは、グローバルＩＰアドレスに加えてＷＡＮ側ポート番号についても一度送信処理を行った相手先のものと同じである場合のみ、相手からのパケットのみを通過させ、ＬＡＮ側のＩＰ通信装置へ転送するものである。
【０００９】
そして、シンメトリック（Ｓｙｍｍｅｔｒｉｃ）は、送信先グローバルＩＰアドレスが異なればＷＡＮ側ポート番号を変え、送信先ごとに個別にＷＡＮ側ポート番号を割り当てる。すなわちＬＡＮ側のＩＰ通信装置からＷＡＮ側のＩＰ通信装置へ宛てたパケットを送信する場合、ＬＡＮ内の同じローカルＩＰアドレスおよびポート番号からのパケット送信であっても、宛先が異なれば送信のためのＷＡＮ側ポート番号として別のポート番号が割り当てられる。
【００１０】
上述した４種類のＮＡＴは、フルコーン、リストリクテッドコーン、ポートリストリクテッドコーン、シンメトリックの順でＮＡＴ越え（トンネリング）が難しくなる。このため、この順で使用するＮＡＴの特性を選べば、セキュリティのレベルを上げることができる。
【００１１】
一般的にＮＡＴ機能付きルータが配下のＩＰ通信装置にＮＡＴ種別に関する情報を通知することはなく、そのままではＩＰ通信装置はＮＡＴ越え動作の可否判定を含めたＮＡＴ越え動作をすることはできない。そこで、ＲＦＣ３４８９の規定に沿って、ＳＴＵＮサーバへ複数種類のバインディングリクエスト（Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ）を送信し、その応答であるバインディングレスポンス（Ｂｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ）をもとにしてＮＡＴ種別を判定する処理が行われる。
【００１２】
たとえばＮＡＴルータのＮＡＴ種別を判定する場合、図１８に示す手順で判定が行われる。ＩＰ通信装置は、動作状態を知りたいポートからＮＡＴルータを介してＳＴＵＮサーバへバインディングリクエストを送信し、ＳＴＵＮサーバからのバインディングレスポンスの受信結果（受信できたかを含む）から現在のＮＡＴ種別を取得する（たとえば、非特許文献１参照、特許文献１）。ＮＡＴ種別判定のためのメッセージ送受信処理は図１２に示す［ＳＴＵＮテスト１］［ＳＴＵＮテスト１’］［ＳＴＵＮテスト２］［ＳＴＵＮテスト３］を組み合わせることによって、最大で４回行われる。
【００１３】
［ＳＴＵＮテスト１］について
最初のＳＴＵＮテストである［ＳＴＵＮテスト１］は図１２（ａ）に示すように行われ、ＮＡＴルータを介して送信されるバインディングリクエストは属性を指定しないメッセージである。パケット送信元すなわちＩＰ通信装置のローカルＩＰアドレスおよびローカルポート番号に対応するグローバルＩＰアドレスおよびＷＡＮ側のポート番号を取得するため、ＮＡＴルータの配下のＩＰ通信装置がＳＴＵＮサーバＡへ送信を行う。本送信に対するバインディングレスポンスを受信することで、グローバルＩＰアドレスおよびＷＡＮ側のポート番号を取得することができる。
【００１４】
［ＳＴＵＮテスト１’］について
［ＳＴＵＮテスト１’］で送信されるバインディングリクエストも前記［ＳＴＵＮテスト１］と同じ、属性を指定しないメッセージである。但し、ＩＰ通信装置からＳＴＵＮサーバＢへ送信を行い、グローバルＩＰアドレスおよびＷＡＮ側のポート番号を取得するためのものである。［ＳＴＵＮテスト１’］における送受信は、図１２（ｃ）に示すような関係で行われる。
【００１５】
［ＳＴＵＮテスト２］について
［ＳＴＵＮテスト２］は図１２（ｂ）に示すように行われ、この場合のバインディングリクエストは、ＳＴＵＮサーバＡに送信した場合、ＳＴＵＮサーバＢのＳＴＵＮサーバＡとは異なるポートがバインディングレスポンスの送信元となるように要求するメッセージである。すなわち返送されるレスポンスは、送信元がＳＴＵＮサーバＢのＩＰアドレスとなる。
【００１６】
［ＳＴＵＮテスト３］について
［ＳＴＵＮテスト３］は図１２（ｄ）に示すように行われ、この場合の送信されるバインディングリクエストは、ＳＴＵＮサーバの送信元のポート番号だけを変えて応答するように要求するメッセージである。すなわちＳＴＵＮサーバＡ（Ｂ）に対し、レスポンスを返送する際のポート番号だけを変更するように指示したバインディングリクエストを送信する。これに応じてＳＴＵＮサーバＡ（Ｂ）は、レスポンスを返すポート番号を前記［ＳＴＵＮテスト１］でレスポンスを返した際のポートとは異なる番号にしてレスポンスを返送する。この［ＳＴＵＮテスト３］ではＳＴＵＮサーバＡ（Ｂ）からのレスポンスがＮＡＴルータを通過してＩＰ通信装置で受信できるか否かを調べる。
【００１７】
まず、図１８のフローチャートに示すように［ＳＴＵＮテスト１］を行うため、ＩＰ通信装置はＳＴＵＮサーバＡへバインディングリクエストを送信し（ｓｔｅｐ１０１）、バインディングレスポンスの有無を判定する（ｓｔｅｐ１０２）。バインディングレスポンスがなければＵＤＰブロックされていると判断する。
【００１８】
バインディングレスポンスが正常に受信できた場合、ＩＰ通信装置はこのバインディングレスポンスに設定されているバインディングリクエスト送信時のグローバルＩＰアドレスとＷＡＮ側のポート番号を取得し、取得したグローバルＩＰアドレスおよびＷＡＮ側ポート番号と、ＩＰ通信装置自身のＩＰアドレスおよびバインディングリクエスト送信時のポート番号とを比較する（ｓｔｅｐ１０３）。
【００１９】
両者が一致する場合（ｓｔｅｐ１０３：Ｙｅｓ）、ＩＰ通信装置に直接グローバルＩＰアドレスが割り振られているため、ＩＰ通信装置の上位にＮＡＴルータは存在しないと判断する。
【００２０】
この後［ＳＴＵＮテスト２］を行う。ＳＴＵＮサーバＡにバインディングリクエストを送信し（ｓｔｅｐ１０４）、ＳＴＵＮサーバＡからＳＴＵＮサーバＢへの要求で、ＳＴＵＮサーバＢから送信されるバインディングレスポンスの受信結果を確認する（ｓｔｅｐ１０５）。ＳＴＵＮサーバＢからバインディングレスポンスがあった場合、ＩＰ通信装置はインターネットにオープンの状態で接続されていると判断でき、バインディングレスポンスがなければＵＤＰファイアウォールで遮断されていると判断できる。
【００２１】
ｓｔｅｐ１０１での［ＳＴＵＮテスト１］の結果、バインディングレスポンスに設定されている送信元グローバルＩＰアドレスおよびＷＡＮ側のポート番号と、バインディングリクエストを送信したＩＰ通信装置のＩＰアドレスおよびポート番号が不一致の場合（ｓｔｅｐ１０３：Ｎｏ）、このＩＰ通信装置がＮＡＴに接続された環境にあると判断する。次に上記と同様に、［ＳＴＵＮテスト２］を行う。ＳＴＵＮサーバＡにバインディングリクエストを送信し（ｓｔｅｐ１０６）し、ＳＴＵＮサーバＡからＳＴＵＮサーバＢへの要求で、ＳＴＵＮサーバＢから送信されるバインディングレスポンスの受信結果を確認する（ｓｔｅｐ１０７）。ＳＴＵＮサーバＢからバインディングレスポンスを受信できた場合（ｓｔｅｐ１０７：Ｙｅｓ）、送信元が送信先とは異なるグローバルＩＰアドレスおよびＷＡＮ側のポート番号のパケットでもＮＡＴを通過したことになるため、ＮＡＴ種別はフルコーンと判定される。
【００２２】
このバインディングレスポンスがＩＰ通信装置で受信できない場合、次に［ＳＴＵＮテスト１’］を行う。すなわちＩＰ通信装置はＳＴＵＮサーバＢにバインディングリクエストを送信する（ｓｔｅｐ１０８）。このＳＴＵＮサーバＢからのバインディングレスポンスにより取得できるＮＡＴのＷＡＮ側のポート番号と［ＳＴＵＮテスト１］で取得したＷＡＮ側のポート番号を比較する（ｓｔｅｐ１０９）。この結果、ＷＡＮ側のポート番号が一致しない場合は（ｓｔｅｐ１０９：Ｎｏ）、送信先（ＳＴＵＮサーバＡ、ＳＴＵＮサーバＢ）ごとに異なったＷＡＮ側のポート番号がＮＡＴにより割り当てられたことになり、ＮＡＴはシンメトリックと判定される。
【００２３】
ＷＡＮ側のポート番号が一致する場合は（ｓｔｅｐ１０９：Ｙｅｓ）、次に同一グローバルＩＰアドレスで、かつ異なるＷＡＮ側のポート番号からのバインディングレスポンスが受信できるかを判定するために［ＳＴＵＮテスト３］を行う。すなわちＳＴＵＮサーバＡにバインディングリクエストを送信し（ｓｔｅｐ１１０）、ＳＴＵＮサーバＡからグローバルＩＰアドレスが同一であって、ＷＡＮ側のポート番号だけ変更されたバインディングレスポンスをＮＡＴルータに送信させる。
【００２４】
このＳＴＵＮサーバＡからのバインディングレスポンスをＩＰ通信装置で受信できたかを判定する（ｓｔｅｐ１１１）。受信できない場合、ＮＡＴルータは一度送信を行ったグローバルＩＰアドレスでありながら、別のポート番号から送られるパケットは通さない（送信処理を行った送信先ポート番号からのパケットのみを通過させるＮＡＴ）ということを意味するから、これはポートリストリクテッドコーンと判定される。受信できた場合、前に送信処理を行った送信先ポート番号以外のポート番号からのパケットであっても通すことから、リストリクテッドコーンと判定される。
【００２５】
以上説明したように、従来はＲＦＣ３４８９で規定されたＳＴＵＮによって定期的にＮＡＴ種別が判定されていた。この判定はＮＡＴルータのＬＡＮ側に接続したＩＰ通信装置が本ＮＡＴルータをトンネリングし、通信するためには不可欠の機能であるが、この機能を実行するためには図１８のフローチャートに従ってバインディングリクエストを送信するＳＴＵＮテストを最大４回しなければならず、一回のＳＴＵＮテストで行われるバインディングリクエスト／バインディングレスポンスの再送時間までを考えると、これらのＳＴＵＮテストを行うためには比較的長い時間、たとえば４０秒を越える時間を必要とするケースもある。従って、利用者が実際に電話をかける度にこのようなＮＡＴ種別判定機能を実行した場合、オフフックした後、相手が呼び出される（リングバックトーンなどを聴取する）まで４０秒以上待たされるケースも発生する可能性がある。このため、発呼の度にこの判定を実施することは電話サービスの観点から非現実的である。本来、本ＮＡＴ種別判定機能は通信動作の負荷にならないよう、日常生活の通話が行われる時間帯と異なる時間帯を選んで定期的に行われるのが通例である。
【００２６】
図１０は、プロトコルＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）に準拠してＩＰ電話機同士でＶｏＩＰ通話を行う通信システムである。双方のＩＰ電話機はＮＡＴ機能を有するルータの配下に接続されている。ＮＡＴルータのＷＡＮ側ポートはインターネット網に接続されている。インターネット網にはＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通話の呼制御を行うＳＩＰサーバが置かれている。またＩＰ電話機同士がＰ２Ｐで通信できない場合は、ＶｏＩＰトラフィックのみを通信させるメディア中継サーバを介して通信が行われる。図１０（ａ）はＩＰ電話機がＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）で通信できる場合の概念図、図１０（ｂ）はＮＡＴルータの状態が切り換わって従来の手順ではＰ２Ｐ通信できなくなった場合を示す概念図である。図１０（ｃ）はＰ２Ｐ通信ではなくメディア中継サーバを介して通信する場合の概念図である。
【００２７】
図１０（ａ）の場合は、ＳＴＵＮに従って取得されたＮＡＴ種別がフルコーンであり、ＮＡＴルータ配下のＩＰ電話機同士は問題なくＳＩＰで呼制御が行われ、その後Ｐ２Ｐで通話できる。定期的なＮＡＴ種別判定の最新の判定結果がフルコーンである場合、一方のＩＰ電話機から発呼する際にＮＡＴ種別フルコーンが維持されていれば図１０（ａ）のようにＰ２Ｐで音声通話ができる。
【００２８】
ところで、従来のＮＡＴには次のような問題もある。定期的なＮＡＴ種別判定処理終了後、次のＮＡＴ種別判定処理までの間に、ルータでのＮＡＴ種別が定期的な判定結果とは異なる動作種別へ変化し、定期的なＮＡＴ種別判定結果を基にした通信方法では外部からのアクセスがＮＡＴで遮断され、通信不可になる場合がある。この現象はポートリユース機能を保有するＮＡＴルータなどで発生する。
【００２９】
以下ポートリユース機能を有するＮＡＴルータにおいてＮＡＴ種別が変化する場合について詳述する。ＮＡＴルータに別のＩＰ通信装置が接続されて使用されている状態で新たにＩＰ通信装置を接続する。この後で接続したＩＰ通信装置が通信を行うためにローカルポート番号を使用して通信を行うが、このローカルポート番号と同じＷＡＮ側のポート番号は先に接続されたＩＰ通信装置に対応して使用されていたとする。ポートリユース機能を備えているルータでは、ローカルポート番号とＷＡＮ側のポート番号を一致させ割り当てる機能を有しているが、以下のような接続がされると、コーン系と判定されたＮＡＴルータであっても、シンメトリックと同じＮＡＴ動作を行う場合がある。
【００３０】
ＮＡＴルータがポートリユース機能によってコーン系の動作からシンメトリックの動作に変化する原因の１つとしては、次のようなことがある。図１９（ａ）はコーン系のＮＡＴ機能で動作する場合を説明する図、図１９（ｂ）はコーン系のＮＡＴ機能で動作するはずのＩＰ通信装置がシンメトリックのＮＡＴ機能で動作してしまうことを説明する図である。図１９（ａ）においてはＮＡＴルータに１台のＩＰ通信装置が接続されている。ローカルポート番号がたとえば「１５０００」のＩＰ通信装置を接続した場合、ポートリユース機能によってＮＡＴルータのＷＡＮ側ポート番号も同じ「１５０００」に割り当てられる。そして、この場合ＮＡＴルータはコーン系のＮＡＴ機能で動作する。
【００３１】
しかし、図１９（ｂ）に示すように、既にローカルポート番号が「１５０００」のＩＰ通信装置ａが接続され、ＷＡＮ側ポート番号「１５０００」がＩＰ通信装置ａに割り当てられているとき、同じローカルポート番号「１５０００」を使用するＩＰ通信装置ｂが新たに接続された場合、ＩＰ通信装置ｂのＷＡＮ側のポート番号は「１５０００」が使用中であるため、ポートリユース機能を有しているＮＡＴルータでもこの番号を割り当てられない。このためＩＰ通信装置ｂに関連付けるＷＡＮ側ポート番号としては、別のＷポート番号、たとえば「１０２４」を割り当てる。
【００３２】
このようにポート番号の重複を避ける割り当てが行われると、ポートリユース機能が中止され、ＮＡＴルータは固有の割り当てルールによりＷＡＮ側のポートを割り当てるようになる。このような動作モードになった場合、同じＩＰ通信装置ｂの「１５０００」のローカルポートからの送信であっても、送信先が変わることにより任意のＷＡＮ側ポートを割り当て、コーン系とは異なる動作を行う場合がある。この「送信先によりＷＡＮ側ポートが変化する」という動作は、シンメトリックのＮＡＴルータの動作と同じになる。
【００３３】
このように後から接続されたＩＰ通信装置に対して、このルータは本来予定されているローカルポート番号と一致するＷＡＮ側ポート番号に代えて、別の任意のＷＡＮ側ポート番号を割り当て、この任意に割り当てられたポートにおいてはシンメトリックのＮＡＴ動作を行う。このようにＮＡＴルータの状態が切り換わると、図１０（ｂ）に示すように正常にＰ２Ｐ通信ができなくなる。調査した結果、こうした動作を行うＮＡＴルータは市販されているポートリユース機能を備えたＮＡＴルータの約４０％を占めている。
【００３４】
また、通常、ＮＡＴ種別判定動作を行うポート使用範囲は、処理を簡易にするために排他制御などを行わないようにする必要から、たとえばＩＰ電話機のＶｏＩＰトラフィックのポートとＮＡＴ種別判定のポートとでは、両者が互いに影響しない独立した範囲でそれぞれポート番号を取得するように使い分けられている。ある所定の範囲内のポートで順次ＮＡＴ種別判定を行っても、この検知処理は通信で使用するポート範囲とは異なる領域のポート番号で判定を行うため、音声パケットなどのデータ通信を邪魔することはない。しかしながら、使用するポート番号が異なるため音声パケットなどのデータ通信を行うポート番号でシンメトリックの動作を行うかを通常のＮＡＴ種別判定処理では検出できない。
【００３５】
たとえば、ＩＰ電話機などの場合、１０２４〜４９１５１の使用可能なポート番号の中で、音声パケット通信のポート番号は１００００〜２００００の番号が使用されるのが通例であり、ＮＡＴ種別判定を行うポート番号はたとえば３００００〜４００００の中から選ばれる。排他制御などを行わないように、両者のポート番号は互いに影響しない範囲の番号となっている。
【００３６】
しかしながら、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などのＩＰ通信装置のポート使用領域にはＩＰ電話機などのような制限はなく、ポート指定はアプリケーション次第であって、１０２４〜４９１５１（あるいはそれ以上）のどの番号も使用可能である。従って、ポートリユースのＮＡＴルータの場合、実際にどのポート番号が使用されるか分からず、後から接続されるＩＰ電話機において使用が予定されていた１００００〜２００００のポート番号が、利用者の知らない間にポートリユース機能が使用できずに別のポートにマッピングされる可能性が生じるのである。
【００３７】
また、ＮＡＴの種類が変化してシンメトリックで動作するということは、ＳＩＰで通信するシステムにおいては、Ｐ２Ｐの通信に移行できるのか、ＳＢＣ（Ｓｅｓｓｉｏｎ  Ｂｏｒｄｅｒ  Ｃｏｎｔｒｏｌｌｅｒ）サーバなどを介しての通信に移行するのか、ということで結果が大きく分かれる。ＳＢＣサーバはデータ通信を行うメディア中継サーバの１つであって、ＮＡＴで保護された２つのＩＰネットワーク間でもＶｏＩＰトラフィックだけを通信させるものである。
【００３８】
ＮＡＴ種別がシンメトリックの動作に切り換わったことが把握できていれば、発信を行う際に最初から図１０（ｃ）に示すようにＳＢＣサーバを介して通信するように制御することができ、異なるＩＰネットワーク間のＩＰ電話機の通話が可能になる。しかしＳＢＣサーバを介するデータ通信は通信系への負荷も大きい。ＮＡＴ種別がシンメトリックでＰ２Ｐに移行できない場合は、負荷が大きくなるＳＢＣサーバ経由での通信をせざるを得ないが、ＳＢＣサーバ維持するには前記の通りコスト面などで問題となるため、通信事業者としては極力Ｐ２Ｐでの通信が望まれている。
【先行技術文献】
【特許文献】
【００３９】
【特許文献１】特開２００６−２５３８２４号公報
【非特許文献】
【００４０】
【非特許文献１】Ｇｅｏｆｆ  Ｈｕｓｔｏｎ著、"Ａｎａｔｏｍｙ：  Ａ  Ｌｏｏｋ  Ｉｎｓｉｄｅ  Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒｓ"、  Ｔｈｅ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｊｏｕｒｎａｌ、Ｃｉｓｃｏ  Ｓｙｓｔｅｍｓ  Ｉｎｃ．、２００４年９月、Ｖｏｌｕｍｅ  ７、Ｎｕｍｂｅｒ  ３、ｐ．２−３２
【発明の概要】
【発明が解決しようとする課題】
【００４１】
前述のようにＮＡＴルータがポートリユース機能を有するものである場合、この種のＮＡＴルータのＮＡＴは通常はコーン系の動作であるが、図１９（ｂ）に示すようにポートが重複するＩＰ通信装置をこれに接続したときに自動的に空き状態のほかのポートを割り当て、実質的にシンメトリックのＮＡＴに変化する場合がある。そのことを利用者が認識していない場合、コーン系の動作が予定されているのにも関わらず、利用者の知らない間にシンメトリックの動作に変化する。ＩＰ電話機のデータ通信用のポートとしてほかの予定外のポートが割り当てられた状態で、その変化がつかめないままＩＰ電話機３ａがデータ通信用のポートを指定（たとえば１５００）しても、図１０（ｂ）に示すようにＮＡＴルータ２ａはほかのポートで受けようとするので、ＩＰ電話機３ｂから送信されたメッセージはＮＡＴルータ２ａにてブロックされる可能性がある。また、たとえブロックされない場合でも、実際に通信（送信）を行っているポートは別（１５００）であるため、通常、パケット送信が行われていない元のポート（１０２４）は一定時間送信がないポートとしてＮＡＴルータ側でクローズされ、通信できなくなる。
【００４２】
上記のような場合、発呼処理の段階ではＳＩＰポートへの影響はないため、通話前の処理は完了し、ＩＰ電話機はプロトコルＰ２Ｐ通信を始めようとする。しかしＮＡＴルータはシンメトリックと同様なポート割り当て動作に切り換わっているので、通話相手のＩＰ電話機から直接送られてくる音声データはＮＡＴルータによりブロックされ自端末に届かない現象などが発生する。使用者からこの状況を見た場合、正常に発信操作はできたものの、相手からの音声が聞こえない通信事故のような状態に陥る。このように、たとえＮＡＴ種別判定を定期的に行っていても、あるときＮＡＴルータがシンメトリックの動作に変化し、ＩＰ電話機が定期的な判定で取得しているルータのＮＡＴ種別情報と、実際に通話しようとするときのＮＡＴ種別が不整合であれば発信操作をしても相手と通信することができず、ＮＡＴが変化してから次の定期的なＮＡＴ判定まで通信不可となってしまう。
【００４３】
またＩＰ電話機がＮＡＴルータのＮＡＴ種別をリアルタイムで判別するために頻繁にＲＦＣ３４８９のＮＡＴ種別判定動作を行うと、ＮＡＴ種別の判定は１回あたり比較的長い時間（４０秒）を要する処理であるため、トラフィックの混雑を引き起こし、またＩＰ電話機の発信動作に支障が生じることがある。
【００４４】
発呼処理の際に最初から図１０（ｃ）に示すように音声データなどのデータ通信（通話）をメディア中継サーバ５（ＳＢＣサーバ）が介するようにすれば前述の通信事故のような状態に陥ることは回避できる。しかしながら、前述の通り全ての通信をＳＢＣサーバ経由とした場合、ＳＢＣサーバ設置や維持コストなどの面で通信事業者の負担が問題となる。
【００４５】
本発明は、できるだけメディア中継サーバ５に負荷をかけないようにするために、Ｐ２Ｐ接続を推奨し、ネットワークと接続されるＮＡＴルータのＮＡＴ種別が変化していても、通信時に迅速な判定を行って通信不可を回避するＩＰ通信装置、通信システム、判定方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００４６】
このような問題を解決するために本発明のＩＰ通信装置は、通信開始のイベントが発生すると第１のサーバに対してＷＡＮ側のポート番号確認のための第１のリクエストを生成し、さらに第２のサーバに対してＷＡＮ側のポート番号確認のための第２のリクエストを生成し、第１のリクエストに応じて返送されて来る第１のレスポンスにより入手したＮＡＴルータのＷＡＮ側のポート番号と、第２のリクエストに応じて返送されて来る第２のレスポンスにより入手した該ＮＡＴルータのＷＡＮ側のポート番号が一致した場合にはＮＡＴ種別をコーン系と判定し、不一致の場合にはシンメトリックと判定するＮＡＴ種別不整合判定処理部を備えたものである。
【発明の効果】
【００４７】
本発明は、通信開始のイベントが発生すると第１のサーバに対してＷＡＮ側のポート番号確認のための第１のリクエストを生成し、さらに第２のサーバに対してＷＡＮ側のポート番号確認のための第２のリクエストを生成し、第１のリクエストに応じて返送されて来る第１のレスポンスにより入手したＮＡＴルータのＷＡＮ側のポート番号と、第２のリクエストに応じて返送されて来る第２のレスポンスにより入手した該ＮＡＴルータのＷＡＮ側のポート番号が一致した場合にはＮＡＴ種別をコーン系と判定し、不一致の場合にはシンメトリックと判定するＮＡＴ種別判定処理部を備えたものであり、定期的なＮＡＴ種別の判定処理の間にＮＡＴルータのＮＡＴ種別が変化していても、通信開始時に短時間に判定を行うことで通信不可となる状態を回避することができる。また定期的に行われるＮＡＴ種別の判定処理の間にＮＡＴ種別が変化した場合も、通信時に短時間で判定を行って通信不可となる状態を回避することができる。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施の形態におけるＮＡＴルータを介してＩＰ通信装置同士が通信を行う通信システムの構成図
【図２】本発明のＩＰ通信装置の一例であるＩＰ電話機の外観図
【図３】本発明のＩＰ電話機のハードウェアブロック図
【図４】本発明の機能ブロック構成図
【図５】本実施の形態における通信システムで使用されるＮＡＴルータのハードウェアの構成図
【図６】ＩＰ電話機のソフトウェア的な機能ブロック構成図
【図７】本実施の形態における通信システムで使用されるＳＩＰサーバ（呼制御サーバ）またはメディア中継サーバが持つハードウェア構成を示す図
【図８】ＳＩＰサーバの機能ブロック構成図
【図９】ＮＡＴルータ配下のＩＰ電話機がプロトコルＰ２Ｐで互いに通信できる場合のシーケンス図
【図１０】（ａ）ＩＰ電話機がＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）で通信できる場合の概念図、（ｂ）ＮＡＴルータの状態が切り換わって従来の手順ではＰ２Ｐ通信できなくなった場合を示す概念図、（ｃ）Ｐ２Ｐ通信ではなくメディア中継サーバを介して通信する場合の概念図
【図１１】（ａ）バインディングリクエストのＳＴＵＮメッセージ簡易フォーマット図、（ｂ）バインディングレスポンスのＳＴＵＮメッセージ簡易フォーマット図
【図１２】（ａ）［ＳＴＵＮテスト１］におけるメッセージの送受信の概念図、（ｂ）［ＳＴＵＮテスト２］におけるメッセージの送受信の概念図、（ｃ）［ＳＴＵＮテスト１’］におけるメッセージの送受信の概念図、（ｄ）［ＳＴＵＮテスト３］におけるメッセージの送受信の概念図
【図１３】定期的に行われるＮＡＴ種別判定においてＮＡＴ種別がコーン系と判定されている場合に、発呼のイベントがあった際のＩＰ電話機の動作をマクロ的に示したフローチャート
【図１４】本実施の形態におけるＩＰ電話機は発呼イベントが検出されたときの処理のフローチャート
【図１５】本発明の実施の形態におけるＮＡＴルータのＮＡＴ種別がコーン系の場合の外部アドレス検出処理のシーケンス図
【図１６】本発明の実施の形態において、ＩＰ電話機から発呼する際、前回までのＮＡＴ種別判定結果がシンメトリックである場合の通信のシーケンス図
【図１７】本発明の実施の形態におけるプログラムの構成図
【図１８】ＳＴＵＮリクエストを送信し受信したＳＴＵＮレスポンスの結果から現在のＮＡＴの動作状態を取得するフローチャート
【図１９】（ａ）コーン系のＮＡＴ機能で動作する場合を説明する図、（ｂ）コーン系のＮＡＴ機能で動作するはずのＩＰ通信装置がシンメトリックのＮＡＴ機能で動作してしまうことを説明する図
【発明を実施するための形態】
【００４９】
本発明の第１の構成は、ＮＡＴ機能を有する中継装置の配下接続可能なＩＰ通信装置であって、ＳＴＵＮサーバに対して第１のリクエストまたは第２のリクエストを送信し、これらリクエストに対して送り返されて来るレスポンスを受信する通信制御部と、ＳＴＵＮサーバからのレスポンスを受信したとき、前記中継装置が生成したマッピング情報とＷＡＮ側のポート番号情報を取り出す位置情報取出部と、前記中継装置を介して、ＳＴＵＮサーバへのリクエストを送信する動作および該リクエストに応答して返送されて来るレスポンスを受信する動作を複数回行うことによって前記中継機器のＮＡＴ種別を判定するＮＡＴ種別判定処理を定期的に実行し、判定結果に応じて最新のＮＡＴ種別情報を更新するＮＡＴ種別判定処理部と、通信開始のイベントが発生すると、前記中継装置を介してＳＴＵＮサーバに対してポート番号取得のために第１のリクエストを送信し、前記第１のリクエストに応答して返送されて来る第１のレスポンスから第１の送信元ポート番号を取り出し、前記中継装置を介してほかのＳＴＵＮサーバに対してポート番号取得のために第２のリクエストを送信し、前記第２のリクエストに応答して返送されて来る第２のレスポンスから第２の送信元ポート番号を取り出し、第１の送信元ポート番号と第２の送信元ポート番号が一致した場合には前記中継装置のＮＡＴ種別をコーン系と判定し、第１の送信元ポート番号と第２の送信元ポート番号が不一致の場合には前記中継装置のＮＡＴ種別をシンメトリックと判定するＮＡＴ種別不整合判定処理部を備えたことを特徴とするＩＰ通信装置である。
【００５０】
この構成によって、２つのネットワークを接続する中継機器のＮＡＴ種別が変化していても、通信時に短時間に判定を行って通信不可を回避することができる。
【００５１】
本発明の第２の構成は、前記第１の構成においてさらにＮＡＴ種別判定処理部がＲＦＣ３４８９で規定されたプロトコルＳＴＵＮに準拠して定期的にＳＴＵＮサーバとの間でＳＴＵＮメッセージをそれぞれ送受信してＮＡＴ種別判定を行うＩＰ通信装置である。
【００５２】
この構成によって、定期的に行われるＮＡＴ種別判定処理で一度判定処理が完了し、次の判定処理が行われる前にＮＡＴ種別が変化した場合も、通信時に短時間で判定を行って通信不可を回避することができる。
【００５３】
本発明の第３の構成は、ネットワークに接続されたＳＴＵＮサーバと、このネットワークに接続され、ＮＡＴ機能を有する中継装置と、前記中継装置の配下接続可能なＩＰ通信装置とを備えた通信システムであって、中継機器のＮＡＴ種別を判定するＮＡＴ種別判定処理を定期的に実行し、判定結果に応じて最新のＮＡＴ種別情報を更新するＮＡＴ種別判定処理部を備え、さらに、ＩＰ通信装置に通信開始のイベントが発生すると前記中継装置を介してＳＴＵＮサーバに対してポート番号取得のために第１のリクエストを送信し、前記第１のリクエストに応答して返送されて来る第１のレスポンスから第１の送信元ポート番号を取り出し、前記ＮＡＴ種別判定処理部が判定した最新のＮＡＴ種別情報がコーン系を示している場合には第１のリクエストを送信したときの宛先とは異なるほかのＳＴＵＮサーバに対してポート番号取得のために第２のリクエストを送信し、前記第２のリクエストに応答して返送されて来る第２のレスポンスから第２の送信元ポート番号を取り出し、前記第１のリクエストに関するＷＡＮ側のポート番号と前記第２のリクエストに関するＷＡＮ側のポート番号が一致した場合にはＮＡＴ種別は変化無と判定し、不一致の場合にはシンメトリックに切り換わったと判定するＮＡＴ種別判定処理部を備え、このＮＡＴ種別不整合判定処理部が変化無と判定した場合はコーン系に対応した通信のシーケンスを開始し、シンメトリックであると判定した場合はシンメトリックに対応した通信のシーケンスを開始するように構成したＩＰ通信装置である。
【００５４】
この構成によって、中継機器のＮＡＴ種別が変化していても、通信時にコーン系のままであるかまたはシンメトリックに切り換わったかを短時間に判定することができ、コーン系からシンメトリックに切り換わった場合にｐｅｅｒ  ｔｏ  ｐｅｅｒ（以下Ｐ２Ｐと略す）の音声通信が正常にできなくなる事態を未然に回避することができる。
【００５５】
本発明の第４の構成は、下Ｐ２Ｐ通信を行うことが前提の第１の電話機が第２の電話機にネットワークの呼制御サーバを介して発呼したとき、発呼処理の中でＮＡＴ種別がシンメトリックと判定した場合、第１の電話機はビジー動作を行うことを特徴とする通信システムである。
【００５６】
この構成によって、電話として利用されるとき、呼び出しの後に音声パケットのみが不通になるという現象を発生させることなく、実動作上Ｐ２Ｐで音声通信が正常にできないことをビジーという状態で操作者に通知することができ、電話の操作性が向上する。
【００５７】
（実施の形態）
以下、本発明の実施の形態として、ＮＡＴ機能付きの中継装置（以下、ＮＡＴルータ）の配下に接続されたＩＰ電話機において、ＮＡＴルータのＮＡＴ種別が変化していても、通信時に迅速な判定を行って通信不可を回避できるようにした例について説明する。本実施の形態においては、ＩＰ電話機置が接続される中継装置としてＮＡＴ機能付きルータ（ＮＡＴルータ）を説明するが、ゲートウェイ、ＰＢＸ（Ｐｒｉｖａｔｅ  Ｂｒａｎｃｈ  ｅＸｃｈａｎｇｅ）などでＮＡＴ機能付きの中継装置またはサーバでもよい。また、実施の形態の通信システムは、ＮＡＴ機能を有するＮＡＴルータと２台のＳＴＵＮサーバから構成されて、ＮＡＴ機能を有するＮＡＴルータは異なった２つのＩＰネットワークの間に介在し、このＩＰネットワークの一方がインターネット網（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であり、他方がたとえばＥａｔｈｅｒｎｅｔ（登録商標）などのＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。２台のＳＴＵＮサーバはインターネット網に接続される。
【００５８】
但し、ＳＴＵＮサーバは２つのグローバルＩＰアドレスを制御可能な１台のサーバでも実現可能である。
【００５９】
図１は、プロトコルＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）に準拠してＩＰ電話機同士でＶｏＩＰ通話を行う通信システムである。ＩＰ電話機３ａ（本発明における第１のＩＰ通信装置）はＮＡＴルータ２ａの配下に、またＩＰ電話機３ｂ（本発明における第２のＩＰ通信装置）はＮＡＴルータ２ｂの配下に接続されている。ＮＡＴ機能を有するＮＡＴルータ２ａ，２ｂのＷＡＮ側ポートはインターネット網１に接続されている。ＮＡＴルータ２ａとＩＰ電話機３ａ、ＮＡＴルータ２ｂとＩＰ電話機３ｂはそれぞれＬＡＮを構成しており、これら各ＬＡＮはＮＡＴルータ２ａ，２ｂのＮＡＴによってインターネット網１から保護されている。
【００６０】
このインターネット網１にはＶｏＩＰ通話の呼制御を行うＳＩＰサーバ４（本発明における呼制御サーバ）が接続される。さらに、メディアプロキシとして機能するメディア中継サーバ５が接続されている。実施の形態の場合、メディア中継サーバはＳＢＣ（Ｓｅｓｓｉｏｎ  Ｂｏｒｄｅｒ  Ｃｏｎｔｒｏｌｌｅｒ）サーバであり、インターネット網１の中でＩＰ電話機のＶｏＩＰトラフィックのみを通信させる。ＮＡＴルータ２ａ，２ｂのＮＡＴ種別がシンメトリックの場合は、このメディア中継サーバ５を介して通信が行われる。
【００６１】
これに対して、ＮＡＴルータ２ａ，２ｂのＮＡＴ種別がコーン系である場合は、メディア中継サーバ５を介すことなく、ＩＰ電話機３ａ，３ｂがＰ２Ｐで直接通信を行うことが可能になる。
【００６２】
次に、実施の形態の通信システムにおいては、インターネット網１にＳＩＰサーバ４、メディア中継サーバ５、ＮＡＴルータ２ａ、ＮＡＴルータ２ｂ、ＳＴＵＮサーバＡ６ａ（本発明の第１のサーバに相当）、ＳＴＵＮサーバＢ６ｂ（本発明の第２のサーバに相当）が接続される。ＩＰ電話機３ａ，３ｂはこのＮＡＴルータ２ａ，２ｂに接続される。従って、ＩＰ電話機３ａ，３ｂが互いにＰ２Ｐ通信を行うには、ＮＡＴルータ２ａ，２ｂのインターネット網側に割り当てられる（以下「ＷＡＮ側の」と記述する）グローバルＩＰアドレスとポート番号を知る必要がある。このためＩＰ電話機３ａ，３ｂはＲＦＣ３４８９に準拠して、ＮＡＴルータ２ａ，２ｂを介してＳＴＵＮサーバＡ６ａまたはＳＴＵＮサーバＢ６ｂにバインディングリクエスト（本発明におけるＷＡＮ側のポート番号確認のためのリクエスト）を送信し、その応答として受信したバインディングレスポンスをもとにＮＡＴルータ２ａ，２ｂのグローバルＩＰアドレスとＷＡＮ側のポート番号の情報取得を行っている。
【００６３】
図２は本発明のＩＰ通信装置の一例であるＩＰ電話機３ａの外観図である。ＩＰ電話機３ａは、ハンドセット３０２が本体３０１の上に載置され、使用者がハンドセット３０２を取り上げたときオフフックとなり、ハンドセット３０２を載置台に載せたときオンフックとなる。本体３０１には表示部３０３が設けられ、ダイヤル番号などの操作内容、操作ガイドなどを表示する。表示部３０３の付近に機能ボタン３０５が配置され、さらに機能ボタン３０５の周辺には「０」〜「９」、「＊」、「＃」のダイヤルボタン３０４が設けられている。このダイヤルボタン３０４を押下することでダイヤルなどできる。
【００６４】
図３は本発明のＩＰ電話機３ａ，３ｂのハードウェアブロック図であり、図４は本発明の機能ブロック構成図である。図３，４に示すようにＩＰ電話機３ａ，３ｂには本体３０１の内部に基板が内蔵されており、基板にはＶｏＩＰ通話の処理を行うＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３０６、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）３０７、プログラムを記憶したＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０８、作業領域となるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０９が搭載されている。このほかハンドセット３０２に接続される入出力インターフェース（Ｉ／Ｆ）３１０、ネットワークケーブルに接続されるネットワークインターフェース（Ｉ／Ｆ）３１１が設けられている。
【００６５】
図４は本実施の形態におけるＩＰ電話機３ａの機能ブロック構成を示す。図４に示すように、ＩＰ電話機３ａ，３ｂのそれぞれのＣＰＵ３０７は所定のメモリに格納されたプログラムを読み出して実行することでＶｏＩＰ処理部３１３として機能し、ＩＰ電話機３ａ，３ｂ間のＶｏＩＰ通話の通信制御を行う。このＶｏＩＰ処理部３１３には音声処理部３１５とパケット処理部３１６が設けられ、回線接続部３１４を介してＮＡＴルータ２ａ，２ｂとの間で送受信するＩＰパケットのＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）ペイロードを取り出し、この音声データを音声処理部３１５において復号化し、Ｄ／Ａ変換後にアナログ音声信号としてハンドセット３０２から出力する。また、音声処理部３１５はハンドセット３０２から入出力部３１７を介して入力されたアナログ音声信号をＡ／Ｄ変換して符号化し、これをＩＰパケットにして回線接続部３１４から送信する。
【００６６】
図５は本実施の形態における通信システムで使用されるＮＡＴルータ２ａ，２ｂのハードウェアの構成図である。図示しないが、ＮＡＴルータ２ａ，２ｂは箱型のケース表面にネットワークケーブル（たとえばＥａｔｈｅｒｎｅｔ（登録商標）ケーブル）の端子を挿入する接続口（ＬＡＮ側接続子２０４、ＷＡＮ側接続子２０５）が配設された外観を有している。ＮＡＴルータ２ａ，２ｂの内部には通信処理を行うためのプロセッサ、すなわちＣＰＵ２０１が設けられている。さらに機能に応じてＤＳＰ（図示しない）を設けることもできる。ＣＰＵ２０１は、外部バスによってＲＯＭ２０２に接続され、ＲＯＭ２０２からプログラムを読み出して、メインメモリとなるＲＡＭ２０３に読み出して処理を実行する。また、ＣＰＵ２０１は外部バスを介してＬＡＮ側接続子２０４、ＷＡＮ側接続子２０５に接続される。ＬＡＮ側接続子２０４はネットワークケーブルによってＩＰ電話機３ａまたはＩＰ電話機３ｂに接続され、ＷＡＮ側接続子２０５はインターネット網１に接続される。ＬＡＮ側接続子２０４、ＷＡＮ側接続子２０５を経由して送受信されるＩＰパケットはＮＡＴルータ２ａ，２ｂにおいてＮＡＴ処理が行われることで通信が可能になる。
【００６７】
図６はＩＰ電話機３ａ，３ｂのソフトウェア的な機能ブロック構成図を示す。この各機能ブロックは、ＣＰＵ３０７にプログラムを読み込んで機能実現手段として構成される各機能をそれぞれ表す。通信制御部２０９はＳＩＰやＲＴＰなど上位層の通信制御、ＮＡＴ種別判定、位置情報取得の為のバインディングリクエストおよびバインディングレスポンスの送受信を行う。通信プロトコル処理部２０７において通信のための制御を行い、通信情報処理部２０８において、音声データのための処理が行なわれ、回線処理部２０６で対応する装置と通信する。
【００６８】
グローバルアドレス・ポート検出プロトコル処理部２１０は、ＮＡＴルータの外側のグローバルＩＰアドレスやポート番号を検出する為、およびＮＡＴ種別判定の為のバインディグリクエストをＳＴＵＮサーバに対して送信する処理を制御する。このグローバルアドレス・ポート検出プロトコル処理部２１０は、ＳＴＵＮテスト１，２，１’，３、およびＮＡＴ種別不整合判定処理などの目的に応じてバインディングリクエストのフラグを設定し、通信制御部２０９にバインディングリクエストの送信を指示する。バインディングリクエストはＮＡＴルータを通ってＳＴＵＮサーバへ送られる。送信したバインディングリクエストに応じて返されるバインディングレスポンスが受信されると、通信制御部２０９はバインディングレスポンスを受信バインディングレスポンスから設定されている情報を取り出す。
【００６９】
位置情報取出部２１１は、通信制御部２０９で取り出された情報からＷＡＮ側のグローバルＩＰアドレスやポート番号などの情報を抽出する。
【００７０】
ＮＡＴ種別判定処理部２１２は、ＳＴＵＮサーバへ送ったバインディングリクエストに応じたバインディングレスポンスが受信できるか否か、またはバインディングレスポンスから抽出されたグローバルＩＰアドレスおよびＷＡＮ側のポート番号と自己に割り当てられたＩＰアドレスおよびポート番号と比較して一致するか否かを調べることにより、接続されているＮＡＴルータのＮＡＴ種別判定を行う。これらの機能ブロックは、ＲＦＣ３４８９で規定されて定期的に行われるＮＡＴ種別の判定処理においても使用され、また本発明の実施の形態において発呼イベントが生じた際の外部アドレス判定処理においても使用される。
【００７１】
ＮＡＴ種別不整合判定処理部２１３は、発呼イベントが生じた際に、ＳＴＵＮサーバＡに対して送信した第１のリクエストに応答して返送される第１のレスポンスから取り出した第１のＷＡＮ側のポート番号と、ＳＴＵＮサーバＢに対して送信した第２のリクエストに応答して返送される第２のレスポンスからから取り出した第２のＷＡＮ側のポート番号を比較し、接続されているＮＡＴルータの端末で通信に使用するポートに対してＮＡＴが割り当てるポート割り当てのルールがシンメトリックか否かを判定する。第１のＷＡＮ側のポート番号と第２のＷＡＮ側のポート番号が不一致の場合には前記接続されているＮＡＴルータのＮＡＴ種別をシンメトリックに変化したと判定する。
【００７２】
ＮＡＴ種別不整合判定処理部２１３は、発呼イベントが生じた際に、ＳＴＵＮサーバＡに対して送信した第１のリクエストに応答して返送される第１のレスポンスから取り出した第１の送信元ポート番号と、ＳＴＵＮサーバＢに対して送信した第２のリクエストに応答して返送される第２のレスポンスからから取り出した第２の送信元ポート番号を比較し、前記接続されているＮＡＴルータのＮＡＴ種別がコーン系であるかまたはシンメトリックであるかを判定する。第１の送信元ポート番号と第２の送信元ポート番号が不一致の場合には前記接続されているＮＡＴルータのＮＡＴ種別をシンメトリックに変化したと判定する。
【００７３】
なお図６の位置情報取出部２１１、グローバルアドレス・ポート検出プロトコル処理部２１０、ＮＡＴ種別判定処理部２１２、ＮＡＴ種別不整合判定処理部２１３におけるソフトウェア的構成はプログラムのところで詳述する。また、マッピング位置情報はＲＡＭ３０９の中に設けられたテーブルに保持される。
【００７４】
図７は本実施の形態における通信システムで使用されるＳＩＰサーバ４（呼制御サーバ）またはメディア中継サーバ５が持つハードウェア構成を示す図であり、これらのサーバはパーソナルコンピュータなどと同様の構成を有し、ＣＰＵ４０１、プログラムを記憶したＲＯＭ４０２、ＲＡＭ４０３が搭載されるとともに、ネットワークケーブルに接続されるネットワークインターフェース（Ｉ／Ｆ）４０４が設けられている。
【００７５】
図８はＳＩＰサーバ４の機能ブロック構成図を示す。ＳＩＰサーバ４には３種類のサーバが搭載されている。第１のサーバはプロキシサーバ４１１であり、ネットワークからのリクエストやレスポンスを中継するサーバである。第２のサーバはリダイレクトサーバ４１２であり、これはリクエストがあったときそのパケットの送信先位置情報（ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ））を参照するものである。さらに第３のサーバは登録サーバ４１３であって、ＩＰ電話機３ａ，３ｂからＲＥＧＩＳＴＥＲのメッセージが送信されると、そのＵＲＩをロケーションサーバ（図示しない）に格納する。メディア中継サーバ５の機能ブロック構成は図示しないが、図８の構成で単機能のプロキシサーバになる。
【００７６】
ここで、ＩＰ電話機３ａとＩＰ電話機３ｂ間で通話するときに、通常行われるシーケンスについて説明する。図９はＮＡＴルータ２ａ，２ｂ配下のＩＰ電話機３ａ，３ｂがプロトコルＰ２Ｐで互いに通信できる場合のシーケンス図を示す。ここで、以下説明を容易にするため具体的な例を挙げて説明する。
【００７７】
ＩＰ電話機３ａはＩＰアドレスが「１９２．１６８．０．２」、ＳＩＰ通信用ポート番号が「５０６０」、データ通信（ＶｏＩＰ）用のポート番号が「１５０００」とし、ＩＰ電話機３ｂはＬＡＮ側のＩＰアドレスが「１９２．１６９．０．２」、ＳＩＰ通信用ポート番号が「５０６０」、データ通信（ＶｏＩＰ）用のポート番号が「１５０００」とする。また、ＮＡＴルータ２ａのＬＡＮ側のＩＰアドレスは「１９２．１６８．０．１」、ＷＡＮ側のＩＰアドレスが「１９２．１９６．０．１」、ＳＩＰ通信用ポート番号が「５０６０」、データ通信（ＶｏＩＰ）用のポート番号が「１５０００」とし、ＮＡＴルータ２ｂのＬＡＮ側のＩＰアドレスは「１９２．１６９．０．１」、グローバルＩＰアドレスが「１９２．１９７．０．１」、ＳＩＰ通信用ポート番号が「５０６０」、データ通信用ポート番号が「１５０００」とする。また、ＳＩＰサーバ４のグローバルＩＰアドレスが「１９２．１９８．０．１」とする。以下に整理して記載する。
［ＩＰ電話機３ａ］
ＬＡＮ側のＩＰアドレス：  「１９２．１６８．０．２」
ＳＩＰ通信用ポート番号：  「５０６０」
データ通信（ＶｏＩＰ）用のポート番号：  「１５０００」
［ＮＡＴルータ２ａ］
ＬＡＮ側のＩＰアドレス：  「１９２．１６８．０．１」
グローバルＩＰアドレス：  「１９２．１９６．０．１」
ＳＩＰ通信用ポート番号：  「５０６０」
データ通信（ＶｏＩＰ）用のポート番号：  「１５０００」
［ＩＰ電話機３ｂ］
ＬＡＮ側のＩＰアドレス：  「１９２．１６９．０．２」
ＳＩＰ通信用ポート番号：  「５０６０」
データ通信（ＶｏＩＰ）用のポート番号：  「１５０００」
［ＮＡＴルータ２ｂ］
ＬＡＮ側のＩＰアドレス：  「１９２．１６９．０．１」
グローバルＩＰアドレス：  「１９２．１９７．０．１」
ＳＩＰ通信用ポート番号：  「５０６０」
データ通信用ポート番号：  「１５０００」
［ＳＩＰサーバ４］
グローバルＩＰアドレス：  「１９２．１９８．０．１」
なお、これらはあくまで例示のアドレスとポートである。
【００７８】
上記したグローバルＩＰアドレス「１９２．１９６．０．１」の情報は、ＩＰ電話機３ａがＳＴＵＮサーバＡ，Ｂを使って定期的なＮＡＴ種別判定を行うことにより取得することができ、ＩＰ電話機３ａ内のメモリに記憶される。
【００７９】
一般的に端末（ローカル）で使用するＳＩＰ通信用ポート番号はシステムで予め決定されるものであり、動的に変化するものではない。本実施の形態ではＳＩＰ通信用ポート番号として「５０６０」が決められている。また、データ通信で使用するポート番号は通常は実際にデータ通信を行う際に割り当てられるため、ある番号に固定されていない（使用時に動的にポート番号が割り当てられる）。但し、ここでは明示的に説明するためにデータ通信のポート番号として「１５０００」が割り当てられるものとする。
【００８０】
ＮＡＴルータ２ａのグローバルＩＰアドレス「１９２．１９６．０．１」は、たとえば午前５時に定期的に行われた判定で取得されたものである。同様に、ＮＡＴルータ２ｂのグローバルＩＰアドレス「１９２．１９７．０．１」についても定期的なＮＡＴ種別判定で取得されたものである。
【００８１】
図１１はＮＡＴ種別判定で使われるメッセージのフォーマットを示す。まず、ＳＴＵＮメッセージのフォーマットについて説明する。図１１（ａ）はバインディングリクエストのＳＴＵＮメッセージ簡易フォーマット図である。通常この簡易フォーマットが使用される。図１１（ａ）に示すようにバインディングリクエストはヘッダ部とメッセージ部から構成される。このメッセージ部にはリクエストの属性としてＣＨＡＮＧＥ−ＲＥＱＵＥＳＴが書き込まれる。そして、ＩＰｃｈａｎｇｅフラグとポートｃｈａｎｇｅフラグの２つのフラグがセットされる。
【００８２】
ＩＰｃｈａｎｇｅフラグをＯＦＦにしてバインディングリクエストをＳＴＵＮサーバＡへ送信すると、このバインディングリクエストに対する応答が送信先サーバ（ＳＴＵＮサーバＡ）のグローバルＩＰアドレスから返される。バインディングリクエストに対する相手からの応答はバインディングレスポンスと呼ばれる。
【００８３】
またバインディングリクエストのＩＰｃｈａｎｇｅフラグがＯＮに設定されている場合は、このバインディングリクエストに対する応答（バインディングレスポンス）は送信先のサーバのグローバルＩＰアドレスと対になった別のグローバルＩＰアドレスをもつサーバから送信される。
【００８４】
すなわち、ＩＰｃｈａｎｇｅフラグについて整理すると、
ＩＰｃｈａｎｇｅフラグ：ＯＦＦ
このリクエストの宛先ＩＰアドレスと同じＩＰアドレスを送信元としてバインディングレスポンスが返される。
【００８５】
ＩＰｃｈａｎｇｅフラグ：ＯＮ
このリクエストの宛先ＩＰアドレスとは異なるＩＰアドレスを送信元としてバインディングレスポンスが返される。たとえばＳＴＵＮサーバＡにバインディングリクエストを送ると、ＳＴＵＮサーバＢからバインディングレスポンスが返される。
【００８６】
また、バインディングリクエストのポートｃｈａｎｇｅフラグがＯＦＦの場合、このリクエストを送信した送信先のＷＡＮ側のポート番号と同じポート番号を使ってバインディングレスポンスが送信される。
【００８７】
バインディングリクエストのポートｃｈａｎｇｅフラグがＯＮの場合は、このリクエストを送信したＷＡＮ側のポート番号と対になった別のポート番号を使ってバインディングレスポンスが送信される。従って、この組み合わせにより、バインディングリクエストは４通りのバインディングレスポンスを取得することができる。
【００８８】
すなわち、ポートｃｈａｎｇｅフラグについて整理すると、
ポートｃｈａｎｇｅフラグ：ＯＦＦ
このリクエストを送信したときの送信先のＷＡＮ側のポート番号（ＳＴＵＮサーバＡのポート番号）と同じポート番号を使ってバインディングレスポンスが送信される。
【００８９】
ＳＴＵＮサーバＡがポート８０８０でバインディングリクエストを受信したなら、ＳＴＵＮサーバＡはそれに対するバインディングレスポンスを同じ８０８０から送信する。
ＩＰ電話機がＩＰｃｈａｎｇｅフラグとポートｃｈａｎｇｅフラグを何れもＯＦＦにしてリクエストを送信すると、それに対するバインディングレスポンスを受信したときに、該リクエストを転送した際の送信元グローバルＩＰアドレスとＷＡＮ側のポート番号を取得できる。
【００９０】
ポートｃｈａｎｇｅフラグ：ＯＮ
このリクエストを送信した送信先のＷＡＮ側のポート番号（ＳＴＵＮサーバＡのポート番号）とは異なる別のポート番号を使ってバインディングレスポンスが送信される。
【００９１】
ＳＴＵＮサーバＡがポート８０８０でバインディングリクエストを受信したなら、ＳＴＵＮサーバＡはそれに対するバインディングレスポンスをほかの８０８１から送信する。
【００９２】
図１１（ｂ）はバインディングレスポンスのＳＴＵＮメッセージ簡易フォーマット図である。このバインディングレスポンスのメッセージ部にはレスポンスの属性として、ＭＡＰＰＥＤ−ＡＤＤＲＥＳＳ、ＳＯＵＲＣＥ−ＡＤＤＲＥＳＳ、ＣＨＡＮＧＥ−ＡＤＤＲＥＳＳが書き込まれる。
【００９３】
このうちＭＡＰＰＥＤ−ＡＤＤＲＥＳＳには、バインディングリクエストを送信した際に通過したＮＡＴルータ２ａ，２ｂのグローバルＩＰアドレスおよびＷＡＮ側のポート番号が書き込まれ、ＳＯＵＲＣＥ−ＡＤＤＲＥＳＳにはバインディングレスポンスを送信したＳＴＵＮサーバの送信元グローバルＩＰアドレスおよびＷＡＮ側のポート番号が書き込まれる。
【００９４】
そしてバインディングレスポンスのＣＨＡＮＧＥ−ＡＤＤＲＥＳＳには、バインディングリクエストにおいてＩＰｃｈａｎｇｅフラグまたはポートｃｈａｎｇｅフラグの何れか１つまたは両方のフラグをＯＮに設定したときに、ＳＴＵＮサーバによってバインディングリクエストの送信先のグローバルＩＰアドレスおよびＷＡＮ側のポート番号とは異なるグローバルＩＰアドレスおよびＷＡＮ側のポート番号が書き込まれる。すなわちバインディングリクエストを受けたＳＴＵＮサーバ（ＳＴＵＮサーバＡまたはＳＴＵＮサーバＢ）は、該リクエストに対するレスポンスを送信する際に、ほかのグローバルＩＰアドレスおよびＷＡＮ側のポート番号をＣＨＡＮＧＥ−ＡＤＤＲＥＳＳの欄に書き込み、バインディングレスポンスを送信する。
【００９５】
このようにバインディングメッセージの送り元がＣＨＡＮＧＥ−ＲＥＱＵＥＳＴの属性を指定することで、マッピングされているグローバルＩＰアドレスとＷＡＮ側のポート番号を取得したり、送信先ＳＴＵＮサーバからのレスポンスを受信できるか否か、あるいは送信先のＳＴＵＮサーバとは異なる（対となる）別のＩＰアドレス，ポート番号からのレスポンスを受信できるか、またはＩＰアドレスが同じでポート番号だけが異なるレスポンスを受信できるか、などの判定処理を行うことができる。
【００９６】
本実施の形態におけるＩＰ電話機の定期的なＮＡＴ種別の判定はすでに背景技術の項で図１２および図１８に基づいて説明したＮＡＴ種別判定処理（ＲＦＣ３４８９で規定）と同様である。すなわちＩＰ電話機３ａのグローバルアドレス・ポート検出プロトコル処理部２１０によりＮＡＴルータ２ａを介してＳＴＵＮサーバへＳＴＵＮリクエストを送信し、位置情報取出部２１１およびＮＡＴ種別判定処理部２１２が受信したＳＴＵＮレスポンスの結果から現在のＮＡＴの動作状態を取得する。
【００９７】
図１３は定期的に行われるＮＡＴ種別判定においてＮＡＴ種別がコーン系と判定されている場合に、発呼のイベントがあった際のＩＰ電話機３ａの動作をマクロ的に示したフローチャートである。待機時、ＩＰ電話機３ａは発呼のイベントの有無を監視している（ｓｔｅｐ１）。たとえば本実施の形態に示される電話機の場合は、使用者によって発呼に関連する操作が為された場合、またはハンドセットのオフフックや電話帳表示の為のボタン操作などが為された場合に発呼のイベント有りと認識する。
【００９８】
ＩＰ電話機３ａは発呼のイベントを取得すると外部アドレスの判定処理を実行する（ｓｔｅｐ２）。この外部アドレスの判定処理の手順については後で図１４に沿って詳細に説明する。
【００９９】
次にｓｔｅｐ３においてＮＡＴ種別がコーン系からシンメトリックへ変化していないか否かが判定され、シンメトリックへ変化したことが判明した場合は設定をシンメトリックに変更し（ｓｔｅｐ４）、シンメトリックに対応した通信を開始の処理に移る。判定の結果がコーン系である場合にはＮＡＴ種別はそのままで通信を開始させる（ｓｔｅｐ５）。通話が終了すると、ｓｔｅｐ１に戻って待機する。
【０１００】
次に本実施の形態において、発呼イベントが検出されたときに行われるＮＡＴ種別不整合判定処理について詳細に説明する。ＮＡＴ種別不整合判定処理は、通信開始時、図１３に示す外部アドレスの判定処理の後に実行される。
【０１０１】
図１４は本実施の形態におけるＩＰ電話機３ａは発呼イベントが検出されたときの処理のフローチャートを示す。発呼イベントが検出されたときＩＰ電話機３ａは前述のように、ＮＡＴルータ２ａのグローバルＩＰアドレスやポート番号を検出するためのバインディングリクエスト（本発明におけるＷＡＮ側のポート番号確認のための第１のリクエスト）をＳＴＵＮサーバＡに送信する（ｓｔｅｐ１１）。このときのバインディングリクエストではＩＰｃｈａｎｇｅフラグ，ポートｃｈａｎｇｅフラグをともにＯＦＦにすることにより、そのリクエストに対するバインディングレスポンスが同じグローバルＩＰアドレスを発信元とし、かつ同じＳＴＵＮサーバＡが該リクエストを受けたときと同じポート番号を使ってバインディングレスポンスを返信するようにＳＴＵＮサーバＡに伝える。なお、前述のようにＳＴＵＮサーバへバインディングリクエストを送って該リクエストに応じてＳＴＵＮサーバから返されるバインディングレスポンスのＭＡＰＰＥＤ−ＡＤＤＲＥＳＳには、該バインディングリクエストを送信した際に通過したＮＡＴルータのグローバルＩＰアドレスおよびＷＡＮ側ポート番号が書き込まれる。
【０１０２】
ｓｔｅｐ１１で送信したリクエストに応じてＳＴＵＮサーバＡから返送されるバインディングレスポンス（本発明における第１のレスポンス）のＳＯＵＲＣＥ−ＡＤＤＲＥＳＳには、ＮＡＴルータ２ａがＳＴＵＮサーバＡへバインディングリクエストを転送した際のＮＡＴルータ２ａの外部ＩＰアドレスおよびＷＡＮ側ポート番号（ＳＴＵＮサーバＡからのレスポンス受信した際の外部ＩＰアドレスおよびポート番号に同じ）が収められている。ＩＰ電話機３ａはＳＴＵＮサーバＡからのバインディングレスポンスを受信すると、このバインディングレスポンスに収められた情報より、ＮＡＴルータ２ａの外部ＩＰアドレスおよびＮＡＴルータ２ａが開いたＷＡＮ側のポート番号を検出する（ｓｔｅｐ１２）。
【０１０３】
次ぎにＩＰ電話機３ａは、前回までのＮＡＴ種別判定結果を調べ（ｓｔｅｐ１３）、前回のＮＡＴ種別判定結果がコーン系であるか否かによって動作を切り換える。ｓｔｅｐ１３において、前回までのＮＡＴ種別判定結果がコーン系以外のＮＡＴ種別であるときは、コーン系以外に対応した処理実行する（ｓｔｅｐ１４）。フルコーン、レストリクテッドコーン、ポートレストリクテッドがコーン系のＮＡＴであり、シンメトリックとオープンネットワークがコーン系以外である。
【０１０４】
前回までのＮＡＴルータ２ａのＮＡＴ種別がコーン系（すなわちフルコーン、ポートリストリクテッドコーン、リストリクテッドコーンの３種類）のＮＡＴ種別である場合、ｓｔｅｐ１５においてコーン系を維持しているかまたはシンメトリックに切り換わったかを確認するためのＮＡＴ種別不整合判定処理を実行する。
【０１０５】
ｓｔｅｐ１５では、ｓｔｅｐ１１で送信したグローバルＩＰアドレスおよびポート番号とは異なるグローバルＩＰアドレスとポート番号（すなわちＳＴＵＮサーバＢのＩＰアドレスとポート番号）へバインディングリクエストを送信する。このときのバインディングリクエストでも、ＩＰｃｈａｎｇｅフラグ，ポートｃｈａｎｇｅフラグをともにＯＦＦにすることにより、そのリクエストに対するバインディングレスポンスが同じグローバルＩＰアドレス（すなわちＳＴＵＮサーバＢのＩＰアドレス）を発信元とし、かつ同じＳＴＵＮサーバＢが該リクエストを受けたときと同じポート番号を使ってバインディングレスポンスを返信するようにＳＴＵＮサーバＢに伝える。このバインディングリクエストに対してＳＴＵＮサーバＢがバインディングレスポンスを返送する。
【０１０６】
ＩＰ電話機３ａはＳＴＵＮサーバＢからのバインディングレスポンス（本発明における第２のレスポンス）を受信すると、このバインディングレスポンスのＭＡＰＰＥＤ−ＡＤＤＲＥＳＳに収められた情報より、ＮＡＴルータ２ａがＳＴＵＮサーバＢへバインディングリクエストを転送した際のＮＡＴルータ２ａの外部ＩＰアドレスおよびＷＡＮ側ポート番号（ＳＴＵＮサーバＢからのレスポンスを受信した際の外部ＩＰアドレスおよびポート番号に同じ）を検出する（ｓｔｅｐ１６）。
【０１０７】
次にＩＰ電話機３ａは、一回目の検出結果のポート番号（ＳＴＵＮサーバＡからレスポンスを受信したときのＮＡＴルータ２ａのＷＡＮ側ポート番号）と、二回目の検出結果のポート番号（ＳＴＵＮサーバＢからレスポンスを受信したときのＮＡＴルータ２ａのＷＡＮ側ポート番号）とを比較する（ｓｔｅｐ１７）。
【０１０８】
ｓｔｅｐ１７において、一回目と二回目の検出結果のポート番号が異なっていればシンメトリックと判断する。すなわち第１の宛先であるＳＴＵＮサーバＡから返されたレスポンスと、第１の宛先とは異なる第２の宛先であるＳＴＵＮサーバＢから返されたレスポンスがＮＡＴルータ２ａの異なるポートを通して受信されたので、そのときにＮＡＴルータ２ａはシンメトリックの動作としていると判定することができる。そしてこの場合にＩＰ電話機３ａはシンメトリックに対応した処理実行する（ｓｔｅｐ１８）。
【０１０９】
ｓｔｅｐ１７において、一回目と二回目の検出結果のポート番号が一致していればコーン系で有ると判定し、コーン系に対応した処理を実行する（ｓｔｅｐ９）。すなわち第１の宛先であるＳＴＵＮサーバＡから返されたレスポンスと、第１の宛先とは異なる第２の宛先であるＳＴＵＮサーバＢから返されたレスポンスがＮＡＴルータ２ａの同じポートを通して受信されたのであるから、両ポート番号が一致していればコーン系で有ると判定することができる。
【０１１０】
後処理としては、このようなＮＡＴ種別不整合判定処理でシンメトリックと判断される場合に、ＮＡＴ種別をシンメトリックに変更してシンメトリックの動作に移行させ、ＮＡＴ種別を整合させる。またＩＰ電話機の場合、シンメトリックに切り換わっている場合には発呼したＩＰ電話機に対して呼制御サーバからビジートーンを送出することにより、発呼者は通話できないことを即座に知ることができ、不整合の判定は短時間で行えるので、直ぐに通話が可能になる。
【０１１１】
なお、発呼イベントの際の外部アドレスの判定処理は従来でも行われ、通話開始の際の不可欠な処理であるが、本発明の実施の形態では外部アドレス判定処理の後にＮＡＴ種別不整合判定処理を行う。また本実施の形態では２つの判定処理ともグローバルＩＰアドレスおよびポートを検出するためにバインディングリクエストとバインディングレスポンスを利用しているが、ＮＡＴ種別不整合判定処理はＳＴＵＮサーバだけでなく、ほかのサーバを利用して判定を行うこともできる。
【０１１２】
次に本実施の形態において、ＩＰ電話機３ａ、ＩＰ電話機３ｂ間で実際に通話が行われる場合のシーケンスについて説明する。
【０１１３】
図９は、図１のネットワーク構成において本発明の実施の形態におけるＮＡＴルータ配下のＩＰ電話機がプロトコルＰ２Ｐで互いに正常に通信する場合のシーケンス図をしめす。本実施の形態では、図９に示す処理を開始する前に、予めＩＰ電話機３ａ，３ｂはＳＩＰサーバ４の登録サーバ４１３に対して登録を行っておく。図９では図示しないが、ＩＰ電話機３ａ，３ｂはＮＡＴルータ２ａ，２ｂ経由で登録サーバ４１３にＲＥＧＩＳＴＥＲメッセージを送信し、登録サーバ４１３がそのＵＲＩを登録して２００ＯＫを送信することで行われる。
【０１１４】
発呼の際にＩＮＶＩＴＥまたは２００ＯＫの送信時に提示するＳＤＰ（Ｓｅｓｓｉｏｎ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）におけるデータ通信用のパラメータを指定する。ＩＰ電話機３ａは以上のようなＮＡＴ種別判定動作を定期的に行い、ＮＡＴルータのＮＡＴ種別情報およびデータ通信用のパラメータを記録および更新している。
【０１１５】
発呼の処理では、まず図９に示すようにＩＰ電話機３ａからのＩＮＶＩＴＥメッセージがＳＩＰサーバ４（グローバルＩＰアドレス：「１９２．１９８．０．１」）当てに発信される。ＩＰ電話機３ａからのＩＮＶＩＴＥメッセージは、まずＮＡＴルータ２ａに転送され、ＮＡＴルータ２ａでは、｛ＬＡＮ側のＩＰアドレス「１９２．１６８．０．２」、ローカルポート番号「５０６０」｝→｛グローバルＩＰアドレス「１９２．１９６．０．１」、ポート番号「５０６０」｝というアドレス変換が行われる。そしてＮＡＴルータ２ａからＮＡＴルータ２ａのグローバルＩＰアドレス「１９２．１９６．０．１」を送信元アドレスとして、ポート番号を「５０６０」としてＳＩＰサーバ４宛てのＩＮＶＩＴＥメッセージが送信される。
【０１１６】
前述のようにＳＩＰサーバ４の登録サーバ４１３（図８参照）には予めＩＰ電話機３ｂのグローバルＩＰアドレス「１９２．１９７．０．１」、ポート番号「５０６０」が登録されているから、ＳＩＰサーバ４はこの位置情報に従ってＩＰ電話機３ｂ宛て（送信先グローバルＩＰアドレス「１９２．１９７．０．１」、ポート番号「５０６０」）のＩＮＶＩＴＥメッセージを送信する。
【０１１７】
相手方ＮＡＴルータ２ｂはこのＩＮＶＩＴＥに対し、｛グローバルＩＰアドレス「１９２．１９７．０．１」、ポート番号「５０６０」｝を｛ＬＡＮ側のＩＰアドレス「１９２．１６８．０．２」、ローカルポート番号「５０６０」｝にアドレス変換する。この変換後のＩＮＶＩＴＥメッセージがＩＰ電話機３ｂに送られ、ＩＰ電話機３ｂにて着信したことになる。
【０１１８】
一方、図９に示すようにＳＩＰサーバ４はＩＮＶＩＴＥをＮＡＴルータ２ｂに送信した後、発信元ＩＰ電話機３ａに対し処理中であることを示す１００ＴｒｙｉｎｇをＮＡＴルータ２ａ経由で送信する。
【０１１９】
着信側電話機の動作としては、上記したようにＩＮＶＩＴＥメッセージが着信したＩＰ電話機３ｂはこの着信を契機に呼び出しするためのベルを鳴らす。さらにＩＰ電話機３ｂは１８０ＲｉｎｇｉｎｇメッセージをＮＡＴルータ２ｂ、ＳＩＰサーバ４、ＮＡＴルータ２ａ経由でＩＰ電話機３ａに向けて送信する。この１８０Ｒｉｎｇｉｎｇメッセージの着信によりＩＰ電話機３ａは呼び出し中状態であることを発信側に伝える。
【０１２０】
ベルの鳴動に対して、ＩＰ電話機３ｂにおいてハンドセットが利用者によってオフフックされると、ＩＰ電話機３ｂは２００ＯＫをＳＩＰサーバ４に宛てて送信する。これは一旦ＮＡＴルータ２ｂに転送され、ＮＡＴルータ２ｂはそのときのマッピングに従ってアドレス変換を行い、ＳＩＰサーバ４宛てに２００ＯＫを送信する。これを受けたＳＩＰサーバ４は、この２００ＯＫをＮＡＴルータ３ａ宛てに送信する。
【０１２１】
この２００ＯＫを受信したＮＡＴルータ３ａはマッピングに従ってアドレス変換を行い、ＩＰ電話３ａにパケットを通知する。ＩＰ電話３ａで２００ＯＫを受信すると、ＩＰ電話機３ａはＡＣＫメッセージを送信し、ＮＡＴルータ２ａにおいてメッセージのアドレス変換を行ってＳＩＰサーバ４へ転送し、ＳＩＰサーバ４の制御によってＡＣＫはＮＡＴルータ２ｂを経てＩＰ電話機３ｂに送信される。この後、ＩＰ電話機３ａ，３ｂはＮＡＴルータ２ａ，２ｂを介して音声などのデータ通信を行うことができるようになり、通話データはメディア中継サーバ５を介すことなく、プロトコルＰ２Ｐで互いに送受信され、通話状態となる。ＩＰ電話機３ａ，３ｂが直接セッションで通話データを送受信するポート番号は前述の設定のように「１５００」となるが、ＮＡＴルータ２ａ，２ｂもデータ通信用ポートとしてポート番号：「１５０００」を空けているので、データをそのまま通過させる。
【０１２２】
終話するときは、一方のＩＰ電話機がオンフックされると、他方のＩＰ電話機へＢＹＥのメッセージが送信され、これに対してこの他方から２００ＯＫが送られて終話し、初期状態となる。
【０１２３】
次に本発明の実施の形態において、前回までのＮＡＴ種別判定結果がコーン系であって、発呼する際のＮＡＴ種別不整合判定でもコーン系が維持されている場合の通信時のシーケンスを説明する。図１５に示すように、ＩＰ電話機３ａが発呼のイベントを取得すると、まずＩＰ電話機３ａは従来同様、バインディングリクエスト１をＮＡＴルータ２ａを介してＳＴＵＮサーバＡへ送信する。これに対してＳＴＵＮサーバＡからのバインディングレスポンス１が送信され、ＩＰ電話機３ａは該レスポンスに書き込まれた情報から、ＮＡＴルータ２ａのグローバルＩＰアドレスおよびＷＡＮ側のポート番号の情報を取り出す。
【０１２４】
次にＩＰ電話機３ａは前回までのＮＡＴ種別判定結果を調べ、前回のＮＡＴ種別判定結果がコーン系であるか否かによって動作を切り換える。前回の判定結果がコーン系である場合、ＩＰ電話機３ａはＳＩＰサーバ４へＩＮＶＩＴＥメッセージを投げる前に、コーン系からシンメトリックに切り換わっているか否かを確認するためのＮＡＴ種別不整合判定を行う。
【０１２５】
ＮＡＴ種別不整合判定では、ＩＰ電話機３ａはバインディングリクエスト１’をＳＴＵＮサーバＢへ送信する。これに対してＳＴＵＮサーバＢからのバインディングレスポンス１’が送信される。ＩＰ電話機３ａは該レスポンスに書き込まれた情報から、ＮＡＴルータ２ａがバインディングリクエスト１’を転送する際に使用した外部グローバルＩＰアドレスおよびＷＡＮ側のポート番号の情報を取り出す。ＩＰ電話機３ａは、ＮＡＴルータ２ａのＷＡＮ側ポート番号の情報を取り出すためのバインディングレスポンス１と、その後ＳＴＵＮサーバＢへリクエスト１’を送信することによってＳＴＵＮサーバＢから返されるバインディングレスポンス１’の２つのレスポンスに書き込まれたＷＡＮ側のポート番号の情報から、ＮＡＴルータ２ａがコーン系かまたはシンメトリックに切り換わっているか否かを判定する。
【０１２６】
図１５に示す例では、ＮＡＴ種別不整合判定によってコーン系と判断されるため、ＩＰ電話機３ａはＩＮＶＩＴＥをＳＩＰサーバ４に送信し、ＳＩＰサーバ４はこのメッセージをＮＡＴルータ２ｂ経由でＩＰ電話機３ｂに送信する。
【０１２７】
ＩＰ電話機３ｂはベルを鳴らし、１８０Ｒｉｎｇｉｎｇ、２００ＯＫをＮＡＴルータ２ｂに送信する。このメッセージをＮＡＴルータ２ｂはＳＩＰサーバ４、ＮＡＴルータ２ａを経てＩＰ電話機３ａに送信する。ＩＰ電話機３ａは呼び出中となり、オフフックすると、ＡｃｋがＳＩＰサーバ４に送信され、ＳＩＰサーバ４はこのＡｃｋをＮＡＴルータ２ｂ経由でＩＰ電話機３ｂに送信する。これによりＩＰ電話機３ａ，３ｂ間の通話が開始される。通話を終了するときには、一方のＩＰ電話機をオンフックすることでＢＹＥメッセージが他方のＩＰ電話機に送信され、初期状態となる。
【０１２８】
なおＮＡＴ種別不整合判定によってシンメトリックと判断された場合は、次の図１６に示すシンメトリックに対応した通信のシーケンスとなり、ＩＰ電話機３ａはＩＮＶＩＴＥをＳＩＰサーバ４に送信し、ＳＩＰサーバ４はこのメッセージをＮＡＴルータ２ｂ経由でＩＰ電話機３ｂに送信する。
【０１２９】
図１６は本発明の実施の形態において、ＩＰ電話機３ａから発呼する際、前回までのＮＡＴ種別判定結果がシンメトリックである場合の通信のシーケンス図である。ＩＰ電話機３ａが発呼のイベントを取得すると、前回までのＮＡＴ種別判定結果を調べ、ＮＡＴ種別判定結果がシンメトリックである場合には直ぐにシンメトリックに対応した通信のシーケンスを開始する。
【０１３０】
すなわちＩＰ電話機３ａは、ＩＮＶＩＴＥをＳＩＰサーバ４に送信し、ＳＩＰサーバ４はこのＩＮＶＩＴＥメッセージをＮＡＴルータ２ｂを介してＩＰ電話機３ｂに送信する。なお、ＩＰ電話機３ａからＩＰ電話機３ｂに呼び出しがあったことは別途メディア中継サーバ５に伝えられる。
【０１３１】
これに対し、ＩＰ電話機３ｂは、１８０Ｒｉｎｇｉｎｇおよび２００ＯＫを、ＮＡＴルータ２ｂを介してＳＩＰサーバ４に送り、ＳＩＰサーバ４はこれらをＮＡＴルータ２ａを介してＩＰ電話機３ａに順に送信する。メッセージが着信するとＩＰ電話機３ａはＡｃｋをＳＩＰサーバ４に送信し、ＳＩＰサーバ４はこのＡｃｋメッセージをＮＡＴルータ２ｂ経由でＩＰ電話機３ｂに送信する。
【０１３２】
これによりメディア中継サーバ５によってＩＰ電話機３ａ，３ｂ間にそれぞれセッションが張られ、ＩＰ電話機３ａ，３ｂ間でメディア中継サーバ５を介して通話が開始される。通話を終了するときには、一方のＩＰ電話機をオンフックすることでＢＹＥメッセージが他方のＩＰ電話機に送信され、初期状態となる。
【０１３３】
続いて、ＩＰ電話機３ａに搭載される実施の形態におけるプログラムについて説明する。図１７は図１４のフローチャートで示した手順でＮＡＴ種別不整合判定処理を行うためのプログラムを示す。
【０１３４】
図１７に示すようにこのプログラムには、ＩＰ電話機３ａにおける発呼のイベントを取得する発呼のイベント取得手段５０１と、バインディングリクエスト１を送信する一回目メッセージ生成手段５０２とバインディングリクエスト２を送信する二回目メッセージ生成手段５０５とが設けられている。
【０１３５】
一回目メッセージ生成手段５０２はグローバルＩＰアドレス、ポート番号を検出するためのバインディングリクエスト１を生成し、通信制御部２０９からＳＴＵＮサーバＡに送信させる。二回目メッセージ生成手段５０５はバインディングリクエスト２を生成してＳＴＵＮサーバＢ宛てにこれを送信させる。
【０１３６】
さらに、通信制御部２０９がバインディングリクエスト１，２に対するＳＴＵＮサーバＡ，Ｂからのバインディングレスポンス１，２を受信すると、そのメッセージからグローバルＩＰアドレス、ポート番号を取り出すアドレスポート取出手段５０３が設けられている。
【０１３７】
また、アドレスポート取出手段５０３がバインディングリクエスト１を受信したとき、ＮＡＴがコーン系とそれ以外を判定するためのＮＡＴ種別確認手段５０４と、バインディングレスポンス２、バインディングレスポンス１から、別機能として、シンメトリックの状態をＮＡＴ種別確認手段５０４が検出したとき、シンメトリックへ動作状態を移行させるＮＡＴ変化処理手段５０６が設けられている。
【０１３８】
このほか、ＮＡＴ種別判定処理を実行するために、タイマー５１０が計時し、所定の時刻が到来すると、時刻のイベント取得手段５０７がこのイベントを取得し、これによってＳＴＵＮメッセージ生成手段５０８が通信制御部２０９を介して［ＳＴＵＮテスト１］［ＳＴＵＮテスト２］［ＳＴＵＮテスト1’］［ＳＴＵＮテスト３］を実行させる。アドレスポート取出手段５０３はこの応答結果をＮＡＴ種別判定手段５０９に送信し、これを基に判定する。
【０１３９】
これら一回目メッセージ生成手段５０２、二回目メッセージ生成手段５０５、ＳＴＵＮメッセージ生成手段５０８は、図６に示すグローバルアドレス・ポート検出プロトコル処理部２１０に位置付けられて機能するものであり、アドレスポート取出手段５０３は位置情報取出部２１１に位置付けられて機能し、さらに、ＮＡＴ種別確認手段５０４、ＮＡＴ変化処理手段５０６はＮＡＴ種別判定処理部２１２において機能するものである。
【０１４０】
図１７に示したプログラムの各手段の機能を説明すると、発呼のイベント取得手段５０１が発呼のイベントを取得すると、一回目メッセージ生成手段５０２がバインディングリクエスト１を生成して通信制御部２０９によってＳＴＵＮサーバＡに送信させ、ＳＴＵＮサーバＡからバインディングレスポンス１を受信すると、アドレスポート取出手段５０３はこの受信メッセージからグローバルＩＰアドレスおよびＮＡＴルータ２ａのＷＡＮ側ポート番号の情報を取り出す。
【０１４１】
次にＮＡＴ種別判定手段５０９が判定した前回までのＮＡＴ種別判定結果を調べる。前回までのＮＡＴ種別判定結果がコーン系である場合に、二回目メッセージ生成手段５０５がバインディングリクエスト１のグローバルＩＰアドレス,ポート番号とは異なるグローバルＩＰアドレス（ＳＴＵＮサーバＢ）とポート番号へのバインディングリクエスト２を生成し、通信制御部２０９によってＳＴＵＮサーバＢに送信させる。通信制御部２０９がＳＴＵＮサーバＢからバインディングレスポンス２を受信すると、アドレスポート取出手段５０３はこの受信メッセージからそのグローバルＩＰアドレスおよびＮＡＴルータ２ａのＷＡＮ側ポート番号の情報を取り出す。
【０１４２】
次いで、この結果からＮＡＴ種別確認手段５０４が、一回目の検出結果のＷＡＮ側ポート番号と、二回目の検出結果のＷＡＮ側ポート番号とを比較する。一回目と二回目のポート番号が異なっていれば、ＮＡＴ種別確認手段５０４は現在のＮＡＴ種別をシンメトリックと判断し、ＮＡＴ変化処理手段５０６がシンメトリックの動作に移行させる。一回目と二回目のポート番号が一致していれば現在のＮＡＴ種別はコーン系であるから、ＮＡＴ変化処理手段５０６はＮＡＴ種別変化無しとする。
【０１４３】
以上説明したように、本発明の実施の形態によれば、通信を開始するときに、使用する端末が接続されたＮＡＴルータのＷＡＮ側ポート番号を検出するための処理（ＳＴＵＮテスト１）の後、別のＳＴＵＮサーバへの同様の処理（ＳＴＵＮテスト1’）を行ってＷＡＮ側ポート番号を検出するとともにそれらの処理によって検出した２つのＷＡＮ側ポート番号が一致しているか否かを調べることにより短時間にＮＡＴ種別が変化、とくにコーン系からシンメトリックへ変化していることを検知でき、その結果をそれぞれの通信システムに反映することができ、通信不可の状態を回避するとともにＰ２Ｐによる通信が可能な設定に戻すことができ、メディア中継サーバ５の負荷を軽減し、ネットワークのトラブルを回避することを可能にする。
【産業上の利用可能性】
【０１４４】
本発明は、インターネット網に接続されるＮＡＴルータ、ＩＰ電話機システム、ＩＰ電話機の通信方法およびそのプログラムとして好適に適用できる。
【符号の説明】
【０１４５】
１    インターネット網
２ａ，２ｂ    ＮＡＴルータ
３ａ，３ｂ    ＩＰ電話機
４    ＳＩＰサーバ
５    メディア中継サーバ
２０１    ＣＰＵ
２０２    ＲＯＭ
２０３    ＲＡＭ
２０４    ＬＡＮ側接続子
２０５    ＷＡＮ側接続子
２０６    回線処理部
２０７    通信プロトコル処理部
２０８    通信情報処理部
２０９    通信制御部
２１０    グローバルアドレス・ポート検出プロトコル処理部
２１１    位置情報取出部
２１２    ＮＡＴ種別判定処理部
３０１    本体
３０２    ハンドセット
３０３    表示部
３０４    ダイヤルボタン
３０５    機能ボタン
３０６    ＤＳＰ
３０７，４０１    ＣＰＵ
３０８，４０２    ＲＯＭ
３０９，４０３    ＲＡＭ
３１０    入出力インターフェース（Ｉ／Ｆ）
３１１，４０４    ネットワークインターフェース（Ｉ／Ｆ）
３１３    ＶｏＩＰ処理部
３１４    回線接続部
３１５    音声処理部
３１６    パケット処理部
４１１    プロキシサーバ
４１２    リダイレクトサーバ
４１３    登録サーバ
５０１    発呼のイベント取得手段
５０２    一回目メッセージ生成手段
５０３    アドレスポート取出手段
５０４    ＮＡＴ種別確認手段
５０５    二回目メッセージ生成手段
５０６    ＮＡＴ変化処理手段
５０７    時刻のイベント取得手段
５０８    ＳＴＵＮメッセージ生成手段
５０９    ＮＡＴ種別判定手段
５１０    タイマー
【図１】
2010287982.tif 000003
【図２】
2010287982.tif 000004
【図３】
2010287982.tif 000005
【図４】
2010287982.tif 000006
【図５】
2010287982.tif 000007
【図６】
2010287982.tif 000008
【図７】
2010287982.tif 000009
【図８】
2010287982.tif 000010
【図９】
2010287982.tif 000011
【図１０】
2010287982.tif 000012
【図１１】
2010287982.tif 000013
【図１２】
2010287982.tif 000014
【図１３】
2010287982.tif 000015
【図１４】
2010287982.tif 000016
【図１５】
2010287982.tif 000017
【図１６】
2010287982.tif 000018
【図１７】
2010287982.tif 000019
【図１８】
2010287982.tif 000020
【図１９】
2010287982.tif 000021