このページの目次
Juniper Cloud-Native Routerのコンポーネント
概要 Juniper Cloud-Native Routerソリューションは、JCNRコントローラ、JCNR vRouter、JCNR-CNIなどの複数のコンポーネントで構成されています。このトピックでは、Juniper Cloud-Native Routerのコンポーネントの概要を説明します。
JCNR コンポーネント
Juniper Cloud-Native Routerは、主にJCNRコントローラコントロールプレーン、JCNR vRouter DPDKフォワーディングプレーン、Kubernetes統合向けJCNR-CNIの3つのコンポーネントで構成されています。すべての JCNR コンポーネントは、コンテナーとしてデプロイされます。
図1は、Kubernetesクラスタ内のJuniper Cloud-Native Routerのコンポーネントを示しています

JCNR コントローラ
JCNRコントローラは、Junosコンテナ化ルーティングプロトコルデーモン(cRPD)を実行するクラウドネイティブルーターソリューションのコントロールプレーンです。ステートフルセットとして実装されます。コントローラは、クラウドネイティブルーターの他の要素と通信します。導入時にコントローラに設定した設定、ポリシー、およびルールは、実装のために他のコンポーネント(主に JCNR vRouter)に伝達されます。
たとえば、ファイアウォールフィルター(ACL)はコントローラでサポートされており、拒否ルールを使用して L2 アクセス リストを設定できます。コントローラは、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 に渡します。
-
ライセンス キー情報を格納します。
-
リリース23.2からBGPスピーカーとして機能し、他のBGPスピーカーとピア関係を確立してルーティング情報を交換します。
構成オプション
デプロイメント時に、 JCNR 構成をカスタマイズ できます。
導入後、 PyEZ で NETCONF プロトコルを使用してコントローラを設定することを推奨します。 SSH または NETCONF経由で接続できます。最後に、Kubernetesコマンドを使用して JCNRコントローラCLIにアクセスして 、クラウドネイティブルーターを構成することもできます。
JCNR vRouter
JCNR vRouterは、高パフォーマンスのデータパスコンポーネントです。これは、Linux ブリッジまたは Linux カーネルの Open vSwitch (OVS) モジュールの代替手段です。ユーザー空間プロセスとして実行され、データプレーン開発キット(DPDK)ライブラリと統合されています。vRouter ポッドは、vrouter-agent、vrouter-agent-dpdk、vrouter-telemetry-exporter の 3 つのコンテナで構成されています。
JCNR vRouterの機能:
-
レイヤー 3 仮想プライベート ネットワークでルーティングを実行します。
-
L2 転送を実行します。
-
高性能なDPDKベースのフォワーディングをサポートします。
-
JCNR-vRouterへのDPDKの統合
-
フォワーディングプレーンは、カーネルベースのフォワーディングよりも高速なフォワーディング機能を提供します。
-
フォワーディングプレーンは、カーネルベースのフォワーディングよりも拡張性に優れています。
-
次の NIC のサポート:
-
インテルE810(コロンビアビル)ファミリー
- インテルXL710(フォートビル)ファミリー
-
JCNR-CNI
JCNR-CNIは、ジュニパーが開発した新しいコンテナネットワークインターフェイス(CNI)です。JCNR-CNIは、アプリケーションポッドのネットワークインターフェイスをプロビジョニングするために各ノードにインストールされたKubernetes CNIプラグインです。ポッドの作成時に、Kubernetesはポッドインターフェイスの作成と設定をJCNR-CNIに委任します。JCNR-CNI は、JCNR コントローラおよび vRouter と対話して、DPDK インターフェイスを設定します。ポッドが削除されると、JCNR-CNIが呼び出され、Kubernetesおよびクラウドネイティブルーターコンポーネントにおけるポッドインターフェイス、構成、および関連する状態のプロビジョニングが解除されます。JCNR-CNIは、Multus CNIとともにセカンダリCNIとして機能し、ポッドインターフェイスを追加および設定します。
JCNR-CNIの機能:
-
以下のような Kubernetes ポッドのネットワーク タスクを管理します。
-
IP アドレスの割り当て。
-
MAC アドレスの割り当て。
-
Kubernetes クラスター内のポッドと vRouter 間のタグなしインターフェイス、アクセスインターフェイス、その他のインターフェイスの設定。
-
VLANサブインターフェイスを作成します。
-
L3インターフェイスの作成。
-
-
追加や削除などのポッド イベントに対して動作します。
-
cRPD 設定を生成します。
JCNR-CNI は、ポッドが使用するセカンダリ インターフェイスを管理します。YAML 形式のネットワーク接続定義 (NAD) ファイルの構成に基づいて、必要なインターフェイスを作成します。JCNR-CNI は、一部のインターフェースを最終的なロケーションまたは接続ポイントに渡す前に構成し、以下のような追加のインターフェース構成オプション用の API を提供します。
-
さまざまな種類のポッド インターフェイスをインスタンス化します。
-
DPDKデータプレーンを活用するポッド用のvirtioベースの高性能インターフェイスを作成します。
-
ポッドが Linux カーネル ネットワーク スタックを使用して通信できるようにする veth ペア インターフェイスを作成する。
-
アクセス モードまたはトランク モードでのポッド インターフェイスの作成。
-
ポッド インターフェイスをブリッジ ドメインと仮想ルーターに接続する。
-
動的 IP アドレス割り当て用の IPAM プラグインのサポート。
-
virtio インターフェースに一意のソケットインターフェースを割り当てる。
-
IP アドレスの割り当てや、Kubernetes クラスター内のポッドと vRouter 間のインターフェイスの設定など、ポッドでのネットワーク タスクの管理。
-
ポッド間およびポッド間ネットワークを含むネットワークへのポッドインターフェイスの接続。
-
パケット処理をオフロードするための vRouter との統合。
JCNR-CNIのメリット:
-
ポッドインターフェイス管理の改善
-
カスタマイズ可能な管理および監視機能
-
コントローラおよびvRouterコンポーネントとの緊密な統合によるパフォーマンスの向上
ポッド作成におけるJCNR-CNIの役割:
クラウドネイティブルーターで使用するポッドを作成すると、 kubelet と呼ばれるKubernetesコンポーネントがMultus CNIを呼び出して、ポッドネットワークとインターフェイスを設定します。Multus は pod.yaml ファイルの注釈セクションを読み取り、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 はデーモンセットとして動作します。