Juniper Cloud-Native Routerのコンポーネント
Juniper Cloud-Native Routerソリューションは、Cloud-Native Routerコントローラ、Cloud-Native Router vRouter、JCNR-CNIなどの複数のコンポーネントで構成されています。このトピックでは、Juniper Cloud-Native Routerのコンポーネントの概要を簡単に説明します。
Cloud-Native Routerのコンポーネント
Juniper Cloud-Native Routerは、主にCloud-Native Router Controllerコントロールプレーン、Cloud-Native Router vRouter DPDKフォワーディングプレーン、Kubernetes統合用のJCNR-CNIの3つのコンポーネントで構成されています。Cloud-Native Routerのすべてのコンポーネントはコンテナとして導入されます。
図1は、Kubernetesクラスタ内のJuniper Cloud-Native Routerのコンポーネントを示しています
Cloud-Native Routerコントローラ
Cloud-Native Routerコントローラは、Junosコンテナ化ルーティングプロトコルデーモン(cRPD)を実行するCloud-Native Routerソリューションのコントロールプレーンです。ステートフルセットとして実装されます。コントローラは、Cloud-Native Routerの他の要素と通信します。導入時にコントローラで設定した設定、ポリシー、およびルールは、実装のために他のコンポーネント(主にCloud-Native Router vRouter)に伝達されます。
たとえば、コントローラではファイアウォールフィルタ(ACL)がサポートされており、拒否ルールを使用してL2アクセスリストを設定できます。コントローラは、vRouterエージェントを介して設定情報をCloud-Native Router 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スピーカーとピア関係を確立してルーティング情報を交換します。
構成オプション
導入時に、 Cloud-Native Router 設定をカスタマイズ できます。
導入後、 PyEZ で NETCONF プロトコルを使用してコントローラを設定することをお勧めします。 SSH または NETCONF経由で接続できます。最後に、Kubernetesコマンドを使用して JCNRコントローラCLIにアクセスし 、Cloud-Native Routerを設定することもできます。
Cloud-Native Router vRouter
Cloud-Native Router vRouterは、高性能なデータパスコンポーネントです。これは、Linux ブリッジまたは Linux カーネルの Open vSwitch (OVS) モジュールの代替です。ユーザー空間プロセスとして実行され、データプレーン開発キット(DPDK)ライブラリと統合されています。vRouter Pod は、vrouter-agent、vrouter-agent-dpdk、vrouter-telemetry-exporter の 3 つのコンテナで構成されています。
Cloud-Native Router vRouterの機能:
-
レイヤー 3 仮想プライベート ネットワークでルーティングを実行します。
-
L2転送を実行します。
-
高性能なDPDKベースの転送をサポートします。
-
DPDKのJCNR-vRouterへの統合
-
フォワーディングプレーンは、カーネルベースのフォワーディングよりも高速なフォワーディング機能を提供します。
-
フォワーディングプレーンは、カーネルベースのフォワーディングよりも拡張性に優れています。
-
次のNICのサポート:
-
Intel E810(Columbiaville)ファミリー
- Intel XL710(Fortville)ファミリー
-
JCNR-CNI
JCNR-CNIは、ジュニパーが開発した新しいコンテナネットワークインターフェース(CNI)です。JCNR-CNIは、各ノードにインストールされるKubernetes CNIプラグインで、アプリケーションポッド用のネットワークインターフェースをプロビジョニングします。ポッド作成時に、Kubernetesはポッドインターフェイスの作成と設定をJCNR-CNIに委任します。JCNR-CNIは、Cloud-Native Routerコントローラおよび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 はデーモンセットとして実行されます。