B4COM... что ты такое?
В чате как-то просили дать обзор на оборудование B4COM, и вот дошли руки написать что-то.
Постарался сделать максимально объективно, без всяких оценок. Всё, что я буду использовать в статье, имеет открытые источники и является всего лишь моим мнением.
Общая информация
B4COM TECH — компания, зарегистрированная в РФ, занимается разработкой и производством телекоммуникационного оборудования. В ассортименте есть как коммутаторы, так и маршрутизаторы.
Коммутаторы бывают для различных задач, с разной пропускной способностью и портовой емкостью. Есть как с 1G портами, так и с 100G.
Маршрутизаторы представлены только в сегменте IP/MPLS. Пока что не видел каких-то разработок в направлении кампусных сетей.
Портфолио и характеристики оборудования
Коммутаторы серии CS4100
Серия коммутаторов подразумевается под нужды центров обработки данных либо в качестве ядра кампусной сети. Умеют многое: EVPN-VXLAN, MLAG, сложные опции роутинга и т.д.
Есть варианты как в форм-факторе 1U, так и 2U, для увеличения количества портов.
Коммутатор CS4148. Имеет 48 портов SFP28 и 8 портов QSFP28.
Коммутатор CS4132. Имеет 32 порта QSFP28.
Коммутатор CS4164. Имеет 64 порта QSFP28.
По хардварным характеристикам ближайшие аналоги — Cisco Nexus 3100-Z или Arista 7050CS3-32S. Все эти модели основаны на чипе Broadcom Trident 3-X7. Отсюда и вытекают все особенности и аппаратные возможности. Максимальная производительность чипа равняется 3.2 Тб/с. Вот тут есть хороший анализ перфоманса - Broadcom Trident 3 Platform Performance Analysis.
По архитектурным особенностям, нашёл документацию по Arista 7050X3, где хорошо описываются различные аппаратные особенности,
в частности есть вот такая картинка:
Собственно это и есть архитектура нашего чипа. Сам Broadcom её почему-то не публикует, ну или я плохо искал, но вот Arista пожалуйста.
В детали уходить не буду, оставлю ссылку - 7050X3_Architecture_WP.
Если же говорить про функциональные возможности, то не буду перечислять всё, но основной набор понятен, можно в качестве референса брать любую модель с аналогичным чипом, не будем уже менять и возьмём ту же Arista 7050X3 - 7050X3-Datasheet. Как видите, умеет много всякого разного, в том числе и EVPN-VXLAN, для которого по большей части и предназначены эти устройства.
Тут важно понимать, что мы говорим только о возможностях чипа, и если сказать что Arista 7050X3 = B4COM CS4100, то равенство будет неверным, т.к. есть ещё адаптация софта к конкретному чипу, которую уже реализует разработчик операционной системы.
Маршрутизаторы серии MR300
Серия роутеров разработана для сетей IP/MPLS и предназначена для высокой нагрузки. Соответственно, не предназначена для использования внутри кампуса (хотя вы можете это делать, но никаких соответствующих фич вы тут не увидите).
Маршрутизатор MR350. Имеет 48 портов SFP28 и 6 портов QSFP28.
Ближайший аналог — Cisco NCS-5501.
Собственно, чип и там, и там стоит одинаковый — Qumran-MX.
К слову, тут вообще никакой инфы нет, ни архитектуры, ни чего-то похожего. По крайней мере я не нашёл.
Что касается функциональных возможностней, то основной упор на IP/MPLS и DCI. Поэтому тут реализованы например, такие штуки как поддержка MPLS, SR, SRv6, EVPN, всякие фичи для OAM и т.д.
Аналогично CS4100, все сравнения с Cisco NCS идут в формате сравнения ASICов этих устройств. Естественно IOS-XR и BCOM OS две абсолютно разные линейки софта и то, как они работают с одним и тем же чипом будет различаться.
Коммутаторы серии CS2100
Это младший брат CS4100, предназначенный для сетей управления и внутри кампуса. Набор технологий и возможностей будет соответствующий: никаких EVPN-VXLAN, только простые и понятные VLAN, STP и прочее.
Существуют модели как на 24 порта, так и на 48 портов. Аналогов полно, даже пример приводить не буду — любой кампусный свич с 1G портами. По чипу информации нет.
Дальше эту модель рассматривать не будем.
Коммутатор CS2148. Имеет 48 портов 2.5 GBase-T, 2 порта QSFP+ и 4 порта SFP28.
Архитектура ПО
Тут сразу стоит сказать, что мы не будем уходить глубоко в детали, посмотрим по большей части основные моменты.
Коммутаторы серии CS4100 и маршрутизаторы MR300
Почему я объединил эти две группы в одну? Тут всё заключается в том, что они имеют достаточно схожую архитектуру, если не смотреть вглубь. Чипы, как я уже писал раньше, в обоих коробках от Broadcom. Что же касается софта, то операционка носит гордое название BCOM OS.
Небольшая ремарка, операционных систем на самом деле не одна, а две - BCOM-OS-DC и BCOM-OS-SP, соответственно для коммутаторов, и для маршрутизаторов. Чипы же всё-таки разные, софт тоже должен отличаться и по набору фич и по прочим вещам. Однако, верхнеуровнево - они схожи и мы тут посмотрим на них в одном ключе.
GRUB
В первую очередь, любую операционную систему нужно установить и затем загрузить. Для загрузки у нас есть различные инструменты, например GRUB, loader (для всяких лучших роутеров в мире на FreeBSD в прошлом) или пресловутый BOOTMGR для Windows.
Т.к. наша операционка опирается на Linux, то и загрузчик будет оттуда же, т.е. GRUB. К слову, он используется не только в привычных всем образах по типу CentOS или Ubuntu, но также и для загрузки Cisco Nexus 9000, Arista 7050X3 и многих других.
Более детально читайте тут — https://www.gnu.org/software/grub/.
ONIE
Но чтобы что-то загружать, надо это что-то установить, и тут для сетевых операционных систем был разработан специальный установщик — ONIE.
Данный установщик (ONIE) является де-факто стандартом для использования внутри сетевых устройств, построенных по принципам whitebox, т.е. когда у нас есть базовая коробка с чипом, и мы хотим на неё поставить какой-то унифицированный софт, к примеру, это может быть Cumulus, SONiC, или, как в нашем случае, BCOM OS.
Особенности данного установщика в том, что он является полностью открытым и направлен на автоматизацию, т.к. сразу поддерживает загрузку ОС из внешних источников, например по TFTP.
Вот картинка того, как происходит процесс первоначальной загрузки и обнаружения операционной системы:
Первоначальная загрузка
Схема поиска софта
После нахождения и завершения установки система будет загружена с выбранной вами операционной системой, и при последующей перезагрузке ONIE уже не будет вмешиваться в этот процесс. Загрузка произойдёт следующим образом:
Схема загрузки в случае уже установленного софта
Если же вы понимаете, что ОС установлена неверно или её нужно заменить на другую, то в момент загрузки с помощью GRUB вы опять вызываете ONIE и повторяете процесс установки. Примеров с подробным описанием хватает в открытом доступе, например, вот инструкция от Dell.
Думаю, тут достаточно, пойдём дальше.
BCOM OS
Выше уже неоднократно упоминалось, что это и как это работает. Давайте теперь посмотрим внутрь.
ОС имеет следующую архитектуру:
Схема архитектуры ПО
Из ключевых процессов, помимо всяких BGP, SNMP и прочего сетевого, могу указать следующие:
- NSM (Network Service Module) — процесс, который является центральным и через который проходит вся информация от Control Plane в Data Plane и наоборот. К примеру, тут изучается информация от протоколов маршрутизации и сгружается затем в сторону нижестоящих процессов, на основе которой программируется чип.
- HSL (Hardware Service Layer) — процесс, который находится на границе между ASICом и NSM. HSL получает информацию от NSM и преобразует её в формат инструкций, которые через SDK сгружаются на чип и тем самым программируют его.
Опять же, т.к. нет достаточно подробного описания и инструкции, то я руководствуюсь только лишь своим опытом и предположениями.
Остальные процессы также важны, и отказ любого из них приведёт к недоступности той или иной технологии, а то и всей коробки. Но я выделил эти два, т.к. с ними приходится общаться чаще всего.
Linux Shell и CLI
BCOM OS — это всё-таки Linux, а конкретно Debian. Исходя из этого, несложно догадаться, что у нас есть доступ к Linux Shell, и мы можем даже каким-то образом управлять с его помощью устройством. Как минимум, менять и добавлять конфигурации, перезагружать процессы, запускать tcpdump и многое другое.
Ниже приведу пару примеров того, как это выглядит.
Cбор tcpdump в файл:
LF-10#
LF-10#
LF-10#
LF-10#start-shell
bash-5.0$ su
Password:
root@LF-10:/home/admin#
root@LF-10:/home/admin#
root@LF-10:/home/admin# cd /sbin
root@LF-10:/sbin#
root@LF-10:/sbin#
root@LF-10:/sbin# ./tcpdump -enni broadcom0 -w dump1.pcap
tcpdump: listening on broadcom0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C0 packets captured
0 packets received by filter
0 packets dropped by kernel
root@LF-10:/sbin# ^C
root@LF-10:/sbin#
root@LF-10:/sbin#
root@LF-10:/sbin# ls -al | grep dump1
-rw-r----- 1 root root 24 Mar 1 14:22 dump1.pcap
root@LF-10:/sbin#
root@LF-10:/sbin#
root@LF-10:/sbin# exit
exit
bash-5.0$ exit
exit
LF-10#
LF-10#
LF-10#
Выполнение команды “top”:
LF-10#
LF-10#
LF-10#start-shell
bash-5.0$
bash-5.0$
bash-5.0$ su
Password:
root@LF-10:/home/admin#
root@LF-10:/home/admin#
root@LF-10:/home/admin# top
top - 14:23:50 up 15 days, 1:11, 1 user, load average: 0.06, 0.14, 0.17
Tasks: 169 total, 2 running, 167 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.1 us, 0.9 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15936.8 total, 13967.0 free, 1146.3 used, 823.5 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 14489.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3011 root 20 0 372544 134324 27316 S 8.2 0.8 263:57.40 cmld
2587 root 20 0 3194632 331588 49324 S 6.1 2.0 1105:40 hsl
2974 root 20 0 56488 11100 7140 R 2.0 0.1 603:51.21 cmmd
1 root 20 0 170076 10792 7812 S 0.0 0.1 0:20.38 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:01.25 ksoftirqd/0
10 root 20 0 0 0 0 I 0.0 0.0 6:15.58 rcu_sched
11 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh
12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
15 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/1
16 root 20 0 0 0 0 S 0.0 0.0 0:00.30 ksoftirqd/1
18 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H-kblockd
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/2
20 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/2
21 root 20 0 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/2
23 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/2:0H-kblockd
24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/3
25 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/3
26 root 20 0 0 0 0 S 0.0 0.0 0:10.84 ksoftirqd/3
28 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/3:0H-kblockd
29 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/4
30 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/4
31 root 20 0 0 0 0 S 0.0 0.0 0:16.77 ksoftirqd/4
33 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/4:0H-kblockd
34 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/5
Как видите, ничего нового.
Однако основным средством управления всё-таки является CLI. Он по сути повторяет Cisco, ну или, как любят говорить, является Cisco-like CLI. Аналогично делают многие вендоры, к примеру, та же Arista или какой-нибудь FRR, да и вообще многие другие. Для этого вообще есть отдельный проект — clish.
Приведу ниже некоторые из основных команд, чтобы вы поняли, о чём идёт речь.
Пример изменения hostname на устройстве:
LF-1#
LF-1#
LF-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
LF-1(config)#
LF-1(config)#hostname LF-10
LF-1(config)#commit
LF-10(config)#
LF-10(config)#
LF-10(config)#^C
LF-10(config)#end
LF-10#
LF-10#
Пример настройки BGP:
LF-10#
LF-10#
LF-10#sh run bgp
!
bgp extended-asn-cap
!
LF-10#
LF-10#
LF-10#conf t
Enter configuration commands, one per line. End with CNTL/Z.
LF-10(config)#router bgp 100000
LF-10(config-router)#
LF-10(config-router)#
LF-10(config-router)# bgp router-id 10.0.0.1
LF-10(config-router)# timers bgp 10 30
LF-10(config-router)# neighbor 10.0.0.2 remote-as 100001
LF-10(config-router)# neighbor 10.0.0.2 fall-over bfd multihop
LF-10(config-router)# neighbor 10.0.0.2 update-source 10.0.0.1
LF-10(config-router)# neighbor 10.0.0.2 advertisement-interval 0
LF-10(config-router)# !
LF-10(config-router)# bgp unnumbered-mode
LF-10(config-router-unnum)# neighbor ce31 remote-as external
LF-10(config-router-unnum)# neighbor ce31 fall-over bfd
LF-10(config-router-unnum)# exit-unnumbered-mode
LF-10(config-router)# !
LF-10(config-router)# address-family ipv4 unicast
LF-10(config-router-af)# network 10.0.0.1/32
LF-10(config-router-af)# max-paths ebgp 2
LF-10(config-router-af)# !
LF-10(config-router-af)# bgp v4-unnumbered-mode
LF-10(config-router-v4-unnum)# neighbor ce31 activate
LF-10(config-router-v4-unnum)# exit-v4-unnumbered-mode
LF-10(config-router-af)# !
LF-10(config-router-af)# exit-address-family
LF-10(config-router)# !
LF-10(config-router)# address-family l2vpn evpn
LF-10(config-router-af)# neighbor 10.0.0.2 activate
LF-10(config-router-af)# exit-address-family
LF-10(config-router)# !
LF-10(config-router)# exit
LF-10(config)#!
LF-10(config)#
LF-10(config)#
LF-10(config)#commit
LF-10(config)#
LF-10(config)#
LF-10(config)#end
LF-10#
LF-10#
Проверка состояния BGP в EVPN:
LF-10#
LF-10#
LF-10#sh bgp l2 evpn summary
BGP router identifier 10.0.0.1, local AS number 100000
BGP table version is 1
1 BGP AS-PATH entries
0 BGP community entries
Neighbor V AS MsgRcv MsgSen TblVer InQ OutQ Up/Down State/PfxRcd AD MACIP MCAST ESI PREFIX-ROUTE
10.0.0.2 4 100001 0 0 0 0 0 never Idle
Total number of neighbors 1
Total number of Established sessions 0
LF-10#
LF-10#
сессия неактивна, т.к. не стал вторую сторону поднимать.
Как вы могли заметить, дополнительной особенностью является возможность commit. Это непривычно для тех, кто часто взаимодействует с теми же Cisco N9K, но для тех, кто работал с Huawei или Juniper, это привычное дело. Да и вообще, это только в плюс, т.к. позволяет немного защититься от случайной ошибки из-за мисконфига. Впрочем, можно и с ошибкой закоммитить.
Заключение
Таким образом, мы с вами рассмотрели основной модельный ряд, хардварные и софтверные особенности коробок. Как видите, оборудование “способное”, все софтовые и аппаратные возможности говорят о том, что можно использовать в разных целях. Опять же, никто не говорит о том, что если какая-то технология реализована аппаратно, то есть поддерживается чипом, то она обязательно должна присутствовать в софте, это уже вопрос к конкретной версии операционной системы и вообще вопрос в сторону вендора. Надеюсь, в будущем непосредственно сами производители начнут публиковать детальные описания возможностей своего оборудования.
На этом я бы хотел завершить свой небольшой обзор. Буду рад, если он кому-то окажется полезен, и если такой формат “зайдёт”, то возможно, в следующих статьях я рассмотрю какие-то конкретные инструменты и/или технологии внутри оборудования. Если есть какие-то замечания, комментарии и/или пожелания, то пишите на канале, я там активно читаю и отвечаю.
Спасибо за внимание!