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

uip стек, работа с несколькими соединениями

8 minutes ago, mantech said:

, но того, что удовлетворяет  требованиям выше, или того, чтоб пол-года не портировать, не нашел...

Подозрительно непонятные требования.
Вместо того чтобы бы указать лимит RAM и Flash, частоту процессора, потребление, сколько Mbit нужно получить и какая медиасреда выставляется условие чтоб "стек не падал" или падал, но незаметно.
И вы с такими требованиями рассчитываете на что-то кроме шуток? 
Стыдно должно быть после такого количества постов на форуме идти тролить в раздел для начинающих. 
 

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


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

1 час назад, AlexandrY сказал:

Вместо того чтобы бы указать лимит RAM и Flash, частоту процессора, потребление, сколько Mbit нужно получить и какая медиасреда выставляется условие чтоб "стек не падал" или падал, но незаметно.

Вот честно - какая разница? Указано условие, чтоб не использовалась динамическая память, нужна поддержка протокола TCP и одновременная работа нескольких клиентских и серверных подключений. Второе - надежность системы, в идеале - чтоб не падала, в реальности, если упадет, то быстрая переинициализация и работа далее... Все остальное - вторично. Какой МК, пусть будет STM32F407 и более навороченные, но стек - далеко не единственная задача для МК.

По-моему - никаких тут шуток, все понятно и конкретно...

1 час назад, AlexandrY сказал:

Стыдно должно быть после такого количества постов на форуме идти тролить в раздел для начинающих. 

Нет не стыдно и не смешно, я не могу быть профессионалом во всех областях, как например интернет протоколы, но похоже, скоро изучу и это, хоть и не хотел изначально...

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


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

В 15.10.2019 в 21:54, mantech сказал:

Приветствую.

Вообщем, решил я полностью переделать все, что можно и сделать что-то свое. Причем оно даже заработало, что удивительно:biggrin:

Но есть один вопрос: Пример, скачивание файла по FTP. Скорость очень низкая (10 Кбайт в сек), но самое интересное то, что закачка идет на скорости 500 и более Кбайт сек. Посмотрел вирешарком, показывает, что время, между тем, когда я отдаю пакет (1440байт) FTP клиенту (на компе под виндой)  и приемом подтверждения около 0.2 сек. Почему так много, кто знает? Сразу скажу, время между приемом пакета эзернет-контроллером и передачу его в стек меньше миллисекунды, поэтому будем считать, что потерь там нет.

Сеть - 100мбис\с просто контроллер и комп соединенные через свич.

Изменено пользователем mantech

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


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

17 минут назад, mantech сказал:

Вообщем, решил я полностью переделать все, что можно и сделать что-то свое. Причем оно даже заработало, что удивительно:biggrin:

Поздравляю! Нашего полку прибыло.  :wink:

Цитата

Посмотрел вирешарком, показывает, что время, между тем, когда я отдаю пакет (1440байт) FTP клиенту (на компе под виндой)  и приемом подтверждения около 0.2 сек. Почему так много, кто знает? Сразу скажу, время между приемом пакета эзернет-контроллером и передачу его в стек меньше миллисекунды, поэтому будем считать, что потерь там нет.

Но видимо так работает ваш стек. :unknw:

Протрассируйте все шаги от обнаружения прихода пакета извне (внутри ISR Ethernet), до завершения отправки его наружу (опять-же - в ISR Ethernet). С метками времени.

И размер окна для TCP вы правильно выставляете? А то может у Вас "синдром "глупого" окна"?  :wink:

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


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

5 минут назад, jcxz сказал:

Протрассируйте все шаги от обнаружения прихода пакета извне (внутри ISR Ethernet), до завершения отправки его наружу (опять-же - в ISR Ethernet). С метками времени

Проверял там все ок (в пределах разумного конечно) Потерю времени считал именно от момента отправки в сеть пакета с данными и до прихода из сети (не обработки его стеком, а именно из сети) пакета подтверждения.

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


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

20 minutes ago, mantech said:

Посмотрел вирешарком, показывает, что время, между тем, когда я отдаю пакет (1440байт) FTP клиенту (на компе под виндой)  и приемом подтверждения около 0.2 сек. Почему так много, кто знает?

Потому что не принято засорять сеть ненужными подтверждениями. Гуглите "delayed ACK" и "Nagle's algorithm".

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


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

7 минут назад, jcxz сказал:

И размер окна для TCP вы правильно выставляете? А то может у Вас "синдром "глупого" окна"? 

А вот про это можно по-подробнее? Где что выставить и посмотреть...

2 минуты назад, aaarrr сказал:

Потому что не принято засорять сеть ненужными подтверждениями.

А если мне нужно получить подтверждение именно после 1 пакета, то что делать??

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


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

2 minutes ago, mantech said:

А если мне нужно получить подтверждение именно после 1 пакета, то что делать??

Когда действительно нужно, алгоритм выключают. Но это не случай FTP.

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


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

1 минуту назад, aaarrr сказал:

Когда действительно нужно, алгоритм выключают. Но это не случай FTP.

Т.е. я правильно понял, что если данные больше 1 MSS, то эти пакеты можно передавать без подтверждения до размера окна и только потом получаю ответ?

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


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

1 час назад, mantech сказал:

Проверял там все ок (в пределах разумного конечно) Потерю времени считал именно от момента отправки в сеть пакета с данными и до прихода из сети (не обработки его стеком, а именно из сети) пакета подтверждения.

Может я неправильно понял: Про какую задержку речь? Я понял что речь про задержку: приём пакета устройством от компа, обработка пакета устройством, отправка пакета устройством к компу. Т.е. - задержка приёма/обработки/ответов на пакеты от компа. Или наоборот?

1 час назад, mantech сказал:

А вот про это можно по-подробнее? Где что выставить и посмотреть...

Погуглите. В инете полно инфы на эту тему. Это касаемо алгоритма управления размером TCP-окна.

1 час назад, aaarrr сказал:

Потому что не принято засорять сеть ненужными подтверждениями.

Это конечно не хорошо, но не должно приводить к задержкам. Вроде....

56 минут назад, mantech сказал:

Т.е. я правильно понял, что если данные больше 1 MSS, то эти пакеты можно передавать без подтверждения до размера окна и только потом получаю ответ?

ACK просто устанавливает новый размер окна в ту сторону, откуда он пришёл. Данные можно слать до размера окна. После достижения размера окна данные тоже нужно слать, но по одному байту и редко. Это как раз про "глупое окно". :wink:

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


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

4 minutes ago, jcxz said:

Это конечно не хорошо, но не должно приводить к задержкам. Вроде....

К задержкам подтверждения должно приводить - для того и придумано.

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


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

5 минут назад, aaarrr сказал:

К задержкам подтверждения должно приводить - для того и придумано.

Если как автор пишет:

1 час назад, mantech сказал:

между тем, когда я отдаю пакет (1440байт) FTP клиенту (на компе под виндой)  и приемом подтверждения около 0.2 сек

то если бы его стек на устройстве слал ACK в комп на эти принятые данные сразу же, то это не могло бы приводить к такой ситуации задержки. Просто был бы лишний траффик из ACK-ов без которого можно обойтись.

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


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

10 минут назад, jcxz сказал:

Я понял что речь про задержку: приём пакета устройством от компа, обработка пакета устройством, отправка пакета устройством к компу. Т.е. - задержка приёма/обработки/ответов на пакеты от компа. Или наоборот?

Задержка между отправкой пакета с данными компу и ответом подтверждения от компа. Походу комп как-раз и ждет еще пакетов, т.к. скорее всего окно приема на компе гораздо больше 1.5Кбайта...

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


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

3 minutes ago, mantech said:

скорее всего окно приема на компе гораздо больше 1.5Кбайта...

На win по умолчанию 32 было, если не путаю.

 

4 minutes ago, jcxz said:

то если бы его стек на устройстве слал ACK в комп на эти принятые данные сразу же, то это не могло бы приводить к такой ситуации задержки.

Автор передает, а не принимает.

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


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

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

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

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

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

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

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

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

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

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