P4での5GUPFの練習

4Gコアネットワークと比較すると、5Gコアネットワークには、サービス、C / U分離(制御プレーンとユーザープレーンのデカップリング)、NFV、スライスなどの特性があります。NFVとC / Uの分離を背景に、この記事では、最初にP4をUPFネットワーク要素の技術ソリューションおよびリファレンス実装ソリューションとして使用することの長所と短所について説明し、最後に関連するオープンソースコードを組み合わせてP4ベースのUPFコンセプトのデモデモを行います。

1.背景

個人的な観点からは、NFVとC / Uの分離は、CT分野のすべてがソフトウェアで定義された結果です。NFV(Network Functions Virtualization)は、以前は専用ハードウェアでソフトウェアの形式で利用可能であったネットワーク機能を提供し、汎用サーバーの下の仮想化プラットフォームに展開できます。ソフトウェアを使用してネットワーク機能を実装すると、新しい機能や新しいサービスの立ち上げをスピードアップできます。仮想化により、ハードウェアの投資コストを節約し、ハードウェアの使用効率を高めることができます。C / U分離をもう一度見てみると、C / U分離はほとんど別の文脈にあります。または、モバイル通信の分野ではSDNと呼ぶことができます。C / U分離では、コアネットワークは制御プレーンとユーザープレーンの2つの部分に分かれています。モビリティ管理、セッション管理、ユーザーデータ、その他の機密情報などのシグナリング制御機能を制御プレーンに配置します。これらは通常、適切に管理された中央DCに配置されます。同時に、低遅延と高帯域幅の要件を満たすために、ユーザープレーンをユーザー側近くのエッジDCに柔軟に展開できます。ユーザープレーンは、コントロールプレーンによって発行された転送戦略を通じてユーザーデータを転送します.4GゲートウェイSGW / PGWの機能と比較して、5Gユーザープレーンネットワーク要素UPFは、比較的単純化された単一の機能を備えています。さらに、C / Uインターフェイスプロトコル(PFCP)で定義された標準化プロセスと組み合わせると、5GUPFはホワイトボックスネットワークスイッチング機器製品として表示される場合があります。

簡単に言えば、UPF(ユーザープレーン機能)は、モバイルインフラストラクチャ(例:RAN)とDN(データネットワーク)の間のゲートウェイデバイスであり、エンドユーザーデータサービスのGTP-Uトンネル転送機能を完了します。 。次の図を借りて、モバイル通信ネットワークにおけるUPFの論理的な関係を確認してください。UPFは制御プレーンネットワーク要素SMFによって制御され、SMFは、参照ポイントN4インターフェイスを介してPFCP(Packet Forwarding Control Protocol)によって定義された対話型メッセージに従って転送ルールをUPFに送信します。UPFは、ベースステーション側のN3ポートからDNへのUE端末ユーザーのアップリンクアクセスのデータサービスを受信し、GTPUトンネルのカプセル化解除とルーティングを完了します。UPFはDN(データネットワーク)側からダウンリンクデータを受信し、ターゲットUEのGTPUトンネルカプセル化を実行してベースステーションに渡し、最後にベースステーションはワイヤレスチャネルを介してデータをUEに転送します。

image.png

次の図のプロトコルスタックの観点からは、UPFデータプレーンで実行されたGTPUトンネル転送処理を簡単に確認できる場合もあります。もちろん、上記の説明はUPFの最も基本的な機能にすぎず、UPFには課金、ポリシー、Qos、DPIなどの機能も必要です。

image.png

データ転送を主な機能とする他のNFV製品と同じです。NFVの下でのUPFも、ほとんどがDPDK + SR-IOV /パススルースキームを採用しています。このソリューションSR-IOV /パススルーは、仮想化レイヤーを直接バイパスし、ゲストOSのネットワークカードリソースを直接使用して、仮想化されたネットワークがパフォーマンスに与える影響を回避します。ゲストOSでは、UPFはDPDKを使用してOSのネットワークプロトコルスタックを超え、ユーザーモードでのネットワークパケットの高速転送処理を実現します。NFV環境の現在のネットワークカードおよびCPUアーキテクチャのほとんどは、DPDK + SR-IOV /パススルーの動作条件を満たすことができるため、このソリューションの適応性は最大の問題ではありません。最大の課題は、この汎用CPUベースのデータプレーン処理スキームがマルチスレッド同期やキャッシュミスなどの影響を受け、遅延ジッタと最大レートを保証することが難しいことです。別の言い方をすれば、現在のDPDK + SR-IOV /パススルーはパフォーマンスのボトルネック期間に達しています。保証された遅延と帯域幅の要件が必要な場合は、新しい技術的な実装ソリューションを検討する必要があります。

