реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Вышла предварительная версия TN NET TCP/IP stack
LightElf
сообщение May 25 2010, 18:23
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



Цитата(yuri_t @ May 25 2010, 21:59) *
Можно


Здоровско!

Цитата(yuri_t @ May 25 2010, 21:59) *
На какой процессор собрались портировать ?


Два процессора - LM3S6965 и MCF52236.
Go to the top of the page
 
+Quote Post
shista
сообщение Jun 4 2010, 20:32
Сообщение #17





Группа: Участник
Сообщений: 12
Регистрация: 15-07-09
Пользователь №: 51 296



Во время разработки своего проекта столкнулся со следующей проблемой:
На одном сокете UDP происходит приём запроса через s_recvfrom, а затем отправка ответа через s_sendto. Так вот, после получения запроса данные в полях sin_addr.s__addr и sin_port структуры sockaddr__in указывающей на отправителя запроса содержатся в перевёрнутом виде (в intel формате). Перед отправкой данных порядок байтов данных полей приходится переворачивать.
В для устранения данной ситуации недрах стека в функции udp_s_recvfrom модифицировал код:
Код
//       sin->sin_port         = ntohs(ui->ui_sport);
//       sin->sin_addr.s__addr = ntohl(ui->ui_src.s__addr);
         sin->sin_port         = ui->ui_sport;
         sin->sin_addr.s__addr = ui->ui_src.s__addr;

Всё заработало.

Вопрос: корректна ли данная модификация или необходимо лезть глубже? Или вообще ничего модифицировать не надо, а так и должно быть?
Контроллер lpc2368.

Сильно не пинайте - это мои первые потуги в сетевом программировании, сетевым программированием я раньше не занимался, а на изучение исходного кода к сожалению нет времени.
Go to the top of the page
 
+Quote Post
grinux
сообщение Sep 17 2010, 15:19
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Добрый день.
Есть устройство, работающее по TCP с Win хостом.
Проблема в следующем: при активном подключении, если на устройстве сделать аппаратный RESET, оно как и положено в оставшийся открытым с точки зрения Win хоста сокет шлет RST. Но Win при этом продолжает делать посылки\перепослыки не воспринимая RST и не сообщая на верх об ошибке. Это приводит к тому, что реальное отключение приложения от сокета происходит только через минуту, что в моем случае неприемлемо. Есть ли какие нибудь варианты решить эту проблему? На устройстве стек TN_NET. На картинке суть проблемы.
Всем заранее спасибо.

Сообщение отредактировал grinux - Sep 17 2010, 15:23
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
grinux
сообщение Sep 20 2010, 17:07
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Сравнил работу устройства с Wiznet(правое окно), такой проблемы не обнаружил. Отличия только в дополнительном ARP запросе со стороны TN_NET, а также в том, что в пакете от Wiznet ack number отличен от нуля. Пробовал и в TN_NET вставлять ненулевой ack, но безрезультатно. Возможно дело в предварительном ARP запросе, но чтобы это отключить, нужно порядком поковыряться в исходниках.

Сообщение отредактировал grinux - Sep 20 2010, 17:10
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
grinux
сообщение Sep 21 2010, 10:41
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



С Linux ситуация аналогичная, RST не воспринимает.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 21 2010, 12:49
Сообщение #21


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Перенес в топик посты из соседней темы по просьбе топикстартера.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
grinux
сообщение Sep 21 2010, 14:03
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Цитата(Rst7 @ Sep 21 2010, 16:49) *
Перенес в топик посты из соседней темы по просьбе топикстартера.


По совету Rst7 выкладываю фалы дампов.
Дампы иллюстрируют следующую последовательность действий: установить телнет сессию, перезагрузить устройство, послать символ с клавиатуры в окно терминала установленной до перезагрузки устрйоства телнет сессии.

