Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Juniper Cloud-Native Routerのコンポーネント

概要 Juniper Cloud-Native Routerソリューションは、JCNRコントローラ、データプレーン開発キット(DPDK)または拡張バークレーパケットフィルタ(eBPF)、eXpress Data Path(XDP)、データパスベースのJCNR vRouter、JCNR-CNIなどの複数のコンポーネントで構成されています。このトピックでは、Juniper Cloud-Native Routerのコンポーネントの概要を簡単に説明します。

JCNRのコンポーネント

Juniper Cloud-Native Routerは、主にJCNRコントローラコントロールプレーン、JCNR vRouterフォワーディングプレーン、Kubernetes統合用のJCNR-CNIの3つのコンポーネントで構成されています。すべてのJCNRコンポーネントはコンテナとしてデプロイされます。

図1 は、DPDKベースのvRouterで実装した場合の、Kubernetesクラスタ内のJuniper Cloud-Native Routerのコンポーネントを示しています。

図1:Juniper Cloud-Native Routerのコンポーネント(DPDKデータパス) Components of Juniper Cloud-Native Router (DPDK Datapath)

図2 は、eBPF XDPベースのvRouterで実装した場合の、Kubernetesクラスター内のJuniper Cloud-Native Routerのコンポーネントを示しています。

図2:Juniper Cloud-Native Routerのコンポーネント(eBPF XDPデータパス) Components of Juniper Cloud-Native Router (eBPF XDP Datapath)

JCNRコントローラ

JCNRコントローラは、Junosコンテナ化ルーティングプロトコルデーモン(cRPD)を実行するクラウドネイティブルーターソリューションのコントロールプレーンです。ステートフルセットとして実装されます。コントローラは、Cloud-Native Routerの他の要素と通信します。展開時にコントローラで設定した設定、ポリシー、およびルールは、実装のためにJCNR vRouterおよびその他のコンポーネントに伝達されます。

たとえば、コントローラで設定されたファイアウォールフィルター(ACL)は、(vRouterエージェントを介して)JCNR vRouterに送信されます。

Juniper Cloud-Native Router Controllerの機能:

  • NETCONF プロトコルを使用して、外部の自動化およびオーケストレーション システムからアクセス可能な、Junos OS 互換の CLI 設定および操作コマンドを公開します。

  • 高速フォワーディングプレーンとしてvRouterに対応しています。これにより、DPDK フレームワークを使用して構築されたアプリケーションは、カーネルを経由せずに、アプリケーションと vRouter と直接パケットを送受信できます。

  • DPDK 対応の vRouter によって管理される PF(物理機能)、VF(仮想機能)、virtio、アクセス、トランクインターフェイスでの VLAN タグ付きサブインターフェイスの設定をサポートします。

  • ブリッジ ドメイン、VLAN、仮想スイッチの設定をサポートします。

  • 主にBGP、IS-IS、およびOSPFのルーティングプロトコルを使用して、DPDKアプリケーションの到達性をコアネットワークにアドバタイズします。

  • クラスタの内部および外部にポッドのL3ネットワーク到達可能性情報を配信します。

  • L2 ファイアウォールの設定を維持します。

  • vRouterエージェントを介して設定情報をvRouterに渡します。

  • ライセンス キー情報を格納します。

  • BGPスピーカーとして機能し、他のBGPスピーカーとピア関係を確立してルーティング情報を交換します。

  • コントロールプレーンのテレメトリデータをPrometheusとgNMIにエクスポートします。

構成オプション

コンフィグレットリソースを使用して、cRPDポッドを設定します。

JCNR vRouter

JCNR vRouterは、ハイパフォーマンスなデータパスコンポーネントです。これは、Linux ブリッジまたは Linux カーネルの Open vSwitch (OVS) モジュールの代替です。これは、ユーザー空間プロセスとして実行されます。vRouter 機能は、vrouter-agent と vrouter-telemetry-exporter 用と vrouter-agent-dpdk 用の 2 つのポッドに実装されています。この分割により、必要に応じて CPU リソースを異なる vRouter コンポーネントに合わせて柔軟に調整できます。

vRouter は、データプレーン開発キット(DPDK)と拡張バークレーパケットフィルタ(eBPF)eXpress データパス(XDP)データパスの両方をサポートします。

手記:

JCNR eBPF XDPデータパスは、 ジュニパーテクノロジープレビュー(技術プレビュー) の機能です。限定された機能がサポートされます。詳細は、 JCNR vRouter Datapath を参照してください。

