- Как устроен Jujniper NFX250?
- Начальная настройка Juniper NFX250
- ASIC используемый в NFX250
- Можно ли сделать роутер на JCP ?
- Тест производительности
Мне попал в руки Juniper NFX250, будем его разбирать и разбираться что можно на нем запустить.
Снимаю крышку, что бы посмотреть что внутри:
Радиаторы снимать не стал, какой чип под ними прячется мы узнаем из консоли.
Итак, мы видим мини сервер с интегрированным пакетным процессором от Broadcom.
На данной модели — Juniper NFX250 ATT LS1 установлены:
CPU — 4 core Intel(R) Pentium(R) CPU D1517 @ 1.60GHz
RAM — 16Gb DDR4
SSD — 100Gb
Судя по всему, добавить памяти или заменить диск — не составит труда. Самое больное место — CPU. Он распаян на плату и заменить его не получится.
Тут можно прочитать спецификацию на NFX250.
Как устроен Juniper NFX250?
Под капотом — Гипервизор на Ubuntu 14.0.4
Виртуальные машины запускаются под KVM.
Для работы системы используются две виртуалки, пользовательские образы называются VNF:
JDM (Juniper Device Manager) — для управления ресурсами и виртуальными машинами, своеобразная адаптация virsh под JunOS.
VM называется «jdm».
JCP (Juniper Control Plane ) — инструмент для настройки Data Plane — портов, вланов итд.
VM называется «vjunos0».
VNF ( Virtualized Network Function) — виртуальные машины/сервисы — можно запустить что угодно, лишь бы хватило ресурсов.
Например — vMX, vSRX, бесплатные FRR, Vyos итд итп.
Начальная настройка Juniper NFX250
Перед началом тестов, заливаю чистый JUNOS 18.4R3.3
Приступим к первому запуску.
Начнем с настройки менеджмента.
Я буду использовать порт MGMT на лицевой панели. Это порт Out-of-Band менеджмента, он подключен к общему бриджу управления. К этому же бриджу подключен порт JDM jmgmt0.
Первое, что мы увидим в консоли — JDM. Посмотрим список запущенных виртуалок:
root@jdm:~# cli
{master:0}
root@jdm> show virtual-network-functions
ID Name State Liveliness
--------------------------------------------------------------------------------
2 vjunos0 Running alive
11525 jdm Running alive
{master:0}
root@jdm>
Настроим на JDM менеджмент, включив на нем DHCP и задав пароль для root. По дефолту на jmgmt0 настроен адрес 12.213.64.65/26:
root@jdm# show interface jmgmt0
vlan-id 0 {
family {
inet {
address 12.213.64.65/26;
}
}
}
root@jdm# delete interface jmgmt0
{master:0}[edit]
root@jdm# set interface jmgmt0 vlan-id 0 family inet dhcp
{master:0}[edit]
root@jdm# set system root-authentication plain-text-password
New password:xxxxx
Retype new password:xxxxx
{master:0}[edit]
root@jdm# set system services ssh root-login allow
{master:0}[edit]
root@jdm# commit
commit complete
{master:0}[edit]
root@jdm# quit
Exiting configuration mode
{master:0}
root@jdm> show interface jmgmt0
JDM interface statistics
------------------------
Interface jmgmt0:
--------------------------------------------------------------
Link encap:Ethernet HWaddr b0:33:a6:33:f3:cb
inet addr:10.0.17.193 Bcast:10.0.17.255 Mask:255.255.255.0
Ок, интерфейс менеджмента получил адрес и теперь мы можем зайти по SSH. Перейдем к настройке менеджмента JCP. По дефолту на em0 настроен адрес 12.213.64.66/26:
root@jdm> ssh jdm-sysuser@vjunos0
Last login: Tue Jan 12 10:37:41 2021 from 192.0.2.254
--- JUNOS 18.4R3.3 Kernel 64-bit FLEX JNPR-11.0-20191211.fa5e90e_buil
{master:0}
jdm-sysuser> configure
Entering configuration mode
{master:0}[edit]
jdm-sysuser# set system root-authentication plain-text-password
New password:xxxxx
Retype new password:xxxxx
{master:0}[edit]
jdm-sysuser# set system services ssh root-login allow
{master:0}[edit]
jdm-sysuser# delete interfaces em0
jdm-sysuser# set interfaces em0 unit 0 family inet dhcp
{master:0}[edit]
jdm-sysuser# commit
configuration check succeeds
commit complete
{master:0}
jdm-sysuser> show dhcp client binding
IP address Hardware address Expires State Interface
10.0.17.174 b0:33:a6:33:f3:b8 86391 BOUND em0.0
Менеджмент JCP так же получил адрес по DHCP.
ASIC используемый в NFX250
Менеджмент настроен, можно провалиться в JCP по SSH и посмотреть какой чип прячется под радиатором.
{master:0}
root> start shell
root@:RE:0% vty fpc0
Switching platform (1599 Mhz Pentium processor, 255MB memory, 0KB flash)
FPC0( vty)# set dcbcm diag
Boot flags: Probe NOT performed
Boot flags: Cold boot
Boot flags: initialization scripts NOT loaded
BCM.0>
BCM.0> show unit
Unit 0 chip BCM56063_A0 (current)
BCM.0>
BCM.0> show params
#######OMMITED############
driver BCM53400_A0 (greyhound)
unit 0:
pci device b063 rev 01
cmc used by pci CMC0
driver type 132 (BCM53400_A0) group 90 (BCM53400)
chip xgs xgs3_switch xgs_switch
#######OMMITED############
####DO NOT USE "Exit command here", hit ctrl+c instead#####
BCM.0> exit on signal 2
root@:RE:0%
Судя по выводу из консоли PFE, под радиатором прячется чип от Broadcom BCM56063.
Открытого Datasheet на этот чип найти не удалось.
Можно ли сделать роутер на JCP ?
Поскольку JCP работает на Junos, было интересно, можно ли использовать его как бордер для принятия Full View.
При попытке залить в него BGP маршруты у платформы кончается FIB.
Jan 13 14:21:05 fpc0 brcm_rt_ip_uc_lpm_install:1372(LPM route add failed) Reason : Table full unit 0
Jan 13 14:21:05 fpc0 brcm_rt_ip_uc_entry_install:1230brcm_rt_ip_uc_entry_install Error: lpm ip route install failed vrf 0 ip 1.20.128/18 nh-swidx 1734 nh-hwidx 100007
В JCP ограничение в 1000 lpm маршрутов:
Смена профиля на l3-profile на ситуацию никак не влияет:
root> show chassis forwarding-options
re0:
--------------------------------------------------------------------------
UFT Configuration:
l2-profile-three.(default)
num-65-127-prefix = 1K
{master:0}
root> show chassis forwarding-options
re0:
--------------------------------------------------------------------------
UFT Configuration:
l3-profile.
num-65-127-prefix = 1K
{master:0}
root> show pfe route summary hw
Slot 0
Unit: 0
Profile active: l3-profile
Type Max Used Free % free
----------------------------------------------------
IPv4 Host 4096 7 4085 99.73
IPv4 LPM 1024 3 1019 99.51
IPv4 Mcast 2048 0 2043 99.76
IPv6 Host 2048 2 2043 99.76
IPv6 LPM( 64) 512 1 510 99.61
IPv6 LPM( >64) 0 0 0 0.00
IPv6 Mcast 1024 0 1022 99.80
Ок, использовать JCP как обычный MX не получится )
Мы можем не инсталлировать маршруты в FIB, может быть полезно в следующих сценариях:
— Использовать JCP как Route-Server
— Принять и отдать Full View (при условии, что апстрим только один)
Попробуем :
[edit interfaces xe-0/0/13 unit 0]
+ family inet {
+ address 172.16.23.2/30;
+ }
[edit protocols bgp]
+ group test {
+ type external;
+ export reject;
+ local-as 65234;
+ neighbor 172.16.23.1 {
+ family inet {
+ unicast {
+ no-install;
+ }
+ }
+ peer-as 65000;
+ }
+ }
При такой конфигурации сессия поднимается, маршруты попадают только в RIB. Заливка полной таблицы (830k префиксов) заняла 4 минуты.
root> show bgp summary
Threading mode: BGP I/O
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
830103 830102 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
172.16.23.1 65000 139620 15 0 1 5:45 Establ
inet.0: 830102/830103/830103/0
Свободной памяти осталось 7%:
re0:
--------------------------------------------------------------------------
System memory usage distribution:
Total memory: 476164 Kbytes (100%)
Reserved memory: 13388 Kbytes ( 2%)
Wired memory: 132664 Kbytes ( 27%)
Active memory: 267656 Kbytes ( 56%)
Inactive memory: 27840 Kbytes ( 5%)
Cache memory: 0 Kbytes ( 0%)
Free memory: 34612 Kbytes ( 7%)
Настройки памяти виртуалки JCP можно отредактировать из гипервизора:
root@jdm:~# ssh hypervisor
Last login: Wed Jan 13 09:27:25 2021 from 192.0.2.254
root@local-node:/# virsh list
Id Name State
----------------------------------------------------
2 vjunos0 running
root@local-node:/# virsh edit vjunos0
Переходим к практическим тестам.
Тест производительности NFX250
Для NFX250-S1 заявлены следующие характеристики:
Managed Secure Router*** 2 Gbps
Managed Security*** 2 Gbps
IPsec*** 500 Mbps
*** Maximum throughput mode
У нас NFX250 ATT LS1, в нем на 2 ядра меньше.
Попробуем протестировать чип, пропустив трафик через JCP.
Проводим эталонный тест, соединив сервера напрямую:
# iperf3 -c 10.10.0.2 -p 5201
Connecting to host 10.10.0.3, port 5201
[ 4] local 10.10.0.2 port 42376 connected to 10.10.0.3 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.10 GBytes 9.42 Gbits/sec 0 482 KBytes
#######OMMITED############
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 11.0 GBytes 9.41 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 11.0 GBytes 9.41 Gbits/sec receiver
Схема теста:
Теперь запускаю тест через JCP:
[s1]# iperf3 -c 10.223.0.2 -p 5201
Connecting to host 10.223.0.2, port 5201
[ 4] local 10.222.0.2 port 58338 connected to 10.223.0.2 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.10 GBytes 9.41 Gbits/sec 0 464 KBytes
#######OMMITED############
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 11.0 GBytes 9.41 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 11.0 GBytes 9.41 Gbits/sec receiver
[s1]# iperf3 -c 10.223.0.2 -p 5201 -R
Connecting to host 10.223.0.2, port 5201
Reverse mode, remote host 10.223.0.2 is sending
[ 4] local 10.222.0.2 port 58338 connected to 10.223.0.2 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 1.10 GBytes 9.41 Gbits/sec
#######OMMITED############
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 11.0 GBytes 9.42 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 11.0 GBytes 9.41 Gbits/sec receiver
На выходе получилось 9,41Gbps Full duplex.
Этот тест показывает только производительность встроенного коммутатора (PFE).
В следующей части попробуем развернуть виртуальные машины с VyOS в качестве VNF и повторить тесты.
Juniper NFX250 — установка VyOS, тест производительности (Часть 2)