1. НТЦ Метротек 2016 Курочкин Павел
Разбираем ethernet-
анализаторы
Архитектура на базе SoC FPGA
2. НТЦ Метротек 2016 Курочкин Павел
Вы узнаете про...
Внутренности Ethernet-устройств на базе FPGA
System-on-chip и с чем его едят
Преимущества custom-ной обработки и генерации сетевого трафика
Отличие аппаратных и программных инструментов тестирования сетей
2
3. НТЦ Метротек 2016 Курочкин Павел
Ethernet-анализаторы
Тестеры ethernet
Фильтры пакетов (firewall)
Транзитные устройства (точки демаркации)
Коммутаторы-балансировщики
3
4. НТЦ Метротек 2016 Курочкин Павел
Тестеры Ethernet
4
http://metrotek.spb.ru/b3et.html
5. НТЦ Метротек 2016 Курочкин Павел
Фильтры пакетов
5
http://metrotek.spb.ru/bmx.html
6. НТЦ Метротек 2016 Курочкин Павел
Транзитные устройства
6
http://metrotek.spb.ru/etl-n.html
7. НТЦ Метротек 2016 Курочкин Павел
Коммутаторы-балансировщики
http://metrotek.spb.ru/b100.html
7
8. НТЦ Метротек 2016 Курочкин Павел
Что их объединяет?
Ethernet :)
Схожая архитектура
Обработка трафика на FPGA
Интерфейс с Ethernet - через трансиверы
8
9. НТЦ Метротек 2016 Курочкин Павел
Обработка сетевого трафика на FPGA
Line rate 1G/10G/100G
Нулевой коэффициент потерь
Невозможно за-DDOSить
Нет зависимости между нагрузкой в линке и нагрузкой чипа
Распределённая память в чипе
9
10. НТЦ Метротек 2016 Курочкин Павел
SoC
Процессор и периферия в одном кристалле
Общая память
Медиа-плееры
Роутеры
Встраиваемые CPU
10
18. НТЦ Метротек 2016 Курочкин Павел
Benchmarking
18
Задержка (store and forward) офисного коммутатора
19. НТЦ Метротек 2016 Курочкин Павел
Benchmarking (Throughput)
19
Трафик через FPGA Трафик через CPU
20. НТЦ Метротек 2016 Курочкин Павел
Программые инструменты
Гибкость
Множество готовых программ
Легче верифицировать
Сетевой трафик грузит CPU
Недетерминированное поведение
20
● CPU не загружен
● Сетевой трафик не грузит
FPGA
● Гарантированная задержка
● 100% linerate
● Парралелизм
● Статическое выделение
памяти
Аппаратные инструменты
21. НТЦ Метротек 2016 Курочкин Павел
Резюме
Познакомились с архитектурой Ethernet-устройств
Рассмотрели, как устроен SoC FPGA
Оценили бонусы от системы на одном кристалле
21
Editor's Notes
Меня зовут Павел Курочкин. Я занимаюсь разработкой высоко-технологичных устройств в компании НТЦ Метротек и “приложил” руку к каждому созданному прибору.
Компания занимается двумя крупными направлениями - измерения в Ethernet и коммутация Ethernet. Измерения - это компактные устройства, работающие от батарейки, которые можно взять с собой.
Коммутация - это устройства, позволяющие обрабатывать трафик по заданным правилам. Если использовать популярную аналогию, то устройства коммутации работают по принципу, близкому к описанному в спецификации на openflow switch’и.
В этом подкасте я постараюсь рассказать про внутренности анализаторов ethernet, так, чтобы их возможности были понятны сетевым админам. Я буду избегать програмистских подробностей.
Прежде, чем заглубляться в детали архитектуры, давайте классифицируем устройства, которые активно используют FPGA для работы с ethernet-трафиком
Все перечисленные устройства построены по похожим принципам. На схеме видно, что есть и процессор, и FPGA. А также есть трансиверы, которые позволяют организовать доступ к физической среде Ethernet. Всё это специальные чипы, которые попадают на плату и образуют конечное устройство. Функциональность определяется уже софтом, который прошивается в процессор и FPGA. Хотя меня бы тут наверное поругали за слово “софт”, применённое к FPGA. Правильнее сказать - описание схемы.
Интерфейс с трансиверами (между Ethernet) всегда даёт полный linerate, а вот интерфейс с процессором часто является узким местом. В итоге в такой архитектуре может получиться так, что процессор не получит и одного процента трафика (если, конечно., этого потребует приложение, ведь часто трафик не выходит за пределы FPGA).
В топовых чипах трасиверы встраиваются в FPGA.
Обработка трафика на FPGA хороша тогда, когда решаются задачи, не подразумевающие удержание сессий и т.п.
НА FPGA хорошо ложатся рутинные функции, например “парсинг заголовка пакета”. Если доверять такие функции процессору, то это создаёт значительную нагрузку. В случае с FPGA это не так - парсинг пакета происходит “параллельно с приёмом каждого нового байта”, условно говоря. Когда пакет закончился, заголовок уже разобран и решения приняты - что делать с этим пакетом. Фильтровать, заносить его в статистику или дропнуть. Или перенаправить на интерфейс, указанный в таблице правил.
Ввиду простоты обработки и отсутствия сложных связей, за DDOS-ить логику в ПЛИС практически не возможно.
На кристалле есть достаточное количество правил, чтобы размещать буферы для входящих и выходящих пакетов. Эти буферы абсолютно друг от друга не зависят и это тоже сильно отличает FPGA от процессора, где память одна на всю систему. Это в итоге позволяет распараллеливать обработку в ПЛИС.
Однако, в некоторых случаях хорошо комбинировать задачи, чтобы объединить преимущества процессора и FPGA. Часть делать с помощью процессора, а другую часть - на FPGA. Один из таких примеров - timestamping. Сетевой стек отправляет пакеты, а FPGA вписывает метку времени прямо в момент отправки пакета.
Есть множество подходов по совместной обработке. Например packet slicing. В задачах мониторинга возникает задача отправлять на сервер не пакеты целиком, а только заголовки, например.
System On Chip - это технология, объединяющая на одном кристалле процессор и периферийные компоненты.
Здесь рассказываем про то, какие SoC вообще бывают - медиаплееры, сетевые девайсы
Тема SoC живёт очень давно, но с FPGA она появилась оносительно недавно - года 3-4 назад. Впервые мы услышали на embedded world об этом и решили применить.
Давайте посмотрим, что это такое.
HPS - hard processing system
Важно, что Fpga и CPU могут жить совершенно независимо. Грузиться с разных источников и грузить друг друга.
Но в эти детали мы не полезем.
В наших устройствах обмен данными долгое время выполнялся с помощью различных аппаратных интерфейсов:
грубо говоря мы соединяли чипы проводами. Каждый аппаратный интерфейс обладает своими плюсами и минусами.
Чаще всего у нас получался не очень быстрый обмен. В других случаях вырастает latency обмена.
Рассказываем о том, как было раньше, до появления SoC:
Несколько чипов
Аппаратный интерфейс между чипами
Доступ к FPGA ограничен по скорости и имеет большую задержку
Для загрузки FPGA нужен отдельный интерфейс
А с появлением SoC всё стало намного прощё
Один чип
Доступ к FPGA через высокоскоростные специальные интерфейсы внутри чипа
Задержка обращения в этом случае намного меньше!
И передача данных в FPGA и её прошивка выглядит как работа с памятью
Здесь нужно сказать и про разрядность интерфейсов. Это тот параметр, который критически отличается.
например, чтобы в старой архитектуре сделать многоразрядный интерфейс,
требуются либо высокоскоростные последовательные каналы, либо куча пинов и сложная разводка.
Какие есть варианты взаимодействия подсистем внутри чипа?
На слайде показана упрощённая схема взаимодействия процессора с разными подсистемами.
Основные -- это интерфейсы для передачи данных:
HPS-to-FPGA -- высокоскоростной интерфейс. Мастером является HPS. Ширина интерфейса со стороны FPGA может быть задана равной 32, 64 или 128 бит.
Lightweight HPS-to-FPGA -- облегченный интерфейс, доступна только ширина в 32 бита. Мастер также HPS. Занимает в FPGA меньше ресурсов.
FPGA-to-HPS -- мастеров является FPGA. Позволяет FPGA получить доступ к адресному пространству HPS. Также 32, 64 или 128 бит.
Все эти интерфейс на низком уровне -- это AXI. Но для удобства работы со стороны FPGA они конвертируются в Avalon-MM. Но на это приходится тратить часть ресурсов FPGA.
А есть ещё возможность обращаться в память напрямую, но через общую трубу. Этот обмен быстрее, но он более низкоуровневый ;)
Также доступны следующие интерфейсы для отладки:
TPIU trace -- для отправки trace-данных, собранных на HPS, в FPGA
FPGA System Trace Macrocell (STM) -- позволяет FPGA посылать event’ы в HPS.
FPGA cross-trigger -- позволяет посылать FPGA защелкивать SignalTap по событиям из HPS и наоборот.
Ещё есть:
FPGA manager interface -- для загрузки и конфигурации FPGA
Interrupts -- FPGA может генерировать аппаратные прерывания для HPS
MPU standby and events -- сигналы ддя сообщения FPGA о том, что HPS в режиме standby. И сигналы для пробуждения CPU из WFE состояния.
FPGA clocks & resets
В SoC присутсвуют несколько адресных пространств.
Адрессное пространство -- это то, как видит систему тот или иной компонент. И куда он имеет доступ.
Это -- адресное пространство CPU. То есть так видит систему наш ARM. Основные части (их четыре) -- это:
Boot region -- размер 1MB. В SoC доступно 64 KB On-chip RAM и 64 KB On-chip ROM. Этот регион может быть замаплен на любой из них. Выбор происходит через L3 remap регистры. Может быть убран.
SDRAM window region -- большой кусок SDRAM :) Если включен Boot region, то нижний 1MB SDRAM недоступен. Выровнен по границе 1MB.
FPGA region -- доступ к интерфейсам HPS-to-FPGA и LW HPS-to-FPGA.
Peripheral region -- доступ к регистрам различных контроллеров.
Примерное такие же адрессные пространства есть для остальных мастеров.
И теперь можем взглянуть на архитектуру нашего ethernet-тестера, которому первому довелось перейти на SoC.
Теперь на тестере Linux и FPGA работают вместе и имеют общее адресное пространство. Два гигабитных порта подключены напрямую на чип и позволяют иметь прямой доступ к физической среде
Точность измерения задержки составляет микросекунды