JCNR vRouterの機能:

  • レイヤー 3 仮想プライベート ネットワークでルーティングを実行します。

  • L2転送を実行します。

  • 高性能なDPDKベースの転送をサポートします。

  • 高パフォーマンスのeBPF XDPデータパスベースの転送をサポートします。

  • データプレーンのテレメトリデータをPrometheusとgNMIにエクスポートします。

vRouterのメリット:
  • 高性能なパケット処理。

  • フォワーディングプレーンは、カーネルベースのフォワーディングよりも高速なフォワーディング機能を提供します。

  • フォワーディングプレーンは、カーネルベースのフォワーディングよりも拡張性に優れています。

  • 次のNICのサポート:

    • Intel E810(Columbiaville)ファミリー

    • Intel XL710(Fortville)ファミリー

JCNR-CNI

JCNR-CNIは、ジュニパーが開発した新しいコンテナネットワークインターフェース(CNI)です。JCNR-CNIは、各ノードにインストールされるKubernetes CNIプラグインで、アプリケーションポッド用のネットワークインターフェースをプロビジョニングします。ポッド作成時に、Kubernetesはポッドインターフェイスの作成と設定をJCNR-CNIに委任します。JCNR-CNIは、JCNRコントローラおよびvRouterと対話してDPDKインターフェイスを設定します。ポッドが削除されると、JCNR-CNIが呼び出され、KubernetesおよびCloud-Native Routerコンポーネントのポッドインターフェイス、構成、および関連する状態のプロビジョニングが解除されます。JCNR-CNIは、マルチCNIとともにセカンダリCNIとして機能し、ポッドインターフェイスを追加および設定します。

JCNR-CNIの機能:

  • 次のようなKubernetesポッドでネットワーキングタスクを管理します。

    • IP アドレスの割り当て

    • MACアドレスの割り当て。

    • Kubernetes クラスタ内のポッドと vRouter の間にタグなしインターフェイス、アクセスインターフェイス、およびその他のインターフェイスを設定する。

    • VLAN サブインターフェイスの作成

    • L3 インターフェイスの作成

  • 追加や削除などのポッドイベントに作用します。

  • cRPD設定を生成します。

JCNR-CNIは、ポッドが使用するセカンダリ・インターフェースを管理します。YAML 形式のネットワーク添付ファイル定義 (NAD) ファイルの構成に基づいて、必要なインターフェイスを作成します。JCNR-CNIは、最終的な場所または接続ポイントに渡す前にいくつかのインターフェイスを設定し、次のような追加のインターフェイス設定オプション用のAPIを提供します。

  • さまざまな種類のポッドインターフェイスをインスタンス化します。

  • DPDK データプレーンを活用するポッド用の virtio ベースのハイパフォーマンスインターフェイスを作成します。

  • Linux カーネル ネットワーク スタックを使用して Pod が通信できるようにする veth ペア インターフェイスを作成する。

  • アクセス モードまたはトランクモードでのポッド インターフェイスの作成。

  • ポッド インターフェイスをブリッジ ドメインと仮想ルーターにアタッチする。

  • 動的 IP アドレス割り当ての IPAM プラグインをサポートします。

  • virtio インターフェースに一意のソケットインターフェースを割り当てる。

  • IP アドレスの割り当てや、Kubernetes クラスター内のポッドと vRouter 間のインターフェイスの設定など、ポッドでのネットワーク タスクの管理。

  • ポッド間およびポッドからネットワークへのポッド インターフェイスの接続。

  • パケット処理の負荷を軽減するための vRouter との統合。

JCNR-CNIのメリット:

  • ポッド インターフェイス管理の改善

  • カスタマイズ可能な管理および監視機能

  • コントローラおよび vRouter コンポーネントとの緊密な統合によるパフォーマンスの向上

ポッド作成におけるJCNR-CNIの役割:

クラウドネイティブ・ルーターで使用するポッドを作成すると、 kubelet と呼ばれるKubernetesコンポーネントがMultus CNIを呼び出して、ポッドのネットワークとインターフェイスを設定します。Multus は pod.yaml ファイルの annotations セクションを読み取り、NAD を見つけます。NADがCNIプラグインとしてJCNR-CNIを指している場合、MultusはJCNR-CNIを呼び出してポッドインターフェイスを設定します。JCNR-CNIは、NADで指定されているとおりにインターフェイスを作成します。次に、JCNR-CNIは設定を生成し、コントローラにプッシュします。

syslog-NG

Juniper Cloud-Native Routerは、syslog-ngポッドを使用してcRPDおよびvRouterからイベントログを収集し、ログをJSONベースの通知に変換します。通知はファイルに記録されます。Syslog-ng はデーモンセットとして実行されます。