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

стою перед выбором TN NET или lwIP.

запустил на LPC1778 MAC-уровень. По крайней мере пакеты из сетки вылавливает.

 

Стоит вопрос выбора TCP/UDP стека.

 

Ни того, и ни другого не применял. И интересует кто применял оба стека и на каком в итоге варианте остановился и почему.

 

В качестве RTOS применяю TnKernel, и вот думаю править ли древний TNNET написанный в 2009ом под LPC23xx или же прикрутить lwIP. У последнего и обновления возможны, однако первый более заточен под Ось и поэтому ожидаем более высокий DataRate

 

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


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

Коллега на этот проц ставил ЛвИП и Какой то стэк от каила. Сказал что стэк от кеила лучше, быстрее и стабильнее работает... Но без операционки. Может эта информация вам пригодится..

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


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

берите TNNet это все таки порт BSD стека, тем более раз используете TNKernel.

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


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

а еще на документацию надо обратить внимания. Для ЛВиП ее нет просто...

Это как нету?

Все есть! К тому же еще код под doxygen

 

есть еще статья автора

Design and Implementation of the lwIP TCP/IP Stack

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


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

Коллега на этот проц ставил ЛвИП и Какой то стэк от каила. Сказал что стэк от кеила лучше, быстрее и стабильнее работает... Но без операционки. Может эта информация вам пригодится..

У кейла стек поддерживает только один неподтверждённый TCP сегмент (а-ля uIP), поэтому "DataRate", упомянутый топикстартером, будет так себе, особенно если пинг медленный. Зато lwip - более полноценный стек, там такого ограничения нет. Но его нужно довольно тщательно настраивать, а в условиях скудности документации это непросто. Так что предполагаю, что ваш коллега просто не смог или не захотел его допилить.

Сам использую lwip без RTOS (http, telnet, SNMP, SNTP). Полёт нормальный.

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


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

Это как нету?

Все есть! К тому же еще код под doxygen

 

есть еще статья автора

Design and Implementation of the lwIP TCP/IP Stack

 

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

 

У кейла стек поддерживает только один неподтверждённый TCP сегмент (а-ля uIP), поэтому "DataRate", упомянутый топикстартером, будет так себе, особенно если пинг медленный. Зато lwip - более полноценный стек, там такого ограничения нет. Но его нужно довольно тщательно настраивать, а в условиях скудности документации это непросто. Так что предполагаю, что ваш коллега просто не смог или не захотел его допилить.

Сам использую lwip без RTOS (http, telnet, SNMP, SNTP). Полёт нормальный.

 

Все может быть. Я кейловский не использовал, но коллега сказал что сначала он работал медленно, потом он включил режим без подветрждения каждого сегмента ( я так понимаю стандартный оконный режим на более 1 сегмента) и все заработало. На ЛвИП я получил примерно те же скорости что и он.

 

У меня ЛвИП на первый взгляд тоже работает, но иногда бывают сбои. Проскакивают запросы на ретрансмит пакетов. 1 пакет на 5 минут плотного трафика. Причины я так и не нашел, но там могло и железо быть виновато, у меня все это на ПЛИС крутилось в их процессоре. Так что чувство от ЛвИП двоякое...

 

 

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


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

Вставлю свои коментарии, ибо я тот самый колега.

Поскольку не являюсь большим фанатом ковыряния стеков, ибо не программист вовсе, да и на это уходит большое кол-во драгоценного времени. Однако оба стека удалось прикрутить к lpc1768. TNnet заработал практически сразу, благо есть тема где уже его поритили на данный камень. с LwIP пришлось изрядно помучится, но запустить все же удалось, однако я так и не смог нормально реализовать на нем DHCP и еще что то, уже не помню, разбираться не было времени и я его бросил. После этого перешел на Rl-tcpnet, до сих пор на нем сижу, благо в кейл оно встроено да и есть возможность работать с ихней же RTos, кстати вот фичи: http://www.keil.com/rl-arm/rl-tcpnet_specs.asp. Правда топикстартер уже работет с TNkernel, тада видимо прощще ставить TNnet.

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


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

После этого перешел на Rl-tcpnet, до сих пор на нем сижу, благо в кейл оно встроено да и есть возможность работать с ихней же RTos

И какую скорость на кейловском стеке получили? У меня вышло в максимуме 18 Mb (на lpc2478). Для проекта этого хватило, но на будущее думал смотреть в другую сторону.

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


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

И какую скорость на кейловском стеке получили? У меня вышло в максимуме 18 Mb (на lpc2478). Для проекта этого хватило, но на будущее думал смотреть в другую сторону.

Порядка 3,5 Мбайт в сек. плюс минус. LPC1768 на прием, TCP. Меня вполне устроило.

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


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

На lpc1778 работает и TNnet и LwIP. С dhcp в LwIP проблем не было, все завелось

сразу. По ресурсам процессора - примерно одинаково.

 

на Lwip максимальная скорость отдачи по http файла (100мб) из памяти порядка 6 Mb/s.

у TNnet точно больше 3 Mb/s.

 

оба стека использовались вместе с TNkernel.

 

некоторый плюс у LwIP - есть обсуждение на сайте разработчиков, есть ipv6 и ppp

минус - настройки требуют некоторого шаманства.

 

 

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


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

Порядка 3,5 Мбайт в сек. плюс минус. LPC1768 на прием, TCP. Меня вполне устроило.

Думаю разница в скорости объясняется отличием тактовых частот наших процессоров. Если производительность устраивает, то работать с кейловским стеком одно удовольствие. Если нет - тут на форуме выкладывали самописный стек с производительностью в несколько раз лучше.

 

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


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

некропост, но все же.

Коллеги обнаружили косячок в TN-NET, адрес ххх.ххх.ххх.224 определяется как мультикаст.

фикс

diff -ruN a/tn_tcp_input.c b/tn_tcp_input.c
--- a/tn_tcp_input.c    2020-07-29 13:31:06.307938051 +0300
+++ b/tn_tcp_input.c    2020-07-29 13:32:15.195940638 +0300
@@ -316,7 +316,7 @@
    th   = (struct tcphdr *)(((unsigned char *)m->m_data) + iphlen);
    tlen = m->m_tlen - iphlen;         //-- TCP header + data
 
-   if(IN_MULTICAST(ip->ip_dst.s__addr) || in_broadcast(ip->ip_dst, ni))
+   if(IN_MULTICAST(ntohl(ip->ip_dst.s__addr)) || in_broadcast(ip->ip_dst, ni))
       goto drop;
 
    if(in4_cksum(m, IPPROTO_TCP, iphlen, tlen))

 

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


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

8 minutes ago, megajohn said:

Коллеги обнаружили косячок в TN-NET

Зашёл на сайт, а там последние обновления от ноября 2017 года что по стэку, что по оси. ИМХО, проект не развивается...

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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