デジタル通信ネットワークにおけるパケット処理とは、通信ネットワークのさまざまなネットワーク要素を通過するデータまたは情報のパケットに適用されるさまざまなアルゴリズムを指します。ネットワークインターフェイスのパフォーマンスが向上するにつれて、より高速なパケット処理が必要になります。[1]
パケット処理アルゴリズムには、制御プレーンとデータ プレーンの標準化されたネットワーク区分に一致する 2 つの大まかなクラスがあります。アルゴリズムは次のいずれかに適用されます。
- パケットを安全かつ効率的に送信元から送信先へ転送するために使用されるパケットに含まれる制御情報
- または
- コンテンツ固有の変換を提供したり、コンテンツ主導のアクションを実行したりするために使用されるパケットのデータ コンテンツ (多くの場合、ペイロードと呼ばれます)。
ネットワーク対応デバイス(ルーター、スイッチ、ネットワーク要素、またはコンピュータやスマートフォンなどの端末など)内では、下位層、物理層、ネットワーク層からアプリケーション層に至るまで、多層ネットワークまたはプロトコル スタックのトラバースを管理するのはパケット処理サブシステムです。
歴史
パケット処理の歴史は、インターネットとパケット交換の歴史です。パケット処理のマイルストーンは次のとおりです。
- 1962年~1968年:パケット交換に関する初期の研究
- 1969年: ARPANETの最初の2つのノードが接続。1971年末までに15のサイトが接続され、電子メールが新しいアプリケーションとして導入された。
- 1973年:ネットワーク音声プロトコルを使用したARPANET経由のパケット交換音声接続。ファイル転送プロトコル(FTP)が規定された。
- 1974年:伝送制御プロトコル(TCP) が規定される
- 1979年: VoIP – IPの初期バージョンで動作するNVP
- 1981年: IPとTCPが標準化
- 1982年: TCP/IPが標準化
- 1991年: CERNがティム・バーナーズ=リーの考案したWorld Wide Web (WWW) を公開
- 1998年: IPv6が初めて公開
歴史的な参考資料とタイムラインについては、以下の外部リソース セクションをご覧ください。
コミュニケーションモデル
ネットワークを成功させるには、ネットワーク システムのアーキテクチャを定義する統一標準が必要です。このような標準の基本的な要件は、世界中のハードウェアおよびソフトウェア メーカーが連携して動作するネットワーク技術を開発し、蓄積された投資能力を活用してネットワークの状態を前進させることができるフレームワークを提供することです。
1970年代には、国際標準化機構[2] (ISO)と国際電信電話諮問委員会[3] (CCITT、現在の国際電気通信連合(ITU-T))の2つの組織が、それぞれ国際ネットワーク標準の開発を目的としたプロジェクトを開始しました。1983年にこれらの取り組みは統合され、1984年にISOによって「開放型システム間相互接続の基本参照モデル」 [ 4]と呼ばれる標準が発行され、 ITU-Tによって 標準X.200 [5]として発行されました。
OSIモデルは、ネットワークオペレーティングシステムの動作を説明する7層モデル[6]です。階層化モデルには、他の層に影響を与えずに1つの層を変更できることや、ネットワークOSの動作を理解するためのモデルとしてなど、多くの利点があります[7]。層間の相互接続が維持されている限り、ベンダーは他の層に影響を与えることなく個々の層の実装を強化できます。
OSIモデルの開発と並行して、米国国防高等研究計画局[8] ( DARPA ) によって研究ネットワークが実装されていました。ARPAnet [9]と呼ばれるネットワークをサポートするために開発されたインターネットワーキングプロトコルは、TCPまたは伝送制御プログラムと呼ばれていました。研究開発が進み、ネットワークの規模が大きくなるにつれて、使用されていたインターネットワーキング設計が扱いにくくなり、OSIモデルの階層化アプローチに厳密に従っていないことが判明しました。これにより、元のTCPが分割され、TCP/IPアーキテクチャが作成されました[10]。TCPは現在、伝送制御プロトコル、IPはインターネットプロトコルの略です。
パケット処理の登場
パケットネットワーク[11]は 、1960年代初頭に通信ネットワークの信頼性を高める必要性から生まれたもので、パケット構造を用いた階層化モデルの実装と見ることができます。
初期の商用ネットワークは、音声通信に使用される専用のアナログ回路で構成されていました。パケット交換の概念は、ネットワーク全体で機器が故障しても機能し続ける通信ネットワークを作成するために導入されました。このパラダイム シフトでは、ネットワークは、任意の数のルートで発信元から宛先まで移動する小さなパケットでデータを送信するシステムの集合体と見なされます。初期のパケット処理機能は、ネットワークを介したパケットのルーティング、送信エラーの検出と修正、およびその他のネットワーク管理機能をサポートしていました。
パケット交換は、それをサポートするパケット処理機能を備えており、従来の回線交換ネットワークに比べていくつかの実用的な利点がある。[12]
- 複数のデータタイプ(音声、データ、ビデオなど)をサポートするオールデジタル環境は、ユーザーの生活を豊かにするだけでなく、[13] [14]これまでは異なるデータタイプをサポートするために異なるネットワークを実装しなければならなかったネットワークプロバイダーの効率を大幅に向上させました。
- 同じ物理リンクを使用する複数の「論理回線」により、帯域幅の利用率が向上する
- あらゆる発信元からあらゆる宛先までネットワークを介した複数の経路による通信の存続可能性
- パケット処理機能を利用して、必要な処理を提供することで付加価値情報サービスを導入できる。
パケット構造
ネットワークパケットは、パケット交換ネットワークの基本的な構成要素です。[15]ファイル、電子メールメッセージ、音声またはビデオストリームなどのアイテムがネットワークを介して送信されると、パケットと呼ばれるチャンクに分割され、1つの大きなデータブロックよりも効率的にネットワークを移動できます。多数の標準[16]がパケットの構造をカバーしていますが、通常、パケットは次の3つの要素で構成されます。
- ヘッダー– 送信元、送信先、長さ、パケット番号など、パケットに関する情報が含まれます。
- ペイロード(または本体) – パケットを構成するデータが含まれます
- トレーラー– パケットの終わりを示し、多くの場合、エラー検出および訂正情報が含まれます。
パケット交換ネットワークでは、送信ホスト コンピュータが元の項目をパケット化し、各パケットはネットワークを介して宛先にルーティングされます。一部のネットワークでは固定長パケット (通常は 1024 ビット) が使用され、他のネットワークでは可変長パケットが使用され、ヘッダーにパケット長が含まれます。
個々のパケットは宛先までの経路が異なり、順序どおりに宛先に到着しないことがあります。宛先コンピュータは、各パケットのデータの正確性を検証し (トレーラーの情報を使用)、ヘッダーのパケット番号情報を使用して元の項目を再構成し、受信側のアプリケーションまたはユーザーにその項目を提示します。
この基本的な例には、パケット化、ルーティング、アセンブリという 3 つの最も基本的なパケット処理機能が含まれています。パケット処理機能は、単純なものから非常に複雑なものまであります。たとえば、ルーティング機能は実際にはさまざまな最適化アルゴリズムとテーブル検索を含む複数のステップからなるプロセスです[17]。インターネット上の基本的なルーティング機能は、次のようになります。
- 1. 宛先がこのコンピュータが所有するアドレスであるかどうかを確認します。そうであれば、パケットを処理します。そうでない場合:
- a. IP転送が「はい」に設定されているかどうかを確認します。設定されていない場合はパケットは破棄されます。設定されている場合、
- i. このコンピュータに接続されたネットワークが宛先アドレスを所有しているかどうかを確認します。所有している場合は、パケットを適切なネットワークにルーティングします。所有していない場合は、
- 1. 宛先ネットワークへのルートがあるかどうかを確認します。ルートがある場合は、パケットを次のホップ ゲートウェイにルーティングします。ルートがない場合は、パケットを破棄します。
- i. このコンピュータに接続されたネットワークが宛先アドレスを所有しているかどうかを確認します。所有している場合は、パケットを適切なネットワークにルーティングします。所有していない場合は、
- a. IP転送が「はい」に設定されているかどうかを確認します。設定されていない場合はパケットは破棄されます。設定されている場合、
より高度なルーティング機能には、ネットワーク負荷分散[18]や最速ルートアルゴリズム[19]などがあります。これらの例は、パケット処理アルゴリズムの範囲と、それがアイテムの送信に重大な遅延[20]をもたらす可能性があることを示しています。ネットワーク機器の設計者は、ネットワークの 遅延を最小限に抑えるために、ハードウェアアクセラレータとソフトウェアアクセラレータを組み合わせて使用することがよくあります。
ネットワーク機器アーキテクチャ
IPベースの機器は、データプレーン、制御プレーン、管理プレーンの3つの基本要素に分割できます。[21]
データプレーン
データプレーンは、インターフェイスからパケットを受信および送信し、該当するプロトコルの要件に従ってパケットを処理し、必要に応じてパケットを配信、ドロップ、または転送するネットワーク ノードのサブシステムです。
コントロールプレーン
コントロールプレーンは、データ プレーンで使用されるデータを変更するために使用できる情報を維持します。この情報を維持するには、複雑なシグナリング プロトコルを処理する必要があります。これらのプロトコルをデータ プレーンに実装すると、転送パフォーマンスが低下します。これらのプロトコルを管理する一般的な方法は、データ プレーンが着信シグナリング パケットを検出し、それをローカルでコントロール プレーンに転送できるようにすることです。コントロール プレーン シグナリング プロトコルは、データ プレーン情報を更新し、発信シグナリング パケットをデータ プレーンに挿入できます。このアーキテクチャが機能するのは、シグナリング トラフィックがグローバル トラフィックのごく一部であるためです。
管理プレーン
管理プレーンは、システム全体への管理インターフェイスを提供します。これには、次のような運用管理、管理、または構成/プロビジョニング アクションをサポートするプロセスが含まれます。
- 統計の収集と集計をサポートする機能、
- 管理プロトコルの実装のサポート、
- コマンドライン インターフェイス、Web ページを介したグラフィカル ユーザー構成インターフェイス、または従来の SNMP ( Simple Network Management Protocol ) 管理。
XML ( eXtensible Markup Language )に基づくより高度なソリューションも含めることができます。
例
パケット処理アプリケーションのリスト[22]は通常2つのカテゴリに分けられます。以下は、現在使用されている多様性を示すために選択されたいくつかの例です。
制御アプリケーション
- ルータの基本動作である転送
- 暗号化/復号化、暗号化アルゴリズムを使用したペイロード内の情報の保護
- サービス品質 (QOS) は、パケットのクラスに応じて優先サービスや特別なサービスを提供するなど、パケットを異なる方法で処理します。
データアプリケーション
- トランスコーディング、特定のビデオエンコーディングを、送信先で使用される特定のエンコーディングに変換すること
- トランスレーティングとトランスサイズ[23] 、送信先デバイスに適した画像サイズと密度に変換すること
- 画像または音声認識、データベース内のものと一致する特定のパターン(画像または音声)を検出し、一致した場合に何らかのアクションを実行すること。
- 高度なアプリケーションには、セキュリティ (通話監視およびデータ漏洩防止)、ターゲット広告、階層型サービス、著作権の施行、ネットワーク使用統計などの分野が含まれます。これらおよび他の多くのコンテンツ認識アプリケーションは、ディープ パケット インスペクション(DPI) テクノロジを使用してパケット ペイロード内に含まれる特定の情報を識別する能力に基づいています。
パケット処理アーキテクチャ
パケット交換[24]も、アーキテクチャ上の妥協点をいくつかもたらします。情報伝送においてパケット処理機能を実行すると、実行中のアプリケーションに悪影響を与える可能性のある遅延が発生します。たとえば、音声およびビデオアプリケーションでは、宛先でのアナログからデジタルへの変換とその逆の変換が必要なため、ネットワークによって発生する遅延により、ユーザーに支障をきたす顕著なギャップが発生する可能性があります。レイテンシは、複雑なシステムで発生する時間遅延の尺度です。
特定のネットワークのパフォーマンスと機能の要件に対応し、遅延の問題に対処するために、 パケット処理に対する複数のアーキテクチャアプローチが開発されてきました[25] 。
シングルスレッドアーキテクチャ(標準オペレーティングシステム)
標準的なネットワーク スタックは、単一のプロセッサ (シングル スレッド) で実行されるオペレーティング システム (OS)によって提供されるサービスを使用します。シングル スレッド アーキテクチャは実装が最も簡単ですが、プリエンプション、スレッド管理、タイマー、ロックなどの OS 機能のパフォーマンスに関連するオーバーヘッドの影響を受けます。これらの OS 処理オーバーヘッドは、システムを通過する各パケットに課せられ、スループットの低下につながります。
マルチスレッドアーキテクチャ(マルチプロセスオペレーティングシステム)
OSネットワークスタックのパフォーマンスを向上させるには、対称型マルチプロセッシング(SMP)プラットフォームまたはマルチコアプロセッサアーキテクチャを使用して、プロトコルスタック処理ソフトウェアを複数のプロセッサ(マルチスレッド)をサポートするように適応させます。パフォーマンスの向上はプロセッサの数が少ない場合に実現されますが、[26]プロセッサ(またはコア)の数が増えると直線的に増加することはなく、たとえば8つのコアを持つプロセッサは、2つのコアを持つプロセッサよりもパケットを著しく高速に処理できない可能性があります。
高速パス アーキテクチャ (オペレーティング システムのバイパス)
高速パス実装では、データ プレーンは 2 つの層に分割されます。通常、高速パスと呼ばれる下位層は、OS 環境外で着信パケットの大部分を処理し、全体的なパフォーマンスを低下させる OS オーバーヘッドを一切発生させません。複雑な処理を必要とするパケットのみが OS ネットワーク スタック (データ プレーンの上位層) に転送され、必要な管理、シグナリング、および制御機能が実行されます。ルーティングやセキュリティなどの複雑なアルゴリズムが必要な場合、OS ネットワーク スタックはパケットをコントロール プレーンの専用ソフトウェア コンポーネントに転送します。
マルチコアプロセッサは、高速パスの実装にさらなるパフォーマンス向上をもたらすことができます。[27]システム全体のスループットを最大化するために、複数のコアを高速パスの実行専用にすることができ、オペレーティングシステム、OSネットワークスタック、およびアプリケーションのコントロールプレーンを実行するには1つのコアのみが必要です。
プラットフォームを構成する際の唯一の制限は、高速パスを実行するコアが OS の外部で実行されるため、高速パス専用にし、他のソフトウェアと共有しないようにする必要があることです。トラフィック パターンの変化に応じて、システムを動的に再構成することもできます。データ プレーンを 2 つのレイヤーに分割すると、システムの一貫性を確保するために 2 つのレイヤーに同じ情報を持たせる必要があるため、複雑さが増します。
パケット処理技術
特殊なパケット処理プラットフォームを作成するために、さまざまなテクノロジが開発され、導入されてきました。ハードウェアとソフトウェアの幅広い範囲にわたるこれらのテクノロジはすべて、遅延を最小限に抑えながら速度とスループットを最大化することを目的として設計されています。
ネットワークプロセッサ
ネットワークプロセッサユニット(NPU)は、ほとんどのコンピュータを動かす汎用プロセッサ(GPP)と多くの点で似ていますが、内部アーキテクチャと機能はネットワーク中心の操作に合わせて調整されています。NPUには通常、アドレス検索、パターンマッチング、キュー管理などのネットワーク固有の機能がマイクロコードに組み込まれています。セキュリティや侵入検知などの高レベルのパケット処理操作は、多くの場合、NPUアーキテクチャに組み込まれています。[28]ネットワークプロセッサの例には次のものがあります。
- Intel - IXP2xxx ファミリー
- Netronome - NFP-6xxx/4xxx/32xx ファミリー
- PMC Sierra – Winpath ファミリー
- EZChip – NP-x ファミリー
マルチコアプロセッサ
マルチコアプロセッサは、2つ以上のコアを持つ単一の半導体パッケージであり、各コアは個別の処理ユニットを表し、コードを並列に実行できます。Intel Xeon [29]などの汎用CPUは、現在最大8つのコアをサポートしています。一部のマルチコアプロセッサは、専用のパケット処理機能を統合して、完全なSoC(システムオンチップ)を提供します。通常、イーサネットインターフェイス、暗号化エンジン、パターンマッチングエンジン、QoS用のハードウェアキューが統合されており、マイクロコアを使用したより高度な機能も統合されています。これらのハードウェア機能はすべて、ソフトウェアによるパケット処理の負荷を軽減できます。Cavium OCTEON IIなどのこれらの特殊なマルチコアパッケージの最近の例では、2〜32個のコアをサポートできます。
- Tilera - TILE-Gx プロセッサ ファミリ
- Cavium Networks - OCTEON および OCTEON II マルチコア プロセッサ ファミリ
- フリースケール– QorIQ プロセッシング プラットフォーム
- NetLogic Microsystems – XLP、XLR、XLS プロセッサ ファミリ
ハードウェアアクセラレータ
明確に定義可能で反復的なアクションの場合、半導体ハードウェアソリューションに直接組み込まれた専用アクセラレータを作成すると、汎用プロセッサで実行されるソフトウェアと比較して操作が高速化されます。[30]初期の実装ではFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)が使用されていましたが、現在では暗号化や圧縮などの特定の機能がGPPとNPUの両方に内部ハードウェアアクセラレータとして組み込まれています。ネットワーク固有のハードウェアアクセラレータを備えた現在のマルチコアプロセッサの例には、セキュリティ、TCP/IP、QOS、HFAパターンマッチングのアクセラレーションを備えたCavium CN63xx [31]や、ネットワークおよびセキュリティアクセラレーションエンジンを備えたNetlogic Microsystems XFSプロセッサファミリがあります。[32]
ディープパケットインスペクション
個々のパケットの内容に基づいて決定を下すことができるため、ポリシーおよび課金ルール機能(PCRF) や Quality of Service などのさまざまな新しいアプリケーションが可能になります。パケット処理システムは、ディープ パケット インスペクション (DPI) [33]テクノロジを使用して特定のトラフィックの種類を分離します。DPI テクノロジは、パターン マッチングアルゴリズムを使用してデータ ペイロード内を調べ、ネットワーク デバイスを通過するすべてのパケットの内容を識別します。パターン マッチが成功すると、適切な追加アクションを実行するために制御アプリケーションに報告されます。
パケット処理ソフトウェア
オペレーティングシステムソフトウェアには、シングルコア環境とマルチコア環境の両方で動作する特定の標準ネットワークスタックが含まれます。[34]オペレーティングシステムバイパス(高速パス)アーキテクチャを実装するには、6WINDの6WINDGateなどの特殊なパケット処理ソフトウェアを使用する必要があります。このタイプのソフトウェアは、複数のブレード、プロセッサ、またはコアに分散して適切に拡張できる一連のネットワークプロトコルを提供します。
参考文献
- ^ D. Cerović、V. Del Piccolo、A. Amamou、K. Haddadou、G. Pujolle、「高速パケット処理:調査」、IEEE Communications Surveys & Tutorials、vol. 20、no. 4、pp. 3645-3676、2018年第4四半期。doi: 10.1109/COMST.2018.2851072
- ^ 国際標準化機構
- ^ 国際電気通信連合)
- ^ ISO/IEC 10731:1994. 情報技術 - 開放型システム間相互接続 - 基本参照モデル - OSI サービスの定義に関する規約
- ^ ITU-T X.200-199407、X.200:情報技術 - 開放型システム間相互接続 - 基本参照モデル:基本モデル
- ^ Tech-FAQ。OSI モデルとは何か、なぜ重要なのか、なぜ重要でないのか
- ^ コンピュータネットワークノート。OSI 7 層モデルの利点
- ^ 「DARPA - 国防高等研究計画局」。2020年1月15日時点のオリジナルよりアーカイブ。2012年1月5日閲覧。
- ^ 生きたインターネット。ARPANET -- 最初のインターネット
- ^ W3 スクール、TCP/IP チュートリアル
- ^ シェルドン、トム。パケットとパケット処理ネットワーク。Linktionary、2001年。
- ^ Copeland, Lee. QuickStudy: パケット交換ネットワークと回線交換ネットワーク。Computerworld、2000 年 3 月。
- ^ ネグロポンテ、N. Being Digital。ヴィンテージ、1996年1月。
- ^ Reding, Viviane. デジタルコンバージェンス: まったく新しいライフスタイル。デジタルライフスタイル展、2006 年 5 月。
- ^ Peterson, L. および Davie, B. 「コンピュータネットワーク (第 5 版): システムアプローチ」 Morgon Kaufmann、2011 年 3 月。
- ^ RFC ソースブック。IP、インターネット プロトコル。
- ^ Streenstrup, M. 通信ネットワークにおけるルーティング。Prentice Hall、1995 年 4 月。
- ^ Anderson, P. および James, L. パフォーマンスが急上昇、機能は多様 - レビュー: ロード バランサー。NetworkWorldFusion、1999 年 6 月。
- ^ Murthy, S. パス検索アルゴリズムを使用したパケット交換ネットワークでのルーティング。カリフォルニア大学サンタクルーズ校、1996 年。
- ^ メリーランド大学。導入、レート、レイテンシー。2009
- ^ Nokia 通信フレームワーク ガイド。プレーンとは何か?。2010 年 2 月。
- ^ Vin, H. パケット処理アプリケーション: 概要。テキサス大学、2003 年秋。
- ^ Reddy, M. ビデオのトランスコーディングと翻訳 - 31 種類のビデオ! Vela、2011 年 9 月。
- ^ Elhanany, I. および Hamdi, M. 高性能パケットスイッチングアーキテクチャ。Springer、2011 年 11 月。
- ^ Selissen, M. パケット処理にはアーキテクチャとネットワーク間のバランスが必要。EE Times、2002 年 8 月。
- ^ Foong, A.、Fung, J.、Newell, D. 「Linux SMP スケーリングの改善: ユーザー主導のプロセッサ アフィニティ」Intel Software Network、2008 年 10 月。
- ^ CDC Innovation。6WIND は新しいマルチコア Intel® プラットフォームでパケット処理機能を 10 倍高速化します。2010 年 3 月。
- ^ NetLogic Microsystems. 高度なアルゴリズム知識ベースプロセッサ。
- ^ Intel. Intel® マルチコア プロセッサによるパケット処理。2008 年。
- ^ Cheerla, R. 高性能 WAN 最適化システムのアーキテクチャ比較。Infineta、Cardinal Directions、2011 年 3 月。
- ^ Cavium. OCTEON II CN63XX マルチコア MIPS64 インターネット アプリケーション プロセッサ
- ^ NetLogic Microsystems. マルチコア プロセッサ ソリューション
- ^ dpacket.org ディープパケットインスペクション/処理の概要。
- ^ マルチコアパケット処理フォーラム
外部リンク
- 生きた歴史。「インターネットの歴史」
- ハウ、ウォルト(2010)「インターネットの簡潔な歴史」
- インターネット協会。「インターネットの歴史」
- 生きた歴史。「パケット交換の歴史」
- ロバーツ、ローレンス G. 博士 (1978 年 11 月)。「パケット交換の進化」
- マーシャル、デイブ。「インターネットの歴史 - タイムライン」
- Rami Rosen「DPDK によるネットワーク アクセラレーション」、lwn.net の記事、2017 年 7 月。
- Rami Rosen「DPDK を使用したユーザー空間ネットワーキング」、Linux Journal の記事、2018 年 4 月。
