Junos Node Slicing セットアップの準備
このセクションのトピックは、外部サーバーモデルを使用してセットアップされたJunos Node Slicingにのみ適用されます。シャーシ内 Junos Node Slicingについては、 シャーシ内モードで動作するようにMXシリーズルーターを設定するに進んでください。
Junos Node Slicing(外部サーバーモデル)を設定する前に、サーバーとルーターの接続、追加パッケージのインストール、x86サーバーLinux GRUBの設定、x86サーバーCPUのBIOSの設定など、いくつかの準備手順を実行する必要があります。
サーバーとルーターの接続
Junos Node Slicingを設定するには、外部x86サーバーのペアをMXシリーズルーターに直接接続する必要があります。各サーバーには、Linux ホスト用の管理ポートの他に、JDM および GNF VM のそれぞれ管理接続を提供するための 2 つの追加ポートと、MXシリーズ ルーターに接続するための 2 つのポートが必要です。
-
MXシリーズルーターでJunos Node Slicingが有効になっている場合は、ループバックケーブルを外部CBポートに接続しないでください。また、外部 CB ポートがもう一方の CB の外部ポートに接続されていないことを確認します。
-
ホストサーバーをSSHブルートフォース攻撃から守るには、ホストサーバーにIPtablesルールを追加することをお勧めします。以下に例を示します。
iptables -N SSH_CONNECTIONS_LIMIT iptables -A INPUT -i jmgmt0 -p tcp -m tcp --dport 22 -m state --state NEW -j SSH_CONNECTIONS_LIMIT iptables -A SSH_CONNECTIONS_LIMIT -m recent --set --name SSH --rsource iptables -A SSH_CONNECTIONS_LIMIT -m recent --update --seconds 120 --hitcount 10 --name SSH --rsource -j DROP iptables -A SSH_CONNECTIONS_LIMIT -j ACCEPT
上記の例のルールは、受信SSH接続のレート制限に使用されます。これにより、特定の回数のSSH試行が行われた場合、一定期間、リモートIPからの接続をブロックすることができます。上記の例のように、10回試行すると、リモートIPからの接続が120秒間ブロックされます。
図1 は、MX2020ルーターがx86外部サーバーのペアに接続されている方法を示しています。
図 1 の例によると、x86 サーバー上の em1、em2、em3 は、それぞれ Linux ホスト、JDM、GNF の管理に使用されるポートです。各サーバーの p3p1 と p3p2 は、MXシリーズ ルーター のコントロールボードに接続された 2 つの 10 Gbps ポートです。
Junos Node SlicingのコントロールボードでXGEポートを有効にするには、 set chassis network-slices または set chassis network-slices guest-network-functionsを設定する必要があります。
サーバー上のインターフェイス名( em1など) p3p1 は、サーバーのハードウェア設定によって異なる場合があります。
図1に示したMXシリーズルーターコントロールボード(CB)のXGEポートの詳細については、以下を参照してください。
-
SCBE2-MXの説明 (MX960およびMX480用)
注:XGE ポート番号は SCBE2 にラベル付けされていません。垂直方向のSCBE2では、上部ポートはXGE-0、下部ポートはXGE-1です。水平方向のSCBE2では、左側のポートはXGE-0、右側のポートはXGE-1です。
-
REMX2K-X8-64GおよびREMX2K-X8-64G-LT CB-REの説明 (MX2010およびMX2020用)
これらのXGEポートを表示するには、 show chassis ethernet-switch コマンドを使用します。MX960のコマンド出力で、ポート番号 24 と 26 を参照して、SCBE2でこれらのポートを表示します。MX2010とMX2020のコマンド出力で、ポート番号 26 と 27 を参照して、コントロールボード-ルーティングエンジン(CB-RE)でこれらのポートを表示します。
x86サーバーCPUのBIOS設定
Junos Node Slicingでは、x86サーバーCPUのBIOSを次のように設定する必要があります。
ハイパースレッディングは無効です。
CPU コアは常に定格周波数で動作します。
CPUコアは、C状態の使用を制限することでジッターを低減するように設定されています。
サーバー上のCPUコアの定格周波数を確認するには、Linuxホストコマンド lscpuを実行し、フィールド Model nameの値を確認します。次の例を参照してください。
Linux server0:~# lscpu
..
Model name: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
..
CPUコアが現在実行されている頻度を確認するには、Linuxホストコマンド grep MHz /proc/cpuinfo を実行し、各CPUコアの値を確認します。
CPU コアを定格周波数で動作するように BIOS が設定されているサーバーでは、次の例に示すように、CPU コアの観測値はすべて定格周波数と一致します (またはそれに非常に近い)。
Linux server0:~# grep MHz /proc/cpuinfo
…
cpu MHz : 2499.902
cpu MHz : 2500.000
cpu MHz : 2500.000
cpu MHz : 2499.902
…
CPU コアを定格周波数で動作させる BIOS が設定されていないサーバーでは、CPU コアの観測値が定格周波数と一致せず、値が時間とともに変化することもあります (これはコマンドを再実行することで確認できます)。
Linux server0:~# grep MHz /proc/cpuinfo
…
cpu MHz : 1200.562
cpu MHz : 1245.468
cpu MHz : 1217.625
cpu MHz : 1214.156
x86 サーバーの BIOS システムプロファイルで CPU コアを定格周波数で動作させ、ジッターを低減し、ハイパースレッディングを無効にするように設定するには、サーバーの製造元に問い合わせてください。
これを実現するための一般的なBIOSシステムプロファイル設定は次のとおりです。
Logical processor: を無効に設定します。CPU power management: を [最大パフォーマンス] に設定します。Memory frequency: を [最大パフォーマンス] に設定します。Turbo boost: を無効に設定します。C-states and C1E state: を無効に設定します。Energy efficient policy: パフォーマンスに設定されます。Monitor/Mwait: を無効に設定します。
これらの値を設定するには、カスタムBIOSシステムプロファイルが必要になる場合があります。
x86サーバーLinux GRUB構成
Junos Node Slicingでは、各GNF VMに専用のCPUコアが割り当てられます。この割り当ては、ジュニパーデバイスマネージャー(JDM)によって管理されます。各x86サーバーでJDMでは、CPUコア0と1以外のすべてのCPUコアをJunos Node Slicing用に予約する必要があり、事実上、これらのコアを他のアプリケーションから分離する必要があります。CPU コア 2 および 3 は、GNF 仮想ディスクとネットワーク I/O 専用です。CPU コア 4 以上は、GNF VM に割り当てることができます。これらのCPUコアを予約するには、次の手順で説明されているように、Linux GRUB設定で isolcpus パラメーターを設定する必要があります。
Red Hat Enterprise Linux (RHEL) 7.3 を実行している x86 サーバーの場合は、以下の手順を実行します。
x86サーバーのCPUコア数を決定します。 x86 サーバー CPU BIOS 設定で説明されているように、ハイパースレッディングがすでに無効になっていることを確認します。次の例に示すように、Linuxコマンド
lscpuを使用して、CPUコアの総数を求めることができます。Linux server0:~#
lscpu… Cores per socket: 12 Sockets: 2 …ここには、24コア(12 x 2)があります。CPU コアには、コア 0 からコア 23 までの番号が付けられています。
この例では、
isolcpusパラメーターを「isolcpus=4-23」に設定する必要があります(GNF VMで使用するために、コア0、1、2、3以外のすべてのCPUコアを分離します)。isolcpusパラメーターが 'isolcpus=4-23' に設定されている理由は次のとおりです。各x86サーバーで、JDMでは、CPUコア0と1以外のすべてのCPUコアをJunos Node Slicing用に予約する必要があります。
CPU コア 2 と 3 は、GNF 仮想ディスクとネットワーク I/O 専用です。
注:以前は、
isolcpusパラメータ「isolcpus=2-23」が使用されていました。これは「isolcpus=4-23」に更新されました。詳細については、「 KB35301」を参照してください。Linux GRUB 設定ファイルで
isolcpusパラメーターを設定するには、ホスト OS バージョンに固有の手順に従います。RHEL 7 の場合、手順については、この Red Hat ドキュメントの Isolating CPU from the process scheduler のセクションで説明されています。RHEL 9 の場合、カーネルコマンドラインの変更に関する情報は、この Red Hat ドキュメントで説明されています。手順の概要は次のとおりです。
次の例に示すように、Linux GRUB ファイル /etc/default/grub を編集して、変数 GRUB_CMDLINE_LINUX に
isolcpusパラメーターを追加します。GRUB_CMDLINE_LINUX= "crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
isolcpus=4-23”Linuxシェルコマンド
grub2-mkconfigを実行して、以下に示すように更新されたGRUBファイルを生成します。レガシーBIOSを使用している場合は、次のコマンドを発行します。
# grub2-mkconfig -o /boot/grub2/grub.cfgUEFIを使用している場合は、次のコマンドを発行します。
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgRHEL 9.3 以降では、レガシー BIOS または UEFI システムのいずれかに対して次のコマンドを発行します。
# grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdlinex86サーバーを再起動します。
次の例に示すように、Linuxコマンド
cat /proc/cmdlineの出力を確認して、isolcpusパラメーターが設定されたことを確認します。#
cat /proc/cmdlineBOOT_IMAGE=/vmlinuz-3.10.0-327.36.3.el7.x86_64 … quiet isolcpus=4-23
Ubuntu 24.04を実行しているx86サーバーの場合は、次の手順を実行します。
x86サーバーのCPUコア数を決定します。x86 サーバー CPU BIOS 設定で説明されているように、ハイパースレッディングがすでに無効になっていることを確認します。Linuxコマンド
lscpuを使用して、CPUコアの総数を検索できます。以下の例に示すように、/etc/default/grubファイルを編集して、変数GRUB_CMDLINE_LINUX_DEFAULTにisolcpusパラメーターを追加します。
GRUB_CMDLINE_LINUX_DEFAULT= "intel_pstate=disable processor.ignore_ppc=1
isolcpus=4-23"変更を更新するには、
update-grubを実行します。サーバーを再起動します。
Linuxコマンド
cat /proc/cmdlineの出力を確認して、isolcpusパラメーターが設定されたことを確認します。
x86サーバー用Intel x710 NICドライバーのアップデート
Intel X710 NICを使用している場合は、x86サーバーに最新のドライバー(2.4.10以降)がインストールされていること、およびX710 NICファームウェアバージョンが18.5.17以降であることを確認してください。
まず、サーバー上のX710 NICインターフェイスを特定する必要があります。たとえば、これは p3p1です。
Linuxコマンド ethtool -i interfaceを実行して、NICドライバーのバージョンを確認できます。次の例を参照してください。
root@Linux server0# ethtool -i p3p1
driver: i40e
version: 2.4.10
firmware-version: 5.05 0x80002899 18.5.17
...
ドライバーのアップデート手順については、 Intelサポートページ を参照してください。
ホストOSをアップデートすると、Intel X710 NICドライバーが置き換えられる場合があります。したがって、Intel X710 NICドライバーを更新する前に、ホストOSが最新であることを確認してください。
ドライバーをビルドするには、次のパッケージが必要です。
RedHatの場合:
カーネル開発
開発ツール
Ubuntuの場合:
メーカー
GCC
RedHat を使用している場合は、以下のコマンドを実行してパッケージをインストールします。
root@Linux server0#yum install kernel-develroot@Linux server0#yum group install "Development Tools"
Ubuntu を使用している場合は、次のコマンドを実行してパッケージをインストールします。
root@Linux server0#apt-get install makeroot@Linux server0#apt-get install gcc
Intel X710 NICドライバーを更新した後、ホストOSログに次のメッセージが表示される場合があります。
"i40e: module verification failed: signature and/or required key missing - tainting kernel"
このメッセージを無視してください。これは、更新された NIC ドライバー モジュールが、ホスト OS にパッケージ化されたドライバーの基本バージョンに取って代わられたために現れます。
関連項目
JDM用の追加パッケージのインストール
x86サーバーには、Red Hat Enterprise Linux (RHEL) 7.3、(RHEL) 9.4、またはUbuntu 24.04 LTSがインストールされている必要があります。
x86サーバーには、仮想化パッケージがインストールされている必要があります。
RHEL 9.4 の場合は、podman および containernetworking-plugins がインストールされていることを確認します。そうでない場合は、DNF ユーティリティーを使用して、 Red Hat カスタマーポータルからダウンロードできる以下の追加パッケージをインストールします。
-
ポッドマン
-
コンテナネットワークプラグイン
RHEL 7.3 の場合は、 Red Hat カスタマーポータルからダウンロードできる以下の追加パッケージをインストールします。
-
python-psutil-1.2.1-1.el7.x86_64.rpm
-
net-snmp-5.7.2-24.el7.x86_64.rpm
-
net-snmp-libs-5.7.2-24.el7.x86_64.rpm
-
libvirt-snmp-0.0.3-5.el7.x86_64.rpm
Junos OS リリース 17.4R1 以前のみ、および 18.1R1 の場合(RHEL 7.3 を実行している場合は、以下の追加パッケージもインストールしてください)。
-
libstdc++-4.8.5-11.el7.i686.rpm
-
表示されているパッケージのバージョン番号は最小バージョンです。新しいバージョンは、最新の RHEL 7.3 および RHEL 9.4 パッチで利用可能になる場合があります。
-
libstdc++ パッケージ拡張
.i686は、それが 32 ビットパッケージであることを示しています。 -
RHEL の場合は、
yumまたはdnfコマンドを使用してパッケージをインストールすることをお勧めします。
For Ubuntu 24.04で、以下のパッケージをインストールします。
-
python-psutil
Junos OSリリース17.4R1以前、および18.1R1の場合のみ、Ubuntuを実行している場合は、以下の追加パッケージもインストールします。
-
libstdc++6:i386
-
Ubuntu の場合は、
apt-getコマンドを使用して、これらのパッケージの最新バージョンをインストールできます。たとえば、次のようにします。-
コマンド
apt-get install python-psutil、最新バージョンのpython-psutilパッケージをインストールします。 -
コマンドは、最新バージョンの
libstdc++6パッケージをインストールするようにapt-get install libstdc++6:i386します(拡張子:i386は、インストールされるパッケージが32ビットバージョンであることを示しています)。
-
サーバーとルーター間の接続を完了する
JDMのインストールを開始する前に、以下の手順を実行します。
サーバーとルーターの接続で説明されているように、MXシリーズルーターがx86サーバーに接続されていることを確認します。
2台のx86サーバーとMXシリーズルーターの両方のルーティングエンジンの電源を入れます。
両方のx86サーバー上のLinuxホスト管理ポートを特定します。例えば、
em1です。JDMおよびGNF管理ポートに割り当てるポートを特定します。例えば、
em2とem3です。MXシリーズルーターのコントロールボードに接続されている2つの10Gbpsポートを特定します。例えば、
p3p1とp3p2です。