パフォーマンスの観点から、ハードウェアの実装は最適である必要があります。データプレーンハードウェアソリューションには、FPGA、専用ASIC、およびNP(ネットワークプロセッサ)が含まれます。プログラム可能なデータプレーン言語であるP4は、Linuxに精通しているネットワーク開発者にとって学習しきい値が低くなっています。BarefootTofinoなどのP4チップと組み合わせると、革新的で多様なデータプレーンアプリケーションを迅速に開発できます。次のセクションでは、P4でのUPFに関するいくつかの計画上の考慮事項を示します。

2.UPFのP4プログラム

1、sdnアプリとしてのupf

 UPFはSDNOS上のAPPです。UPFAPPは、PFCPセッションの確立、PFCPメッセージのエンコードとデコード、SDNOSインターフェイスを介した転送ルールの発行などの制御関連機能を完了します。このスキームは、vnfオフロードスキームとも呼ばれます。つまり、vnfUPF関数はsdnによって実装されます。現時点では、UPFサービスはSDNネットワーク機能全体の一部であり、ルーティング機能は、リンクトポロジを提供するSDNOSによって上位層のAPPによって実現できます。

image.png


2、upf + switchOS

   Upf-Cコントロールプレーン機能は、プログラムとしてのみ使用され、SDNOSなしでswitchOSと直接通信します。

image.png

   2つのプログラムの比較


sdnアプリとしてのupf

upf + switchOS

規模

複数のswitchOS、既存のsdnファブリックネットワークにUPF機能を追加します。

単一のswitchOS。独立したUPFノードを追加します。軽量化と小型化を重視

開発の難しさ

難しい。SDN OS、スイッチOS、およびP4パイプラインに関する一定の知識が必要です。

シンプル。主にswitchOSノースバウンドインターフェイスとp4パイプラインの知識があります。単一ノードであるため、ルーティングプロトコル機能をUPF-C静的構成または単純な動的ルーティングに配置できます。

維持する

難しい。問題を特定するには、上から下に移動する必要があります。

シンプル。シンプルな構造は、位置決めの問題をシンプルにします。

P4を使用したUPFの初期段階では、upf + switchOSの方が簡単で、宣伝しやすいと考えています。既存のホワイトボックスP4インタラクティブマシンでUPF-Cを開発することで、エッジUPF機能を実現でき、一般的なサーバーよりも転送性能と消費電力が優れています。 UPFのプログラムには競争上の利点があります。P4アクセラレーションネットワークカードを使用する汎用サーバーの場合、このソリューションはVNFで直接使用することもできます。

P4メッセージの処理は基本的にテーブルマッチアクション操作に依存しているため、DPIなどのディープ(7層)プロトコル分析ではデータプレーンが処理できず、大量の正規式マッチング処理が必要になるという問題があります。どちらのスキームでも、このようなメッセージは処理のためにコントロールプレーンに送信できます。しかし、著者は、データのようなサービスを処理のために別の「コプロセッシングユニット」に転送することを好みます。これにより、オプション3が使用されます。

3、upf + switchOS + vpp

image.png

 このソリューションでは、switchOSのデータプレーンがUPF全体の高速パスとして機能します。認識されないパケットまたは処理されたパケットの場合、VPPが配置されているネットワークインターフェイスに転送されます。VPPが処理された後、SwitchOSデータプレーンを介して転送されます(外部はネットワークインターフェイスIPの整合性を反映します) 。VPPは、vppndpiプロジェクトを統合するための参照として使用できるdpi機能を実現します。

、、 Upf_p4_poc

UPFでのP4の適用については、より直感的な評価と認識があります。プラン2upf + switchOSのアイデアに基づいて、作成者はupf_p4_procプロジェクトを作成しました詳細については、https://github.com/801room/upf_p4_poc/を参照してください全体的なコンポーネントブロック図は次のとおりです。

image.png

このプロジェクトは、stratum + bmv2に基づいています。これは、単純なpfcpセッションの確立の下で、pdrの作成と、p4パイプラインでの対応するアップリンクおよびダウンリンクgtpuデータの処理を実現します。P4とUPFの開発に興味のある学生は、UPFシグナリングプレーンとユーザープレーンのscapyベースのpythonスクリプトを見ることができます。UPF開発の学生にとっては参考になるかもしれません。過去にUPFの開発を行っていたとき、最も苦痛だったのは、UPFがセルフテストに適していないことでしたが、現在はスケープに依存しているため、難易度が大幅に低下しています。

後で、xdpに基づくupfデモについても検討します。個人的には、xdpは、カーネルモードで一部のファイアウォール機能を実装するためのiptableの既存の使用に適していると思いますが、UPFは適切なアプリケーションシナリオではない可能性があります。しかし、これを実践しなければならない後、記事の分析が行われます。


おすすめ

転載: blog.51cto.com/14967493/2542598