Hardware Networking
Sources:
- https://where-to-store-the-packet.readthedocs.io/en/latest/0_intro.html
- https://linkmeup.ru/blog/1262/ - как построить гугл
- https://thenetworksherpa.com/tcam-in-the-forwarding-engine/
- https://linkmeup.ru/blog/1235/ Packet Way
- Brian Petersen Hardware-Defined Networking Kindle Edition
- https://habr.com/ru/companies/selectel/articles/313150/ Для последнего десятилетия характерна тенденция к маршрутизации в софте. Для всех сетевых функций предлагаются программные альтернативы. Отсюда и DMA, DPDK, VPP, SR-IOV, которые и правда позволяют творить невиданные прежде вещи.
- https://habr.com/ru/articles/307696/ Juniper Hardware
- https://linkmeup.ru/podcasts/1063/ о алгоритмическом поиске
- https://linkmeup.ru/blog/1244/ QoS
- https://books.google.ru/books?id=kzstoFdvZ2sC&pg=PR8&lpg=PR8&dq=shared+memory+vs+voq&source=bl&ots=mTy-1ifsRK&sig=ACfU3U0DHx37_i_oDKvDJTEh72g6pSW-Ng&hl=ru&sa=X&ved=2ahUKEwjnx9el0LPnAhWHAhAIHUF6CeIQ6AEwCHoECAgQAQ#v=onepage&q=shared%20memory%20vs%20voq&f=false High Performance Routers
- https://nvme.smb-solution.ru/roce/ ROCE (роки)
- https://www.youtube.com/watch?v=Ti3t9OAZL3g Understanding ASICS (Packet Pushers)
Пост является вольным конспектом этих ресурсов. Направлен на самообучение путем структурирования информации.
Архитектура сетевых устройств
- электрический или световой сигнал попадает через физический интерфес на устройство
- Обрабатывается в поток битов
- Вычленяются заголвки (парсинг - ethernet, mpls, ip и тд)
- Traffic manager - происходит обработка, решение куда послать, полисинг, буферезация, фильтры, qos и т д
- Происходит обратное превращение этого всего в биты
-
Отправка на физические интерфей
3,4,5 существует благодоря control plane, на котором работают протоколы маршрутизауии
блок задач - чип преобразование в биты, работа с физикой - PHY - обычно это ASIC CONTROL PLANE - CPU + RAM Parser, Traffic management, Deparser (обработка заголовков, перенаправление трафика - Packet Forwarding Manager) - может быть Network Processor, FPGA, cпециализированный ASIC) Parser - TCAM, RAM,
Архитектрура модульных устройств
- Back Plane
- управляющий модуль
- линейная карта/интерфейсный модуль
- фабрика коммутации
### Фабрика Коммутации
маршрутизатор операторского класса -> от 2х до десятков линейный/интерфейсхных карт -> минимум 1 FE на каждую
Как соединить? - через транзитный элемент
По сути сборка тупых ASIC перенаправляющая ячейки. Часто фабрика коммутации подключены прямо в управляющий модуль.
Далее разбитие на ячейки, чтобы не было проблем по сбору. Ячейка маленькая, расстояние одинаковое, доходит за одно время, еще и пронумерована.
Типы чипов
Чипы
На сегодняшний день нет идеального варианта, поэтому для каждой цели ищется компромисс.
Чипы коммутации:
- CPU - Central Process Unit
- FPGA - Field Programmable Gate Array
- ASIC - Application Specific Integrated Cirfcuit
- NP - network processor
- Programmable ASIC
Чипы памяти:
- RAM - Random Access Memory
- CAM - Content Access Memory
- TCAM - Ternary Content Access Memory
- Алгоритмический поиск
CPU - Central Process Unit
(+) неограниченная функциональность (+) неограниченная гибкость (+ -) цена (-) производительность
идея: все реализуется программно, инструкции в оперативной памяти, для каждого пакета поход в оперативку для изменения функционала: достаточно изменить программу область применения: домашние роутеры, firewall, control plane в маршрутизаторах
в современных процессорах реализуется программная маршрутизация и это уже заходит в область np - network processor но пока цены этого cpu большая и он еще будет кушать электричество
ASIC - Application Specific Integrated Circuit
(-) ограниченная функциональность (-) гибкость (+) производительность (+) цена идея: закодировано аппаратно в транзисторах изменения: нужно выпускать новый чип прогонка пакета - прогонка по транзистрорам обсласть применения: все коммутаторы, маршрутизаторы
FPGA - Field Programmable Gate Array (плис)
(+-) функциональность (+-) гибкость (-) цена (+) производительность идея: аппаратно сделаны блоки с готовой функциональностью, можно написать программу из блоков изменения: залитие новой прошивки (лучше чем делать новый чип, но хуже чем залитие программы область применения: энтерпрайз
NP - Network Processor
(+) гибкость (+) функциональность (+-) производительность достотачно высокая (-) цена достаточно высокая
как cpu только для сетевых задач несколько ядер - каждое для своего сегмента изменения: переписать код может в :
- циклы
- инкапсуляции
- NAT
- своп меток
- код на С
производительность хуже чем у ASIC и FPGA используется в маршрутизаторах сети и аггрегации
Programmable ASIC
(+) достаточная гибкость (-) ограниченная функциональность (+) маленькая цена (+) очень высокая производительность
Чипы для датацентров
- Broadcom (Jericho, Qumran etc)
- Mellanox ( Spectrum/NVIDIA)
- Intel
в датацентрах в основном все делится на edge, spine, leaf edge: MPLS, RSVP-TE, BGP, VPN и тд spine: молотилка трафика, может быть vxlan leaf: Qos, ACL, Vxlan
новые чипы выпускаются регулярно, соревнуясь в производительности так же популярным запросом стала телеметрия
Чипы памяти
RAM Random Access Memory
принцип - адрес ячейки значение
- хранятся все Soft table, синхронизируются с Hard Tables, передача данных происходит через Hard Tables, так как в RAM обращение CPU долго
- очереди, перед обработкой чипом пакет хранится в очереди
есть несколько видов RAM, выбирают в зависимости от задач
- SDRAM
- DDR
- HBM
- GDDR5, GDDR6
- HMC
CAM - Contetnt Address Memory
принцип: значение -> хэш -> ячейка памяти в RAM (Hard Tables -> выходной интерфейс) Сигнал идет на сравнивающие элементы одновременно, выдача значения за фиксированное время, дороже чем RAM из-за этих элементов хэш функция:
- фиксированная длина и уменьшение значения 48 бит мак адресов в 16 бит
- для одинакового значения один результат
- все значения равновероятны
-
любая длина аргумента - фиксированное значение
пример с адресом: Пришёл самый первый Ethernet-кадр на порт коммутатора. Коммутатор извлёк SMAC, вычислил его хэш. Данный хэш он записал в сравнивающие элементы CAM, номер интерфейса откуда пришёл кадр в RAM, а в саму ячейку CAM адрес ячейки в RAM. Выполнил рассылку изначального кадра во все порты. Повторил пп. 1-5 …. Заполнена вся таблица MAC-адресов. Приходит Ethernet-кадр. Коммутатор сначала проверяет, известен ли ему данный SMAC (сравнивает хэш адреса с записанными хэшами в CAM) и, если нет, сохраняет. Извлекает DMAC, считает его хэш. Данный хэш он прогоняет через все сравнивающие элементы CAM и находит единственное совпадение. Узнаёт номер порта, отправляет туда изначальный кадр.
TCAM Ternary Content Access Memmory
значения:
- 0
- 1
- не важно хэш функция не используется (-) тепловыделение (ячейки - транзисторы - греются) (+) производительность (-) цена, раньше объем определял стоимость маршрутизаторв (-+) объем
Алгоритмический поиск
отдельный ASIC, реализующий поиск IP, с ним же рядом ставится RAM дешевле и лучше по тепловыделению
Архитектура сетевых ASIC
Cоставные компоненты
отдельные компоненты (Ip-core) - разными производителями
например SerDes - Inphi
могут быть частью одного кристалла, напечатанного на плате
могут быть вынесены отдельно каждая
пример HBM
Juniper - 3 Asic
SerDes
частоты сетевых чипов - единицы ГГц сетевых интерфейсов - десятки ГГц надо понизить частоту путем распараллеливания сигнала - десереализация 2 пина делятся на несколько обратно так же - сериализация Скорость SerDes: обычно 10Гб/с 28, движемся в сторону 56, 112
методы модуляции
для SerDes 10 и 28 ГГц - NRZ - Non Return to Zero: положительное напряжение 1 , отрицательно 0
для 56ГГЦ и 112 ГГц - PAM-4 - Pulse Amplitude modulation: 4 уровня амплитуды - 2бита: 00, 01, 10, 11
Gearbox
для работы с разными модуляциями
“Использование гирбоксов также упростит вендорам и переход на 400G - не придётся менять ASIC - достаточно заменить/убрать гирбокс.”
PHY
восстановление битов из сигнала коррекция ошибок синхронизация и т д
расположение:
- для RJ-45 - чип PHY - ASIC установленный на плате оптика - DSP PHY (на трансивере модуль)
Packaging, Advanced Packaging
Packaging - процесс запаковки кристалла в корпус WLP - Wafer Level packging - установка нескольких микросхем на одну вафлю чиплет интерпозер - электрическое соединение между чиплетами
HBM - high bandwith memory - широкие шины взаимодействия между чиплетам
TSV - Through Silicon Via - микроскопические отверстия в кристале заполненные металлом
HMC (Hybrid Memory Cube) - та же технология TSV, стек из DRAM
пример Jericho 2 - HBM cоединена TSV и связана интерпозером
Архитектура сетевых ASIC логика
MMU Memory Management Unit
доступ к физической памяти
как память разделяется между интерфейсами
Занятость в каждый момент времени
Можно ли поместить пакет в буфер, в какой
TM - Traffic Manager
Qos Multicast
Пакет мултикаст - дублировние на количество чипов - запись информации в VOQ - дублирование на интерфейсы
pipeline - процесс доставки пакета от парсера до депарсера
возможен программируемый pipeline
Память и буферы
заголовки - в pipeline тело в буфере
Есть память на чипах - малого размедра (обычно до 100Mb) - On Chip Buffer остальная - внешняя - Deep Buffer
для управления внешней памятью используется MMU Management Memory Unit программа по указателю обращается к MMU -> MMU находит физические адрес ячейки и возвращает данные Функции
- размещении
- извлечении
- отбрасывании
- разделение и загрузка (dedicated, shared, headroom, voq)
2 подхода к размещению в буферах
- store and forward
- cut through
К слову на сегодняшний день для коммутаторов 2-го уровня время обработки в пределах устройства порядка 200нс, 3-го - 250нс. Для коммутаторов 1-го уровня (фактически патч-панель) это время - около 5 нс.
Перегрузки причины и места
разделение заголовков и тела пакета нужно также чтобы избежать перегрузок
Причины
- вход > выхода (10g > 1g)
- Incast (один узел отправляет запрос многим узлам и получает много ответов)
- Burst
-
Backpressure (трафик с нескольких входных портов в один выходной)
Места перегрузки:
- входной чип (приходит больше чем может)
- фабрика коммутации (если устройство модульное, несколько линейных карт)
- выходная линейная карта (фабрика передает больше чем можно)
- выходной интерфейс (чип передает больше чем интерфейс способен десериализовать
Решения
- Чип такой чтобы смог обработать весь трафик, даже если начал поступать со всех портов
- аналогично фабрику учитывая возможные метаданные
- управление выходными перегрузками на чипе и интерфейсе в одно место
Архитектура буфероф
Crossbar
Shared
- используется в немодульных устройствах с одним чипом (OCB - On Chip Buffer)
Dedicated + Shared
Dedicated - выделена под каждый порт, другой порт не может использовать
Shared - общая
(-) при перегрузе может не хватить памяти тому порту которому надо было совсем чуть-чуть (соревнование между портами)
Dedicated + Shared + HeadRoom
Пример: два вида трафика RoCe и репликация бд Roce - lossless трафик При заполнении shared boofer коммутатор отправляет pause отправителю пришедший roce трафик помещается в headroom buffer а репликационный отбрасывается
Segregated Buffer
Пример: Broadcom Trident и Tomahawk группировка портов по 4-8 каждой группе - кусок общего буфера группа не может лезть в чужие куски порт берет память только из своего куска
Admission control
функция - можно ли записывать пакет в буфер виды
- Ingress - какую комнату выделить для 1 порта и можно ли на него выделить еще чтобы не обделить других (справедливое использование памяти)
-
Egress - регуляция вспелсков - чтобы несколько портов не заполнили весь буфер объем памяти выделяемой на порт определяется порогом (статическим или динамическим alpha)
Alpha
- сколько общей памяти свободно
- сколько отдать под порт
регион (терминология Melanox) - входящий порт, priority входящего порта, выходной порт, traffic class
для каждого региона alpha
threshold = alpha * Free buffer
пример 32 порта alpha = 1/64, при максимальной загрузке только половина памяти 1/32 - вся 1/16 - порт может получить большую часть
Output Queuing
расположение буфероф перед выходными интрефейсами приходят на Egress PFE чтобы умирать (-) бесполезная загрузка фабрики коммутации
Input Queuing
буферы после лукапа, после того как становится понятно куда посылать пакет (-) а если выходной порт занят, придется подождать
арбитр
коммуникация между входной и выходной линейной платой
входная регулярно отправляет запрос можно ли отправлять данные, выходная отвечает grant
оптимизация (RTT внутри коробки) - отправка запросов с данными
Combined Input & Output Queuing (CIOQ)
арбитр проверяет загруженность выходного буфера а не интерфеса минусы
- два буфера -> увеличивается цена
- увеличивается задержка
- QoS в двух местах
проблема для CIOQ и IQ:
Head of Line Blocking
машина поворачивающая налево блокирует движущиеся прямо
выходной интерфейс один и затор на нем блокирует продвижение
VOQ - Virtual Output Queue
1 интерфейс на выход - 8 очередей 10 интерфейсов на коммутаторе - 80 очередей n линейных карт n108 очередей на одну виртуальную очередь FIFO приходится n очередей - поэтому работа арбитра все равно необходима
Combined Input Output Queiung (CIOQ) with VOQ
(-) недостаток размещения памяти в двух местах - цена и потребление энергии больше (+-) Head of Line Block - ecли трафик идет на два порта находящиеся за одним NLP
Сравнение
Shallow Buffers and Deep Buffers
Shallow Buffers обычно до 100 мб расположены на чипе on chip buffers deep buffers - внешняя память Arista 7280QR - 32 Гб Juniper PTX, QFX10000 - чип Q5 - HMC - Hybrid Memory Cube - 4 Гб Broadcom Jericho+ - GDDR5 4 гб Broadcom Jericho2 - HBM2 - 8 Гб шина от ASIC до памяти - узкое место - определяет производительность чипа c развитием WLP Deep Bufer может быть рядом с чипом но интерпозер все равно узкое место
Hybrid Buffers
нормальные условия - память на чипе
перегрузка - внешняя память
спрос на большие буфера - не хочется потерь
TCP Congeastions Control - ориентируется на потери как на метрику перегрузок
может возникнуть BloatBuffer
современные реализации TCP BBR2 Timely - ориентируются на RTT так же как на метрику
Но большие буферы все-таки оправданы в ситуациях:
- граница датацентра - ситуация где трафика приходит больше чем интерфейс может обработать ожидаема
- кластеры с Master узлом - ситуция Incast - 1 хост получает много ответов
- Storage - гоняются большие массивы данных, лучше не терять
Low Latency Lossless сети
принцип: не отбрасывать пакет, а сообщить отправителю о перегрузке
ECN based (Explicit Congestion Notification)
в IP пакете - 8 бит под QOS 6 бит под DSCP, 2 бита под ECN принцип: транзитное устройство перед перегрузкой отправляет ECN отправителю