コンテナ化されたRPDとは?
cRPDは、ネットワークにクラウドネイティブなルーティングを提供します。cRPDソフトウェアをDockerコンテナイメージとしてパッケージ化します。cRPDは、 図3に示すように、デバイス上でIS-IS、OSPF、BGPを使用してルーター機能をサポートします。
cRPDのメリット
-
デプロイ時間の短縮 - コンテナーを使用してサービスの起動時間を数分から数秒に短縮することで、デプロイを高速化します。
-
シームレスなアップグレード:サービスの中断を最小限に抑えてソフトウェアをアップグレードします。
-
柔軟性—ターゲット規模をサポートするために、最小限のリソース要件で複数のcRPDインスタンスを起動します。
-
安定性 - Linux 上で安定したルーティング ソフトウェアを提供します。
Linuxでのrpdの概要
Junos ルーティング プロトコル プロセス(rpd)は、ルーティングエンジン ソフトウェア内のソフトウェア プロセスです。rpd は、デバイス上で実行されるルーティングプロトコルを制御します。
ソフトウェアプロセスとして、rpdは以下を実行します。
-
Linuxベースのルーティングプロトコルスタックの中心から動作します。
-
すべてのルーティング プロトコルから学習したルーティング情報を統合する 1 つ以上のルーティング テーブルを維持します。
-
すべてのプロトコルメッセージを管理し、ルーティングテーブルを更新し、ルーティングポリシーを実装します。
でのRPD
rpd アプリケーションを使用すると、次のことができます。
-
ソフトウェアコンテナ上で実行します。cRPDアプリケーションは、コンテナ化されたルートリフレクタ(cRR)などのルーティングソリューションを可能にします。cRR サービスは独立して動作する必要があります。
-
管理のためのmgdプロセス、設定のためのCLI、リンクの活性を検出するためのBFD、定期的なパケット管理プロセス(PPMD)、およびプロトコルセッションの更新と対話します。
-
さまざまなルーティングプロトコルを使用してルートの状態を学習します。
-
ルーティング情報の完全なセットは、ルーティング情報ベース(RIB、ルーティングテーブルとも呼ばれる)に保管します。
-
設定されたすべてのルーティングプロトコルを開始し、すべてのルーティングメッセージを処理します。rpd は 1 つ以上のルーティングテーブルを維持しますが、これはルーターがすべてのルーティングプロトコルから学習したルーティング情報を統合します。
-
ルーティングプロトコルとルーティングテーブルの間を移動するルーティング情報を制御するルーティングポリシーを実装します。ルーティングポリシーを使用すると、情報の転送をフィルタリングおよび制限したり、特定のルートに関連するプロパティを設定したりできます。
-
ローカル選択基準を満たすルートを、転送テーブルとも呼ばれる転送情報ベース(FIB)にダウンロードします。
-
ルーティング情報からネットワーク宛先のアクティブなルートを決定し、これらのルートをルーティングエンジンの転送テーブルにプログラムします。
-
Netlinkメッセージを通じて、名前、アドレス、最大送信単位(MTU)設定、リンクステータスなどのインターフェイス属性を学習します。
Docker の概要
cRPDは、DockerをサポートするすべてのLinuxディストリビューションシステムで実行されます。
Dockerは、任意のLinuxサーバーで実行できる仮想コンテナーを作成、管理、および逆アセンブルするために使用できるオープンソースのソフトウェアプラットフォームです。Dockerは、アプリケーションをコンテナにパッケージ化します。これらのコンテナーは、任意の Linux OS に移植して使用できます。コンテナは、アプリケーションのOSレベルの仮想化を提供します。
コンテナーは仮想マシン (VM) ではありません。専用CPU、メモリ、I/O、ネットワークで環境を分離します。
コンテナの利点
-
分離による効率の向上—コンテナは、グループや名前空間の分離などのホストOS Linuxカーネル機能を使用して、複数のコンテナを同じLinuxホストOS上で分離して実行できるようにします。コンテナ内のアプリケーションは、LinuxホストのOSのカーネルを共有するため、メモリが少なくなります。
-
スピンアップ(起動)速度の向上—コンテナの起動時間は、VMに比べて短くなります。したがって、コンテナーを使用して、アプリケーションを迅速かつ効率的にインストール、実行、およびアップグレードできます。
図 2 は、一般的な Docker コンテナー環境の概要を示しています。
cRPDの仕組み
Docker を起動すると、既定のブリッジ ネットワーク ( ブリッジとも呼ばれます) が自動的に作成され、特に指定がない限りコンテナーが接続します。このブリッジ ネットワークを使用すると、動的ポートを割り当てることなく、同じホスト上で複数のコンテナーを実行できます。
ブリッジを使用すると、同じブリッジ ネットワークに接続されたコンテナが通信できると同時に、ブリッジ ネットワークに接続されていないコンテナから分離されます。
ブリッジ モードの場合:
-
コンテナは、ブリッジを介してホストネットワークスタックに接続します。
-
複数のコンテナが同じブリッジに接続し、相互に通信します。
-
ブリッジは、ホストOSのネットワークインターフェイスに接続することで、外部との通信を可能にします。
コンテナを使用してRPDアプリケーションをデプロイすると、FIBは、基盤となるOSカーネルによって学習されたネットワークインターフェイスがLinuxコンテナ内のRPDに送信されることを公開します。RPD は、すべてのネットワーク インターフェイスについて学習し、すべてのネットワーク インターフェイスのルート状態を追加します。追加のDockerコンテナがシステムで実行されている場合、ホスト上で直接実行されているすべてのコンテナとアプリケーションは、同じネットワークインターフェイスと状態のセットにアクセスできます。cRPDは、ローカルルート選択基準を満たすルートをFIBに転送します。
ルートリフレクタ
cRPDを導入して、BGPルートリフレクションなどのコントロールプレーンのみのサービスを提供することができます。
cRRは、ネットワーク上の別のサーバーハードウェアでホストされています。アプリケーションは、ルート リフレクション サービスを使用して学習した到達可能性情報を使用します。ルートリフレクションネットワークサービスは、アプリケーションをホストする同じハードウェアやコントローラに依存することなく、独立して動作する必要があります。
ルーティングエンジン カーネル
ルーティングエンジン ソフトウェアは、ルーターの機能を制御する複数のソフトウェア プロセスと、すべてのプロセス間の通信を可能にするカーネルで構成されています。
ルーティングエンジンカーネルは、以下を提供します。
-
ルーティング テーブルとルーティングエンジンの転送テーブル間のリンク。
-
パケット転送エンジンとの通信。カーネルは、パケット転送エンジンの転送テーブルのコピーを、ルーティングエンジンのプライマリコピーと同期させます。
ホスト Linux カーネルは FIB を保存します。パケット転送に関するすべてのルートとネクストホップ情報が含まれています。
rpd は Linux 上でネイティブに動作し、Netlink を使用してプログラムのルート情報を Linux カーネルと共有します。Netlinkは、カーネルとcRPDなどのユーザー空間プロセス間の通信を容易にします。
Netlink メッセージは、次の目的で使用できます。
-
rpd によって生成された FIB 状態を Linux カーネルにプログラムまたはインストールします。
-
設定と管理のためにmgdおよびCLIと対話します。
-
ppmd を使用してプロトコルセッションを維持します。
-
BFD を使用して生体状態を検出します。
cRPDでサポートされている機能
cRPDは、以下の機能をサポートしています。
-
Linuxコンテナ(LXC)のBGPルートリフレクタ
-
BGP 追加パス、マルチパス、グレースルリスタートヘルパーモード
-
BGP、OSPF、OSPFv3、IS-IS、および静的プロトコル
-
BMP、BFD、および Linux FIB
-
等価コストマルチパス(ECMP)
-
プログラム可能なRPD(PRPD)向けJuniper Extension Toolkit(JET)
-
Junos OS CLI
-
オープンインターフェイスNETCONFとSSHによる管理
-
IPv4 および IPv6 ルーティング
-
MPLS ルーティング
ライセンス
cRPDソフトウェア機能をアクティブ化するには、ライセンスが必要です。cRPDライセンスの詳細については、 cRPDでサポートされている機能、 cRPDのフレックスライセンス、および cRPDライセンスの管理を参照してください。