реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Слегка "навороченная" 1-10Gbit Сетевая карта на ПЛИС, Легко ли реализуется?
syoma
сообщение Nov 15 2016, 11:57
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 640
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Здравствуйте.
Интересует мнение экспертов в правильном ли я направлении думаю.
Есть FPGA PCIe карточка на Virtex-6 или 7, у которой есть 4-8шт 10Gbit SFP+ Портов. Через SFP порты карточка подключается к Ethernet. Хотелось бы сделать из нее нечто вроде "продвинутой" сетевой карты. "Продвинутость" должна заключаться в том, что ПЛИС должна выделять из сетевого трафика отдельные MAC фреймы и обрабатывать из локально, чтобы получить более быструю реакцию на определенные события в сети. Весь остальной трафик должен тупо передаваться на CPU по PCIe для дальнейшей обработки процессором, в таком виде, как это обычно делает обычная сетевая карта.
Я так понимаю, что на уровне PCIe ПЛИС должна эмулировать какой-либо из стандартных Intelовских сетевых контроллеров типа i82xxx, чтобы она работала со стандартным драйвером со стороны процессора. Это так?

Ну и собственно основной вопрос - так вообще делают? Просто мы с таким в своих проектах не сталкивались, мы с PCIe больше дружим, а Ethernet только под свои нужды использовали. Выглядит не сильно сложно, но насколько это нетривиальная задача по реализации? В сети читаю, что так борются с DDoS атаками, а также делают майнинг.
Ну и вопрос, как такая карточка должна определяться со стороны CPU? Как свитч и несколько "виртуальных" endpoints?
Go to the top of the page
 
+Quote Post
Igor657
сообщение Nov 15 2016, 21:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 7-12-05
Пользователь №: 11 941



Про эмуляцию стандартной карты - не думаю, что это простой путь. Обычно их производители не раскрывают внутреннюю структуру и исходный код драйвера и следовательно повторить их будет не просто.

Обработка на уровне MAC не сложна, но с интерфейсом чип PHY-FPGA не всё так просто. Если опыта нет, то время потратите. Это я про 1G. С 10G не работал.

Как я понимаю стандарта на межпортовое взаимодействие сетевых карт в Виндовс нет. Каждый делает как хочет. Драйвер для PCIe на таких скоростях потребует поддержки DMA, что сильно усложняет дизайн
как в FPGA так и в драйвере.

Успехов!
Go to the top of the page
 
+Quote Post
makc
сообщение Nov 16 2016, 06:25
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 533
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Все правильно, основные сложности лежат в области сопряжения MAC с хостом через эффективную реализацию обмена с помощью DMA + реализация доп.функций, разгружающих ЦП хоста (TCP Offload и т.п.). Причём если первая часть относительно не сложная на скоростях до 1 Гбит/с, то вот вторая часть требует значительных усилий и в железе, и в софте (драйвера).


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
faa
сообщение Nov 16 2016, 06:32
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 705
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Посмотрите проект White Rabbit на ohwr.org для примера.
Там есть и разбор траффика, и выделение отдельных фреймов с обработкой, и "прозрачная" передача. Но для 1G.
Go to the top of the page
 
+Quote Post
akorud
сообщение Nov 16 2016, 07:29
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(Igor657 @ Nov 15 2016, 22:45) *
Про эмуляцию стандартной карты - не думаю, что это простой путь. Обычно их производители не раскрывают внутреннюю структуру и исходный код драйвера и следовательно повторить их будет не просто.

Под Linux драйвер для Интела - полностью открыт, считается одним из лучших драйверов сетевых карт.

Цитата(Igor657 @ Nov 15 2016, 22:45) *
Обработка на уровне MAC не сложна, но с интерфейсом чип PHY-FPGA не всё так просто. Если опыта нет, то время потратите. Это я про 1G. С 10G не работал.

У ТС нет чипов PHY - там SFP+. Работает сразу, только надо помнить, что Xilinx не поддерживает модули LR.
А даже и если был бы чип - что ж там сложного?

DMA надо, к сожалению у Xilinx нет бесплатного (в новых Виртексах вроде есть аппаратное встроенное в PCIe), надо использовать что-то подобное http://nwlogic.com/packetdma/, кстати там сразу и нарисована схема того, что Вы ищете :-).
Коммерческое, но на фоне лицензии на 10G не сильно дорого :-)

