|
Реально Fast Ethernet, Использование RAW-пакетов |
|
|
|
Mar 3 2008, 21:30
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Периодически вспыхивают дискуссии о реальной скорости передачи данных по Ethernet. У меня именно такая задача - в сенменте Ethernet-100 обеспечить передачу потока данных со скоростью не менее 80 Мbps. Как я уже докладывал, существующие стеки TCP/IP не обеспечивают такой скорости, даже в протоколе UDP. Для известных конструкций на микроконтроллерах, реальная скорость не превышает 20..25 Mbps. Поэтому было решено отойти от стандартов TCP/IP и максимально сократить программное вмешательство процессора в процесс отсылки пакетов. Городить FPGA для ENET-100 тоже не показалось оправданным. В результате, поиск остановился на кристалле STR912FAxx c ARM9 и Ethernet контроллером на борту. Почему именно на нем. Потому, что в нем так организована периферия, AHB шина, контроллер внешней шины и DMA-MAC, что позволяет заполнять FIFO MAC-контроллера внешними данными автономно, минуя шину процессора и минуя шину FLASH и SRAM. Т.е. процессор практически не тормозится, а закачка данных идет на максимальной скорости. Я реализовал простейший вид RAW-пакетов в формате Ethernet-II: <Dst><Src><FrameId><...Data...>. Где FrameId мне любезно предоставил наш уважаемый гуру. Вот первые результаты натурных испытания на модуле MMstr912 от Propox получена максимальная скорость передачи данных- 96 Mbps. Использование 100M сети на 96%. Это скорость, когда процессор ничем не занят. В реале же, я ожидаю незначительного снижения производительности из-за того, что подготовка и отсылка пакетов практически полностью осуществляется аппаратными средствами кристалла. Было проверено также прохождение такого потока данных через свитч. Нареканий нет. Также проверена возможность WinPCAP капчурить поток пакетов такой скорости поступления и записывать их в файл. Работает исправно на Windows XP c обычным пентиумом 800MHz. Сейчас я полон оптимизма и приступаю к реализации WEB-сервера на RAW-пакетах.
|
|
|
|
|
Mar 3 2008, 22:10
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Aprox @ Mar 4 2008, 00:30)  Как я уже докладывал, существующие стеки TCP/IP не обеспечивают такой скорости, даже в протоколе UDP. Для известных конструкций на микроконтроллерах, реальная скорость не превышает 20..25 Mbps. На ARM9 200MHz под Linux'ом получается скорость 93.9МБит/с для TCP соединения. Измерялось iperf'ом. Цитата(Aprox @ Mar 4 2008, 00:30)  Сейчас я полон оптимизма и приступаю к реализации WEB-сервера на RAW-пакетах. Какие же тут RAW-пакеты, если WEB-сервер предполагает использование TCP/IP?
|
|
|
|
|
Mar 4 2008, 09:22
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(aaarrr @ Mar 4 2008, 01:10)  На ARM9 200MHz под Linux'ом получается скорость 93.9МБит/с для TCP соединения. Измерялось iperf'ом. Мой выбор конструкции- все на одном кристалле, в корпусе LQFP-128, стоимостью $14. Ваш вариант ARM9 200MHz с Linux сопоставим по простоте и стоимости? Цитата Какие же тут RAW-пакеты, если WEB-сервер предполагает использование TCP/IP? Точно такой же, как делают WEB-сервер в сети на RS-485. Через шлюз CGI.
|
|
|
|
|
Mar 4 2008, 15:06
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(aaarrr @ Mar 4 2008, 13:18)  По стоимости сопоставим, по простоте - не очень  Если не секрет, какой кристалл используете, какая вокруг обвязка, сколько потребляет все вместе. И самый главный вопрос, ваш процессор кроме прокачки по TCP может заниматься еще чем-нибудь, например, управлением моторами, DSP обработкой речи?
|
|
|
|
|
Mar 4 2008, 15:29
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Aprox @ Mar 4 2008, 18:06)  Если не секрет, какой кристалл используете, какая вокруг обвязка, сколько потребляет все вместе. Скорость измерялась на платформе EP9312, но он уже старенький и потому дорогой. За $20 можно поставить AT91SAM9260+SDRAM+Flash. Цитата(Aprox @ Mar 4 2008, 18:06)  И самый главный вопрос, ваш процессор кроме прокачки по TCP может заниматься еще чем-нибудь, например, управлением моторами, DSP обработкой речи? Может, но "прокачка" при этом пострадает. Только зачем контроллеру мотора иметь 100Мбит Ethernet на полной скорости? Жевать полноценно такие потоки он все равно не сможет.
|
|
|
|
|
Mar 5 2008, 15:19
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(aaarrr @ Mar 4 2008, 18:29)  Скорость измерялась на платформе EP9312, но он уже старенький и потому дорогой. За $20 можно поставить AT91SAM9260+SDRAM+Flash. Я приглядывался к подобным вариантам, и показались они слишком громоздкими для моих задач. Раньше вся система WEB-управления прибором умещалась в однокристаллке с разумной тактовой частотой. Потом было поставлена задача, параллельно с уже существующем, создать канал перекачки внешних потоков данных в компьютер по Ethernet. Порывшись в вариантах, я понял, что однокристаллкой с существующим TCP/IP программным стеком тут делать нечего. А переходить на монстрообразные конструкции с дополнительными SDRAM, Flash, высокой тактовой частотой, BGA корпусами и многослойной печатной платой- сильно не хотелось. Очень обрадовался, когда узнал про однокристаллку STR912F, что там можно устроить практически аппаратную перекачку потока из внешней параллельной шины в MAC контроллер. Процессор не тормозится и спокойно может вести прежнюю задачу управления. Это было решающим пунктом в выборе решения. Этим же обстоятельством продиктован переход на RAW-пакеты и отказ от IP. Только в этом случае обеспечивается минимальное вмешательство процессора в перекачку данных, отсюда скорость. Цитата Может, но "прокачка" при этом пострадает. Только зачем контроллеру мотора иметь 100Мбит Ethernet на полной скорости? Жевать полноценно такие потоки он все равно не сможет. "Жевать" не требуется, надо тупо брать данные с EMI шины в виде готовых Raw-пакетов и пулять наружу через ENET. Если суда вклиниваются программные действия процессора, то скорость падает и тем больше, чем хуже написан софт TCP/IP стека. Кстати, какой использовали стек в своих испытаниях? GNU, opensource или покупной? Кроме того, задача управления прибором имеет высший приоритет, что в случае программного TCP/IP, потребует организации больших буферов в оперативной памяти на случай паузы из-за отвлечения процессора на управление. Крайне нежелательно для однокристальных ARM-ов, у которых довольно сильная напряженка именно со встроенной SRAM. Короче, чем меньше процессор участвует в тупой перекачке данных, тем лучше.
|
|
|
|
|
Mar 9 2008, 18:33
|
Участник

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

