Как избежать потери пакетов при ретрансляции TCP пакетов из быстрого интерфейса в медленный?

Проблема:
При передачи данных через канал связи, включающий в себя ретранслятор пакетов из быстрого интерфейса в медленный, теряются пакеты. Протокол TCP производит повторную отправку этих пакетов, но скорость передачи падает.
Передача в обратную сторону происходит без ошибок.

Канал связи:
[ PC, Windows ]------EthOverUSB------>[ STM32, LWIP ]-------PPPoS------->[ ARM, Linux ]
EthOverUSB - FullSpeed USB (12 Mbit/s)
PPPoS - RS422 (921600 bit/s)

Детали:
Протокол TCP производит повторную отправку потерянных пакетов, при этом падает скорость на ~5%. При этом на стороне приемника (Linux) фиксируется 3.7% битых пакетов.

Причины:
Отправитель шлет пакеты в быстрый интерфейс (USB), но медленный (PPP) не успевает передавать пакеты с такой скоростью и они копятся в буфере на ретрансляторе (STM32). При переполнении этого буфера и теряется пакет.

Пути решения:
1. Первое, что приходит в голову - понизить скорость USB, но в STM32 LowSpeedUSB (1.5 Mbit/s) не поддерживается, а другой способ ограничить скорость я не нашел. Может быть он есть?
2. Как-то настроить параметр Window Size протокола TCP. Но как? и где?
3. ???

Мне кажется, что эта проблема должна как-то нормально решаться. Но пока найти это решение не могу.
Буду благодарен за помощь.
  • Вопрос задан
  • 434 просмотра
Пригласить эксперта
Ответы на вопрос 3
@pfg21
ex-турист
как то так
https://networkguru.ru/kakie-parametri-vliyaut-na-...
посылаешь размер окна приема размером в твой буфер приема и источник пошлет данных только в размер окна и потом будет ждать подтверждение приема.
Ответ написан
@SysAn
Никаковский флудер
@DDwrt100
Непонятно, какого типа передача.
Но на вскидку , поиграться с mss в стеке TCP.
Увеличить буферы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы