Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

JCNR vRouterデータパス

概要 JCNRは、データプレーン開発キット(DPDK)と拡張バークレーパケットフィルタ(eBPF)eXpress Data Path(XDP)データパスベースのvRouterフォワーディングプレーンの両方をサポートしています。

JCNR vRouterフォワーディングプレーンは、データプレーン開発キット(DPDK)と拡張バークレーパケットフィルタ(eBPF)eXpress Data Path(XDP)データパスの両方をサポートし、高速パケット処理を実現します。

データプレーン開発キット(DPDK)

DPDKは、迅速なパケット処理のためのライブラリとドライバーのオープンソースのセットです。DPDK を使用すると、ネットワーク インターフェイス カード (NIC) がダイレクト メモリ アクセス (DMA) パケットをアプリケーションのアドレス空間に直接送信できるため、パケット処理が高速になります。このパケット ルーティング方法では、アプリケーションがパケットをポーリングし、NIC からの割り込みのオーバーヘッドを防ぐことができます。

DPDK のポーリング モード ドライバー (PMD) は、Linux カーネルの割り込みベースのドライバーではなく、VM のホストの物理インターフェイス (NIC) を使用します。NIC のレジスタはユーザー スペースで動作するため、DPDK の PMD からアクセスできます。その結果、ホストOSはNICのレジスタを管理する必要がありません。つまり、DPDK アプリケーションは、NIC のすべてのパケット ポーリング、パケット処理、およびパケット転送を管理します。DPDK アプリケーションは、I/O 割り込みが発生するのを待つ代わりに、常にパケットをポーリングし、これらのパケットを受信するとすぐに処理します。

DPDKデータパスは、ポーリングモードのためにCPU使用率が高く、メンテナンスコストが高くなります。また、DPDK を実装すると、カーネルで NIC が使用できなくなるため、ソケットと転送プレーンのコードを再実装する必要があります。

eBPF XDP

JCNRは、eBPF XDPデータパスベースのvRouterもサポートしています。eBPF(extended Berkley Packet Filter)は、サンドボックス仮想マシン内でユーザー定義プログラムを実行するLinuxカーネルテクノロジーです。これにより、低レベルのネットワークプログラムを最適なパフォーマンスで実行できるようになります。eXpress Data Path(XDP)フレームワークは、eBPF プログラムの高速パケット処理を可能にします。JCNR は、限られたドライバーのみの Baremental サーバー展開でネイティブ(ドライバー)モードの XDP をサポートします。詳細については、 システム要件 を参照してください。

eBPF XDP Datapathのメリット

eBPF XDP Datapathには、次のようなメリットがあります。

  • eBPF XDP カーネルプログラムとそのカスタムライブラリは、カーネルバージョン間での保守が容易で、カーネルの互換性も広くなっています。カーネルの依存関係は、eBPF ヘルパー関数の小さなセットに限定されます。
  • このプログラムは、カーネルにロードされる前に、組み込みのLinux eBPF検証ツールによって分析されるため、より安全です。
  • カーネル バイパスとソケット バッファー (skb) 割り当ての省略を使用して、より高いパフォーマンスを提供します。

eBPF XDPでサポートされているJCNR機能

次のJCNR機能は、IPv4トラフィックのeBPF XDPでのみサポートされます。

  • JCNRを送信ルーター、受信ルーター、またはトランジットルーターとして導入したL3トラフィック

  • VRF

  • MPLSoUDP

  • IGP—OSPF、IS-IS

  • BGPルートアドバタイズメント

手記:

JCNRを導入する場合、ヘルムチャートで agentModeType 属性を設定して、DPDKベースまたはeBPF XDPデータパスベースのvRouterを選択できます。