(57)【特許請求の範囲】
【請求項１】
データ処理装置によって実現される方法であって、
複数の送信元ネットワークの特定の送信元ネットワークから第１のネットワークパケットを、前記特定の送信元ネットワークの外部であって第２のネットワーク内のエッジデバイスにおいて受信することを含み、前記第１のネットワークパケットは第１の内部ヘッダを含み、前記第１の内部ヘッダは、ｉ）前記第１のネットワークパケットが発信された前記特定の送信元ネットワークに含まれるユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）前記第１のネットワークパケットがアドレス指定される宛先サーバを特定する第１の宛先アドレスとを含み、前記方法は、
各々が前記複数の送信元ネットワークの１つを一意に識別する複数のルーティング可能識別子から前記特定の送信元ネットワークについて特定の識別子を選択することを含み、前記特定の識別子は前記第１の送信元アドレスとは異なっており、前記方法はさらに、
第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することを含み、前記第１のカプセル化パケットは第１の外部ヘッダを含み、前記第１の外部ヘッダは、ｉ）前記特定の識別子を特定する第１の外部送信元アドレスと、ｉｉ）前記第１の宛先アドレスである第１の外部宛先アドレスとを含み、前記方法はさらに、
前記第２のネットワーク内において前記宛先サーバに前記第１のカプセル化パケットをルーティングすることと、
第２のカプセル化パケットを前記宛先サーバから受信することとを含み、前記第２のカプセル化パケットは第２の外部ヘッダを含む第２のネットワークパケットを含み、前記第２の外部ヘッダは、ｉ）前記第２のカプセル化パケットが発信された前記宛先サーバを特定する前記第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）前記第２のカプセル化パケットがアドレス指定される前記特定の識別子を特定する第２の宛先アドレスとを含み、前記方法はさらに、
前記第２のカプセル化パケットから前記第２のネットワークパケットを抽出することを含み、前記第２のネットワークパケットは第２の内部ヘッダを含み、前記第２の内部ヘッダは、ｉ）前記第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）前記第１の送信元アドレスである第２の宛先アドレスとを含み、前記方法はさらに、
前記特定の識別子に基づいて、前記特定の送信元ネットワークに前記第２のネットワークパケットをルーティングすることを含む、方法。
【請求項２】
前記第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することは、前記第１のネットワークパケットをカプセル化するためにIP in IPカプセル化を使用することを含む、請求項１に記載の方法。
【請求項３】
前記第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することは、前記第１のネットワークパケットをカプセル化するためにGeneric Routing Encapsulationを使用することを含む、請求項１または２に記載の方法。
【請求項４】
前記第１のカプセル化パケットの前記第１の外部ヘッダはパケットプロトコルフィールドを含み、第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することは、前記第１のカプセル化パケットが前記第１のネットワークパケットをカプセル化していることを示す前記パケットプロトコルフィールドについての値を特定することを含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記宛先サーバに前記第１のカプセル化パケットをルーティングすることは、前記第２のネットワーク内においてネットワークロードバランサに前記第１のカプセル化パケットを提供することを含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記エッジデバイスは前記第２のネットワーク内の複数のエッジデバイスのうちの１つであり、前記方法はさらに、
前記エッジデバイスが前記特定の送信元ネットワークと通信することを特定する到達可能性インジケータを前記第２のネットワークに同報通信することを含む、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記エッジデバイスは前記第２のネットワーク内における前記エッジデバイスを一意に識別するエッジデバイス識別子を有し、前記特定の送信元ネットワークについて選択される前記特定の識別子は前記エッジデバイス識別子とは異なる、請求項１から６のいずれか１項に記載の方法。
【請求項８】
前記エッジデバイスは、前記第２のネットワーク内における複数のエッジデバイスの１つであり、前記方法はさらに、
前記エッジデバイスが前記複数の送信元ネットワークと通信していることを特定する到達可能性インジケータを前記第２のネットワークに同報通信することを含む、請求項１に記載の方法。
【請求項９】
データ処理装置によって実現される方法であって、
データ処理装置によってエッジデバイスから第１のカプセル化パケットを受信することと、
前記第１のカプセル化パケットに含まれるパケットプロトコルフィールドに基づいて、前記第１のカプセル化パケットが第１のネットワークパケットをカプセル化していることを判定することとを含み、前記判定に応答して、
前記第１のカプセル化パケットの第１の外部ヘッダに含まれる第１の外部送信元アドレスを識別することを含み、前記第１の外部送信元アドレスは、各々が複数の送信元ネットワークの１つを一意に識別する複数のルーティング可能識別子の内の特定の識別子を含み、前記特定の識別子は、前記複数の送信元ネットワークの内の、前記第１のネットワークパケットが発信された特定の送信元ネットワークを特定し、前記方法はさらに、
ネットワーク接続テーブルに前記第１の外部送信元アドレスを記録することと、
前記第１のカプセル化パケットから前記第１のネットワークパケットを抽出することとを含み、前記第１のネットワークパケットは第１の内部ヘッダを含み、前記第１の内部ヘッダは、ｉ）前記第１のネットワークパケットが発信されたユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）前記第１のネットワークパケットがアドレス指定される前記データ処理装置を特定する第１の宛先アドレスとを含み、前記方法はさらに、
前記第１のネットワークパケットを処理することと、
第２のネットワークパケットを生成することとを含み、前記第２のネットワークパケットは第２の内部ヘッダを含み、前記第２の内部ヘッダは、ｉ）前記データ処理装置を特定する前記第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）前記第２のネットワークパケットがアドレス指定される前記第１の送信元アドレスである第２の宛先アドレスとを含み、前記方法はさらに、
前記ネットワーク接続テーブルから前記第１の外部送信元アドレスを得ることと、
第２のカプセル化パケット内に前記第２のネットワークパケットをカプセル化することとを含み、前記第２のカプセル化パケットは第２の外部ヘッダを含む前記第２のネットワークパケットを含み、前記第２の外部ヘッダは、ｉ）前記データ処理装置を特定する前記第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）前記第２のカプセル化パケットがアドレス指定される前記第１の外部送信元アドレスである外部宛先アドレスとを含み、前記方法はさらに、
前記第１の外部送信元アドレスによって特定される前記送信元ネットワークに前記第２のカプセル化パケットをルーティングすることと、を含む、方法。
【請求項１０】
前記データ処理装置によってネットワークデバイスから第３のネットワークパケットを受信することと、
前記第３のネットワークパケットに含まれるパケットプロトコルフィールドに基づいて、前記第３のネットワークパケットが別のネットワークパケットをカプセル化していないことを判定することと、
前記第３のネットワークパケットを処理することとをさらに含む、請求項９に記載の方法。
【請求項１１】
前記データ処理装置および前記エッジデバイスは、前記第１のネットワークパケットが発信された特定の送信元ネットワークとは別個である第２のネットワーク内に存在する、請求項９または１０に記載の方法。
【請求項１２】
システムであって、
１つ以上のデータ処理装置と、
命令を格納するデータストレージデバイスとを含み、前記命令は、前記１つ以上のデータ処理装置によって実行されると、前記データ処理装置に、
複数の送信元ネットワークの特定の送信元ネットワークから第１のネットワークパケットを、前記特定の送信元ネットワークの外部であって第２のネットワーク内のエッジデバイスにおいて受信することを含む動作を実行させ、前記第１のネットワークパケットは第１の内部ヘッダを含み、前記第１の内部ヘッダは、ｉ）前記第１のネットワークパケットが発信された前記特定の送信元ネットワークに含まれるユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）前記第１のネットワークパケットがアドレス指定される宛先サーバを特定する第１の宛先アドレスとを含み、前記命令はさらに、
各々が前記複数の送信元ネットワークの１つを一意に識別する複数のルーティング可能識別子から前記特定の送信元ネットワークについて特定の識別子を選択することを含む動作を実行させ、前記特定の識別子は前記第１の送信元アドレスとは異なっており、前記命令はさらに、
第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することとを含む動作を実行させ、前記第１のカプセル化パケットは第１の外部ヘッダを含み、前記第１の外部ヘッダは、ｉ）前記特定の識別子を特定する第１の外部送信元アドレスと、ｉｉ）前記第１の宛先アドレスである第１の外部宛先アドレスとを含み、前記命令はさらに、
前記第２のネットワーク内において前記宛先サーバに前記第１のカプセル化パケットをルーティングすることと、
第２のカプセル化パケットを前記宛先サーバから受信することとを含む動作を実行させ、前記第２のカプセル化パケットは第２の外部ヘッダを含む第２のネットワークパケットを含み、前記第２の外部ヘッダは、ｉ）前記第２のカプセル化パケットが発信された前記宛先サーバを特定する前記第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）前記第２のカプセル化パケットがアドレス指定される前記特定の識別子を特定する第２の宛先アドレスとを含み、前記命令はさらに、
前記第２のカプセル化パケットから前記第２のネットワークパケットを抽出することを含む動作を実行させ、前記第２のネットワークパケットは第２の内部ヘッダを含み、前記第２の内部ヘッダは、ｉ）前記第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）前記第１の送信元アドレスである第２の宛先アドレスとを含み、前記命令はさらに、
前記特定の識別子に基づいて、前記特定の送信元ネットワークに前記第２のネットワークパケットをルーティングすることを含む、システム。
【請求項１３】
前記第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することは、前記第１のネットワークパケットをカプセル化するためにIP in IPカプセル化を使用することを含む、請求項１２に記載のシステム。
【請求項１４】
前記第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することは、前記第１のネットワークパケットをカプセル化するためにGeneric Routing Encapsulationを使用することを含む、請求項１２または１３に記載のシステム。
【請求項１５】
前記第１のカプセル化パケットの前記第１の外部ヘッダはパケットプロトコルフィールドを含み、第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することは、前記第１のカプセル化パケットが前記第１のネットワークパケットをカプセル化していることを示す前記パケットプロトコルフィールドについての値を特定することを含む、請求項１２から１４のいずれか１項に記載のシステム。
【請求項１６】
前記宛先サーバに前記第１のカプセル化パケットをルーティングすることは、前記第２のネットワーク内においてネットワークロードバランサに前記第１のカプセル化パケットを提供することを含む、請求項１２から１５のいずれか１項に記載のシステム。
【請求項１７】
前記エッジデバイスは、前記第２のネットワーク内における複数のエッジデバイスのうちの１つであり、前記命令はさらに、
前記エッジデバイスが前記送信元ネットワークと通信していることを特定する到達可能性インジケータを前記第２のネットワークに同報通信することを含む、請求項１２から１６のいずれか１項に記載のシステム。
【請求項１８】
前記エッジデバイスは前記第２のネットワーク内における前記エッジデバイスを一意に識別するエッジデバイス識別子を有し、前記特定の送信元ネットワークについて選択される前記特定の識別子は前記エッジデバイス識別子とは異なる、請求項１２から１７のいずれか１項に記載のシステム。
【請求項１９】
命令を含むコンピュータ読取可能なプログラムであって、前記命令は、コンピュータによって実行されると、前記コンピュータに、
複数の送信元ネットワークの特定の送信元ネットワークから第１のネットワークパケットを、前記特定の送信元ネットワークの外部であって第２のネットワーク内のエッジデバイスにおいて受信することを含む動作を実行させ、前記第１のネットワークパケットは第１の内部ヘッダを含み、前記第１の内部ヘッダは、ｉ）前記第１のネットワークパケットが発信された前記特定の送信元ネットワークに含まれるユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）前記第１のネットワークパケットがアドレス指定される宛先サーバを特定する第１の宛先アドレスとを含み、前記命令はさらに、
各々が前記複数の送信元ネットワークの１つを一意に識別する複数のルーティング可能識別子から前記特定の送信元ネットワークについて特定の識別子を選択することを含む動作を実行させ、前記特定の識別子は前記第１の送信元アドレスとは異なっており、前記命令はさらに、
第１のカプセル化パケット内に前記第１のネットワークパケットをカプセル化することとを含む動作を実行させ、前記第１のカプセル化パケットは第１の外部ヘッダを含み、前記第１の外部ヘッダは、ｉ）前記特定の識別子を特定する第１の外部送信元アドレスと、ｉｉ）前記第１の宛先アドレスである第１の外部宛先アドレスとを含み、前記命令はさらに、
前記第２のネットワーク内において前記宛先サーバに前記第１のカプセル化パケットをルーティングすることと、
第２のカプセル化パケットを前記宛先サーバから受信することとを含む動作を行わせ、前記第２のカプセル化パケットは第２の外部ヘッダを含む第２のネットワークパケットを含み、前記第２の外部ヘッダは、ｉ）前記第２のカプセル化パケットが発信された前記宛先サーバを特定する前記第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）前記第２のカプセル化パケットがアドレス指定される前記特定の識別子を特定する第２の宛先アドレスとを含み、
前記第２のカプセル化パケットから前記第２のネットワークパケットを抽出することを含む動作を実行させ、前記第２のネットワークパケットは第２の内部ヘッダを含み、前記第２の内部ヘッダは、ｉ）前記第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）前記第１の送信元アドレスである第２の宛先アドレスとを含み、前記命令はさらに、
前記特定の識別子に基づいて、前記特定の送信元ネットワークに前記第２のネットワークパケットをルーティングすることを含む動作を実行させる、コンピュータ読取可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本明細書は、ネットワークパケットカプセル化およびルーティングに関する。
【背景技術】
【０００２】
ネットワークにわたるデータの送信者および受信者を識別するために、ネットワーク接続されたデバイス間の通信はしばしば、インターネットプロトコル（ＩＰ：internet protocol）アドレスのようなネットワークアドレスを必要とする。ＩＰｖ４ネットワークのようないくつかのネットワークにおいて、ＩＰアドレスはしばしば重複し得、および／または、ネットワークに接続するデバイスの数のほうが多くなり得る。ウェブサーバが多くの異なる送信元ネットワークにウェブベースのサービスを提供するといったように共通ネットワークサービスを提供するために、ＩＰアドレスにおける潜在的な重複に対応する１つのソリューションはネットワークアドレス変換（ＮＡＴ：network address translation）システムである。ＮＡＴシステムは、クライアントのＩＰアドレスを、サーバデバイスがそれによって通信可能であるグローバルアドレスに変換することによって、送信元ネットワークの背後のクライアントがサーバデバイスと通信することを可能にする。ＮＡＴデバイスは典型的に、ピアＮＡＴデバイスと同期しつつ、大量のアドレス変換状態をサポートするための複雑な内部（internals）を必要とする単一のデバイスである。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
本明細書は、ネットワークパケットをカプセル化およびルーティングすることに関する技術を記載する。
【０００４】
一般に、本明細書に記載される主題の１つの革新的な局面は方法において具現化され得、当該方法は、送信元ネットワークから第１のネットワークパケットを、送信元ネットワークの外部であって第２のネットワーク内のエッジデバイスにおいて受信するアクションを含み、第１のネットワークパケットは第１の内部ヘッダを含み、第１の内部ヘッダは、ｉ）第１のネットワークパケットが発信された送信元ネットワークに含まれるユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）第１のネットワークパケットがアドレス指定される宛先サーバを特定する第１の宛先アドレスとを含み、上記方法はさらに、複数のルーティング可能ネットワーク識別子から送信元ネットワークについて送信元ネットワーク識別子を選択するアクションを含み、送信元ネットワーク識別子は送信元アドレスとは異なっており、上記方法はさらに、第１のカプセル化パケット内に第１のネットワークパケットをカプセル化するアクションを含み、第１のカプセル化パケットは第１の外部ヘッダを含み、第１の外部ヘッダは、ｉ）送信元ネットワーク識別子を特定する第１の外部送信元アドレスと、ｉｉ）第１の宛先アドレスである第１の外部宛先アドレスとを含み、上記方法はさらに、第２のネットワーク内において宛先サーバに第１のカプセル化パケットをルーティングするアクションと、宛先サーバから第２のカプセル化パケットを受信するアクションとを含み、第２のカプセル化パケットは第２の外部ヘッダを含む第２のネットワークパケットを含み、第２の外部ヘッダは、ｉ）第２のカプセル化パケットが発信された宛先サーバを特定する第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）第２のカプセル化パケットがアドレス指定される送信元ネットワーク識別子を特定する第２の宛先アドレスとを含み、上記方法はさらに、第２のカプセル化パケットから第２のネットワークパケットを抽出するアクションを含み、第２のネットワークパケットは第２の内部ヘッダを含み、第２の内部ヘッダは、ｉ）第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）第１の送信元アドレスである第２の宛先アドレスとを含み、上記方法はさらに、送信元ネットワークに第２のネットワークパケットをルーティングするアクションを含む。この局面の他の実施形態は、対応するシステム、装置、および、コンピュータストレージデバイス上でエンコードされる、上記方法のアクションを実行するように構成されるコンピュータプログラムを含む。
【０００５】
これらおよび他の実施形態は各々、随意に以下の特徴の１つ以上を含み得る。第１のカプセル化パケット内に第１のネットワークパケットをカプセル化することは、第１のネットワークパケットをカプセル化するためにIP in IPカプセル化を使用することを含んでもよい。第１のカプセル化パケット内に第１のネットワークパケットをカプセル化することは、第１のネットワークパケットをカプセル化するためにGeneric Routing Encapsulationを使用することを含んでもよい。
【０００６】
第１のカプセル化パケットの第１の外部ヘッダはパケットプロトコルフィールドを含んでもよく、第１のカプセル化パケット内に第１のネットワークパケットをカプセル化することは、第１のカプセル化パケットが第１のネットワークパケットをカプセル化していることを示すパケットプロトコルフィールドについての値を特定することを含んでもよい。
【０００７】
宛先サーバに第１のカプセル化パケットをルーティングすることは、第２のネットワーク内においてネットワークロードバランサに第１のカプセル化パケットを提供することを含んでもよい。
【０００８】
エッジデバイスは、第２のネットワーク内における複数のエッジデバイスのうちの１つであってもよく、上記方法はさらに、エッジデバイスが送信元ネットワークと通信していることを特定する到達可能性インジケータを第２のネットワークに同報通信することを含んでもよい。
【０００９】
エッジデバイスは第２のネットワーク内におけるエッジデバイスを一意に識別するエッジデバイス識別子を有してもよく、送信元ネットワークについて選択される送信元ネットワーク識別子はエッジデバイス識別子とは異なってもよい。
【００１０】
送信元ネットワークは、エッジデバイスと通信する複数の送信元ネットワークのうちの１つであってもよく、送信元ネットワーク識別子は複数の送信元ネットワークの各々について選択されてもよく、複数の送信元ネットワークにおける各送信元ネットワークについての送信元ネットワーク識別子は、エッジデバイスと通信する複数の送信元ネットワークについて選択される各他の送信元ネットワーク識別子とは異なってもよい。
【００１１】
エッジデバイスは、第２のネットワーク内における複数のエッジデバイスのうちの１つであってもよく、上記方法はさらに、エッジデバイスが複数の送信元ネットワークと通信していることを特定する到達可能性インジケータを第２のネットワークに同報通信することを含んでもよい。
【００１２】
本明細書に記載される主題の別の革新的な局面は方法において具現化され得る。上記方法は、データ処理装置によってエッジデバイスから第１のカプセル化パケットを受信するアクションと、第１のカプセル化パケットに含まれるパケットプロトコルフィールドに基づいて、第１のカプセル化パケットが第１のネットワークパケットをカプセル化していることを判定するアクションとを含み、判定に応答して、第１のカプセル化パケットの第１の外部ヘッダに含まれる第１の外部送信元アドレスを識別するアクションを含み、第１の外部送信元アドレスは、第１のネットワークパケットが発信された送信元ネットワークを特定し、上記方法はさらに、ネットワーク接続テーブルに第１の外部送信元アドレスを記録するアクションと、第１のカプセル化パケットから第１のネットワークパケットを抽出するアクションとを含み、第１のネットワークパケットは第１の内部ヘッダを含み、第１の内部ヘッダは、ｉ）第１のネットワークパケットが発信されたユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）第１のネットワークパケットがアドレス指定されるデータ処理装置を特定する第１の宛先アドレスとを含み、上記方法はさらに、第１のネットワークパケットを処理するアクションと、第２のネットワークパケットを生成するアクションとを含み、第２のネットワークパケットは第２の内部ヘッダを含み、第２の内部ヘッダは、ｉ）データ処理装置を特定する第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）第２のネットワークパケットがアドレス指定される第１の送信元アドレスである第２の宛先アドレスとを含み、上記方法はさらに、ネットワーク接続テーブルから第１の外部送信元アドレスを得るアクションと、第２のカプセル化パケット内に第２のネットワークパケットをカプセル化するアクションとを含み、第２のカプセル化パケットは第２の外部ヘッダを含む第２のネットワークパケットを含み、第２の外部ヘッダは、ｉ）データ処理装置を特定する第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）第２のカプセル化パケットがアドレス指定される第１の外部送信元アドレスである外部宛先アドレスとを含み、上記方法はさらに、第１の外部送信元アドレスによって特定される送信元ネットワークに第２のカプセル化パケットをルーティングするアクションを含む。この局面の他の実施形態は、対応するシステム、装置、および、コンピュータストレージデバイス上でエンコードされる、上記方法のアクションを実行するように構成されるコンピュータプログラムを含む。
【００１３】
これらおよび他の実施形態は各々、随意に以下の特徴の１つ以上を含み得る。上記方法はさらに、データ処理装置によってネットワークデバイスから第３のネットワークパケットを受信することと、第３のネットワークパケットに含まれるパケットプロトコルフィールドに基づいて、第３のネットワークパケットが別のネットワークパケットをカプセル化していないことを判定することと、第３のネットワークパケットを処理することとを含んでもよい。
【００１４】
データ処理装置およびエッジデバイスは、第１のネットワークパケットが発信された送信元ネットワークとは別個である第２のネットワーク内に存在してもよい。
【００１５】
本明細書に記載される主題の特定の実施形態は、以下の利点の１つ以上を実現するよう実施され得る。送信元ネットワーク上のユーザデバイスは、キャリアグレードＮＡＴデバイスのインフラストラクチャコストなしで、ネットワークアドレスにおける競合を回避する態様で、共通ネットワーク上のサーバまたは他のデバイスと通信し得る。さらに、複数のエッジデバイスを使用するフェイルオーバおよび冗長性のサポートにより、ネットワークデバイスが接続性を失う状況において、デバイス間での状態同期の必要性なくトランスペアレントなフェイルオーバを可能にし、ネットワーク通信における中断を防止する。
【００１６】
本明細書に記載される主題の１つ以上の実施形態の詳細は、添付の図面および以下の説明において記載される。当該主題の他の特徴、局面および利点は、当該説明、図面および請求の範囲から明白になるであろう。
【図面の簡単な説明】
【００１７】
【図１】ネットワークパケットがカプセル化されルーティングされる例示的な環境のブロック図である。
【図２】ネットワークパケットをカプセル化しルーティングするための例示的なプロセスの図である。
【図３】ネットワークパケットがカプセル化されルーティングされる例示的なプロセスのフロー図である。
【図４】宛先デバイスがネットワークパケットカプセル化を使用して動作する例示的なプロセスのフロー図である。
【図５】例示的なデータ処理装置のブロック図である。
【発明を実施するための形態】
【００１８】
さまざまな図における同様の参照番号および指定は同様の要素を示す。
詳細な説明
ネットワークデバイスは、送信元ネットワークからパブリックサーバデバイスへのネットワークパケットのルーティングと、パブリックサーバデバイスから送信元ネットワークデバイスへのネットワークパケットのルーティングとを促進する。たとえば、ユーザデバイスから受信されたネットワークパケットは、カプセル化されサーバデバイスにルーティングされ得、当該サーバデバイスは、カプセル化されたネットワークパケットを処理し、ユーザデバイスに戻るようにルーティングされ得る別のカプセル化されたパケットにより応答する。ルーティングは、ステートフルなネットワークアドレス変換（ＮＡＴ）デバイスを必要とせずに、グローバルに一意であるインターネットプロトコルアドレスを使用して共通ネットワークにわたって実行され得る。
【００１９】
送信元ネットワーク上のユーザデバイスは、インターネットプロトコル（ＩＰ）パケットを送信することにより、共通ネットワークの一部であるパブリックサーバデバイスと通信し得る。ＩＰパケットは一般にヘッダおよびペイロードを含む。ヘッダは、送信元アドレス、宛先アドレス、およびパケットをルーティングおよび送達するための他のメタデータのようなメタデータを特定しており、ペイロードは宛先デバイスについて意図されたデータを含む。送信元ネットワークはしばしばルーティングデバイスを含み、ルーティングデバイスは、当該ルーティングデバイスに接続されたユーザデバイスから送信されたパケットを受信し、また、ルーティングデバイスは、それらの特定された宛先にパケットを転送ルーティングする。ルーティングデバイスはさらに、適切な宛先ユーザデバイスに入力ＩＰパケットをルーティングすることを担い得る。
【００２０】
ルータのようなエッジデバイスは、ウェブサーバのような宛先デバイスを含むとともに送信元ネットワーク上のユーザデバイスから発信されたネットワークパケットを受信する共通ネットワーク内に存在する。各パケットのヘッダは、パケットの送信元としてユーザデバイスを特定する送信元アドレスと、宛先として宛先デバイスを特定する宛先アドレスとを含む。各受信されるパケットの場合、エッジデバイスは、グローバル一意ＩＰアドレスのようなルーティング可能ネットワーク識別子を当該パケットについて選択し、たとえばIP in IPまたはＧＲＥカプセル化を用いてパケットをカプセル化する。外部パケットは、パケットの送信元アドレスとしてルーティング可能ネットワーク識別子を特定する外部ヘッダを含んでおり、パケットがアドレス指定される宛先デバイスを特定するために同じ宛先アドレスを使用する。
【００２１】
エッジデバイスは、宛先デバイスにカプセル化パケットをルーティングする。カプセル化パケットは、宛先デバイスに直接的に提供されてもよく、または、宛先デバイスに最終的に到達する前に、ロードバランサおよび／もしくは別のルータのような第２のネットワーク内の１つ以上の他のデバイスに提供されてもよい。
【００２２】
宛先デバイスは、カプセル化パケットを受信し、カプセル化パケットが第１のネットワークパケットをカプセル化していると判定する。当該判定はたとえば、カプセル化パケットのヘッダに含まれるパケットプロトコルフィールドに基づいてなされ得る。当該判定に基づいて、受信されたパケットは別のパケットをカプセル化し、宛先デバイスは、カプセル化パケットの送信元を識別しネットワーク接続テーブルにおける当該送信元のアドレスを記録する。たとえば、カプセル化パケットの外部ヘッダは、パケットの送信元アドレスとしてルーティング可能ネットワーク識別子を特定するので、宛先デバイスは、そのネットワーク接続テーブルにルーティング可能ネットワーク識別子を記録する。
【００２３】
その後、宛先デバイスは、処理のためにカプセル化パケットから第１のネットワークパケットを抽出する。たとえば、カプセル化パケットの外部ヘッダを除去した後、宛先デバイスが標準的なネットワークパケットを処理するように、パケットが発信されたユーザデバイスの送信元アドレスを含む内部パケットが処理され得る。
【００２４】
宛先デバイスは、第１のネットワークパケットに応答すると、ユーザデバイスのアドレスである宛先アドレスと、宛先デバイスのアドレスである送信元アドレスとを含む応答パケットを生成する。その後、宛先デバイスは、ユーザデバイスに対応するルーティング可能ネットワーク識別子を見つけるためにネットワーク接続テーブルをチェックし、第２のカプセル化パケット内に応答パケットをカプセル化し得る。第２のカプセル化パケットは、ルーティング可能ネットワーク識別子である宛先アドレスと、宛先デバイスのアドレスである送信元アドレスとを含む。その後、宛先デバイスは、送信元ネットワークに第２のカプセル化パケットをルーティングする。
【００２５】
エッジデバイスは、宛先デバイスから第２のカプセル化パケットを直接的または間接的に受信する。エッジデバイスは、宛先デバイスに第１のカプセル化パケットを提供するために使用されるエッジデバイスと同じでもよく、または、異なるエッジデバイスでもよい。エッジデバイスは、第２のカプセル化パケットから応答パケットを抽出し、第２のカプセル化パケットの宛先として含まれる識別子によって識別される送信元ネットワークに応答パケットをルーティングする。
【００２６】
図１は、ネットワークパケットがカプセル化されルーティングされる例示的な環境１００のブロック図である。ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネットまたはその組合せのようなコンピュータネットワーク１０２は、１つ以上の送信元ネットワーク１０４（たとえばプライベートＬＡＮまたはＷＡＮ）、１つ以上のエッジデバイス１０６、１つ以上の外部エッジデバイス１０８、および１つ以上のサーバデバイス１１０を接続する。当該例示的な環境において、エッジデバイス１０６およびサーバデバイス１１０は、コンピュータネットワーク１０２および送信元ネットワーク１０４と別個の第２のＬＡＮまたはＷＡＮのような第２のネットワーク１１２内で動作する。
【００２７】
送信元ネットワーク１０４はたとえば、ホームネットワーク、ビジネスネットワークおよびクラウドコンピューティングネットワークを含み、これらのネットワークの各々は、モデムまたはルータのような送信元ネットワークの外部と通信するための少なくとも１つのネットワークデバイスを含む。ホームネットワークはたとえば、ホームルータおよび／またはモデムデバイスに接続されたデスクトップおよびラップトップパーソナルコンピュータ、タブレットコンピュータおよび／またはスマートフォンといったユーザデバイスを含んでもよい。別の例として、ビジネスネットワークは、ＷＡＮにおいてルータおよび／またはモデムデバイスを介して接続されるパーソナルコンピュータおよびサーバコンピュータのような多くのユーザデバイスを含んでもよい。クラウドコンピューティングネットワークは、たとえばクラウドコンピューティングサーバ、または、１つ以上のクラウドコンピューティングサーバコンピュータ上のバーチャルマシンのインスタンスの形態にあるユーザデバイスを含み得る別のタイプのパーソナルネットワークであり、各クラウドサーバは、ネットワーク通信目的のために、モデムおよび／もしくはルータを含むかまたはモデムおよび／もしくはルータに接続される。
【００２８】
送信元ネットワーク１０４に含まれるデバイスは、他の送信元ネットワークに接続されたデバイスおよびコンピュータネットワーク１０２に接続されたデバイスといった他のデバイスと通信する。デバイスとネットワークとの間の通信は、デバイス間でネットワークパケットを送信することにより実行され得る。ネットワークパケットはパケット交換ネットワーク（packet-switched network）による送信のためにフォーマットされたデータである。ネットワークパケットはたとえば、パケットの送信元、宛先、パケットプロトコルおよび他のタイプの情報のようなネットワークパケットに関する情報を特定するヘッダといった制御データを含む。ネットワークパケットはさらに、たとえば受信デバイスによる処理のために意図されたデータといったペイロードデータを含む。例示的なネットワークパケットは、たとえばＴＣＰ、ＵＤＰおよび／またはＩＣＭＰパケットプロトコルを用いるＩＰｖ４ネットワークパケットを含む。
【００２９】
エッジデバイス１０６および外部エッジデバイス１０８は、ネットワーク接続されたデバイスからネットワークパケットを受信し、宛先ネットワークデバイスにパケットをルーティングする。エッジデバイス１０６および外部エッジデバイス１０８はたとえば、ネットワークパケットを受信し、ネットワークパケットヘッダに含まれる情報に基づいて当該ネットワークパケットをルーティングするネットワークルータを含む。エッジデバイス１０６は、第２のネットワーク１１２内に存在するとともに、たとえば送信元ネットワークルータデバイスから送信されたネットワークパケットを受信し、第２のネットワーク１１２内のサーバデバイス１１０にネットワークパケットをルーティングする。外部エッジデバイス１０８は第２のネットワーク１１２内に存在しておらず、いくつかの実現例ではさらにサーバデバイス１１０にネットワークパケットをルーティングし得る。外部エッジデバイス１０８はさらに、第２のネットワーク１１２に含まれていない他のデバイスにネットワークパケットをルーティングし得る。
【００３０】
サーバデバイス１１０は、エッジデバイス１０６および外部エッジデバイス１０８によって提供されるネットワークパケットを受信し、処理し、応答するサーバコンピュータを含む。サーバデバイスはたとえば、ウェブサイトをホストするウェブサーバと、クラウドストレージ管理ソリューションを提供するクラウドストレージサーバと、大量のデータを処理するために使用される分散処理システムサーバとを含む。多くの他のタイプのサーバデバイス１１０が第２のネットワーク１１２に含まれてもよい。
【００３１】
多くのユーザデバイス、送信元ネットワーク、外部エッジデバイスおよび第２のネットワークが存在してもよく、コンピュータネットワーク１０２を使用して互いに通信してもよい。ＩＰｖ４ネットワークのようなコンピュータネットワーク１０２を使用してデバイス間の通信を可能にするために、ネットワークを使用して通信する各デバイスは、たとえばＩＰアドレスといった、ネットワーク接続された他のデバイスと通信するために使用されるネットワークアドレスを有する。各ネットワークデバイスのネットワークアドレスは、ネットワーク上のネットワークデバイスの位置を識別する。ネットワークアドレスの数は有限であり、たとえば利用可能なネットワークアドレスより多くのネットワークデバイスが存在する場合のようにネットワークアドレスがネットワークデバイスに一意に割り当てられない状況においては、ネットワークアドレシングにおける競合（conflict）によって、データ損失および通信中断のような問題が引き起こされ得る。本願明細書において記載されるネットワークカプセル化およびルーティング技術は、ネットワークアドレスにおける競合を回避するように設計された態様で、ネットワーク接続されたデバイス間の通信を促進する。
【００３２】
例として、送信元ネットワーク内のユーザデバイスのＩＰアドレスは、ネットワークルータによって割り当てられ得る。送信元ネットワーク内のデバイスのＩＰアドレスは送信元ネットワーク内において一意であるが、必ずしもグローバルに一意でない（たとえばインターネットに接続された他のデバイスに対して一意でない）。ユーザデバイスは、送信元ネットワークルータにネットワークパケットを送信し、同様にＩＰアドレスを有する当該送信元ネットワークルータは、ウェブサイトをホストするウェブサーバのようなネットワークパケットによって特定される宛先サーバデバイスに当該ネットワークパケットを転送する。インターネットにわたってネットワークパケットが採る経路は変化し、当該経路はたとえば、インターネットサービスプロバイダデバイスと、ドメインネームサーバ（ＤＮＳ：Domain Name Server）と、ロードバランサと、インターネットの「バックボーン」を含む他のネットワークデバイスとを通るルーティングを含み得る。いくつかの実現例において、送信元ネットワークルータは、エッジデバイス１０６への直接的な接続または所定の経路を有してもよく、これにより、ネットワークパケットがインターネットのバックボーンを横断する必要性が除去される。たとえば、第２のネットワーク１１２に関連するクラウドコンピューティングネットワークには、第２のネットワーク１１２のエッジデバイス１０６に接続するために直接的な接続または所定のルートが与えられ得る。
【００３３】
送信元ネットワークルータから送信されたネットワークパケットはエッジデバイスに到達し、当該エッジデバイスは、第２のネットワーク１１２に入るとともにサーバデバイス１１０のうちの１つに宛先を設定されたネットワークトラフィックをルーティングする。受信されたネットワークパケットは、パケットの送信元として送信元ネットワークルータのＩＰアドレスを識別するとともにパケットについての宛先として宛先サーバＩＰアドレス（たとえばサーバデバイス１１０の１つ）を識別するヘッダを含む。たとえばプライベートルータのＩＰアドレスといった送信元アドレスは一意ではない場合があり、エッジデバイスは、一意に送信元ネットワークを識別するために送信元ネットワーク識別子を選択し、たとえばＧＲＥまたはＩＰＩＰカプセル化を使用して送信元ネットワーク識別子によりネットワークパケットをマーキングし、その後、宛先サーバデバイスへネットワークパケットを転送する。
【００３４】
宛先サーバデバイスは、マーキングまたはカプセル化されたネットワークパケットを受信し、それをカプセル化されたパケットであると識別し、送信元ネットワーク識別子をネットワーク接続テーブルに記録し、内部ネットワークパケットを抽出し処理する。ユーザデバイスに応答する際、サーバデバイスはたとえば、当該パケットについての宛先としてユーザデバイスのＩＰアドレスといった内部送信元アドレスを使用してネットワークパケットを作成する。次いで、サーバデバイスは、第２のパケットのヘッダにおける宛先として、たとえば接続テーブルからの送信元ネットワーク識別子を使用して、第２のパケット内にネットワークパケットをカプセル化する。その後、パケットはユーザデバイスへの送達のためにエッジデバイスへ転送される。
【００３５】
エッジデバイスは、宛先サーバからカプセル化されたパケットを受信すると、送信元ネットワーク識別子を外部ヘッダによって特定された宛先として識別し、内部ネットワークパケットから外部ヘッダを除去し、送信元ネットワーク識別子によって識別された送信元ネットワークの送信元ネットワークルータへ内部ネットワークパケットを転送する。その後、送信元ネットワークルータは、処理のためにユーザデバイスにネットワークパケットを送信する。
【００３６】
図２は、ネットワークパケットをカプセル化しルーティングするための例示的なプロセス２００の図である。送信元ネットワーク２０２はルータ２０４およびユーザデバイス２０６を含む。当該例示的な送信元ネットワークは１つのルータ２０４と３つのユーザデバイス２０６とを含んでいるが、任意数のルータおよびユーザデバイスが送信元ネットワーク２０２に含まれてもよく、また、ハードウェアまたはソフトウェアで実現されてもよいルータ２０４は１つ以上のユーザデバイス２０６に含まれ得る。
【００３７】
送信元ネットワーク２０２から送信されるイングレスパケット（ingress packet）について、ネットワークパケット２１０は、送信元ネットワーク２０２から共通ネットワーク２６０のエッジにおけるエッジデバイス２３０に送信される。ネットワークパケット２１０は、ユーザデバイス２０６および／または送信元ネットワークルータ２０４のうちの１つから発信され、ペイロードＰ１と、送信元アドレスＳ１および宛先アドレスＤ１を特定するヘッダ２１２とを含む。たとえば、Ｓ１は送信元ネットワークルータ２０４のＩＰアドレスであり得る一方、Ｄ１はネットワークパケット２１０がアドレス指定されるサーバデバイス２５０のＩＰアドレスであり得る。
【００３８】
共通ネットワーク２６０内に存在するエッジデバイス２３０は、ネットワークパケット２１０を受信し、送信元ネットワーク２０２についてたとえば送信元ネットワーク識別子Ｓ２を選択する。送信元ネットワーク識別子はたとえば、一意であるとエッジデバイス２３０が認識している識別子のリストに基づいて選択され得る。送信元ネットワーク識別子は、共通ネットワーク２６０に対して一意の別のＩＰアドレスまたは別のタイプの識別子であり得る。いくつかの実現例において、エッジデバイス２３０はさらに、共通ネットワーク２６０上のエッジデバイス２３０を一意に識別するネットワーク識別子を有し得、エッジデバイス２３０によって選択される任意の送信元ネットワーク識別子もエッジデバイス２３０のネットワーク識別子とは異なる。したがって、例示的なプロセス２００において、識別子Ｓ２は送信元ネットワーク２０２を一意に識別する。
【００３９】
さらに、１つの送信元ネットワーク２０２と１つのエッジデバイス２３０だけが例示的なプロセス２００に示されているが、複数の送信元ネットワークがエッジデバイス２３０に接続されてもよく、複数のエッジデバイスが共通ネットワーク２６０において使用されてもよく、その各々は任意数の他の送信元ネットワークに接続されてもよい。各送信元ネットワーク識別子はたとえば、利用可能性に基づき時間にわたって変化する利用可能な識別子のプールから動的に選択され得る。通信セッションの間、第２のネットワークと通信するために使用される送信元ネットワーク識別子およびエッジデバイスは同じままであり得るが、別の通信セッションの間、同じ送信元ネットワークは同じまたは異なるエッジデバイスに接続し得、その通信セッションについて同じ送信元ネットワーク識別子または異なる送信元ネットワーク識別子が割り当てられ得る。
【００４０】
エッジデバイス２３０は、ネットワークパケット２１０を送信元ネットワーク識別子Ｓ２によりマーキングする。例示的なプロセス２００において、エッジデバイス２３０は、第１のカプセル化パケット２２０を形成するためにパケットをカプセル化する。ネットワークパケット２１０をマーキングするために、Generic Routing Encapsulation（ＧＲＥ）またはInternet Protocol within Internet Protocol（ＩＰＩＰ）カプセル化のような複数の方法が使用され得る。第１のカプセル化パケット２２０はＩＰＩＰカプセル化の例であり、第１のカプセル化パケット２２０を作成するために新しいヘッダ２２２がネットワークパケット２１０に追加される。新しいヘッダ２２２は、第１のカプセル化パケット２２０がサーバデバイス２５０にまだ宛先設定されているので、同じ宛先アドレスＤ１を含む。新しいヘッダ２２２の送信元アドレスＳ２は、エッジデバイス２３０によって選択される送信元ネットワーク識別子である。いくつかの実現例において、新しいヘッダ２２２はさらに、パケットプロトコルを特定する値を含むパケットプロトコルフィールドを含む。この値はさらに、新しいヘッダ２２２がカプセル化されたパケットのためのものであることを示し得る。
【００４１】
いくつかの実現例では、送信元ネットワーク２０２からエッジデバイス２３０への相互接続は、ネットワーク間で到達可能性（reachability）をアドバタイジング（発信）するために標準的なルーティングプロトコルを動作させる。いくつかの実現例において、共通ネットワークのエッジに静的なルートが作成され得る。たとえば、標準的なボーダゲートウェイプロトコル（ＢＧＰ：border gateway protocol）セッションが送信元ネットワークルータ２０４とエッジデバイス２３０との間に確立され得る。その後、エッジデバイス２３０はたとえば、それを通じて送信元ネットワーク２０２に到達可能である仮想ＩＰアドレスといった送信元ネットワーク識別子をアドバタイジングまたは同報通信し得る。送信元ネットワークルータ２０４は、たとえば送信元ネットワーク２０２にサマリーをアドバタイジングすることによって、送信元ネットワーク２０２への自身の接続性をアドバタイジングし得る。エッジデバイス２３０はさらに、他のエッジデバイスを含む共通ネットワーク２６０上の他のデバイスが、送信元ネットワークが到達され得る送信元ネットワーク識別子およびエッジデバイスを認識するように、送信元ネットワーク２０２へのルートを受信したことに応答して、送信元ネットワーク２０２の送信元ネットワーク識別子を共通ネットワーク２６０の共通バックボーン２４０内にアドバタイジングするように構成され得る。
【００４２】
いくつかの実現例において、冗長性およびフェイルオーバサポートを導入するための方法も実現され得る。たとえば、送信元ネットワーク２０２は、エッジデバイス２３０に到達可能性インジケータ（reachability indicator）を同報通信し得る。当該インジケータは、送信元ネットワークのサマリーであり得るか、または、別のルートであり得る。当該インジケータは、たとえばＢＧＰにおいて実現され得、これにより、ルートをアドバタイジングするための実現例を提供する。到達可能性インジケータの受信時に、エッジデバイス２３０は、共通ネットワーク２６０の共通バックボーン２４０内に送信元ネットワーク２０２をアドバタイジングする。この状況において、複数のエッジデバイスは同じ送信元ネットワーク識別子をアドバタイジングし得、共通ネットワーク２６０のデバイスまたは送信元ネットワーク２０２のデバイスのいずれかの障害の場合に冗長性を提供する。
【００４３】
エッジデバイス２３０は、サーバデバイス２５０に第１のカプセル化パケット２２０をルーティングする。いくつかの実現例では、例示的なプロセス２００でのように、第１のカプセル化パケット２２０は、共通ネットワーク２６０の共通バックボーン２４０を構成する１つ以上のデバイスへ転送される。これらのデバイスはたとえば、ロードバランサと、パケット処理エンジンと、ルータとを含み、任意の必要なルックアップ／再カプセル化プロセスを実行し得、最後に、第１のカプセル化パケット２２０をサーバデバイス２５０へ転送する。
【００４４】
サーバデバイス２５０は、第１のカプセル化パケット２２０の新しいヘッダ２２２に含まれるパケットプロトコルフィールドに基づいて、第１のカプセル化パケット２２２が別のパケットをカプセル化していることを判定する。この判定に基づいて、サーバデバイス２５０は、たとえば送信元ネットワーク識別子Ｓ２といった新しいヘッダ２２２の送信元アドレスをそのネットワーク接続テーブル２５２に記録する。ネットワーク接続テーブル２５２は、ＩＰアドレス情報、ネットワーク識別子、ポート、プロトコルなどのような、さまざまなネットワークデバイスとのネットワーク通信を管理するためにサーバデバイスによって使用されるデータを含む。
【００４５】
サーバデバイス２５０は第１のカプセル化パケット２２０から第１のネットワークパケット２１０を抽出する。使用されるカプセル化またはマーキングの他の方法のタイプ（種類）に依存して、第１のネットワークパケットを抽出するために異なる方法が使用されてもよい。たとえばＩＰＩＰカプセル化を使用する場合、たとえば新しいヘッダ２２２のような外部ヘッダは、無視または廃棄され得る。第１のネットワークパケット２１０を抽出した後、サーバデバイス２５０は、処理のために受信される標準的なネットワークパケットのように、たとえばその通常のカーネルパイプラインを通じて当該パケットを扱う。
【００４６】
リターン／エグレスパケット（return/egress packet）にて応答する際、サーバデバイス２５０は、ペイロードＰ２を含む応答パケット２７０と、第１のネットワークパケット２１０が発信されたユーザデバイスおよび／または送信元ネットワークルータのアドレスとして応答パケットの宛先を特定するヘッダ２７２とを生成する。言いかえれば、第１のネットワークパケットＳ１の送信元は応答パケット２７０の宛先である。応答パケット２７０の送信元Ｄ１はサーバデバイス２５０のアドレスである。
【００４７】
応答パケット２７０を生成した後、サーバデバイス２５０はネットワーク接続テーブル２５２から送信元ネットワーク識別子を得、たとえば第２のカプセル化パケット２８０に応答パケットをカプセル化することによって、応答パケットを送信元ネットワーク識別子でマーキングする。例示的なプロセス２００において、第２のカプセル化パケット２８０は、宛先として送信元ネットワーク識別子Ｓ２を特定するとともに送信元としてサーバデバイス２５０のアドレスＤ１を特定する外部ヘッダ２８２を含む。応答パケット２７０をカプセル化した後、サーバデバイス２５０は、たとえば共通バックボーン２４０およびエッジデバイス２３０を通じて、または、共通ネットワーク２６０に含まれる異なるエッジデバイスを通じて、送信元ネットワーク２０２に第２のカプセル化パケット２８０をルーティングする。
【００４８】
いくつかの実現例では、さらに、サーバデバイス２５０は、上で記載されたルーティングおよびカプセル化プロセスを経ていないデバイスと通信することが可能である。たとえば、サーバデバイス２５０と通信するとともに、たとえば、インターネットを使用して通信する非関連送信元ネットワークといった共通ネットワーク２６０のエッジデバイスと関連しない送信元ネットワークは、ネットワークパケットを抽出およびカプセル化する必要性なしにサーバデバイスと通信し得る。この状況において、サーバデバイス２５０は、共通ネットワーク２６０内に存在しないネットワークデバイスからネットワークパケットを受信し得、ネットワークパケットのパケットプロトコルフィールドに基づいて、ネットワークパケットはカプセル化パケットではないことを判定し得、ネットワークパケットを正常に処理し得る。たとえば、これらのネットワークパケットに対する応答は、カプセル化される必要はなく、または、共通ネットワーク２６０の共通バックボーン２４０を通じてルーティングされる必要はない。
【００４９】
エッジデバイス２３０、または、いくつかの実現例では送信元ネットワーク識別子が、アドバタイジングされた別のエッジデバイスは、サーバデバイス２５０から送信された第２のカプセル化パケット２８０を受信する。エッジデバイス２３０は、たとえば外部ヘッダ２８２を除去することによって、第２のカプセル化パケット２８０から応答パケット２７０を抽出する。その後、エッジデバイス２３０は、送信元ネットワーク２０２に応答パケット２７０をルーティングする。例示的なプロセス２００において、送信元ネットワークルータ２０４は応答パケット２７０を受信し、たとえば送信元ネットワーク２０２内の適切なユーザデバイスへパケットを転送することによってパケットを正常に処理し得る。
【００５０】
例示的なプロセス２００は単一の送信元ネットワーク、エッジデバイスおよびサーバデバイスを示しているが、上に記載されたルーティングおよびカプセル化技術は、多くの他のネットワーク構成において使用されてもよい。上に示されるように、共通ネットワーク２６０は多くのエッジデバイスおよびサーバデバイスを含み得る。いくつかの実現例において、エッジデバイスは、たとえば共通バックボーン２１０を通じてネットワークパケットをルーティングすることなくサーバデバイスと直接的に通信し得る。送信元ネットワークは、いくつかの実現例において、たとえば送信元ネットワークが共通ネットワークに直接的に接続されるクラウドコンピューティングネットワークであることを必要とすることによって、共通ネットワーク２６０との関連性は、上に記載された方法を使用して共通ネットワークと通信する資格があることを必要とする。
【００５１】
図３は、ネットワークパケットがカプセル化されルーティングされる例示的なプロセス３００のフロー図である。例示的なプロセス３００はエッジデバイスのようなデータ処理装置によって実現されてもよい。
【００５２】
第１のネットワークパケットは、送信元ネットワークの外部であって第２のネットワーク内のエッジデバイスにて、送信元ネットワークから受信される（３０２）。第１のネットワークパケットは第１の内部ヘッダを含み、第１の内部ヘッダは、ｉ）第１のネットワークパケットが発信された送信元ネットワークに含まれるユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）第１のネットワークパケットがアドレス指定される宛先サーバを特定する第１の宛先アドレスとを含む。たとえば、エッジデバイスは送信元ネットワークからネットワークプロトコルパケットを受信し得、ヘッダはパケットを送信した送信元ネットワーク上のユーザデバイスのＩＰアドレスを特定する一方、宛先アドレスは第２のネットワーク上に位置する宛先サーバデバイスのＩＰアドレスを特定する。
【００５３】
複数のルーティング可能ネットワーク識別子から送信元ネットワーク識別子が送信元ネットワークについて選択される（３０４）。送信元ネットワーク識別子は送信元アドレスとは異なる。いくつかの実現例において、ルーティング可能ネットワーク識別子は、第２のネットワーク内でのみルーティング可能である必要がある。たとえば、エッジデバイスは、第２のネットワーク上において一意であると既知である文字ストリングのセットを有し得、それらの一意の文字ストリングのうちの１つは、送信元ネットワークについての送信元ネットワーク識別子として選択され得る。いくつかの実現例において、エッジデバイスは第２のネットワーク内のエッジデバイスを一意に識別するエッジデバイス識別子を有し、送信元ネットワークについて選択された送信元ネットワーク識別子はエッジデバイス識別子とは異なる。ネットワーク識別子としてＩＰアドレスを使用する例において、送信元ネットワーク識別子は第２のネットワークに対して一意のＩＰアドレスであり得る。たとえば、エッジデバイスのＩＰアドレスと同じではない。
【００５４】
いくつかの実現例において、送信元ネットワークは、エッジデバイスと通信する複数の送信元ネットワークのうちの１つである。送信元ネットワーク識別子は送信元ネットワークの各々について選択され、また、各送信元ネットワーク識別子は、エッジデバイスと通信する送信元ネットワークについて選択される各他の送信元ネットワーク識別子とは異なる。たとえば、１０個の異なる送信元ネットワークに接続されるエッジデバイスは、それらの各々に割り当てられた１０個の異なるＩＰアドレスを有し得る。ＩＰアドレスは、第２のネットワーク内における対応する送信元ネットワークを一意に識別し得る。
【００５５】
第１のネットワークパケットは第１のカプセル化パケット内にカプセル化される（３０６）。第１のカプセル化パケットは第１の外部ヘッダを含み、第１の外部ヘッダは、ｉ）送信元ネットワーク識別子を特定する第１の外部送信元アドレスと、ｉｉ）第１の宛先アドレスである第１の外部宛先アドレスとを含む。いくつかの実現例において、ＩＰＩＰカプセル化は、第１のカプセル化パケット内に第１のネットワークパケットをカプセル化するために使用される。いくつかの実現例において、ＧＲＥは第１のカプセル化パケット内に第１のネットワークパケットをカプセル化するために使用される。例として、第１のネットワークパケットは、第１のネットワークパケットと同じ宛先アドレスを特定するが送信元として送信元ネットワーク識別子を含む外部ヘッダの先頭に付加され得る。
【００５６】
いくつかの実現例において、第１のカプセル化パケットの第１の外部ヘッダは、パケットプロトコルフィールドを含み、第１のカプセル化パケット内に第１のネットワークパケットをカプセル化することは、第１のカプセル化パケットが第１のネットワークパケットをカプセル化することを示すパケットプロトコルフィールドについての値を特定することを含む。たとえば、所定の文字ストリングは、当該パケットがカプセル化パケットであるということをヘッダを読み出すデバイスに示す外部ヘッダのパケットプロトコルフィールドに配置され得る。
【００５７】
第１のカプセル化パケットは第２のネットワーク内の宛先サーバにルーティングされる（３０８）。いくつかの実現例では、複数のネットワークデバイスを含み得る第２のネットワークについての共通バックボーンは、エッジデバイスから宛先サーバにパケットをルーティングするために使用され得る。たとえば、第１のカプセル化パケットは第２のネットワーク内のネットワークロードバランサに提供され得る。ネットワークロードバランサは、宛先サーバにどのようにパケットがルーティングされるべきであるかを決定し得る。
【００５８】
第２のネットワークパケットを含む第２のカプセル化パケットが宛先サーバから受信される（３１０）。第２のネットワークパケットは第２の外部ヘッダを含み、第２の外部ヘッダは、ｉ）第２のカプセル化パケットが発信された宛先サーバを特定する第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）第２のカプセル化パケットがアドレス指定される送信元ネットワーク識別子を特定する第２の宛先アドレスとを含む。たとえば、エッジデバイスによって受信される第２のカプセル化パケットは、第１のカプセル化パケットがアドレス指定された宛先サーバによって送信された。第２のカプセル化パケットは、第１のカプセル化パケットの外部ヘッダにおける送信元アドレスとして特定された送信元ネットワーク識別子にアドレス指定される。
【００５９】
第２のネットワークパケットは、第２のカプセル化パケットから抽出される（３１２）。第２のネットワークパケットは第２の内部ヘッダを含み、第２の内部ヘッダは、ｉ）第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）第１の送信元アドレスである第２の宛先アドレスとを含む。たとえば、内部パケットは、オリジナルのネットワークパケットが受信されたユーザデバイスにアドレス指定される。
【００６０】
第２のネットワークパケットは送信元ネットワークにルーティングされる（３１４）。たとえば、エッジデバイスは、送信元ネットワークに含まれるルータに第２のネットワークパケットを転送し、ルータは、第１のネットワークパケットが発信されたパーソナルコンピュータまたは他のユーザデバイスに第２のネットワークパケットを転送する。
【００６１】
図４は、宛先デバイスがネットワークパケットカプセル化を使用して動作する例示的なプロセス４００のフロー図である。例示的なプロセス４００は、サーバデバイスのようなデータ処理装置によって実現され得る。
【００６２】
第１のカプセル化パケットは、データ処理装置によって、エッジデバイスから受信される（４０２）。いくつかの実現例において、エッジデバイスとデータ処理装置とは、１つ以上の外部ネットワークとは別個の共通ネットワークの一部である。たとえば、エッジデバイスおよびサーバデバイスの両方は、インターネットおよび／または送信元ネットワークのような外部ネットワークに接続されるＬＡＮの一部であり得る。
【００６３】
第１のカプセル化パケットに含まれるパケットプロトコルフィールドに基づいて、プロセス４００は、第１のカプセル化パケットが第１のネットワークパケットをカプセル化していることを判定する（４０４）。いくつかの実現例において、データ処理装置は、パケットプロトコルフィールドを調べる前に、受信されたパケットが別のパケットをカプセル化していることを認識していない場合がある。パケットプロトコルフィールドはたとえば、受信されたパケットがカプセル化パケットであるということを特定する値を含み得る。
【００６４】
第１のカプセル化パケットが第１のネットワークパケットをカプセル化しているという判定に応答して、第１のカプセル化パケットの第１の外部ヘッダに含まれる第１の外部送信元アドレスが識別される（４０６）。第１の外部送信元アドレスは、第１のネットワークパケットが発信された送信元ネットワークを特定する。
【００６５】
第１の外部送信元アドレスは、ネットワーク接続テーブルに記録される（４０８）。たとえば、第１のカプセル化パケットを受信したサーバデバイスは、第１の外部送信元アドレスと、パケットが発信された送信元ネットワークとの通信を確立することに関連する任意の他のデータとをその接続テーブルに記録する。
【００６６】
第１のネットワークパケットが第１のカプセル化パケットから抽出される（４１０）。第１のネットワークパケットは、第１の内部ヘッダを含み、第１の内部ヘッダは、ｉ）第１のネットワークパケットが発信されたユーザデバイスを特定する第１の送信元アドレスと、ｉｉ）第１のネットワークパケットがアドレス指定されるデータ処理装置を特定する第１の宛先アドレスとを含む。たとえば、第１の送信元アドレスは、パーソナルコンピュータのＩＰアドレスおよび／または送信元ネットワークのルータであり得、第１の宛先アドレスは、サーバデバイスのＩＰアドレスを特定し得る。
【００６７】
第１のネットワークパケットが処理される（４１２）。サーバデバイスは、第１のパケットを処理するためにその標準的な処理方法を使用し得る。たとえば、パケットに含まれるペイロードがサーバデバイスからコンテンツを要求する場合、サーバデバイスは、たとえばサーバデバイスに接続された１つ以上のストレージデバイス上でおいて、要求されたコンテンツの位置を突きとめ得、当該要求を行ったユーザデバイスへの送信のためにコンテンツを準備し得る。
【００６８】
第２のネットワークパケットが生成される（４１４）。第２のネットワークパケットは第２の内部ヘッダを含み、第２の内部ヘッダは、ｉ）データ処理装置を特定する第１の宛先アドレスである第２の送信元アドレスと、ｉｉ）第２のネットワークパケットがアドレス指定される第１の送信元アドレスである第２の宛先アドレスとを含む。たとえば、第２の送信元アドレスはサーバデバイスのＩＰアドレスであり得、第２の宛先アドレスはユーザデバイスのＩＰアドレスであり得る。
【００６９】
第１の外部送信元アドレスがネットワーク接続テーブルから得られる（４１６）。たとえば、サーバデバイスはたとえば、第１のネットワークパケットが発信された送信元ネットワークの識別子を含む第１のネットワークパケットに応答するために必要なデータをローカルストレージから抽出し得る。
【００７０】
第２のネットワークパケットが第２のカプセル化パケット内にカプセル化される（４１８）。第２のカプセル化パケットは第２のネットワークパケットと第２の外部ヘッダとを含み、第２の外部ヘッダは、ｉ）データ処理装置を特定する第１の宛先アドレスである第２の外部送信元アドレスと、ｉｉ）第２のカプセル化パケットがアドレス指定される第１の外部送信元アドレスである外部宛先アドレスとを含む。たとえば、サーバデバイスは、第２のネットワークパケットについて外部ヘッダを作成するためにＩＰＩＰカプセル化を使用し得、外部ヘッダは、その宛先として送信元ネットワーク識別子を特定し、送信元としてＩＰアドレスサーバデバイスを特定する。
【００７１】
第２のカプセル化パケットは、第１の外部送信元アドレスによって特定される送信元ネットワークにルーティングされる（４２０）。たとえば、サーバデバイスは、第１のカプセル化パケットが受信されたエッジデバイスに第２のカプセル化パケットを直接的または間接的に転送し得、エッジデバイスは内部パケットを除去し、適切な送信元ネットワークへ内部パケットを転送し得る。いくつかの実現例において、エッジデバイスおよびデータ処理装置は、第１のネットワークパケットが発信された送信元ネットワークと別個の第２のネットワーク内に存在する。
【００７２】
いくつかの実現例では、エッジデバイスは、サーバデバイスを含む第２のネットワーク内の複数のエッジデバイスのうちの１つであり、エッジデバイスが送信元ネットワークと通信していることを特定する到達可能性インジケータが第２のネットワークに同報通信される。たとえば、エッジデバイスは、たとえば第２のネットワークのバックボーンおよび／または第２のネットワークにおける他のエッジデバイスに、エッジデバイスが通信している送信元ネットワークをアドバタイジングし得る。エッジデバイスと送信元ネットワークとの間の通信網のアドバタイジングにより、第２のネットワークを介する通信のルーティングが促進され得るとともに、障害を起こした可能性のあるエッジデバイスについて他のエッジデバイスが引き継ぐこと可能にすることによってエッジデバイス障害保護が提供される。
【００７３】
いくつかの実現例において、データ処理装置はネットワークデバイスから第３のネットワークパケットを受信する。たとえば、ネットワークデバイスは、サーバデバイスおよびエッジデバイスが存在する共通ネットワークの外部であるネットワークルータであり得る。第３のネットワークパケットに含まれるパケットプロトコルフィールドに基づいて、第３のネットワークパケットが別のネットワークパケットをカプセル化していないことが判定され得る。その判定を行うことに応答して、サーバデバイスは、たとえば標準的なネットワークルーティング方法を使用して第３のネットワークパケットを処理し得る。たとえば、この実現例では、サーバデバイスは、カプセル化されたネットワークパケットおよび標準的なネットワークパケットを受信することと、どのタイプのネットワークパケットが受信されるか判定することと、受信されたネットワークパケットのタイプに依存して適切に応答することとが可能である。
【００７４】
図５は、例示的なデータ処理装置５００のブロック図である。システム５００は、プロセッサ５１０、メモリ５２０、ストレージデバイス５３０および入出力デバイス５４０を含む。コンポーネント５１０、５２０、５３０および５４０の各々はたとえば、システムバス５５０を使用して相互接続され得る。プロセッサ５１０はシステム５００内での実行のための命令を処理することが可能である。１つの実現例において、プロセッサ５１０はシングルスレッドのプロセッサである。別の実現例において、プロセッサ５１０はマルチスレッドのプロセッサである。プロセッサ５１０は、メモリ５２０内またはストレージデバイス５３０上に格納される命令を処理することが可能である。
【００７５】
メモリ５２０はシステム５００内に情報を格納する。１つの実現例において、メモリ５２０はコンピュータ読取可能媒体である。１つの実現例において、メモリ５２０は揮発性メモリユニットである。別の実現例において、メモリ５２０は不揮発性メモリユニットである。
【００７６】
ストレージデバイス５３０はシステム５００のためにマスストレージ（mass storage）を提供することが可能である。１つの実現例において、ストレージデバイス５３０はコンピュータ読取可能媒体である。さまざまな異なる実現例において、ストレージデバイス５３０はたとえば、ハードディスクデバイス、光ディスクデバイス、または、何らかの他の大容量ストレージデバイスを含み得る。
【００７７】
入出力デバイス５４０はシステム５００に対して入出力動作を提供する。１つの実現例において、入出力デバイス５４０は、たとえばイーサネット（登録商標）カード、たとえばＲＳ−２３２ポートのようなシリアル通信デバイス、および／または、たとえば８０２．１１カードのような無線インターフェイスデバイスといった１つ以上のネットワークインターフェイスデバイスを含み得る。別の実現例において、入出力デバイスは、入力データを受信し、かつ、たとえばキーボード、プリンタおよび表示デバイス５６０といった他の入出力デバイスに出力データを送信するように構成されるドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどといった他の実現例も使用され得る。
【００７８】
主題の実施形態および本明細書に記載される動作は、デジタル電子回路において、または、本明細書において開示された構造およびそれらの構造等価物を含むコンピュータソフトウェア、ファームウェアまたはハードウェアにおいて、または、それらの１つ以上の組合せにおいて実現され得る。本明細書に記載される主題の実施形態は、１つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するためにコンピュータストレージ媒体上でエンコードされたコンピュータプログラム命令の１つ以上のモジュールとして実現され得る。
【００７９】
コンピュータストレージ媒体は、コンピュータ読取可能ストレージデバイス、コンピュータ読取可能ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、または、それらの１つ以上の組合せであり得るか、または、それらに含まれ得る。さらに、コンピュータストレージ媒体は伝播された信号でないが、コンピュータストレージ媒体は、人工的に生成された伝播された信号においてエンコードされたコンピュータプログラム命令の送信元または宛先であり得る。コンピュータストレージ媒体は、１つ以上の別個の物理コンポーネントまたは媒体（たとえば複数のＣＤ、ディスクまたは他のストレージデバイス）であり得るか、または、これらに含まれ得る。
【００８０】
本明細書において記載された動作は、１つ以上のコンピュータ読取可能ストレージデバイス上に格納されたデータまたは他の送信元から受信されたデータに対してデータ処理装置によって実行される動作として実現され得る。
【００８１】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、システムオンチップ、または前述のもののうちの複数すなわち組合せを含む、データを処理するためのすべての種類の装置、デバイスおよびマシンを包含する。当該装置は、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）といった特定目的論理回路を含み得る。当該装置は、ハードウェアに加えて、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、バーチャルマシン、または、それらの１つ以上の組合せを構成するコードといった、当該コンピュータプログラムについて実行環境を作成するコードをさらに含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャといったさまざまな異なるコンピューティングモデルインフラストラクチャを実現可能である。
【００８２】
（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトまたはコードとしても既知である）コンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、宣言型もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくは、コンピューティング環境で使用するのに好適な他のユニットとして任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、対応する必要があるわけではない。プログラムは、当該プログラムに専用である単一のファイルにおいて、または、複数のコーディネーテッドファイル（coordinated files）（たとえばコードの１つ以上のモジュール、サブプログラムまたは部分を格納するファイル）において、他のプログラムまたはデータ（たとえばマークアップ言語ドキュメントに格納される１つ以上のスクリプト）を保持するファイルの部分に格納され得る。コンピュータプログラムは、１つの場所に位置するか、または、複数の場所にわたって分散され通信ネットワークによって相互接続される１つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
【００８３】
本明細書に記載されるプロセスおよび論理フローは、入力データに対して動作し出力を生成することによりアクションを実行するよう１つ以上のプログラマブルプロセッサが１つ以上のコンピュータプログラムを実行することによって実行され得る。プロセスおよび論理フローは、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）といった特殊目的論理回路によって実行され得、装置も当該特殊目的論理回路として実現され得る。
【００８４】
コンピュータプログラムの実行に好適であるプロセッサは、例として汎用マイクロプロセッサおよび特殊目的マイクロプロセッサの両方と任意の種類のデジタルコンピュータのいずれか１つ以上のプロセッサとを含む。一般に、プロセッサは、リードオンリメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを格納するための１つ以上のメモリデバイスとである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための１つ以上のマスストレージデバイスを含むか、または、当該１つ以上のマスストレージデバイスからデータを受け取るか、当該１つ以上のマスストレージデバイスにデータを転送するか、もしくは、その両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要がない。さらに、コンピュータはたとえば、携帯電話、携帯情報端末（ＰＤＡ）、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム（ＧＰＳ）レシーバ、またはポータブルストレージデバイス（たとえばユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）といった別のデバイスに埋め込まれ得る。コンピュータプログラム命令およびデータを格納するのに好適であるデバイスは、例として、たとえばＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリ素子といった半導体メモリデバイスと、たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスクと、光磁気ディスクと、ＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクとを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足され得るか、または、特殊目的論理回路に組み込まれ得る。
【００８５】
ユーザとのインタラクションを提供するために、本明細書に記載される主題の実施形態は、たとえばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタといったユーザに対して情報を表示するための表示デバイスと、たとえばマウス、トラックボールといったユーザがコンピュータに入力を提供可能であるキーボードおよびポインティングデバイスとを有するコンピュータ上で実現され得る。他の種類のデバイスが同様に、ユーザとのインタラクションを提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった任意の形態の感覚フィードバックであり得、また、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られ得る。さらに、コンピュータは、ユーザが使用するデバイスにドキュメントを送信しユーザが使用するデバイスからドキュメントを受け取ることによって、たとえば、ウェブブラウザから受け取られた要求に応答してユーザのユーザデバイス上のウェブブラウザにウェブページを送信することによって、ユーザとインタラクションし得る。
【００８６】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含むコンピューティングシステムにおいて実現され得るか、たとえばアプリケーションサーバといったミドルウェアコンポーネントを含むコンピューティングシステムにおいて実現され得るか、たとえば本明細書に記載される主題の実現例とユーザがインタラクションすることが可能であるグラフィカルユーザーインターフェイスもしくはウェブブラウザを有するユーザコンピュータといったフロントエンドコンポーネントを含むコンピューティングシステムにおいて実現され得るか、または、１つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネントまたはフロントエンドコンポーネントの任意の組合せのコンピューティングシステムにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークといったデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）と、ワイドエリアネットワーク（「ＷＡＮ」）と、相互ネットワーク（たとえばインターネット）と、ピアツーピアネットワーク（たとえばアドホックピアツーピアネットワーク）とを含む。
【００８７】
コンピューティングシステムはユーザおよびサーバを含み得る。ユーザとサーバとは一般に互いからリモートであり、典型的には通信ネットワークを通じてインタラクションする。ユーザおよびサーバの関係は、それぞれのコンピュータ上で実行されるとともに互いにユーザサーバ関係を有するコンピュータプログラムによって発生する。いくつかの実施形態において、サーバは、（たとえばユーザデバイスとインタラクションするユーザに対してデータを表示するとともに当該ユーザからユーザ入力を受け取る目的で）ユーザデバイスにデータ（たとえばＨＴＭＬページ）を送信する。ユーザデバイスにて生成されたデータ（たとえばユーザインタラクションの結果）は、サーバにおいてユーザデバイスから受け取られ得る。
【００８８】
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または請求され得るものの範囲に対する限定としても解釈されるべきでなく、特定の発明の特定の実施形態に特有の特徴の記載として解釈されるべきである。別個の実施形態の文脈で本明細書において記載されるある特徴も、単一の実施形態において組合せで実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴も、複数の実施形態において別々にまたは任意の好適なサブコンビネーションで実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載されているとともにそのように最初は請求されている場合があるが、請求される組合せのうちの１つ以上の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、サブコンビネーションまたはサブコンビネーションの変形例に関し得る。
【００８９】
同様に、図において動作は特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきでなく、または、すべての示された動作が実行される必要があると理解されるべきでない。ある状況において、マルチタスキングおよび並列処理が有利であり得る。さらに、上に記載された実施形態におけるさまざまなシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきでなく、記載されたプログラムコンポーネントおよびシステムは一般に、単一のソフトウェアプロダクトに一緒に統合され得るか、または、複数のソフトウェアプロダクトへとパッケージ化され得るということが理解されるべきである。
【００９０】
したがって、主題の特定の実施形態が記載されている。他の実施形態は添付の請求の範囲内にある。いくつかの場合には、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。さらに、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある実現例において、マルチタスキングおよび並列処理が有利であり得る。
【図１】
0006367371.tif 000002
【図２】
0006367371.tif 000003
【図３】
0006367371.tif 000004
【図４】
0006367371.tif 000005
【図５】
0006367371.tif 000006