JP2007507962A - クライアントにより要求される外部アドレスマッピング - Google Patents

クライアントにより要求される外部アドレスマッピング Download PDF

Info

Publication number
JP2007507962A
JP2007507962A JP2006530927A JP2006530927A JP2007507962A JP 2007507962 A JP2007507962 A JP 2007507962A JP 2006530927 A JP2006530927 A JP 2006530927A JP 2006530927 A JP2006530927 A JP 2006530927A JP 2007507962 A JP2007507962 A JP 2007507962A
Authority
JP
Japan
Prior art keywords
address
public
local
cream
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006530927A
Other languages
English (en)
Inventor
ヘンリ エイシンク,ユルイェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JP2007507962A publication Critical patent/JP2007507962A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2525Translation at a client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2564NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2585NAT traversal through application level gateway [ALG]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/167Adaptation for transition between two IP versions, e.g. between IPv4 and IPv6
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Abstract

パブリックネットワークへのアクセスが、ローカルホストによりリクエストされる。パブリックネットワークへのアクセスに用いられるパブリックアドレスが決定される。ローカルホストに対応するローカルアドレスが、パブリックアドレスにマッピングされる。パブリックアドレスは、ローカルホストに返される。アウトバウンドアクセスがローカルネットワーク又はパブリックネットワークへのものであるか決定される。アウトバウンドアクセスがパブリックネットワークへのものであるとき、パブリックネットワークへのアクセスがリクエストされる。当該リクエストに応答して、パブリック情報が受信される。パブリック情報は、アウトバウンドアクセスに対して生成される1以上のパケットのペイロード部分に配置される。パブリック情報は一般には、少なくともパブリックポートを有するが、パブリックアドレスもまた有するようにしてもよい。当該リクエストは、パブリック情報のパブリックポートが一般にはローカルポートに従うようにローカルポートを供給するようにしてもよい。

Description

