JP5006968B2 - 協調的nat振る舞いディスカバリ - Google Patents

協調的nat振る舞いディスカバリ Download PDF

Info

Publication number
JP5006968B2
JP5006968B2 JP2010520064A JP2010520064A JP5006968B2 JP 5006968 B2 JP5006968 B2 JP 5006968B2 JP 2010520064 A JP2010520064 A JP 2010520064A JP 2010520064 A JP2010520064 A JP 2010520064A JP 5006968 B2 JP5006968 B2 JP 5006968B2
Authority
JP
Japan
Prior art keywords
nat
information
router
node
nodes
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.)
Active
Application number
JP2010520064A
Other languages
English (en)
Other versions
JP2010535004A5 (ja
JP2010535004A (ja
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
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 Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2010535004A publication Critical patent/JP2010535004A/ja
Publication of JP2010535004A5 publication Critical patent/JP2010535004A5/ja
Application granted granted Critical
Publication of JP5006968B2 publication Critical patent/JP5006968B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • 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
    • 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/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

[優先権主張]
本願は、2007年7月27日に出願された同一出願人による米国特許出願第11/829,831号の優先権の利益を主張し、その開示内容全体を参照によりここに組み入れる。
[技術分野]
本発明はコンピュータネットワークコミュニケーションに関し、特に一つのアプリケーション内の異なる通信チャネル間でネットワークトラフィックの優先順位をつけることに関する。
コンピューティングシステムはネットワーク環境を介してますます相互接続されるようになっている。そのようなネットワーク環境は集中型もしくは分散型である。分散型コンピューティング環境は、互いに通信できるように相互接続された多数のコンピューティングシステムによって定義され、各コンピューティングシステムはクライアント機能とサーバ機能の両方を実行可能である。ピアツーピア(P2P)ネットワークは、P2Pネットワーク内の各コンピューティングシステムがネットワーク内の他のすべてのコンピューティングシステムのピアとして定義される分散型コンピューティング環境の一つの例を示す。議論のために、P2Pネットワーク内の各ピアコンピューティングシステムをノードと呼ぶ。また、P2Pネットワーク内の各ノードは、実質的に等価な機能をもつソフトウェアを実行するように構成される。したがって、各ノードは、P2Pネットワークを介したデータとサービスのプロバイダおよびユーザの両方として動作する。ピアツーピアネットワークは集中型の階層または組織をもたない分散型データネットワークである。ピアツーピアデータネットワークは、一般にはノードと呼ばれる多数のコンピュータまたは他の情報デバイス間で情報を通信する頑強で柔軟な手段を提供する。
P2Pネットワークは、比較的少ない数のサーバに計算能力と帯域幅を集中させるのではなく、ネットワークの参加者の計算能力と帯域幅に主として依存する。P2Pネットワークは、典型的には、概してアドホックなコネクションを介してノードを接続するために用いられる。そのようなネットワークは多くの目的のために有益である。たとえば、P2Pネットワークは、オーディオ、ビデオ、データあるいはデジタルフォーマットの任意のものを含むコンテンツファイルを共有するためによく用いられており、電話のトラフィックのようなリアルタイムデータもP2P技術を用いて送信することができる。
P2Pアプリケーションは、ピア間の直接通信を容易にするためにNATを使用することがしばしばある。ユーザは、NATを使うことで典型的には、複数のネットワーク接続されたコンピュータに、インターネットにアクセスするための単一の(グローバルまたはルーティング可能な)IPアドレスを共有させることができる。NATは直接通信に介入するため、多くの場合、P2PアプリケーションはNATに起因する接続性の問題を取り扱わなければならない。接続性の問題を克服するのに使われる技術は、しばしば「NAT越え(NAT通過)」と呼ばれる。ネットワークアドレス変換(NAT)(ネットワークマスカレード、ネイティブアドレス変換、IPマスカレードとしても知られる)は、一般的には、IP(Internet Protocol)パケットがルータまたはファイアウォールを通過するときに、IPパケットの送信元および/または宛先アドレスを書き直すことに関与する。NATを用いるたいていのシステムは、プライベートネットワーク上の複数のホストが、単一のパブリックIPアドレスを用いてインターネットのようなワイドエリアネットワークにアクセスできるようにするために、このようなアドレスの書き直しをする。
NATの利便性と低コストに加えて、完全な双方向接続性がないことは、ある状況では、限界というよりは一つの特徴とみなすことができる。NATが、ルータの他方の側にあるホストへの接続を開始するためにローカルネットワーク上のマシンに依存する限りは、外部ホストによって開始された悪意のある活動がローカルホストに到達することを防ぐことができる。このため、ワームを止めることでローカルシステムの信頼性を強化し、スキャンを阻止することでプライバシーを強化できる。多くのNAT可能なファイアウォールは、提供する保護のコアとしてこのことを用いている。多くのネットワーク管理者はNATを利便性のある技術であると考えており、NATを幅広く用いている。それにもかかわらず、NATはホスト間の接続に複雑さをもたらすことがあり、性能面に影響を及ぼしうる。
典型的な構成では、ローカルネットワークは、指定された「プライベート」IPアドレスのサブネットの一つを用い、そのネットワーク上のルータはそのアドレス空間においてプライベートアドレスをもつ。ルータは、単一の「パブリック」アドレス(「オーバーロード」NATとして知られる)をもってインターネットに接続するか、インターネットサービスプロバイダ(ISP)によって割り当てられた複数の「パブリック」アドレスでインターネットに接続する。トラフィックがローカルネットワークからインターネットに通過するとき、各パケットにおける送信元アドレスは、プライベートアドレスからパブリックアドレスにその場で変換される。ルータは、各アクティブコネクションについての基本データ(特に送信先アドレスとポート)をトラッキング(追跡)する。この内部「トラッキング」データはしばしば「NATバインディング」と呼ばれる。リプライがルータに返されるとき、外向き(往路)のフェーズの間に格納されたコネクショントラッキングデータを用いて、内部ネットワーク上のどこにリプライを転送すべきかを判定する。オーバーロードNATの場合はパケットを逆多重化するためにTCPまたはUDPのクライアントポート番号を用い、複数のパブリックアドレスが利用できる場合はIPアドレスとポート番号をパケット返送時に用いる。インターネット上のシステムにとって、ルータ自身はこのトラフィックに対して送信元/宛先に見える。
NAT可能なルータの背後にあるノードは、真のエンドツーエンド接続性をもたない(すなわち、内部のネットワークエレメントにパケットをさらに解釈させることを要求することなく、ネットワークのすべての他のノードにパケットを送信することはできない)し、ある種のインターネットプロトコルには参加することができない。外部ネットワークからTCPコネクションの開始を要求するサービス、またはUDPを用いたもののようにステートレスなプロトコルを要求するサービスは、NATルータがそのようなプロトコルをサポートする特別な努力をしないならば、ノードにとって混乱をもたらすものであり、入ってくるパケットは宛先に到達することができない。そのようなプロトコルは、参加するホスト間でNATの一つインスタンス(たとえば、「パッシブモード」FTP)を収容することができる。また、NATを使うと、たとえば、もしそのようなトンネリングプロトコルによってなされるインテグリティチェックと干渉するようなやり方でNATがヘッダの値を変更するならば、IPsecのようなトンネリングプロトコルを複雑にする。
ネットワークに接続することを望むIP可能なアプリケーションはいずれもNATに関連する問題に直面する可能性がある。専用のネットワークアプリケーションソフトウェア、特にピアツーピアアプリケーションを走らせるネットワークアプリケーションやデバイスはたいてい、他のアプリケーションと直接の通信を最適に確立するために、自分が属する物理的なネットワークトポロジを独立に判定するように構成されている。これは「NAT振る舞いディスカバリ」または「NAT振る舞い判定」として一般に知られている。このオペレーションは産業においては周知であるが、いろいろなアプローチが存在する。既存のアプローチは、NAT振る舞いを判定するためにしばしば著しく時間がかかる。複数のアプリケーションがNATディスカバリを行わなければならないならば、既存のNATディスカバリ技術は問題があろう。
このような文脈のもとで本発明の実施の形態が考えられた。
本発明のある態様は、ネットワーク上で1以上の他のノードと通信するように構成されたノードにおける、ネットワークアドレス変換(NAT)越えを支援する方法であって、a)当該ノードで1以上のNATの振る舞いに関する情報を判定し、1以上の他のノードが前記情報を取り出し可能な方法で前記情報を格納するステップ、または、b)1以上の他のノードによって取得された1以上のNATの振る舞いに関する情報を取り出し、前記1以上のNATを越えるためにその情報を用いるステップを含むか、あるいはc)前記ステップa)と前記ステップb)の両方を含む。
本発明の実施の形態は、添付の図面と併せて、以下の詳細な説明を考慮することによって容易に理解される。
本発明の実施の形態に係るNAT振る舞いディスカバリを実装するように構成されたネットワークのブロック図である。 NAT振る舞いを判定する従来の方法を説明するフロー図である。 本発明の実施の形態に係るNAT振る舞い判定方法を説明するフロー図である。 本発明の実施の形態に係るNAT振る舞い判定方法を説明するフロー図である。 本発明の実施の形態に係るNAT振る舞い判定方法を説明するフロー図である。 本発明の別の実施の形態に係るNATプロキシを用いたNAT振る舞いディスカバリを実装するように構成されたネットワークのブロック図である。 本発明の別の実施の形態に係るNATプロキシを用いたNAT振る舞いディスカバリの方法を説明するフロー図である。 複数のNATの背後にあるノードに関わる、本発明の実施の形態に係るNAT振る舞いディスカバリを説明するブロック図である。 無線ノードに関わる、本発明の実施の形態の形態に係るNAT振る舞いディスカバリを説明するブロック図である。 本発明の実施の形態に係るNAT振る舞いディスカバリを実装するように構成されたノードのブロック図である。
以下の詳細な説明には、説明のための多くの具体的な詳細事項が含まれるが、それらに対する多くの変更や修正も本発明の技術範囲に含まれることは、当業者であれば誰でも理解するであろう。したがって、以下に説明する本発明の例示的な実施の形態は、クレームされた発明の一般性をなんら損なうことなく、また限定も行うことなく記載されている。
[技術背景]
NATを取り扱うアプリケーションにおいて、NATが見せる振る舞いのタイプによってNATを特徴づけることがしばしば有益である。STUNプロトコルは、ネットワークアドレス変換を、フルコーンNAT、制限付きコーンNAT、ポート制限付きコーンNAT、およびシンメトリックNATとして特徴づけるために使われる。フルコーンNATは、1対1NATとしても知られ、同じ内部IPアドレスおよびポートからのすべてのリクエストを同じ外部IPアドレスおよびポートにマップするものである。外部のホストは、マップされた外部アドレスにパケットを送ることにより、内部のホストにパケットを送ることができる。制限付きコーンNATでは、同じ内部IPアドレスおよびポートからのすべてのリクエストは同じ外部IPアドレスおよびポートにマップされる。しかし、フルコーンNATとは違って、外部ホストが内部ホストにパケットを送ることができるのは、内部ホストがその外部ホストにパケットを以前送ったことがある場合に限られる。ポート制限付きコーンNATまたはシンメトリックNATは、制限付きコーンNATに似ているが、制限はポート番号を含む。具体的には、外部ホストが、内部ホストの特定のポートにパケットを送ることができるのは、内部ホストが以前その外部ホストに当該ポートからパケットを送ったことがある場合に限られる。シンメトリックNATでは、同じ内部IPアドレスおよびポートから特定の宛先IPアドレスおよびポートへのすべてのリクエストは、同じ外部IPアドレスおよびポートにマップされる。もし、同じ内部ホストが、同じ送信元アドレスおよびポートをもつが宛先が異なるパケットを送信するなら、異なるマッピングが使われる。パケットを受信する外部ホストだけがUDP(Universal Datagram Protocol)パケットを内部ホストに送り返すことができる。
上述の分類は多少役に立たなくなってきている。なぜなら、多くのNAT実装においてNATの振る舞いは様々なタイプの間を行ったり来たりするからである。たとえば、多くのNAT実装はポート保存の設計方針を取っている。ほとんどの通信に対して、そのようなNAT実装は、内部および外部ポート番号として同じ値を用いる。しかしながら、二つの内部ホストが同じポート番号を用いて同じ外部ホストと通信しようとするならば、第2ホストによって用いられる外部ポート番号はランダムに選択される。そのようなNATは、あるときは制限付きコーンNATとして見ることができるが、他のときはシンメトリックNATとして見ることができる。
NATディスカバリとNAT振る舞い判定はときどきNAT越えと呼ばれる。NAT越えの例は、たとえば米国特許出願公開公報20070076729号に記載されており、参照によりここに組み込む。NAT振る舞いディスカバリは時間のかかるオペレーションである。たとえば、NATディスカバリはSTUNと呼ばれるプロトコルを用いて実装される。STUNプロトコルの詳細は、たとえば、IETF RFC3489に記載されており、参照によりここに組み込む。STUNプロトコルでは、NAT振る舞いタイプを確立するために、複数のメッセージが中央のNATディスカバリサーバ(STUNサーバと呼ばれる)に送信され、受信される。NAT振る舞いのフィルタリングのゆえに、あるメッセージのトランザクションはタイムアウトするまで(典型的には各トランザクションに対して約10秒)待たされる。また、信頼できない通信チャネルが存在すると、メッセージは再送される可能性がある。このオペレーションのすべてまたは一部を回避することのできるアプリケーションはより速く開始する。
[協調的NAT振る舞いディスカバリ]
本発明の実施の形態では、ローカルネットワーク上のノードは、発見されたNAT振る舞いとローカルの物理ネットワークトポロジの他の側面についての情報を共有してもよい。さらに、これらのノードは、独立に発見したNAT振る舞いを受動的に共有するというよりは、さらにNAT振る舞いを判定するために能動的に協調してもよい。このことは、NATディスカバリは上述のように時間がかかるため、重要である。さらに、2以上のアプリケーションがいろいろな振る舞いをもつNATデバイスを使用しようとするとき、些細でない問題が起こる。これは、たとえば、静的なポートマッピングを特定のローカルポートに対して構成するときに起こる。
本発明の実施の形態によれば、複数のノードが同じNATの背後にある。ノードの一つが、従来のNATディスカバリおよび/またはNAT越えを通してNATの特性を発見する。このノードは同じNATの背後にある他のノードとNAT越え情報を共有する。これによって、NATの背後にある他のノードがNATディスカバリを実行する時間をかけるのを避けることができる。NATの背後にあるすべてのノードが通常のようにNATディスカバリを試みる前に、NAT情報は、それらのノードがアクセスできる中央の場所に格納される。
一例として、図1は、本発明の実施の形態に係る協調的NAT振る舞いディスカバリを説明するネットワークトポロジを示す。一般に、LAN101は2以上のノードを含む。たとえば、ノードA102とノードB104は、ルータ108に接続される。ルータ108は、インターネットのようなWAN106に接続する。ルータ108にはネットワークアドレス変換(NAT)が関連づけられている。ノード102、104に対して多くの構成が可能であり、それらの構成は本発明の実施の形態の範囲に含まれる。一般に、ノードは、インターネットプロトコル(IP)を用いてネットワーク上での通信を実装するように構成される。ノードA102およびノードB104は、IP可能なデバイスであるか、異なるデバイスまたは同じデバイス上で動作するIP可能なアプリケーションである。ここで、「IP可能」という用語は、デバイスが他のホストまたはデバイスと通信するためにIPを利用することを意味する。一例として、限定するわけではないが、IP可能なデバイスまたはアプリケーションは、IPを利用して他のホストまたはデバイスと通信するためのインターネットプロトコルスタックまたは類似のネットワークプロトコルスタックを含む。図1では例示のために二つのノードを示したが、当業者であれば、本発明の実施の形態を2以上のノードで実装することもできることが理解される。
本発明の実施の形態は任意の数のノードを組み込んでもよいことに留意する。一例として、ノードA102とノードB104は、ネットワーク可能なデバイスまたはそのようなデバイス上で動作するネットワーク可能なアプリケーションである。そのようなノードは、コンピュータ、ハンドヘルドインターネットブラウザおよび/または電子メールデバイス、VoIP電話機、ビデオゲーム機、ハンドヘルドビデオゲームデバイスなどを含むが、これらに限定しない。メッセージはルータ108を介してあるノードから別のノードに伝達される。NATはルータ108上にハードウェア、ソフトウェア、ファームウェアまたはそれらの組み合わせで実装される。
ノードA102、ノードB104およびルータ108は、ネットワークプロトコルにしたがって互いに通信するように構成される。一例として、ノードA102とノードB104は、(ソフトウェア、ハードウェア、またはその両方の組み合わせのいずれによるものであっても)5つのレイヤ、すなわち、アプリケーションレイヤAPP、トランスポートレイヤTRANS、ネットワークレイヤNET(しばしばIPレイヤとして参照される)、データリンクレイヤDLL、および物理レイヤPHYSをもつネットワークプロトコルスタック103をもって構成される。これらのレイヤは当業者には周知である。ノード102、104は典型的には5レイヤすべてを実装する。ルータ108は、ネットワークレイヤNET、データリンクレイヤDLLおよび物理レイヤPHYSだけを実装するプロトコルスタックを含む。ある実施の形態では、1以上のルータが5つのプロトコルスタックレイヤすべてを含んでもよい。そのようなルータの一例は、アプリケーションレイヤのデータを検査する「アプリケーションレイヤゲートウエイ」をサポートするファイアウォールである。もっとも、ルータ108のプロトコルスタック105の例示した構成は、比較的ありふれたものである。
アプリケーションレイヤAPPは、アプリケーションがネットワークサービスにアクセスするレベルを表す。このレイヤは、ファイル転送、データベースアクセスおよび電子メール用のソフトウェアのようなアプリケーションを直接サポートするサービスを表す。アプリケーションレイヤソフトウェアの例として、HL7、Modbus、SIP(Session Initiation Protocol)、SSI(Simple Sensor Interface Protocol)がある。TCP/IPの場合で言えば、アプリケーションレイヤAPPは、HTTP(Hypertext Transfer Protocol)、SIP(Session Initiation Protocol)、SMTP(Simple Mail Transfer Protocol)、SMPP(Short Message Peer-to-Peer Protocol)、SNMP(Simple Network Management Protocol)、FTP(File Transfer Protocol)、TELNET(Teletype Network)、NFS(Network File System)、NTP(Network Time Protocol)、RTP(Real-time Transport Protocol)、DHCP(Dynamic Host Configuration Protocol)、およびDNS(Domain Name System)のようなソフトウェアプロトコルで実装される。アプリケーションレイヤAPPは、たとえばOSI(Open Systems Interface)プロトコルでは、さらにプレゼンテーションレイヤとセッションレイヤに分割されることがある。プレゼンテーションレイヤは、アプリケーションレイヤからのデータを中間フォーマットに変換する。プレゼンテーションレイヤはまた、データ暗号化のようなサービスを提供することによってセキュリティの問題を管理し、ネットワーク上で転送する必要のあるビット数を減らすためにデータを圧縮してもよい。セッションレイヤによって、異なるコンピュータ上の二つのアプリケーションがセッションを確立し、使用し、終了することができるようになる。セッションレイヤは、あるセッションにおいて二つのコンピュータ間の対話制御を確立し、どちらの側が送信するか、さらに、いつ、どれくらいの期間送信するかを規制する。
トランスポートレイヤTRASは、アプリケーションレイヤAPPからのリクエストをサービスし、ネットワークレイヤNETにサービスリクエストを発行する。あるプロトコルでは、トランスポートレイヤTRANSはまた、誤り認識および回復を取り扱う。送信ホストに対して、トランスポートレイヤはまた、送信のために小さなパケットにする必要があるときは、ロングメッセージを小分けにする。受信ホストに対して、トランスポートレイヤはパケットを元のメッセージに再構築する。受信ホストに対するトランスポートレイヤはまた、受信アクノレッジを送信する。特定のトランスポートレイヤプロトコルには、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)およびSCTP(Stream Control Transmission Protocol)が含まれ、これらのすべておよびその均等物は当業者に周知である。トランスポートレイヤTRANSは、典型的にはパケットフラグメンテーションをサポートするレイヤである。フラグメンテーションは、メッセージの送信元であるホストのトランスポートレイヤで生じるか、または、ホストとメッセージの意図する受信者間の経路上のいずれかのルータのトランスポートレイヤで生じる。トランスポートレイヤ実装がすべて、エラー認識および回復を扱うとは限られない。たとえば、TCPはエラー認識および回復を扱うが、UDPは扱わない。
ネットワークレイヤNETはメッセージを送信し、論理アドレスおよび名前を物理アドレスに変換する。ネットワークレイヤNETはまた、送信元から宛先コンピュータへの経路を決定する。ネットワークレイヤはまた、スイッチング、ルーティング、およびデータパケットの輻輳制御のようなトラフィックの問題を管理する。特定のネットワークレイヤプロトコルの例には、IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、IPsec(IP Security)、ARP(Address Resolution Protocol)、RIP(Routing Information Protocol)、およびOSPF(Open Shortest Path First)が含まれるが、これらに限定されない。これらのすべておよび均等物は当業者に周知である。
データリンクレイヤDLLは、物理レイヤPHYSからの生(raw)ビットをフレーム(データに対する論理的、構造化されたパケット)にパッケージ化する。データリンクレイヤはまた、あるコンピュータから別のコンピュータへ、エラーなしでフレームを転送する責任がある。フレームを送信した後、データリンクレイヤDLLは、受信コンピュータからのアクノレッジを待つ。特定のデータリンクレイヤには、PPP(Point-to-Point Protocol)、SLIP(Serial Line Internet Protocol)およびMAC(Media Access Control)が含まれるが、これらに限定されない。これらのすべておよび均等物は当業者に周知である。データリンクレイヤDLLは典型的にはMTUサイズを制限する。
物理レイヤPHYSはあるコンピュータから別のコンピュータへビットを送信し、物理メディア上のビットストリームの送信を規制する。このレイヤは、ケーブルがどのようにネットワークアダプタに取り付けられ、ケーブル上でデータを送信するためにどのような伝送技術が使われるかを決める。特定の物理レイヤの例には、RS−232、V.35、V.34、I.430、I.431、T1、E1、10BASE−T、100BASE−TX、POTS、SONET、DSL、802.11a、802.11b、802.11g、802.11nが含まれるが、これらに限定されない。これらのすべておよび均等物は当業者に周知である。
ノードA102を起点とするメッセージがアプリケーションレイヤAPPで始まり、物理レイヤPHYSまでプロトコルスタックを下って進んでいく。メッセージが第2ホスト104に到着すると、そのメッセージは物理レイヤPHYSで受信され、アプリケーションレイヤAPPまでスタックを上って進んでいく。二つのノード102、104間の経路において、メッセージはルータ108の物理レイヤPHYSで受信され、トランスポートレイヤTRANSまで上っていき、そしてルータ108へ伝送するために物理レイヤPHYSまでスタックを下っていく。このプロセスは、ノードA102とノードB104間の経路に沿って、任意のさらなるルータ(図示しない)に対して繰り返される。ピアツーピアの状況では、いったんノードA102とノードB104間でコネクションが確立されると、これらのノードはピアツーピアコネクションによって、たとえば、アプリケーションレイヤAPPまたはトランスポートレイヤTRANSで直接通信することができる。
上述のように、ルータ108はネットワークアドレス変換器を含む。しかしこれは、本発明のすべての実施の形態で必須ではない。もしルータ108がNATを含むなら、ノードA102およびノードB104は、互いにピアツーピアコネクションを確立したり、LAN101に接続された他のノードやWAN106に接続された他のノードとピアツーピアコネクションを確立するために、NATを越えなければならない。NAT越え(NAT通過)を容易にするために、ノードA102およびノードB104はNATに関する情報110を取得して共有する。この情報110を取得し共有する方法には多数の方法がある。一例として、一般性を損なうことなく、ノードA102とノードB104は、NAT越えにおいてそれぞれの試行を通して情報110を取得してもよい。NAT越えにおけるそのような試行には、STUNサーバ112の利用が含まれる。あるいは別の方法として、ノードA102およびノードB104はLAN101に接続された他のノードから情報110を取得してもよい。
情報110は、多数の異なる方法のいずれかにより共有してもよい。たとえば、ノードA102およびノードB104は、キャッシュまたは他のメモリロケーションにおいてローカルにこの情報を格納してもよい。ノードA102およびノードB104が別々のデバイスであるか、別々のデバイス上のアプリケーションである場合、ローカルに情報を格納することには、各対応デバイスにおける特定のメモリロケーションに情報を格納することが含まれる。ノードAおよびノードBが同じデバイスの異なるアプリケーションである場合、ローカルに情報を格納することには、当該デバイスに関連づけられた特定のメモリロケーションに情報を格納することが含まれる。情報110がローカルに格納されるならば、ノードAとノードBは、情報110を取得するためにNAT越えでのそれぞれの試行に先だって、互いに直接問い合わせをしてもよい。別の実施の形態では、ノードA102およびノードB104の両方に共通にアクセス可能であるメモリロケーションに情報110を格納してもよい。そのような共通にアクセス可能なメモリロケーションは、LAN101またはWAN106に接続された別のノードまたはデバイスであってもよい。たとえば、共通にアクセス可能なメモリロケーションは、WAN106に接続されたデータベースサーバ114である。ある実施の形態では、情報110は、ルータ108によって取得され、ルータ108に格納される。これには、ルータ108に特別な実装が必要である。
一例として、情報110はルータに対するユニークなアドレス、たとえば、MAC(Media Access Control)アドレスや内部IPアドレスのようなグローバルにユニークなアドレスを含む。ここで、ハードウェアアドレスまたはアダプタアドレスとしても知られるMACアドレスは、ほとんどのネットワークアダプタに付けられた準ユニークな識別子である。MACアドレスは典型的には特定のネットワークアダプタに対する名前のような役割をする数字である。したがって、たとえば、二つの異なるコンピュータにおけるネットワークカード(またはビルトインネットワークアダプタ)は、異なる名前、すなわちMACアドレスをもつ。同様に、同じコンピュータにおけるイーサネット(商標または登録商標)アダプタとワイヤレスアダプタは異なるMACアドレスをもち、ルータの複数のネットワークカードも異なるMACアドレスをもつ。MACアドレスは、グローバルにユニークに設計されたMAC−48、EUI−48、EUI−64のような好適なプロトコルにしたがって割り当てられる。
さらに、情報110は、もしあるとしたらルータ108によって提示されるNAT振る舞いのタイプに関する情報、および/または、ルータ上の任意のポートがLAN101に接続されたデバイスによって使用されているかどうかに関する情報を含んでもよい。
共有される他のNAT振る舞い情報の例として、これに限定しないが、(i)NAT経由のアクティブセッションの数や(ii)NAT上の集約されたトラフィック負荷がある。さらに、情報110には、シンメトリックNATに対するポート予測のアトミック性を実現するフラグの値が含まれてもよい。このフラグは、ポート予測に対する特定のアトミック性がロックされているかアンロックされているかを示す。アトミックなロックは、シンメトリックNAT越えにおけるポート予測のためにときどき使われる。もし同じNAT下で他のノードが予測フェーズの期間に別のNATバインディングを生成するならば、ポート予測は失敗することがあるため、このロッキングが有益である。
本発明の実施の形態によれば、ノードA102およびノードB104は、任意の従来技術によってNATディスカバリを実装し、これはハードウェア、ソフトウェア、ファームウェア、あるいはこれらの2以上の組み合わせによって実装される。一例として、図2Aは、NATディスカバリの一つのタイプを図示する。図2Aに示すように、ノードA102は、開始202において、STUNサーバ112にNAT情報を求めるリクエスト204を送信し、STUNサーバ112はレスポンス206を返す。レスポンス206は、ノードA102が背後にいるNATのタイプに関する情報を含む。その後、ノードB104は、開始208において、同様にリクエスト210を送信し、レスポンス212を受信する。特にノードA102およびノードB104の両方が同じNATの背後にいるなら、レスポンス206、212はそれぞれ、NAT振る舞いに関する同じまたは類似の情報を含むことに留意する。しかし、ルータ108におけるNATの性質に依存して、NAT振る舞いは時間とともに変化することがある。本発明の実施の形態によれば、NAT振る舞い情報を共有することで、NAT越えを容易にすることができる。
一例として、図2Bに示すように、ノードA102およびノードB104はNAT情報110を次のように共有する。図2Aに示すように、ノードA102は、開始202においてSTUNサーバ112にNAT情報を求めるリクエスト204を送信し、STUNサーバ112はレスポンス206を返信する。レスポンス206は、ノードA102が背後にあるNATのタイプに関する情報110を含む。情報110は、ノードA102においてローカルに格納される。その後、ノードB104は、開始208において、リクエスト209をルータ108の背後にある1以上の他のノードに送信する。たとえば、図2Bに示すように、ノードB104はノードA102にリクエスト209を送信する。ノードB104は、どのノードがルータのNAT振る舞いに関する情報をもっているかを知らないため、ルータ108の背後にある他のすべてのノードにリクエスト209をブロードキャストすることに留意する。リクエスト209を受信するノードのいずれかがNAT振る舞い情報をもって返答する。この例では、ノードA102が以前に情報110を取得していた。したがって、ノードA102が、情報110またはその情報の有益な部分集合が入ったレスポンス211をノードB104に送信する。他のノードのいずれもがリクエスト209に応答しない場合、ノードBは、たとえば、STUNサーバ212にリクエスト210を送信し、レスポンス212を受信することによって、従来のNATディスカバリに後退する。レスポンスから取得した情報はローカルに格納され、リクエストの際、他のノードに利用可能になる。
2以上のノードがルータ108の振る舞いを決定するために協調してもよいことにさらに留意する。たとえば、図2Cに示すように、ノードA102は、開始202において、STUNサーバ112にNAT情報を求めるリクエスト204を送信する。STUNサーバ112は、NAT振る舞い情報110を含むレスポンス206を返信し、その情報はノードA102にローカルに格納される。NAT振る舞い情報110は不完全であるかもしれない。たとえば、それは、NAT振る舞いを1以上のありうるタイプに狭めるかもしれない。その後、ノードB104は、開始208において、ルータ108の背後にあるノードA102を含む1以上の他のノードにリクエスト209を送信する。リクエスト209への応答において、ノードA102は部分的なレスポンス213を送信する。部分的なレスポンス213は、ノードA102が取得できた情報を含む。部分的なレスポンス213はまた、ルータ108のNAT振る舞いを特徴づけるためにどのような付加的な情報が必要であるかを示す。ノードB104はその後、STUNサーバ112にリクエスト210を送信し、レスポンス212を受信する。レスポンス212は、ルータ108のNAT振る舞いを特徴づけるのに必要な欠落した情報を提供する。ノードB104はその後、たとえば、更新レスポンス214をルータ108の背後にあるノードA102および/または他のノードに送信することにより、この情報を共有する。
図2Cに図示する例では、部分的なレスポンスと更新レスポンスの処理は、NAT振る舞いの詳細が完全に決定されるまで続く。これは、ルータ108が非決定的振る舞いをもって複数のリクエストに対して外部バインディングを割り当てる場合に特に有益である。
NAT振る舞い判定を改善する上で情報110の共有が与える影響は小さくない。典型的には、STUNサーバ112へのリクエストとSTUNサーバ112からのレスポンスは、LAN101およびWAN106の両方に関連するレイテンシの影響を受ける。LAN101上の一つのノードから別のノードへのリクエストは、典型的にはLAN101に関連づけられたレイテンシだけの影響を受ける。WANレイテンシは一般的にLANレイテンシよりもずっと大きい。たとえば、理論的にWANレイテンシが約100ミリ秒であり、LANレイテンシが約1ミリ秒より小さいとき、NAT振る舞い情報110をLAN101上のノード間で共有することにより、100倍以上、NAT振る舞い判定を改善することができる。
それに加えて、LAN101上のノードは、それぞれのノードが自分自身で独立にNAT振る舞いタイプを決定した後、協調的にNAT情報を共有してもよい。この場合、判定された振る舞いについてノード間でうわさすることにより、ルータ108の振る舞いを事実上、ポート制限からシンメトリックに変えてしまう、悪いローカルポート保存の振る舞いをもつルータを特定することができる。情報110の共有は、ルータ108の振る舞いの変化を診断するために使われる。情報110の共有は、悪いローカルポート保存に関連するNATの問題を先験的に回避するために使われる。たとえば、ルータ108の背後にある複数のノードは、ルータ108上のいずれのローカルポートを使いたいかをお互いにブロードキャストすることができる。所与のノード(たとえばノードA102)は別のノード(たとえばノードB104)が既に選択されたポートを用いているならば、その選択されたポートを変更することができる。さらに、ノードは、LAN101のローカルなネットワーク環境の他の予期しない振る舞いの変化についてうわさしてもよい。たとえば、住宅用NATは典型的には、ISP(コムキャストのようなインターネットサービスプロバイダ)がDHCPと呼ばれるプロトコルを用いて動的に割り当てた一つのグローバルIPアドレスをもつ。NATに対して割り当てられた動的IPは期限切れになると、ISPは別のIPアドレスを割り当てることができる。これが起きた場合、ローカルノードがそのようなイベントを検出するのに時間がかかる。あるノードがそのイベントを検出すると、そのノードはブロードキャストを用いて他のノードにそのイベントを通知する。
図2B〜図2Cに図示された実施の形態では、NAT関連情報110はルータ108の背後にある各ノードにローカルに格納された。他の実施の形態では、この情報110を、ルータ108の背後にあるすべてのノードがアクセス可能なある共通の場所に格納してもよい。上述のように、そのような共通の場所は、共有のデータベースサーバ114またはWAN106に接続された類似のノードである。共有のデータベースサーバ114は、HTTP(hypertext transfer protocol)のような好適なプロトコルを用いてアクセスできる。
別の方法として、共通の場所はLAN101の一部であるノードであってもよい。たとえば、図2Dに示すように、情報110はルータ108に格納されてもよい。この例では、ノード、たとえばノードA102は、たとえば開始202において、ルータ108にNAT情報リクエスト205を送信する。ルータ108は、たとえば適当なプログラミングによって、STUNサーバ112にリクエスト204を送信し、その返信としてレスポンス206を受信するように構成される。その後、ルータ108は、ノードA102にレスポンス206にもとづいたリプライ215を転送する。ルータ108はオプションとして、レスポンス206からNAT振る舞い情報110を決定し、その情報を、たとえばルータ108によってローカルにアクセス可能なメモリに格納してもよい。リプライ215は、レスポンス206から取得されたNAT振る舞い情報110を含む。あるいは、リプライ215はノードA102にレスポンス206を転送することを含んでもよい。それ以降、異なるノードがNAT振る舞い情報をリクエストしたとき、ルータ108は、格納された情報110を用いて直接応答する。たとえば、開始208において、ノードB104は、ルータ108にNAT振る舞い情報リクエスト216を送信する。応答の際、ルータ108は、格納されたNAT振る舞い情報110にもとづいてリプライ218を送信する。
図2Dに図示した例では、ルータ108のアドレスは、ルータの背後にあるすべてのノードに周知であると仮定した。そのような場合、リクエスト205、216およびリプライ215、218はブロードキャストする必要はない。さらに、図2Dに図示した例では、各ノードとルータ108間でただ一つの往復メッセージが送信される。それとは対照的に、従来の状況では、各ノードがNATのSTUNサーバと話をするが、それにはしばしば複数の往復メッセージが要求される。それに加えて、ルータ108はオプションとして、NATのSTUNサーバ112とともにレイジー(lazy)なやり方、すなわち、クライアントからルータに対してリクエストがなされたときにだけ実行するというやり方で振る舞い判定を実行してもよい。もしルータのNAT振る舞いが決定論的であるなら、これはルータ108の初期設定時にも起こる。NATデバイスが完全に決定論的な振る舞いをもつ場合は、ルータ振る舞いは周知であるからNATのSTUNサーバ112との通信を省略し、ルータ108の背後にあるノードに直接通信してもよい。
上述のアプローチは、UPnP(Universal Plug and Play)と表面的に類似するように見えるがそれだけではない。本発明の実施の形態は、UPnPとは多くの点で異なる。もっとも重要なことは、UPnPデバイスがLANに追加されると、UPnPデバイスはLAN上のコントロールポイントに自分のサービスを通知する。それとは対照的に、本発明の実施の形態では、LAN上のノードがコントロールポイント(ルータ上のNAT)についての情報を見つけ、その情報を他のデバイスが利用できるようにする。
さらに、NAT振る舞いの真の標準化が欠けているがために、既存のUPnPメカニズムは完全には実行可能なものにはならない。特に、UPnPは、主に住宅用ルータだけがサポートしているが、他のより大きな規模のルータはサポートしていない。たとえば、客室からのインターネットアクセスサービスを提供するホテルのルータは典型的にはUPnPをサポートしない。UPnPが動作しない別の例は、ISPが、ある種のサービス、たとえばホットスポットサービスを提供するルータに対してプライベートアドレスを提供する場合である。そのような場合、ノードが取得する外部アドレスは、もっとも近いUPnP NATのプライベートアドレスである。ノードは、インターネット上をルーティング可能な現実のグローバルアドレスを取得するためにSTUNサーバを依然として使う必要がある。さらに、多くの既存ルータは、UPnPをサポートしないか、またはUPnPをサポートする多くのルータに対してUPnPは作動していない。
本発明の別の実施の形態では、ローカルネットワーク101上のデバイスで動作する単一のアプリケーションが、他のアプリケーションに代わって、これらのオペレーションのすべてではないが、多くを実行することができる。このアプリケーションを実行するデバイスは、NATプロキシと呼ばれる。もしNATプロキシが一つのデバイス上で動作しているだけであるなら、異なる内部IPアドレスへのバインディングに関連したNATの問題を究明することはできないであろう。このことは、二つのデバイス上でこのアプリケーションの少なくとも二つのインスタンスを実行することにより克服することができる。もっとも、これをすることで、利便性の多くを失うことになる。
NATプロキシを利用する実施の形態は、図3Aと図3Bから理解できる。図3Aに示すように、ローカルネットワーク101は、ノードA102に関連づけられた第1NATプロキシ116と、ノードB104に関連づけられた第2NATプロキシ118を含む。NATプロキシ116、118はルータ108に接続されている。NATプロキシは、NAT振る舞い情報110を取得するために、ときどきSTUNサーバ112に問い合わせし、ノードA102、ノードB104、およびルータ108の背後にある他の任意のノードとその情報を共有する。一例として、図3Bに示すように、第1NATプロキシ116は、STUNサーバ112にリクエスト204を送信し、返信としてレスポンス206を受信する。同様に、第2NATプロキシ118は、STUNサーバ112にリクエスト224を送信し、返信としてレスポンス226を受信する。NATプロキシ116、118は、レスポンス206、226からNAT振る舞い情報110を全体的にあるいは部分的に取り出す。情報110が取り出された後、ルータ108に接続されたノードの一つが、NATプロキシ116、118にNAT振る舞い情報110を問い合わせする。たとえば、ノードA102はNATプロキシ116、118にリクエスト228をブロードキャストし、NATプロキシ116、118が返信としてレスポンス230、232を送信する。
NATプロキシアプリケーションは、リクエストしているアプリケーションと同じ物理デバイスノード上にともに位置してもよい。ノードは、任意のNATプロキシから一つのレスポンスを受信するだけでよい。NATプロキシを階層的な方法で実行することができる。階層的な方法では、ただ一つのプロキシがローカルネットワークにおいてレスポンスを送信する責任をもつ。これには、そうでなければ冗長であるはずのネットワーク構成内で単一障害ポイントを作ってしまうという不運な副作用がある。さらに、図3Aおよび図3Bに関して述べたNATプロキシ技術を図2Cに関して上述した部分的レスポンス/更新技術と組み合わせて、プロキシノード間でNAT振る舞いタイプの協調的でグローバルな理解に達するようにしてもよい。
これまでの議論においては、各ノードが単一のNATの背後にあることを仮定した。ネットワーク構成によっては、ノードが2以上のNATの背後に位置することもありうる。本発明の実施の形態を修正して、所与のノードが2以上のNATの背後にあるような状況に対処できるようにしてもよい。たとえば、図4に示すように、ノードA102とノードB104の両方がNAT1の背後にある。しかし、ノードB102はまた、NAT2〜NAT Nの背後にもある。この例では、NAT1は、ローカルエリアネットワーク101とワイドエリアネットワーク106間のゲートウエイルータの一部である。NAT1の存在と振る舞いについての情報は、WAN106と通信するために、ノードA102とノードB104の両方にとって有益である。さらに、NAT1とNAT2〜NAT Nについての情報は、ノードA102とノードB104が互いに通信する状況に対して有益である。
一例として、ノード102、104、120は、自分がいくつのNATの背後にあるかを判定する。データグラムのヘッダ内のあるフィールドを使用してこの判定を行う。このフィールドは、データグラムの宛先に行く途中で遭遇する各NATデバイスにおいて減らされる値をもつ。一例として、そのようなフィールドはTTL(time to live)フィールドである。IPv4のコンテキストでは、TTLはIP(Internet Protocol)ヘッダの8ビットフィールドのことである。これは20ある内の9番目のオクテットである。TTL値は、IPデータグラムがインターネットシステム内に存在することができる時間の上限と考えることができる。TTLフィールドはデータグラムの送信者によって設定され、宛先への経路上の各ホストによって減らされる。データグラムが宛先に到着する前にTTLフィールドがゼロに達するなら、データグラムは破棄され、ICMP(Internet Control Message Protocol)エラーデータグラム(タイプ11−時間超過)が送信者に返送される。TTLフィールドは従来、配達されないデータグラムがインターネットシステム上で循環し続け、そのような「不死」のデータグラムが多数あることでシステムが最終的には圧倒されてしまう状況を避けるために使われる。データグラムを通過させる各ホストは、少なくとも1単位だけTTLを減らさなければならないが、TTLは、理論上、秒単位で測定してもよい。実際は、TTLフィールドは各ホップで1だけ減らされる。この実施の仕方を反映して、このフィールドはIPv6ではホップリミットと名付けられている。ICMPエラーデータグラムは、データグラムがタイミングアウトの前に到着した最後のホストを特定する。tracerouteと呼ばれるツールは、ICMPエラーメッセージを用いて、遠隔にある終端ノードまでの経路を検出する。TTLあるいはホップリミットフィールドは、tracerouteコマンドで使われたのと類似したやり方でノードA102とノードB104間にあるNATのアドレスを判定するために使われる。
本発明の実施の形態では、ノードA102とノードB104と他のノード120は、NAT1とNAT2〜Nの振る舞いに関する情報110を共有する。ノード102、104、120は、たとえば、図2A〜2Dに関して上述したようなNAT情報110を取得し、LAN101上のノードすべてがアクセス可能な方法で情報を格納する。一例として、情報110は、共通のデータベースサーバまたはSTUNサーバのようなサーバ112にキャッシュされる。一例として、サーバ112は、LAN101とWAN106の間にあってもよい。NAT1とNAT2〜Nをホストするデバイスが自分自身についての情報を集め、その情報をノード102、104、120と共有してもよいことにさらに留意する。
本発明の実施の形態は、無線ノードでNAT振る舞いディスカバリを実装するために用いることができる。たとえば、図5に示すように、無線ネットワーク500は、第1、第2および第3無線アクセスポイントWAP1、WAP2およびWAP3を含み、これらは地理的に分散した場所にある。無線アクセスポイントWAP1、WAP2およびWAP3は、たとえば、それぞれネットワークアドレス変換器NAT1、NAT2およびNAT3を含む無線ルータによって実装される。無線アクセスポイントWAP1、WAP2およびWAP3は、対応するサービスエリア502、504、505によって特徴づけられる。無線ノード507は、自分がこれらのサービスエリアの一つの中にいるならば、ネットワーク501にアクセスできる。一例として、無線ノード507は、無線ネットワーク通信用に構成された任意のデバイスであってもよい。そのようなデバイスの例には、これに限らないが、ラップトップコンピュータ、ポータブルビデオゲームデバイス、ポータブル音楽ダウンロードデバイス、ポータブルVoIP(Voice over Internet protocol)デバイス、およびブラックベリー(登録商標)のようなポータブルインターネットブラウザまたは電子メールデバイスが含まれる。ブラックベリー(登録商標)は、カナダ国オンタリオ州ワーテルローのリサーチ・イン・モーション社の登録商標である。それに加えて、そのようなデバイスには、VoIP、インターネット、電子メールおよび音楽ダウンロードのような2以上の機能を組み込んだ無線デバイスが含まれる。そのようなデバイスの例は、カリフォルニア州クパチーノのアップル社のiPhone(商標または登録商標)である。
無線アクセスポイントWAP1、WAP2、WAP3は、ルータ508を介してワイドエリアネットワーク506に接続される。さらに、ルータ508と無線アクセスポイントWAP1、WAP2、WAP3のそれぞれとの間に他のノードA、B、Cが接続されている。ネットワークアドレス変換器NAT1、NAT2、NAT3に関する情報510は、ルータ508に接続された中央でアクセス可能なキャッシュ512に格納される。情報510を取得し、キャッシュする多数の異なる方法がある。たとえば、無線ノード507は、図2Bまたは図2Cに示すように、従来のNAT越えを通して情報510の一部を収集し、それを他のノードと共有する。また、ルータ508または無線アクセスポイントWAP1、WAP2、WAP3は、図2Dに関して上述したように情報510を取得する。さらに、他のノードA、B、Cは、図3Aおよび図3Bに関して上述したようにプロキシノードとして動作することで情報のすべてまたは一部を取得する。さらに、情報が単一の場所512に格納されているものとして図示されているが、別の方法として、情報510をネットワーク501に接続されたノード間に分散させてもよい。ある実施の形態では、無線ネットワークアドレス変換器NAT1、NAT2、NAT3に関する情報を対応する無線アクセスポイントWAP1、WAP2、WAP3にローカルに格納してもよい。情報510は、各NATまたは無線アクセスポイントに対する地理的場所を含むことに留意する。情報510はまた、NATまたは無線アクセスポイントに関する他の一般情報を含む。そのような情報には、これに限らないが、地方のレストラン、天気、ネットワーク501に接続された他のデバイスのアイデンティティ、特定の無線アクセスポイントを訪れた回数、およびその他の一般情報が含まれる。無線デバイスは、無線アクセスポイントWAP1、WAP2、WAP3のいずれかを通してネットワーク510にアクセスする際、この情報にアクセスしてもよい。
情報510の共有を通して、無線ネットワーク501上のサービス品質が強化される。たとえば、無線ノード507はあるサービスエリアから別のサービスエリアに移動する。たとえば、第1無線アクセスポイントWAP1に対するサービスエリア502から、第2無線アクセスポイントWAP2に対するサービスエリア504に移動する。無線デバイス507が第2無線アクセスポイントWAP2のような近傍の無線アクセスポイントに対するNAT情報を要求することができるように情報510は構成される。ある実施の形態では、たとえば、GPSデータまたは無線信号強度から、無線デバイスの移動の一般的な方向を判定し、この方向を用いて、デバイスがどの無線アクセスポイントに遭遇する可能性が高いかを推定するようにデバイス507はプログラムされる。
本発明の実施の形態は、NATが移動する状況にも適用できる。たとえば、無線アクセスポイントWAP1、WAP3、WAP3を車に搭載してもよい。無線ノード507は、NATが移動性のものであるかどうかを、たとえば地理的情報から判定してもよい。たとえば、無線ノード507は、GPSS(global positioning satellite system)受信機のような地理位置測定システムを含んでもよい。そのようなシステムを用いて、ノード507は、自分がNATに遭遇したとき、自分の位置を特定してもよい。ノードが十分遠くに離れた二つの異なる位置にあるときにノード507が同じNATに遭遇するならば、ノードはそのNATは動いたものと推測する。
上述のように、本発明の実施の形態に関連して用いることのできる、ノードに対する多数の異なる構成がある。たとえば、一般性を損なうことなく、図6は、本発明の実施の形態に係るNAT振る舞いディスカバリを実装するのに適したノード600の構成を図示するブロック図である。一例として、一般性を損なうことなく、ノード600は、本発明の実施の形態を実施するのに適した、パーソナルコンピュータ、ビデオゲーム機、携帯情報端末、無線デバイス、または他のデジタルデバイスのようなコンピュータシステムとして実装される。ある実施の形態では、ノード600はルータである。ノード600は、ソフトウェアアプリケーションと、任意であるがオペレーティングシステムとを走らせるように構成される中央演算処理装置(CPU)601を含む。CPU601は、1以上のプロセッシングコアを含む。一例として、これに限定しないが、CPU601は、セルプロセッサのような並列プロセッサモジュールである。セルプロセッサアーキテクチャの例は、「セルブロードバンドエンジンアーキテクチャ」に詳細が記述されている。これは、IBM、ソニー・コンピュータエンタテインメント、東芝の2005年8月8日付けの著作権で保護されており、コピーはhttp://cell.scei.co.jp/からダウンロード可能であり、その内容全体を参照によってここに組み入れる。
ノード600において、メモリ602がCPU601に接続されている。メモリ602はCPU601が用いるアプリケーションおよびデータを格納する。メモリ602は集積回路(たとえば、RAM、DRAM、ROMその他)の形態であってもよい。コンピュータプログラム603は、プロセッサ601で実行可能なインストラクションの形式でメモリ602に格納される。プログラム603の命令は、たとえば上述のようなNAT振る舞いディスカバリを実装するように構成される。特に、プログラム603は、実行されると、1以上のNATの振る舞いに関する情報を判定し、当該ノード600または1以上の他のノードがその情報を取り出せるような方法でその情報を格納する動作をノード600に実行させるインストラクションである。さらに、プログラム603は、1以上の他のノードによって取得された1以上のNATの振る舞いに関する情報を取得し、1以上のNATを越えるためにその情報を用いるように構成される。
メモリ602は、プログラム603によって生成される、または利用されるデータを含む。特に、メモリ602は、1以上のNATに関する情報610を含む。具体的には、情報610は、これに限定しないが、(i)NAT振る舞い情報(たとえば、NATがフルコーン、制限付きコーン、ポート制限付きコーン、シンメトリックであるかどうか)であって、NAT振る舞いにポート保存が含まれるか否かを含む情報、(ii)利用可能なSTUNサーバアドレス、および(iii)共通データベースアドレスを含む。情報610は、他のノードによってアクセス可能なメモリ602のある部分に格納される。
ノード600はさらに、アプリケーションおよびデータ用の不揮発性のストレージを提供するストレージデバイス615を備えてもよい。一例としてストレージデバイス615は、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、テープドライブ、CD−ROM、DVD−ROM、ブルーレイ(商標または登録商標)、HD−DVD、UMD、その他の光学式ストレージデバイスであってもよい。ノード600はまた、コンピューティングシステムにおいて一般的に使われる周知のサポート機能610を備えてもよい。そのようなサポート機能には、入出力(I/O)装置621、電源(P/S)622、クロック(CLK)623およびキャッシュ624のような特徴を含んでもよい。
1以上のユーザからのユーザ入力をノード600に伝えるために1以上のユーザ入力デバイス625が用いられてもよい。たとえば、1以上のユーザ入力デバイス625が、入出力装置621を介してノード600に接続されてもよい。適当な入力デバイス620の例には、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、ライトペン、スチル/ビデオカメラ、および/またはマイクロホンが含まれる。A/Vチャットの特定の例において、ユーザインタフェースデバイス625がカメラとマイクロホンの両方を含むことが望ましい。
ネットワークインターフェース626によって、ノード600は、電子通信ネットワーク627を介して他のコンピュータシステムと通信することができる。一例として、ネットワーク627はワイドエリアネットワークであり、ノード600はローカルエリアネットワーク上にある。ノードは、ネットワークアドレス変換NATを含むルータ608を介してネットワーク627と相互作用する。ある実施の形態では、ノード600自身が、たとえば図2Dに関して上述したようなルータである。ネットワークインターフェース626は、ローカルエリアネットワークやインターネットのようなワイドエリアネットワーク上の有線または無線通信を含む。ノード600は、ネットワーク627上で1以上のメッセージパケット628によって、データの送受信および/またはファイルのリクエストを行う。一例として、ネットワークインターフェース626は、ネットワークカード、ネットワークアダプタ、またはイーサネット(商標または登録商標)カードのようなネットワークインタフェースカード(NIC)を含むか、それらの一部である。ネットワークインターフェース626は、ノード600がネットワーク627上で通信することを可能にするように設計されたコンピュータハードウェアを含む。ネットワークインターフェース626は、ネットワーキングメディアへの物理アクセスを提供する。たとえば、MACアドレスの使用を通じて、低レベルのアドレスシステムを提供する。その結果、インターネットプロトコルスタックに関して言えば、ネットワークインターフェース626は、物理レイヤデバイスとデータリンクレイヤデバイスの両方であるとみなすことができる。
ノード600は、グラフィックプロセッシングユニット(GPU)635とグラフィックスメモリ640とを有するグラフィックス・サブシステム630を更に含む。グラフィックスメモリ640は、出力イメージの各画素に対する画素データを格納するために使われるディスプレイメモリ(例えばフレーム・バッファ)を含む。グラフィックスメモリ640は、GPU635と同じデバイス内に統合されてもよく、別のデバイスとしてGPU635に結合されてもよく、メモリ602内に実装されてもよい。画素データは、CPU601から直接グラフィックスメモリ640に提供される。あるいは、CPU601は、所望の出力イメージを定めるデータやインストラクションをGPU635に提供する。GPU635はそれを用いて出力イメージの画素データを生成する。所望出力イメージを定めるデータやインストラクションは、メモリ602やグラフィックスメモリ640に格納される。ある実施の形態では、GPU635は、例えば、適当なプログラミングまたはハードウェア・コンフィギュレーションによって構成され、シーンのためにジオメトリ、ライティング(照明)、シェーディング、テクスチャリング、モーション、および/またはカメラパラメータを定めるインストラクションとデータから出力イメージに対する画素データを生成するための3Dレンダリング機能をもつ。GPU635は、シェーダプログラムを実行することができるプログラム可能な実行ユニットを更に含む。
グラフィックス・サブシステム630は、表示装置650で表示されるべきグラフィックスメモリ640からのイメージに対する画素データを周期的に出力する。表示装置650は、コンピュータシステム600からの信号に応じてビジュアル情報を表示することができる任意のデバイスであり、CRT、LCD、プラズマ、およびOLEDディスプレイを含む。ノード600は、表示装置650にアナログまたはデジタル信号を提供する。一例として、表示装置650は、テキスト、数字、グラフィカルシンボル、または画像を表示するCRTまたはフラットパネルスクリーンを含む。さらに、ノード600は、可聴もしくは検知可能な音を出す1以上のオーディオスピーカー652を含んでもよい。そのような音の生成を容易にするために、ノード600は、CPU601、メモリ602、および/またはストレージ615によって提供されたインストラクションおよび/またはデータからアナログまたはデジタル音声出力を生成するために適したオーディオプロセッサ655を更に含む。A/VチャットまたはVoIP(Voice over Internet Protocol)のようなアプリケーションの場合は、ノード600がグラフィカル表示装置650およびオーディオスピーカー652を含むことが望ましい。
CPU601、メモリ602、サポート機能620、データストレージ615、ユーザ入力デバイス625、ネットワークインターフェース626、グラフィックス・サブシステム630、スピーカー652、およびオーディオプロセッサ655を含むノード600の構成要素は、1以上のデータバス660を介して互いに機能的に接続されている。これらの構成要素は、ハートウェア、ソフトウェア、ファームウェア、あるいはこれらの2以上の組み合わせで実装される。
本発明の実施の形態は、NATデバイス(ネットワークアドレス変換を実行するルータ)に関連するネットワーキング配備における主要問題を解決する。十分に特定された振る舞いをするルータを用いてNAT振る舞い情報のディスカバリと分配を中央集権的な方法で実装してもよい。個々のアプリケーションの状態をそのようなルータで十分に収集することができないなら、機能性のある部分が失われることもありうる。しかしながら、この機構に追加をすれば、この欠陥を補償することができる。もっとも、それに関連したオーバーヘッドを生じるであろうが。
本発明の実施の形態では、共通のNATの背後にある、本来は別個のピアネットワークノードが互いに協調して、非集中的な方法でNAT越えの問題を解決することもできる。ローカルネットワーク上の複数のノードの協調に関わるいろいろなNATデバイスの振る舞いから起こりうる問題の全体に対する解決は存在しない。
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、他の特徴と組み合わせてもよい。請求項において、明示的に断らない限り、各項目は1またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。

