コンテナ化RPDとは
Junos®コンテナ化ルーティングプロトコルプロセス(cRPD)は、Linuxコンテナ化環境内でインスタンス化されたJunos OSルーティング機能のインスタンスです。cRPDは、ネットワークにクラウドネイティブルーティングを提供します。cRPDソフトウェアをDockerコンテナイメージとしてパッケージ化します。cRPDは、 図3に示すように、デバイス上のIS-IS、OSPF、BGPを使用してルーターの機能をサポートしています。
cRPDのメリット
-
導入時間の短縮:コンテナを使用して導入をスピードアップし、サービスの起動時間を数分から数秒に短縮します。
-
シームレスなアップグレード:最小限のサービス中断でソフトウェアをアップグレードします。
-
柔軟性 - ターゲットスケールをサポートするために、最小リソース要件で複数のcRPDインスタンスを起動します。
-
安定性:Linux 上で安定したルーティング ソフトウェアを提供します。
Linux 上の rpd の概要
Junos ルーティング プロトコル プロセス(rpd)は、ルーティング エンジン ソフトウェア内のソフトウェア プロセスです。rpd は、デバイス上で実行されるルーティング プロトコルを制御します。
ソフトウェア プロセスとして、rpd:
-
Linux ベースのルーティング プロトコル スタックの中心から動作します。
-
1つ以上のルーティングテーブルを維持し、すべてのルーティングプロトコルから学習したルーティング情報を統合します。
-
すべてのプロトコル メッセージ、ルーティング テーブルの更新を管理し、ルーティング ポリシーを実装します。
rpd アプリケーションは、以下の場合に使用できます。
-
ソフトウェア コンテナ上で実行します。cRPDアプリケーションは、コンテナ化されたルートリフレクタ(cRR)などのルーティングソリューションを可能にします。cRRサービスは独立して動作する必要があります。
-
管理用 mgd プロセス、設定用 CLI、リンクのライブ性検出用 BFD、PPMD(定期パケット管理プロセス)、プロトコル セッションの更新と対話します。
-
さまざまなルーティング プロトコルを使用してルートの状態を学習します。
-
ルーティングテーブルとも呼ばれる、ルーティング情報ベース(RIB)内のルーティング情報の完全なセットを維持します。
-
設定されたすべてのルーティングプロトコルを開始し、すべてのルーティングメッセージを処理します。rpdは、1つ以上のルーティングテーブルを維持し、ルーターがすべてのルーティングプロトコルから学習したルーティング情報を統合します。
-
ルーティング プロトコルとルーティング テーブル間を移動するルーティング情報を制御するルーティング ポリシーを実装します。ルーティング ポリシーを使用すると、情報の転送をフィルタリングおよび制限するとともに、特定のルートに関連付けられたプロパティを設定できます。
-
ローカル選択基準を満たすルートを、転送テーブルとも呼ばれる転送情報ベース(FIB)にダウンロードします。
-
ルーティング情報からネットワーク宛先のアクティブルートを決定し、これらのルートをルーティングエンジンの転送テーブルにプログラムします。
-
名前、アドレス、最大送信単位(MTU)設定、Netlinkメッセージによるリンクステータスなどのインターフェイス属性について学習します。
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は、カーネルとユーザースペースのプロセス間、および異なるユーザースペースプロセス間の通信に使用されるLinuxカーネルインターフェイスです。cRPDは、ユーザー空間プロセスの一例です。
Netlinkメッセージを使用すると、次のことができます。
-
rpd によって生成された FIB 状態を Linux カーネルでプログラムするか、インストールします。
-
mgd および CLI を使用して構成と管理を行います。
-
ppmd を使用してプロトコル セッションを維持します。
-
BFDを使用してライブ性を検出します。
cRPDでサポートされている機能
cRPDは、以下の機能をサポートしています。
-
Linuxコンテナ内のBGPルートリフレクタ(LXC)
-
BGP add-path、マルチパス、グレースフルリスタートヘルパーモード
-
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ライセンスの管理を参照してください。