本発明は、一般に通信システムに関し、より詳細には、通信システムにおけるメッセージに関するアドレッシングに関する。
ネットワークに接続される装置には、しばしばインターネットプロトコル(IP)のバージョンにより規定されるアドレスなどのアドレスが割り当てられている。これらのアドレスは、ネットワーク内の情報が正確な送信先装置にルーティングされることを可能にする。典型的には、「ローカル」アドレスと「パブリック」アドレスが存在する。これらのアドレスは、例えば、ネットワークをプライベート領域とパブリック領域にそれぞれ分離するのに利用される。プライベート領域の装置は、当該領域の他の装置と比較的に自由にやりとりする。プライベート領域の装置がパブリック領域の装置に接続しようとするとき、あるいはその反対にパブリック領域の装置がプライベート領域の装置に接続しようとするときは常に、一般にはいくつかの制約が接続に課される。例えば、セキュリティ制限は、あるタイプの送信又は受信がプライベート領域とパブリック領域との間で行われることを許可しないかもしれない。
制限を設け、プライベートとパブリック領域の分離を可能にするため、ゲートウェイが典型的には利用される。ゲートウェイにより実行される1つの分離機能は、アドレス変換である。いくつかのローカルアドレスがプライベート領域に対して設けられる。ゲートウェイは、一般にはこれらのローカルアドレスを、パブリック領域(インターネットなど)において有効な少数のパブリックアドレスに変換する。パブリック領域の送信先は、ゲートウェイにより供給されたパブリックアドレスを利用し、ゲートウェイは、送信先から受信したメッセージをプライベート領域の適当な装置にマッピングする。通常、ネットワークアドレス変換(NAT)と呼ばれる上記アドレス変換の1つの理由は、利用可能なアドレス数が制限されているために生じる。
IPのバージョンでは、インターネットアドレスは、特定のフォーマットを有する。このフォーマットは、理論的には極めて多数の装置をアドレスするのに利用することが可能である。しかしながら、これらのアドレスの大きなブロックは、様々な理由により保留される。例えば、企業は割り当てられたアドレスのうち比較的少数のものしか利用しないが、アドレスブロックを割り当てられているかもしれない。また、社内用などプライベートの利用に保留されているアドレスブロックも存在する。従って、インターネット上のアドレスはアドレスの不足が生じている。NATがこの問題を改善するが、NATはまたある適用を処理する際に問題を有する。
従って、ネットワークを介した通信に適したアドレスマッピングを提供する技術が、当該技術分野において必要とされる。クライアントにより要求された外部アドレスマッピングの技術が提供される。
本発明の第1の特徴では、パブリックネットワークにアクセスするためのリクエストが、ローカルホストから受信される。パブリックネットワークにアクセスするのに利用されるパブリックアドレスが決定される。ローカルホストに対応するローカルアドレスが、パブリックアドレスにマッピングされる。当該パブリックアドレスが、ローカルホストに返される。
さらに、パブリックネットワークからローカルホスト、又はローカルホストからパブリックネットワークへのアクセスが可能である。1以上のヘッダと1以上のペイロードエリアを有するパケットが生成されてもよい。パブリックアドレスは、1以上のペイロードエリアの与えられた1つに置かれるかもしれない。さらに、ローカルホストは、アクセスのためのグローバルポートを要求し、グローバルポートは、アクセスのためローカルホストにマッピングされてもよい。
本発明の第2の特徴では、アウトバウンドアクセス(outbound access)がローカルネットワーク又はパブリックネットワークへのものであるか判断される。アウトバウンドアクセスがパブリックネットワークへのものであるとき、パブリックネットワークへのアクセスが要求される。当該要求に応答して、パブリック情報が受信される。パブリック情報は、アウトバウンドアクセスに対して生成された1以上のパケットのペイロード部分に置かれる。パブリック情報は、一般に少なくとも1つのパブリックポートを有するが、さらにパブリックアドレスを有するものであってもよい。当該要求は、パブリック情報のパブリックポートが一般にローカルポートに従うものとなるようにローカルポートを供給するようにしてもよい。
本発明と共に、本発明のさらなる特徴及び効果のより完全なる理解は、以下の詳細な説明と図面を参照することにより取得される。
参照が容易となるように、詳細な説明は、イントロダクション、装置及び方法例及びメソッドの定義例というタイトルの3つのセクションに分割される。
イントロダクション
上述のように、インターネット上ではアドレスが不足している。特に、インターネットプロトコルのバージョン4(IPv4)は、規定されるIPアドレスによりこの不足を生じさせるのに寄与する。アドレスの不足に対応して、この不足を解決するためいくつかの解決策が講じられている。これらの解決策のうち、ネットワークアドレス変換(NAT)又はネットワークアドレスポート変換(NAPT)技術が、最も一般的に利用されている。
NAT及びNAPTは、社内の「プライベート」ネットワーク内で使用されるようなプライベート領域内のアドレスを、パブリックのインターネット内で使用されるようなパブリック領域内の1以上のアドレスにマッピングすることを可能にする。一般的に利用されているが、NAT及びNAPTは、(1)インバウンドアクセス(inbound access)は設定時間において決定される設定に基づく場合のみ可能である、(2)プライベートネットワークとパブリックインターネットの境界を横断するのに必要なプロトコルは、当該プロトコルがアドレッシング情報を有する場合、アプリケーションレイヤゲートウェイ(ALG)を必要とする、などを少なくとも含むいくつかの問題を有する。
NAT及びNAPTの適切な代わりとなるものとして、IPv4アドレス不足を解決する可能性を有するRSIP(Realm−Specific Internet Protocol)プロトコルがある。RSIPの効果は、それが動的にインバウンドアクセスと、アプリケーションへの変更なくALGが存在ないことをサポートするということである。RSIPの大きな問題点は、それが現在インストールされているアプリケーションベースに互換性を有さず、主要なネットワーキング関連メーカーによりサポートされていないということである。
さらに、アプリケーションがアドレス変換装置を検出又は制御し、これにより、ALGの必要性を解消し、及び/又はインバウンドアクセスを可能にするプロトコルが存在する。このようなプロトコルの一例として、アプリケーションがアドレスマッピングをクエリすることを可能にするUPnP(Universal Plug and Play)ゲートウェイ仕様があげられる。当該プロトコルの問題点は、アプリケーションがアドレス変換が実行されている事実を認識すべきであるということである。従って、新たなアプリケーションには適しているが、既存のアプリケーションには適していない。
本発明は、上記問題に対する解決策を提供する。特に、本発明は、ALGを必要とすることなく利用可能である。本発明は、一実施例において、パブリックネットワークへのアクセスを要求するローカルホストをパブリックアドレス及びパブリックポートに提供する。ローカルホストからパブリックネットワーク、及び/又はパブリックネットワークからローカルホストへのアクセスが可能であろう。このとき、ローカルホストは、パケットのペイロードを充填する際に、パブリックアドレスとパブリックポートを使用する。ペイロードを充填するのに利用される情報は、ローカルホスト上のアプリケーションからのものである。従来のALGを用いたシステムでは、ローカルホストは、ローカルアドレス及びローカルポートによりパケットのペイロードを充填する。このとき、ALGは、ペイロードのローカルアドレスとローカルポートをパブリックアドレスとパブリックポートと置換するのに利用される。本発明の一例となる特徴では、ローカルホストはすでに有効なパブリックアドレスとパブリックポートを有するため、本発明を用いて生成されるパケットのペイロード部分は、パブリックアドレスとパブリックポートを有することとなり、ALGは必要とされない。
本発明は、少なくとも以下の効果を提供する。(1)インバウンドアクセスがALGを利用することなく可能となる。(2)多くのユーザが操作する家電機器(CE)オペレーティングシステムにより制御又は維持可能な安定的なアドレス変換装置が生成される。(3)設定が不要となる。(4)ALGの必要がなくなる。(5)既存のアプリケーション又はプロトコルが、変更することなく可能となる。(6)現在インストールされているベースが利用可能である。(7)UPnPとの協調が可能である。(8)セキュリティを向上することができる。(9)CE装置の一例となる実現形態を軽量化できる。
ここで図1を参照するに、本発明の一実施例に従って、プライベート領域とパブリック領域が通信する。プライベート領域は、2つのローカルホスト105−1と105−2(CREAMクライアントとも呼ばれる)、及びローカルネットワーク165を介し通信するゲートウェイシステム135(CREAMサーバとも呼ばれる)を有する。プライベート領域の各装置は、ローカルアドレス170−1、170−2又は170−3(ローカルアドレス又はアドレス170とも呼ばれる)を有する。パブリック領域は、パブリックネットワーク160を介し通信するゲートウェイシステム135及びリモートホスト150を有する。パブリック領域の各装置は、パブリックアドレス180−1又は180−2(パブリックアドレス又はアドレス180と呼ばれる)を有する。本例では、ゲートウェイシステム135は、ローカルアドレス170−3とパブリックアドレス180−1の両方を有する。ゲートウェイシステム135は、それに割り当てられた複数のプライベートアドレス170とパブリックアドレス180を有することができる。
ローカルホスト105−1及び105−2は、同様のものであると予想されるが、簡単化のため、ローカルホスト105−1のみが詳細に示される。ローカルホスト105−1は、プロセッサ106とメモリ107を有する。メモリ107は、アプリケーション108、オペレーティングシステム109、TCP/IP(Transmission Control Protocol−Internet Protocol)スタック110、CREAMソケット111、ローカルサブネットリスト112及びポート113を有する。一般に、TCP/IPスタック110とCREAMソケット111は、オペレーティングシステム109の一部であるが、説明の簡単化のため、それらは別々に図示される。CREAMソケット111は、従来のソケットと区別するため名付けられている。一実施例では、本発明の機能は、TCP/IPスタック110のレイヤ3とレイヤ4(図示せず)内で動作するようにしてもよい。ゲートウェイシステム135は、メモリ137に接続されるプロセッサ136を有する。メモリ137は、CREAKゲートウェイ138、サブネットリスト139、アドレス、ポート及び識別を有する1つのエントリ145を示すアドレスマッピング情報140(以下で詳細に説明される)、及びアドレストランスレータ146を有する。CREAMゲートウェイ138は、従来のゲートウェイと区別するため名付けられている。リモートホスト150は、ポート155を有する。
図1の例では、ローカルホスト105−1(例えば)とゲートウェイシステム135の間で通信されるパケット120−1がある。パケット120−1は、ヘッダ121−1とペイロード122−1を有する。ヘッダ121−1は、ソースアドレス125−1、ソースポート126−1、デスティネーションアドレス127−1及びデスティネーションポート128−1を有することが可能なヘッダアドレス情報123−1を有する。ペイロード122−1は、ペイロードアドレス情報(アドレス129−1とポート130−1を有する)とデータ131−1を有する。ゲートウェイシステム135を通過した後のパケット120−2が示される。
本開示が説明するアドレス情報は2つのアドレス情報セットが存在する。1つのセットはヘッダアドレス情報123であり、他のセットはペイロードアドレス情報124である。本発明の一例となる特徴は、例えば、ALGを利用することなく既存のアプリケーションを使用することを可能にするため、当該アドレスセットを処理する。しかしながら、本発明は所望の場合、ALGと共に利用されてもよいということに留意すべきである。
本発明の実施例の一例となる動作が、具体例を通じて最も良く説明される。ヘッダアドレス情報123を処理する一例となる技術の広範な説明が与えられる。同様に、ペイロードアドレス情報124を処理する一例となる技術の広範な説明が、与えられる。その後、同様の詳細な説明が与えられる。
ヘッダアドレス情報123に関して、ローカルホスト105−1は、プライベート又はパブリック領域に存在する可能性のあるデスティネーションと通信するためのものである。例えば、ローカルホストは、アプリケーション108により生成されるメッセージ(図示せず)をデスティネーションに通信するようにしてもよい。当該メッセージは、ローカルホスト105−1によりパケット120−1に構成することができる。
使用されるヘッダ121のタイプは、使用されるプロトコルにより決定される。例えば、TCPを利用するとき、パケット120は、ヘッダ121にIPヘッダとTCPヘッダを有するであろう。他の例として、UDP(User Datagram Protocol)を利用するとき、パケット120は、ヘッダ121にIPヘッダとUDPヘッダを有するであろう。IPヘッダは、一般にはソースIPアドレス125とデスティネーションIPアドレス127を有する。TCP及びUDPヘッダは、ソースポート126とデスティネーションポート128を有する。他の例として、IPセキュリティエクステンション(IPsec)カプセル化セキュリティプロトコル(ESP)の場合、IPヘッダはIPsecヘッダに後続する。従って、ヘッダ121の正確な構成は、利用されるプロトコルに応じて可変とされる。簡単化のためここでは、本発明の技術は多数の異なるヘッダタイプと対応するプロトコルに適しているが、ヘッダアドレス情報123は図1に示されるようなものと仮定される。例えば、ローカルホスト105とパブリックネットワーク165の間のアクセスは、以下のプロトコルの何れか、すなわち、FTP(File Transfer Protocol)RFC(Request For Comment)959、H.323ITU(International Telecommunications Union)規格、SIP(Session Initiation Protocol)RFC2543、RSIP(Resource Reservation Protocol)RFC2205、IPsec−ESP(Internet Protocol Encapsulation Security Protocol)RFC2402、kerberos4、kerberos5,telnetRFC854、rloginRFC1282を利用することができる。
使用されるプロトコルに関係なく、TCP/IPスタック110は、一般には、ペイロード122のスペース及びそれのヘッダ121とパケット120を生成するプロセスである。アプリケーション108は、一般には、ペイロード122−1を充填するのに利用される情報を提供する、又はペイロード122−1に情報を充填するエンティティである。以下の説明では、TCP/IPスタック110はヘッダアドレス情報123を生成していると仮定しているということは理解されるであろう。例えば、以下に図示されるオブジェクト相互作用図では、ヘッダ121を生成するTCP/IPスタック110への呼び出しは、簡単化のため図示されないが、行われると仮定される。
アプリケーション108は、リモートホスト150にメッセージ(図示せず)を送信し、このため、パブリックネットワーク160へのアクセスを要求すると仮定する。アプリケーション108は、オペレーティングシステム109、TCP/IPスタック110及びCREAMソケット111により動作し、パケット120−1が生成される。アプリケーション108は、ペイロード125−1を充填するのに用いられる情報を提供する。ペイロード122−1が、以下で説明される。パケット120−1は、ゲートウェイシステム135に送信される。ゲートウェイシステム135は、パケット120−1を受付け、パケット120−1をCREAKゲートウェイ138に与える。CREAMゲートウェイ138は、一般には、以下の詳細な説明において、図2を参照することによってソースアドレス125−1とソースポート126−1を変更する。本発明の実施例では、ソースアドレス125−1はローカルアドレス170−1であり、ソースポートは、CREAMゲートウェイ138との交渉を通じて決定されているポート113に対応する番号であろう。パケット120−1のデスティネーションアドレス127−1はパブリックアドレス180−2であり、デスティネーションポートは、一般にはポート155に対応する番号となる。
CREAMゲートウェイ138は、ソースアドレス125−1をパケット120−2のソースアドレス125−2と置換する。ソースアドレス125−2は、一般にはパブリックアドレス180−1である。ソースポート126−1は、一般には不変とされ、ソースポート126−2として出力される。同様に、参照番号126〜131は、パケット102−1と120−2の間で不変とされる。従って、CREAMゲートウェイ138は、「ローカル」ソースアドレス125−1(ローカルアドレス170−1など)を「パブリック」ソースアドレス125−2(パブリックアドレス180−1など)に変更することによって、ローカルアドレス170をパブリックアドレス180に置換する。
CREAMゲートウェイ138は、ローカルソースアドレス125−1をパブリックソースアドレス125−2にマッピングするのに利用されるアドレスマッピング140を維持する。このマッピングは、参照番号145により示され、以下でより詳細に説明されるアドレス、ポート及び識別を有する。一般に、ローカルソースポート126−1とパブリックソースポート126−2は、本発明の一例となる特徴では同一のものである。
アドレストランスレータ146は、ローカルアドレス170をパブリックアドレス180に変換するため、CREAMゲートウェイ138により利用される。サブネットリスト139は、ヘッダアドレス情報123が変更されるべきか判断し、何れのアドレスがローカルアドレスであるか、パブリックアドレスであるか規定するため利用される。例えば、ローカルホスト105−1がパケット120−1をローカルホスト105−2に送信している場合、ゲートウェイシステム135は、ヘッダアドレス情報123がローカルアドレス170を有するとき、アドレスマッピングを実行する必要はない。一般に、ゲートウェイシステム135は、ローカルホスト105−1と105−2の間のパケット120−1の通信に関与せず、ゲートウェイシステム135は、ローカルホスト105−1とローカルホスト105−2が異なるサブネット上にある場合、ルータ(図示せず)を有するようにしてもよい。ルータはサブネット間の通信を行う。ローカルホスト105は、以下で詳細に説明されるように、各種メソッドコールを通じてアドレスマッピングを要求することに留意すべきである。サブネットリスト112は、アドレス変換が必要であるか判断するため、ローカルホスト105−1により利用されてもよい。本開示では、アドレス変換は、アドレスマッピング140などのアドレスマッピングに従って、アドレスを変更するプロセスとみなされる。
ペイロードアドレス情報124に関して、従来のシステムでは、アドレス129とポート130は、ローカルアドレス170とローカルポートとすることができる。この場合、ALGは、典型的には、アドレスマッピングを生成し、アドレス129とポート130を決定されたアドレスとポートに置換するため、ゲートウェイシステム135の一部として利用される。ALGの動作方法は、以下の通りである。(1)アドレス129−1がローカルアドレスである場合、又はポート130−1がローカルポートである場合、ALGは、アドレス129−1又はポート130−1をパブリック領域に存在するアドレス又はポートと置換するためマッピングを生成する。(2)アドレス129−1がパブリックアドレスである場合、又はポート130−1がパブリック領域において有効なポートである場合、ALGは実行されない。ALGは、一般には、マッピングを構成するため、NATルールを生成する。このことは、従来のゲートウェイシステムの一部として、ALG(図1に図示されない)135が使用されている各プロトコルに必要であることを意味する。上述のように、これは不十分であり、新しいプロトコルが開発され、又は古いプロトコルが変更されるときは常に、新たなALGが生成されることを意味する。
対照的に、本発明の一例となる特徴では、CREAMゲートウェイ138は、パブリック領域において、適切なパブリックアドレス180と適切なパブリックポート(ポート155など)を決定するであろう。CREAMゲートウェイ138は、アプリケーション108により要求されると、適切なパブリックアドレス180と適切なポートを決定し、これらをアプリケーション108に与える。従って、アプリケーションは、変更される必要のないアドレス129−1とポート130−1によりペイロードアドレス情報124を占有するのに用いられる情報を生成する。CREAMゲートウェイ138は、アドレスマッピング140において、適切なパブリックアドレス180と適切なパブリックポートのマッピングを維持する。現在インストールされているアプリケーション108のベースは、本発明による利用に適しており、アプリケーション108を変更する必要はない。
ゲートウェイシステム135とローカルホスト105−1は、単一のコンピュータシステムに組み込むことが可能であるということに留意すべきである。実際、ローカルホスト105−1、ゲートウェイシステム135及びリモートホスト150は、すべて単一のコンピュータシステムに組み込まれてもよい。ローカルホスト105−1とリモートホスト150は共に、クライアントアプリケーション、サーバアプリケーション、及びポイント・ツー・ポイント(p2p)アプリケーションをホストするようにしてもよい。アプリケーションのタイプに関係なく、ローカルホストとリモートホストの両方がそれらの間の通信を開始することができることが重要である。
また、相互接続され、ネストされた複数のネットワークが存在するかもしれないということに留意すべきである。例えば、CREAMゲートウェイ2を介しプライベートネットワーク1と分離されたプライベートネットワーク2が存在する可能性がある。CREAMゲートウェイ1は、インターネットなどのパブリックネットワークからプライベートネットワーク1を分離する。この指定されたネットワーク構成を利用して、プライベートネットワーク2のホストがインターネットのホストと通信することを所望する場合、プライベートネットワーク2の内部で、CREAMゲートウェイ2にアウトバウンドアクセス要求が行われる。デスティネーションアドレスを見ることにより、CREAMゲートウェイ2は、さらなるアドレス変換がなされるべきであることを認識し、プライベートネットワーク1のCREAMゲートウェイ1においてアウトバウンドアクセス要求を実行する。このようにして、ネストされた「プライベート」ネットワークのサポートが利用可能となる。CREAMに対応するプライベートネットワークが、CREAMに対応しないプライベートネットワークの内部でネストされる場合、当該CREAM非対応プライベートネットワークは、パブリックネットワークと非CREAM対応プライベートネットワークとの間の境界を横断するプロトコルのため、ALGの利用などアドレス変換機能を担当し続ける。
アプリケーション108は、ペイロード122−1に配備されるアドレス129−1及び/又はポート130−1を有するデータを生成する任意のアプリケーションとすることができる。例えば、アプリケーション108は、ピア・ツー・ピアアプリケーション、アドレスマッピングの維持を要求するアプリケーション、リモートシェル(RSH)アプリケーション、Xウィンドウシステムアプリケーション、X−termアプリケーションの1以上とすることができる。
ここで説明される本発明は、例えば、実行時に本発明の実施例を実現する1以上のプログラムを有するメモリ107又は137の一部として、マシーン可読媒体を有する製造物として実現されるかもしれない。例えば、マシーン可読媒体は、CREAMソケット111及び/又はCREAMゲートウェイ138の各ステップを実行するよう構成されるプログラムを有するものであってもよい。マシーン可読媒体は、例えば、ハードドライブ、光又は磁気ディスク、電子メモリ又は他の記憶装置などの記録可能媒体であってもよい。
ここで図2を参照するに、テーブルが図示され、プライベート領域の社内ホストとインターネット上のホストとの間の通信中に、ヘッダアドレス情報123がどのように変更されるか説明するのに利用される。図2の例では、ローカルホスト105−1は社内ホストであり、リモートホスト150はインターネット内のホストである。2行目は、社内ホストから開始され、インターネットのホストで終了する通信を示す。この通信では、社内ホストのローカルIPアドレスは、ゲートウェイのパブリックIPアドレスに変更される(例えば、図1のCREAMゲートウェイ138により)。ソースポートは、交渉中に一度だけ効果的に決定されていると、不変とされる。所望の場合、ソースポートは変更することができる。3行目は、インターネットのホストから開始され、社内ホストにおいて終了する通信を示す。この通信では、デスティネーションIPアドレスは、社内ホストのローカルアドレスに変更される(例えば、図1のCREAMゲートウェイ138により)。デスティネーションポートは、不変とされる。
図3〜11のオブジェクト相互作用図は、適切なペイロードアドレス情報124を提供し、(必要に応じて)ヘッダアドレス情報123を提供及び変更するための一例となる技術を説明する。図3〜11のオブジェクト相互作用図のメソッドコールの多くは、従来のシステムにおいてすでに規定され、本開示は、本発明の一例となる特徴を実現するため利用されるコールの具体的の変更を指摘する。アプリケーション108の観点から、アプリケーション108は、単に現在実行しているメソッドコールを実行することができるだけであり、本発明の一例となる特徴は、アプリケーション108がすでにパブリックアドレスとパブリックポートを有することとなり、ALGが不要となるように、適切なパブリックアドレスとパブリックポートを自動的に決定する。
アドレス変換の開始前、CREAMクライアントがCREAMゲートウェイ138において登録されることが効果的である。一実施例では、CREAMクライアント105は一度は登録される必要があるが、この登録は特定の時間に限定される。この登録時間は、CREAMゲートウェイ138によりモニタされ、CREAMクライアント105のポール(poll)の成功後、ゲートウェイ138により延長される。登録時間の最大値は、ゲートウェイにおいて設定される。
図3は、CREAM対応オペレーティングシステム(OS)109を介したCREAMクライアント105の登録のためのオブジェクト相互作用図を示す。CREAMクライアント105の開始中、OS109は、CREAMゲートウェイ138において自らをCREAMクライアント105として登録する(シーケンス1)。CREAMゲートウェイ138はこの登録を確認する(シーケンス2)。確認中、CREAMゲートウェイ138は、ローカルサブネットリスト112を有する。この情報は、アドレス変換が必要であるか決定するため、CREAMクライアント105により利用されてもよい。登録成功後、CREAMクライアント105は、ゲートウェイ138からアドレス及びポートマッピングをリースすることができる。
一定間隔で、ゲートウェイ138は、OS109を開始登録延長のためCREAMクライアント105をポールする(シーケンス3)。この延長登録中、ゲートウェイ105は、それのOS109を介し、ローカルサブネットにおいて変更がなされる場合、新たなローカルサブネットリスト112を有することが可能である。CREAMクライアント105が登録に応答しない場合、当該CREAMクライアント105のリースされたアドレス及びポートマッピングは破棄される。CREAMクライアント105がOS109を介し要求される時間内に登録に応答する場合(シーケンス4)、リースされたアドレス及びポートマッピングは延長される。
CREAMクライアント105のOS109がシャットダウンされると、CREAMクライアント105は、OS109を利用することによりゲートウェイにおいて登録解除される(シーケンス5)。ゲートウェイ138は、登録解除要求を確認する(シーケンス6)。
図4は、CREAMソケット111の生成のための一例となるオブジェクト相互作用図を示す。登録されたCREAMクライアント105において実行されるアプリケーション108は、OS109を用いてCREAMソケット111を生成する(シーケンス1)。OS109は、CREAMソケット111の新たなインスタンスを生成し(シーケンス2)、アプリケーション109に(CREAMソケット111を指示する)ハンドルを返す。まだ通信は行われていないということに留意すべきである。
図5は、CREAMソケット111をバインド(bind)する一例となるオブジェクト相互作用図を示す。CREAMソケット111とある受信ポートと関連付けるため、アプリケーション108は、登録されているCREAMクライアント105のCREAMソケット111においてバインドを実行する(シーケンス1)。バインドコール中、CREAMソケット111は、CREAMゲートウェイ138においてINBOUND_ACCESS_REQUESTリクエストを実行する(シーケンス2)。INBOUND_ACCESS_CONFIRMに従って(シーケンス3)、バンドコールが成功又は不成功となる。
INBOUND_ACCESS_CONFIRMは、パブリック領域で使用されるパブリックアドレスと、アプリケーション108により使用されるポートを返すことに留意すべきである。従って、アプリケーション108は、適切なパブリックアドレスとポートを有し、ペイロード情報122に変換されるそれのメッセージを有効なパブリックアドレスとポートにより占有する。従って、ローカルアドレッシング情報をパブリックアドレッシング情報と置換するため、ALGがペイロード122を解析する必要がなくなる。
CREAMソケット111の使用後、CREAMソケット111の寿命は、任意的なシャットダウンコール(シーケンス4)と一般的に必須のクローズコール(シーケンス5)を用いて終了される。クローズコール中、ソケットは、FREE_LEASE_REQUESTを用いてCREAMゲートウェイ138における使用されているすべてのリソースを解放する(シーケンス6)。CREAMゲートウェイ138は、FREE_LEASE_CONFIRMを用いて応答する(シーケンス7)。
図6は、CREAMソケット111を接続するための一例となるオブジェクト相互作用図を示す。CREAMソケット111のエンドポイントを規定するため、登録されたCREAMクライアント105において実行されるアプリケーション108は、CREAMソケット111において接続機能をコールする(シーケンス1)。この接続コール中、CREAMソケット111は、デスティネーションアドレスがゲートウェイ内にあるか(すなわち、ローカルアドレス)、又はゲートウェイの外部にあるか(すなわち、パブリックアドレス)、CREAMゲートウェイ138から以前に受信したローカルサブネットリスト112を利用してチェックする。デスティネーションアドレスがゲートウェイの外部にある場合(すなわち、パブリックアドレス)、OUTBOUND_ACCESS_REQUESTが実行される(シーケンス2)。このリクエストの結果は、CREAMゲートウェイ138から受信される(シーケンス3)。すべてのリクエストが成功すると、当該接続コールは良好に返される。デスティネーションアドレスがゲートウェイの内部にある場合(すなわち、デスティネーションアドレスがローカルアドレスである)、又は、CREAMソケット111がすでにバインドされた場合、CREAMゲートウェイ138にOUTBOUND_ACCESS_REQUESTはされない。CREAMソケット111がすでにバインドされ、デスティネーションアドレスがローカルである場合、要求されたアドレス及びポートマッピングを解放することができる。
CREAMソケット111のクローズ中(シーケンス5)、CREAMゲートウェイ138は、リースされたアドレス及びポートマッピングを解放するよう要求される(シーケンス6)。これは、CREAMゲートウェイ138により確認される(シーケンス7)。
データを受信すると、すでに規定されているアプリケーションにより実行可能なコールがいくつか存在する。例えば、アプリケーションは、listen()、accept()、recv()及びrecvfrom()コールを実行することができる。listen()の実現形態については、現在のところ変化は予想されない。accept()の実現形態については、現在のところ変化は予想されない。recv()は接続されたソケットについてのみ利用可能であるが、ソケットが接続及び/又はバインドされている場合に限って、recv()とrecvfrom()の両方が典型的には機能する。従って、CREAMリースは一般には常に利用可能である。
図7は、データを受信するための一例となるオブジェクト相互作用図を示す。パブリックインターネット内で、送信者(本例ではリモートホスト150)は、CREAMゲートウェイ138のリースされたアドレスとポートにデータを送信する(シーケンス1)。当該データは、パケット120−2として送信される。CREAMゲートウェイ138は、アドレス及びポートマッピングを有するリースに従って、アドレスマッピング及び/又はポートマッピングを実行する(シーケンス2)。図1及び2を参照して上述されるように、アドレス及びポートマッピングは、パブリックアドレスとパブリックポートをヘッダアドレス情報124のローカルアドレスとポートに変換する。このマッピングされたパケット120−1は、プライベートネットワーク165を介し送信される(シーケンス3)。CREAMパケット111は、パケット120−1を受信し、受信したパケット120−1をそれのバッファに追加する(シーケンス4)。アプリケーション108は、ある時点においてバッファから当該パケット120−1を読み出す(シーケンス5)。読み出し後、パケット120−1はバッファから削除される(シーケンス6)。
一般に、send()メソッドは、接続されたCREAMソケット111においてのみ利用可能である。パブリックIPアドレスとパブリックポートにデータを送信するとき、要求されるCREAMリースはすでに実行されている。CREAMリースは、アプリケーション108とリモートホスト150との間のマッピングを有する。このマッピングは、一般には図1のアドレスマッピング140に格納されている。従って、CREAMクライアント105のOS109は、パケット120−1をCREAMゲートウェイ138に送信するだけでよい。CREAMゲートウェイ138は、ローカルアドレス及び/又はローカルポートをリースされたアドレスとポート(すなわち、パブリックアドレスとパブリックポート)に置換し、変更されたヘッダアドレス情報123を有するパケット120−2を意図する受信者に送信する。
図8は、send()メソッドを用いてデータを送信するための一例となるオブジェクト相互作用図を示す。アプリケーション108は、パブリックインターネット内に存在する受信者(リモートホスト150など)にデータを送信する(シーケンス1)。当該データのTCP/UDPヘッダは、送信者のローカルアドレスと(ソースアドレス125−1におけるものなど)、受信者のパブリックアドレス(デスティネーションアドレス127−1におけるものなど)を有する。パケット125−1は、デフォルト経路を用いてローカルネットワーク165を介し送信される(シーケンス2)。CREAMゲートウェイ138がパケット125−1を受信すると、ローカルアドレッシング情報は、リースされたアドレス又はポートマッピングと置換され(シーケンス3)、残りのパケット125−2がインターネットを介し送信される(シーケンス4)。図2を参照して説明されたように、リースされたアドレス又はポートマッピングは、一般にソースアドレス125−1をゲートウェイ135のインターネットアドレス(パブリックアドレス180−1など)に変換し、ポートは一般に同じままである。
sendto()は、接続プロトコル(UDPなど)が利用されるときに限って利用可能である。データがローカルIPアドレスに送信される場合、すでに利用可能でなければ、CREAMリースが取得される。このことは、sendto()を使用すると、当該ソケットのアドレスマッピングの以前の使用とは独立に、アドレスマッピングが使用されているかのチェックに応じて、IPアドレスの位置に対してチェックが実行されるべきであるということに留意すべきである。
図9は、sendto()メソッドを用いてデータを送信するための一例となるオブジェクト相互作用図を示す。アプリケーション108は、特定のポートとIPアドレスにデータを送信する(シーケンス1)。まず、デスティネーションアドレス127−1がローカルサブネットリスト112に従ってローカル又はパブリックであるかチェックされる。デスティネーションアドレス127−1がパブリックであり、まだリースされていない場合(例えば、OUTBOUND_ACCESS_REQUEST又はINBOUND_ACCESS_REQUESTなど)、CREAMゲートウェイ138からリースが取得される(シーケンス2及び応答シーケンス3)。ローカルアドレス情報を有するパケットが生成され、CREAMゲートウェイ138に送信される(シーケンス4)。CREAMゲートウェイ138は、ローカルアドレス情報及び/又はポート情報をリースされたアドレスとポートの組み合わせに置換し(シーケンス5)、パブリックネットワークを介しパケット120−2を送信する(シーケンス6)。
ソケットのクローズ後(シーケンス7)、取得されたCREAMリースが解放される(シーケンス8及び確認シーケンス9)。
本発明の一効果は、パケットのペイロード内のアドレッシング情報を含めることができるということである。しかしながら、いくつか検討すべき点がある。正しいアドレッシング情報を取得するため、アプリケーション108は、適切な時点において適切な関数をコールすべきである。さらに、これらの関数に対する適切な動作は、OS109により実現されるべきである。
アドレッシング情報を返すgetsockname()、gethostname()及びgetaddrinfo()などのすべての関数は、ローカルCREAMクライアント105のポートとIPアドレスに対する以下の値を返すべきである。
(1)CREAMソケット111がパブリックIPアドレスによりピアと接続する場合、CREAMクライアント105のIPアドレスは、リースされたIPアドレスである。ポート番号は、リースされたポート番号である。
(2)CREAMソケット111がプライベートIPアドレスによりピアと接続する場合、CREAMクライアント105のIPアドレスは、自らのローカルIPアドレスである。ポート番号は、ローカルポート番号である。
(3)接続されていないソケットの場合、有効なIPアドレスは返されるべきでない(有効なIPアドレスは、プライベート又はリースされたIPアドレスであるが、当該ピアに依存する)。この場合、nullの値が返される。
IPアドレスは一般にはピアのIPアドレスに従って決定することができるという事実により、IPアドレスがペイロードの内部に含まれるとき、CREAMクライアント105のIPアドレスは、ペイロードを有するパケットの受信者にバインドされるCREAMソケット111から決定されるべきであるということをアプリケーションは認識すべきである。
本発明によるアドレスマッピングのユーザは、アプリケーション108である。アプリケーション108は、例えば、サーバアプリケーション又はCREAMクライアントアプリケーションとすることができる。社内通信の性質により、主要なユーザは、通常はサーバアプリケーションがインターネット内に存在するCREAMクライアントアプリケーションである。CREAMクライアントアプリケーションの代わりに、本発明はまた、CREAMクライアントアプリケーションがインターネット内に存在するサーバアプリケーションに利用することができる。しかしながら、この最後のユーザカテゴリは、ある制限にバインドされるかもしれない。
図10は、CREAMクライアントアプリケーションを使用する場合のための一例となるオブジェクト相互作用図を示す。この図において、CREAMクライアントアプリケーション108が、CREAMゲートウェイ138の境界を横断するため本技術を利用して(すなわち、プライベート領域からパブリック領域に)、サーバアプリケーション(パブリックホスト150上など)に接続するときのやりとりの具体例が与えられる。本例では、CREAMクライアントアプリケーション108はプライベートネットワーク165内に配置され、サーバアプリケーションはインターネット(パブリックネットワーク160など)内に配置される。
CREAMクライアント105のOS109の開始中、CREAMクライアント105は、CREAMゲートウェイ138において自らを登録した(シーケンス1及び2)。
パブリックホスト150を介しサーバアプリケーションと通信するため、アプリケーション108は、CREAMソケット111を生成する(シーケンス3)。CREAMソケット111の生成後、アプリケーション108は、CREAMソケット111を利用してサーバに接続する(シーケンス4)。アプリケーション108は、任意のポートからリモートホスト150のサーバアプリケーションと通信することができるため、CREAMソケット111を明示的にバインドしない。CREAMソケット111が実際にリモートホスト150に接続可能となる前に、まず、サーバアプリケーションがプライベートネットワーク165又はインターネット(パブリックネットワーク160など)内に存在するかチェックする必要がある。本例では、このチェックは、ローカルサブネットリスト112を用いて実行される。本例では、デスティネーションIPアドレスはパブリックであり、このため、OUTBOUND_ACCESS_REQUESTが実行される(シーケンス5及び6)。OUTBOUND_ACCESS_REQUESTの成功後、connect()メソッドに関するデフォルト動作が実行可能である。アプリケーション108がソースサイドにおいて生成されたCREAMソケット111のポートとIPアドレスを要求する場合、リースされたIPアドレスとポート番号が返される。一般に、リースされたIPアドレスとポート番号は、ローカルIPアドレスと異なり、ローカルに使用されるポートとも異なる可能性がある。
一定の間隔により、CREAMゲートウェイ138は、EXTEND_REGISTRATION_INDICATIONを実行することによりリース時間を延長することができ(シーケンス7)、このことはCREAMクライアント105からのEXTEND_REGISTRATION_CONFIRMをトリガーする(シーケンス8)。
アプリケーション108がサーバにデータを送信すると(シーケンス9)、CREAMソケット111は、IPアドレスとTCP/UDPヘッダ内のローカルアドレッシング情報を利用して、当該データをサーバアプリケーションに送信する(シーケンス10)。CREAMゲートウェイ138は、パケットを傍受し、IPヘッダ及びTCP/UDPヘッダ(ヘッダアドレス情報123など)内のローカルアドレッシング情報を置換し(シーケンス11)、それをパブリックリモートホスト150を介しサーバアプリケーションに送信する(シーケンス12)。
アプリケーション108がCREAMソケット111をクローズするとき(シーケンス13)、又は、OS109がCREAMソケット111をクローズするときでさえ、CREAMソケット111は、リースされたIPアドレスとポートの組み合わせを解放する(シーケンス14及び15)。
CREAMクライアント105のOS109がシャットダウンされているとき、CREAMクライアント105は、CREAMゲートウェイ138において登録解除される(シーケンス16及び17)。
図11は、サーバアプリケーション108の使用する場合のための一例となるオブジェクト相互作用図を示す。この図において、サーバアプリケーション108がリスニングポートをオープンし、社内クライアントアプリケーション105−2とパブリッククライアントアプリケーション150が当該サーバアプリケーション108に接続するときのやりとりの具体例が与えられる。本例では、サーバアプリケーション108は、プライベートネットワーク165の内部に配置され、ローカルホスト105−1の一部であり、1つのクライアントアプリケーション(パブリックホスト150の一部として)はインターネット(パブリックネットワーク160など)の内部に配置され、1つのクライアントアプリケーション(ローカルホスト105−2の一部として)がプライベートネットワーク165の内部に配置される。簡単化のため、パブリックホスト150の一部であるクライアントアプリケーションは、「クライアントアプリケーション150」と呼ばれる。同様に、ローカルホスト105−2の一部であるクライアントアプリケーションは、「クライアントアプリケーション105−2」と呼ばれる。サーバアプリケーション108は、ここで提供される技術を利用して、インターネットの内部に存在するクライアントアプリケーション150と通信する。
OS109の開始時に、CREAMクライアント105−1が、CREAMゲートウェイ138において登録される(シーケンス1及び2)。
入力される通信を受信するため、サーバアプリケーション108は一般にCREAMソケット111を生成する(シーケンス3)。CREAMソケット111の生成後、サーバアプリケーション108は、CREAMソケット111を利用して、指定されたポートにおいて入力されたメッセージを聞き、これにより、サーバアプリケーション108は、CREAMソケット111をポートにバインドする(シーケンス4)。このバインドが内部のポート番号及び/又は外部のポート番号に対して行われるべきかCREAMソケット111は判断することができないかもしれないという事実により、CREAMソケット111は、内部及び外部ポートの両方にバインドされる。CREAMソケット111を外部ポートにバインドするため、ポートとアドレスの組み合わせが、CREAMクライアントによりCREAMゲートウェイ138においてリースされる(シーケンス5及び6)。ポートのリースに用いられるポート番号は、バインドリクエスト内で用いられるものと同じであり、このため、既知のポートの規定が破られることはない。ポート番号が指定されていない場合、CREAMゲートウェイ138はポート番号を割り当てる。内部ポートと外部ポートのポート番号は一般には同じに維持され、このため、潜在的なポートマッピングコンフリクトは解消される。
一定の間隔により、CREAMゲートウェイ138は、EXTEND_REGISTRATION_INDICATIONを実行することによりリース時間を延長することができる(シーケンス7)。これは、CREAMクライアント105−1からのEXTEND_REGISTRATION_CONFIRMをトリガーする(シーケンス8)。アプリケーション108は、リスニング状態においてCREAMソケット111を設定する(シーケンス9)。
ローカル社内クライアントアプリケーション105−2は、データをサーバアプリケーション108に送信する(シーケンス10)。この通信がローカルであるという事実により、アドレス又はポートマッピングは実行されない。CREAMソケット111は、パケットをそれのバッファに追加する(シーケンス11)。サーバアプリケーション108は、accept()メソッドを利用して、ローカルホスト105−2からのローカルクライアントアプリケーションとの接続を受け入れる(シーケンス12)。サーバアプリケーション108は、recv()コールを用いてそれのキューを読み出し(シーケンス13)、CREAMソケット111は、パケットをサーバアプリケーション108に与えるため、パケットをそれのバッファから削除する(シーケンス14)。
パブリックインターネット内のクライアントアプリケーション150は、データをサーバアプリケーション108に送信する(シーケンス15)。IPヘッダ及びTCP/UDPヘッダに含まれるリースされたアドレス及びポートの組み合わせは、CREAMゲートウェイ138によりローカルアドレスとポートの組み合わせにマッピングされ(シーケンス16)、パケットはローカルサーバアプリケーション108に送信される(シーケンス17)。CREAMソケット111は、リマッピングされたパケットをそれのバッファに追加する(シーケンス18)。サーバアプリケーション108は、accept()メソッドを用いて、パブリックホスト150からのパブリッククライアントアプリケーションとの接続を受け入れる(シーケンス19)。サーバアプリケーションは、recv()を呼び出すことによりキューからデータを読み出し(シーケンス20)、CREAMソケット111は、サーバアプリケーション108への転送のため、パケットをそれのバッファから削除する(シーケンス21)。
OS109がシャットダウンされると、CREAMクライアント105−1はCREAMゲートウェイ138において登録解除される(シーケンス22及び23)。
本発明の技術が効果的となる他の具体的ケースが存在する。さらにいくつかのケースが後述される。
ローカルホスト登録は、以下のように実行されるかもしれない。何れかのCREAMクライアント105のOS109の開始中、CREAMクライアント105は、一般にはCREAMゲートウェイ138において登録される。CREAMゲートウェイ138は、この登録を受け入れるか、あるいは、CREAMクライアント105がすでに登録されていることを示す。
前者のケースでは(登録が受け入れられるなど)、CREAMクライアント105に対してリースは行われていない。後者のケースでは(CREAMクライアント105がすでに登録されているなど)、CREAMクライアント105に関する現在のリースに対して変更はされない。何れのケースでも、CREAMクライアント105が登録される。CREAMクライアント105のOS109が既存のリースを認識していない場合、CREAMクライアント105は、再度登録される前にリソースが解放されるように、まず登録解除すべきである。
本発明の一例となる特徴では、登録確認中、ローカルアドレス範囲を示すテーブルが返される。このテーブルはまた、すでに登録された表示中に含まれる。
ローカルホストの登録解除又はシャットダウンの例は、以下のようなものである。OS109のシャットダウン中、CREAMクライアント105は、CREAMゲートウェイ138において登録解除する。CREAMゲートウェイ138は、CREAMクライアント105が登録解除されることを確認するか、あるいは、CREAMクライアント105が登録されていなかったことを示す。何れの場合でも、CREAMゲートウェイ138において当該CREAMクライアント105に対してリソースはもはや使用されない。
リスニングポートは、以下のように生成することができる。CREAMクライアント105は、インバウンドアクセスのためアドレスとポートの組み合わせをリースするため、CREAMゲートウェイ138においてINBOUND_ACCESS_REQUESTを実行する。ローカルポート番号とリースされたポート番号は、必ずしも必要ではないが、CREAMゲートウェイ138により等しいと仮定される。
CREAMクライアント105は、リースされるポート番号(例えば、httpサーバについてはポート80など)を指定することができ、この場合、CREAMゲートウェイ138はリースを確認するか、拒絶する。
CREAMクライアント105はまた、何れのポート番号も指定しないことも可能である。この場合、CREAMゲートウェイ138は、ポート番号を指定し、リースを確認する。同じローカルポート番号が利用可能でない場合、CREAMクライアント105は、リースを解放し、インバウンドアクセスポートをリースするよう再試行すべきである。
ポートリース処理の性質により、TCPタイムアウト後、再びリースに対してポートが利用可能であり、これは、TCP接続の所望されない再接続を回避するのに効果的である。
送信ポートを生成する例は、以下のようなものである。CREAMローカルホスト105は、アウトバウンドアクセスのためアドレスとポートの組み合わせをリースするため、CREAMゲートウェイ138においてOUTBOUND_ACCESS_REQUESTを実行する。CREAMローカルホスト105は、リースされるポート番号を指定することができ、この場合、CREAMゲートウェイ138は、リースを確認又は拒絶する。
CREAMローカルホスト105はまた、何れのポート番号も指定しないことが可能であり、この場合、CREAMゲートウェイ138は、ポート番号を指定し、リースを確認する。
ポートリース処理の性質により、TCPタイムアウト後、再びリースに対してポートが利用可能であり、これは、TCP接続の所望されない再接続を回避するのに効果的である。
ピアを解消する例は、以下の通りである。CREAMローカルホスト105は、登録要求内に含まれるテーブルを利用するか、及び/又は、ピアがインターネット又はローカルネットワーク内に存在するか判断するため、RESOLVE_PEER_REQUEST関数を利用する。
選択されたリソースを解放する例は、以下の通りである。登録されているCREAMローカルホスト105は、CREAMゲートウェイ138にマッピングに関するリースされたアドレス又はポートを規定することにより、1以上のアドレス及びポートマッピングを解放するよう要求することができる。さらに、すべてのリソースは、登録解除確認後に解放される。
一例となるメソッド定義
以下で使用される定義は、以下の通りである。
ホスト IPアドレスを有する任意の装置
CREAMローカルホスト CREAMプロトコルをサポートするホスト
CREAMゲートウェイ CREAMプロトコルをサポートするゲートウェイ
リモートホスト パブリックインターネット上のホスト
ローカルホスト プライベートネットワーク上のプライベート領域内のIPアドレスを有するホスト
ローカルアドレス プライベート領域内のIPアドレス
パブリックアドレス インターネットのパブリック領域内のIPアドレス
以下で使用される略語は、以下の通りである。
CREAM クライアントにより要求される外部アドレスマッピング(Client Requested External Address Mapping)
ALG アプリケーションレベルゲートウェイ(Application Level Gateway)
NAT ネットワークアドレス変換(Network Address Translation)
NAPT ネットワークアドレスポート変換(Network Address Port Translation)
全体的な記号法は、以下の通りである。シンタックスについては、以下の記号法が使用される。各パラメータは、以下のように定義される。
全体的なパケットの説明:
Figure 2007507962
この記号法を用いて、パケット部分aは、以下のシンタックスを有する。
Length1は、所定の固定長である(例えば、0x02など)。Value1は、所定の固定値である(例えば、0x01など)。ネームName1は、パケットコンテンツに依存する(例えば、My1stVariableなど)。この情報を利用して、先頭の2バイトである、バイト0と1は、固定値(0x01)と固定長(0x02)を有する変数My1stVariableを有する。
第1記号例:
Figure 2007507962
Length2は、所定の固定長である(例えば、0x04など)。Value2は、ブラケットにより識別されるような変数である(例えば、文字列の文字数など)。ネームName2は、パケットコンテンツに依存する(例えば、LengthOfNameなど)。この情報を利用して、バイト2〜5は、固定長(0x04)の値である#CharsStringを有する変数LengthOfNameを有する。
第2記号例:
Figure 2007507962
Value2は、所定の変数であり、この場合は、変数Name2(「LengthOfName」と前に名付けられた文字列の長さを規定する)であり、これはブラケットにより示される。Value3は値であり、長さに依存する(例えば、Value2の文字を有する文字列など)。Name3は、パラメータの名前を表す。ネームName3は、パケットコンテンツに依存する(例えば、Local hostNameなど)。この情報を利用して、バイト6〜(#CharsString+5)は、#CharsString文字帳の変数Local hostNameを表す文字列を有する。
第3記号例:
Figure 2007507962
Parameter1は、所定のパラメータである(例えば、Versionなど)。このパラメータは、自らの内部シンタックス及びセマンティックスを有する。%符号の間のパラメータは、当該パラメータが必須であることを示す。この情報を利用して、変数Local hostNameは、パラメータVersionに続く。
第4記号例:
Figure 2007507962
Parameter2はまた、所定のパラメータである(例えば、Addressなど)。しかしながら、ブラケットは、当該パラメータが任意的なものであることを示す。この情報を利用して、Versionパラメータは、Addressパラメータに続くことが可能である。
第5記号例:
Figure 2007507962
全体的なパラメータ定義
CREAM内のすべてのパラメータは、以下の記号法を用いて定義される。
Figure 2007507962
Type:Typeの値は、パラメータのタイプを規定する。正確な値は、パラメータのタイプに依存し、パラメータ定義中に指定される。
Length:valueを含むバイト数を規定する。Valueは、実際のパラメータデータを有し、lengthは、タイプとコンテンツに依存する。
Version(0x00):versionフィールドは、CREAMプロトコルのバージョンを特定する。
Figure 2007507962
Version:当該VREAMプロトコルのバージョンを有する。現在、version1のみが記載されている。トータルバージョンTLVの長さは固定され、CREAMプロトコルのすべてのバージョンについて不変とされるべきである。
Address(0x01)
addressフィールドは、アドレッシング情報を有する、以下のアドレスタイプがサポートされている。
IPv4:
Figure 2007507962
IPv4ネットマスク:
Figure 2007507962
IPv6:
Figure 2007507962
FQDN:
Figure 2007507962
FQDNは、終了文字が含まれないASCII文字列として表される。
Port(0x02):portフィールドは、1以上のTCP又はUDPポートを有する。portパラメータ内で、Number_Of_Portsフィールドは、含まれるポート数を指定する。Number_Of_Portsの値は、Lengthフィールドから導出可能である。
IPv4:
Figure 2007507962
以下のProtocolの値がサポートされる。
Figure 2007507962
Port Mapping(0x03):
port mappingパラメータは、ローカルポートと外部ポートの間のマッピングを有する。ポートマッピングパラメータ内において、Number_Of_Port_Mappingsフィールドは、含まれるポートマッピング数を指定する。Number_Of_Port_Mappingsの値は、Lengthフィールドから導出可能である。
IPv4:
Figure 2007507962
以下の状態コードがサポートされる。
Figure 2007507962
Protocolフィールドに対してサポートされる値は、Port MappingのProtocolの値(0x03)に関して上記テーブルに規定されている。
Local hostID(0x04):
Local hostIDパラメータは、CREAMローカルホストIDを指定する。Local hostIDは、CREAMローカルホストを区別するのにCREAMゲートウェイにより使用される。
Figure 2007507962
LeaseID(0x05):
LeaseIDパラメータは、CREAMリースIDを指定する。LeaseIDは、CREAMバインドを区別するのにCREAMローカルホストとCREAMゲートウェイにより使用される。
Figure 2007507962
Local Subnet List(0x06):
Local Subnet Listは、ローカルサブネット群の定義を含む。
Figure 2007507962
Message Type(0x10):
メッセージタイプは、メッセージのタイプを規定する。メッセージに応じて、これは、パケットのコンテンツを規定し、及び/又は以前に送信されたパケットを表す。
Figure 2007507962
以下のメッセージタイプが規定される。
Figure 2007507962
メッセージタイプTLVの長さは固定され、CREAMバージョンのすべてに対し不変とされるべきである。
REGISTRATION_REQUEST
Description:
このメッセージは、CREAMゲートウェイにおいてCREAMローカルホストを登録するのに使用される。
Syntax:
Figure 2007507962
セマンティックスは以下の通りである。
Version:上記バージョン情報を参照されたい。
Message_Type:メッセージタイプは、REGISTRATION_REQUESTメッセージを示すべきである。
Length:パッケージのトータルの残りの長さは、本バージョンでは0x00に等しい。
登録するため、CREAMゲートウェイは、使用されているCREAMプロトコルのタイプとメッセージのコンテンツを知っているべきである(REGISTRATION_REQUEST)。CREAMローカルホストは、ローカルホストが登録されていないとき、REGISTRATION_REQUESTを送信することが許可されるにすぎない。
Behavior:
CREAMゲートウェイは、REGISTRATION_CONFIRM又はERROR_INDICATIONメッセージにより応答すべきである。
REGISTRATION_CONFIRM
Description:
このメッセージは、CREAMローカルホストの登録を確認するのに使用される。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョンを規定する。
Message Type:メッセージタイプを規定する。指定されるメッセージは、REGISTRATION_CONFIRMであるべきである。
Length:このメッセージの残りのトータルの長さを規定する。
Local hostID:Creamゲートウェイにより割り当てられるものとしてLocal hostIDを規定する。この値は、CREAMローカルホストとCREAMゲートウェイの間のさらなる通信に使用されるべきである。
Local Subnet List:アドレス変換なしに到達可能なローカルサブネットを規定する。定義の具体例については上記を参照されたい。
REGISTRATION_CONFIRMメッセージを利用することにより、CREAMゲートウェイは、CREAMローカルホストのREGISTRATION_REQUESTを認める。当該メッセージ内において、CREAMゲートウェイとCREAMローカルホストの間のさらなる通信に利用されるべきLocal hostIDが割り当てられる。
また、メッセージ内において、ローカルサブネットのリストが規定される。CREAMローカルホストは、このリストを用いて、通信のためインバウンド/アウトバウンドアクセスリクエストがなされるべきか決定すべきである。このリストの内部に少なくともCREAMローカルホストのローカルサブネットが含まれる。
Behavior:
このメッセージを受信することにより、ローカルホストは、それがCREAMローカルホストとして登録解除されることを所望する場合、登録解除リクエストを送信すべきである。さらに、このメッセージを受信した後、定期的なポールがこのCREAMローカルホストの寿命をチェックすることが期待できる。
EXTEND_REGISTRATION_INDICATION
Description:
このメッセージは、登録されているCREAMローカルホストの寿命をポールするのに使用される。さらに、ローカルサブネットリストの更新が、このメッセージに含めることができる。
Syntax:
Figure 2007507962
Sematics:
Version:CREAMプロトコルのバージョンを規定する。
Message Type:EXTEND_REGISTRATION_INDICATIONとなるべきこのメッセージのメッセージタイプを規定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:このCREAMローカルホストに以前に割り当てられたLocal hostIDと同じ値を有すべきLocal hostIDを有する。
Local Subnet List:任意的なパラメータ。含まれる場合には、アドレス変換を必要としない新たなローカルサブネットリストを含む。含まれない場合、古いリストが存在する。
Behavior:
Local hostIDが登録中に受信したものと同じであり、ローカルホストがまだ登録されている場合、CREAMローカルホストは、EXTEND_REGISTRATION_RESPONSEメッセージにより当該メッセージに応答すべきである。Local Subnet Listパラメータが含まれる場合、この新たなリストは受信時にアクティブとなる。しかしながら、追加されたローカルサブネット内のすでに開始されたホストとの通信は、アドレス変換されたままである。競争状態の存在により、CREAMローカルホストが新たなローカルサブネットを認識するまでに、ローカルホストの2つの間の通信が存在することが発生しうる。この場合、当該通信は、効果的にアドレス変換として留まるようにしてもよい。これは、Berkleyソケットインタフェースのセマンティックスとの決別を回避するのに実行される。
EXTEND_REGISTRATION_RESPONSE
Description:
このメッセージは、登録されているローカルホストの寿命のポール成功を認めるのに使用される。このメッセージを送信することにより、CREAMローカルホストは、それが登録されていることを認める。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:EXTEND_REGISTRATION_RESPONSEであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
Behavior:
ローカルホストは、適切なEXTEND_REGISTRATION_INDICATIONが受信された場合、EXTEND_REGISTRATION_RESPONSEを送信すべきである。
DE−REGISTRATION_REQUEST
Description:
このメッセージは、CREAMゲートウェイにおいて登録解除するためCREAMローカルホストにより使用される。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:DE−REGISTRATION_REQUESTであるべきメッセージのタイプを特定する
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
CREAMローカルホストは、このメッセージを送信するため登録されるべきである。対応するDE−REGISTRATION_CONFIRM又はERROR_INDICATIONが受信されるまで、CREAMローカルホストは登録されたままである。
Behavior:
このメッセージは、DE−REGISTRATION_CONFIRMメッセージにより認められるか、あるいは、拒絶理由を規定するERROR_INDICATIONにより拒絶されるべきである。
DE−REGISTRATION_CONFIRM
Description:
このメッセージは、DE−REGISTRATION_REQUESTを認める。
Syntax:
Figure 2007507962
Semantics
Version:CREAMプロトコルのバージョン
Message Type:DE−REGISTRATION_CONFIRMであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
このメッセージを受信した後、CREAMローカルホストは、もはや登録されず、CREAMローカルホストがDE−REGISTRATION_REQUESTを送信したと仮定すると、このローカルホストのすべてのリースが削除される(存在する場合)。
Behavior:
DE−REGISTRATION_REQUESTを送信せずこのメッセージが受信される場合、ローカルホストは、ERROR_INDICATIONを送信すべきである。
INBOUND_ACCESS_REQUEST
Description:
登録されたCREAMローカルホストは、このメッセージを利用して、インバウンドアクセスポートマッピングを要求する。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:INBOUND_ACCESS_REQUESTであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
Address(ローカル):これは、インバウンドアクセスが要求されるローカルネットワーク内のホストのローカルアドレスである。このパラメータは任意的なものであり、含まれない場合、CREAMローカルホストのローカルアドレスが、CREAMゲートウェイにより仮定される。
Note:異なるローカルアドレスを指定することによって、CREAMローカルホストは、他のローカルホストのアドレスマッピングを要求することができる。しかしながら、CREAMローカルホストは、リースの寿命の責任を維持する。
Port(ローカル):これは、マッピングが要求されるローカルポートである。このパラメータは、任意的なものである。このパラメータが含まれない場合、1つのマッピングがCREAMゲートウェイにより選択される。
インバウンドポートマッピングを要求することにより、ホストは(CREAMローカルホスト又はローカルアドレスにより指定されるような他のローカルホスト)、ローカルペイロード内のアドレス情報のアドレス変換の責任を維持する。従って、CREAMローカルホスト以外のホストに対するインバウンドアクセスを要求すると、警告がとられるべきである。このような場合、ペイロードのIPアドレス情報のないプロトコル又はNAT ALGなどの技術が利用されるべきである。
インバウンドアクセスリクエストに対して、CREAMゲートウェイは、CREAMゲートウェイのポートxから意図するホストにおけるポートxへのマッピングを意味する一対一マッピングを常に割り当てる(ただし、xは同一のものである)。
ポート番号が含まれているとき、CREAMゲートウェイは、これを周知のポート(例えば、httpについては80など)としてスレッドし、外部の同地宇野ポート番号を割り当てようとする。このポートは一度しか割当て可能でないということに留意されたい。
Behavior:
INBOUND_ACCESS_REQUESTは、INBOUND_ACCESS_CONFIRM又はERROR_INDICATIONにより応答されるべきである。
INBOUND_ACCESS_CONFIRM
Description:
これは、INBOUND_ACCESS_REQUESTに対する応答である。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:INBOUND_ACCESS_CONFIRMであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
LEASE ID:この特定のポートマッピング群に割り当てられたリースID。このIDはさらなる参照に利用されるべきである。
Address:外部ネットワークとの通信に利用されるアドレス。これは、インターネットのパブリック領域内で有効なアドレスである。
Port Mapping:生成されるポートマッピング群
ポートマッピング群に少なくとも1つの有効なマッピングが含まれている場合、Lease IDは、マッピングがもはや必要とされない場合に、このマッピングを解放するのに利用されるべきである。有効なマッピングが含まれていない場合、Lease IDを無視することができる。有効なマッピングは、成功する状態コードによるマッピングとして規定される。状態コードがすでに利用可能な値のマッピングを規定する場合、このマッピングは、CREAM以外の方法(NAT ALG又はUPnPなど)を用いて生成されたものである。
Behavior:
Lease IDにより識別されるようなすべてのマッピング群が、FREE_LEASE_REQUESTにより明示的に解放されるべきである。
INBOUND_ACCESS_CONFIRMが当該CREAMローカルホストによるまず対応するINBOUND_ACCESS_REQUESTを送信することなく受信される場合、ERROR_INDICATIONが送信されるべきである。
OUTBOUND_ACCESS_REQUEST
Description:
登録されているCREAMローカルホストは、このメッセージを利用してアウトバウンドアクセスポートマッピングを要求する。
Syntax:
Figure 2007507962
Semantics:
Message_Type:OUTBOUND_ACCESS_REQUESTであるべきメッセージのタイプを特定する。
Meaasge length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
Address(ローカル):任意的なマッピングがリクエストされるホストのローカルアドレス。このパラメータが含まれていない場合、マッピングがCREAMローカルホストを要求するため生成される。
Port(ローカル):マッピングが要求されるローカルポート番号群
Address(リモートホスト):任意的なリモートホストのアドレス。このパラメータが含まれている場合、マッピングされるポート群の通信は、与えられたアドレスによってのみ実行可能である。
Port(リモートホスト):任意的な通信が制限されるリモートポート番号群。このパラメータが含まれる場合、通信は規定されたポート番号に制限される。
Behavior:
リモートアドレス(IPアドレス又はFQDN)が指定されている場合、通信は、当該リモートアドレスのみを有するリモートホストとの通信に制限される。
リモートポート(ポート群)が指定されている場合(例えば、{80,8080}など)、通信は、指定されたポート群の中のリモートホストのポートとの通信に制限される。リモートアドレスとリモートポートの組み合わせを用いて、ある範囲のポートと指定されたリモートホストの通信に対して制限が可能である。
OUTBOUND_ACCESS_CONFIRM
Description:
これは、OUTBOUND_ACCESS_REQUESTに対する応答である。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:OUTBOUND_ACCESS_CONFIRMであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
Lease ID:この特定のポートマッピング群に割り当てられたリースID。このIDはさらなる参照に利用されるべきである。
Address:外部ネットワークとの通信に利用されるアドレス。これは、インターネットのパブリック領域内で有効なアドレスである。
Port Mapping:生成されるポートマッピング群
Behavior:
FREE_LEASE_REQUESTにより明示的に解放されるべきLease IDにより識別されるようなすべてのマッピング群
OUTBOUND_ACCESS_CONFIRMが当該CREAMローカルホストによるまず対応するOUTBOUND_ACCESS_REQUESTを送信することなく受信される場合、ERROR_INDICATIONが送信されるべきである。
FREE_LEASE_REQUEST
Description:
登録されたCREAMローカルホストは、このメッセージを利用して、INBOUND_ACCESS_REQUES又はOUTBOUND_ACCESS_REQUESTにより生成されるポートマッピング群を解放する。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:FREE_LEASE_REQUESTであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
Lease ID:解放されるべきこの特定のポートマッピング群に割り当てられたリースID
Behavior:
FREE_LEASE_REQUESTを送信した後、CREAMローカルホストは、送信用にはポートマッピングを使用することをもはや許されない。対応するFREE_LEASE_CONFIRMの受信後、リースIDに関連するパスを利用して、メッセージがもはや受信されないことが保証される。
CREAMゲートウェイが登録されていないCREAMローカルホストからFREE_LEASE_REQUESTを受信し、又は未知のLease IDを有する場合、対応するERROR_INDICATIONが送信される。
FREE_LEASE_CONFIRM
Description:
このメッセージは、成功したFREE_LEASE_REQUESTに対する応答であり、特定されたポートマッピング群が解放されることを確認する。
Syntax:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:FREE_LEASE_CONFIRMであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Local hostID:登録中に割り当てられるCREAMローカルホストのID
Lease ID:解放されたポートマッピング群のリースID
Behavior:
FREE_LEASE_CONFIRMを受信した後、関連するポートマッピングはもはや存在しない。従って、何れのパケットも、特定されたポートマッピングに関するパスによっては到達しない。CREAMローカルホストが対応するFREE_LEASE_REQUESTを送信せず、又は、未知のLocal hostID又はLease IDを有することなく、FREE_LEASE_CONFIRMを受信した場合、対応するERROR_INDICATIONが送信されるべきである。
ERROR_INDICATION
Description:
このメッセージは、エラーを示すものであり、CREAMローカルホストとCREAMゲートウェイにより送信することができる。
Syntax:
Figure 2007507962
推奨されるエラーコードのテーブル:
Figure 2007507962
Semantics:
Version:CREAMプロトコルのバージョン
Message Type:ERROR_INDICATIONであるべきメッセージのタイプを特定する。
Length:バイト単位によるこのメッセージの残りのトータルの長さ
Error_Response_Code:エラー応答コード。定義のための上のテーブルを参照されたい。
Local hostID:任意的な登録中に割り当てられるようなCREAMローカルホストのID。このメッセージがCREAMゲートウェイにより送信される場合、これは、わかっている場合には、アクションを引き起こしたCREAMローカルホストを特定する。このメッセージがCREAMローカルホストにより送信される場合、割り当てられていれば、これはローカルホストを特定する
Parameter_Type:任意的なものであり、エラーを生じさせたパラメータのタイプを特定する。
Behavior:
このメッセージはエラーを示す。
ここで図示及び説明された実施例及び変形は、本発明の原理を単に例示したものであり、本発明の趣旨及び範囲から逸脱することなく、様々な変更が当業者により実現可能であるということは、理解されるべきである。
図1は、本発明の効果的な実施例により通信するプライベート及びパブリック領域を示す。 図2は、本発明の効果的な実施例によるインターネット上のホストとプライベート領域の社内ホストとの間の通信中に、ヘッダアドレス情報がどのように変更されるか記述するのに利用されるテーブルである。 図3は、本発明の効果的な実施例によるクライアントにより要求された外部アドレスマッピング(CREAM)ローカルホストの登録のためのオブジェクト相互作用図を示す。 図4は、本発明の効果的な実施例によるCREAMソケットの生成のための一例となるオブジェクト相互作用図を示す。 図5は、本発明の効果的な実施例によるCREAMソケットをバインドするための一例となるオブジェクト相互作用図を示す。 図6は、本発明の効果的な実施例によるCREAMソケットと接続するための一例となるオブジェクト相互作用図を示す。 図7は、本発明の効果的な実施例によるデータを受信するための一例となるオブジェクト相互作用図を示す。 図8は、本発明の効果的な実施例によるsend()を用いてデータを送信するための一例となるオブジェクト相互作用図を示す。 図9は、本発明の効果的な実施例によるsendto()を用いてデータを送信するための一例となるオブジェクト相互作用図を示す。 図10は、本発明の効果的な実施例によるクライアントアプリケーションの使用ケースのための一例となるオブジェクト相互作用図を示す。 図11は、本発明の効果的な実施例によるサーバアプリケーションの使用ケースのための一例となるオブジェクト相互作用図を示す。

Claims (22)

  1. クライアントにより要求される外部アドレスマッピングのための方法であって、
    ローカルホストからパブリックネットワークへのアクセスに対するリクエストを受信するステップと、
    前記パブリックネットワークへのアクセスに利用されるべきパブリックアドレスを決定するステップと、
    前記ローカルホストに対応するローカルアドレスを前記パブリックアドレスにマッピングするステップと、
    前記パブリックアドレスを前記ローカルホストに返すステップと、
    を有することを特徴とする方法。
  2. 請求項1記載の方法であって、
    前記リクエストされるアクセスは、前記パブリックネットワークから前記ローカルホストへのものであることを特徴とする方法。
  3. 請求項1記載の方法であって、
    前記リクエストされるアクセスは、前記ローカルホストから前記パブリックネットワークへのものであることを特徴とする方法。
  4. 請求項1記載の方法であって、
    前記パブリックアドレスは、前記パブリックネットワーク上のリモートホストに対応するアドレスであることを特徴とする方法。
  5. 請求項1記載の方法であって、さらに、
    前記アクセスに利用されるものであって、1以上のヘッダと1以上のペイロードエリアを有するパケットを生成するステップと、
    前記1以上のペイロードエリアの与えられた1つのペイロードエリアに少なくとも前記パブリックアドレスを配置するステップと、
    を有することを特徴とする方法。
  6. 請求項5記載の方法であって、
    前記1以上のヘッダと前記1以上のペイロードエリアの1以上が暗号化されることを特徴とする方法。
  7. 請求項1記載の方法であって、
    前記パブリックネットワークは、1以上のアドレス群により規定されることを特徴とする方法。
  8. 請求項7記載の方法であって、
    前記1以上のアドレス群は、1以上のサブネットリストにより規定されることを特徴とする方法。
  9. 請求項1記載の方法であって、
    前記パブリックアドレスを決定するステップはさらに、パブリックポートを決定するステップを有し、
    前記マッピングするステップはさらに、前記パブリックポートを前記ローカルホストにマッピングするステップを有し、
    前記パブリックアドレスを返すステップはさらに、前記パブリックポートを前記ローカルホストに返すステップを有する、
    ことを特徴とする方法。
  10. 請求項1記載の方法であって、
    前記パブリックネットワークへのアクセスをリクエストするステップはさらに、該アクセス中に使用されるべきポートをリクエストするステップを有し、
    前記マッピングするステップはさらに、前記リクエストされたポートを前記ローカルホストにマッピングするステップを有し、
    前記パブリックアドレスを返すステップはさらに、前記リクエストされたポートを前記ローカルホストに返すステップを有する、
    ことを特徴とする方法。
  11. 請求項1記載の方法であって、
    前記マッピングするステップはさらに、前記ローカルホストの識別を決定するステップと、前記識別を前記ローカルホストに返すステップを有することを特徴とする方法。
  12. 請求項1記載の方法であって、
    前記マッピングするステップはさらに、前記ローカルホストのローカルサブネットリストを決定するステップと、前記ローカルサブネットリストを前記ローカルホストに返すステップを有することを特徴とする方法。
  13. 請求項12記載の方法であって、
    前記ローカルサブネットリストは、ローカルネットワークを規定し、これにより、前記ローカルネットワークと前記パブリックネットワークとを区別することを特徴とする方法。
  14. 請求項1記載の方法であって、
    前記アクセスは、前記ローカルホストから前記パブリックネットワークへのものであり、
    前記アクセスは、前記ローカルアドレスとローカルポートを有し、
    当該方法はさらに、
    前記ローカルアドレスが前記パブリックアドレスとなるよう変更するステップと、
    必要に応じて、前記ローカルポートをパブリックホストに対応するパブリックポートとなるよう変更するステップと、
    を有する、
    ことを特徴とする方法。
  15. 請求項1記載の方法であって、
    前記アクセスは、前記パブリックネットワークから前記ローカルホストへのものであり、
    前記アクセスは、第2のパブリックアドレスとパブリックポートを有し、
    当該方法はさらに、
    前記第2のパブリックアドレスが前記ローカルアドレスとなるよう変更するステップと、
    必要に応じて、前記パブリックポートを前記ローカルホストに対応するローカルポートとなるよう変更するステップと、
    を有する、
    ことを特徴とする方法。
  16. クライアントにより要求される外部アドレスマッピングのためのシステムであって、
    メモリと、
    前記メモリに結合され、ローカルホストからパブリックネットワークへのアクセスに対するリクエストを受信し、前記パブリックネットワークへのアクセスに利用されるべきパブリックアドレスを決定し、前記ローカルホストに対応するローカルアドレスを前記パブリックアドレスにマッピングし、前記パブリックアドレスを前記ローカルホストに返すよう動作する少なくとも1つのプロセッサと、
    を有することを特徴とするシステム。
  17. クライアントにより要求される外部アドレスマッピングのための方法であって、
    アウトバウンドアクセスがローカルネットワーク又はパブリックネットワークへのものであるか判断するステップと、
    前記アウトバウンドアクセスがパブリックネットワークへのものであるとき、前記パブリックネットワークへのアクセスをリクエストし、前記リクエストに応答して、パブリック情報を受信し、前記アウトバウンドアクセスに対して生成された1以上のパケットの1以上のペイロード部分に前記パブリック情報を配置するステップと、
    を有することを特徴とする方法。
  18. 請求項17記載の方法であって、
    前記パブリック情報は、パブリックアドレスを有することを特徴とする方法。
  19. 請求項17記載の方法であって、
    前記パブリック情報は、パブリックポートを有することを特徴とする方法。
  20. 請求項17記載の方法であって、
    前記パブリックネットワークへのアクセスをリクエストするステップはさらに、ローカルポートをリクエストするステップを有し、
    前記パブリック情報をペイロードに配置するステップはさらに、前記リクエストされたローカルポートを前記ペイロードに配置するステップを有する、
    ことを特徴とする方法。
  21. 請求項17記載の方法であって、さらに、
    前記パブリックネットワークへのアウトバウンドアクセスを実行するステップを有し、
    前記アウトバウンドアクセスは、FTP(File Transfer Protocol)RFC(Request For Comment)959、H.323ITU(International Telecommunications Union)規格、SIP(Session Initiation Protocol)RFC2543、RSIP(Resource Reservation Protocol)RFC2205、IPsec−ESP(Internet Protocol Encapsulation Security Protocol)RFC2402、kerberos4、kerberos5,telnetRFC854、rloginRFC1282、のプロトコルの1以上を利用する、
    ことを特徴とする方法。
  22. 請求項17記載の方法であって、
    アプリケーションが、判断、リクエスト、受信及び配置するステップを実行し、ピア・ツー・ピアアプリケーション、アドレスマッピングの維持を要求するアプリケーション、リモートシェル(RSH)アプリケーション、Xウィンドウシステムアプリケーション、X−termアプリケーションの1以上であることを特徴とする方法。
JP2006530927A 2003-09-30 2004-09-27 クライアントにより要求される外部アドレスマッピング Pending JP2007507962A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US50728603P 2003-09-30 2003-09-30
PCT/IB2004/051877 WO2005032106A1 (en) 2003-09-30 2004-09-27 Client requested external address mapping

Publications (1)

Publication Number Publication Date
JP2007507962A true JP2007507962A (ja) 2007-03-29

Family

ID=34393229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006530927A Pending JP2007507962A (ja) 2003-09-30 2004-09-27 クライアントにより要求される外部アドレスマッピング

Country Status (6)

Country Link
US (1) US20070058642A1 (ja)
EP (1) EP1671469A1 (ja)
JP (1) JP2007507962A (ja)
KR (1) KR20060093704A (ja)
CN (1) CN1860768A (ja)
WO (1) WO2005032106A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7535878B2 (en) 2003-03-28 2009-05-19 Intel Corporation Method, apparatus and system for ensuring reliable access to a roaming mobile node
US7580396B2 (en) 2003-11-05 2009-08-25 Intel Corporation Method, apparatus and system for obtaining and retaining a mobile node home address
US20050111454A1 (en) * 2003-11-25 2005-05-26 Narjala Ranjit S. Method, apparatus and system for intelligently and dynamically routing mobile internet protocol packets
US20050111380A1 (en) * 2003-11-25 2005-05-26 Farid Adrangi Method, apparatus and system for mobile nodes to dynamically discover configuration information
US20050113109A1 (en) * 2003-11-25 2005-05-26 Farid Adrangi Method, apparatus and system for context-based registrations based on intelligent location detection
US20050136924A1 (en) * 2003-12-04 2005-06-23 Farid Adrangi Method, apparatus and system for enabling roaming mobile nodes to utilize private home IP addresses
US7782902B2 (en) * 2004-07-14 2010-08-24 Audiocodes, Inc. Apparatus and method for mapping overlapping internet protocol addresses in layer two tunneling protocols
US7483393B2 (en) * 2004-12-07 2009-01-27 Cisco Technology, Inc. Method and apparatus for discovering internet addresses
JP4898168B2 (ja) * 2005-03-18 2012-03-14 キヤノン株式会社 通信システム、通信装置、通信方法、及びプログラム
US8705550B2 (en) * 2005-08-08 2014-04-22 Qualcomm Incorporated Device interface architecture and protocol
US20080276302A1 (en) 2005-12-13 2008-11-06 Yoggie Security Systems Ltd. System and Method for Providing Data and Device Security Between External and Host Devices
US8869270B2 (en) 2008-03-26 2014-10-21 Cupp Computing As System and method for implementing content and network security inside a chip
US8381297B2 (en) 2005-12-13 2013-02-19 Yoggie Security Systems Ltd. System and method for providing network security to mobile devices
US8331263B2 (en) * 2006-01-23 2012-12-11 Microsoft Corporation Discovery of network nodes and routable addresses
US8365272B2 (en) 2007-05-30 2013-01-29 Yoggie Security Systems Ltd. System and method for providing network and computer firewall protection with dynamic address isolation to a device
WO2008153193A1 (ja) * 2007-06-15 2008-12-18 Nec Corporation アドレス変換装置及びアドレス変換方法
JP5207270B2 (ja) * 2007-07-12 2013-06-12 Necインフロンティア株式会社 複数のネットワーク間の通信システム
FR2925190B1 (fr) * 2007-12-18 2009-11-20 Alcatel Lucent Procede et dispositif de communication entre plusieurs interfaces de connexion
US8631488B2 (en) 2008-08-04 2014-01-14 Cupp Computing As Systems and methods for providing security services during power management mode
US20110209000A1 (en) * 2008-10-07 2011-08-25 Telefonaktiebolaget L M Ericsson (Publ) Systems and Methods for Allocating Network Resources From One Address Realm to Clients in a Different Address Realm
US8789202B2 (en) 2008-11-19 2014-07-22 Cupp Computing As Systems and methods for providing real time access monitoring of a removable media device
US8750112B2 (en) * 2009-03-16 2014-06-10 Echostar Technologies L.L.C. Method and node for employing network connections over a connectionless transport layer protocol
JP5730914B2 (ja) * 2010-03-05 2015-06-10 ブラス・モンキー・インコーポレイテッドBrass Monkey,Inc. Webブラウザにおける双方向通信および内容制御のシステムおよび方法
US8902743B2 (en) * 2010-06-28 2014-12-02 Microsoft Corporation Distributed and scalable network address translation
WO2014059037A2 (en) 2012-10-09 2014-04-17 Cupp Computing As Transaction security systems and methods
US11157976B2 (en) 2013-07-08 2021-10-26 Cupp Computing As Systems and methods for providing digital content marketplace security
WO2015123611A2 (en) 2014-02-13 2015-08-20 Cupp Computing As Systems and methods for providing network security using a secure digital device
US10594829B2 (en) * 2017-05-24 2020-03-17 At&T Intellectual Property I, L.P. Cloud workload proxy as link-local service configured to access a service proxy gateway via a link-local IP address to communicate with an external target service via a private network
CN110365560B (zh) * 2019-07-15 2021-09-24 上海市共进通信技术有限公司 家庭网关中实现服务端口自适应的控制方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6618757B1 (en) * 2000-05-17 2003-09-09 Nortel Networks Limited System and method for dynamic IP address management
US6944167B1 (en) * 2000-10-24 2005-09-13 Sprint Communications Company L.P. Method and apparatus for dynamic allocation of private address space based upon domain name service queries
US7139841B1 (en) * 2002-07-24 2006-11-21 Cisco Technology, Inc. Method and apparatus for handling embedded address in data sent through multiple network address translation (NAT) devices
EP1395015B1 (en) * 2002-08-30 2005-02-02 Errikos Pitsos Method, gateway and system for transmitting data between a device in a public network and a device in an internal network
KR100886550B1 (ko) * 2002-09-17 2009-03-02 삼성전자주식회사 아이피 어드레스 할당 장치 및 방법
JP2004186814A (ja) * 2002-11-29 2004-07-02 Fujitsu Ltd 共通鍵暗号化通信システム

Also Published As

Publication number Publication date
US20070058642A1 (en) 2007-03-15
CN1860768A (zh) 2006-11-08
EP1671469A1 (en) 2006-06-21
WO2005032106A1 (en) 2005-04-07
KR20060093704A (ko) 2006-08-25

Similar Documents

Publication Publication Date Title
JP2007507962A (ja) クライアントにより要求される外部アドレスマッピング
US7929538B2 (en) Information processing system, tunnel communication device, tunnel communication method, proxy response device, and proxy response method
EP1488610B1 (en) System for selecting a connectivity mechanism
US8451797B2 (en) Method and system for mobility across heterogeneous address spaces
US8078735B2 (en) Information processing system, tunnel communication device, tunnel communication method, and program
US9019965B2 (en) Methods and devices for routing data packets between IPv4 and IPv6 networks
US8457014B2 (en) Method for configuring control tunnel and direct tunnel in IPv4 network-based IPv6 service providing system
US7639686B2 (en) Access network clusterhead for providing local mobility management of a roaming IPv4 node
JP5475763B2 (ja) IPv4ドメインからのデータパケットをIPv6ドメインで受信する方法、ならびに関連するデバイスおよびアクセス機器
WO2010139194A1 (zh) 具有IPv4应用的主机进行通信的方法及设备
JP5520928B2 (ja) ネットワークにおけるデータパケットのルーティング方法および関連デバイス
EP2466806A1 (en) Method and system for implementing network intercommunication
US8194683B2 (en) Teredo connectivity between clients behind symmetric NATs
US9509659B2 (en) Connectivity platform
US20090268734A1 (en) Efficient address-space extension to pseudo multi-homed hosts
Komu et al. Basic host identity protocol (HIP) extensions for traversal of network address translators
WO2008069504A1 (en) Method for configuring control tunnel and direct tunnel in ipv4 network-based ipv6 service providing system
WO2004100499A1 (en) A communication network, a network element and communication protocol and method of address auto-configuration therefor
Komu et al. RFC 5770: Basic Host Identity Protocol (HIP) Extensions for Traversal of Network Address Translators