(57)【要約】  ＩＰネットワークにおいてセッションのパケットを伝送するためのパケットルーティング方法によって、中間ノードは、所定のセッションにおける複数のパケットの中から先行パケットを取得する。中間ノードは、ＩＰネットワークと通信する電子インタフェースを有しており、また、同一のインタフェースを介して先行パケットを取得する。本方法は、ルーティングデータベースにおいて、ＩＰネットワーク内の複数のセッションに関する状態情報を保持する。各セッションは、ＩＰネットワーク内の順序付けられた複数のノードによって形成されている、単一のステートフルなセッション経路を含んでおり、また、状態情報は、それらのセッションにおける順序付けられた複数のノードに関する情報を含んでいる。本方法は、更に、複数のセッションの状態を求めるために、ルーティングデータベースにアクセスし、また、ルーティングデータベースにおける状態情報に依存して、ＩＰネットワークにわたる所定のセッションのパケットのためのステートフルな所定の経路を形成する。
2017537547.tif 000002
【特許請求の範囲】
【請求項１】
ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するためのパケットルーティング方法において、
前記ＩＰネットワークと通信する電子インタフェースを有している中間ノードが、前記電子インタフェースを介して、所定のセッションにおける複数のパケットの中から先行パケットを取得するステップと、
各セッションが前記ＩＰネットワーク内の順序付けられた複数のノードによって形成されている単一のステートフルなセッション経路をそれぞれ含んでいる、前記ＩＰネットワーク内の複数のセッションに関する状態情報であって、前記各セッションにおける前記順序付けられた複数のノードに関する情報を含んでいる状態情報を、ルーティングデータベースに保持するステップと、
前記ルーティングデータベースにアクセスし、前記複数のセッションの状態を求めるステップと、
前記ルーティングデータベースにおける前記状態情報に依存して、前記中間ノードと宛先ノードとの間の前記ＩＰネットワークにわたる前記所定のセッションのパケットのためのステートフルな所定の経路を形成するステップと、
前記ステートフルな所定の経路及び前記所定のセッションに関する状態情報を、前記ルーティングデータベースに記憶するステップと、
前記先行パケットを、前記電子インタフェースを介して、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するステップと、
を含んでいる、パケットルーティング方法。
【請求項２】
前記中間ノードは、ルーティングデバイス又はスイッチングデバイスを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項３】
各セッションにおける前記順序付けられた複数のノードは、２つのエンドノード間の複数のノードを含んでおり、各セッションにおける前記２つのエンドノード間の前記複数のノードは、各パケットを前記各パケットのセッションにおいて、前記２つのエンドノード間で同一のノード順序で伝送するように構成されている、
請求項１に記載のパケットルーティング方法。
【請求項４】
前記ステートフルな所定の経路の形成は、前記ルーティングデータベースにおける複数のノードに関するフロー使用率情報及びコスト情報のうちの１つ又は複数へのアクセスを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項５】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記起源ノードの次に位置しており、且つ、前記中間ノードである第１のノードを有している、
請求項１に記載のパケットルーティング方法。
【請求項６】
更に、
前記所定のセッションに関する複数の付加的なパケットを前記起源ノードから受信するステップと、
前記所定のセッションに関する前記複数の付加的なパケットを、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するステップと、
を含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項７】
ステートフルな所定の経路の形成は、前記ステートフルなセッション経路の使用率及び前記ステートフルなセッション経路の帯域幅を求めることを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項８】
更に、
前記宛先ノードから前記起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信するステップと、
前記電子インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、前記ステートフルな所定の経路に沿って、前記起源ノードに転送するステップと、を含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項９】
前記宛先ノードは、データセンタネットワークのための端部ルータを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項１０】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記中間ノードと、前記順序付けられた複数の所定のノード内で前記中間ノードの次に位置しており、且つ、下流側に位置している次ノードと、を含んでおり、
前記方法は、更に、
前記先行パケットを前記次ノード宛てに送るステップを含み、それによって、複数のネットワークデバイスは、前記先行パケットが転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、前記先行パケットを受信する、
請求項１に記載のパケットルーティング方法。
【請求項１１】
ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するためのルーティングデバイスにおいて、
所定のセッションにおける複数のパケットの中から先行パケットを受信するように構成されており、且つ、前記ＩＰネットワークに接続できるように構成されている、電子インタフェースと、
各セッションが前記ＩＰネットワーク内の順序付けられた複数のノードによって形成されている単一のステートフルなセッション経路をそれぞれ含んでいる、前記ＩＰネットワーク内の複数のセッションに関する状態情報であって、前記各セッションにおける前記順序付けられた複数のノードに関する情報を含んでいる状態情報を記憶するように構成されており、且つ、適切に作用するように前記電子インタフェースに接続されている、ルーティングデータベースと、
適切に作用するように前記ルーティングデータベースに接続されており、且つ、前記ルーティングデータベースにアクセスして、前記複数のセッションの状態を求めるように構成されており、更に、前記ルーティングデバイスと前記宛先ノードとの間の前記ＩＰネットワークにわたり、前記所定のセッションのパケットのためのステートフルな所定の経路を、前記ルーティングデータベースに記憶されている、前記ステートフルな所定の経路及び前記所定のセッションに関する状態情報に依存して形成するように構成されている、経路生成器と、
適切に作用するように前記経路生成器に接続されており、且つ、前記先行パケットを、前記電子インタフェースを介して、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するように構成されている、ルータと、
を備えている、ルーティングデバイス。
【請求項１２】
各セッションにおける前記順序付けられた複数のノードは、２つのエンドノード間の複数のノードを含んでおり、各セッションにおける前記２つのエンドノード間の前記複数のノードは、各パケットを前記各パケットのセッションにおいて、前記２つのエンドノード間で同一のノード順序で伝送するように構成されている、
請求項１１に記載のルーティングデバイス。
【請求項１３】
前記経路生成器は、前記ルーティングデータベースにおける複数のノードに関する使用率情報及びコスト情報のうちの１つ又は複数にアクセスすることによって、前記ステートフルな所定の経路を形成するように構成されている、
請求項１１に記載のルーティングデバイス。
【請求項１４】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記起源ノードの次に位置しており、且つ、前記ルーティングデバイスである第１のノードを有している、
請求項１１に記載のルーティングデバイス。
【請求項１５】
前記ルータは、前記所定のセッションに関する複数の付加的なパケットを前記起源ノードから受信し、前記所定のセッションに関する前記複数の付加的なパケットを、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するように構成されている、
請求項１１に記載のルーティングデバイス。
【請求項１６】
前記各セッションにおける前記順序付けられた複数のノードに関する情報は、前記ステートフルなセッション経路の使用率及び前記ステートフルなセッション経路の帯域幅を含んでいる、
請求項１１に記載のルーティングデバイス。
【請求項１７】
前記ルータは、前記宛先ノードから前記起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信し、且つ、前記電子インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、前記ステートフルな所定の経路に沿って、前記起源ノードに転送するように構成されている、
請求項１１に記載のルーティングデバイス。
【請求項１８】
前記宛先ノードは、データセンタネットワークのための端部ルータを含んでいる、
請求項１１に記載のルーティングデバイス。
【請求項１９】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記ルーティングデバイスと、前記順序付けられた複数の所定のノード内で前記ルーティングデバイスの次に位置しており、且つ、下流側に位置している次ノードと、を含んでおり、
前記ルータは、更に、前記先行パケットを前記次ノード宛てに送るように構成されており、それによって、複数のネットワークデバイスは、前記先行パケットが前記電子インタフェースを介して転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、前記先行パケットを受信する、
請求項１１に記載のルーティングデバイス。
【請求項２０】
ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するための、コンピュータシステムにおいて使用されるコンピュータプログラム製品において、
前記コンピュータプログラム製品は、有形の非一時的なコンピュータ使用可能な媒体と、前記媒体におけるコンピュータ可読プログラムコードと、を有しており、
前記コンピュータ可読プログラムコードは、
前記ＩＰネットワークに接続可能である、ルーティングデバイスの電子インタフェースが、所定のセッションにおける複数のパケットの中から先行パケットを受信するためのプログラムコードと、
各セッションが前記ＩＰネットワーク内の順序付けられた複数のノードによって形成されている単一のステートフルなセッション経路をそれぞれ含んでいる、前記ＩＰネットワーク内の複数のセッションに関する状態情報であって、前記各セッションにおける前記順序付けられた複数のノードに関する情報を含んでいる状態情報を、ルーティングデータベースに保持するためのプログラムコードと、
前記ルーティングデータベースにアクセスし、前記複数のセッションの状態を求めるためのプログラムコードと、
前記ルーティングデータベースにおける前記状態情報に依存して、前記ルーティングデバイスと前記宛先ノードとの間の前記ＩＰネットワークにわたる前記所定のセッションのパケットのためのステートフルな所定の経路を形成するためのプログラムコードと、
前記ステートフルな所定の経路及び前記所定のセッションに関する状態情報を、前記ルーティングデータベースに記憶するためのプログラムコードと、
前記先行パケットを、前記電子インタフェースを介して、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するためのプログラムコードと、
を含んでいる、コンピュータプログラム製品。
【請求項２１】
各セッションにおける前記順序付けられた複数のノードは、２つのエンドノード間の複数のノードを含んでおり、各セッションにおける前記２つのエンドノード間の前記複数のノードは、各パケットを前記各パケットのセッションにおいて、前記２つのエンドノード間で同一のノード順序で伝送するように構成されている、
請求項２０に記載のコンピュータプログラム製品。
【請求項２２】
前記ステートフルな所定の経路を形成するためのプログラムコードは、前記ルーティングデータベースにおける複数のノードに関する使用率情報及びコスト情報のうちの１つ又は複数にアクセスするためのプログラムコードを含んでいる、
請求項２０に記載のコンピュータプログラム製品。
【請求項２３】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記起源ノードの次に位置しており、且つ、前記ルーティングデバイスである第１のノードを有している、
請求項２０に記載のコンピュータプログラム製品。
【請求項２４】
更に、
前記所定のセッションに関する複数の付加的なパケットを前記起源ノードから受信するためのプログラムコードと、
前記所定のセッションに関する前記複数の付加的なパケットを、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するためのプログラムコードと、
を含んでいる、
請求項２０に記載のコンピュータプログラム製品。
【請求項２５】
前記各セッションにおける前記順序付けられた複数のノードに関する情報は、前記ステートフルなセッション経路の使用率及び前記ステートフルなセッション経路の帯域幅を含んでいる、
請求項２０に記載のコンピュータプログラム製品。
【請求項２６】
更に、
前記宛先ノードから前記起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信するためのプログラムコードと、
前記電子インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、前記ステートフルな所定の経路に沿って、前記起源ノードに転送するためのプログラムコードと、
を含んでいる、
請求項２０に記載のコンピュータプログラム製品。
【請求項２７】
前記宛先ノードは、データセンタネットワークのための端部ルータを含んでいる、
請求項２０に記載のコンピュータプログラム製品。
【請求項２８】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記ルーティングデバイスと、前記順序付けられた複数の所定のノード内で前記ルーティングデバイスの次に位置しており、且つ、下流側に位置している次ノードと、を含んでおり、
前記コンピュータプログラム製品は、更に、前記先行パケットを前記次ノード宛てに送るためのプログラムコードを含んでおり、それによって、複数のネットワークデバイスは、前記先行パケットが転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、前記先行パケットを受信する、
請求項２０に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権
本願は、２０１４年１２月８日に出願された米国特許出願第１４／５６２，９１７号、発明の名称「ステートレスなネットワークにおけるステートフルなロードバランシング（Ｓｔａｔｅｆｕｌ  Ｌｏａｄ  Ｂａｌａｎｃｉｎｇ  ｉｎ  ａ  Ｓｔａｔｅｌｅｓｓ  Ｎｅｔｗｏｒｋ）」、発明者Ｐａｔｒｉｃｋ  Ｔｉｍｍｏｎｓ、Ｍｉｃｈａｅｌ  Ｂａｊ、Ｈａｄｒｉｅｌ  Ｋａｐｌａｎ、Ｐａｔｒｉｃｋ  ＭｅＬａｍｐｙ、Ｐｒａｓｈａｎｔ  Ｋｕｍａｒ及びＲｏｂｅｒｔ  Ｐｅｎｆｉｅｌｄ、の優先権を主張するものであり、その開示内容全体は参照により本願に組み込まれる。
【０００２】
関連出願
本願は、２０１４年９月２９日に出願された米国特許出願第１４／４９７，９５４号、発明の名称「ネットワークパケットフローコントローラ（ＮＥＴＷＯＲＫ  ＰＡＣＫＥＴ  ＦＬＯＷ  ＣＯＮＴＲＯＬＬＥＲ）」、発明者Ｐａｔｒｉｃｋ  Ｊ．ＭｅＬａｍｐｙ、Ｍｉｃｈａｅｌ  Ｂａｊ、Ｈａｄｒｉｅｌ  Ｋａｐｌａｎ、Ｐｒａｓｈａｎｔ  Ｋｕｍａｒ、Ｒｏｂｅｒｔ  Ｐｅｎｆｉｅｌｄ及びＰａｔｒｉｃｋ  Ｔｉｍｍｏｎｓ、に関連するものであり、その開示内容全体は参照により本願に組み込まれる。
【０００３】
技術分野
本発明は、データルーティングに関し、より詳細にはＩＰネットワークにおけるパケットルーティングに関する。
【背景技術】
【０００４】
インターネットプロトコル（「ＩＰ」）は、データメッセージ（「データグラム」）を、インターネットに接続されているネットワークデバイス間で転送するためのデファクトスタンダードとして使用されている。そのために、ＩＰは、一連のインターネットデバイスを介して、例えばルータ及びスイッチを介して、データグラムを１つ又は複数のデータパケットの形態で供給する。各パケットは、２つの主要部分、即ち、（１）伝送される情報（例えばテキストデータ、グラフィックデータ、オーディオデータ又はビデオデータ）を有しているペイロード、並びに、（２）（１つ又は複数の）パケットを受信するネットワークデバイス（「宛先デバイス」）のアドレス、パケットを送信するネットワークデバイス（「起源デバイス」）の識別子及びパケットをルーティングするためのその他のデータを有している、「ＩＰヘッダ」として公知であるヘッダ。
【０００５】
従って、多くの人々は、パケットを一般郵便／ファーストクラスメール（ｆｉｒｓｔ  ｃｌａｓｓ  ｍａｉｌ）を使用する慣例の伝統的な手紙を例にして説明している。つまり、手紙は、ペイロードとして機能し、また差出人住所及び宛先住所が示されている封書は、ＩＰヘッダとして機能する。
【０００６】
現在のインターネットデバイスは、実質的にパケットヘッダ内の宛先デバイスのアドレスに基づき、パケットを１つずつ転送する。その他の利点もあるが、とりわけこのルーティングスキームによって、ネットワークの輻輳を低減するために、又は、ネットワークデバイスの誤作動を回避するために、ネットワークデバイスは、一連の関連するパケット間でパケットを異なるルータに沿って転送する。従って、当業者は、ＩＰを「ステートレスな（状態のない）」プロトコルとみなす。何故ならば、その他の理由もあるが、とりわけＩＰではパケット経路データが保存されず、またエンドポイント間でのパケットの事前に定められた伝送も行われないからである。
【０００７】
ＩＰは、種々の利点を有しているにもかかわらず、ステートレスであることによって種々の制限が課されている。例えば、変更がなされなければ、ステートレスなＩＰネットワークは、（１）モバイルネットワークにおけるユーザモビリティ、（２）ネットワークにおけるパケットトラフィックに関するセッション層ロードバランシング、及び（３）プライベートネットワーク間又は重畳するネットワーク間のルーティング、を抑制又は阻止する。当業者は、トンネリング機能を提供するトンネリングプロトコルを実装することによってこの問題に対応していた。特に、トンネリングプロトコルは、このトンネリングプロトコルを使用しなかった場合にパケットが取るであろうルートとは通常異なるルートに沿って、ＩＰパケットを宛先へと伝送する。名目上はそれらの目的が達成されるが、トンネリングプロトコルは、望ましくないことに、付加的な問題をネットワークにもたらす。例えば、トンネリングは付加的なオーバヘッドを要求し、このオーバヘッドによってＩＰパケットフラグメンテーションが生じる可能性があり、従って、相当なネットワーク非効率性がセッションにもたらされる。更に、トンネルは一般的に、トンネリングされないパケットよりも広い帯域幅を使用し、トンネルの開始地点及び終了地点は、パケット毎に付加的なＣＰＵサイクルを必要とする。
【０００８】
ステートレスであることによってもたらされる問題を克服するためのその他の試みも、やはり欠点を有している。
【０００９】
種々の実施の形態の概要
本発明の１つの実施の形態によれば、ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するためのパケットルーティング方法によって、中間ノードは、所定のセッションにおける複数のパケットの中から先行パケットを取得する。中間ノードは、ＩＰネットワークと通信する電子インタフェースを有しており、また、同一の電子インタフェースを介して先行パケットを取得する。また本方法は、ルーティングデータベースにおいて、ＩＰネットワーク内の複数のセッションに関する状態情報を保持する。各セッションは、ＩＰネットワーク内の順序付けられた複数のノードによって形成されている、単一のステートフルなセッション経路を含んでおり、また、状態情報は、それらのセッションにおける順序付けられた複数のノードに関する情報を含んでいる。本方法は、更に、複数のセッションの状態を求めるために、ルーティングデータベースにアクセスし、また、ルーティングデータベースにおける状態情報に依存して、（中間ノードと宛先ノードとの間の）ＩＰネットワークにわたる所定のセッションのパケットのためのステートフルな所定の経路を形成する。更に、本方法は、ステートフルな所定の経路及び所定のセッションに関する状態情報をルーティングデータベースに記憶し、また、先行パケットを、電子インタフェースを介して、ステートフルな所定の経路に沿って宛先ノードに転送する。
【００１０】
とりわけ、中間ノードは、ルーティングデバイス又はスイッチングデバイスを含むことができる。更に、宛先ルータは、複数の種々のネットワークデバイスのうちの任意のネットワークデバイスを、例えばデータセンタネットワークのための端部ルータを含むことができる。
【００１１】
各セッションにおける順序付けられた複数のノードは、好適には、２つのエンドノード間の複数のノードを含むことができる。各セッションにおける２つのエンドノード間の複数のノードは、各パケットをそのセッションにおいて、２つのエンドノード間で同一のノード順序で伝送するように構成されている。例えば、ステートフルな経路の順序付けられたノードが、第１のノード、第２のノード及び第３のノードを含んでおり、それらのノードがその順序通りにパケットを受信する場合には、第１のノードは、パケットを第２のノードだけに向け、第３のノードには向けないように構成することができ、また第２のノードは、パケットを第３のノードだけに向け、第１のノードには向けないように構成することができる。同様に、ステートフルな所定の経路は、起源ノードと宛先ノードとの間の、順序付けられた複数の所定のノードを含むことができる。この順序付けられた複数の所定のノードは、好適には、起源ノードの（論理的に）次に位置する第１のノードを有しており、従って、第１のノードは中間ノードとして使用される。
【００１２】
数あるロードバランシング技術の中から、ルーティングデータベースにおける複数のノードに関する使用率情報及びコスト情報のうちの１つ又は複数にアクセスすることによって、ステートフルな所定の経路を形成することができる。相応のやり方で、プロセスは、付加的な情報を使用して、例えばステートフルなセッション経路の使用率及びステートフルなセッション経路の帯域幅を使用して、所定の経路を形成することができる。
【００１３】
幾つかの実施の形態においては、本方法は、所定のセッションに関する複数の付加的なパケットを起源ノードから受信し、また、その所定のセッションに関する複数の付加的なパケットを、ステートフルな所定の経路に沿って宛先ノードに転送することができる。相応のやり方で、本方法は、宛先ノードからの戻りセッションにおいて、起源ノード宛てに送られる複数のパケットを受信することができる。受信後に、本方法は、電子インタフェースを介して、戻りセッションにおける実質的に全てのパケットを、ステートフルな所定の経路に沿って、起源ノードに転送することができる。
【００１４】
ノードが相互に論理的に次に位置しているにもかかわらず、パケットは、順序付けられた経路における（論理的に）隣接するノード間のその他の中間ネットワークデバイスを通過する可能性がある。そのために、ステートフルな所定の経路は、起源ノードと宛先ノードとの間の順序付けられた複数の所定のノードを有することができ、また、順序付けられた複数の所定のノードは、中間ノードと、順序付けられた複数の所定のノード内で中間ノードの次に位置しており、且つ、下流側に位置している次ノードと、を含むことができる。従って、本方法は、先行パケットを次ノード宛てに送ることができるので、複数のネットワークデバイスは、その先行パケットが転送された後、且つ、次ノードが先行パケットを受信する前に、先行パケットを受信する。
【００１５】
本発明は、添付の図面と関連させた、以下の「特定の実施の形態の詳細な説明」の項を参照することによってより完全に理解される。
【図面の簡単な説明】
【００１６】
【図１】従来技術による、仮想のネットワークの概略図を示す。
【図２】従来技術による、メッセージのフラグメンテーションを表す概略図を示す。
【図３】従来技術による、仮想のインターネットの概略図を示す。
【図４】本発明の１つの実施の形態による、慣例のルータと拡張型ＩＰルータ（ＡＩＰＲ）とを含んでいる、仮想のインターネットの概略図を示す。
【図５】本発明の１つの実施の形態による、セッションの開始を識別するために使用されるフィールドを識別する、イーサネットヘッダの概略的なレイアウトを示す。
【図６】本発明の１つの実施の形態による、セッションの開始を識別するために使用されるフィールドを識別する、ＩＰヘッダの概略的なレイアウトを示す。
【図７】本発明の１つの実施の形態による、セッションの開始を識別するために使用されるフィールドを識別する、ＴＣＰヘッダの概略的なレイアウトを示す。
【図８】本発明の１つの実施の形態による、図４のＡＩＰＲの概略的なブロック図を示す。
【図９】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって情報ベースに記憶された情報の概略図を示す。
【図１０】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって生成された、変更済みの先行パケットの概略図を示す。
【図１１】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって実施される動作を概略的に説明するフローチャートを示す。
【図１２】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって実施される動作を概略的に説明するフローチャートを示す。
【図１３】図示の実施の形態がパケットを転送することができるネットワークの概略図を示す。
【図１４】本発明の図示の実施の形態においてパケットを受信することができる、データセンタ又は類似の宛先の概略図を示す。
【図１５】本発明の図示の実施の形態による、ＡＩＰＲの別の概略的なブロック図を示す。
【図１６】状態情報を使用して、順序付けられた経路を形成するプロセスを概略的に説明するフローチャートを示す。
【発明を実施するための形態】
【００１７】
本発明の好適な実施の形態によれば、ネットワークデバイスは、ネットワークにわたるセッションフローのバランシングを行うために、通常はステートレスなネットワークの状態に関する情報を使用する。種々の実施の形態を下記において詳述する。
【００１８】
ネットワーク
図示の実施の形態は、好適には、従来のコンピュータネットワークにおいて実施されている。特に、ネットワークは、少なくとも２つのノードと、ノード間の少なくとも１つのリンクと、を含んでいる。ノードは、（ホスト又はデバイスと称する場合もある）コンピューティングデバイス及びルータを含むことができる。コンピュータには、パーソナルコンピュータ、スマートフォン、テレビジョン・セットトップボックス、現金自動預け払い機（ＡＴＭ）、並びに、プロセッサ及びネットワークインタフェースを含んでいるその他の多くのタイプの装置が含まれる。リンクは、ノードペア間の有線式及び無線式のコネクションを含んでいる。更に、ノード及び／又はリンクを、完全にソフトウェアとして実施することができ、例えば仮想マシン、ソフトウェア定義ネットワーク（ＳＤＮ：Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ）において、また、ネットワーク機能の仮想化（ＮＦＶ：Ｎｅｔｗｏｒｋ  Ｆｕｎｃｔｉｏｎ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）を使用して実施することができる。多くのネットワークは、スイッチを含んでおり、それらのスイッチの大部分は、この議論に関してトランスペアレント（透過性）である。しかしながら、幾つかのスイッチは、ルーティング機能も実施する。ここでの議論に関して、そのようなルーティングスイッチはルータとみなされる。ルータについては下記において説明する。
【００１９】
ノードを、１つ又は複数のその他のノードと、それぞれ個別のリンクを介して直接的に接続することができる。例えば、図１には、ノードＡがリンク１を介してノードＢに直接的に接続されていることが概略的に示されている。所定のネットワークにおいて（例えば、ローカルエリアネットワーク内では）、各ノードは、データの送信及び受信を容易にするためのユニークなネットワークアドレスを有している。ネットワークは、ネットワークのアドレッシングスキームに従ってネットワーク内でアドレッシング可能な全てのノードと、ネットワークのアドレッシングスキームに従って通信を行うためにノードを相互接続する全てのリンクと、を含んでいる。例えば、図１においては、ノードＡ、ノードＢ、ノードＣ〜ノードＦ及び全てのリンク１〜８が一緒になって１つのネットワーク１００を形成している。簡略化のために、ネットワークを、１つのクラウドとして、又は、１つのクラウド内に含まれるものとして示すことができる。しかしながら、クラウドは存在しないということが、複数のノード及び複数のリンクの集合体はネットワークではないということを意味しているわけではない。例えば、複数の比較的小さいネットワークから１つのネットワークを形成することができる。
【００２０】
各ノードは、ネットワークを介してその他のノードとの通信を開始し、また各ノードは、ネットワークを介してその他のノードによって開始された通信を受信する。例えば、ノードは、直接的に接続されているノード（隣接ノード）に、その隣接ノードと相互接続されているリンクを介してデータ（メッセージ）を送信することによって、そのデータ（メッセージ）を伝送／転送／送信することができる。メッセージは、送信ノードのネットワークアドレス（「送信元アドレス」）と、意図されている受信ノードのネットワークアドレス（「宛先アドレス」）と、を含んでいる。送信ノードは、メッセージを非隣接ノードに、１つ又は複数のその他の介在ノードを介して送信することができる。例えば、ノードＤは、ノードＦにノードＢを介してメッセージを送信することができる。周知のネットワーキングプロトコルを使用して、送信元ノードと宛先ノードとの間に存在する（１つ又は複数の）ノードは、メッセージがその宛先ノードに到達するまで、メッセージを転送する。従って、適切に動作するために、ネットワークプロトコルは、各ノードによる、そのネットワーク内の非隣接ノードのネットワークアドレスの学習又は発見を実現する。
【００２１】
ノードは、プロトコルに従って、例えば公知のインターネットプロトコル（ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）及び伝送制御プロトコル（ＴＣＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に従って、ネットワークを介して通信を行う。プロトコルは、典型的には、例えば周知の７層オープンシステム接続（ＯＳＩ：Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）モデルに従って、階層化されたソフトウェアコンポーネント及び／又はハードウェアコンポーネントによって実施されている。一例として、ＩＰはＯＳＩのレイヤ３（ネットワーク層）で機能し、その一方、ＴＣＰは大部分がＯＳＩのレイヤ４（トランスポート層）で機能する。各層は、論理的な機能を実施し、また自身より下位の層を抽象化し、従って下位層の詳細を隠す。
【００２２】
例えば、レイヤ３は、レイヤ２（データリンク層）が１つの大きいメッセージを１回の伝送で処理できない場合には、そのメッセージの、複数のより小さいパケットへのフラグメント化を実施することができる。図２には、複数の部分２０２、２０４、２０６、２０８、２１０及び２１２に分割された大きいメッセージ２００が概略的に示されている。この場合、各部分２０２〜２１２を、パケット２１４によって例示されている個別のパケットとして送信することができる。各パケットは、ペイロード２１６によって例示されているペイロード（本体）部分と、参照番号２１８によって例示されているヘッダ部分と、を含んでいる。ヘッダ部分２１８は、（１）パケットのその宛先へのルーティング、（２）メッセージのパケットの再組み立て、及び、（３）プロトコルに従って提供されるその他の機能、のために必要とされる又は望まれる情報、例えばパケットの送信元アドレス、宛先アドレス及びパケットシーケンス番号を含んでいる。幾つかのケースにおいては、例えばペイロード又はパケット全体のチェックサムを実施するために、ペイロードにトレーラ部分も付加されている。メッセージの全てのパケットが同一の経路に沿って送信される必要はない。つまり、それらのパケットの共通の宛先への経路において同一のノードを通過する必要はない。ＩＰパケットは、正式にはＩＰデータグラムと称されるが、それらは一般的には単純にパケットと称されていることを言及しておく。
【００２３】
その他の幾つかのプロトコルも、データの複数のパケットへのフラグメント化を実施する。例えば、ＴＣＰは、データの複数のセグメントへのフラグメント化を実施する。セグメントは、正式には、ＴＣＰプロトコルデータユニット（ＰＤＵ：Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）と称される。それにもかかわらず、一般的には、ＰＤＵ及びデータグラムを表す際に、またイーサネットフレームを表す際にパケットという用語が用いられている。
【００２４】
プロトコルの多くは、上位の階層のプロトコルのパケットのカプセル化を実施する。例えば、ＩＰは、ＩＰパケットを生成するために、ＴＣＰパケットにＩＰヘッダを付加することによって、ＴＣＰパケットのカプセル化を実施する。従って、下位の階層において送信されたパケットは、パケット内のパケットから成るものであると考えられる。通常の場合、あるプロトコルに従って動作するコンポーネントは、同一のプロトコルに従って動作する別のコンポーネント、典型的には別のノード内の別のコンポーネントによって生成されたヘッダ及び／又はトレーラ内の情報しか検査又は変更しない。つまり、一般的には、あるプロトコルに従って動作するコンポーネントは、その他のプロトコルによって生成されたパケットの部分を検査又は変更しない。
【００２５】
階層プロトコルによって提供される抽象化の別の例では、幾つかの層がアドレスを変換する。幾つかの層は、層固有のアドレッシングスキームを含んでいる。例えば、リンクの各端部は、実際の（例えば電子的な）インタフェース又は仮想のインタフェース、例えばイーサネットインタフェースを介してノードに接続されている。レイヤ２（データリンク層）では、各インタフェースがアドレスを、例えばメディアアクセスコントロール（ＭＡＣ：Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを有している。その一方で、ＩＰを使用するレイヤ３では、各インタフェースが、又は少なくとも各ノードがＩＰアドレスを有している。レイヤ３は、ＩＰアドレスをＭＡＣアドレスに変換する。
【００２６】
典型的に、ルータは２つ又はそれ以上の個別のネットワーク、若しくは、単一のネットワークの２つ又はそれ以上のサブネットワーク（サブネット）を相互接続するノードとして機能する。これによって、「複数のネットワークから成る１つのネットワーク」（即ち、１つのインターネット）が形成される。従って、ルータは、少なくとも２つのインタフェースを有しており、各インタフェースは、図３に例示されているように、ルータを異なるネットワークに接続する。ルータは、一方のインタフェースを介して一方のネットワークからパケットを受信すると、自身のルーティングテーブルに記憶されている情報を使用して、そのパケットを他方のインタフェースを介して他方のネットワークに向ける。ルーティングテーブルは、ネットワークとネクストホップとの関連性を含んでいる。それらの関連性は、最終的な宛先への経路上のネクストホップを表している特定のルータにパケットを送信することによって、特定の宛先に最適に到達できることをルータに知らせる。例えば、第１のルータ３００が自身の第１のインタフェース３０４を介して、第１のネットワーク３０２からパケットを受信し、且つ、そのパケットの宛先が第３のネットワーク３０６内のあるノードに指定されている場合には、第１のルータ３００は、自身のルーティングテーブルを参照して、自身の第２のインタフェース３０８を介して第２のネットワーク３１０にパケットを転送する。続けて、第２のネットワーク３１０は、パケットを第３のネットワーク３０６に転送する。ネクストホップの関連性を、最終的な宛先への出力（出口）インタフェースとしてルーティングテーブルに示すこともできる。
【００２７】
大規模な組織、例えば大企業、商用データセンタ及び電気通信事業者は、内部トラフィックの送信のために、階層構造のルータのセットを使用することが多い。例えば、１つ又は複数のゲートウェイルータによって、各組織のネットワークと、１つ又は複数のインターネットサービスプロバイダ（ＩＳＰ：Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）と、を相互接続することができる。またＩＳＰは、自身の顧客のゲートウェイ間のトラフィックの送信のために階層構造のルータを使用して、その他のＩＳＰとの相互接続及びインターネットバックボーンにおけるコアルータとの相互接続を実現する。
【００２８】
ルータは、その主たる転送の判断に関して、レイヤ３ＩＰパケットにおける情報、特に宛先ＩＰアドレスを基礎としているので、レイヤ３デバイスとみなされる。従来のルータは、パケットが運ぶ実際のデータコンテンツ（即ち、カプセル化されたペイロード）を参照しない。その代わりにルータは、単に、転送の判断を行うためのレイヤ３アドレスと、オプションとして、サービス品質（ＱｏＳ：Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）要求のようなヒントに関するヘッダにおけるその他の情報と、だけを見る。パケットが転送されると、従来のルータは、パケットに関する履歴情報を保持しない。しかしながら、ルータがそのように構成されている場合であっても、統計的なデータを生成するために転送活動を収集することはできる。
【００２９】
従って、下記において述べるように、ＩＰネットワークは、特にこの履歴情報を保持しないことから、「ステートレスな」ネットワークとみなされる。例えば、ＩＰネットワークは一般的に、各リクエストを、以前のいずれのリクエストにも関係しない独立したトランザクションとして処理する。従って、ルータは、先行のパケットをどのように処理したかを顧みずに、パケットをルーティングすることができる。例えば、ＩＰネットワークは、典型的に、新規に加わった通信パートナの状態又はセッション情報を記憶しない。例えば、ネットワークの一部が使用できない中間トランザクションになった場合には、リソースを再割り当てする必要はないか、又は、さもなければ、ネットワークの状態を固定する必要はない。その代わりに、パケットをネットワーク内のその他のノードに沿ってルーティングすることができる。
【００３０】
上記において述べたように、ルータは、一方のインタフェースを介して一方のネットワークからパケットを受信すると、自身のルーティングテーブルを使用して、そのパケットを他方のネットワークに向ける。表１には、基本的なＩＰルーティングテーブルから一般的に見て取れる情報が列挙されている。
【表１】
2017537547.tif 000003
【００３１】
ルーティングテーブルを、例えばシステム管理者によって手動で埋めることができるか、又は、ルータによって動的に埋めることができる。ルータは、その他のルータと情報を交換するためにルーティングプロトコルを使用し、またそれによって、周囲のネットワーク又はインターネットのトポロジを動的に学習する。例えば、ルータは、自身の存在を（１つ又は複数の）ネットワークに通知する。より詳細には、ルータは、自身がパケットを転送できるＩＰアドレスの範囲をネットワークに通知する。隣接するルータは、その情報を用いて自身のルーティングテーブルを更新し、また第１のルータの（１つ又は複数のネットワーク）へとパケットを転送する自身の能力をブロードキャストする。この情報は、必要に応じて、ネットワーク内のより遠隔のルータに拡散される。動的なルーティングによって、ルータは、ネットワーク又はインターネット内の変化に、例えば増大したネットワークの輻輳、新たなルータのインターネットへの追加、及び、ルータ又はリンクのエラーに反応することができる。
【００３２】
従って、ルーティングテーブルは、パケットを各宛先へとルーティングするための一連の規則を提供する。パケットが到着すると、ルータは、パケットの内容を検査し、例えばそのパケットの宛先アドレスを検査し、ルーティングテーブルにおける最適な規則を発見する。その規則は、事実上、パケットを転送するためにどのインタフェースが使用されるかをルータに知らせ、またそのパケットの最終的な宛先ＩＰアドレスへの経路上においてそのパケットが転送されるノードのＩＰアドレスも知らせる。
【００３３】
ホップ・バイ・ホップ方式のルーティングでは、各ルーティングテーブルには、到達可能な全ての宛先に関して、その宛先への経路に沿った次ノード、即ちネクストホップのアドレスが記載されている。ルーティングテーブルに矛盾がない場合を想定すれば、ネットワーク内のいずれかの場所にパケットを送信するには、パケットをその宛先の各ネクストホップへとリレーする各ルータの単純なアルゴリズムで十分である。ホップ・バイ・ホップ方式は、ＩＰインターネットワーク層及びＯＳＩネットワーク層の基本的な特性を表している。
【００３４】
従って、各ルータのルーティングテーブルは、通常の場合、パケットを、そのパケットの宛先の「比較的近くに位置する」別のルータに転送するのに十分な情報しか含んでいないので、パケットが常にその宛先へと送信されることは保証していない。ある意味において、少なくとも大部分のパケットが最終的にその宛先へと到達することを目的として、パケットは、一連のルータを辿って、各ルータにおいてその時点での最新の規則を使用して、次にどのルータを辿るかを決定することによって、自身の宛先までの自身の経路を発見している。
【００３５】
例えば、ルータが輻輳した場合、又は、リンクに障害が発生した場合、規則は１つのパケットの連続する２つのホップ間で、又は、１つのメッセージの連続する２つのパケット間で変化する可能性があることを言及しておく。従って、１つのメッセージの２つのパケットが異なる経路を辿る可能性があり、それどころか順番通りに到着しない可能性がある。換言すれば、パケットが送信元ノード又は起源ノードから送信される場合には、ネットワークがステートレスであることから、送信元ノードとパケットの宛先ノードとの間でパケットが取ることになる、事前に規定された経路は一般的に存在しない。その代わりに、典型的には、パケットが種々のルータを通過するときに、経路が動的に求められる。これは「自然なルーティング」と称することができる。つまり、パケットがインターネットを通過するときに、経路が動的に求められる。
【００３６】
自然なルーティングが長年にわたり上手く機能しているにもかかわらず、この自然なルーティングは欠点を有している。例えば、１つのセッションの各パケットが異なる経路に沿って伝播する可能性があり、また異なるルータのセットを通過する可能性があるので、セッションに関するメトリックを収集することは困難である。セッションのパケットに適用することができるセキュリティ機能を広範囲にわたり分散させなければならず、また、そのようなセキュリティ機能が全てのパケットに適用されないリスクも考えられる。更に、セッションへの攻撃が多くの場所から開始される可能性がある。
【００３７】
通常の場合、宛先ノードから再び送信元ノードへと送信されるパケットは、送信元ノードから宛先ノードへと送信されたパケットとは異なる経路を辿る可能性があることを言及しておく。
【００３８】
多くの状況において、クライアントコンピュータノード（「クライアント」）は、サーバコンピュータノード（「サーバ」）とセッションを確立し、またクライアントとサーバは、そのセッション内でパケットを交換する。例えば、ブラウザを実行しているクライアントは、ウェブサーバを用いてセッションを確立することができる。クライアントは、ウェブページをリクエストするために１つ又は複数のパケットを送信することができ、またウェブサーバは、ウェブページのコンテンツを含んでいる１つ又は複数のパケットでもって応答することができる。幾つかのタイプのセッションでは、パケットの往復的な交換を複数回のサイクルにわたり継続することができる。幾つかのタイプのセッションでは、パケットを２つのノード間で非同期的に送信することができる。
【００３９】
セッションは、その通常の意味を有している。つまり、セッションとは、プロトコルに従って一方のノードから他方のノードへと送信される、各パケットが関連付けられている複数のパケットである。セッションは、そのセッションを開始する先行パケット（又は最初のパケット）と、そのセッションの１つ又は複数の後続パケットと、を含むものと考えられる。セッションには、明確な開始及び明確な終了が存在する。例えば、ＴＣＰセッションは、ＳＹＮパケットによって開始される。幾つかのケースにおいては、１つの所定のパケット又は一連のパケットによって、終了を規定することができる。例えば、ＴＣＰセッションを、ＦＩＮ交換によって又はＲＳＴによって終了させることができる。その他のケースにおいては、少なくとも事前に規定された長さの時間（タイムアウト時間）にわたり、ノード間で通信が行われないことによって終了を規定することができる。例えば、ＴＣＰセッションを、所定のタイムアウト期間後に終了させることができる。幾つかのセッションは、一方のノードから他方のノードへと送信されるパケットしか含んでいない。その他のセッションは、ウェブクライアントとサーバとのインタラクションの例のように、応答パケットを含んでいる。１つのセッションは、プロトコルに従った、何サイクルもの往復的な通信又は非同期的な通信を含むことができるが、しかしながら、１つのセッションの全てのパケットは、ノードの同一のクライアントとサーバのペア間で交換される。ここでは、セッションを一連のパケット（パケットシリーズ）とも称する。
【００４０】
単一ＩＰアドレスを有しているコンピュータは、種々のサービス、例えばＷｅｂサービス、Ｅメールサービス及びファイル転送（ＦＴＰ：Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サービスを提供することができる。一般的に、各サービスには、コンピュータ上でユニークである、０〜６５，５３５の範囲のポート番号が割り当てられている。従って、サービスは、ノードのＩＰアドレスとサービスのポート番号との組み合わせによって規定されている。この組み合わせは、コンピュータが接続されているネットワーク内でユニークであり、またインターネット内でもユニークであることが多いことを言及しておく。同様に、単一のノードにおいて多数のクライアントを実行することができる。従って、サービスをリクエストするクライアントには、そのクライアントのノードにおけるユニークなポート番号が割り当てられているので、サービスからの戻りパケットを、リクエストを行ったクライアント宛てに一意に送ることができる。
【００４１】
ソケットという用語は、ＩＰアドレスとポート番号との組み合わせを意味している。従って、各サービスは、ネットワーク固有の、またインターネット固有であることも多いサービスソケットを有しており、サービスをリクエストするクライアントには、ネットワーク固有の、またインターネット固有である場合もあるクライアントソケットが割り当てられている。ところによっては、送信元クライアント及び宛先サービスという用語は、サービスをリクエストするためにパケットを送信するクライアント及びリクエストされているサービスをそれぞれ表す際に使用される。
【００４２】
順方向及び逆方向のフロー制御
本発明の図示の実施の形態は、少なくとも順方向においては、即ち送信元クライアントから宛先サービスへは、セッションの先行パケットが辿った経路と同じ経路を、そのセッションの後続パケットが辿ることを保証することによって、上述の欠点及びその他の欠点を少なくとも部分的に克服する。後続パケットは、先行パケットが送信元クライアントと宛先サービスとの間で通過したルータの少なくとも１つのサブセットを通過する。ここでは、サブセットにおける各ルータを中間ノード又は中間地点と称する。但し、幾つかの実施の形態においては、先行パケットが送信元クライアントから送信される前に、中間地点が事前に規定されている必要はない。先行パケットを、自然にルーティングすることもできる。従って、先行パケットが取る経路は、中間地点を形成し、また後続パケットは、先行パケットと同一の中間地点を、先行パケットと同じ順番で通過する。
【００４３】
しかしながら、下記においてより詳細に説明する図示の実施の形態においては、送信元の近傍の中間ノード／中間地点が、先行パケット及び後続パケットが宛先サービスに向かう際に通過する経路を事前に規定する。この場合、中間ノード（例えばルータ又はスイッチ）は、所定のセッションにおいてパケットを双方向に転送するために、ネットワーク内のノードの順序付けられた経路を形成する。従って、このセッションにおけるパケットは、中間ノードによって規定された順序で、経路内の各ノードを通過する。いずれの場合にも、中間ノードは、送信元ノードと宛先ノードとの間の、ノードのステートフルな順序付けられた経路を形成するとみなすことができる。
【００４４】
勿論、例えば過負荷のルータによって、又は、リンクによるパケットの破損に起因して、幾つかのパケットは、経路から脱落する可能性があるが、これはＩＰネットワーク又はインターネットにおいては一般的に起こりうることである。つまり、送信元クライアントから送信された全てのパケットが、セッションの宛先サービスに到達しなければならないのではなく、従って、送信元クライアントから送信された全てのパケットが、全ての中間地点を通過する必要はない。しかしながら、宛先サービスへと到達する後続パケットは、全ての中間地点を通過しなければならない。説明を簡単にするために、脱落したパケットは以下の議論においては無視するので、「全てのパケット」という用語は、自身の各宛先に到達する全てのパケットを意味している。
【００４５】
この順方向のフロー制御の結果、複数ある中間地点のうちの１つの中間地点において収集されたメトリックは、セッションの全てのパケットを表している。それらのメトリックの質が、その中間地点を迂回するパケットによって低下することはない。何故ならば、セッションの全てのパケットがいずれの中間地点も迂回することは起こりえないからである。１つの中間地点において実施されるセキュリティ機能、例えば、悪意のあるパケットの検査を、セッションの全てのパケットに対して確実に実施することができる。下記において述べるように、中間ノードが順序付けられた経路を形成する場合には、ロードバランシングの動作を実施するために、中間地点に関する状態情報を使用することができる。
【００４６】
本発明の幾つかの実施の形態は、宛先サービスから送信元クライアントへの戻りパケットが同一の経路を逆の順序で辿ること、即ち、中間地点を逆の順序で通過することも保証する。この逆方向のフロー制御は、別の方法で戻りパケットを自然にルーティングすることによっては利用できない経路、例えば専用の（プロプライエタリな）ネットワークを介する経路の使用を実現する。
【００４７】
パケットフローコントローラ（本明細書においては、拡張型ＩＰルータ（「ＡＩＰＲ」：Ａｕｇｍｅｎｔｅｄ  ＩＰ  Ｒｏｕｔｅｒ）とも称する）は、上記において述べたように、セッションの先行パケットと同一の経路を、そのセッションの後続パケットが辿ることを保証する。ＡＩＰＲは、従来のルーティング機能も実施する。例えば、ＡＩＰＲは、上述の中間ノードの機能を実施するとみなすことができる。図４には、相互接続されている複数のネットワーク４００、４０２、４０４及び４０６の仮想のセット、即ちＩｎｔｅｒｎｅｔを含んでいても良いインターネットが概略的に示されている。各ネットワーク４００〜４０６は、複数のルータ及びＡＩＰＲを含んでいるが、必ずしもそれら全てのルータ及びＡＩＰＲが示されているわけではない。ネットワーク４００は、第１のＡＩＰＲ４０８及びルータ４１０を含んでいる。ネットワーク４００は、例えば、電気通信事業者のネットワークであって良い。ネットワーク４０２は、ルータ４１２及び第２のＡＩＰＲ４１４を含んでいる。ネットワーク４０２は、例えば、第１のＩＳＰのネットワークであって良い。ネットワーク４０４は、ルータ４１６及び第３のＡＩＰＲ４１８を含んでいる。ネットワーク４０４は、例えば、インターネットバックボーン又はその一部であって良い。ネットワーク４０６は、ルータ４２０、第４のＡＩＰＲ４２２及び別のルータ４２４を含んでいる。ネットワーク４０６は、例えば、第２のＩＳＰのネットワークであって良い。
【００４８】
送信元クライアントノード４２６が、宛先サービスノード４２８とのセッションを開始する場合を想定する。例えば、送信元クライアント４２６は、ウェブページをリクエストすることができ、また宛先サービスノード４２８は、ウェブサーバを含むことができる。送信元クライアント４２６は、例えば、第１の企業（例えばデータセンタ）内の第１のローカルエリアネットワーク（ＬＡＮ）（図示せず）の一部であって良く、またＬＡＮをその企業によって管理されているゲートウェイルータ４３０を介して電気通信事業者のネットワーク４００に接続することができる。同様に、宛先サービスノード４２８を第２の企業によって管理することができ、また宛先サービスノード４２８は、第２の企業によって管理されているゲートウェイルータ４３２を介して第２のＩＳＰのネットワーク４０６に接続されている第２のＬＡＮ（図示せず）の一部であって良い。セッションの先行パケットがインターネットを通過する際、そのパケットが通過する各ＡＩＰＲ（中間地点）は、その中間地点がセッションに関する自身の１つ前の中間地点及び自身の１つ先の中間地点を最終的に識別できるようにする情報を記録する。
【００４９】
この例において、セッションの先行パケットは、自然にルーティングされる。先行パケットがネットワーク４０２、４０４又は４０６に到達する前に、第１のＡＩＰＲ４０８に到達する場合を想定する。第１のＡＩＰＲ４０８は、先行パケットがセッションの最初のパケットであることを自動的に識別する。第１のＡＩＰＲ４０８は、上記において述べたように、また下記において更に詳細に説明するように、種々の技術を使用してセッションの開始を識別することができる。第１のＡＩＰＲ４０８は、先行パケットが最終的に辿る経路に沿った最初の中間地点となる。
【００５０】
第１のＡＩＰＲ４０８は、セッションにユニークな識別子を割り当て、また、そのセッションに関する情報をＡＩＰＲのデータベースに記憶し、それによって第１のＡＩＰＲ４０８は、そのセッションの後続パケットを識別することができる。幾つかの実施の形態においては、第１のＡＩＰＲ４０８は、先行パケットにおけるクライアントソケット／サービスソケット番号ペアを読み出し、セッションを一意に識別するために、そのクライアントソケット／サービスソケット番号ペアをデータベースに記憶する。これによって、第１のＡＩＰＲ４０８は、後続パケットをそのセッションの一部として識別することができる。何故ならば、そのセッションの全ての後続パケットは、同一のクライアントソケット／サービスソケット番号ペアを含むことになるからである。
【００５１】
幾つかの実施の形態においては、第１のＡＩＰＲ４０８が、先行パケットは第１のＡＩＰＲ４０８に到達する前にその他のいずれのＡＩＰＲも通過していないことを示すフラグを自身のデータベースにセットする。このフラグを後の時点に、例えば第１のＡＩＰＲ４０８が戻りパケットを処理する際に使用することができる。第１のＡＩＰＲ４０８は、パケットにいずれの変更も行われていないことから、先行パケットをその他のいずれのＡＩＰＲも通過していないパケットとして識別することができる。パケットの変更については下記において説明する。
【００５２】
第１のＡＩＰＲ４０８は、先行パケットがＡＩＰＲによって処理されたことを示すために先行パケットを変更する。幾つかの実施の形態においては、変更された先行パケットを形成するために、第１のＡＩＰＲ４０８がパケットにセッションのユニークな識別子を記憶し、またユニークな識別子が含まれない場合には、ＡＩＰＲのネットワークアドレスを記憶する。（その時点において変更されている）先行パケットを処理する後続のＡＩＰＲが存在する場合には、その後続のＡＩＰＲは、先行パケットをＡＩＰＲによって処理された先行パケットとして識別するため、またセッションの後続パケットは先行パケットがルーティングされる経路と同じ経路でルーティングされるべきことを示すために、この変更を利用する。
【００５３】
幾つかの実施の形態においては、第１のＡＩＰＲ４０８は、先行パケットを転送する際に使用するインタフェースにポート番号を割り当てる。ＡＩＰＲのネットワークアドレス及びこのポート番号は、組み合わされることによって、少なくとも経路に沿った次のＡＩＰＲの観点からは、セッションのユニークな識別子として使用することができる。第１のＡＩＰＲ４０８は、ＡＩＰＲのネットワークアドレスとポート番号との組み合わせを、変更された先行パケットに含ませることができる。従って、経路に沿った次のＡＩＰＲは、このネットワークアドレスとポート番号との組み合わせから送信された後続パケットがセッションの一部であること、又はセッションの一部である可能性が高いことを想定できる。
【００５４】
この例においては、続けて、第１のＡＩＰＲ４０８が先行パケットを自然に転送する。先行パケットは、この先行パケットをネットワーク４０２に自然にルーティングするルータ４１０に到達するまで、ネットワーク４００の不特定数のノードを通過する。ここではルータ４１０が先行パケットをネットワーク４０２内の第２のＡＩＰＲ４１４に転送する場合を想定する。
【００５５】
第２のＡＩＰＲ４１４は、先行パケットに対する変更を検出し、特別な処理の必要性を識別する。第２のＡＩＰＲ４１４は、先行パケットが辿る経路に沿った第２の中間地点となる。従って、第１のＡＩＰＲ４０８及び第２のＡＩＰＲ４１４は、形成された順序付けられた経路における、相互に「隣接する」中間地点とみなされるか、又は、相互に「次に位置する」中間地点とみなされる。第２のＡＩＰＲ４１４は、それに応答して、自身のデータベースに第１のＡＩＰＲ４０８のネットワークアドレス及び第１のＡＩＰＲ４０８によって割り当てられたポート番号を、セッションのユニークな識別子、例えばクライアントソケット／サーバソケット番号ペアと関連させて記憶し、従って、このセッションに関連する経路に沿った前の中間地点を識別する。このようにして、各中間地点は、このセッションの経路に沿った前の中間地点のネットワークアドレス及びポート番号を学習し、また関連する関連付けデバイス（「アソシエータ」）を使用して、この情報をセッション識別子に関連付ける。この情報は後に、送信元クライアント４２６へと戻される戻りパケットを中間地点から中間地点に転送するために使用することができる。
【００５６】
幾つかの実施の形態においては、第２のＡＩＰＲ４１４は、先行パケットを受信したインタフェースにポート番号を割り当てる。ＡＩＰＲのネットワークアドレスとこのポート番号とは、組み合わされることによって、少なくとも第１のＡＩＰＲ４０８の観点からは、セッションのユニークな識別子として使用することができる。従って、このネットワークアドレスとポート番号の組み合わせ宛てに送られる後続パケットは、セッションの一部であること、又は少なくともセッションの一部である可能性が高いことを想定できる。
【００５７】
幾つかの実施の形態においては、第２のＡＩＰＲ４１４は、セッションの識別に関連して、第１のＡＩＰＲ４０８にネットワークアドレスとポート番号との組み合わせについての情報を通知するために、パケットを第１のＡＩＰＲ４０８に返送する。幾つかの実施の形態においては、ネットワークアドレスとポート番号との組み合わせが、下記において説明するように、戻りパケットとの関連において、後に第１のＡＩＰＲ４０８に送信される。いずれのケースにおいても、第１のＡＩＰＲ４０８は、セッションに対してユニークであるネットワークアドレスとポート番号との組み合わせを学習し、また第１のＡＩＰＲ４０８は、後続パケットを自然に転送するのではなく、後続パケットをそのネットワークアドレスとポート番号との組み合わせに送信する。このようにして、各中間地点は、このセッションの経路に沿った次の中間地点のネットワークアドレス及びポート番号を学習する。この情報は、先行パケットと同じ経路に沿って、後続パケットを、複数の中間地点を介して宛先サービス４２８に転送するために使用される。この種のルーティングは、本発明者が知っている従来技術に教示されているいずれのルーティングとも異なるものである。
【００５８】
第２のＡＩＰＲ４１４は、この第２のＡＩＰＲ４１４のネットワークアドレスを含ませるために先行パケットを変更し、続けて、その先行パケットを自然に転送する。第１のＡＩＰＲ４０８と同様に、幾つかの実施の形態においては、第２のＡＩＰＲ４１４が、パケットを転送する際に使用するインタフェースにポート番号を割り当て、第２のＡＩＰＲ４１４のネットワークアドレス及びポート番号が、第２のＡＩＰＲ４１４によって送信される、変更された先行パケットに含まれる。
【００５９】
先行パケットは、この先行パケットをネットワーク４０４に自然にルーティングするルータ４１２に到達するまで、ネットワーク４０２の不特定数のノードを通過する。ルータ４１６が先行パケットを第３のＡＩＰＲ４１８に転送する場合を想定する。
【００６０】
第３のＡＩＰＲ４１８は、先行パケットが辿る経路に沿った第３の中間地点となる。第３のＡＩＰＲ４１８は、第２のＡＩＰＲ４１４と同様に動作する。続けて、先行パケットは、ネットワーク４０６に転送され、そのネットワーク４０６において先行パケットは、第４のＡＩＰＲ４２２を通過し、この第４のＡＩＰＲ４２２が第４の中間地点となる。
【００６１】
宛先サービス４２８への経路に沿った最後のＡＩＰＲ（第４のＡＩＰＲ）４２２に関しては、３つのシナリオが考えられる。
【００６２】
第１のシナリオにおいては、宛先サービスへの先行パケットを処理するために、宛先サービスの比較的に近くに位置する１つ又は複数のＡＩＰＲが設けられる。それらのＡＩＰＲを、各自のデータベースに、例えばサービスソケット番号又はサービスのその他のユニークな識別子によって宛先サービスを識別するための情報を記憶することによって設けることができる。これらの「終端」ＡＩＰＲは、宛先サービスへとパケットを転送するための自身の能力をブロードキャストする。終端ＡＩＰＲは、パケットが別のＡＩＰＲを通過することなく、パケットを宛先サービスに転送することができるＡＩＰＲである。終端ＡＩＰＲは、そのＡＩＰＲにおいて終端するサービス宛ての先行パケットを、宛先サービスソケット番号をＡＩＰＲのデータベースに提供されている情報と比較することによって認識する。
【００６３】
第４のＡＩＰＲ４２２がそのように設けられている場合には、第４のＡＩＰＲ４２２は、先行パケットをその本来の形に、即ち送信元クライアント４２６が先行パケットを送信したときにその先行パケットが有していた形に復元することができるか、又は、ルータ４３０によって変更することができたパケットとして、例えばルータ４３０によって実施されたネットワークアドレス変換（ＮＡＴ：Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）の結果を復元することができる。従って、先行パケットを、中間地点４０８、４１４及び４１８によって行われたいずれの変更も含んでいない形に復元することができる。続けて、第４のＡＩＰＲ４２２は、先行パケットを宛先サービス４２８に転送する。第３のＡＩＰＲ４１８と同様に、第４のＡＩＰＲ４２２は、自身のデータベースに、第３のＡＩＰＲ４１８をそのセッションに関する前のＡＩＰＲとして識別する情報を記憶する。
【００６４】
第２のシナリオにおいては、第４のＡＩＰＲ４２２には、宛先サービス４２８に関する情報が供給されない。その種の実施の形態においては、第４のＡＩＰＲ４２２は、第２のＡＩＰＲ４１４及び第３のＡＩＰＲ４１８と同様に動作することができる。第４のＡＩＰＲ４２２は、先行パケットを変更して自然に転送し、また先行パケットは、最終的に宛先サービス４２８へと送信される。宛先サービス４２８は、先行パケットに応答する。例えば、先行パケットが、ＴＣＰセッションを開始するためのＳＹＮパケットである場合には、宛先サービス４２８は、ＡＣＫパケット又はＳＹＮ／ＡＣＫパケットで応答する。第４のＡＩＰＲ４２２は、戻りパケットを、例えばその戻りパケットにおける送信元クライアント／宛先サービスのネットワークアドレスとポート番号のペアに基づき、セッションの一部として認識する。更に、戻りパケットは別のＡＩＰＲからではなく、宛先サービス４２８から送信されたものなので、第４のＡＩＰＲ４２２は、自身がこのサービスの経路に沿った最後のＡＩＰＲであることを認識する。
【００６５】
第４のＡＩＰＲ４２２は、この第４のＡＩＰＲ４２２が終端ＡＩＰＲであることを示す情報を自身のデータベースに記憶する。第４のＡＩＰＲ４２２がセッションの後続パケットを受信すると、第４のＡＩＰＲ４２２は、後続パケットをその本来の形に、即ち送信元クライアント４２６が後続パケットを送信したときにその後続パケットが有していた形に復元することができるか、又は、ルータ４３０によって変更することができたパケットとして、例えばルータ４３０によって実施されたネットワークアドレス変換（ＮＡＴ）の結果を復元することができる。第４のＡＩＰＲ４２２は、後続パケットを宛先サービス４２８に転送する。
【００６６】
第４のＡＩＰＲ４２２は、その第４のＡＩＰＲ４２２が第３のＡＩＰＲ４１８からの先行パケットを受信したインタフェースにおけるポート番号並びに第４のＡＩＰＲ４２２のネットワークアドレスを含ませるために、戻りパケットを変更する。続けて、第４のＡＩＰＲ４２２は、戻りパケットを第３のＡＩＰＲ４１８に転送する。戻りパケットをその他のルータによって転送できるにもかかわらず、第４のＡＩＰＲ４２２は、特に戻りパケットを第３のＡＩＰＲ４１８宛てに送る。これによって、先行パケットが辿った経路に沿って、先行パケットが通過した全ての中間地点を逆の順序で通過する、戻りパケットの移動が開始される。従って、戻りパケットは、自然なルーティングによって送信元クライアント４２６に戻るのではない。この種の戻りパケットのルーティングは、本発明者が知っている従来技術に教示されているいずれのルーティングとも異なるものである。
【００６７】
第３のＡＩＰＲ４１８は、変更された戻りパケットを受信し、その戻りパケットは、第３のＡＩＰＲ４１８が以前に割り当てたものであり且つそのセッションに関連付けられているポート番号宛てに送られたものであることから、第３のＡＩＰＲ４１８は、戻りパケットがセッションの一部であること、又はセッションの一部である可能性が高いことを想定できる。状態情報を自身のデータベースに付加するために、第３のＡＩＰＲ４１８は、戻りパケットから、第４のＡＩＰＲ４２２のネットワークアドレス及びポート番号を、このセッションに関する次の中間地点としてＡＩＰＲのデータベースにコピーする。第３のＡＩＰＲ４１８がセッションの後続パケットを受信すると、第３のＡＩＰＲ４１８は、それらの後続パケットを、次の中間地点の、即ち第４のＡＩＰＲ４２２のネットワークアドレス及びポート番号に転送する。
【００６８】
従って、ＡＩＰＲにセッション経路に沿った次のＡＩＰＲのネットワークアドレス及びポート番号が一度通知されると、ＡＩＰＲは、後続パケットの自然なルーティングを行わずに、その次のＡＩＰＲへと後続パケットを転送する。
【００６９】
第３のＡＩＰＲ４１８は、戻りパケットを、第３のＡＩＰＲ４１８のデータベースにそのネットワークアドレス及びポート番号が記憶されており、且つ、セッションの前の中間地点として識別されている第２のＡＩＰＲ４１４に転送する。同様に、送信元クライアント４２６へと戻る経路に沿った各中間地点は、戻りパケットを自身の前の中間地点にそれぞれ転送する。
【００７０】
第１の中間地点、即ち第１のＡＩＰＲ４０８が戻りパケットを受信すると、その中間地点は戻りパケットをその本来の形に、即ち宛先サービス４２８が戻りパケットを送信したときにその戻りパケットが有していた形に復元することができるか、又は、ルータ４３０によって変更することができたパケットとして、例えばルータ４３０によって実施されたネットワークアドレス変換（ＮＡＴ）の結果を復元することができる。第１の中間地点が、先行パケットは第１の中間地点に到達する前にその他のいずれの中間地点も通過していないことを示すフラグを自身のデータベースにセットしていたことを想起されたい。このフラグは、戻りパケットを復元して、その復元された戻りパケットを送信元クライアント４２６に転送することを第１の中間地点に知らせるために使用される。第１の中間地点は、戻りパケットを送信元クライアント４２６に転送する。後続の戻りパケットも同様に処理される。
【００７１】
図４には図示していない第３のシナリオにおいては、先行パケットを受信するための最後のＡＩＰＲが、宛先サービスのネットワークアドレスと同じネットワークアドレスを有している。例えば、宛先サービスのネットワークアドレスをゲートウェイルータ／ＡＩＰＲに与えることができ、またゲートウェイルータ／ＡＩＰＲは、サービスリクエストを処理することができるか、又は、サービスを実施するために、自身のルーティングテーブルを用いて、パケットを別のノードに転送することができる。最後のＡＩＰＲは、上記において述べたように、先行パケット及び後続パケットを復元することができる。
【００７２】
先行パケットの識別
上述のように、中間地点はセッションの先行パケットを識別できるべきである。先行パケットを識別するために種々の技術を使用することができる。それらの技術のうちの幾つかはプロトコル固有のものである。例えば、ＴＣＰセッションは、ＳＹＮパケット、ＳＹＮ−ＡＣＫパケット及びＡＣＫパケットを含んでいる公知の３ウェイハンドシェイクに従って開始される。ノードペア間のパケット交換をステートフルに追跡することによって、中間地点はセッションの開始を識別することができ、また多くの場合においてセッションの終了を識別することができる。例えば、ＦＩＮフラグをパケットに含ませて、その他のノードにＡＣＫを送信することによって、又は、単純にＲＳＴフラグをパケットに含ませることによって、ＴＣＰセッションを終了させることができる。各中間地点は、各セッションに関する状態情報、例えば送信元クライアント／宛先サービスのネットワークアドレスとポート番号のペアを記憶しているので、中間地点は、受信した各パケットが関連付けられているセッションを識別することができる。中間地点は、セッションの終点から送信されたメッセージ及びフラグ、例えばＳＹＮ及びＦＩＮを監視することによって、また各セッションに関する状態情報を自身のデータベースに記憶することによって、各セッションのプロトコル状態を追跡することができる。パケットトラフィックのそのようなステートフルな監視は、本発明者が知っている従来技術には教示されていない。その代わりに、従来技術からはこのタイプの監視とは異なるものが知られている。
【００７３】
ＳＹＮパケットを再送することができ、各ＳＹＮパケットが別個のセッションを開始する必要はないことを言及しておく。しかしながら、中間地点は、セッションを開始するＳＹＮパケットと、例えば応答パケットに基づき再送されたＳＹＮパケットとを区別することができる。
【００７４】
プロトコルがセッションを終了するためのパケットシーケンスを規定していなければ、中間地点はタイマを使用することができる。セッションに関してパケットが全く処理されずに事前に規定された長さの時間が経過すると、中間地点は、そのセッションが終了していると想定することができる。そのようなタイムアウト時間を、終了シーケンスを規定するプロトコルを使用して、セッションに適用することもできる。
【００７５】
表２には、種々のプロトコルに従って、セッションの開始及び終了を識別するための例示的な種々の技術が記載されている。それらのプロトコルの規定に基づき、類似の技術をその他のプロトコルのために発展させることができる。
【表２−１】
2017537547.tif 000004
【表２−２】
2017537547.tif 000005
【００７６】
図５は、図示の実施の形態による、宛先ＭＡＣアドレス５０２及び８０２．１Ｑ  ＶＬＡＮタグ５０４を含んでいる、イーサネットヘッダ５００の概略的なレイアウトである。図６は、図示の実施の形態による、プロトコルフィールド６０２、送信元ＩＰアドレス６０４及び宛先ＩＰアドレス６０６を含んでいる、ＩＰヘッダ６００の概略的なレイアウトである。図７は、図示の実施の形態による、送信元ポート７０２、宛先ポート７０４、シーケンス番号７０６、ＳＹＮフラグ７０８及びＦＩＮフラグ７１０を含んでいる、ＴＣＰヘッダ７００の概略的なレイアウトである。これらのパケット及び識別フィールドを、表３にまとめたように、セッションの開始を識別するために使用することができる。
【表３−１】
2017537547.tif 000006
【表３−２】
2017537547.tif 000007
【００７７】
拡張型ＩＰルータ（ＡＩＰＲ）
図８は、本発明の図示の実施の形態に従って構成されているＡＩＰＲ（中間地点）８００の概略的なブロック図である。この図は、ＡＩＰＲ８００の一部を示すことを意図しており、従って、全ての部分は示されていない。後続の図においては、このＡＩＰＲ８００又はその他の実施の形態に従って構成されているＡＩＰＲに設けられていて良いその他の部分が示されている場合もある。ＡＩＰＲ８００は、少なくとも２つのネットワークインタフェース８０２及び８０４を含んでおり、それら２つのネットワークインタフェース８０２、８０４を介して、ＡＩＰＲ８００を２つのネットワークに接続することができる。ネットワークインタフェース８０２及び８０４は、例えば、イーサネットインタフェースであって良い。ＡＩＰＲ８００は、ネットワークインタフェース８０２及び８０４を介してパケットを送受信することができる。
【００７８】
先行パケット識別器８０６は、ここにおいて説明するように、先行パケットを自動的に識別する。一般的に、先行パケット識別器８０６は、ＡＩＰＲの情報ベース８１０にまだ存在しないセッションに関連するパケット、例えば新たな送信元クライアント／宛先サービスのネットワークアドレスとポート番号のペアを識別するパケットを受信すると、先行パケットを識別する。上記において述べたように、各先行パケットは、一連のパケット（パケットシリーズ／セッション）の脱落してない最初のパケットである。各セッションは、典型的には、先行パケット及び少なくとも１つの後続パケットを含んでいる。順方向のフロー制御に関して、先行パケット及び全ての後続パケットは、同一の送信元クライアントから同一の宛先サービスへと送信される。順方向のフロー制御に関して、セッションの全てのパケットは、送信元クライアントから宛先サービスへと送信され、また、逆方向のフロー制御に関して、セッションの全てのパケットは、宛先サービスから送信元クライアントへと送信される。
【００７９】
セッション（パケットシリーズ）マネージャ８０８が先行パケット識別器８０６に接続されている。各セッションに対して、セッションマネージャ８０８は、ユニークな識別子を割り当てる。ユニークな識別子は、例えば、ＡＩＰＲ８００又はネットワークインタフェース８０２のネットワークアドレスと、セッションの後続パケットを受信するためにセッションマネージャ８０８によって割り当てられた第１のポート番号と、の組み合わせであって良い。ユニークな識別子は、更に、先行パケット及び後続パケットを伝送するために、セッションマネージャ８０８によって割り当てられた第２のポート番号と組み合わされた、ＡＩＰＲ８００又は他方のネットワークインタフェース８０４のネットワークアドレスを含むことができる。このユニークな識別子は、セッションに関連付けられている。セッションマネージャ８０８は、セッションに関する情報を情報ベース８１０に記憶する。この情報は、本来の送信元クライアント／宛先サービスのネットワークアドレスとポート番号とのペアに関連付けられた、ユニークな識別子を含むことができる。
【００８０】
図９は、例示的な中間地点情報ベース９００及びこの中間地点情報ベース９００が含んでいる幾つかの状態情報の概略的なレイアウトである。各列は、セッションを表しており、従って、そのセッションに関する状態情報を含んでいる。従って、セッション識別子列９０２は、送信元クライアント９０４及び宛先サービス９０６に関するサブ列を含んでいる。各クライアント９０４に関して、そのネットワークアドレス９０８及びポート番号９１０が記憶されている。各宛先サービス９０６に関して、そのネットワークアドレス９１２及びポート番号９１４が記憶されている。この情報は、先行パケットから抽出される。
【００８１】
セッションに関する付加的な状態情報を、状態列９１５に記憶することができる。この情報を、例えばセッションが開始されているか、又はセッションが終了しているときに、一連のパケットをステートフルに追跡するために使用することができる。
【００８２】
逆方向列は、特に前のＡＩＰＲへの逆方向の経路の部分に関する情報９１６を記憶するためのサブ列を含んでいる。逆方向の経路情報９１６は、前のＡＩＰＲに関する情報９１８及び現在のＡＩＰＲ８００に関する情報９２０を含んでいる。前のＡＩＰＲに関する情報９１８は、ＡＩＰＲのネットワークアドレス９２２及びポート番号９２４を含んでいる。セッションマネージャ８０８は、先行パケットがＡＩＰＲから転送されたことを前提として、この情報を先行パケットから抽出する。しかしながら、現在のＡＩＰＲ８００が先行パケットを処理するための最初のＡＩＰＲである場合には、情報９１８は、フラグとして空のまま残される。現在のＡＩＰＲ８００に関する情報９２０は、先行パケットを受信したインタフェース８０２のネットワークアドレス９２６と、セッションマネージャ８０８によって割り当てられた第１のポート番号９２８と、を含んでいる。
【００８３】
中間地点情報ベース９００は、特に次のＡＩＰＲへの順方向の経路の部分に関する情報９３０を記憶するようにも構成されている。この情報９３０は、現在のＡＩＰＲ８００に関する情報９３２と、次のＡＩＰＲが存在することを前提として、経路に沿った次のＡＩＰＲに関する情報９３４と、を含んでいる。情報９３２は、現在のＡＩＰＲが先行パケット及び後続パケットを送信する際に使用するインタフェースのネットワークアドレス９３６と、セッションマネージャ８０８によって割り当てられた第２のポート番号９３８と、を含んでいる。経路に沿った次のＡＩＰＲに関する情報９３４は、ＡＩＰＲに順方向の経路に関する情報が供給されない限り利用できない。次のＡＩＰＲに関する情報９３４は、そのネットワークアドレス９４０及びポート番号９４２を含んでいる。次のＡＩＰＲに関する情報９３４をまだ利用できない場合には、ＡＩＰＲ８００が下記において説明するように戻りパケットを処理する際に、情報９３４を埋めることができる。
【００８４】
中間地点情報ベース９００の幾つかの実施の形態は、逆方向情報９１６を含まずに、順方向情報９３０を含むことができる。中間地点情報ベース９００の別の実施の形態は、順方向情報９３０を含まずに、逆方向情報９１６を含むことができる。
【００８５】
再び図８を参照する。先行パケット変更器８１２は、セッションマネージャ８０８と接続されている。先行パケット変更器８１２は、先行パケットを変更し、セッションに関連付けられているユニークな識別子を記憶する。本来の送信元クライアントのネットワークアドレスとポート番号のペア及び本来の宛先サービスのネットワークアドレスとポート番号のペアは、必要に応じて、変更された先行パケットに記憶される。パケットに記憶される付加的な情報を含むために先行パケットを拡張することができるか、又は、先行パケット内の既存のスペース、例えばベンダ固有の属性フィールドを使用することができる。付加的な情報を伝送するためのその他の技術はプロトコル固有であり、例えばＴＣＰを用いて、付加的な情報をＴＣＰオプションフィールドとして伝送することができるか、又は、データとしてＳＹＮパケットに付加することができる。いずれのケースにおいても、セッションデータブロックという用語は、変更された先行パケットに付加された情報を参照する際に用いられる。
【００８６】
図１０は、本来の送信元ＩＰアドレス１００２及び宛先ＩＰアドレス１００４の各ＩＰアドレスと、本来の送信元ポート番号１００６及び宛先ポート番号１００８の各ポート番号と、が示されている、例示的に変更された先行パケット１０００の概略図である。図１０には、変更された先行パケット１０００内のセッションデータブロック１０１０も示されている。セッションデータブロック１０１０は、連続的なものとして示されているが、それとは異なり、変更された先行パケット１０００にわたりその内容が分散されていても良い。セッションデータブロック１０１０は、送信を行うＡＩＰＲの識別子、即ち中間ノード識別子１０１２、例えば第２のネットワークインタフェース８０４のネットワークアドレス及び第２のポート番号を記憶することができる。
【００８７】
再び図８を参照する。先行パケット変更器８１２は、必要に応じて、パケットの何らかの拡張を反映させるためにパケット長を更新する。先行パケット変更器８１２は、パケットに対して行われた変更を反映させるためにパケットのチェックサムを更新する。続けて、変更された先行パケットは、パケットルータ８１４によって第２のネットワークインタフェース８０４を介して伝送される。ＡＩＰＲ８００に順方向経路情報が供給されていなければ、以下に述べるように、変更された先行パケットは自然にルーティングされる。
【００８８】
最終的に、宛先サービスは、戻りパケットを送信する。ＡＩＰＲ８００は、第２のネットワークインタフェース８０４を介して戻りパケットを受信する。現在のＡＩＰＲ８００と宛先サービスとの間の別のＡＩＰＲ（下流側のＡＩＰＲ）が先行パケット及び戻りパケットを処理する場合には、下流側のＡＩＰＲが戻りパケットを変更して、下流側のＡＩＰＲのネットワークアドレス及びポート番号を含ませる。ダウンストリームコントローラ識別器８１６は、本明細書において説明するように、ステートフルな診断を使用して、戻りパケットを識別する。ダウンストリームコントローラ識別器８１６は、情報９３４（図９を参照されたい）を記憶し、特に中間地点情報ベース９００における次のＡＩＰＲに関するネットワークアドレス及びポート番号を記憶する。
【００８９】
現在のＡＩＰＲ８００は、この情報を使用して、後続パケットを次のＡＩＰＲ宛てに送ることができる。特に、後続パケット変更器８１８は、後続パケットの宛先アドレスを、直接的に宛先サービスへと続く中間地点のネットワークアドレス及びポート番号の代わりに、次の中間地点のネットワークアドレス９４０及びポート番号９４２（図９を参照されたい）にセットすることができる。パケットルータ８１４は、後続パケットをそれらの変更された宛先アドレスに従って送信する。従って、一連の各パケットに関して、後続パケットは、それら一連のパケットの先行パケットと同一のダウンストリームパケットフローコントローラを介して流れる。
【００９０】
最終パケット識別器８２０は、上記において述べたように、各ストリームの最後を識別するために、各セッションをステートフルに追跡する。上記において述べたように、幾つかのケースにおいては、終了が最後のパケットによって、例えばＲＳＴフラグがセットされているＴＣＰパケット、又は、ＦＩＮフラグがセットされている、ＴＣＰパケットに対する応答のＴＣＰ  ＡＣＫパケットによって明示される。その他のケースにおいては、タイマの期間満了によって、終了を明示することができる。セッションの終了が検出されると、パケットシリーズマネージャ８０８は、セッションからユニークな識別子を分離し、中間地点情報ベース９００からセッションに関する情報を削除する。
【００９１】
ＡＩＰＲ８００が宛先サービスの手前の最後のＡＩＰＲとなるように設けられている場合には、先行パケット変更器８１２は、送信元クライアントが先行パケットを送信したときに先行パケットが有していた状態に先行パケットを復元することができるか、又は、先行パケットが変更されたときの状態に先行パケットを復元することができ、例えばネットワークアドレス変換（ＮＡＴ）の結果を復元することができる。同様に、後続パケット変更器８１８は、後続パケットを復元する。
【００９２】
同様に、先行パケットの宛先アドレスが、ＡＩＰＲ８００のネットワークアドレスと同じである場合、又は、先行パケットを受信する際に使用するＡＩＰＲ８００のネットワークインタフェース８０２のネットワークアドレスと同じである場合には、先行パケット変更器８１２及び後続パケット変更器８１８は、先行パケット及び後続パケットを復元する。
【００９３】
上記において述べたように、幾つかのプロトコルにおいては、セッションを開始するために、例えばＴＣＰのＳＹＮ−ＳＹＮ／ＡＣＫ−ＡＣＫハンドシェイクを用いる場合のように、種々のパケットが要求される。従って、ダウンストリームコントローラ識別器８１６は、セッションが開始されたとみなす前に、宛先サービスから第２の戻りパケットを受信するまで待機することができる。
【００９４】
上記において述べたように、中間地点８００の幾つかの実施の形態は、戻りパケット経路も管理する。先行パケット識別器８０６は、先行パケットが上流側の中間地点から中間地点８００に転送されたか否かを自動的に確認する。先行パケットがセッションデータブロックを含んでいる場合には、上流側の中間地点は、先行パケットを転送している。パケットシリーズマネージャ８０８は、上流側の中間地点に関する情報を中間地点情報ベース８１０に記憶する。戻りパケット識別器８２２は、第２のネットワークインタフェース８０４から戻りパケットを受信し、セッションの戻りパケットを自動的に識別する。それらの戻りパケットを、セッションに対応する、中間地点情報ベースにおける情報９３２（図９を参照されたい）に等しい宛先アドレス及びポート番号によって識別することができる。戻りパケット変更器は、戻りパケットを変更し、中間地点情報ベース９００における情報９１８によって識別されている、セッションに関する上流側の中間地点宛てにそれらの戻りパケットを送る。
【００９５】
パケットのステートフルな監視は従来のルータによって行われないことを言及しておく。ルータによるパケットのステートフルな監視は、本発明者が知っている従来技術には教示されていない。しかしながら、パケットのステートフルな監視は、本願に開示した中間地点の１つの実施の形態である。本発明の実施の形態によるこのタイプの監視は、従来技術のものとは区別される。
【００９６】
図１１は、本発明の図示の実施の形態によるＡＩＰＲ８００（図８を参照されたい）によって実施される種々の動作を概略的に説明するフローチャート１１００を含んでいる。このフローチャート１１００は、ＩＰネットワーク内の起源ノードから宛先ノードへと、セッションのパケットを向けるための、パケットルーティング方法を示している。下記において説明するその他の実施の形態は、先行パケットを自然にルーティングするものではないが、この実施の形態においては、先行パケットが自然にルーティングされる。１１０２においては、中間ノードがセッションにおける複数のパケットの中から先行パケットを取得する。この中間ノードは、ルーティング機能を実施するルーティングデバイス又はスイッチングデバイスを含むことができる。
【００９７】
セッションにおけるパケットは、ユニークなセッション識別子を有している。１１０４では、先行パケットが通過した前ノードが求められる。前ノードは、前ノード識別子を有している。１１０６では、前ノード識別子とセッション識別子との戻り関連性が形成される。１１０８では、セッションに関する状態情報を保持するために、戻り関連性がメモリに記憶される。
【００９８】
１１１０では、少なくとも中間ノードを識別するために、先行パケットが変更される。１１１２では、先行パケットが、ＩＰネットワークに対する中間ノード電子出力インタフェースを介して、宛先ノードに転送される。電子出力インタフェースは、ＩＰネットワークと通信する。１１１４では、逆方向メッセージ（例えば、「逆方向パケット」と称するパケット）が、中間ノードの電子入力インタフェースを介して受信される。逆方向メッセージは、次ノードから受信する。次ノードは、次ノード識別子を有している。逆方向メッセージは、次ノード識別子及びセッション識別子を含んでいる。電子入力インタフェースは、ＩＰネットワークと通信する。
【００９９】
１１１６では、次ノード識別子とセッション識別子との順方向関連性が形成される。１１１８では、セッションに関する状態情報を保持するために、順方向関連性がメモリに記憶される。１１２０では、セッションの付加的なパケットが取得される。１１２２では、セッションにおける実質的に全ての付加的なパケットが、記憶されている順方向関連性を使用して、次ノードに転送される。付加的なパケットは、中間ノードの電子出力インタフェースを介して転送される。
【０１００】
１１２４では、戻りセッションにおいて、又は、セッションの戻り部分において、複数のパケットを宛先ノードから受信する。戻りセッションは、起源ノードに宛てに送られる。１１２６では、戻りセッションにおける実質的に全てのパケットが、記憶されている戻り関連性を使用して、前ノードに転送される。パケットは、電子出力インタフェースを介して転送される。
【０１０１】
図１２において１２００に示されているように、先行パケットの宛先ノードへの転送１１１２は、次ノードに関するルーティング情報を有しているルーティング情報ベースへのアクセスを含むことができる。１２０２に示されているように、中間ノードは、ルーティングテーブルを有することができ、また、先行パケットの宛先ノードへの転送１１１２は、先行パケットを宛先ノードに転送するためのルーティングテーブルの使用を含むことができる。１２０４に示されているように、先行パケットの宛先ノードへの転送１１１２は、先行パケットを次ノード宛てに送るための次ノード識別子の使用を含むことができる。
【０１０２】
先行パケットの宛先を規定することができるので、先行パケットが転送された後、且つ、次ノードが先行パケットを受信する前に、複数のネットワークデバイスが先行パケットを受信する。例えば、第１のノードが先行パケットを、隣接する第２のノードに転送する場合には、第１のノードと第２のノードとの間のインターネット内のデバイスは、第２のノードが同一の先行パケットを受信する前に、その先行パケットを受信することができる。
【０１０３】
ＡＩＰＲ８００及びそのコンポーネント８０２〜８２４の全て又は一部を、メモリに記憶されている命令を実行するプロセッサ、ハードウェア（例えば組み合わせロジック、特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ）又はその他のハードウェア）、ファームウェア又はそれらの組み合わせによって実施することができる。
【０１０４】
順序付けられた経路の先立った形成
上述の種々の実施の形態は、送信元ノード／起源ノードと宛先ノード／サービスノードとの間のノードの上述の順序付けられた経路を、自然なルーティングを使用して形成する。従って、そのような実施の形態は、ロードバランシングの観点から、より効率的な経路、より高速な経路、より信頼性がある経路、又は、より最適な経路を選択する必要はない。従って、そのような自然なルーティングが行われる実施の形態では、効率的ではない、又はそれどころか効果的ではないノードの順序付けられた経路が選択される可能性がある。例えば、順序付けられた経路においてパケットが脱落する可能性があるか、又は、順序付けられた経路において大量の輻輳が発生する可能性があるか、又は、順序付けられた経路が高コストである可能性がある。図示の実施の形態は、エンドツーエンドのノードのより最適な順序付けられた経路を選択するために、ノードのルーティングデータベースにおける状態情報を利用することによって、それらの問題及び関連する問題を緩和しようとするものである。
【０１０５】
より詳細には、中間ノード（例えばルーティングデバイス）は、最適なフィーチャを有している順序付けられた経路を事前に選択するために（但し、それらの最適な経路のフィーチャは規定されている）、自身のデータベースにおける状態情報を、例えばネットワークにおけるＡＩＰＲ／ノードの使用率（例えばノード輻輳）に関する情報を使用することができる。中間ノードは、順序付けられた経路を事前に選択するために、ＡＩＰＲ／ノード間のネットワークにおける種々のリンクのコストを使用することもできる。例えば、低いコストが最優先される場合には、中間ノードは、最も低いコストの経路を形成することができる。択一的に、信頼性が最優先される場合には、中間ノードは、より信頼性がある経路を形成することができる。低いコスト及び信頼性の両方が、相互にある程度の特定の比率で最優先される場合には、中間ノードは、低いコスト及び信頼性の両方の品質を有している経路を形成することができる。確かに、それらの目標が達成されようとしているが、実際には、ネットワークの動的な性質は、それらの順序付けられた経路のうちの幾つかの経路の有効性を低下させる可能性がある。それにもかかわらず、本発明者は、そのような事前に選択された順序付けられた経路は、それらのケースの大部分において性能を改善すると予想する。
【０１０６】
図１３から図１６には、この経路の事前選択に関する実施の形態が示されている。特に、図１３には、図示の実施の形態がパケットを転送することができる、別の例示的なネットワークが概略的に示されている。図示されているように、このネットワークは、起源ノード１３００を含んでおり、この起源ノード１３００は、比較的大きいネットワーク（例えばインターネット）にわたった先に位置する宛先ノード１３０２に由来するサービスに対するリクエストを生成する。このために、比較的大きいネットワークは、両エンドノード１３００及び１３０２を論理的に接続する、複数のＡＩＰＲ／ノード（ノード１、ノード２〜ノード１２として識別される）及び対応するリンク１３０４を含んでいる。
【０１０７】
特に、起源ノード１３００は、この図においては２つのノード、即ちノード１及びノード２とリンクを介して（このリンク及び図１３におけるその他のリンクは一般的に参照番号「１３０４」によって識別される）接続されており、リンクは、直接的なコネクションを含むことができるか（例えばＬＡＮ又は直接的なコネクションを介する）、又は、ステートレスなレイヤ３プロトコル又はステートフルなプロトコルを使用する比較的大きいネットワーク（例えばインターネット）を介する仮想コネクションを含むことができる。図１３においては、そのような仮想コネクションを強調するために、２つのリンク１３０４にのみクラウドが示されている。しかしながら、それら２つのクラウドについて、それら２つのリンク１３０４だけが仮想リンクであることを意味していると解するべきではない。ノード１及びノード２の下流側におけるその他のノードも、より大きいネットワークと直接的に又は仮想的に接続されている。
【０１０８】
特に、宛先ノード１３０２は、サービスを提供するための単一のデバイスを含むことができるか、又は、サービスを提供するＬＡＮの一部を含むことができる。図１４には、後者のケースの１つの実施の形態が示されており、この実施の形態においては、宛先ノード１３０２が、ＬＡＮ１４０２の端部において端部ノード／端部ルータ１４００を含んでいる。例えば、ＬＡＮ１４０２は、内部トポロジと、外部のデバイス／ノードに対して大部分が未知／不確実な構造と、を有しているデータセンタ１４０４の一部であって良い。従って、このＬＡＮ１４０２に由来するサービスに対する全てのリクエストは、端部ノード（又は複数ある類似の端部ノードのうちの１つ）によって受信され、端部ノードは、そのＬＡＮ１４０２における適切なエンドポイントにリクエストをどのように転送するかを決定する。このケースにおいては、全体のデータセンタ１４０４又は端部ルータ１４００のうちの一方又は両方を、宛先ノード１３０２とみなことができる。
【０１０９】
そのために、宛先ノード１３０２は、図１３の比較的大きいネットワークに接続するための電子ネットワークインタフェースを備えている上述の端部ルータ１４００を含んでいる。図１４では、この比較的大きいネットワークが「インターネット」として単に概略的に示されている。データセンタ１４０４は、ルータ１４０８を備えている複数のサーバ、ラック又はその他のデバイス１４０６Ａ〜１４０６Ｃも含んでおり、各ルータ１４０８は、ネットワークトラフィック、例えばパケットを、Ｓ１、Ｓ２〜ＳＮとして表されている複数のサービスのうちの１つ又は複数に向ける。ルータ１４０８及びサービスＳ１〜ＳＮは、例えば多数の冗長的なハードウェア及び／又は仮想ルータを有することによって、種々異なる構成のうちのいずれかを取ることができ、また、データセンタ１４０４内のその他の機能デバイスと相互接続するための種々の公知の技術を採用することができる。この例において、データセンタ１４０４は、３つのデバイス１４０６Ａ〜１４０６Ｃを有しており、それら３つのデバイス１４０６Ａ〜１４０６ＣはそれぞれサービスＳ１、Ｓ２〜ＳＮを有している。サービスＳ１、Ｓ２〜ＳＮは、各デバイス１４０６Ａ〜１４０６Ｃにわたり同一のものであって良いが（即ち、サービスＳ１は３つ全ての１４０６Ａ〜１４０６Ｃにわたり同一である）、幾つかの実施の形態では、異なるデバイス１４０６Ａ〜１４０６Ｃは異なるサービスを有していても良い。適切なルーティングを保証するために、データセンタ１４０４は、データセンタ１４０４内のルーティング情報及びデータセンタ１４０４外のルーティング情報の両方を含んでいるルーティングデータベース１４１０も有している。ルーティングデータベース１４１０は、ＡＩＰＲの一部であっても良いし、択一的な実施の形態においては、データセンタ１４０４における独立したエンティティであっても良い。
【０１１０】
中間ノードは、ネットワークにわたる、バランシングが行われた、ノードの好適な順序付けられた経路を生成する、特別に構成された機能コンポーネント及び従来の機能コンポーネントを複数有している。図１５には、そのようなコンポーネントを幾つか有しているＡＩＰＲ／中間ノード／ルーティングデバイスの別の実施の形態が概略的に示されている。ＡＩＰＲ／中間ノード／ルーティングデバイスのその他の実施の形態のように、例えば図８に示されている実施の形態のように、簡略化だけを目的として、この実施の形態は、少数のコンポーネントだけを示している。確かに、この実施の形態は、図８の実施の形態の機能コンポーネントと同様の又は同一である、適切に作用するよう接続されている、機能コンポーネントを有することができる。例えば、図８の実施の形態と同様に、この実施の形態は、１つ又は複数のネットワークインタフェース１５００、ルーティング／情報データベース１５０２及びルータ１５０４を有している。この実施の形態は、内部相互接続構造１５０６も有しており、これによって、イントラノードコンポーネントの通信が実現される。図８の実施の形態においては、この相互接続がコンポーネント間の線として表されているが、それに対し図１５においては、この相互接続構造１５０６がバスとして描画されている。いずれも、ルーティングデバイス／ノード内の相互接続装置の単純で一般的な表示形態である。そのような表示形態は、１つの機能コンポーネントがその他の機能コンポーネントに直接的又は間接的に接続されていること、又は、ただ１つのバスだけが使用されることを必ずしも示唆しているわけではない。
【０１１１】
共通のコンポーネントの他に、図１５のＡＩＰＲは、経路生成器１５０８も有しており、この経路生成器１５０８は、セッション毎に、起源ノード１３００と宛先ノード１３０２との間のノードの順序付けられた経路を事前に規定する。上記において述べたように、また下記においてより詳細に説明するように、経路生成器１５０８は、２つのエンドノード１３００と１３０２との間の事前に規定された経路を選択するために、少なくとも、ネットワーク内のノードに関する状態情報を使用する。
【０１１２】
このために、図１６には、状態情報を使用して、順序付けられた経路に沿って所定のセッションのパケットを転送するプロセスを概略的に説明するフローチャートが示されている。例示を目的として、図１３及び図１４のネットワークを使用して、このプロセスを説明する。しかしながら、このプロセスは、起源ノード１３００と宛先ノード１３０２との間で、セッションのパケットをステートフルに転送するために通常使用されるより長いプロセスに比べて大幅に簡略化されている。従って、このプロセスは、当業者が使用する見込みが高い多くのステップを含むことができる。更に、幾つかのステップを、図示されている順序とは異なる順序で実施することができるか、又は、同時に実施することができる。従って、当業者であれば、このプロセスを適宜変更することができる。更には、上記において述べたように、また下記において述べるように、ネットワーク及びデータベースのトポロジ及び構成は、使用することができる種々異なる広範なトポロジ及び構成の単なる例に過ぎない。当業者であれば、用途及びその他の制約に応じて、異なるトポロジ及び構成を使用することができる。
【０１１３】
プロセスは、ステップ１６００において開始され、このステップ１６００においては、中間ネットワークデバイス（即ちＡＩＰＲ）が、起源ノード１３００に由来する、所定のセッションの先行パケットを受信する。このパケットの受信によって、起源ノード１３００と宛先ノード１３０２との間のステートフルな順序付けられた経路を形成するプロセスが指示又は開始される。
【０１１４】
図示の実施の形態においては、中間ノードが起源ノード１３００に近接しており、好適には起源ノード１３００の次に位置するノードである。上記において説明したように、あるノードが、パケットを受信するための、順序付けられたノードのセットにおける次ノードである場合には、そのノードが別のノードの「次に位置する」又は「隣接する」ノードとみなされる。図１３において、例えば、順序付けられたノードのセットを以下のように構成することができる：
起源ノード−ノード１−ノード４−ノード３−ノード８−宛先ノード
【０１１５】
この例においては、ノード１が起源ノード１３００に隣接しているとみなされる。しかしながら、ノード４は、起源ノード１３００から２つ離れたノードであり、従って、この実施の形態において順序付けられた経路を事前に規定するための適切なノードではない。しかしながら、択一的な実施の形態は、順序付けられた経路を設定するために、起源ノード１３００に隣接していない経路ノードを使用することができる。例えば、そのような実施の形態においては、先に例示した序付けられた経路のノード４又はノード３が、宛先ノードまでの経路の残りを形成することができる。
【０１１６】
図１３の例の説明を続ける。ノード１が先行パケットを受信した場合を想定する。従って、そのようなノードは、この所定のセッションにおける経路の形成及び適切なパケットの転送のプロセスを開始する。そのために、ノード１は、ネットワーク内のノードに関する状態情報にアクセスする。上述のように、ネットワーク内の全てのノード又は多くのノードは、自身の状態情報及び関連するルーティング情報を、ネットワーク内のその他のノードに対して示し、従って、全てのノードは、最新のローカルルーティングデータベースを保持するために、この情報を受信することができる。
【０１１７】
このケースにおいては、ノード１が、ネットワーク内の幾つかのノード又は全てのノードの状態を求めるために、自身のローカルルーティングデータベース１５０２（「中間地点情報ベース」とも称する）にアクセスする（ステップ１６０２）。そのために、ノード１の経路生成器１５０８は、ノード２〜ノード１２のうちの幾つかのノード又は全てのノードに関する（又は、ノード１とノード２とは中間ノードが介在することなく直接的に接続されていないことから、ノード２を除く全てのノードに関する）状態情報を検索することができる。とりわけ、各ノードによって処理される各セッションに関して、状態情報は、次のノード／中間地点、前のノード／中間地点、セッション識別子、そのセッションの起源ノード１３００及び宛先ノード１３０２の識別子、及び、ノードが処理しているステートフルなセッションの数を含むことができる。例えば、ノード４は、２０個のアクティブなセッションのための順序付けられた経路の一部であって良い。従って、状態情報は、ノード４の２０個のセッションの各セッションに関する次ノード及び前ノードを含むことができ、また、それら全てのセッションの起源ノード及び宛先ノードも含むことができる。更に、ノード１の経路生成器１５０８は、関連付けられたロードバランシング情報、例えば、ネットワーク内の異なるリンク１３０４及びノードに関連付けられたコスト、リンク容量及び目下のフローを検索することができる。
【０１１８】
状態情報及びロードバランシング情報に基づき、ノード１の経路生成器１５０８は、ノード１から宛先ノード１３０２までの適切な経路を求める。換言すれば、経路生成器１５０８は、宛先ノード１３０２までの下流側の全てのノードを選択するために、少なくとも状態情報を使用し、また幾つかの実施の形態においては、ロードバランシング情報を使用する。例えば、その他の経路の中から、経路生成器１５０８は、宛先ノード１３０２までのステートフルな順序付けられた経路の以下のセットのうちの任意のセットを選択することができる。
（１）ノード１−ノード３−ノード７−ノード８−宛先ノード１３０２
（２）ノード１−ノード３−ノード８−宛先ノード１３０２
（３）ノード１−ノード４−ノード３−ノード８−宛先ノード１３０２
（４）ノード１−ノード５−ノード１０−宛先ノード１３０２
【０１１９】
実際は、上記に挙げた４つのステートフルな順序付けられた経路は例であって、それらの経路だけがステートフルな順序付けられた経路であるということを示唆することを意図したものではない。従って、所定のセッションにおけるパケットは、ノード１から宛先ノード１３０２まで、上述の順序でノードを辿る。勿論、逆方向の経路においては、パケットが逆の順序でノードを辿り、ノード１の後に起源ノード１３００にホップする。例えば、順序付けられた経路（１）を使用する場合には、セッションのパケットが、起源ノード１３００から出発して、ノード１、ノード３、ノード７、ノード８を通過して、宛先ノード１３０２に到達する。ノード３及びノード７は、この経路において隣接しているとみなされる。ノード１及びノード７は、この経路において隣接しているとはみなされない。従って、ステップ１６０４では、データベース１５０２における状態情報及び／又はロードバランシング情報に基づき、それらの順序付けられた経路のうちの１つ（又は図示していない別の経路）が選択される。
【０１２０】
プロセスはステップ１６０６に進み、このステップ１６０６では、選択された経路情報がデータベース１５０２に記憶される。所定の時点において、ノード１は、この新たな経路及びセッションをネットワーク内のその他のルーティングデバイス又はノードにブロードキャスト又はマルチキャストし、それによって、それらのその他のルーティングデバイス又はノードは自身のルーティングデータベースを更新することができる。次に、ルーティングデバイスにおけるルータ１５０４は、先行パケットを、選択された経路に沿って、電子インタフェース１５００を介して転送する（ステップ１６０８）。従って、（先行パケットに関して）ノード１の下流側の、選択された経路におけるノードは、上述したやり方で先行パケットを受信して、自身のローカルデータベースを更新し、また、次ノードへの先行パケットの転送を継続する。
【０１２１】
この経路におけるその他のノードは、種々異なるやり方のうちの任意のやり方で、順序付けられた経路に関する情報を受信することができる。上記において述べたように、それらのノードは、単純にブロードキャスト又はマルチキャストされたそれらの順序付けられた経路に関する情報を受信することができる。択一的に、上述のやり方に類似するやり方で先行パケットを変更することができる。従って、次に受信する下流側のノード（例えばノード３）は、先行パケットを受信して、その先行パケットの宛先又はその他の内容から、それが所定のセッションにおける先行パケットであることを求める。この下流側のノード（例えばノード３）は、先行パケットから、（１）そのようなノードが、このセッションの所定の経路の順序付けられたノードのセット（上述のセット（１））の一部として選択されたことを確認することができ、また、（２）順序付けられた経路における次ノード（例えばノード７）の識別子を確認することができる。従って、この下流側のノードは、先行パケットを順序付けられた経路における次ノード（例えばノード７）に転送することができ、この次ノードは、先行パケットを次ノード（例えばノード８）に転送するためにこのプロセスを繰り返す。宛先ノード１３０２は、自身が最後のノードであることを検出することができ、従って、この経路を形成するために使用された付加的な情報を取り除くことができる。このケースにおいては、宛先ノード１３０２が自身のデータベース１５０２に前ノード（例えばノード８）を記憶し、従って、この所定のセッションに関するパケットをノード８に戻すために転送することができ、ノード８は、起源ノード１３００までの所定の経路に沿ったパケットの転送を継続する。
【０１２２】
プロセスは、ステップ１６１０において終了し、このステップ１６１０では、起源ノード１３００及び宛先ノード１３０２によって要求されたように、順序付けられた経路に沿って両方向にパケットが転送される。例えば、起源ノード１３００は、データセンタ１４０４内のサービスＳ１〜ＳＮからビデオをリクエストすることができる。従って、その時点では順序付けられた経路が形成されており、起源ノード１３００は、ビデオを要求するパケットの第１のセットを転送することができる。従って、図１４のデータセンタ１４０４における宛先ノード１３０２又は端部ルータ１４００は、そのリクエストを受信し、またそれに応答して、リクエストを受信する適切なサービスＳ１〜ＳＮを決定するために、自身のローカルルーティングデータベース１５０２にアクセスする。ルーティングデータベース１５０２から受信した情報に基づき、端部ルータ１４００は、上述のコンピューティングデバイスのうちの１つを介して、サービスＳ１〜ＳＮのうちの１つにリクエストを転送する。例えば、リクエストパケットを、図１４の一番上のデバイス１４０６Ａにおけるローカルルータ１４０８を介して、サービスＳ２に転送することができる。
【０１２３】
サービスＳ２は、これに応答して、ビデオを表すパケットを、自身のローカルルータ１４０８を介して、端部ルータ１４００へと、またネットワークへと返送することができる。従って、このセッションにおけるビデオストリーム内のパケットは、ネットワークを介して、リクエストが向けられた順序とは反対の順序で、起源ノード１３００へと向かう。例えば、上述の経路（１）が使用される場合には、戻り経路のビデオパケットは、以下の順序でノードの順序付けられた経路に沿ってネットワークを通過する。
ノード８−ノード７−ノード３−ノード１−起源ノード１３００
【０１２４】
戻りパケットを受信した後に、各ノードは、それらのパケットが戻りパケットであって、所定のセッションに属していることを認識する。従って、それらのノードは、上述したように、単純に自身のローカルデータベース１５０２にアクセスし、戻りパケットを（このパケットの向きの観点から下流側に位置している）下流側の次ノードに転送する。
【０１２５】
従って、図示の実施の形態は、ネットワークのロードバランシングをより効率的に実施することができる。即ち、それらの実施の形態は、典型的にはステートレスなネットワーク（例えばＩＰネットワーク）内のノードに関する状態情報を使用して、起源ノード１３００と宛先ノード１３０２との間のステートフルな順序付けられた経路を形成する。その結果、典型的にはＬＡＮ又はその他のネットワークの端部に位置する専用のデバイスであるロードバランシングデバイスを必要とすることなく、パケットは、さもなければステートレスなネットワークを介して、より効率的にルーティングされる。
【０１２６】
本発明を上記の例示的な実施の形態に基づき説明したが、本願に開示した本願発明の思想から逸脱することなく、図示の実施の形態に対する修正及び変更を行うことができる。更に、開示した複数の態様又はそれらの一部を、上記に挙げたやり方とは異なるやり方で、及び／又は、特許請求の範囲に明記したものとは異なるやり方で組み合わせることができる。従って、本発明は、開示した実施の形態に制限されるものではないとみなされるべきである。
【０１２７】
種々の実施の形態の態様をフローチャート及び／又はブロック図を参照しながら説明したが、各ブロックの全て又は一部の機能、動作、判断等又は複数のブロックの組み合わせを結合することができるか、別個の動作に分割することができるか、又は、別の順序で実施することができる。各ブロックの全て又は一部、若しくは、複数のブロックの組み合わせを、コンピュータプログラム命令（例えばソフトウェア）として、ハードウェア（例えば組み合わせロジック、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はその他のハードウェア）として、ファームウェアとして又はそれらの組み合わせとして実施することができる。種々の実施の形態を、メモリに記憶されている命令をプロセッサが実行することによって実施することができるか、メモリに記憶されている命令によって制御することができる。メモリは、制御ソフトウェア又はその他の命令及びデータを記憶することに適している、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ又はその他の任意のメモリ、若しくは、それらの組み合わせであって良い。本発明の機能を定義する命令を、種々の形態でプロセッサに提供することができ、例えば有形の書き込み不可能な記憶媒体（例えばコンピュータ内のリードオンリメモリデバイス、例えばＲＯＭ、又は、コンピュータのＩ／Ｏアタッチメントによって読み出し可能なデバイス、例えばＣＤ−ＲＯＭディスク又はＤＶＤディスク）に永続的に記憶されている情報、実体のある書き込み可能な記憶媒体（例えばフロッピーディスク、取り外し可能なフラッシュメモリ及びハードドライブ）に変更可能に記憶されている情報、若しくは、有線式又は無線式のコンピュータネットワークを含む通信媒体を介してコンピュータに伝送される情報の形態でプロセッサに提供することができる。しかしながら、提供の形態はこれらに限定されるものではない。更に、種々の実施の形態を図示した種々のデータ構造に関連させて説明したが、異なるデータ構造を使用してもシステムを実施することができる。
【図１】
2017537547.tif 000008
【図２】
2017537547.tif 000009
【図３】
2017537547.tif 000010
【図４】
2017537547.tif 000011
【図５】
2017537547.tif 000012
【図６】
2017537547.tif 000013
【図７】
2017537547.tif 000014
【図８】
2017537547.tif 000015
【図９】
2017537547.tif 000016
【図１０】
2017537547.tif 000017
【図１１】
2017537547.tif 000018
【図１２】
2017537547.tif 000019
【図１３】
2017537547.tif 000020
【図１４】
2017537547.tif 000021
【図１５】
2017537547.tif 000022
【図１６】
2017537547.tif 000023
【手続補正書】
【提出日】平成29年4月13日(2017.4.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するためのパケットルーティング方法において、
前記ＩＰネットワークと通信する電子インタフェースを有している中間ノードが、前記電子インタフェースを介して、所定のセッションにおける複数のパケットの中から先行パケットを取得するステップと、
各セッションが前記ＩＰネットワーク内の順序付けられた複数のノードによって形成されている単一のステートフルなセッション経路をそれぞれ含んでいる、前記ＩＰネットワーク内の複数のセッションに関する状態情報であって、前記各セッションにおける前記順序付けられた複数のノードに関する情報を含んでいる状態情報を、ルーティングデータベースに保持するステップと、
前記ルーティングデータベースにアクセスし、前記複数のセッションの前記状態情報を求めるステップと、
前記ルーティングデータベースにおける前記状態情報に依存して、前記中間ノードと前記宛先ノードとの間の前記ＩＰネットワークにわたる前記所定のセッションのパケットのためのステートフルな所定の経路を形成するステップと、
前記ステートフルな所定の経路及び前記所定のセッションに関する状態情報を、前記ルーティングデータベースに記憶するステップと、
前記先行パケットを、前記電子インタフェースを介して、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するステップと、
前記所定のセッションに関する複数の付加的なパケットを前記起源ノードから受信し、
前記所定のセッションに関する前記複数の付加的なパケットを、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するステップと、
を含んでいる、パケットルーティング方法。
【請求項２】
前記中間ノードは、ルーティングデバイス又はスイッチングデバイスを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項３】
各セッションにおける前記順序付けられた複数のノードは、２つのエンドノード間の複数のノードを含んでおり、各セッションにおける前記２つのエンドノード間の前記複数のノードは、各パケットを前記各パケットのセッションにおいて、前記２つのエンドノード間で同一のノード順序で伝送するように構成されている、
請求項１に記載のパケットルーティング方法。
【請求項４】
前記ステートフルな所定の経路の形成は、前記ルーティングデータベースにおける複数のノードに関するフロー使用率情報及びコスト情報のうちの１つ又は複数へのアクセスを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項５】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記起源ノードの次に位置しており、且つ、前記中間ノードである第１のノードを有している、
請求項１に記載のパケットルーティング方法。
【請求項６】
ステートフルな所定の経路の形成は、前記ステートフルなセッション経路の使用率及び前記ステートフルなセッション経路の帯域幅を求めることを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項７】
更に、
前記宛先ノードから前記起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信するステップと、
前記電子インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、前記ステートフルな所定の経路に沿って、前記起源ノードに転送するステップと、を含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項８】
前記宛先ノードは、データセンタネットワークのための端部ルータを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項９】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記中間ノードと、前記順序付けられた複数の所定のノード内で前記中間ノードの次に位置しており、且つ、下流側に位置している次ノードと、を含んでおり、
前記方法は、更に、
前記先行パケットを前記次ノード宛てに送るステップを含み、それによって、複数のネットワークデバイスは、前記先行パケットが転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、前記先行パケットを受信する、
請求項１に記載のパケットルーティング方法。
【請求項１０】
ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するためのルーティングデバイスにおいて、
所定のセッションにおける複数のパケットの中から先行パケットを受信するように構成されており、且つ、前記ＩＰネットワークに接続できるように構成されている、電子インタフェースと、
各セッションが前記ＩＰネットワーク内の順序付けられた複数のノードによって形成されている単一のステートフルなセッション経路をそれぞれ含んでいる、前記ＩＰネットワーク内の複数のセッションに関する状態情報であって、前記各セッションにおける前記順序付けられた複数のノードに関する情報を含んでいる状態情報を記憶するように構成されており、且つ、適切に作用するように前記電子インタフェースに接続されている、ルーティングデータベースと、
適切に作用するように前記ルーティングデータベースに接続されており、且つ、前記ルーティングデータベースにアクセスして、前記複数のセッションの状態を求めるように構成されており、更に、前記ルーティングデバイスと前記宛先ノードとの間の前記ＩＰネットワークにわたり、前記所定のセッションのパケットのためのステートフルな所定の経路を、前記ルーティングデータベースに記憶されている、前記ステートフルな所定の経路及び前記所定のセッションに関する状態情報に依存して形成するように構成されている、経路生成器と、
適切に作用するように前記経路生成器に接続されており、且つ、前記先行パケットを、前記電子インタフェースを介して、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するように構成されている、ルータと、
を備えており、
前記ルータは、前記所定のセッションに関する複数の付加的なパケットを前記起源ノードから受信し、前記所定のセッションに関する前記複数の付加的なパケットを、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するように構成されている、ルーティングデバイス。
【請求項１１】
各セッションにおける前記順序付けられた複数のノードは、２つのエンドノード間の複数のノードを含んでおり、各セッションにおける前記２つのエンドノード間の前記複数のノードは、各パケットを前記各パケットのセッションにおいて、前記２つのエンドノード間で同一のノード順序で伝送するように構成されている、
請求項１０に記載のルーティングデバイス。
【請求項１２】
前記経路生成器は、前記ルーティングデータベースにおける複数のノードに関する使用率情報及びコスト情報のうちの１つ又は複数にアクセスすることによって、前記ステートフルな所定の経路を形成するように構成されている、
請求項１０に記載のルーティングデバイス。
【請求項１３】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記起源ノードの次に位置しており、且つ、前記ルーティングデバイスである第１のノードを有している、
請求項１０に記載のルーティングデバイス。
【請求項１４】
前記各セッションにおける前記順序付けられた複数のノードに関する情報は、前記ステートフルなセッション経路の使用率及び前記ステートフルなセッション経路の帯域幅を含んでいる、
請求項１０に記載のルーティングデバイス。
【請求項１５】
前記ルータは、前記宛先ノードから前記起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信し、且つ、前記電子インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、前記ステートフルな所定の経路に沿って、前記起源ノードに転送するように構成されている、
請求項１０に記載のルーティングデバイス。
【請求項１６】
前記宛先ノードは、データセンタネットワークのための端部ルータを含んでいる、
請求項１０に記載のルーティングデバイス。
【請求項１７】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記ルーティングデバイスと、前記順序付けられた複数の所定のノード内で前記ルーティングデバイスの次に位置しており、且つ、下流側に位置している次ノードと、を含んでおり、
前記ルータは、更に、前記先行パケットを前記次ノード宛てに送るように構成されており、それによって、複数のネットワークデバイスは、前記先行パケットが前記電子インタフェースを介して転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、前記先行パケットを受信する、
請求項１０に記載のルーティングデバイス。
【請求項１８】
ＩＰネットワーク内の起源ノードと宛先ノードとの間でセッションのパケットを伝送するための、コンピュータシステムにおいて使用されるコンピュータプログラム製品において、
前記コンピュータプログラム製品は、有形の非一時的なコンピュータ使用可能な媒体と、前記媒体におけるコンピュータ可読プログラムコードと、を有しており、
前記コンピュータ可読プログラムコードは、
前記ＩＰネットワークに接続可能である、ルーティングデバイスの電子インタフェースが、所定のセッションにおける複数のパケットの中から先行パケットを受信するためのプログラムコードと、
各セッションが前記ＩＰネットワーク内の順序付けられた複数のノードによって形成されている単一のステートフルなセッション経路をそれぞれ含んでいる、前記ＩＰネットワーク内の複数のセッションに関する状態情報であって、前記各セッションにおける前記順序付けられた複数のノードに関する情報を含んでいる状態情報を、ルーティングデータベースに保持するためのプログラムコードと、
前記ルーティングデータベースにアクセスし、前記複数のセッションの状態を求めるためのプログラムコードと、
前記ルーティングデータベースにおける前記状態情報に依存して、前記ルーティングデバイスと前記宛先ノードとの間の前記ＩＰネットワークにわたる前記所定のセッションのパケットのためのステートフルな所定の経路を形成するためのプログラムコードと、
前記ステートフルな所定の経路及び前記所定のセッションに関する状態情報を、前記ルーティングデータベースに記憶するためのプログラムコードと、
前記先行パケットを、前記電子インタフェースを介して、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するためのプログラムコードと、
前記所定のセッションに関する複数の付加的なパケットを前記起源ノードから受信するためのプログラムコードと、
前記所定のセッションに関する前記複数の付加的なパケットを、前記ステートフルな所定の経路に沿って前記宛先ノードに転送するためのプログラムコードと、
を含んでいる、コンピュータプログラム製品。
【請求項１９】
各セッションにおける前記順序付けられた複数のノードは、２つのエンドノード間の複数のノードを含んでおり、各セッションにおける前記２つのエンドノード間の前記複数のノードは、各パケットを前記各パケットのセッションにおいて、前記２つのエンドノード間で同一のノード順序で伝送するように構成されている、
請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記ステートフルな所定の経路を形成するためのプログラムコードは、前記ルーティングデータベースにおける複数のノードに関する使用率情報及びコスト情報のうちの１つ又は複数にアクセスするためのプログラムコードを含んでいる、
請求項１８に記載のコンピュータプログラム製品。
【請求項２１】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記起源ノードの次に位置しており、且つ、前記ルーティングデバイスである第１のノードを有している、
請求項１８に記載のコンピュータプログラム製品。
【請求項２２】
前記各セッションにおける前記順序付けられた複数のノードに関する情報は、前記ステートフルなセッション経路の使用率及び前記ステートフルなセッション経路の帯域幅を含んでいる、
請求項１８に記載のコンピュータプログラム製品。
【請求項２３】
更に、
前記宛先ノードから前記起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信するためのプログラムコードと、
前記電子インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、前記ステートフルな所定の経路に沿って、前記起源ノードに転送するためのプログラムコードと、
を含んでいる、
請求項１８に記載のコンピュータプログラム製品。
【請求項２４】
前記宛先ノードは、データセンタネットワークのための端部ルータを含んでいる、
請求項１８に記載のコンピュータプログラム製品。
【請求項２５】
前記ステートフルな所定の経路は、前記起源ノードと前記宛先ノードとの間の、順序付けられた複数の所定のノードを含んでおり、前記順序付けられた複数の所定のノードは、前記ルーティングデバイスと、前記順序付けられた複数の所定のノード内で前記ルーティングデバイスの次に位置しており、且つ、下流側に位置している次ノードと、を含んでおり、
前記コンピュータプログラム製品は、更に、前記先行パケットを前記次ノード宛てに送るためのプログラムコードを含んでおり、それによって、複数のネットワークデバイスは、前記先行パケットが転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、前記先行パケットを受信する、
請求項１８に記載のコンピュータプログラム製品。
【国際調査報告】
2017537547.tif 000024
2017537547.tif 000025
2017537547.tif 000026
2017537547.tif 000027