syoma 1 15 ноября, 2016 Опубликовано 15 ноября, 2016 · Жалоба Здравствуйте. Интересует мнение экспертов в правильном ли я направлении думаю. Есть FPGA PCIe карточка на Virtex-6 или 7, у которой есть 4-8шт 10Gbit SFP+ Портов. Через SFP порты карточка подключается к Ethernet. Хотелось бы сделать из нее нечто вроде "продвинутой" сетевой карты. "Продвинутость" должна заключаться в том, что ПЛИС должна выделять из сетевого трафика отдельные MAC фреймы и обрабатывать из локально, чтобы получить более быструю реакцию на определенные события в сети. Весь остальной трафик должен тупо передаваться на CPU по PCIe для дальнейшей обработки процессором, в таком виде, как это обычно делает обычная сетевая карта. Я так понимаю, что на уровне PCIe ПЛИС должна эмулировать какой-либо из стандартных Intelовских сетевых контроллеров типа i82xxx, чтобы она работала со стандартным драйвером со стороны процессора. Это так? Ну и собственно основной вопрос - так вообще делают? Просто мы с таким в своих проектах не сталкивались, мы с PCIe больше дружим, а Ethernet только под свои нужды использовали. Выглядит не сильно сложно, но насколько это нетривиальная задача по реализации? В сети читаю, что так борются с DDoS атаками, а также делают майнинг. Ну и вопрос, как такая карточка должна определяться со стороны CPU? Как свитч и несколько "виртуальных" endpoints? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor657 0 15 ноября, 2016 Опубликовано 15 ноября, 2016 · Жалоба Про эмуляцию стандартной карты - не думаю, что это простой путь. Обычно их производители не раскрывают внутреннюю структуру и исходный код драйвера и следовательно повторить их будет не просто. Обработка на уровне MAC не сложна, но с интерфейсом чип PHY-FPGA не всё так просто. Если опыта нет, то время потратите. Это я про 1G. С 10G не работал. Как я понимаю стандарта на межпортовое взаимодействие сетевых карт в Виндовс нет. Каждый делает как хочет. Драйвер для PCIe на таких скоростях потребует поддержки DMA, что сильно усложняет дизайн как в FPGA так и в драйвере. Успехов! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 220 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Все правильно, основные сложности лежат в области сопряжения MAC с хостом через эффективную реализацию обмена с помощью DMA + реализация доп.функций, разгружающих ЦП хоста (TCP Offload и т.п.). Причём если первая часть относительно не сложная на скоростях до 1 Гбит/с, то вот вторая часть требует значительных усилий и в железе, и в софте (драйвера). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Посмотрите проект White Rabbit на ohwr.org для примера. Там есть и разбор траффика, и выделение отдельных фреймов с обработкой, и "прозрачная" передача. Но для 1G. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Про эмуляцию стандартной карты - не думаю, что это простой путь. Обычно их производители не раскрывают внутреннюю структуру и исходный код драйвера и следовательно повторить их будет не просто. Под Linux драйвер для Интела - полностью открыт, считается одним из лучших драйверов сетевых карт. Обработка на уровне MAC не сложна, но с интерфейсом чип PHY-FPGA не всё так просто. Если опыта нет, то время потратите. Это я про 1G. С 10G не работал. У ТС нет чипов PHY - там SFP+. Работает сразу, только надо помнить, что Xilinx не поддерживает модули LR. А даже и если был бы чип - что ж там сложного? DMA надо, к сожалению у Xilinx нет бесплатного (в новых Виртексах вроде есть аппаратное встроенное в PCIe), надо использовать что-то подобное http://nwlogic.com/packetdma/, кстати там сразу и нарисована схема того, что Вы ищете :-). Коммерческое, но на фоне лицензии на 10G не сильно дорого :-) В эмуляцию стандартного контроллера я бы не игрался, разве что действительно очень надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Про эмуляцию стандартной карты - не думаю, что это простой путь. Обычно их производители не раскрывают внутреннюю структуру и исходный код драйвера и следовательно повторить их будет не просто.Что? Назовите хоть одну сетевую карту, исходный код которой закрыт для ОС 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 драйвер это немного отдельно, но тоже важно. Драйвер для PCIe на таких скоростях потребует поддержки DMA, что сильно усложняет дизайнНа каких же скоростях сетевой контроллер не требует поддержки DMA? И как это усложняет, если DMA есть почти в любом простом драйвере? Как это усложнит дизайн стороны FPGA если без DMA проект бессмысленный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAE 0 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Здравствуйте. Интересует мнение экспертов в правильном ли я направлении думаю. Есть FPGA PCIe карточка на Virtex-6 или 7, у которой есть 4-8шт 10Gbit SFP+ Портов. Через SFP порты карточка подключается к Ethernet. Хотелось бы сделать из нее нечто вроде "продвинутой" сетевой карты. "Продвинутость" должна заключаться в том, что ПЛИС должна выделять из сетевого трафика отдельные MAC фреймы и обрабатывать из локально, чтобы получить более быструю реакцию на определенные события в сети. Весь остальной трафик должен тупо передаваться на CPU по PCIe для дальнейшей обработки процессором, в таком виде, как это обычно делает обычная сетевая карта. Это стандартная задача для ПЛИС. Не сказал бы, что легко, но решается. Я так понимаю, что на уровне PCIe ПЛИС должна эмулировать какой-либо из стандартных Intelовских сетевых контроллеров типа i82xxx, чтобы она работала со стандартным драйвером со стороны процессора. Это так? Чем эмулировать чужую аппаратуру, проще написать свой драйвер Ну и собственно основной вопрос - так вообще делают? Просто мы с таким в своих проектах не сталкивались, мы с PCIe больше дружим, а Ethernet только под свои нужды использовали. Выглядит не сильно сложно, но насколько это нетривиальная задача по реализации? В сети читаю, что так борются с DDoS атаками, а также делают майнинг. Да, так делают. Только правильно оцените свою квалификацию и затраты (время и деньги). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 17 ноября, 2016 Опубликовано 17 ноября, 2016 · Жалоба Спасибо за советы. Забыл уточнить, что пока на 10G не замахиваемся вообще. 1G - наше все. Также есть возможность покупать корки у Xilinx - я смотрю, они для нас по цене подъемные. MAC корку в FPGA уже запустили - программист ждет с нетерпением пока приедут SFP модули, чтобы протестировать нашу сетку. Про драйвер более мене понятно. Осталось разобраться, что делать с PCIe со стороны ПЛИС - ДМА мы уже делали, если это не сильно отличается, то должно работать. Немного добавлю про задачи такой карты - хотим сделать поддержку PRP на аппаратном уровне, а также вычленять GOOSE сообщения из трафика. Все по МЭК-61850 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 220 17 ноября, 2016 Опубликовано 17 ноября, 2016 · Жалоба MAC корку в FPGA уже запустили - программист ждет с нетерпением пока приедут SFP модули, чтобы протестировать нашу сетку. Будьте готовы, что с SFP типа SGMII<->RJ45 будут приключения по части инициализации, т.к. мало кто из производителей детализирует, что за PHY стоит внутри. В большинстве, по моему опыту, стоит Marvell 88E1111, но встречается и Broadcom. Для Marvell примеры инициализации есть, но и тут могут быть нюансы, т.к. у некоторых модулей TX_DIS идет не на вход сброса PHY, а на управление питанием внутренних источников SFP-модуля (например, у Zyxel), т.к. требования к этому сигналу несколько иные, чем у простого сигнала сброса. С гигабитной оптикой я проблем не помню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 17 ноября, 2016 Опубликовано 17 ноября, 2016 · Жалоба Осталось разобраться, что делать с PCIe со стороны ПЛИС Начинать надо с https://www.xilinx.com/products/intellectua...y/axi_pcie.html Для начала даже драйвера не надо - таким вот способом http://billfarrow.blogspot.com/2010/09/use...pci-memory.html можно легко инициировать транзакции на шине "по той стороне" PCIe. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 18 ноября, 2016 Опубликовано 18 ноября, 2016 · Жалоба Начинать надо с https://www.xilinx.com/products/intellectua...y/axi_pcie.html Для начала даже драйвера не надо - таким вот способом http://billfarrow.blogspot.com/2010/09/use...pci-memory.html можно легко инициировать транзакции на шине "по той стороне" PCIe. Я имел ввиду в плане "эмуляции" сетевой карты на PCIe. Работать с PCIe мы умеем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 18 ноября, 2016 Опубликовано 18 ноября, 2016 · Жалоба Я имел ввиду в плане "эмуляции" сетевой карты на PCIe. Работать с PCIe мы умеем. Извините, тогда думаю сюда https://www.xilinx.com/products/intellectua...ty/axi_dma.html Через AXI-Stream к нему будет приходить пакет который надо передать на хост и оно используя дескрипторы (предварительно заполненные драйвером) будет через PCIe записывать данные прямо в память хоста. А дальше дело драйвера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба Обновление такое - 1Гбит и 10Гбит на ПЛИС запущены и работают с SFP. Трафик гоняется, пакеты обрабатываются в ПЛИС. Также сделан процессорный интерфейс с DMA по PCIe. Осталось дело за драйвером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 25 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба "Продвинутость" должна заключаться в том, что ПЛИС должна выделять из сетевого трафика отдельные MAC фреймы и обрабатывать из локально, чтобы получить более быструю реакцию на определенные события в сети. Весь остальной трафик должен тупо передаваться на CPU по PCIe для дальнейшей обработки процессором, в таком виде, как это обычно делает обычная сетевая карта. FYI: Ускоритель алгоритмов на базе ПЛИС Arriga 10 GX от Intel. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 18 октября, 2017 Опубликовано 18 октября, 2017 · Жалоба syoma Если не секрет, для чего вычленять GOOSE из трафика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться