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

LwIP уменьшить время ретрансмиссии

Всем привет, использую LwIP 2.0.0, линия связи WiFi, можно ли где то в настройках lwip уменьшить время ретрансмиссии пакета, если да, то укажите пожалуйста этот учсток кода. заране спасибо.

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


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

Могу ошибаться, но похоже вот тут
 pcb->rto = 3000 / TCP_SLOW_INTERVAL;
 pcb->sv = 3000 / TCP_SLOW_INTERVAL;

файл tcp.c, строка 1901

 

 

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


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

у меня это 1616строка)))

какое минимальное значение  могу поставить? Кто то экспериментировал с этими параметрами?

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


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

Основная цель, сократить время ожидания подтверждения отправки пакета до минимально необходимого и максимально быстрая переотправка пакета.

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


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

Не уверен что там надо что-то крутить в недрах LwIP, так как разработчики следовали стандартам RFC.
Да и слишком там много действий происходит от момента получения пакета до решения отправить ACK.
Вот пример лога установления соединения на контроллере STM32F427.

475    49.207230    172.16.16.45    172.16.16.121    TCP    74    52946 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1 TSval=1910788 TSecr=0
478    49.208751    172.16.16.121    172.16.16.45    TCP    62    80 → 52946 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 WS=1
479    49.208780    172.16.16.45    172.16.16.121    TCP    54    52946 → 80 [ACK] Seq=1 Ack=1 Win=65792 Len=0
480    49.208903    172.16.16.45    172.16.16.121    HTTP    538    GET / HTTP/1.1 

От момента получения пакета на установление соединения до выдачи ACK чуть больше 1,5мс

Может подумать в сторону увеличения размера пакета?

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


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

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

Основная цель, сократить время ожидания подтверждения отправки пакета до минимально необходимого и максимально быстрая переотправка пакета.

Желание что-то "крутить" часто возникает когда заранее не был толком продуман способ реализации задачи. Сделали "как получилось". А потом начинается "кручение", с целью - докостылить до приемлемой работы.

 

Если проблемы со временем доставки, то может задуматься - зачем был выбран именно TCP? А не UDP например?

И почему возник вопрос с ретрансмиссиями? При нормальной работе ретрансмиссии должны быть настолько редкими, что их почти не должно быть. Потому и интервалы для них выставлены такими большими. Если ретрансмиссии у вас частые, то надо менять что-то глобально в вашей системе. Костыли с правкой интервалов ретрансмиссий могут только ещё более ухудшить общую работу.

Есть общее правило: не понимаешь - не лезь. Иначе вообще всё сломаешь.

 

Может стоит задуматься и переделать работу под UDP? Если это конечно возможно. По-крайней мере с ним можно будет достичь бОльшей скорости работы. Вне зависимости от того - чем именно вызваны ваши тормоза: помехами в эфире или медленной работой CPU.

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


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

все возможно, только писать много\долго под UDP, в частности в клиентской части. 

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


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

On 8/16/2022 at 2:43 PM, jcxz said:

Может стоит задуматься и переделать работу под UDP? Если это конечно возможно. По-крайней мере с ним можно будет достичь бОльшей скорости работы. Вне зависимости от того - чем именно вызваны ваши тормоза: помехами в эфире или медленной работой CPU.

Как бы вы реализовали протокол передачи данных по UDP, если необходимо передавать видео поток (RTP)

Поделитесь здравыми мыслями на этот счет?

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


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

Никогда не занимался видео. Меня это не интересует.

Но даже в вики написано:

Протокол TCP, хотя и стандартизирован для передачи RTP,[3] как правило, не используется в RTP-приложениях, так как надежность передачи в TCP формирует временные задержки. Вместо этого большинство реализаций RTP базируется на UDP.

Т.е. - похоже вы один из немногих оригиналов, которые пытаются запрячь для этого TCP.  :sarcastic_hand:  И проблемы ваши уже заранее были известны.

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


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

Для видео всегда использовал UDP. Даже если потеряется пакет и фиг с ним.

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


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

2 hours ago, x893 said:

Для видео всегда использовал UDP. Даже если потеряется пакет и фиг с ним.

а как протокол был устроен, если не секрет? было какое то подтверждение пакетов или без? Т.к. у меня передача по wifi 2.4, то помех очень много из-за обилия различных устройств, рабртающих в этом диапазоне. 5гГц в данный момент нет возможности использовать.

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


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

23 minutes ago, Dobermann said:

а как протокол был устроен, если не секрет? было какое то подтверждение пакетов или без? Т.к. у меня передача по wifi 2.4, то помех очень много из-за обилия различных устройств, рабртающих в этом диапазоне. 5гГц в данный момент нет возможности использовать.

Для передачи видео без подтверждений. через 1/20 сек этот пакет уже не нужен. видео потоком идёт.

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


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

все так, но если у вас не собрался I-frame, то секунда видео выпала (если I-frame передается раз в сек), если это не критично, тогда конечно вопросов нет.

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


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

1 hour ago, Dobermann said:

секунда видео выпала

Да и хрен с ней. Через секунду новая придёт.

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


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

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

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

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

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

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

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

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

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

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