デジタル通信ネットワークにおいて、パケット処理とは、通信ネットワークの様々なネットワーク要素を通過するデータまたは情報のパケットに適用される多様なアルゴリズムを指します。ネットワークインターフェースの性能向上に伴い、より高速なパケット処理が求められています。[ 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がティム・バーナーズ=リーの考案したワールド・ワイド・ウェブ(WWW)を公開
- 1998年: IPv6が初めて公開された
歴史的な参考資料とタイムラインについては、以下の外部リソース セクションをご覧ください。
コミュニケーションモデル
ネットワークを成功させるには、ネットワークシステムのアーキテクチャを定義する統一標準が必要です。このような標準の根本的な要件は、世界中のハードウェアおよびソフトウェアメーカーが連携して動作するネットワーク技術を開発し、蓄積された投資能力を活用してネットワークを前進させるためのフレームワークを提供することです。
1970年代には、国際標準化機構[ 2 ] (ISO) と国際電信電話諮問委員会[ 3 ] (CCITT、現在は国際電気通信連合(ITU-T) と呼ばれています) の2つの組織が、それぞれ国際的なネットワーク標準の開発を目的としたプロジェクトを開始しました。1983年にこれらの取り組みは統合され、1984年にISOによって「開放型システム間相互接続の基本参照モデル」[ 4 ]と呼ばれる標準が発行され、ITU-Tによって 標準X.200 [ 5 ]として発行されました。
OSI参照モデルは、ネットワークオペレーティングシステムの動作を記述した7層モデル[ 6 ]です。階層化モデルには多くの利点[ 7 ]があり、例えば、他の層に影響を与えることなく1つの層を変更できることや、ネットワークOSの動作を理解するためのモデルとして利用できることなどが挙げられます。層間の相互接続性が維持されている限り、ベンダーは他の層に影響を与えることなく、個々の層の実装を拡張することができます。
OSI参照モデルの開発と並行して、米国国防高等研究計画局[ 8 ] ( DARPA ) によって研究ネットワークが構築されていました。このネットワークをサポートするために開発されたインターネットワーキングプロトコルはARPAnet [ 9 ]と呼ばれ、TCP または Transmission Control Program と呼ばれていました。研究開発が進み、ネットワークの規模が大きくなるにつれて、使用されていたインターネットワーキングの設計が扱いにくくなり、OSI参照モデルの階層化アプローチに厳密に従っていないことが判明しました。このことが、元のTCPを分割し、TCP/IPアーキテクチャ[ 10 ]の作成につながりました。現在、TCP は Transmission Control Protocol、IP は Internet Protocol の略です。
パケット処理の出現
パケットネットワーク[ 11 ] は、1960年代初頭に通信ネットワークの信頼性を高める必要性から生まれた。これは、パケット構造を用いた階層化モデルの実装と見ることができる。
初期の商用ネットワークは、音声通信専用のアナログ回線で構成されていました。パケット交換の概念は、ネットワーク全体で機器障害が発生しても機能し続ける通信ネットワークを実現するために導入されました。このパラダイムシフトにより、ネットワークは、小さなパケットでデータを伝送し、任意の数の経路を経由して送信元から送信先まで到達するシステムの集合体として捉えられるようになりました。初期のパケット処理機能は、ネットワークを介したパケットのルーティング、伝送エラーの検出と訂正、その他のネットワーク管理機能をサポートしていました。
パケット交換とそのパケット処理機能は、従来の回線交換ネットワークに比べていくつかの実用的な利点がある。[ 12 ]
パケット構造
ネットワークパケットは、パケット交換ネットワークの基本的な構成要素です。[ 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 ファミリー
- 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)やQoS(Quality of Service)といった、様々な新しいアプリケーションが可能になります。パケット処理システムは、ディープ・パケット・インスペクション(DPI) [ 33 ]技術を用いて、特定のトラフィックの種類を分離します。DPI技術は、パターンマッチングアルゴリズムを用いてデータペイロード内を調べ、ネットワークデバイスを通過する全てのパケットの内容を識別します。パターンマッチングに成功した場合、制御アプリケーションに報告され、適切な追加アクションが実行されます。
パケット処理ソフトウェア
オペレーティングシステムソフトウェアには、シングルコア環境とマルチコア環境の両方で動作する特定の標準ネットワークスタックが含まれています。[ 34 ]オペレーティングシステムバイパス(高速パス)アーキテクチャを実装するには、6WINDの6WINDGateなどの特殊なパケット処理ソフトウェアを使用する必要があります。このタイプのソフトウェアは、複数のブレード、プロセッサ、またはコアに分散され、適切に拡張可能なネットワークプロトコルスイートを提供します。
参考文献
- ^ D. Cerović、V. Del Piccolo、A. Amamou、K. Haddadou、G. Pujolle、「高速パケット処理:概要」、IEEE Communications Surveys & Tutorials、第20巻、第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 Schools、 TCP/IPチュートリアル、Wayback Machineで2013年7月24日にアーカイブ
- ^シェルドン、トム.パケットとパケット処理ネットワーク. Linktionary, 2001.
- ^ Copeland, Lee. QuickStudy: パケット交換ネットワークと回線交換ネットワーク. Computerworld, 2000年3月.
- ^ネグロポンテ、N.「Being Digital」、ヴィンテージ、1996年1月。
- ^レディング、ヴィヴィアン.デジタルコンバージェンス:全く新しいライフスタイル. デジタルライフスタイル展、2006年5月.
- ^ Peterson, L. および Davie, B. 『コンピュータネットワーク(第5版):システムアプローチ』Morgon Kaufmann、2011年3月。
- ^ RFCソースブック。IP、インターネットプロトコル。 2011年5月14日アーカイブ、Wayback Machineにて
- ^ Streenstrup, M. 通信ネットワークにおけるルーティング Prentice Hall、1995年4月。
- ^ Anderson, P. および James, L.「パフォーマンスが向上、機能は多様 - レビュー: ロードバランサ」NetworkWorldFusion、1999年6月。
- ^ Murthy, S.「パス検索アルゴリズムを用いたパケット交換ネットワークにおけるルーティング」カリフォルニア大学サンタクルーズ校、1996年。
- ^メリーランド大学.序論、レートとレイテンシー. 2009
- ^ Nokia Communications Framework Guide.プレーンとは? 2010年2月.
- ^ Vin, H.パケット処理アプリケーション:概要テキサス大学、2003年秋。
- ^ Reddy, M. Video Transcoding & Transrating - Video in 31 Flavors! Archived 2012-04-21 at the Wayback Machine . 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イノベーション。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 月。