Claims (19)

  1. ネットワーク上で1以上の他のノードと通信するように構成された前記1以上の他のノードがアクセス可能なルータにおける、ネットワークアドレス変換(NAT)越えを支援する方法であって、
    a)前記ルータで1以上のNATの振る舞いに関する情報を判定するステップ
    b)1以上の他のノードが前記情報を取り出し可能な方法で前記情報を格納するステップを含むことを特徴とする方法。
  2. 前記1以上のNATの振る舞いに関する情報を判定するステップは、1以上のNATを実装するノードまたはルータに対するMAC(media access control)アドレスを判定するステップを含む請求項1の方法。
  3. 前記1以上のNATの振る舞いに関する情報を判定するステップは、与えられた外部IPアドレスおよび前記他のノードの一つの間にいくつのNATが存在するかを判定するステップを含む請求項1の方法。
  4. 与えられた外部IPアドレスおよび前記他のノードの一つの間にいくつのNATが存在するかを判定するステップは、所定のTTL(time to live)をもつデータグラムを送信するステップと、そのデータグラムに応答して当該ノードに時間超過エラーが返信された場合、インクリメントしたTTLをもつデータグラムを再送するステップとを含む請求項3の方法。
  5. 1以上のNATの振る舞いに関する情報にはNATタイプが含まれる請求項1の方法。
  6. 1以上のNATの振る舞いに関する情報にはNATに関する地理的情報が含まれる請求項1の方法。
  7. 前記情報を格納するステップは、ピアツーピアネットワーク上で前記情報を分散するステップを含む請求項1の方法。
  8. 1以上の他のノードが前記情報を取り出し可能な方法で前記情報を格納するステップは、前記ルータと前記他のノードがアクセス可能なサーバ上に前記情報を格納するステップを含む請求項1の方法。
  9. 前記サーバは共通のデータベースサーバである請求項8の方法。
  10. ステップa)は、前記1以上のNATに関連づけられた情報を格納するステップをさらに含む請求項1の方法。
  11. 前記1以上のNATは1以上の無線アクセス可能なNATを含む請求項1の方法。
  12. 前記ルータと前記1以上の他のノードが同じNATの背後にある請求項1の方法。
  13. 1以上の他のノードが前記情報を取り出し可能な方法で前記情報を格納するステップは、前記情報を前記ルータにキャッシュするステップを含む請求項12の方法。
  14. 1以上のNATの振る舞いに関する情報には、NAT振る舞い情報、1以上の利用可能なSTUN(Simple Traversal of UDP through NAT)サーバのアドレス、1以上の共通のデータベースのアドレス、NAT経由の複数のアクティブなセッション、NAT上の全体的なトラフィック負荷、または、シンメトリックNATに対するポート予測のアトミック性を実現するフラグの値が含まれる請求項1の方法。
  15. ネットワークアドレス変換(NAT)越えを支援する装置であって、
    ネットワーク上で1以上の他のノードと通信するように構成された前記1以上の他のノードがアクセス可能なルータと、
    実行可能な命令セットとを含み、
    前記命令セットは、前記ルータによって実行されたときに前記ルータに、
    a)前記ルータで1以上のNATの振る舞いに関する情報を判定するステップと、
    b)1以上の他のノードが前記情報を取り出し可能な方法で前記情報を格納するステップを実行させることを特徴とする装置。
  16. 前記ルータは無線ルータである請求項15の装置。
  17. 前記情報を格納し、および/または、前記情報を取り出すために、前記ルータがアクセス可能なメモリロケーションをさらに含む請求項15の方法。
  18. 前記ルータはNATを実装する請求項15の装置。
  19. 1以上のNATの振る舞いに関する情報には、NAT振る舞い情報、1以上の利用可能なSTUNサーバのアドレス、1以上の共通のデータベースのアドレス、NAT経由の複数のアクティブなセッション、NAT上の全体的なトラフィック負荷、または、シンメトリックNATに対するポート予測のアトミック性を実現するフラグの値が含まれる請求項15の装置。
