syoma 1 18 марта, 2020 Опубликовано 18 марта, 2020 · Жалоба Привет. Вопрос - есть железяка, которая плюется очень частыми MAC фреймами (фактически стримит их с интервалом 100мкс), создавая трафик около 45Мбайт/с на гигабитном Ethernet интерфейсе. Требуется просто ловить эти фреймы обычным компом с сетевой карточкой и записывать на диск. Потеря пакетов нежелательна, но поштучно допустима. Желательно, чтобы запись могла вестись пока хватает винчестера - т.е несколько дней или часов непрерывно. В будущем трафик может увеличиться до 100Мбайт(тогда карточка будет 10Гбит). Возможно, надо будет буфферизировать в памяти, сжимать, и записывать уже сжатый поток. Возможно, что надо будет просто анализировать налету, ожидая появления определенных данных(триггера) и только тогда записывать на диск. Пробовали Wiresharkом - затыкается. Может я не там смотрю? Или надо производительную машину просто? Что можно применить готового? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 18 марта, 2020 Опубликовано 18 марта, 2020 · Жалоба Приветствую! Хорошую машинку надо бы естественно и сетевуху не самую дешевую. Подшаманить настройки сетевой и TCP/IP стека если есть возможность для минимизации потерь в очередях контроллера. Капчить без использования GUI, а из командной строки. У меня tcpdump пишет ~1 GB/s без затыков. Возится со сжатием для 50-100 MB/s IMHO смысла нет. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Спасибо. Вопрос - а что делать, если трафик будет не 45Мб, а 500Мб/с? Т.е. на порядок больше? Как его записать? Вообще получается 700Мбит/с максимум. Взять FPGA + NVME SSD и NVME контроллер на ней? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 87 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба 32 минуты назад, syoma сказал: Спасибо. Вопрос - а что делать, если трафик будет не 45Мб, а 500Мб/с? Т.е. на порядок больше? Как его записать? Распределить данные на несколько дисков. Как в RAID, какой-то из них умеет так делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Вроде NVME может до 3300МБ/с записывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Приветствую! 26 minutes ago, syoma said: Вопрос - а что делать, если трафик будет не 45Мб, а 500Мб/с? Т.е. на порядок больше? Как его записать? Да все то же самое делать, только чуть быстрее Я писал непрерывный трафик ~4-6 GByte/s с нескольких 10G сетевых на RAID0 из 32 SSD. А сейчас и 2-4 NVME SSD такое сможет В вашем случае, как я понял, основная сложность это то что идет большое количество малых пакетов. Основные потери при этом возникают во входных очередях сетевой карты. Соответственно нужна хорошая карта с возможно несколькими очередями большей глубины и распаралеливанием обслуживания очередей на несколько ядер. Ну или платка на FPGA чтобы внутри можно было сделать свою буфер/очередь с объединением пакетов и триггером событий. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Не, пакеты будут максимального размера. Quote Я писал непрерывный трафик ~4-6 GByte/s с нескольких 10G сетевых на RAID0 из 32 SSD. А сейчас и 2-4 NVME SSD такое сможет Тем же tcpdump? Что за железо(сетевухи, процессор)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Приветствую! 27 minutes ago, syoma said: Тем же tcpdump? Что за железо(сетевухи, процессор)? Нет - не tcpdump. Софт был свой. Да и трафик был не похож на ваш, там был поток данных с FPGA платы, который разбивался не несколько параллельных каналов 10G по UDP, а на приеме с нескольких сетевых объединялся и записывался. Сетевые были Intel 2x10G. Сейчас не вспомню точно тип (надо форуме поискать, была тема с пару лет назад я там подробнее описывал железо). Supermicro сервер, 2 x Xeon . А трафик с одной 10G сетевой нормально пишется tcpdump (опять же на серверном железе). Удачи! Rob. P.S. Ряд контор делают специальные сетевые заточенные для гарантированного захвата всего трафика. Как пример https://exablaze.com/capture Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба 3 hours ago, RobFPGA said: P.S. Ряд контор делают специальные сетевые заточенные для гарантированного захвата всего трафика. Как пример https://exablaze.com/capture Написал им, но выглядят слишком наворочено для моего применения. Какой-то суперточный тайм-стэмпинг - мне такой не нужен, так как у меня в самом фрейме уже будет записана метка времени для данных в нем. А когда этот фрейм будет принят даталоггером, мне пофиг. Кто еще есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Приветствую! 1 hour ago, syoma said: Кто еще есть? Не знаю, их много (lossless packet capture nic), я специально не занимался этим - мне было проще на FPGA сделать что нужно было. Поищите по теме "capture millions packet" можно найти инфу как настраивать стек при большом packet rate. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Та в общем вроде нет особых проблем с приемом. Вот, например, 8 лет назад - там что-то под 500к пакетов в секунду с средней полосой за 4Гбит/с. http://www.serverframework.com/asynchronousevents/2012/08/winsock-registered-io-io-completion-port-performance.html Проблем с записью тоже нет, если обеспечите дисковый массив с подходящей пропускной способностью. Если вдруг чего, то RIO и memory mapped files очень даже хорошо совмещаются, практически имеете полностью zerocopy. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 марта, 2020 Опубликовано 19 марта, 2020 · Жалоба Ок. Буду пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 20 марта, 2020 Опубликовано 20 марта, 2020 · Жалоба On 3/19/2020 at 10:52 AM, RobFPGA said: Сетевые были Intel 2x10G. Сейчас не вспомню точно тип (надо форуме поискать, была тема с пару лет назад я там подробнее описывал железо). В загашнике нашлась 10Гбитная сетевуха на i82599ES на 2 порта. Как думаете, подойдет для этих целей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 20 марта, 2020 Опубликовано 20 марта, 2020 · Жалоба Приветствую! 5 minutes ago, syoma said: В загашнике нашлась 10Гбитная сетевуха на i82599ES на 2 порта. Как думаете, подойдет для этих целей? Думаю вполне подойдет. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 25 марта, 2020 Опубликовано 25 марта, 2020 · Жалоба В общем протестировал 45 и 100Мбайт/с - пишет, зараза. Причем взял не самый крутой SSD, а тот, который без дела валяллся. Линукс показал, что возможная скорость записи 180МБайт/с. TCPdump все переварил, только он теряет пару тысяч пакетов вначале, когда инициализирует буффер, а потом все ОК и потерь больше нет. Загрузка проца 28%. Сейчас буду экспериментировать с 10GB. Так как NVME SSD в наличии пока нет, решил попробовать создать RAM-диск и писать туда - на машинке 64ГБ памяти, на полминуты хватит. Тут есть одна проблема. Ожидается, что запись будет вестись в режиме 24/7/365 и у меня выходит примерно 60ТБ за день. Держать на диске много данных не надо - несколько часов максимум, но у SSD проблема - с такой скоростью перезаписи их ресурса хватает на 20 дней максимум... А если брать магнитные SSD, то надо будет RAID1 на 10 штук минимум, чтобы обеспечить такую пропускную способность. В общем, не пойму пока какой массив дешевле получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться