Перейти к содержанию
    

FPGA + PCIe ethernet сниффер

доброго времени суток!

Стоит следующая задача - подключить некоторое количество сетевых карточек Intel 82574l (через свич вестимо) к FPGA (присматриваюсь пока к cyclone IV GX )

на 100 Мбит снифить входящий из сети поток и вытаскивать данные из определенных пакетов (сетевой протокол уровня tcp) и передачи содержимого на ПК

отсюда куча вопросов новичка в реализации этого дела

 

1 есть ли примеры подключения pcie (или pci) сетевухи к данным fpga?

как я понимаю, мне надо будет сконфигурировать чип при старте, а потом по DMA вытаскивать из него ethernet пакеты и анализировать их?

понемного начал читать про режимы конфигурирования на шине, чуствую, что не совсем пока представляю весь объем необходимой работы (пока с pci работал программно , на уровне API ОС , где не недо было думать о начальной конфигурации)

 

2 допустим я разобрался с подключением одного чипа, а как быть с несколькими чипами и мостом? ведь хост(в даннмо случае FPGA) должен выделить память под каждое устройство на шине? вероятно придется еще и память внешную прикручивать (а возможно ее придется прикручивать и при одиночном чипе)

 

2 насколько я понял, cyclone IV GX (а конекретнее EP4CGX15BF14) содержит аппаратную реализацию одного pcie порта , который может быть x4

можно ли реализовать связь с сетью через аппаратное pcie ядро а связь с вышестоящей системой через оставшиеся линии (достаточно x1)

пока в голову лишь лезет реализация обычного PCI для связи с ПК , если потребуется в будущем PCIE то видимо придется поставить мост PEX 8112

 

3 в идеале , все таки хотелось, чтобы данные сетевухи были прозрачные для вышестоящей системы

то есть fpga будет выступать в роли отдельного устройства, которое просто будет снифить входящий траффик, после того как ПК сконфигурирует сетевые чипы сама

как такое можно реализовать?

мне такой вариант больше подуше , ибо не надо будет заниматься конфигурированием всего этого мяса, правда чтобы вычленить нужные данные , мне необходимо будет знать положение и данные об конфигурационном пространстве каждого из чипов на шине, а это значит что мне все таки придется с ними общаться в рамках шины (а не тупо снифить линию)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то трудно понять, о чем все-таки идет речь.

FPGA должна перехватывать поток на шине PCIe, или на Ethernet'е? Зачем нужны сетевые карты?

По-моему, намного проще организовать перехват Ethernet'а (особенно если нет задачи манипуляции потоком, т.е. пассивный снифф), чем перехватывать непонятно что, творящееся на PCIe шине сетевой карты.

Вообще здесь лучше посмотреть в сторону специализированных сетевых процессоров, особенно если нужно достичь уровня полновесного DPI. Т.к. во всем мире эта тема набрала бешеную популярность, для решения подобных задач сегодня существует море более удобного железа, чем FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то трудно понять, о чем все-таки идет речь.

FPGA должна перехватывать поток на шине PCIe, или на Ethernet'е? Зачем нужны сетевые карты?

По-моему, намного проще организовать перехват Ethernet'а (особенно если нет задачи манипуляции потоком, т.е. пассивный снифф), чем перехватывать непонятно что, творящееся на PCIe шине сетевой карты.

Вообще здесь лучше посмотреть в сторону специализированных сетевых процессоров, особенно если нужно достичь уровня полновесного DPI. Т.к. во всем мире эта тема набрала бешеную популярность, для решения подобных задач сегодня существует море более удобного железа, чем FPGA.

 

Ага, согласен.

Смотрите в сторону Freescale QorIQ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

доброго времени суток!

Стоит следующая задача - подключить некоторое количество сетевых карточек Intel 82574l (через свич вестимо) к FPGA (присматриваюсь пока к cyclone IV GX )

на 100 Мбит снифить входящий из сети поток и вытаскивать данные из определенных пакетов (сетевой протокол уровня tcp) и передачи содержимого на ПК

отсюда куча вопросов новичка в реализации этого дела

 

Посмотрите у Микрела KS8995 - 8999 - это свитчи у которых есть PHY. А один порт у них - это MII. Вот его и подключайте к ПЛИС... Или же напрямую к микроконтроллеру с МАсом.

