Juniper NFX250 — разбор, начальная настройка(Часть 1)

Автор: | 23.01.2021

Мне попал в руки 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)

Подписаться
Уведомить о

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии