Junos 노드 슬라이싱 설정 준비
이 섹션의 주제는 외부 서버 모델을 사용하여 설정된 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의 예에 따르면, em1, em2, 그리고 em3 x86 서버에는 각각 Linux 호스트, JDM 및 GNF의 관리에 사용되는 포트가 있습니다. p3p1 그리고 p3p2 각 서버에는 MX 시리즈 라우터의 컨트롤 보드에 연결된 두 개의 10Gbps 포트가 있습니다.
Junos Node Slicing set chassis network-slices 을 위해 컨트롤 보드에서 XGE 포트를 활성화하려면 또는 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용)
명령을 사용하여 show chassis ethernet-switch 이러한 XGE 포트를 보십시오. 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
정격 주파수에서 CPU 코어를 작동하고, 지터를 줄이고, 하이퍼스레딩을 사용하지 않도록 x86 서버 BIOS 시스템 프로파일을 설정하려면 서버 모델 및 BIOS 버전에 따라 설정이 다르므로 서버 제조업체에 문의하십시오.
이를 달성하기 위한 일반적인 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)에서 관리합니다. JDM에서는 각 x86 서버에서 CPU 코어 0과 1을 제외한 모든 CPU 코어를 Junos Node Slicing용으로 예약해야 하며, 사실상 이러한 코어는 다른 애플리케이션과 분리되어야 합니다. CPU 코어 2 및 3은 GNF 가상 디스크 및 네트워크 I/O 전용입니다. CPU 코어 4 이상은 GNF VM에 할당할 수 있습니다. 이러한 CPU 코어를 예약하려면 다음 절차에 설명된 대로 Linux GRUB 구성에서 매개 변수를 설정 isolcpus 해야 합니다.
RHEL(Red Hat Enterprise Linux) 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 문서의 프로세스 스케줄러에서 CPU 분리 섹션에 설명되어 있습니다. 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 파일을 편집하여 isolcpus 매개 변수를 변수 GRUB_CMDLINE_LINUX_DEFAULT에 추가합니다.
GRUB_CMDLINE_LINUX_DEFAULT= "intel_pstate=disable processor.ignore_ppc=1
isolcpus=4-23"변경 사항을 업데이트하려면 을 실행
update-grub합니다.서버를 재부팅합니다.
Linux 명령
cat /proc/cmdline의 출력을 확인하여 매개 변수가isolcpus설정되었는지 확인합니다.
x86 서버용 인텔 x710 NIC 드라이버 업데이트
인텔 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
...
드라이버 업데이트에 대한 지침은 인텔 지원 페이지를 참조하십시오.
호스트 OS를 업데이트하면 인텔 X710 NIC 드라이버가 대체될 수 있습니다. 따라서 인텔 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
인텔 X710 NIC 드라이버를 업데이트한 후 호스트 OS 로그에 다음 메시지가 나타날 수 있습니다.
"i40e: module verification failed: signature and/or required key missing - tainting kernel"
이 메시지를 무시하십시오. 업데이트된 NIC 드라이버 모듈이 호스트 OS와 함께 패키지된 드라이버의 기본 버전을 대체했기 때문에 나타납니다.
또한보십시오
JDM용 추가 패키지 설치
x86 서버에는 RHEL(Red Hat Enterprise Linux) 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의 경우 or
dnf명령을 사용하여 패키지를 설치하는 것이 좋습니다.yum
For Ubuntu 24.04에서 다음 패키지를 설치합니다.
-
파이썬-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 서버에 연결되어 있는지 확인합니다.
MX 시리즈 라우터에서 두 개의 x86 서버와 두 라우팅 엔진의 전원을 켭니다.
두 x86 서버에서 Linux 호스트 관리 포트를 확인합니다. 예를 들면 .
em1JDM 및 GNF 관리 포트에 할당할 포트를 식별합니다. 예를 들어 및
em2em3.MX 시리즈 라우터의 컨트롤 보드에 연결된 두 개의 10Gbps 포트를 식별합니다. 예를 들어 및
p3p1p3p2.