А если поток не сильно большой, то берите однопортовые контроллеры с выходом на SPI. И их заводите в ПЛИС или в микроконтроллер...

Делать же в ПЛИС МАС вообще не выгдодно, а уж несколько МАСов - вообще бесполезная трата денег...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то трудно понять, о чем все-таки идет речь.

FPGA должна перехватывать поток на шине PCIe, или на Ethernet'е? Зачем нужны сетевые карты?

Сетевые карты нужны поскольку уже есть готовая система на них , которая программно выполняет все возложенные задачи задачи (пассивный снифф , и просто работа со всеми протоколами, которые могут быть в данных сетях) , цель стоит именно в передачи части функционала (а именно только прослушки) для разгрузки процессора

Насколько я знаю подключать к FPGA PHY езернета через MDI и им подобные интерфейсы хреновый вариант ибо ethernet МAC ядро у альтеры платное (я пока не знаю насколько сложная его самостоятельная реализация и есть ли бесплатные аналоги)

 

 

посмотрел, у 82574l есть NC-SI интерфейс, судя по описанию это как раз то, что мне нужно!

post-72823-1350805093_thumb.png

вроде как фильтрация по MAC адресам и vlan тегам релизуется в самом контроллере а не FPGA а это еще более упрощает задачу

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сетевые карты нужны поскольку уже есть готовая система на них , которая программно выполняет все возложенные задачи задачи (пассивный снифф , и просто работа со всеми протоколами, которые могут быть в данных сетях) , цель стоит именно в передачи части функционала (а именно только прослушки) для разгрузки процессора

 

Я не большой специалист в данном вопросе, но по моему мнению, в данной постановке задача неподъемная.

У вас имеется некая процессорная система с сетевыми картами и почти наверняка linux-системой, с навороченным над нею программным пакетным обработчиком.

Теперь вы хотите заменить могучий процессор на дохлую FPGA, заставить ее работать с сетевыми картами по PCIe и аппаратно что-то там делать с пакетами. Насколько я понимаю данную область, это практически нереально. Придется аппаратно реализовать драйвер сетевой карты, TCP/IP и прочие прелести.

 

Что касается простого пассивного подслушивания 100Мбит портов, это можно сделать на FPGA, но врезаться нужно не в PCIe шину, а в Ethernet. Сложность окажется намного меньшей. Однако, и для этой задачи FPGA - не самое лучшее решение.

 

Вражеская промышленность предлагает море готовых решений в виде специализированных многоядерных сетевых процессоров, оснащенных большим количеством MAC-интерфейсов, а зачастую - и совсем уж специальных сетевых акселераторов. Все это сдобрено готовыми программными стеками под linux, включая базу для построения DPI-систем, при этом обеспечивается как прозрачность, так и низкие значения задержек. Все это работает с портами до 10Гбит на line-speed. Все что нужно - перейти с процессора общего назначения на сетевой и перенести софт под такой же linux, но усиленный аппаратными ускорителями (под которые уже есть готовые драйверы).

 

В зависимости от тяжести задачи можно применять как универсальные сетевые процессоры (много жрут, могут все), например: Broadcom XLR/XLP, Cavium Octeon, Freescale QorlQ, или же пакетные процессоры (очень много портов, ограниченные возможности обработки) EZchip, Marvell Xelerated, и др.

 

Есть готовые платы (обычно ATCA), например, от Radisys, снаружи - набор Ethernet-портов (обычно 1Гбит, 10Гбит), внутри - пара XLR или Octeon'ов + управляющая система на PowerPC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не большой специалист в данном вопросе, но по моему мнению, в данной постановке задача неподъемная.

У вас имеется некая процессорная система с сетевыми картами и почти наверняка linux-системой, с навороченным над нею программным пакетным обработчиком.

Теперь вы хотите заменить могучий процессор на дохлую FPGA, заставить ее работать с сетевыми картами по PCIe и аппаратно что-то там делать с пакетами.

в том то и дело - не хотелось бы заменять - пусть процессорная система как и раньше работает с сетью , настраивает и конфигурирует, но не обрабатывает входящие данные в реальном времени - этим должна заниматься "врезка" . я уже понял что на pci шине это делать сложновато - слишком много высокоуровневых сущностей.

 

Что касается простого пассивного подслушивания 100Мбит портов, это можно сделать на FPGA, но врезаться нужно не в PCIe шину, а в Ethernet. Сложность окажется намного меньшей. Однако, и для этой задачи FPGA - не самое лучшее решение.

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

А что понимается под врезкой? то что я написал выше? (NC-SI, или SMbus например) или "врезка" на уровне mdi ? (по идее протокол таков , что я конкретно знаю мак адреса с которых идут специфические пакеты,можно фльтровать по ним и мак уровень особо реализовывать не надо)

пока буду разбираться с NC-SI , уж очень привлекательна она по описанию оказывается , ад и другие сетевые чипы врят ли подойдут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока буду разбираться с NC-SI , уж очень привлекательна она по описанию оказывается , ад и другие сетевые чипы врят ли подойдут.

Упорно не желаете правильно сформулировать задачу, а отсюда выбираете кривой путь.

У меня на сайте прочтите о "Гайке" - это Ваш случай. Вам надо сделать сборку из управляемых свитчей и к ним добавить обычные процессоры, имеющие PHY. Для 100 Мбит дело не сильно сложное.

Вы же не пишите о серийности, а значит это разовое изделие. А потому надо селать его на готовых процессорных платах и не заниматься экзотикой...

Я же не советую Вам KS8695 для разборки пакетов и коммутации. В Вашем случае все гораздо проще. Врезаете в линию свитч и на РС зеркалите проходящие на остальные порты пакеты. Вот и все дела...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Упорно не желаете правильно сформулировать задачу, а отсюда выбираете кривой путь.

У меня на сайте прочтите о "Гайке" - это Ваш случай. Вам надо сделать сборку из управляемых свитчей и к ним добавить обычные процессоры, имеющие PHY. Для 100 Мбит дело не сильно сложное.

Вы же не пишите о серийности, а значит это разовое изделие. А потому надо селать его на готовых процессорных платах и не заниматься экзотикой...

Я же не советую Вам KS8695 для разборки пакетов и коммутации. В Вашем случае все гораздо проще. Врезаете в линию свитч и на РС зеркалите проходящие на остальные порты пакеты. Вот и все дела...

 

Кажется я понял что вы имеете ввиду, похожую идею впринципе можно реализовать даже на МК (у нас есть один девайс состоящий из двухпортовго свича управляемого и STM32 на управлении), тогда и плис не понадобится

остается найти свитч с поддержкой ieee 1588 (это еще одно условие , почему я держучсь за определенный сетевой чип), пока вижу KSZ8463 но он правда трехпортовый

Изменено пользователем некуцй

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кажется я понял что вы имеете ввиду, похожую идею впринципе можно реализовать даже на МК (у нас есть один девайс состоящий из двухпортовго свича управляемого и STM32 на управлении), тогда и плис не понадобится

остается найти свитч с поддержкой ieee 1588 (это еще одно условие , почему я держучсь за определенный сетевой чип), пока вижу KSZ8463 но он правда трехпортовый

 

Не буду распространяться особо про 1588.

Но Вы учли что 1588 должен поддерживаться еще и ВСЕМИ PHY в системе?

 

Найти свич с 1588? :)

Vitesse например.

Только в первую очередь узнайте сколько это стоит.

Я узнал - и пока не будет заказчика с места не тронусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не буду распространяться особо про 1588.

Но Вы учли что 1588 должен поддерживаться еще и ВСЕМИ PHY в системе?

Найти свич с 1588? :)

Vitesse например.

Только в первую очередь узнайте сколько это стоит.

Я узнал - и пока не будет заказчика с места не тронусь.

Ну в данном случае шла речь об двух портовом свитче внутри устройства в разрыв для сниффинга.

А на счет свитчей для реализации сети - пока не особо важно какие , у нас специфические условия (сетевое оборудования в рамках стандарта 61850), и оборудование на рынке есть.

Цены пока конечно на такое оборудование заоблачные, но заказчикам деваться некуда , да и устройств пока не много на объектах поэтому не особо паримся.

А закладываться на то, что в будущем он будет применяться повсеместно в наших устройствах приходится.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

купите готовый свич с port mirroring, настройте слив трафика на ПК, и сниффите сколько вам влезет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...