IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECプラットフォームズ株式会社の特許一覧

<>
  • 特開-ルータ、通信方法およびプログラム 図1
  • 特開-ルータ、通信方法およびプログラム 図2
  • 特開-ルータ、通信方法およびプログラム 図3
  • 特開-ルータ、通信方法およびプログラム 図4
  • 特開-ルータ、通信方法およびプログラム 図5
  • 特開-ルータ、通信方法およびプログラム 図6
  • 特開-ルータ、通信方法およびプログラム 図7
  • 特開-ルータ、通信方法およびプログラム 図8
  • 特開-ルータ、通信方法およびプログラム 図9
  • 特開-ルータ、通信方法およびプログラム 図10
  • 特開-ルータ、通信方法およびプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024100040
(43)【公開日】2024-07-26
(54)【発明の名称】ルータ、通信方法およびプログラム
(51)【国際特許分類】
   H04L 12/46 20060101AFI20240719BHJP
【FI】
H04L12/46 E
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023003738
(22)【出願日】2023-01-13
(71)【出願人】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【弁理士】
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】平野 郁也
【テーマコード(参考)】
5K033
【Fターム(参考)】
5K033AA06
5K033CB01
5K033CB06
5K033CB09
5K033DA06
5K033EC04
(57)【要約】
【課題】新たな構成を追加することなく、利用可能ポートに制限のある環境下で、制約なくP2P通信を実現する可能性を高める。
【解決手段】インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータは、ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換部と、前記開放ポートを開放するUPnP(Universal Plug and Play)処理部と、開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング設定部と、を備える。
【選択図】図7
【特許請求の範囲】
【請求項1】
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータであって、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換部と、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理部と、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング設定部と、を備えるルータ。
【請求項2】
請求項1記載のルータであって、
前記利用可能ポートに制限があり、
前記要求ポート変換部は、前記開放要求に含まれる要求ポートが前記利用可能ポートに含まれるか判別し、含まれない場合、当該要求ポートを前記開放ポートに変換するルータ。
【請求項3】
請求項2記載のルータであって、
MAP-E(Mapping of Address and Port with Encapsulation)機能を備え、
前記要求ポート変換部は、前記開放要求に含まれる要求ポートが前記MAP-E機能における利用可能ポートに含まれるかを判別する、ルータ。
【請求項4】
請求項1記載のルータであって、
前記UPnP処理部は、前記開放ポートを開放後、正常終了の返信を前記第一装置に送信する、ルータ。
【請求項5】
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータを構成するコンピュータが実行する通信方法であって、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換ステップと、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理ステップと、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディングステップと、を備える通信方法。
【請求項6】
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータを構成するコンピュータに、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換手順と、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理手順と、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング手順と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ルータ、通信方法およびプログラムに関する。
【背景技術】
【0002】
例えば、MAP-E(Mapping of Address and Port Encapsulation)のような、利用可能ポートに制限があるモードで動作するNAPT(Network Address Port Translation)ルータに対して、UPnP IGD(Universal Plug and Play internet gateway device)により外部ポートの開放を要求する場合、開放ができず、P2P(Peer-to-Peer)通信ができないことがある。なお、MAP-Eは、IPv(Internet Protocol version)4のパケットを、IPv6パケットの中にカプセル化することにより、IPv6のみのネットワークを通過できるようにする技術である。
【0003】
このため、例えば、MAP-Eモードで動作するNAPTルータ上でのUPnPの使用について、ベンダは大幅に制限するか無効にしている。しかし、MAP-Eが普及するにつれ、MAP-Eモードで動作している場合でも、UPnPを利用したいという声が挙がっている。混雑しているIPv4ネットワークより、道中はIPv6ネットワーク通信となるMAP-Eの方が通信品質も改善されるため、MAP-EとUPnPが同時に利用できるメリットは大きい。
【0004】
例えば、UPnPによるポートフォワーディングを適切に設定し、他のコンピュータと正常に通信するため、ルータが用いた第1ポート番号と所定数異なる第2ポート番号に対応したUPnPによるポートフォワーディングをルータに設定し、設定されたポートフォワーディングを用いて、STUN(Session Traversal Utilities for NAT)パケットをサーバに送信し、前記サーバからSTUNパケットを受信した場合、第2ポート番号に対応したUPnPによるポートフォワーディングを用いて、他のユーザ端末とP2P通信する技術がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2021-52240号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
以下の分析は、本発明によって与えられたものである。
【0007】
特許文献1に記載の技術では、網側の設備としてSTUNサーバが新たに必要である。したがって、その分、構成が複雑化し、コストも上がる。
【0008】
本発明は、上記事情に鑑みてなされたもので、新たな構成を追加することなく、利用可能ポートに制限のある環境下で、制約なくP2P通信を実現する可能性を高めることを目的とする。
【課題を解決するための手段】
【0009】
本発明の第一の視点によれば、
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータであって、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換部と、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理部と、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング設定部と、を備えるルータが提供される。
【0010】
本発明の第二の視点によれば、
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータを構成するコンピュータが実行する通信方法であって、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換ステップと、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理ステップと、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディングステップと、を備える通信方法が提供される。
【0011】
本発明の第三の視点によれば、
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータを構成するコンピュータに、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換手順と、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理手順と、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング手順と、を実行させるプログラムが提供される。
【0012】
なお、これらのプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0013】
本発明によれば、新たな構成を追加することなく、利用可能ポートに制限のある環境下で、制約なくP2P通信を実現する可能性が高まる。
【図面の簡単な説明】
【0014】
図1】本発明の一実施形態の通信システムの概要を説明するための説明図である。
図2】NAPT機能を説明するための説明図である。
図3】MAP-E機能を説明するための説明図である。
図4】NAT制限を説明するための説明図である。
図5】UPnP機能を説明するための説明図である。
図6】MAP-Eモードで動作時のUPnP機能を説明するための説明図である。
図7】(a)および(b)は、それぞれ、本発明の一実施形態のNAPTルータの機能ブロック図および利用可能ポートテーブルの一例を説明するための説明図である。
図8】本発明の一実施形態のNAPTルータの動作を説明するための説明図である。
図9】本発明の一実施形態のNAPTルータを用いた場合の、アドレスの変化を説明するためのシーケンス図である。
図10】本発明の一実施形態のNAPTルータによるポートフォワーディング設定処理のフローチャートである。
図11】本発明の一実施形態のNAPTルータのハードウェア構成図である。
【発明を実施するための形態】
【0015】
以下、本発明の一実施形態(以下、本実施形態と呼ぶ。)の概要について図面を参照して説明する。なお、付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向および単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。
【0016】
また、図中の各ブロックの入出力の接続点には、ポートやインタフェースがあるが図示を省略する。また、以下の説明において、「Aおよび/またはB」は、AまたはB、もしくは、AおよびBという意味で用いる。
【0017】
まず、本実施形態の通信システム100の概要を説明する。図1に示すように、ユーザ端末200は、NAPTルータ300を介してインターネット900上のサーバ400に接続する。本実施形態では、ユーザ端末200には、IPv4のアドレスが付与され、ユーザ端末200は、IPv4に準拠したパケット(以下、IPv4パケットと呼ぶ。)を出力する。
【0018】
NAPTルータ300は、NAPT機能とMAP-E機能とUPnP機能とを有し、ユーザ端末200から受信したIPv4パケットを、IPv6に準拠したパケット(以下、IPv6パケットと呼ぶ。)にカプセル化し、サーバ400に出力する。ここで、ユーザ端末200は、LAN(Local Area Network;ローカルエリアネットワーク)に接続され、サーバ400は、インターネット900等の広域ネットワークを介して接続される。すなわち、NAPTルータ300は、インターネットとローカルエリアネットワークとの間を接続する。NAPT機能、MAP-E機能、およびUPnP機能の詳細については、後述する。
【0019】
なお、インターネット900上のサーバ400がIPv4対応の場合、間にBorder Relay500が設けられ、IPv4アドレスに変換(デカプセル)される。
【0020】
本実施形態の詳細な説明に先立ち、上記の各機能(NAPT機能、MAP-E機能、およびUPnP機能)について、従来のNAPTルータ301を有する通信システム101で説明する。
【0021】
NAPTは、上述のように、Network Address Port Translationの略称で、本機能は、TCP(UDP)/IPパケットに含まれるIPアドレスおよびポート番号を、別のIPアドレスおよびポート番号に変換する機能である。NAPT機能は、一般的な家庭用ルータが標準的に備える。
【0022】
ここでは、図2に示すように、ユーザ端末200が、NAPTルータ301を経由してインターネット900内のサーバ400と通信するものとする。
【0023】
一般に、NAPTルータ301配下のユーザ端末200の送信元IPアドレスおよびポート番号201には、プライベートアドレス(ローカルアドレス)が割り当てられる。本図の例では、送信元IPアドレスとして「xxx.xxx.xxx.xxx」が、ポート番号として「1111」が割り当てられている。以下、これらをまとめて、「xxx.xxx.xxx.xxx:1111」と記載する。すなわち、ユーザ端末200から送信される通信パケットの送信元IPアドレスおよびポート番号201は、「xxx.xxx.xxx.xxx:1111」である。
【0024】
インターネット900上の機器(ここでは、サーバ400)と通信するためには、このプライベートアドレスをグローバルアドレスに変換する必要がある。このアドレス変換機能をNAT(Network Address Translation)機能と呼び、ポート番号も合わせて変換する場合NAPT機能と呼ぶ。
【0025】
ユーザ端末200からの通信パケットは、NAPTルータ301に送られる(S1101)。そして、NAPTルータ301において、プライベートアドレスの送信元IPアドレスは、グローバルアドレスに変換される。また、ポート番号は、NAPTルータ301の広域ネットワーク側の空きポート(以下、外部ポートとも呼ぶ。)に変換される。ここでは、グローバルアドレス「yyy.yyy.yyy.yyy」に変換され、ポート番号は「2222」に変換される。そして、送信元IPアドレスおよびポート番号302として「yyy.yyy.yyy.yyy:2222」が付与された通信パケットがNAPTルータ301から、宛先であるインターネット900内のサーバ400へ転送される(S1102)。
【0026】
NAPTルータ301は、この変換に用いるローカルアドレスおよびポート番号と、グローバルアドレスおよびポート番号と、を対応づけて、アドレス変換テーブルとして管理する。インターネット900からの戻りの通信パケットは、NAPTルータ301でこのNAPT管理テーブルを参照し、宛先IPがグローバルアドレスからプライベートアドレスに変換される。
【0027】
次に、MAP-E機能を説明する。MAP-Eは、上述のように、Mapping of Address and Port Encapsulationの略称で、IPv6とIPv4との共存技術である。IPv6専用のアクセス網経由でIPv4ネットワークへの接続を可能にする。IPv4アドレス枯渇状態を解決するため、IPv6に移行したいものの、まだIPv6oE(over Ethernet)に対応したサーバは少ない実情に鑑みて開発された技術である。
【0028】
このような技術を総称して、IPv6マイグレーション技術と呼ぶ。MAP-Eでは、シェアドIPv4アドレスの方式が取られ、同じIPv4グローバルアドレスを複数のルータが使う。したがって、そのままでは競合するため、各ルータにおいて、利用可能なポートを制限する。MAP-Eで使うIPv4グローバルアドレスおよび利用可能ポートは、VNE(Virtual Network Enabler)事業者のMAP-E配信サーバから提供されるルールに従い、各ルータ内で計算される。
【0029】
MAP-E機能の概要について図3を用いて説明する。MAP-E機能を有するNAPTルータ301であっても、IPアドレスおよびポート番号のNAPTは、基本的に従来の仕組みと同じである。すなわち、NAPTルータ301は、ユーザ端末200から送信された通信パケットの、プライベートアドレスの送信元IPアドレスおよびポート番号201を、グローバルアドレスのそれに変換する。
【0030】
この変換の際、MAP-E機能を有するNAPTルータ301では、変換後のポートとして利用可能なポートが制限される。IPv4oEの場合、基本的には、システムポート(ポート番号:0~1023)を除いた全てのポート(同1024~65535)が利用可能ポートである。しかし、MAP-E機能を有するNAPTルータ301では、前述した通り、利用可能ポートが制限され、数百~一千程度のポートしか該当しない。なお、各MAP-Eサービスによって1つのルータが利用可能なポート数は異なる。それぞれ、具体的な値は予め定められる。
【0031】
例えば、図3に示す例では、利用可能ポート303のポート番号は、10001、10002、10003、20001、20002、20003の6つである。NAPTルータ301は、NAP変換時、この6つのポートの中から1つのポートを選択し、変換先のポートとする。図3に、ポート番号10001を選択した場合の例を示す。すなわち、変換後のグローバルアドレスの送信元IPアドレスおよびポート番号304のポート番号として10001が与えられる。
【0032】
また、MAP-E機能には、Border Relay500とセットで実現される機能が含まれる。この機能は、NAPTルータ301とBorder Relay500との間の通信パケットをIPv6アドレスでカプセル化する機能である。カプセル化は、IPv4パケットの情報をほぼそのまま用い、IPv6ヘッダを付けた通信パケットを生成する技術である。
【0033】
ユーザ端末200からインターネット900内のサーバ400にIPv4パケットが送信される際、MAP-E機能を備えるNAPTルータ301は、元のIPv4パケットをIPv6パケットの中にカプセル化し、IPv6通信としてBorder Relay500に送信する(S1103)。そして、Border Relay500は、それをデカプセルし、IPv4パケットに戻した上でサーバ400に送信する。
【0034】
サーバ400からユーザ端末200へ送信する逆方向の通信の場合は、カプセル/デカプセルの役割も逆となる。すなわち、IPv6パケットは、Border Relay500でIPv6パケットにカプセル化され、MAP-E機能を有するNAPTルータ301でデカプセルされ、IPv4パケットに戻される。
【0035】
次に、UPnP機能について説明する。UPnPは、上述のように、Universal Plug and Playの略称であり、機器を通信ネットワークに接続する際、複雑な設定作業無しに、即座に他の機器と通信をしたり、その機能を利用できたりするプロトコルである。
【0036】
サービスの集合体もしくはネストされたデバイス側をUPnP Deviceと呼び、UPnP Deviceを制御する側をUPnP Control Pointと呼ぶ。本実施形態の例では、ユーザ端末200が、UPnP Control Pointとして機能し、NAPTルータ301が、UPnP Deviceとして機能する。
【0037】
UPnPには様々なDevice Control Protocolがありデバイスカテゴリ毎の仕様が決められている。NAPTルータ301ではその内のIGDを利用する。IGDとは、上述のように、Internal Gateway Deviceの略称である。
【0038】
NAPTルータ301におけるUPnP IGDの利用態様を、図4および図5を用いて説明する。図4は、UPnP IGDを利用しない場合の問題点を説明するための図である。
【0039】
一般に、NAPTルータ301は、インターネット900等のグローバルなIPアドレス空間と、宅内の(ローカルな)プライベートなIPアドレス空間と、を隔てている。このため、図4に示すように、インターネット900内のサーバ400から宅内のユーザ端末200へ送信する通信パケット401は、NAPTルータ301を越えることはできず、ユーザ端末200まで届かない。UPnP IGDは、この問題を解決するためのNATトラバーサル(またはNAT越えとも呼ぶ)の技術として利用される。
【0040】
UPnP IGDを利用してNATトラバーサルする場合の例を、図5に示す。まず、UPnP Control Pointであるユーザ端末200から、UPnP DeviceであるNAPTルータ301に、外部ポートを開放するようリクエスト(開放要求202)を送信する(S1104)。このとき、開放を要求するポート番号を指定する。図5には、ポート番号2222の外部ポートを開けるようリクエストする場合の例を示す。以下、開放要求202にて開放を要求するポートを要求ポートと呼ぶ。
【0041】
なお、開放要求202は、SOAP(Simple Object Access Protocol)を利用したAddPortMappingアクションで実施される。また、このアクションを実施する前に、UPnP Deviceの発見やDevice Description取得のフェーズを行う。これらは、周知の手順であるため、詳細な説明は省略する。
【0042】
ユーザ端末200から開放要求202を受けると、NAPTルータ301は、グローバルIPアドレスおよび要求ポートのポート番号304に対してフィルタ上の許可設定を行う。図5に、「yyy.yyy.yyy.yyy:2222」に許可設定がなされた場合を例示する。
【0043】
そして、NAPTルータ301は、開放要求202を受け入れた旨のレスポンス(200 OK)305をユーザ端末200に返信する(S1105)。これにより、要求ポートが開放され、以降、NAPTルータ301からの通信パケットについては、この送信元IPアドレスおよびポート番号(図5の例では、「yyy. yyy. yyy. yyy:2222」)304が、送信元IPアドレスおよびポート番号とされる。
【0044】
このやり取りの後、サーバ400から、この送信元IPアドレスおよびポート番号304を宛先とした通信パケットが送られてきた場合(S1106)、NAPTルータ301は、その通信パケットの宛先を、開放要求202の送信元のユーザ端末200に変換し、転送する(S1107)。
【0045】
このように特定のポートに対して送信された通信パケットを、特定の宛先に変換することをポートフォワーディング処理と呼ぶ。一般的なNAPTルータ301は、UPnP IGDによる外部ポートの開放要求202を受けた際、同時にこのポートフォワーディング処理を行うための設定を実施する。具体的には、例えば、ポート毎の、変換先の宛先を転送経路テーブルとして管理する。
【0046】
ところが、NAPTルータ301が、MAP-E機能を備え、MAP-Eモードで動作する場合、利用可能ポートに制限がある。
【0047】
すなわち、図6に示すように、ユーザ端末200が、MAP-Eモードで動作しているNAPTルータ301に対し、ポート番号2222の外部ポートを開放するよう開放要求202を行ったとする(S1104)。このとき、本図に示すように、利用可能ポート303に、ポート番号2222のポートが含まれていない場合、NAPTルータ301は、要求ポートを開放できない。
【0048】
このような場合、従来のNAPTルータ301は、要求元のユーザ端末200に、エラー(Error)306を返す(S1108)。そして、NAPTルータ301は、外部ポートの開放も行わず、ポートフォワーディング設定も行わない。このため、サーバ400から送信され(S1109)、Border Relay500経由でNAPTルータ301まで届く(S1110)通信パケットは、ユーザ端末200へポートフォワーディングされることなく、NAPTルータ301を越えることはできない。
【0049】
このように、利用可能ポートに制限の有る環境では、UPnP機能だけでは、正常にP2P通信が実施できないことがある。本実施形態では、NAPTルータに新たな機能を追加し、これを解決する。
【0050】
これを解決する本実施形態のNAPTルータ300の機能ブロック図を、図7(a)に示す。
【0051】
本図に示すように、本実施形態のNAPTルータ300は、NAPT処理部310と、MAP-E処理部320と、UPnP処理部330と、要求ポート変換部340と、ポートフォワーディング設定部350と、管理テーブル380と、を備え、インターネットとローカルエリアネットワークとの間を接続する。
【0052】
NAPT処理部310は、上述の、通信パケットのプライベートアドレスとグローバルアドレスとの間の変換を行うNAPT機能を実行する。本実施形態では、例えば、変換するアドレスを対応付けたアドレス変換テーブルを管理テーブル380内に作成し、この変換テーブルに従って、ローカルIPアドレスおよびポート番号と、グローバルIPアドレスおよびポート番号とを変換し、通信パケットの送受信を実現する。
【0053】
MAP-E処理部320は、IPv4パケットをカプセル化してIPv6パケットに変換、または、その逆を実行する。すなわち、ユーザ端末200からのIPv4パケットをIPv6カプセル化する。そして、そのIPv6パケットは、Border Relay500に転送され、そこでデカプセルされてIPv4パケットに戻され、サーバ400に届く。
【0054】
UPnP処理部330は、上述のUPnP機能を実現する。すなわち、ユーザ端末200からポート番号を指定した開放要求202を受信すると、当該ポートを開放する。
【0055】
要求ポート変換部340は、ユーザ端末200から、利用可能なポート以外のポートを指定した開放要求202を受信した場合、利用可能なポートの中から開放するポート(開放ポート)を選択し、要求ポートを選択した開放ポートに変換し、UPnP処理部330に通知する。
【0056】
要求ポート変換部340は、利用可能ポートを管理する。利用可能ポートは、利用可能ポートテーブル381にて管理される。すなわち、要求ポート変換部340は、利用可能ポート以外が指定された開放要求202を受信した場合、利用可能ポートテーブル381を参照し、空きポートを検索し、その中から開放ポートを選択する。なお、このとき、空きポートがない場合は、要求ポート変換部340は、従来通り、Errorを返信するようUPnP処理部330に指示を出す。それを受け、UPnP処理部330は、要求元のユーザ端末200にErrorを返す。
【0057】
利用可能ポートテーブル381の一例を、図7(b)に示す。利用可能ポートテーブル381では、各ポートの、ポート番号381a毎に、割当対象381bが格納される。割当対象381bには、例えば、割り当てたサービス(プロトコル等)、開放要求元のユーザ端末200のIPアドレスおよびポート番号が登録される。なお、開放要求202に含まれる要求ポートが利用可能ポート以外のポートである場合、変換後の開放ポートのポート番号381aに対応づけて、当該要求元のユーザ端末200のIPアドレスおよびポート番号が、割当対象381bに登録される。
【0058】
本図の例では、当初の利用可能ポートのうち、10001および20003には、既に割当対象381bが登録されているため、現時点の利用可能ポートは、10002、10003、20001、20002の4つである。
【0059】
また、利用可能ポートテーブル381は、後述する転送経路テーブルと兼用してもよい。
【0060】
このように、本実施形態のNAPTルータ300は、要求ポート変換部340を備えることで、従来はUPnP IGDによるポート開放が正常にできないケースであっても、ポート開放を実現する。
【0061】
通知を受けたUPnP処理部330は、変換後のポートを、要求ポートとして処理を行う。
【0062】
ポートフォワーディング設定部350は、UPnP処理部330が開放した外部ポートを用いて、転送経路(ポートフォワーディング経路)を設定する。ポートフォワーディング設定部350は、例えば、転送経路テーブルを生成し、管理する。転送経路テーブルは、開放したポートのポート番号に対応づけて、送信先のユーザ端末200のローカルアドレスを管理するテーブルである。
【0063】
なお、ユーザ端末200は、UPnP Control Pointとして機能する。すなわち、NAPTルータ300に対し、要求ポートのポート番号を指定して開放要求202を送信する。
【0064】
[動作の説明]
図8に、本実施形態の通信システム100における、NAPTルータ300の動作のイメージを示す。
【0065】
UPnP Control Pointとして機能するユーザ端末200から、UPnP Deviceとして機能するNAPTルータ300へ、UPnP IGDによるポート開放の開放要求(アクションリクエスト)202が送信される(S1201)。本図の例では、開放要求202は、ポート番号2222の外部ポートを要求ポートとして開放を要求するものである。
【0066】
NAPTルータ300は、MAP-Eモードで動作しているため、利用可能ポートが制限されている。ここでは、前記同様、6ポート利用可能とする。この利用可能ポート303の中に、要求ポートであるポート番号2222のポートは含まれていない。したがって、従来のNAPTルータ301は、エラー(Error)306を返す。
【0067】
しかし、本実施形態のNAPTルータ300では、要求ポート変換部340により、自動で、要求ポートのポート番号が変換される。すなわち、要求ポート変換部340は、利用可能ポート303の中から、1つ、ポートを選択し、開放ポートとする。このとき、要求ポート変換部340は、前述のように、利用可能ポート303を、利用可能ポートテーブル381を参照し、選択する。そして、変換後の要求ポート(開放ポート)をUPnP処理部330に通知する。
【0068】
その後、要求ポート変換部340は、利用可能ポートテーブル381を更新する。具体的には、開放ポートのポート番号に対応づけて、開放要求202の送信元のユーザ端末200の送信元IPアドレスおよびポート番号201を登録する。
【0069】
そして、NAPTルータ300は、自身の外部IPアドレスおよび開放ポートのポート番号308を外部に対して開放する(S1203)。なお、ここでは、ポート番号10001のポートが開放ポートとして選択された場合を例示する。そして、UPnP処理部330は、ユーザ端末200へ開放要求を受け入れた旨のレスポンス(200 OK)305を返信する(S1202)。
【0070】
サーバ400は、NAPTルータ300の、開放された外部IPアドレスおよびポート番号308に向けて、IPv4パケットを送信する(S1204)。送信されたIPv4パケットは、Border Relay500でIPv6パケットにカプセル化され、IPv6パケットとしてNAPTルータ300に届く(S1205)。そして、それは、NAPTルータ300でIPv6パケットからデカプセルされ、IPv4パケットとしてユーザ端末200のIPアドレスおよびポート番号201に転送される(S1206)。結果として、利用可能ポート制限下においても、P2Pが実現する。
【0071】
[シーケンス]
例として、図9のシーケンス図に従って、アドレスの変化を説明する。
【0072】
ここでは、ユーザ端末200は、ローカルエリアネットワークのIPアドレスおよびポートとして「xxx.xxx.xxx.xxx.1111」を持つ。NAPTルータ300は、外部(グローバル)IPアドレスとして「yyy.yyy.yyy.yyy」を持ち、利用可能ポート303として図8に示す6つのポートのセットを持つ。サーバ400は、端末IPアドレスおよびポートして「zzz.zzz.zzz.zzz:3333」を持つ。以下、図9においては、アドレス内のxxx、yyy、zzzを、それぞれ、x、y、zと表す。
【0073】
ユーザ端末200は、UPnP IGDによるポート開放の開放要求を送信する(ステップS1301)。ここでは、要求ポートを「2222」とする場合を例示する。
【0074】
それを受けたNAPTルータ300の要求ポート変換部340は、要求ポート「2222」を利用可能ポート「10001」へと変換する(ステップS1302)。そして、ポートフォワーディング設定部350は、変換後の「10001」ポートでポートフォワーディング設定を行う(ステップS1303)。そして、UPnP処理部330は、設定完了した旨のレスポンス(「200 OK」)を返す(ステップS1304)。
【0075】
次に、ユーザ端末200からサーバ400へ通信パケットを送信する場合のアドレスの変化について説明する。なお、ユーザ端末200からサーバ400へ送信される通信パケットは、元々、UPnPでポート開放することなく通過する。このため、上記のポート開放のセッション無しに送信は可能である。ここでは、説明したNAPT機能のイメージを補足するため、アドレスの変化に主眼をおいて説明する。
【0076】
ユーザ端末200からサーバ400へ送信IPv4パケットは、送信元アドレス「xxx.xxx.xxx.xxx.1111」、宛先アドレス「zzz.zzz.zzz.zzz.3333」として生成され、送信される(ステップS1305)。なお、送信元アドレスは、ユーザ端末200のローカルアドレス、宛先アドレスは、サーバ400のグローバルアドレスである。
【0077】
NAPTルータ300では、NAPT処理部310が、アドレスの変換を行い、MAP-E処理部320が、IPv4パケットをカプセル化してIPv6パケットにする(ステップS1306)。そして、生成したIPv6パケットをBorder Relay500に送信する(ステップS1307)。このとき、送信される通信パケットの送信元アドレスは、「yyy.yyy.yyy.yyy.10001」であり、宛先アドレスは、「zzz.zzz.zzz.zzz:3333」である。
【0078】
Border Relay500では、受信したIPv6パケットをデカプセルしてIPv4パケットを得る(ステップS1308)。そして、得られたIPv4パケットをサーバ400へ送信する(ステップS1309)。このとき、送信元アドレスは、「yyy.yyy.yyy.yyy:10001」であり、宛先アドレスは「zzz.zzz.zzz.zzz:3333」である。
【0079】
ユーザ端末200から送信された通信パケットは、このようにその送信元アドレスおよびポートがNAPTルータ300において変換され、インターネット900内のサーバ400まで届く。
【0080】
一般的なNAPTルータ301、300は、ステートフルパケットインスペクション(SPI)機能を備える。このSPI機能により、この通信のセッションが残っている数分の間、UPnP等でポート開放無しでサーバ400からユーザ端末200への通信パケットも、NATを越えることができる。したがって、この間は、ポートを開放することなくP2P通信が可能となる。なお、SPI機能は、LANからWAN(インターネット)に向けて送信したデータを記録し、WANから戻ってきたデータと照合し、送信時の情報をもとに受信データに不正がないか判断し、正常と判断された場合のみ通信の通過を許可する機能である。
【0081】
一方で、セッション削除後はサーバ400からユーザ端末200方向へ送信される通信パケットを通すために、ポート開放が必要である。本図の例では、前述したステップS1301~S1304の処理によりポートが開放されている。よって、サーバ400がユーザ端末200とP2P通信を行う場合は、サーバ400から、NAPTルータ300のポート開放している外部IPアドレスおよびポート「yyy.yyy.yyy.yyy:10001」宛に通信パケットを送る。すなわち、サーバ400は、送信元アドレスが「zzz.zzz.zzz.zzz:3333」、宛先アドレスが「yyy.yyy.yyy.yyy:10001」である通信パケットを生成して送信する(ステップS1311)。
【0082】
Border Relay500は、この通信パケットをIPv6パケットにカプセル化し(ステップS1312)、NAPTルータ300に送信する(ステップS1213)。このときも、送信元アドレスは「zzz.zzz.zzz.zzz:3333」、宛先アドレスは「yyy.yyy.yyy.yyy:10001」である。
【0083】
NAPTルータ300のMAP-E処理部320は、受信したIPv6パケットをデカプセルしてIPv4パケットとする。そして、NAPT処理部310は、得られたIPv4パケットの宛先をユーザ端末200のIPおよびポートに変換し(ステップS1314)、ユーザ端末200に送信する(ステップS1315)、この時、送信元アドレスは「zzz.zzz.zzz.zzz.3333」であり、宛先アドレスは、「xxx.xxx.xxx.xxx.1111」である。結果、P2P通信が実現する。
【0084】
[ポートフォワーディング設定処理]
ここで、本実施形態のNAPTルータ300におけるUPnPによるポートフォワーディング設定処理(上記S1301~S1304)の流れを説明する。図10は、本実施形態のポートフォワーディング設定処理の処理フローである。
【0085】
まず、NAPTルータ300のUPnP処理部330は、ユーザ端末200からの開放要求を待つ(ステップS1401)。
【0086】
ユーザからの開放要求を受信すると(S1401;Yes)、UPnP処理部330は、開放要求に含まれる要求ポートが、利用可能ポートであるか判別する(ステップS1402)。
【0087】
利用可能ポートでない場合(S1402:No)、要求ポート変換部340は、利用可能ポートに空きポートが有るかを検索する(ステップS1403)。そして、空きポートがある場合(S1403:Yes)、空きポートの中から、変換するポートを選択する(ステップS1404)。そして、要求ポートを選択したポートに変換する(ステップS1405)。それをUPnP処理部330に通知する。
【0088】
そして、ポートフォワーディング設定部350は、変換後の要求ポートでポートフォワーディング設定を行う(ステップS1406)。また、UPnP処理部330は、要求元のユーザ端末200に設定完了のレスポンスを行い(ステップS1407)、処理を終了する。
【0089】
ステップS1402で、要求ポートが利用可能ポートであると判別された場合は、ステップS1403~S1405を行わず、ステップS1406へ移行する。また、ステップS1403で空きポートがない場合は、UPnP処理部330は、要求元のユーザ端末200にErrorを返信し(ステップS1408)、処理を終了する。
【0090】
[ハードウェア構成]
図11は、NAPTルータ300のハードウェア構成例を示すブロック図である。本図に示すように、NAPTルータ300は、プロセッサ(CPU)391と、メモリ392と、通信インタフェース(通信I/F)393と、を備える。
【0091】
通信I/F393は、通信システム100を構成する他のネットワークノード装置と通信するために使用される。通信I/F393は、例えば、IEEE 802.3 seriesに準拠したネットワークインタフェースカード(NIC)を含んでもよい。もしくは、通信I/F393は、無線通信を行うために使用されてもよい。例えば、通信I/F393は、無線LAN通信、もしくは3GPP(3rd Generation Partnership Project;登録商標)において規定されたモバイル通信を行うために使用されてもよい。
【0092】
LANに接続するためのインタフェースと、WAN(インターネット網)に接続するためのインタフェースとを備えてもよい。LANを介してユーザ端末200と通信を行う。WANを介して、Border Relay500およびサーバ400と通信を行う。
【0093】
メモリ392は、ソフトウェアモジュール群を記憶する。また、メモリ392は、各種情報を記憶する。具体的には、メモリ392は、利用可能ポートテーブル381、アドレス変換テーブル、転送経路テーブル等を記憶する。メモリ392は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ392は、プロセッサ391から離れて配置されたストレージを含んでもよい。この場合、プロセッサ391は、図示されていない入出力インタフェースを介してメモリ392にアクセスしてもよい。
【0094】
プロセッサ391は、メモリ392からソフトウェア(コンピュータプログラム)を読み出して実行することで、上述の実施形態において説明したNAPTルータ300の各機能を実現する。プロセッサ391は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、または、CPU(Central Processing Unit)であってもよい。プロセッサ391は、複数のプロセッサを含んでもよい。
【0095】
上述の例において、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリを含む。磁気記録媒体は、例えばフレキシブルディスク、磁気テープ、ハードディスクドライブであってもよい。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)であってもよい。また、コンピュータプログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、コンピュータプログラムをコンピュータに供給できる。
【0096】
また、ユーザ端末200は、少なくとも、CPU等の演算装置と、メモリ等の記憶装置と、通信インタフェースと、を備える。上記各機能は、記憶装置に格納されたプログラムを、演算装置がそのワーク領域にロードして実行することにより実現される。また、各種の情報(データ)は、記憶装置に格納される。
【0097】
以上説明したように、本実施形態の通信システム100では、NAPTルータ300が要求ポート変換部340を備える。これにより、UPnP IGDにより利用可能ポートではない要求ポートがリクエストされた場合、NAPTルータ300内部で、自動で、要求ポートを利用可能ポートのいずれかのポートに変換する。そして、変換後のポート(開放ポート)にてポート開放の設定を行い、設定完了(正常終了)をUPnP Control Point(ユーザ端末200)に返信する。また、変換後のポートにてポートフォワーディング設定を行い、P2P通信を実現する。
【0098】
このため、本実施形態によれば、MAP-Eモードでの動作等、NAPTルータ300の利用可能ポートに制限のある環境においても、UPnP IGDによるポート開放が利用できる可能性が高まり、P2P通信ができる可能性も高まる。このとき、STUNサーバなどの他の設備を追加する必要がなく、NAPTルータ300のみでこれを実現できる。
【0099】
従来、利用可能ポートに制限のある環境下ではUPnP IGDによるポート開放が正常にできないケースが多く、例えば、MAP-Eモードで動作するNAPTルータ301上でのUPnPは、制限されるか無効になっている。しかし、本実施形態によれば、新たなハードウェアを追加することなく、MAP-Eモードで動作するNAPTルータ300上で、UPnPを利用できる可能性が高まる。すなわち、ポート制限下においてUPnP IGDを利用可能とし、P2P通信を実現できる可能性が高まる。したがって、ユーザの手間が削減され、同時に利便性が向上する。
【0100】
<変形例1>
なお、上記実施形態では、NAPTルータ300の利用可能ポートに制限のある例としてMAP-Eを挙げて説明した。しかし、MAP-E以外の利用可能ポートに制限がある環境(シェアドアドレス方式)であっても、本実施形態は、利用することが可能である。
【0101】
<変形例2>
また、上記実施形態では、UPnP処理部330および要求ポート変換部340は、開放要求202に含まれる要求ポートを参照し、利用可能ポートに含まれているか否かを判別し、含まれていない場合のみ利用可能ポートに変換し、そのポートを開放する。しかしながら、判別処理は行わなくてもよい。すなわち、NAPTルータ300が、利用可能ポートが制限されているモードで動作している場合、要求ポート変換部340は、開放要求202を受信すると、利用可能ポートの中から開放するポートを選択し、それを開放ポートとしてUPnP処理部330に通知する。
【0102】
この場合、開放要求202には、具体的な要求ポートのポート番号を含めなくてもよい。
【0103】
<変形例3>
上記実施形態では、要求ポート変換部340は、開放要求202を受信した場合、利用可能ポートテーブル381全体を検索して空きポートを抽出しているが、これに限定されない。例えば、利用可能ポートそれぞれに、予め、割り当て順を設定し、その順序に従って、要求毎に割り当てていくよう構成してもよい。
【0104】
また、MAP-Eの場合、一纏まりの連続したポート(ポートセット)が利用可能ポートとして続いた後、ポート番号が飛び、また一纏まりの連続したポートが利用可能ポートとされる。例えば、ポート番号が1~10のポート、21~30のポート、41~50のポートが、利用可能ポートとして設定される等である。
【0105】
このようなポートセットの中で、変換の際に用いるポートセットを予め定めておき、その中を優先的に検索して空きポートを抽出するよう構成してもよい。また、ポートセット毎に、検索する優先順を定めておいてもよい。このように構成することにより、検索範囲が絞られるため、その分、変換ポート選択時の処理の高速化につながる。
【0106】
また、MAP-Eの場合、利用可能ポートはユーザ端末200毎に被り無く確立されている。したがって、例えば、ポート番号381aを、ユーザ端末200毎に登録してもよい。この場合、要求ポート変換部340は、開放要求202を受信した場合、開放要求202の送信元のユーザ端末200に対応づけて管理されるポート番号381a群の中から、空きポートを検索する。
【0107】
なお、上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各工程の実行順序は、その記載の順番に制限されない。例えば、各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。
【0108】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【0109】
最後に、本発明の好ましい形態を要約する。
(付記1)
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータであって、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換部と、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理部と、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング設定部と、を備えるルータ。
(付記2)
付記1記載のルータにおいて、
前記利用可能ポートに制限があり、
前記要求ポート変換部は、前記要求ポートが前記利用可能ポートに含まれるか判別し、含まれない場合、当該要求ポートを前記開放ポートに変換することが望ましい。
(付記3)
付記2記載のルータにおいて、
MAP-E(Mapping of Address and Port with Encapsulation)機能を備え、
前記要求ポート変換部は、前記開放要求に含まれる要求ポートが前記MAP-E機能における利用可能ポートに含まれるかを判別することが望ましい。
(付記4)
付記1から3いずれかに記載のルータにおいて、
前記UPnP処理部は、前記開放ポートを開放後、正常終了の返信を前記第一装置に送信することが望ましい。
(付記5)
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータを構成するコンピュータが実行する通信方法であって、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換ステップと、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理ステップと、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディングステップと、を備える通信方法。
(付記6)
インターネットとローカルエリアネットワークとの間を接続し、NAPT(Network Address Port Translation)機能を有するルータを構成するコンピュータに、
ローカルエリアネットワークに接続された第一装置から開放要求を受信すると、当該ルータの利用可能ポートの中から選択したポートを開放ポートとする要求ポート変換手順と、
前記開放ポートを開放するUPnP(Universal Plug and Play)処理手順と、
開放した前記開放ポートを用いて転送経路を設定するポートフォワーディング手順と、を実行させるプログラム。
なお、付記5-6の各形態は、付記2-4の形態に展開することが可能である。
【0110】
なお、上記の特許文献等の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【0111】
100:通信システム、101:通信システム、
200:ユーザ端末、201:IPアドレスおよびポート番号、202:開放要求、
300:NAPTルータ、301:NAPTルータ、302:IPアドレスおよびポート番号、303:利用可能ポート、304:IPアドレスおよびポート番号、305:レスポンス、306:Error、308:IPアドレスおよびポート番号、
310:NAPT処理部、320:MAP-E処理部、330:UPnP処理部、340:要求ポート変換部、350:ポートフォワーディング設定部、380:管理テーブル、381:利用可能ポートテーブル、381a:ポート番号、381b:割当対象、
391:プロセッサ(CPU)、392:メモリ、393:通信I/F、
400:サーバ、401:通信パケット、500:Border Relay、900:インターネット
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11