|
Цитата(Aprox @ Mar 4 2008, 01:30)  Периодически вспыхивают дискуссии о реальной скорости передачи данных по Ethernet... Для известных конструкций на микроконтроллерах, реальная скорость не превышает 20..25 Mbps... Мы тоже начали городить что-то подобное, но испугались что нехватит мощности ST912xx процессора и выбрали проц помощенее - iMX27 от freescale ( мощности небывает слишком много  . Цитата(Aprox @ Mar 4 2008, 01:30)  Вот первые результаты натурных испытания на модуле MMstr912 от Propox получена максимальная скорость передачи данных- 96 Mbps Как я понимаю тесты делались со стандартным ST MAC/DMA (ENET) фирмваром? Генерились готовые пакеты (в FPGA?) и передавались в FIFO MAC-контролера? А какой размер был тестовых пакетов? Максимальный? А есть возможность повторить тест, но с маленькими пакетами? Могут в таком тесте возникнуть сложности с пакетами размером до 100Б? Есть узкое место?
|
|
|
|
|
Mar 10 2008, 08:04
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(Raimis @ Mar 9 2008, 21:33)  Как я понимаю тесты делались со стандартным ST MAC/DMA (ENET) фирмваром? 91x_enet.c библиотеку переделал, выкинул все лишнее, что было нужно для TCP/IP. Цитата Генерились готовые пакеты (в FPGA?) и передавались в FIFO MAC-контролера? Да, готовый RAW-пакет, кроме CRC, выдает FPGA. ST MAC/DMA читает напрямую из 16-бит внешней шины. Процессор в заполнении пакета данными не задействован. Цитата А какой размер был тестовых пакетов? Максимальный? Да, 1500. Цитата А есть возможность повторить тест, но с маленькими пакетами? Могут в таком тесте возникнуть сложности с пакетами размером до 100Б? Есть узкое место? Я пробовал с пакетами 80 байт. Загрузка сети уменьшалась с 96% до 94%. Узкое место в этом случае предполагаю в большем участии процессора для пересылки. Hо это еще не проверялось. Hе знаю.
|
|
|
|
|
Mar 11 2008, 07:03
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 19-07-06
Пользователь №: 18 918

|
А как Ваше устройство отреагирует на сеть, где multicast разливается? Или оно только передает, но не принимает данные?
|
|
|
|
|
Mar 11 2008, 13:47
|
Участник

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

|
Цитата(Aprox @ Mar 10 2008, 12:04)  Я пробовал с пакетами 80 байт. Загрузка сети уменьшалась с 96% до 94%. Узкое место в этом случае предполагаю в большем участии процессора для пересылки. Hо это еще не проверялось. Hе знаю. это очень хорошая новость! А невозможно хотябы по косвенными признаками прикинуть насколько загружает процессор поток до потолка 80-ти байтовых пакет?
|
|
|
|
|
Mar 11 2008, 18:39
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(Raimis @ Mar 11 2008, 16:47)  это очень хорошая новость! А невозможно хотябы по косвенными признаками прикинуть насколько загружает процессор поток до потолка 80-ти байтовых пакет? Процессор для каждой передачи пакета задействуется на четыре С-строки инициализации дескриптора MAC-DMA, что займет где-то порядка 0,5мкс. Далее передача пакета происходит без участия процессора. Hа пакете в 1500 загрузка процессора составляет 0.5ukc/120ukc=0.5% всего времени. При пакете в 80 байт будет примерно 0.5/6,4= 15% всего времени.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|