В эмуляцию стандартного контроллера я бы не игрался, разве что действительно очень надо.
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 16 2016, 12:38
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 098
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Igor657 @ Nov 16 2016, 00:45) *
Про эмуляцию стандартной карты - не думаю, что это простой путь. Обычно их производители не раскрывают внутреннюю структуру и исходный код драйвера и следовательно повторить их будет не просто.
Что? Назовите хоть одну сетевую карту, исходный код которой закрыт для ОС Linux.

Считаю что автору темы не нужно страдать и пытаться мимикрировать под существующие сетевые карты какого-то производителя, а написать свой драйвер самому. Примеров множество http://lxr.free-electrons.com/source/drivers/net/ethernet/

Например этот простой: http://lxr.free-electrons.com/source/drive...linx_emaclite.c Видно что там по большей части подробные комментарии а не код, вся протокольная часть это забота ядра Linux, а драйвер туда сюда пакеты гоняет и прерывания пасёт. Lite примечателен еще тем, что там как раз урезанная версия, что подходит если надо сделать специализированную сетевуху, работающую в заведомо ограниченном окружении без вариаций.

Да, в этом примере http://lxr.free-electrons.com/source/drive...ethernet/xilinx нет PCI, тут показана именно сторона как из устройства засовывать в сетевой стек. PCIe драйвер это немного отдельно, но тоже важно.

Цитата(Igor657)
Драйвер для PCIe на таких скоростях потребует поддержки DMA, что сильно усложняет дизайн
На каких же скоростях сетевой контроллер не требует поддержки DMA? И как это усложняет, если DMA есть почти в любом простом драйвере? Как это усложнит дизайн стороны FPGA если без DMA проект бессмысленный.


--------------------
Go to the top of the page
 
+Quote Post
FAE
сообщение Nov 16 2016, 13:43
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-04-05
Из: Spb, Russia
Пользователь №: 4 544



Цитата(syoma @ Nov 15 2016, 14:57) *
Здравствуйте.
Интересует мнение экспертов в правильном ли я направлении думаю.
Есть FPGA PCIe карточка на Virtex-6 или 7, у которой есть 4-8шт 10Gbit SFP+ Портов. Через SFP порты карточка подключается к Ethernet. Хотелось бы сделать из нее нечто вроде "продвинутой" сетевой карты. "Продвинутость" должна заключаться в том, что ПЛИС должна выделять из сетевого трафика отдельные MAC фреймы и обрабатывать из локально, чтобы получить более быструю реакцию на определенные события в сети. Весь остальной трафик должен тупо передаваться на CPU по PCIe для дальнейшей обработки процессором, в таком виде, как это обычно делает обычная сетевая карта.


Это стандартная задача для ПЛИС. Не сказал бы, что легко, но решается.

Цитата
Я так понимаю, что на уровне PCIe ПЛИС должна эмулировать какой-либо из стандартных Intelовских сетевых контроллеров типа i82xxx, чтобы она работала со стандартным драйвером со стороны процессора. Это так?

Чем эмулировать чужую аппаратуру, проще написать свой драйвер

Цитата
Ну и собственно основной вопрос - так вообще делают? Просто мы с таким в своих проектах не сталкивались, мы с PCIe больше дружим, а Ethernet только под свои нужды использовали. Выглядит не сильно сложно, но насколько это нетривиальная задача по реализации? В сети читаю, что так борются с DDoS атаками, а также делают майнинг.

Да, так делают. Только правильно оцените свою квалификацию и затраты (время и деньги).
Go to the top of the page
 
+Quote Post
syoma
сообщение Nov 17 2016, 09:29
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 640
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Спасибо за советы. Забыл уточнить, что пока на 10G не замахиваемся вообще. 1G - наше все. Также есть возможность покупать корки у Xilinx - я смотрю, они для нас по цене подъемные.
MAC корку в FPGA уже запустили - программист ждет с нетерпением пока приедут SFP модули, чтобы протестировать нашу сетку.
Про драйвер более мене понятно. Осталось разобраться, что делать с PCIe со стороны ПЛИС - ДМА мы уже делали, если это не сильно отличается, то должно работать.
Немного добавлю про задачи такой карты - хотим сделать поддержку PRP на аппаратном уровне, а также вычленять GOOSE сообщения из трафика. Все по МЭК-61850
Go to the top of the page
 
+Quote Post
makc
сообщение Nov 17 2016, 09:50
Сообщение #9


Гуру
******

Группа: Админы
Сообщений: 3 533
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(syoma @ Nov 17 2016, 12:29) *
MAC корку в FPGA уже запустили - программист ждет с нетерпением пока приедут SFP модули, чтобы протестировать нашу сетку.


Будьте готовы, что с SFP типа SGMII<->RJ45 будут приключения по части инициализации, т.к. мало кто из производителей детализирует, что за PHY стоит внутри. В большинстве, по моему опыту, стоит Marvell 88E1111, но встречается и Broadcom. Для Marvell примеры инициализации есть, но и тут могут быть нюансы, т.к. у некоторых модулей TX_DIS идет не на вход сброса PHY, а на управление питанием внутренних источников SFP-модуля (например, у Zyxel), т.к. требования к этому сигналу несколько иные, чем у простого сигнала сброса. С гигабитной оптикой я проблем не помню.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
akorud
сообщение Nov 17 2016, 12:58
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(syoma @ Nov 17 2016, 10:29) *
Осталось разобраться, что делать с PCIe со стороны ПЛИС

Начинать надо с https://www.xilinx.com/products/intellectua...y/axi_pcie.html
Для начала даже драйвера не надо - таким вот способом http://billfarrow.blogspot.com/2010/09/use...pci-memory.html можно легко инициировать транзакции на шине "по той стороне" PCIe.
Go to the top of the page
 
+Quote Post
syoma
сообщение Nov 18 2016, 09:44
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 640
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата(akorud @ Nov 17 2016, 15:58) *
Начинать надо с https://www.xilinx.com/products/intellectua...y/axi_pcie.html
Для начала даже драйвера не надо - таким вот способом http://billfarrow.blogspot.com/2010/09/use...pci-memory.html можно легко инициировать транзакции на шине "по той стороне" PCIe.

Я имел ввиду в плане "эмуляции" сетевой карты на PCIe. Работать с PCIe мы умеем.
Go to the top of the page
 
+Quote Post
akorud
сообщение Nov 18 2016, 12:48
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(syoma @ Nov 18 2016, 10:44) *
Я имел ввиду в плане "эмуляции" сетевой карты на PCIe. Работать с PCIe мы умеем.

Извините, тогда думаю сюда https://www.xilinx.com/products/intellectua...ty/axi_dma.html
Через AXI-Stream к нему будет приходить пакет который надо передать на хост и оно используя дескрипторы (предварительно заполненные драйвером) будет через PCIe записывать данные прямо в память хоста. А дальше дело драйвера.
Go to the top of the page
 
+Quote Post
syoma
сообщение Oct 13 2017, 10:06
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 640
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Обновление такое - 1Гбит и 10Гбит на ПЛИС запущены и работают с SFP. Трафик гоняется, пакеты обрабатываются в ПЛИС.
Также сделан процессорный интерфейс с DMA по PCIe. Осталось дело за драйвером.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Oct 13 2017, 10:26
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 703
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(syoma @ Nov 15 2016, 14:57) *
"Продвинутость" должна заключаться в том, что ПЛИС должна выделять из сетевого трафика отдельные MAC фреймы и обрабатывать из локально, чтобы получить более быструю реакцию на определенные события в сети. Весь остальной трафик должен тупо передаваться на CPU по PCIe для дальнейшей обработки процессором, в таком виде, как это обычно делает обычная сетевая карта.

FYI: Ускоритель алгоритмов на базе ПЛИС Arriga 10 GX от Intel.
Go to the top of the page
 
+Quote Post
Doka
сообщение Oct 18 2017, 13:07
Сообщение #15


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 080
Регистрация: 4-10-04
Из: Russia, Moscow
Пользователь №: 778



syoma
Если не секрет, для чего вычленять GOOSE из трафика?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th November 2017 - 08:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016