JP2010520064A 2007-07-27 2008-07-21 協調的nat振る舞いディスカバリ Active JP5006968B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/829,831 2007-07-27
US11/829,831 US7933273B2 (en) 2007-07-27 2007-07-27 Cooperative NAT behavior discovery
PCT/US2008/070661 WO2009018004A1 (en) 2007-07-27 2008-07-21 Cooperative nat behavior discovery

Publications (3)

Publication Number Publication Date
JP2010535004A JP2010535004A (ja) 2010-11-11
JP2010535004A5 JP2010535004A5 (ja) 2012-03-22
JP5006968B2 true JP5006968B2 (ja) 2012-08-22

Family

ID=40295290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010520064A Active JP5006968B2 (ja) 2007-07-27 2008-07-21 協調的nat振る舞いディスカバリ

Country Status (5)

Country Link
US (3) US7933273B2 (ja)
EP (2) EP2171933B1 (ja)
JP (1) JP5006968B2 (ja)
CN (3) CN102984289B (ja)
WO (1) WO2009018004A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080298237A1 (en) * 2006-08-03 2008-12-04 Latitude Broadband, Inc. Methods, Systems, and Apparatus of Providing QoS and Scalability in the Deployment of Real-Time Traffic Services in Packet-based Networks
CN101335681B (zh) * 2007-06-27 2011-08-10 华为技术有限公司 获取穿越资源的方法、对等网络节点和对等网络
US8631155B2 (en) 2007-06-29 2014-01-14 Microsoft Corporation Network address translation traversals for peer-to-peer networks
US7933273B2 (en) * 2007-07-27 2011-04-26 Sony Computer Entertainment Inc. Cooperative NAT behavior discovery
KR101606142B1 (ko) * 2008-11-28 2016-03-25 삼성전자주식회사 음성패킷망에서 네트워크 주소 번역 통과를 지원하기 위한 장치 및 방법
US7962627B2 (en) * 2008-12-04 2011-06-14 Microsoft Corporation Peer-to-peer network address translator (NAT) traversal techniques
US9160794B2 (en) * 2008-12-04 2015-10-13 Microsoft Technology Licensing, Llc Network address translators (NAT) type detection techniques
US8280376B2 (en) * 2008-12-31 2012-10-02 Airvana, Corp. Geography aware peer-to-peer overlay creation
CN101820382B (zh) * 2009-02-28 2013-02-27 华为技术有限公司 一种通告网络地址转换设备信息的方法、装置和系统
US8699378B2 (en) * 2009-09-30 2014-04-15 At&T Intellectual Property I, L.P. Methods and apparatus for discovering hosts on an IPv6 network
JP5273001B2 (ja) * 2009-09-30 2013-08-28 ブラザー工業株式会社 通信システム、端末装置、通信方法、及び通信プログラム
JP5273002B2 (ja) * 2009-09-30 2013-08-28 ブラザー工業株式会社 通信システム、通信制御装置、通信制御方法、及び通信制御プログラム
US8412833B2 (en) 2010-04-07 2013-04-02 Apple Inc. Apparatus and method for inviting users to online sessions
FR2968496B1 (fr) * 2010-12-03 2013-07-05 Sagemcom Documents Sas Procede et dispositif pour l'appairage d'un terminal et d'un compte utilisateur
CN102801603B (zh) * 2011-05-27 2017-04-05 中兴通讯股份有限公司 一种网络地址翻译加速的分流控制方法及装置
US8838735B2 (en) * 2011-06-28 2014-09-16 At&T Intellectual Property I, L.P. Methods, systems, and products for address translation in residential networks
KR20130052240A (ko) * 2011-11-11 2013-05-22 삼성전자주식회사 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치
US20140379785A1 (en) 2011-12-14 2014-12-25 Koninklijke Kpn N.V. Server Communication
WO2013087747A1 (en) 2011-12-14 2013-06-20 Koninklijke Kpn N.V. Methods and systems for enabling nat traversal
US20140351453A1 (en) * 2011-12-14 2014-11-27 Koninklijke Kpn N.V. Node in a Network
US9559935B2 (en) 2011-12-14 2017-01-31 Koninklijke Kpn N.V. Virtual interface applications
EP2792131A1 (en) 2011-12-14 2014-10-22 Koninklijke KPN N.V. Methods and systems for enabling nat traversal
KR20140102280A (ko) * 2011-12-14 2014-08-21 코닌클리즈케 케이피엔 엔.브이. Nat 통과를 가능하게 하기 위한 방법 및 시스템
KR101758681B1 (ko) * 2012-03-27 2017-07-14 한화테크윈 주식회사 통신 시스템 및 통신 시스템에서의 데이터 송수신 방법
CN102647483B (zh) * 2012-03-31 2018-02-27 中兴通讯股份有限公司 获取nat类型的方法、p2p端点实体和nat实体
KR101367180B1 (ko) * 2012-05-21 2014-02-26 주식회사 바른기술 네트워크 서비스를 전환 및 공유하는 장치와 그 방법
US9253237B2 (en) * 2012-06-29 2016-02-02 Cisco Technology, Inc. Rich media status and feedback for devices and infrastructure components using in path signaling
CN103414797B (zh) * 2013-07-31 2016-08-24 中国联合网络通信集团有限公司 Nat穿越服务器的端口分配方法和装置
US9379952B2 (en) * 2013-08-20 2016-06-28 Futurewei Technologies, Inc. Monitoring NAT behaviors through URI dereferences in web browsers
KR102287510B1 (ko) * 2014-04-10 2021-08-06 엘지전자 주식회사 서버, 영상제공장치, 및 이를 포함하는 영상 제공 시스템
TWI558149B (zh) * 2015-06-23 2016-11-11 晶睿通訊股份有限公司 用於多層網路位址轉譯器結構之網路傳輸方法及網路傳輸系統
CN104994184A (zh) * 2015-06-25 2015-10-21 北京广密华安科技有限公司 一种nat穿透方法和装置
US9860157B2 (en) 2015-09-09 2018-01-02 Sling Media Pvt Ltd Zero configuration approach for port forwarding cascaded routers
CN105516342B (zh) * 2015-12-30 2019-02-22 深圳市有信网络技术有限公司 一种p2p穿透同步方法及系统
US10255222B2 (en) 2016-11-22 2019-04-09 Dover Electronics LLC System and method for wirelessly transmitting data from a host digital device to an external digital location
CN109698869B (zh) * 2017-10-23 2022-02-25 中国移动通信有限公司研究院 私网穿越方法、通信节点及存储介质
US10778723B2 (en) * 2018-03-26 2020-09-15 Forescout Technologies, Inc. Device visibility and scanning including network segments
JP7188046B2 (ja) * 2018-12-14 2022-12-13 富士フイルムビジネスイノベーション株式会社 通信システム、通信装置、通信システムプログラム及び通信プログラム
US20210019285A1 (en) * 2019-07-16 2021-01-21 Citrix Systems, Inc. File download using deduplication techniques

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636216A (en) 1994-04-08 1997-06-03 Metricom, Inc. Method for translating internet protocol addresses to other distributed network addressing schemes
US5488608A (en) * 1994-04-14 1996-01-30 Metricom, Inc. Method and system for routing packets in a packet communication network using locally constructed routing tables
AU2471995A (en) 1994-05-05 1995-11-29 Catapult Entertainment, Inc. Network architecture for real-time video games
US5793763A (en) 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
JPH11122301A (ja) 1997-10-20 1999-04-30 Fujitsu Ltd アドレス変換接続装置
US6151601A (en) 1997-11-12 2000-11-21 Ncr Corporation Computer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area
US6128624A (en) 1997-11-12 2000-10-03 Ncr Corporation Collection and integration of internet and electronic commerce data in a database during web browsing
US6151584A (en) 1997-11-20 2000-11-21 Ncr Corporation Computer architecture and method for validating and collecting and metadata and data about the internet and electronic commerce environments (data discoverer)
FI105753B (fi) 1997-12-31 2000-09-29 Ssh Comm Security Oy Pakettien autentisointimenetelmä verkko-osoitemuutosten ja protokollamuunnosten läsnäollessa
SE513828C2 (sv) 1998-07-02 2000-11-13 Effnet Group Ab Brandväggsapparat och metod för att kontrollera nätverksdatapakettrafik mellan interna och externa nätverk
US6208649B1 (en) 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6209003B1 (en) 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
US6289358B1 (en) 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6128623A (en) 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6292880B1 (en) 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6128627A (en) 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6058431A (en) 1998-04-23 2000-05-02 Lucent Technologies Remote Access Business Unit System and method for network address translation as an external service in the access server of a service provider
US6260120B1 (en) 1998-06-29 2001-07-10 Emc Corporation Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement
US6212565B1 (en) 1998-08-26 2001-04-03 Sun Microsystems, Inc. Apparatus and method for improving performance of proxy server arrays that use persistent connections
US6138156A (en) 1998-10-05 2000-10-24 International Business Machines Corporation Selecting and applying content-reducing filters based on dynamic environmental factors
US6389462B1 (en) 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6333931B1 (en) 1998-12-28 2001-12-25 Cisco Technology, Inc. Method and apparatus for interconnecting a circuit-switched telephony network and a packet-switched data network, and applications thereof
US6535511B1 (en) 1999-01-07 2003-03-18 Cisco Technology, Inc. Method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems
US6636898B1 (en) 1999-01-29 2003-10-21 International Business Machines Corporation System and method for central management of connections in a virtual private network
US6393488B1 (en) 1999-05-27 2002-05-21 3Com Corporation System and method for supporting internet protocol subnets with network address translators
US6581108B1 (en) 1999-11-30 2003-06-17 Lucent Technologies Inc. Managing multiple private data networks using network and payload address translation
US7917628B2 (en) 1999-12-02 2011-03-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6779035B1 (en) 2000-03-06 2004-08-17 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US6353891B1 (en) 2000-03-20 2002-03-05 3Com Corporation Control channel security for realm specific internet protocol
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6618757B1 (en) 2000-05-17 2003-09-09 Nortel Networks Limited System and method for dynamic IP address management
WO2001097485A2 (en) 2000-06-14 2001-12-20 At & T Wireless Services, Inc. Method for providing transparent public addressed networks within private networks
US7797433B2 (en) 2000-06-30 2010-09-14 Net2Phone System, method, and computer program product for resolving addressing in a network including a network address translator
US6661799B1 (en) 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US20020075844A1 (en) 2000-12-15 2002-06-20 Hagen W. Alexander Integrating public and private network resources for optimized broadband wireless access and method
US7155518B2 (en) 2001-01-08 2006-12-26 Interactive People Unplugged Ab Extranet workgroup formation across multiple mobile virtual private networks
WO2002057917A2 (en) 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US6993012B2 (en) * 2001-02-20 2006-01-31 Innomedia Pte, Ltd Method for communicating audio data in a packet switched network
JP3963690B2 (ja) 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
US20030009561A1 (en) 2001-06-14 2003-01-09 Sollee Patrick N. Providing telephony services to terminals behind a firewall and /or network address translator
US8065394B2 (en) 2001-08-20 2011-11-22 Bally Gaming, Inc. Local game-area network method
US20030051052A1 (en) 2001-09-13 2003-03-13 Koninklijke Philips Electronics N.V. Addressing scheme for wireless mobile clients
US20030055978A1 (en) 2001-09-18 2003-03-20 Microsoft Corporation Methods and systems for enabling outside-initiated traffic flows through a network address translator
US7254709B1 (en) 2001-10-23 2007-08-07 Avanza Technologies, Inc. Managed information transmission of electronic items in a network environment
SE522998C2 (sv) 2001-12-14 2004-03-23 Hotsip Ab Förfarande, gateway och datorprogramprodukt för att sända ett snabbmeddelande mellan två användare
US7058718B2 (en) 2002-01-15 2006-06-06 International Business Machines Corporation Blended SYN cookies
US7133368B2 (en) 2002-02-01 2006-11-07 Microsoft Corporation Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
US7676579B2 (en) 2002-05-13 2010-03-09 Sony Computer Entertainment America Inc. Peer to peer network communication
US9497168B2 (en) 2002-07-30 2016-11-15 Avaya Inc. Method and apparatus for supporting communications between a computing device within a network and an external computing device
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US8060626B2 (en) * 2008-09-22 2011-11-15 Sony Computer Entertainment America Llc. Method for host selection based on discovered NAT type
US7016942B1 (en) 2002-08-05 2006-03-21 Gary Odom Dynamic hosting
US7302496B1 (en) * 2002-11-12 2007-11-27 Cisco Technology, Inc. Arrangement for discovering a localized IP address realm between two endpoints
US7216359B2 (en) 2002-12-19 2007-05-08 International Business Machines Corporation Secure communication overlay using IP address hopping
US7899932B2 (en) 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
WO2004063843A2 (en) * 2003-01-15 2004-07-29 Matsushita Electric Industrial Co., Ltd. PEER-TO-PEER (P2P) CONNECTION DESPITE NETWORK ADDRESS TRANSLATOR (NATs) AT BOTH ENDS
IL156924A (en) * 2003-07-15 2009-05-04 Tadiran Telecom Ltd Communication between users located behind nat device
US8234383B2 (en) 2003-11-07 2012-07-31 Panasonic Corporation Bubble packet port identification using detection packets
DE10353925B4 (de) 2003-11-18 2009-12-24 Nec Europe Ltd. Verfahren zum Austausch von Daten zwischen zwei Hosts
JP4426262B2 (ja) 2003-11-26 2010-03-03 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の障害回避方法
CN100399768C (zh) * 2003-12-24 2008-07-02 华为技术有限公司 实现网络地址转换穿越的方法、系统
WO2005088466A1 (en) 2004-03-09 2005-09-22 Clique Communications Llc System and method for peer-to-peer connection of clients behind symmetric firewalls
US20050201391A1 (en) * 2004-03-11 2005-09-15 Hung-Fang Ma Network address translation router and related method
WO2005099173A1 (en) 2004-04-06 2005-10-20 Koninklijke Philips Electronics, N.V. Location based handoff for mobile devices
US7536467B2 (en) 2004-04-20 2009-05-19 Microsoft Corporation Peer-to-peer (P2P) mobility system, and method
US7620033B2 (en) 2004-05-21 2009-11-17 Alcatel-Lucent Usa Inc. Method for optimal path selection in traversal of packets through network address translators
US7778187B2 (en) 2004-06-29 2010-08-17 Damaka, Inc. System and method for dynamic stability in a peer-to-peer hybrid communications network
US7706401B2 (en) * 2004-08-13 2010-04-27 Verizon Business Global Llc Method and system for providing interdomain traversal in support of packetized voice transmissions
US7543064B2 (en) 2004-09-30 2009-06-02 Logitech Europe S.A. Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host
US7483393B2 (en) * 2004-12-07 2009-01-27 Cisco Technology, Inc. Method and apparatus for discovering internet addresses
CN1825828B (zh) * 2005-02-24 2011-04-27 北京风行在线技术有限公司 一种两端均处于不同nat下直接穿透通信的控制方法和设备
JP4741964B2 (ja) * 2005-03-18 2011-08-10 パナソニック株式会社 通信装置、通信システム及び通信方法
US7522618B2 (en) 2005-03-18 2009-04-21 Panasonic Corporation Communication apparatus, communication system and communication method
US20070061460A1 (en) 2005-03-24 2007-03-15 Jumpnode Systems,Llc Remote access
US20070014301A1 (en) * 2005-07-13 2007-01-18 Motient Corporation Method and apparatus for providing static addressing
US8019986B2 (en) 2005-08-12 2011-09-13 Comcast Cable Holdings, Llc Method and system for booting, provisioning and activating hardware and software clients
JP4722623B2 (ja) * 2005-08-24 2011-07-13 パナソニック株式会社 Ip通信装置及びその制御方法
US8711197B2 (en) 2005-09-09 2014-04-29 Agilemesh, Inc. Surveillance apparatus and method for wireless mesh network
JP4331154B2 (ja) 2005-09-29 2009-09-16 パナソニック株式会社 情報処理システム、トンネル通信装置、及びトンネル通信方法
US20070076099A1 (en) * 2005-10-03 2007-04-05 Eyal Eshed Device and method for hybrid resolution video frames
US20070264989A1 (en) * 2005-10-03 2007-11-15 Rajesh Palakkal Rendezvous calling systems and methods therefor
JP4489008B2 (ja) * 2005-11-16 2010-06-23 株式会社東芝 通信装置、通信方法および通信プログラム
US9047310B2 (en) 2006-02-22 2015-06-02 Microsoft Technology Licensing, Llc Reliable, efficient peer-to-peer storage
US8347341B2 (en) 2006-03-16 2013-01-01 Time Warner Cable Inc. Methods and apparatus for centralized content and data delivery
EP2056567A3 (en) * 2006-04-24 2010-11-03 KTFreetel Co., Ltd. Interworking system between IP networks using different IP addressing scheme, application layer gateway (ALG), network address translator, and SIP message routing method thereof
JP4973145B2 (ja) 2006-11-20 2012-07-11 船井電機株式会社 管理サーバ及びコンテンツ移動システム
US8693392B2 (en) * 2007-02-21 2014-04-08 Avaya Canada Corp. Peer-to-peer communication system and method
US7933273B2 (en) * 2007-07-27 2011-04-26 Sony Computer Entertainment Inc. Cooperative NAT behavior discovery
US7996543B2 (en) 2007-08-16 2011-08-09 Xcastlabs Client-to-client direct RTP exchange in a managed client-server network