Прикрепленные файлы
Прикрепленный файл  rst_dump.zip ( 4.56 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 21 2010, 14:44
Сообщение #23


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Секундочку, а почему контрольная сумма TCP для пакетов c RST некорректна?

В стеке забыли вызвать считатель контрольной суммы при отсылке пакета с RST?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
grinux
сообщение Sep 21 2010, 15:54
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Цитата(Rst7 @ Sep 21 2010, 18:44) *
Секундочку, а почему контрольная сумма TCP для пакетов c RST некорректна?

В стеке забыли вызвать считатель контрольной суммы при отсылке пакета с RST?


Стек не трогал, только экспериментировал с ненулевым ack в пакете с RST.
Проверка КС для TCP была отключена в настройках WS, сейчас включил и увидел это у себя cranky.gif
Сейчас буду смотреть, что там с подсчетом КС.

Ошибка в функции tcp_respond(). Калькуляция КС TCP делалась по всему IP пакету (закомментировано), скопировал правильный вызов из tcp_output(). Все заработало.

Код
   //th->th_sum = in_cksum(m, tlen);
   th->th_sum = in4_cksum(m,
                          IPPROTO_TCP,  //-- to force calc TCP pseudo header
                          sizeof(struct ip),   //-- off; see above
                          m->m_tlen - sizeof(struct ip)); //-- len = TCP header + data


Спасибо Дмитрию.

Сообщение отредактировал grinux - Sep 21 2010, 14:59
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 21 2010, 16:50
Сообщение #25


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Ошибка в функции tcp_respond()


Если это у авторов стека, напишите им гневное письмо с люлЯми багрепорт wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Sep 22 2010, 11:33
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Большое спасибо Григорию, Дмитрию и вообше всем пользователям TN NET
за найденные (и, главное, исправленные) ошибки !!!
К сожалению, мои возможности тестирования (и, следовательно, улучшения) TN NET очень ограничены.
Поэтому большая просьба ко всем пользователям TN NET - пишите, пожалуйста, обо всех проблемах и
найденных багах(в любой форме - через e-mail конференции, на e-mail yuri at tnkernel.com, задавая вопросы в конференции etc.) .
Go to the top of the page
 
+Quote Post
grinux
сообщение Sep 24 2010, 17:12
Сообщение #27


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Юрий, вы не планируете в ближайшее время расширения функционала TN_NET? Например в части PPP протокола.
Что, на ваш взгляд можно взять как заготовку, как вы взяли BSD стек, для последующей интеграции с TN_NET\TnKernel?
Из открытых исходников я просматривал PPP для lwIP, который сделан на основе pppd из Linux, а также реализацию из Ethernut. Последняя весьма стройна и использует похожую идеологию пулов памяти.
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Sep 25 2010, 16:13
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Что бы написать PPP, нужен соответствующий реальный (в смысле не учебно-выдуманный) проект, например,
взаимодействие с каким нибудь wireless модемом. Пока такого проекта у меня не предвидится.
В планах - перенос TN NET на процессоры STM32 и Luminary, но пока, к сожалению, нет на это времени.
Go to the top of the page
 
+Quote Post
_NB
сообщение Sep 27 2010, 13:11
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 22-06-05
Из: Украина, г.Боярка
Пользователь №: 6 238



Цитата(yuri_t @ Sep 22 2010, 14:33) *
Большое спасибо Григорию, Дмитрию и вообше всем пользователям TN NET
за найденные (и, главное, исправленные) ошибки !!!
К сожалению, мои возможности тестирования (и, следовательно, улучшения) TN NET очень ограничены.

Есть небольшое пожелание - обновите, с учетом исправленых ошибок, версию на сайте.
Go to the top of the page
 
+Quote Post
Bender
сообщение Sep 30 2010, 08:56
Сообщение #30


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 28-06-05
Из: Тула
Пользователь №: 6 361



Цитата(yuri_t @ Sep 22 2010, 15:33) *
... Поэтому большая просьба ко всем пользователям TN NET - пишите, пожалуйста, обо всех проблемах и
найденных багах(в любой форме - через e-mail конференции, на e-mail yuri at tnkernel.com, задавая вопросы в конференции etc.) .


Заметил, что ARP запросы идут со случайным МАС отправителя. Так и должно быть?
Поправить просто:
в функции arp_request() добавить строку

CODE
eh = mtod(mb, struct ether_header *);
ea = (struct ether_arp *)(mb->m_data + sizeof(struct ether_header));

bzero((unsigned char *)ea, sizeof (*ea));
bcopy((unsigned char *)etherbroadcastaddr, (unsigned char *)eh->ether_dhost, MAC_SIZE);
bcopy((unsigned char *)&ni->hw_addr, (unsigned char *)eh->ether_shost, MAC_SIZE); //add


Результат:
Прикрепленное изображение

Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 13:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016