(57)【特許請求の範囲】
【請求項１】
自律ネットワークであって、
複数のスイッチを備え、各スイッチは、複数のネットワークインターフェイスを含むとともに、
前記ネットワークの外部にあるデバイスにアドレス指定されたデータパケットを受信し、
当該受信した発信データパケットのヘッダから、当該発信データパケットを送信する際に通過すべきネットワークインターフェイスを示すデータを取得し、
前記発信データパケットを、前記ヘッダから取得された前記データ内に示されている前記ネットワークインターフェイスを介して送信するように構成され、前記自律ネットワークはさらに、
前記複数のスイッチのいずれからも離れて配置されるとともに、汎用プロセッサを含む、非スイッチングのデータパケットプロセッサを備え、前記データパケットプロセッサは、発信パケットに対して、
前記発信データパケットを前記ネットワーク外に送信するための前記複数のスイッチのうちの１つを識別し、かつ、識別された前記スイッチが前記発信データパケットを送信する際に通過すべき識別された前記スイッチのネットワークインターフェイスを識別し、
識別された前記スイッチおよび識別された前記ネットワークインターフェイスのインディケーションを前記発信データパケットのヘッダに追加し、
前記発信データパケットを識別された前記スイッチにフォワードするように構成され、前記自律ネットワークはさらに、
コントローラを備え、前記コントローラは、
データパケットをルーティングするためのルーティングパスを決定し、
発信データパケットを送信するためのスイッチおよびスイッチのネットワークインターフェイスを前記データパケットプロセッサが識別するのに十分な、決定された前記ルーティングパスと関連付けられたルーティング情報を、前記データパケットプロセッサに提供するように構成される、自律ネットワーク。
【請求項２】
前記ルーティングパスを決定する際、前記コントローラはさらに、
前記ネットワークのネットワーク要素から情報を収集し、
収集された前記情報に基づいて前記ルーティングパスを決定するように構成される、
請求項１に記載の自律ネットワーク。
【請求項３】
前記情報を収集する際、前記コントローラはさらに、ボーダーゲートウェイプロトコル（ＢＧＰ）モジュールからインターネットルーティングパスに関する情報を収集するように構成される、請求項２に記載の自律ネットワーク。
【請求項４】
前記情報を収集する際、前記コントローラはさらに、前記自律ネットワークのバックボーンネットワーク要素から内部ルーティングパスに関する情報を収集するように構成される、請求項２に記載の自律ネットワーク。
【請求項５】
前記内部ルーティングパスに関する情報は、前記パス全体にわたるトラフィックの量、前記パス全体にわたってサポートされるサービスクラス、および前記パスの品質についての情報の少なくとも１つを含む、請求項４に記載の自律ネットワーク。
【請求項６】
識別された前記スイッチおよび識別された前記ネットワークインターフェイスのインディケーションを追加する際、前記データパケットプロセッサはさらに、前記データパケットを総称ルーティングカプセル化（ＧＲＥ）ヘッダでカプセル化するように、またはマルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルを前記データパケットの前記ヘッダに追加するように構成される、請求項１〜５のいずれか１項に記載の自律ネットワーク。
【請求項７】
前記データパケットプロセッサはさらに、前記ネットワークの外部で生じるデータパケットをフィルタリングするように構成される、請求項１〜６のいずれか１項に記載の自律ネットワーク。
【請求項８】
フィルタリングは、アクセスコントロールリスト（ＡＣＬ）フィルタリングおよび動的なサービス妨害（ＤｏＳ）フィルタリングの少なくとも一方を含む、請求項７に記載の自律ネットワーク。
【請求項９】
前記発信データパケットを送信する際、前記複数のスイッチのうちの１つのスイッチは、
識別された前記スイッチおよび識別された前記ネットワークインターフェイスの前記インディケーションを除去し、
前記インディケーションが除去された前記データパケットを、前記ヘッダから取得された前記データ内に示されている前記ネットワークインターフェイスを介して送信するように構成される、請求項１〜８のいずれか１項に記載の自律ネットワーク。
【請求項１０】
前記データパケットプロセッサは、キャッシュメモリを含み、さらに、前記コントローラから受信した前記ルーティング情報を前記キャッシュメモリに記憶するように構成される、請求項１〜９のいずれか１項に記載の自律ネットワーク。
【請求項１１】
自律ネットワーク内でデータパケットを取扱うための方法であって、
複数のスイッチのうちの１つのスイッチによって、前記ネットワークの外部にあるデバイスにアドレス指定されたデータパケットを受信することを備え、前記複数のスイッチの各スイッチは複数のネットワークインターフェイスを含み、前記方法はさらに、
前記スイッチによって、当該受信した発信データパケットのヘッダから、当該発信データパケットを送信する際に通過すべきネットワークインターフェイスを示すデータを取得することと、
前記スイッチによって、前記発信データパケットを、前記ヘッダから取得された前記データ内に示されている前記ネットワークインターフェイスを介して送信することと、
前記複数のスイッチのいずれからも離れて配置されるとともに、汎用プロセッサを含む、非スイッチングのデータパケットプロセッサによって、前記発信データパケットを前記ネットワーク外に送信するための前記複数のスイッチのうちの１つを識別し、かつ、識別された前記スイッチが前記発信データパケットを送信する際に通過すべき識別された前記スイッチのネットワークインターフェイスを識別することとを備え、
前記データパケットプロセッサによって、識別された前記スイッチおよび識別された前記ネットワークインターフェイスのインディケーションを前記発信データパケットのヘッダに追加することと、
前記データパケットプロセッサによって、前記発信データパケットを識別された前記スイッチにフォワードすることと、
コントローラによって、データパケットをルーティングするためのルーティングパスを決定することと、
発信データパケットを送信するためのスイッチおよびスイッチのネットワークインターフェイスを前記データパケットプロセッサが識別するのに十分な、決定された前記ルーティングパスと関連付けられたルーティング情報を、前記コントローラによって前記データパケットプロセッサに提供することとを備える、方法。
【請求項１２】
前記ルーティングパスを決定することは、
前記ネットワークのネットワーク要素から情報を収集することと、
収集された前記情報に基づいて前記ルーティングパスを決定することとを含む、請求項１１に記載の方法。
【請求項１３】
前記情報を収集することは、ボーダーゲートウェイプロトコル（ＢＧＰ）モジュールからインターネットルーティングパスに関する情報を収集することを含む、請求項１２に記載の方法。
【請求項１４】
前記情報を収集することは、前記ネットワークのバックボーンネットワーク要素から内部ルーティングパスに関する情報を収集することを含む、請求項１２に記載の方法。
【請求項１５】
前記内部ルーティングパスに関する情報は、前記パス全体にわたるトラフィックの量、前記パス全体にわたってサポートされるサービスクラス、および前記パスの品質についての情報の少なくとも１つを含む、請求項１４に記載の方法。
【請求項１６】
識別された前記スイッチおよび識別された前記ネットワークインターフェイスのインディケーションを追加することは、前記データパケットを総称ルーティングカプセル化（ＧＲＥ）ヘッダでカプセル化すること、またはマルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルを前記データパケットの前記ヘッダに追加することを含む、請求項１２に記載の方法。
【請求項１７】
前記データパケットプロセッサによって、前記ネットワークの外部で生じるデータパケットをフィルタリングすることをさらに備える、請求項１１〜１６のいずれか１項に記載の方法。
【請求項１８】
フィルタリングは、アクセスコントロールリスト（ＡＣＬ）フィルタリングおよび動的なサービス妨害（ＤｏＳ）フィルタリングの少なくとも一方を含む、請求項１７に記載の方法。
【請求項１９】
前記発信データパケットを前記ネットワークインターフェイスを介して送信することは、
識別された前記スイッチおよび識別された前記ネットワークインターフェイスの前記インディケーションを除去することと、
前記インディケーションが除去された前記データパケットを、前記ヘッダから取得された前記データ内に示されている前記ネットワークインターフェイスを介して送信することとを含む、請求項１１〜１８のいずれか１項に記載の方法。
【請求項２０】
前記データパケットプロセッサによって、前記コントローラから受信した前記ルーティング情報を前記データパケットプロセッサのキャッシュメモリに記憶することをさらに備える、請求項１１〜１９のいずれか１項に記載の方法。
【請求項２１】
コンピュータコード命令を含むコンピュータ読取可能プログラムであって、前記コンピュータコード命令は、複数のスイッチのいずれからも離れて配置された、非スイッチングのデータパケットプロセッサに含まれる汎用プロセッサによって実行されると、前記データパケットプロセッサに、
コントローラから受信したルーティング情報に基づいて、発信データパケットをネットワーク外に送信するための前記複数のスイッチのうちの１つを識別させ、かつ、識別された前記スイッチが前記発信データパケットを送信する際に通過すべき識別された前記スイッチのネットワークインターフェイスを識別させ、
識別された前記スイッチおよび識別された前記ネットワークインターフェイスのインディケーションを前記発信データパケットのヘッダに追加させ、
前記発信データパケットを識別された前記スイッチにフォワードさせるように構成される、コンピュータ読取可能プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連の特許出願との相互参照
本特許出願は、２０１４年９月５日に出願された、「フロールーティング、スケーラビリティおよびセキュリティの向上を伴う、自律システム内および自律システム間のトラフィックのソフトウェア定義ルーティングのためのシステムならびに方法（System and Method for Software Defined Routing of Traffic Within and Between Autonomous Systems with Enhanced Flow Routing, Scalability and Security）」と題された米国出願番号第１４／４７８，２１７号の優先権を主張し、当該米国出願は、２０１４年４月１日に出願された、「フロールーティング、スケーラビリティおよびセキュリティの向上を伴う、自律システム内および自律システム間のトラフィックのソフトウェア定義ルーティングのためのシステムならびに方法（System and Method for Software Defined Routing of Traffic Within and Between Autonomous Systems with Enhanced Flow Routing, Scalability and Security）」と題された米国仮出願番号第６１／９７３，６５０号の優先権を主張し、当該両出願は本願の譲受人に譲受されており、引用により本明細書に明示的に援用される。
【背景技術】
【０００２】
発明の背景
本発明は概して、自律システム内および自律システム間でデータトラフィックをルーティングする分野に関する。
【０００３】
接続性およびデータサービスの需要の増加とともに、データセンターおよび自律サービスネットワーク（autonomous service network：ＡＳＮ）は、一般に、莫大なデータコンテンツ要求を絶えず取扱うことが期待されている。エンドユーザは、データサービスがほんのわずかな遅延で連続的に利用可能であることを期待している。
【発明の概要】
【課題を解決するための手段】
【０００４】
発明の概要
ある局面によると、開示は、複数のスイッチを含む自律ネットワークに関する。各スイッチは、複数のネットワークインターフェイスを含み、ネットワークの外部にあるデバイスにアドレス指定されたデータパケットを受信するように構成される。スイッチは、受信した発信データパケットのヘッダから、発信データパケットを送信する際に通過すべきネットワークインターフェイスを示すデータを取得して、発信データパケットを、ヘッダから取得されたデータ内に示されているネットワークインターフェイスを介して送信する。自律ネットワークはさらに、複数のスイッチから離れて配置されたデータパケットプロセッサを含み、データパケットプロセッサは、発信パケットに対して、対応のスイッチが発信データパケットを送信する際に通過すべき、複数のスイッチのうちの１つの内部のネットワークインターフェイスを識別するように構成される。データパケットプロセッサは、識別されたネットワークインターフェイスのインディケーション（indication）を発信データパケットのヘッダに追加し、発信データパケットを対応のスイッチにフォワードする。自律ネットワークはさらにコントローラを含み、コントローラは、データパケットをルーティングするためのルーティングパスを決定し、発信データパケットを送信するためのスイッチおよびスイッチのネットワークインターフェイスをデータパケットプロセッサが識別するのに十分な、決定されたルーティングパスと関連付けられたルーティング情報を、データパケットプロセッサに提供するように構成される。
【０００５】
別の局面によると、本開示は、自律ネットワーク内でデータパケットを取扱うための方法に関する。方法は、複数のスイッチのうちの１つのスイッチによって、ネットワークの外部にあるデバイスにアドレス指定されたデータパケットを受信することを含む。複数のスイッチの各スイッチは複数のネットワークインターフェイスを含む。スイッチは、受信した発信データパケットのヘッダから、発信データパケットを送信する際に通過すべきネットワークインターフェイスを示すデータを取得して、発信データパケットを、ヘッダから取得されたデータ内に示されているネットワークインターフェイスを介して送信する。複数のスイッチから離れて配置されたデータパケットプロセッサは、対応のスイッチが発信データパケットを送信する際に通過すべき、複数のスイッチのうちの１つのスイッチと関連付けられたネットワークインターフェイスを識別する。データパケットプロセッサは、識別されたネットワークインターフェイスのインディケーションを発信データパケットのヘッダに追加し、発信データパケットを識別されたスイッチにフォワードする。コントローラは、データパケットをルーティングするためのルーティングパスを決定し、決定されたルーティングパスと関連付けられたルーティング情報をデータパケットプロセッサに提供する。提供される情報は、発信データパケットを送信するためのスイッチのネットワークインターフェイスをデータパケットプロセッサが識別するのに十分である。
【０００６】
開示の別の局面は、コンピュータコード命令を格納しているコンピュータ読取可能媒体に関し、コンピュータコード命令は、プロセッサによって実行されると、装置に、コントローラから受信したルーティング情報に基づいて、対応のスイッチが発信データパケットを送信する際に通過すべき複数のスイッチのうちの１つのスイッチに対応するネットワークインターフェイスを識別させる。コンピュータコード命令は、プロセッサによって実行されると、装置にさらに、識別されたネットワークインターフェイスのインディケーションを発信データパケットのヘッダに追加させ、発信データパケットを識別されたスイッチにフォワードさせる。
【図面の簡単な説明】
【０００７】
【図１】従来のコンテンツ配信ネットワークの例示的なアーキテクチャを示す図である。
【図２】コンテンツ配信ネットワークの例示的な高レベルアーキテクチャを示す図である。
【図３】図２に示されるコンテンツ配信ネットワークのアーキテクチャの例示的なより詳細なブロック図である。
【図４】例示的な階層化データパケットおよびコンテンツ要求処理モデルを示すブロック図である。
【図５】自律ネットワーク内でルーティング情報を管理および採用する例示的な方法を示すフローチャートの図である。
【図６】発信データパケットを処理するための例示的な方法を示すフローチャートの図である。
【図７】着信データパケットを処理するための例示的な方法を示すフローチャートの図である。
【図８】例示的なコンピュータデバイスのブロック図である。
【発明を実施するための形態】
【０００８】
好ましい実施形態の詳細な説明
以下に、自律ネットワーク内でデータパケットを取扱うための方法、装置、およびシステムに関連するさまざまな概念、ならびに当該方法、装置、およびシステムの実現例を説明する。説明する概念はいずれの特定の実現態様にも限定されないため、上記に紹介され、下記により詳細に記載されるさまざまな概念は多数の方法のいずれかで実現され得る。具体的な実現および用途の例は、主に例示のために提供される。
【０００９】
図１は、コンテンツ配信ネットワーク１００の例示的なアーキテクチャを示す図である。コンテンツ配信ネットワーク（ＣＤＮ）は自律ネットワークの一例である。自律ネットワークは、複数のインターネットプロトコル（ＩＰ）ルーティングプレフィックスを有し、かつ共通のインターネットルーティングポリシーを提示するネットワークである。他の種類の自律ネットワークには、転送ネットワーク、インターネットサービスプロバイダ（ＩＳＰ）、自律サービスネットワーク（ＡＳＮ）等が挙げられる。自律ネットワーク１００は、複数のエッジルータ１１０ａ〜１１０ｃ（総称して、または個別にエッジルータ１１０とも称される）、コンテンツキャッシュサーバ１２０、アグリゲーションファブリック１３０、１つ以上のバックボーンルータ１４０、およびバックボーンシステム１５０を含む。
【００１０】
エッジルータ１１０は、ネットワークに入ってくるデータパケット、およびネットワーク外に送信されるデータパケットを取扱うように構成される。データパケットを取扱う際、エッジルータ１１０はデータパケット処理およびルーティングを実行する。各エッジルータ１１０は多数の通信インターフェイス、またはポート、１１１を含む。各ポート１１１は、たとえばＩＳＰまたは他の自律ネットワークなどのピアネットワークに対応する。エッジルータ１１０は、他のピアコンテンツ配信ネットワークと外部ボーダーゲートウェイプロトコル（external border gateway protocol：ｅ−ＢＧＰ）セッションを確立する。ｅ−ＢＧＰセッションの一部として、エッジルータ１１０は他のピアコンテンツ配信ネットワークとルーティングおよび到達可能性情報を交換する。エッジルータ１１０はさらに、インターネットルーティングテーブルを構築し、ルーティングポリシーを実行し、ＢＧＰセッションを介して取得された情報に主に基づいてデータパケットを他のピア自律ネットワークにルーティングする際に最良のルーティングパスを選択するように構成される。
【００１１】
制御タスクをルーティングすることに加えて、エッジルータ１１０はさらに、アクセスコントロールリスト（ＡＣＬ）フィルタリング、ファイングレインパケット分類、インバウンドデータパケットカプセル化などのパケット処理を行うように構成される。対応のデータパケットのルーティングパスを決定すると、エッジルータ１１０は、決定されたパスに基づいて、データパケットをＣＤＮ１００内の次のホップノードにフォワードする。
【００１２】
コンテンツキャッシュサーバ１２０は、要求しているエンドユーザにコンテンツを提供し、ロードバランシングを行うように構成される。すなわち、コンテンツキャッシュサーバ１２０はコンテンツを記憶し、エンドユーザからのコンテンツ要求を取扱う。コンテンツキャッシュサーバ１２０はさらに、着信コンテンツ要求を異なるコンテンツサーバ間に分散させることによってロードバランシングを行うように構成される。通常、多数のコンテンツサーバが同じコンテンツの異なる複製を記憶する。したがって、コンテンツキャッシュサーバ１２０は、そのようなコンテンツの着信要求を、それらの対応の処理負荷のバランスを取り、多数のコンテンツサーバの１つ以上に対する過負荷を回避するように、多数のコンテンツサーバ間に分散させる。コンテンツキャッシュサーバ１２０は、アグリゲーションファブリック１３０を介してエッジルータ１１０に結合される。自律ネットワーク１００は、１つよりも多いコンテンツキャッシュサーバ１２０を採用してもよい。
【００１３】
アグリゲーションファブリック１３０は、エッジルータ１１０をコンテンツキャッシュサーバ１２０に、かつバックボーンルータ１４０に相互接続する。アグリゲーションファブリック１３０はバックボーンルータを用いて実現されてもよい。
【００１４】
１つ以上のバックボーンルータ１４０は、データパケットをバックボーンシステム１５０に、かつバックボーンシステム１５０からルーティングおよびフォワードするように構成される。バックボーンルータ１４０は、エッジルータ１１０およびバックボーンシステム１５０に結合される。
【００１５】
バックボーンシステム１５０は、１つ以上のコンテンツサーバ（図１には図示せず）を含む。コンテンツサーバは、コンテンツを記憶し、コンテンツキャッシュサーバ１２０に記憶されていないコンテンツを要求するエンドユーザからのコンテンツ要求を取扱うように構成される。バックボーンルータ１４０を介して受信したコンテンツ要求に応答して、コンテンツサーバは、要求されたコンテンツで返答する。要求されたコンテンツは、１つ以上のバックボーンルータ１４０を介してエッジルータ１１０に送信され、要求しているエンドユーザに配信される。
【００１６】
インターネットピアリングという観点で、図１に示されるネットワークアーキテクチャはモノリシックエッジルータ１１０に基づいている。すなわち、エッジルータ１１０は既存のＢＧＰプロトコルを用いて、（１）他のコンテンツ配信ネットワークと到達可能性を交換し、（２）内部ルーティング要素間にルーティング情報を分散させる。ＢＧＰプロトコルを用いるそのようなアプローチは、たとえば９０年代半ばのＢＧＰデプロイメントのためのランドスケープなどの、比較的小規模の複雑でないデプロイメントのために設計された。
【００１７】
以下に、制御プレーン機能をデータプレーン機能から分離することを可能にするネットワークアーキテクチャを説明する。制御プレーン機能は１つ以上のデータパケットプロセッサによって取扱われるのに対して、データプレーン機能はコンテンツ配信ネットワークのエッジにおけるデータパケットプロセッサおよびスイッチ間に分散される。データパケットプロセッサは、コンテンツ配信ネットワークのエッジにおけるスイッチから分離している。
【００１８】
図２は、コンテンツ配信ネットワーク２００の代替の例示的な高レベルアーキテクチャを示す図である。コンテンツ配信ネットワーク２００のアーキテクチャは、ネットワークのエッジにおいて制御プレーン機能をデータプレーン機能から分離する。コンテンツ配信ネットワーク２００は、ピアリングファブリック２０１、ルーティング制御システム２６０、１つ以上のパケットプロセッサ２２０、１つ以上のバックボーンルータ２４０、およびバックボーンシステム２５０を含む。以下に説明するアーキテクチャはコンテンツ配信ネットワークの文脈で論じられるが、実質的に同様のアーキテクチャが他の種類の自律ネットワークに採用されてもよい。
【００１９】
ピアリングファブリック２０１は複数のスイッチ２１０を含む。スイッチ２１０は、比較的単純なスイッチングもしくはルータチップ、またはコモディティルータであってもよい。スイッチ２１０は、実質的なコンピューティング能力またはルーティングインテリジェンスを有する必要がない。いくつかの他の実現例では、スイッチ２１０はネットワークを介してパケットをフォワードすることが可能ないずれのネットワーク要素であってもよい。いくつかの実現例では、ピアリングファブリック２０１は、最小からゼロのルーティングインテリジェンスでフォワーディングプレーン機能を取扱うように構成される。ピアリングファブリック２０１の各スイッチ２１０は、複数のネットワークインターフェイス２１１を含む。ピアリングファブリック２０１のスイッチ２１０は、エグレスデータパケットを、コンテンツ配信ネットワーク２００の内部デバイスから、それらのデータパケットのヘッダ内に特定されているネットワークインターフェイス２１１を介してピアネットワークにフォワードするように構成される。データパケットヘッダは、データパケットをフォワードする際にどのネットワークインターフェイス２１１を通過すべきかの識別子を既に含んでいるため、スイッチ２１０はデータパケットに関してルーティング決定をまったく下す必要がなく、またはデータパケットが流れることが意図されているのがどのピアネットワークであるのかを知ることすら必要でない。スイッチ２１０はさらに、外部ピアネットワークから受信したデータパケットを、ネットワークインターフェイス２１１を介して、データパケットプロセッサ２２０などの対応のイングレスデバイスまたはコンテンツ配信ネットワーク２００の他のデバイスにフォワードするように構成される。
【００２０】
ルーティング制御システム２６０は、ＢＧＰスピーカ（図２には図示されないが図３に関連して論じられる）からインターネットルートを、かつルーティング制御システム２６０から内部ルートを学習するように構成される。ルーティング制御システム２６０は、利用可能なルーティングパスに関する情報を１つ以上のデータパケットプロセッサ２２０に提供する。ルーティング制御システム２６０は、グローバルコントローラ２６６および１つ以上のローカルコントローラ２６７を含む。代替の実現例によると、ルーティング制御システム２６０は１つ以上のグローバルコントローラ２６６を含むが、ローカルコントローラ２６７を含まない。さらに別の代替の実現例によると、ルーティング制御システム２６０は他のローカルコントローラとルーティング情報を交換するように構成される１つ以上のローカルコントローラ２６７を含むが、グローバルコントローラ２６６を含まない。グローバルコントローラ２６６およびローカルコントローラ２６７の機能のより詳細な説明は、図３に関連して以下に提供される。
【００２１】
１つ以上のデータパケットプロセッサ２２０は、１つ以上のエッジアプライアンスまたはエッジサーバ内に常駐している。１つ以上のデータパケットプロセッサ２２０は、ピアリングファブリック２０１のスイッチから離れて配置されている。すなわち、それらは同じ物理的シャーシ内にないが、それらは同じデータセンターまたはデータセンターの領域内にあり得る。１つ以上のデータパケットプロセッサ２２０は、ルーティング制御システム２６０から受信した利用可能なルーティングパスに関する情報に基づいてデータパケットルーティングを行うように構成される。いくつかの実現例では、データパケットプロセッサ２２０は、１つ以上のシングルコアもしくはマルチコア汎用プロセッサを含むか、またはそれらによって電力供給される。
【００２２】
発信データパケットについて、データパケットプロセッサ２２０は、データパケットをネットワーク外にフォワードするためのピアリングファブリック２０１内のスイッチ２１０と、当該スイッチが当該データパケットを出力する際に通過すべきと決定されたスイッチ２１０と関連付けられた対応のネットワークインターフェイス２１１とを決定するように構成される。データパケットプロセッサ２２０は次に、決定されたスイッチおよび対応のネットワークインターフェイスのインディケーションをデータパケットのヘッダ内に追加し、インディケーションが追加されたデータパケットを決定されたスイッチにフォワードする。いくつかの実現例では、データパケットプロセッサ２２０は、インディケーションをＭＰＬＳまたは同様のプロトコルラベルとして追加する。いくつかの実現例では、データパケットプロセッサ２２０は、スイッチおよびネットワークインターフェイスを識別するＧＲＥヘッダ（またはＶＬＡＮヘッダなどの他の何らかのカプセル化ヘッダ）でパケットをカプセル化することによってインディケーションを追加する。いくつかの実現例では、データパケットプロセッサ２２０は、多数のラベルまたは多数のカプセル化層を追加して、データパケットをデータパケットプロセッサ２２０からピアリングファブリック内の所望のスイッチにフォワードするための具体的なルーティング命令を提供してもよい。データパケットプロセッサ２２０からデータパケットを受信すると、識別されたスイッチは、たとえば、カプセル化情報を除去することによって、またはＭＰＬＳラベルをポップすることによって、データパケットからインディケーションを除去し、インディケーションによって参照されているネットワークインターフェイス２１１を介してデータパケットを送信する。
【００２３】
ルーティングに加えて、１つ以上のデータパケットプロセッサ２２０は、データパケットフィルタリング、データパケット分類、および／または他のパケット単位機能などのデータパケット処理を行うように構成される。
【００２４】
１つ以上のバックボーンルータ２４０は、データパケットをバックボーンシステム２５０に、かつバックボーンシステム２５０からルーティングおよびフォワードするように構成される。バックボーンルータ２４０は、１つ以上のデータパケットプロセッサ２２０およびバックボーンシステム２５０に結合される。
【００２５】
バックボーンシステム２５０は、１つ以上のコンテンツサーバ（図２には図示せず）を含む。コンテンツサーバは、コンテンツを記憶し、エンドユーザから受信したコンテンツ要求を取扱うように構成される。バックボーンルータ２４０を介して受信したコンテンツ要求に応答して、コンテンツサーバは要求されたコンテンツで返答する。要求されたコンテンツは、１つ以上のバックボーンルータ２４０を介して１つ以上のデータパケットプロセッサ２２０に送信され、ピアリングファブリック２０１を介して元の要求者にルーティングおよびフォワードされる。
【００２６】
図２に示されるアーキテクチャによると、通常はエッジルータ１１０が果たす機能が、ルーティング制御システム２６０、１つ以上のデータパケットプロセッサ２２０、およびピアリングファブリック２０１に分散されている。
【００２７】
図３は、コンテンツ配信ネットワーク３００の例示的なより詳細なアーキテクチャを示す。コンテンツ配信ネットワーク３００は、ピアリングファブリック３０１、ファブリックコントローラ３１４、ＢＧＰスピーカ３１８、１つ以上のデータパケットプロセッサ３２５を含むフロントエンドデバイス３２０、グローバルおよびローカルコントローラ３６５および３６７、パケットプロセッサ／ロードバランシングコントローラ３６６、アグリゲーションファブリック３３０、１つ以上のバックボーンルータ３４０、ならびにバックボーンシステム３５０を含む。図２に示されるアーキテクチャと同様に、図３に示されるアーキテクチャも、ＣＤＮ以外の他の自律ネットワークとともに容易に使用可能である。
【００２８】
ピアリングファブリック３０１は、ネットワーク３００のエッジに複数のスイッチ３１０を含む。各スイッチ３１０は多数のネットワークインターフェイス３１１を含む。各スイッチ３１０は、データパケットを、コンテンツ配信ネットワーク３００のイングレスデバイスから、それらのデータパケットのヘッダ内に特定されているネットワークインターフェイス３１１を介してピアネットワークにフォワードするように構成される。データパケットヘッダは、データパケットをフォワードする際にどのネットワークインターフェイス３１１を通過すべきかの識別子を既に含んでいるため、スイッチ３１０はデータパケットに関してルーティング決定をまったく下す必要がなく、またはデータパケットが流れることが意図されているのがどのピアネットワークであるのかを知ることすら必要でない。さらに、各スイッチ３１０は、外部デバイスまたは他のネットワークから受信したデータパケットを、たとえば、コンテンツ配信ネットワーク３００のフロントエンドデバイス３２０、バックボーンルータ３４０などの対応のイングレスデバイスにフォワードするように構成される。ピアリングファブリック３０１内のスイッチ３１０は、互いに、かつ、アグリゲーションファブリック３３０を介してネットワーク３００の残りのコンポーネントに接続されてもよく、アグリゲーションファブリック３３０は次に、パケットをピアリングファブリック３０１内のスイッチ３１０に、かつスイッチ３１０からルーティングするのを容易にするためのスイッチの階層を含んでもよい。
【００２９】
別のネットワークまたはコンテンツ配信ネットワーク３００の外部のデバイスにアドレス指定されたデータパケットを受信すると、スイッチ３１０は、発信データパケットのヘッダから、発信データパケットを送信する際に通過すべきネットワークインターフェイス３１１のインディケーションを取得する。特に、スイッチは発信データパケットのヘッダをパースしてインディケーションを取出す。ヘッダから取出されたインディケーションによって参照されているネットワークインターフェイス３１１は、所与のネットワークまたはコンテンツ配信ネットワーク３００の外部のデバイスにアドレス指定されている発信データパケットを送信するように指定される。つまり、各ネットワークインターフェイス３１１は所与の外部デバイスまたは他のネットワークに対応する。いくつかの実現例では、２つ以上のネットワークインターフェイス３１１がトランクされて、データトラフィックを同じ外部デバイスまたは他のネットワークに導いてもよい。いくつかの実現例では、データパケットを受信するスイッチ３１０は、データパケットを送信する前に、データパケットから、スイッチ３１０および対応のネットワークインターフェイス３１１を示す、たとえば１つ以上の追加されたヘッダまたはＭＰＳラベルなどの情報を除去するように構成される。したがって、スイッチ３１０は、発信データパケットをその対応の宛先に向けてフォワードするためのルーティングルールまたはルーティング情報があったとしても、多くのそのようなルールまたは情報でプログラムされる必要がない。結果として、ピアリングファブリック３０１またはいずれかの対応のスイッチ３１０によって搬送されるルーティングステートは実質的に最小化される。対照的に、当業者は、従来のルータ１１０では、大きなインターネット規模のルーティングテーブルを搬送することは、ルータコストおよびそれらの限定されたスケーラビリティの一因となる主要な要因の１つであることを認識するであろう。
【００３０】
ピアリングファブリック３０１、またはいずれかの対応のスイッチ３１０は、搬送するルーティングステートがほとんどないか、または全くない。したがって、ピアリングファブリック３０１は、たとえば、単純なコモディティスイッチング／ルーティングチップを用いて実現される。単純なコモディティスイッチング／ルーティングチップを採用することによって、ピアリングファブリック３０１の容易で非常に費用対効果の高いスケーラビリティが可能になる。いくつかの実現例では、ピアリングファブリック３０１内のスイッチ３１０は、他のネットワークまたはコンテンツ配信ネットワーク３００の外部のデバイスと通信している標準のイーサネット（登録商標）、同期光ネットワーク（ＳＯＮＥＴ）、および／または同期デジタル階層（ＳＤＨ）インターフェイスをサポートする。
【００３１】
ファブリックコントローラ３１４はピアリングファブリック３０１に結合される。いくつかの実現例では、ファブリックコントローラ３１４は、ピアリングファブリック３０１を構成するスイッチのためのソフトウェア定義ネットワーク（ＳＤＮ）コントローラとして機能する。したがって、ファブリックコントローラ３１４は、たとえば、ファブリックコントローラ３１４上で実行されるＳＤＮソフトウェアを介してピアリングファブリック３０１を制御するように構成される。ファブリックコントローラ３１４はグローバルコントローラ３６５にも結合される。ファブリックコントローラ３１４は、ピアリングファブリック３０１を制御することまたはプログラムすることに関連する情報および／または命令をグローバルコントローラから受信するように構成される。ファブリックコントローラ３１４はさらに、ピアリングファブリック３０１を構成するスイッチ３１０からステータス情報を受信するように構成される。ファブリックコントローラ３１４は次に、必要であればルートを更新できるように、そのようなステータス情報（スイッチもしくはスイッチのネットワークインターフェイスの故障を示す情報など）をローカルコントローラ３６６および／またはグローバルコントローラ３６７に渡すことができる。いくつかの実現例では、ファブリックコントローラ３１４はアグリゲーションファブリック３３０にも結合され、その内部のスイッチのＳＤＮコントローラとして機能し得る。
【００３２】
ＢＧＰスピーカ３１８はピアリングファブリック３０１に結合され、ピアネットワークおよび他の外部デバイスとＢＧＰセッションを確立するように構成される。ＢＧＰスピーカ３１８はさらに、たとえば、他のネットワークまたは外部デバイスと確立したセッションに基づいて、インターネットルーティングテーブルを構築するように構成される。ＢＧＰスピーカ３１４は、グローバルコントローラ３６５およびローカルコントローラ３６６に結合される。ＢＧＰスピーカ３１４は、利用可能なインターネットルートに関する情報を、ピアリングファブリック３０１のスイッチ３１０を介してグローバルコントローラ３６５および／またはローカルコントローラ３６７に提供する。少なくとも１つの例示的な実現例によると、ＢＧＰスピーカ３１４はエッジサーバまたはエッジネットワーク要素内に常駐している。
【００３３】
ルーティングコントローラ、すなわちグローバル／ローカルコントローラ３６５および３６７は、ネットワークルーティングアプリケーションおよびエッジリソース同士を協調させ、かつこれらを制御して、エンドツーエンド接続性を達成するように構成される。特に、グローバルおよび／またはローカルコントローラ３６５および３６７は、たとえばルーティングテーブルなどの利用可能なインターネットルートに関する情報をＢＧＰスピーカ３１８から、かつ、内部ルート情報をファブリックコントローラ３１４から、または直接的にピアリングファブリック３０１内のスイッチ、アグリゲーションファブリック３３０およびバックボーンルータ３４０から収集する。いくつかの実現例では、内部ルート情報は、内部ルート上でサポートされる１組のサービスクラス、当該ルート上のトラフィックの（総計の、もしくはサポートされるトラフィッククラス単位の）量、またはルートの品質についての情報（たとえば帯域幅、レイテンシ等）を含んでもよい。いくつかの実現例では、グローバルコントローラ３６５は、そのような情報を、異なるサブネットワーク内に位置する、たとえば、異なる地理的／メトロポリタンエリアと関連付けられたＢＧＰスピーカ、またはコンテンツ配信ネットワーク３００の他の別個に管理されるエッジデバイス群から収集する。ローカルコントローラ３６７は、ローカルコントローラ３６７と同じサブネットワーク内に位置するローカルＢＧＰスピーカ３１４からルーティング情報を収集するのみであってもよい。グローバル／ローカルコントローラ３６５および３６７はさらに、利用可能なルートを示す情報をフロントエンドデバイス３２０にプッシュするように構成される。たとえば、グローバルおよび／またはローカルコントローラ３６５および３６７は、完全なフォワーディング情報ベース（ＦＩＢ）をフロントエンドデバイス３２０において維持するのに十分なルーティング情報をフロントエンドデバイス３２０に提供する。
【００３４】
いくつかの実現例では、グローバルコントローラ３６５は、ネットワーク３００と関連付けられたエッジネットワークのいずれかの内部もしくはいずれかのピアネットワークの内部の内部動作またはルートに関する限られた知識で、インターネットのグローバルビューを維持するように構成される。そのために、グローバルコントローラは、たとえば、コンテンツ配信ネットワークの異なるサブネットワークに位置するＢＧＰスピーカによって認識される、利用可能なインターネットルートを追跡するように構成される。グローバルコントローラはさらに、たとえば利用可能なインターネットルートのルールおよび／または更新などの情報を、直接的にまたはローカルコントローラ３６７を介してフロントエンドデバイス３２０にプッシュするように構成される。たとえば、グローバルコントローラ３６５は、対応する維持されたＦＩＢを調整するためのフロントエンドデバイス３２０にルールまたは情報を送信することによって、インターネットリンクがダウンしたことに反応する。グローバルコントローラ３６５は、内部ルート、すなわち特定のサブネットワーク内の内部デバイス間のルート、および／またはその変更を認識していない場合がある。
【００３５】
グローバルコントローラ３６５によって収集されたルーティング情報は、利用可能な外部ネットワークルートを示す情報、外部ネットワークまたはサブネットワークのステータス、外部ネットワークルートまたはリンクと関連付けられたレイテンシ情報、輻輳情報などを含む。したがって、それは、最少数のホップに基づいてルートを選択するＢＧＰルーティングにおいて典型的に用いられるよりも多い情報に基づいてルートを決定することが可能である。代わりに、グローバルコントローラは、最少数のホップを有し得ないが、低レイテンシ、高帯域幅、高信頼度を有し得るか、または他のネットワークが守り得ないサービスインジケータの品質を守るパスに沿ってパケットをルーティングすることができる。グローバルコントローラ３６５はさらに、他の制御アプリケーションまたはシステムから、たとえば、ＤｏＳ緩和情報、構成情報、または他の制御情報などの制御情報を受信するように構成される。グローバルコントローラはこの情報を処理して、データパケットプロセッサ３２５によって適用されるパケット処理およびフィルタリングルールをリアルタイムまたはほぼリアルタイムで更新することができる。グローバルコントローラ３６５はさらに、受信した制御情報の少なくとも一部をローカルコントローラ３６７にフォワードするように構成される。
【００３６】
ローカルコントローラ３６７は、当該コントローラが常駐しているサブネットワークのローカルビューを維持するように構成される。特に、ローカルコントローラ３６７は、内部ルートおよびローカルネットワークパフォーマンスを追跡するように構成される。ローカルコントローラ３６７はさらに、ローカルＢＧＰスピーカ３１８から学習した、利用可能なインターネットルートを追跡する。内部ルート、またはローカルＢＧＰスピーカ３１８から学習したインターネットルートの変更に応答して、ローカルコントローラ３６７はルールまたはルーティング情報更新をフロントエンドデバイス３２０にプッシュして、対応のＦＩＢを更新する。
【００３７】
ピアリングエッジのファイブ・ナインの可用性をサポートするために、ルーティングコントローラ３６５および３６７は、任意の個別のコンポーネント故障、ハードウェアまたはソフトウェアを、制御されたフェイルオーバーメカニズムで許容するように設計される。特に、ルーティングコントローラ３６５および３６７は、たとえば、コントローラが割当てられたポートからルートが撤回された場合、またはリンクがダウンした場合など、コントローラが割当てられたルートが古い場合にメトロ−ローカルシナプス応答を提供するように構成される。そのような場合、ルーティングコントローラ３６５および／または３６７はルート可用性を学習し、フロントエンドデバイス３２０が代替のルートにフォールバックすることを可能にするルールまたは利用可能なルートの更新をフロントエンドデバイス３２０にプッシュする。つまり、ルーティングコントローラ３６５および／または３６７は、利用可能なルートの変更に反応し、適切な更新をフロントエンドデバイス３２０に提供するように構成される。さらに、図３のアーキテクチャ内のルーティング制御階層によって、コンテンツ配信ネットワーク３００が高い可用性レベルを提供することができる。すなわち、利用可能な外部ネットワークルートの決定をルーティングコントローラ３６５および３６７に割当てること、発信データパケットをデータパケットプロセッサ３２５にルーティングすること、ならびに発信データパケットをピアリングファブリック３０１に送信することによって、コンテンツ配信ネットワーク３００および外部ネットワークまたはサブネットワークの変更に対する迅速なルーティング適合が可能になる。
【００３８】
フロントエンドデバイス３２０は、１つ以上のデータパケットプロセッサ３２５を含む。データパケットプロセッサ３２５は、ルーティングおよび他のデータパケット処理動作を行うように構成される。いくつかの実現例では、データパケットプロセッサ３２５は完全なＦＩＢ３２６を維持するように構成される。少なくとも１つの実現例によると、ＦＩＢ３２６はデータパケットプロセッサのキャッシュメモリに、たとえばレベル２（Ｌ２）キャッシュに記憶される。代替的に、ＦＩＢ３２６は、フロントエンドデバイス３２０内のオフプロセッサメモリに、たとえばダイナミックランダムアクセスメモリ（ＤＲＡＭ）に記憶される。いくつかの実現例では、ＦＩＢの一部がキャッシュメモリに記憶され、一部がＲＡＭに記憶される。データパケットプロセッサ３２５は、利用可能なルートおよび／または外部ネットワークデバイス／要素のステータスの変更を学習するとＦＩＢ３２６を動的に更新するように構成される。特に、データパケットプロセッサ３２５は、ローカルコントローラ３６７および／またはグローバルコントローラ３６５から、ルーティングルールおよび／またはＦＩＢ３２６の更新を示す情報を受信する。それに応答して、データパケットプロセッサ３２５は、受信した情報に基づいてＦＩＢ３２６を更新する。
【００３９】
データパケットプロセッサ３２５はさらに、発信データパケットをルーティングするように構成される。特に、データパケットプロセッサ３２５は、ＦＩＢに基づいて、受信した発信データパケットのルートおよび／または外部の次のホップを決定する。データパケットプロセッサ３２５は、発信データパケットを対応の外部の次のホップに送信するための、ピアリングファブリック３０１内のスイッチ３１０および／または対応のネットワークインターフェイス３１１を決定する。データパケットプロセッサ３２５は、決定されたスイッチ３１０および対応のネットワークインターフェイス３１１のインディケーションをデータパケットのヘッダ内に追加する。いくつかの実現例では、データパケットプロセッサ３２５は、インディケーションをＭＰＬＳラベルとして追加する。いくつかの実現例では、データパケットプロセッサ３２５は、スイッチおよびネットワークインターフェイスを識別するＧＲＥヘッダでパケットをカプセル化することによってインディケーションを追加する。いくつかの実現例では、データパケットプロセッサ３２５は多数のＭＰＬＳラベルまたは多数のＧＲＥカプセル化層を追加して、データパケットをデータパケットプロセッサ３２５からピアリングファブリック内の所望のスイッチにフォワードするための具体的なルーティング命令を提供してもよい。いくつかの他の実現例では、データパケットプロセッサ３２５は、ＭＰＬＳラベル以外のラベルをパケットヘッダに追加してもよいし、または、たとえばＶＬＡＮカプセル化などのＧＲＥカプセル化以外の他の形態のカプセル化を用いてパケットをカプセル化してもよい。データパケットプロセッサ３２５は次に、たとえばアグリゲーションファブリック３３０を介して、修正された発信データパケットを決定されたスイッチにフォワードする。
【００４０】
発信データパケットをルーティングすることに加えて、データパケットプロセッサはさらに、データパケットフィルタリングを着信データパケットに対して行うように構成される。たとえば、データパケットプロセッサ３２５は、ＡＣＬフィルタリングを着信データパケットに適用する。加えて、データパケットプロセッサ３２５は汎用プロセッサ上で実現可能であるため、データパケットプロセッサ３２５は、典型的なルータ内に典型的にプログラム可能なルールよりも複雑なフィルタリングルールでプログラム可能である。加えて、そのようなルールは、ネットワークに対する新たな脅威が発見されるとリアルタイムまたはほぼリアルタイムで容易に更新可能である。例示的な実現例によると、データパケットプロセッサ３２５は、動的なサービス妨害（denial of service：ＤｏＳ）フィルタリングを着信データパケットに適用する。図３のネットワークアーキテクチャによって、ＤｏＳ保護ルールを、グローバルコントローラ３６５および／または他の制御アプリケーションなどのインテリジェント集中サービスを介して動的に挿入することができる。例示的な実現例によると、データパケットプロセッサ３２５は、たとえばOpenFlowなどのソフトウェア定義ネットワーク（ＳＤＮ）インターフェイスを介して、たとえばローカルコントローラ３６７またはコントローラ３６６などのコントローラに結合されて、パケット一致ルールをすべての着信フローに対して動的に挿入することを可能にする。
【００４１】
他の実現例によると、データパケットプロセッサ３２５はデータフローレートを制御するように構成される。たとえば、データパケットプロセッサ３２５は、定義済のデータレートをフロー単位で実施する。データパケットプロセッサ３２５はさらに、ピアリングファブリック３０１におけるバッファオーバーフローを回避するためにデータパケット送信のペースを調整し得る。たとえば、ＦＩＦＯキューが同じエグレスポートへの６４個の連続データパケットを含み得る場合であっても、パケットプロセッサは他の宛先へのデータパケットの送信をインターリーブすることを選択して、単一のフローのバーストがピアリングファブリック３０１内の限られたバッファをオーバーフローさせないことを確実にし得る。当業者は、他のパケット単位の処理タスクがデータパケットプロセッサ３２５によって行われ得ることを認識するであろう。
【００４２】
例示的な実現例によると、データパケットプロセッサ３２５はシングルコアまたはマルチコア汎用プロセッサを利用する。いくつかの実現例では、データパケットプロセッサ３２５は、並列動作するいくつかのシングルコアまたはマルチコア汎用プロセッサを採用してもよい。データパケットプロセッサ３２５はさらに、１つ以上のマルチコアプロセッサ内でルーティングおよび／またはデータパケット処理タスクを行う専用のコアプロセッサを利用してもよい。
【００４３】
フロントエンドデバイス３２０は、フロントエンドサーバまたは別のフロントエンドネットワーク要素を含む。たとえば、フロントエンドデバイス３２０は、マルチコアプロセッサの１つのコアが、１０ギガビット／秒（Ｇｂ／ｓ）で、たとえば１５００万（Ｍ）データパケット／秒で単純なラインレートデータパケット処理を行う現代のマルチコアプロセッサの能力に依拠するフロントエンドサーバであってもよい。したがって、図３のネットワークアーキテクチャによって、フィルタをピアリングファブリックにおいてプログラムすることによって、またはデータパケットをパケットプロセッサ自体においてフィルタリングすることによって、ラインレートＤＯＳ攻撃を吸収すること、およびそのような攻撃を緩和することができる。少なくとも１つの例示的な実現例によると、ＴＣＰ  ＳＹＮ攻撃を含む、伝送制御プロトコル（ＴＣＰ）レベル以下にあるすべての攻撃は、フロントエンドデバイス３２０のカーネル上で実行されるデータパケット処理層で取扱われる。例示的な実現例によると、フロントエンドデバイス３２０はロードバランシングモジュール３２７を含む。代替的に、ロードバランシングは、データパケットプロセッサ３２５が常駐しているフロントエンドデバイス３２０以外の別のデバイスまたはネットワーク要素によって行われる。
【００４４】
図３のネットワークアーキテクチャによって、さらに、「クリーンな」非ＤｏＳトラフィックのみのためのデータパケット処理層を越えてコンテンツ配信ネットワーク３００をプロビジョニングすることができる。当該アーキテクチャによって、さらに、すべてのメトロポリタンエリアまたはサブネットワークにおいて、物理的に多様な冗長なポイント・オブ・プレゼンス（point of presence：ＰＯＰ）に収容されたデータパケットプロセッサ３２５の１＋１冗長プールが可能になる。
【００４５】
コントローラ３６６は、データパケットプロセッサ３２５および／またはロードバランシングモジュール３２７を制御するように構成される。
【００４６】
アグリゲーションファブリック３３０は、フロントエンドデバイス３２０および／またはデータパケットプロセッサ３２５をピアリングファブリック３０１に結合する１組のルータおよび／またはスイッチを含む。バックボーンルータ３４０は、バックボーンシステム３５０をピアリングファブリック３０１および／またはデータパケットプロセッサ３２５に結合するように構成される。バックボーンシステム３５０は、要求しているエンドユーザにコンテンツを提供する１つ以上のコンテンツサーバを含む。
【００４７】
図４は、例示的な階層化データパケットおよびコンテンツ要求処理モデルを示すブロック図である。図３に関連して説明したネットワークアーキテクチャによって、ファイングレインの階層化データパケットおよび要求処理と、層を論理的かつ物理的に動的に移動させることとが可能になる。データパケット処理の層は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）サービング４１０、ステートフル層４（Ｌ４）ロードバランシング４２０、伝送制御プロトコル（ＴＣＰ）クッキー処理４３０、データパケットフィルタリング４４０、ステートレスＬ４ロードバランシング４５０、層３（Ｌ３）フォワーディング４６０、およびＬ３スタティックフィルタリング４７０を含む。データパケット処理の層４１０〜４７０は、動作の順序の観点で、かつネットワーク３００のエッジに維持する望ましさの観点で順序付けられている。例示的な実現例によると、３つの下層４５０〜４７０は永続的にピアリングファブリック３０１内に存在している。上層４１０〜４４０はデータパケット処理および要求取扱いアプリケーション内に存在している。ネットワークのエッジにできる限り多くの層を維持することが有益であり得ると仮定して、最低の優先度の層、たとえば４１０〜４４０がまずデータパケットプロセッサ３２５に割当てられ、より優先度が高い層、たとえば４５０〜４７０がネットワークのエッジのより近くで、すなわちピアリングファブリック３０１において実行される。
【００４８】
図５は、自律ネットワーク内でルーティング情報を管理および採用する方法５００を示すフローチャートである。ルーティングコントローラ３６５および／または３６７は、たとえばＢＧＰスピーカ３１８から、外部ネットワークルートに関する情報を収集する（ステップ５１０）。ルーティングコントローラ３６５および／または３６７は、収集された情報に基づいて、データパケットをルーティングするためのルートを決定する（ステップ５２０）。ルーティングコントローラ３６５および／または３６７は、ルールおよび／またはルートの情報をデータパケットプロセッサ３２５にプッシュする（ステップ５３０）。データパケットプロセッサ３２５は、ルーティングコントローラ３６５および／または３６７から受信したルールおよび／またはルートの情報に基づいて、維持されたＦＩＢを更新する（ステップ５４０）。処理５１０〜５４０は、データパケットが交換される異なるネットワークのステータスおよびトポロジの変更に対する動的な適合性を可能にすることを反復する。データパケットプロセッサ３２５は、維持されたＦＩＢに基づいて発信データパケットをルーティングする（ステップ５５０）。
【００４９】
図６は、発信データパケットを処理するための方法６００を示すフローチャートである。データパケットプロセッサ３２５は発信データパケットを取得する（ステップ６１０）。発信データパケットを取得すると、データパケットプロセッサ３２５は、発信データパケットをフォワードすべき外部の次のホップを識別する（ステップ６２０）。外部ホップを識別することは、たとえば、受信した発信データパケット内に示されている最終宛先に基づいて、発信データパケットのルートを識別することを含む。データパケットプロセッサ３２５は、記憶されたＦＩＢに基づいてルートを識別する。データパケットプロセッサ３２５は次に、発信データパケットを外部の次のホップにフォワードするために、ピアリングファブリック３０１内のスイッチ３１０と関連付けられたネットワークインターフェイス３１１を決定する（ステップ６３０）。例示的な実現例によると、ネットワークインターフェイス３１１を決定することは、対応のスイッチ３１０を決定することを含む。
【００５０】
データパケットプロセッサ３２５は、決定されたネットワークインターフェイス３１１のインディケーションを、発信データパケットのヘッダ内に追加する（ステップ６４０）。当該インディケーションはさらに、識別されたネットワークインターフェイス３１１に対応するスイッチ３１０を示し得る。データパケットプロセッサ３２５は次に、修正されたデータパケットを、識別されたネットワークインターフェイス３１１を有するスイッチ３１０にフォワードする（ステップ６５０）。発信データパケットを受信すると、スイッチ３１０はデータパケットヘッダをパースして、発信データパケットを送信する際に通過すべきネットワークインターフェイス３１１を決定する（ステップ６６０）。スイッチは次に、データパケットプロセッサ３２５によって追加されたインディケーションを除去し、発信データパケットを決定されたネットワークインターフェイス３１１を介して送信する（ステップ６７０）。例示的な実現例によると、スイッチ３１０によってインディケーションを除去することは、１つ以上のヘッダを除去すること、またはデータパケットプロセッサ３２５によって追加された１つ以上のＭＰＬＳラベルをホップすることを含む。
【００５１】
図７は、着信データパケットを処理する方法７００を示すフローチャートである。ピアリングファブリック３０１内のスイッチ３１０は、外部デバイスから着信データパケットを受信する（ステップ７１０）。スイッチは、受信した着信データパケットを、たとえばアグリゲーションファブリック３３０を介して、データパケットプロセッサ３２５にフォワードする（ステップ７２０）。データパケットプロセッサ３２５は、フィルタリングおよび／またはデータパケット分類を着信データパケットに適用する（ステップ７３０）。データパケットプロセッサ３２５は次に、着信データパケットと関連付けられた要求を取扱うためのホストデバイス（コンテンツサーバまたは他のアプリケーションサーバなど）を決定する（ステップ７４０）。データパケットプロセッサ３２５は、着信データパケットを、対応する要求を取扱うための決定されたホストデバイスにフォワードする（ステップ７５０）。
【００５２】
図３のネットワークアーキテクチャは、データプレーン機能を制御プレーン機能から分離する。データパケットプロセッサ３２５を用いてルーティングおよびデータパケット処理を行うことによって、データプレーンおよび制御プレーンタスクの柔軟性および最適化された実現が可能になる。異なる種類のプロセッサがデータパケットプロセッサとして採用され得るが、図２および図３に関連して説明したアーキテクチャでは、汎用プロセッサをデータパケットプロセッサとして使用することができ、特殊な特定用途向け集積回路（ＡＳＩＣ）またはネットワーク処理装置（ＮＰＵ）の使用が不要である。また、データパケットプロセッサ３２５内では、たとえば比較的安価で、豊富で、大容量のＬ２キャッシュなどのキャッシュメモリが、同様の情報を記憶するためにより高度なルータでしばしば用いられる多くの小容量の、高価で、エネルギを消費するメモリの代わりに、ＦＩＢを記憶するために用いられ得る。
【００５３】
さらに、図２および図３に関連して説明したアーキテクチャは、ネットワークトポロジおよびステータスの変更に対する高速で動的な適合性を可能にし、したがって、高い可用性を提供するのに適している。図２および図３に関連して説明したようなデータパケットプロセッサを使用することによって、データプレーンにおいて大規模なサイバーアタックに対処することができる。実際、データパケットプロセッサ３２５は、ディープデータパケットインスペクションおよびパーシングならびにステートフル処理に対処することが可能であり、したがって、広範なセキュリティ脅威に対処することができる。
【００５４】
図８は、コンピュータデバイス８００のブロック図である。コンピュータデバイスは、中央処理装置（ＣＰＵ）８１５およびキャッシュメモリ８１６を有するプロセッサ８１０を含む。ＣＰＵ８１５はさらに別のキャッシュメモリを含んでもよい。コンピュータデバイス８００はさらに、データバスを介してプロセッサ８１０に結合されるメモリ８２０を含む。ＣＰＵ８１５によって実行されるコンピュータコード命令がメモリ８１０および／またはキャッシュメモリ８１６に記憶されてもよい。そのようなコンピュータコード命令は、たとえば、データパケットプロセッサ３２５によって実行される処理に対応する。別の例によると、コンピュータコード命令は、グローバルコントローラ３６５および／またはローカルコントローラ３６７によって実行される処理に対応する。コンピュータデバイス８００はさらに、プロセッサ８１０に結合されて他のデバイスと通信するように構成される入力／出力（Ｉ／Ｏ）インターフェイス８３０を含む。当業者は、プロセッサ８１０はシングルコアプロセッサでもマルチコアプロセッサでもよいことを認識するであろう。例示的な実現例によると、コンピュータデバイス８００はフロントエンドデバイス３２０を表わす。コンピュータデバイス８００は、付加的に、または代替的に、グローバルコントローラ３６５、ローカルコントローラ３６７、またはネットワーク３００の他のデバイスを表わし得る。
【００５５】
本明細書に説明した主題および動作の実現例は、デジタル電子回路において、または本明細書に開示された構造およびそれらの構造的均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらの１つ以上の組合せにおいて実現可能である。本明細書に説明した主題の実現例は、１つ以上のコンピュータプログラムとして、すなわち、１つ以上のコンピュータ記憶媒体上で符号化され、データ処理装置によって実行される、またはデータ処理装置の動作を制御する、コンピュータプログラム命令の１つ以上のモジュールとして、実現可能である。代替的にまたは付加的に、プログラム命令は、情報を符号化するように生成される、たとえば機械生成の電気、光学、または電磁信号などの、人工的に生成された伝搬信号上で符号化されて、好適な受信器装置に送信されてデータ処理装置によって実行されてもよい。コンピュータ記憶媒体は、コンピュータ読取可能な記憶装置、コンピュータ読取可能な記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらの１つ以上の組合せであってもよいし、またはそれらに含まれていてもよい。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号内で符号化されるコンピュータプログラム命令のソースまたは宛先であってもよい。コンピュータ記憶媒体はさらに、１つ以上の別個のコンポーネントまたは媒体（たとえば多数のＣＤ、ディスク、もしくは他の記憶装置）であってもよいし、またはそれらに含まれていてもよい。したがって、コンピュータ記憶媒体は有形かつ非一時的であってもよい。
【００５６】
本明細書に説明した動作は、１つ以上のコンピュータ読取可能な記憶装置上に記憶される、または他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実現可能である。
【００５７】
「コンピュータ」または「プロセッサ」という用語は、例として、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、または上記の多数のもの、もしくは組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を含む。装置は、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）などの特殊用途論理回路を含んでもよい。装置はさらに、ハードウェアに加えて、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの１つ以上の組合せを構成するコードなどの、問題となっているコンピュータプログラムのための実行環境を生成するコードを含んでもよい。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、さまざまな異なるコンピューティングモデルインフラストラクチャを実現可能である。
【図１】
0006527880.tif 000002
【図２】
0006527880.tif 000003
【図３】
0006527880.tif 000004
【図４】
0006527880.tif 000005
【図５】
0006527880.tif 000006
【図６】
0006527880.tif 000007
【図７】
0006527880.tif 000008
【図８】
0006527880.tif 000009