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

подскажите хороший tcp/ip стек

Гость MALLOY2

я сейчас узаю lwip 1.2.0 на STR912F, результатми очень доволен, на тесте типа заполняем масив через memset и отпраляет получил на TCP 30.1 mbit/s на UDP до 60 mbit/s, с приемом немного хуже на UDP не измерял, а на TCP 19.8 mbit/s.

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


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

Как на lwip сделать FTP клиента?

Или другими словами: как выглядит С программа в приборе со стеком lwip, чтобы прибор мог активно открыть на удалённом сервере два разных порта одновременно?

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


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

Гость MALLOY2

да как все делают, а открыть можно скок угодно портов, все зависит от того скоко у вас памяти и какая нужна производительность, у меня на данный момент работает 2 порта сервера, и 1 порт клиента TCP и 1 UDP порт. Использую метод Callback но кому нравятся сокеты можно и их использовать.

 

1 порт сервера под telnet может подключатся только 1 клиент. и 1 порт под http может подключатся до 4 клиентов одновременно.

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


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

LWIP, At91RM9200, GCC 4.1.2. HTTP-клиент. Скорость скачивания файлов - 5.7 Мбайт в секунду.

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

Изменено пользователем e-yes

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


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

Насчёт где достать исходники LwIP: на сайте freertos.org скачиваете архив исходников операционки с примерами. Среди примеров- порт данного стека (и заодно uIP) под эту операционку. Существует также порт LwIP стека под uC/OSII (гдето на sourceforge.net - если надо могу уточнить но в поисковике ищется). Эти файлы и взял за основу когда прикручивал LwIP к uC/OSII.

 

Кто может дать сравнительный анализ uIP и LwIP по размеру кода и функциональности? Ато сомнения гложут...

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


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

Кстати, о птицах...

 

А emBetter кто нибудь реально пробовал?

 

http://www.stzedn.de/index.php?id=6&L=1

 

Расписано красиво... А как на деле? ;)

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


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

emBetter - неизвестный продукт неизвестной фирмы.

Лучше взять TCP/IP стек от фирмы CMX:

http://www.cmx.com/tcpstacks.htm

Он стоит 9500USD и свободно нигде не лежит.

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


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

Кто может дать сравнительный анализ uIP и LwIP по размеру кода и функциональности? Ато сомнения гложут...

Лучше автора никто не сравнит:

http://www.sics.se/~adam/mobisys2003.pdf

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


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

Надо добавить, что сейчас LwIP свободно "доразрабатывается" на нонгну: savannah.nongnu.org/projects/lwip/

Пофиксено немало багов и функциональности добавлено.

Изменено пользователем e-yes

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


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

После отимизаций стека LwIP на STR912FA получил скорость TCP 5.6 метра в секунду :).
Весьма интересно в чем заключались эти оптимизации. Хотябы в общих словах.

Кстати у меня при попытке увеличить TCP_SND_BUF выше TCP_MSS сразу пропадала связь и на аки он отвечал ресетами. Неужели у at91sam7x256 ему памяти не хватает... А так скорость 300килоБАЙТ в секунду уверенно.

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


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

Гость MALLOY2

1) 8- битные и 16 битные переменные полей которые работали как счетчки или как переменные хранящие длинну, также все локальные счетчики счетчики были сделаны 32 битным типом.

 

2) критичные функции типа CRC перенесены в ОЗУ (в итоге программа в ОЗУ сьела 8к )

 

3) драйвер MAC буфиризирован.

 

4) в входном буфере нет копирования, тобиш выделяется место в PBUF под максимальную длинну пакета и в DMA подсовывается адресс, выделение происходит на опереженеие то есть раньше чем принят пакет, это сьедает больше памяти так как выделяется всегда на максимальный пакет, но колосально подымает производительность. В дальнейшем пакет никгде не копируется а по ходу продвижения по стеку разбирается.

 

5) естественно заменен алгоритм CRC на более быстрый, он кстати идет вместе с стеком но почемуто не включен в него.

 

6) выкинуты функции memcpy библиотечные и заменены на более быстрые.

 

7) ну и естественно выбраны оптимальные настройки памяти стека.

 

8) по итогу код стека во флеш. ~22К, в ОЗУ 8К, использовано памяти под кучу и другую фигню ~60к

 

 

Ну приблизительно вот.

 

Вот мои настройки стека

lwipopts.zip

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


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

3) драйвер MAC буфиризирован.

 

Что это значит? можно подробнее?

 

4) в входном буфере нет копирования, тобиш выделяется место в PBUF под максимальную длинну пакета и в DMA подсовывается адресс, выделение происходит на опереженеие то есть раньше чем принят пакет, это сьедает больше памяти так как выделяется всегда на максимальный пакет, но колосально подымает производительность. В дальнейшем пакет никгде не копируется а по ходу продвижения по стеку разбирается.

 

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

В ином варианте мы тратим время на копирование, но дальше работают оба банка памяти. Один с ядром, а другой с емасом.

 

Я так понимаю, вы проводили какое-то тестирование. Можно ли подробнее узнать:

1 насколько этот механизм увеличил пропускную способность стека

2 есть ли пропадание пакетов из-за блокировки емак-а

3 Я понял что исходящие пакеты вы обрабатываете "по старому". Почему здесь не применяете зеро сайз копи?

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


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

Гость MALLOY2

Если ядро работает с езернет памятью

 

У STR912 нету езернет памяти, есть токо фифо которое в принципе скрыто от юзера, между фифо и озу стоит DMA.

 

Смысл буферизации заключается в том что б как можно меньше терять пакеты. Если не запустить DMA пакет не будет принят. Работает следующим как токо принят пакет, выделяется новый pbuf размером на макс пакет (1520 байт) и запускается DMA и так пока не кончатся pbuf :), приложения следит за этими pbuf и когда надо передвает в стек.

 

1 насколько этот механизм увеличил пропускную способность стека

намного как при передачи так и при приеме. изначально при первом старете получил 13 mbit/s передача и 5-6 mbit/s прием, на данный момент 40-46 mbit/s передача, 25-30 прием

 

2 есть ли пропадание пакетов из-за блокировки емак-а

Пропадаение пакетов есть, особенно если сеть перегружена броадкастами, но это не от блокировки емака, а от нехватки pbuf, память ведь ограничена.

 

3 Я понял что исходящие пакеты вы обрабатываете "по старому". Почему здесь не применяете зеро сайз копи?

Да по старому, вся проблема в STR DMA, он требует выравнивание адреса 4, а payload pbuf не имеет выравнивания и приемущественно расположен на границе 2 из-за 6 байтового MAC адресса. В дальнейшем можно будет переписать управление PBUF так чтобы выходные пакеты имели выравниваение, но это потом.... сейчас меня такие параметры устраивают, а времени в обрез

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


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

У STR912 нету езернет памяти, есть токо фифо которое в принципе скрыто от юзера, между фифо и озу стоит DMA.

 

Моя ошибка - невнимательно прочитал тред, я почему то был уверен, что вы используете лпс2300. Но в информация по любому очень интересная, большое спасибо :a14:

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


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

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

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

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

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

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

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

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

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

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