Also Published As

Publication number Publication date
CN107257389B (zh) 2021-01-12
USRE47566E1 (en) 2019-08-06
EP2890092B1 (en) 2016-11-23
CN101809951A (zh) 2010-08-18
US20110200009A1 (en) 2011-08-18
US8565190B2 (en) 2013-10-22
CN102984289A (zh) 2013-03-20
US20090028167A1 (en) 2009-01-29
CN107257389A (zh) 2017-10-17
US7933273B2 (en) 2011-04-26
EP2171933A1 (en) 2010-04-07
JP2010535004A (ja) 2010-11-11
EP2171933B1 (en) 2015-04-08
EP2171933A4 (en) 2013-09-18
EP2890092A1 (en) 2015-07-01
CN101809951B (zh) 2017-06-06
WO2009018004A1 (en) 2009-02-05
CN102984289B (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
JP5006968B2 (ja) 協調的nat振る舞いディスカバリ
US7995594B2 (en) Protocol and system for firewall and NAT traversal for TCP connections
KR100317443B1 (ko) 인터넷프로토콜필터
US7729366B2 (en) Method, apparatus and system for network mobility of a mobile communication device
US8626879B2 (en) Systems and methods for establishing network connections using local mediation services
JP2006086800A (ja) ソースアドレスを選択する通信装置
Deri et al. N2n: A layer two peer-to-peer vpn
WO2011035528A1 (zh) 用于通过中继方式进行nat穿越的方法、系统和中继服务器
US10652204B2 (en) ReNAT systems and methods
US7356031B1 (en) Inter-v4 realm routing
EP2052514B1 (en) Pervasive inter-domain dynamic host configuration
Punithavathani et al. Performance analysis for wireless networks: An analytical approach by multifarious sym teredo
US20140219280A1 (en) Systems and Methods for Dual Network Address Translation
US11863542B2 (en) Systems and methods for using SPI to discover a network graph of nodes behind NAT
Kanaris et al. Mass Adoption of NATs: Survey and experiments on carrier-grade NATs
Hughes Review of IPv4
CN117061479A (zh) 局域网通信方法及装置
Di et al. Linyphi: creating IPv6 mesh networks with SSR
Boucadair et al. PCP Working Group G. Chen Internet-Draft China Mobile Intended status: Standards Track T. Reddy Expires: March 22, 2014 P. Patil Cisco

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100802

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101126

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120202

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120202

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120420

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120522

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120525

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5006968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250