Адаптер WiFi задерживает пакеты при низкой пропускной способности

Я тестировал соединение WebSocket, когда заметил дрожание; некоторые TCP-пакеты задерживались. Итак, я начал пинговать пункт назначения. Как только я это сделал, пакеты TCP больше не задерживались, как ни странно. Я перестал пинговать; Я снова начал дрожать.

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

Я проверил это снова, выполнив эхо-запрос других сайтов, не связанных с путем подключения к WebSocket, и это тоже устраняет дрожание. Это также происходит независимо от трафика и пути e.g, если я транслирую данные из другого места назначения и проверяю соединение WS, нет дрожания. Кажется, это указывает на то, что это специфично для интерфейса локальной сети, поскольку это единственная константа здесь.

Мне кажется, что между сетевой картой и стеком IP происходит некоторая буферизация, и буфер не очищается должным образом при малых объемах.

Я изучил размер кольцевого буфера (очередь драйверов), которым они являются все установлено в 0:

Ring parameters for wlp3s0:
Pre-set maximums:
RX:     0
RX Mini:    0
RX Jumbo:   0
TX:     0
Current hardware settings:
RX:     0
RX Mini:    0
RX Jumbo:   0
TX:     0

Это нормально? Я предполагаю, что буферы QDisc вместо этого будут буферизоваться. Во всяком случае, меньший размер очереди приведет к меньшей задержке, но с отброшенными пакетами, которых я не вижу.

Я знаю, что BQL (Byte Limit Queues) - это функция буферизации между стеком IP и сетевой картой, но я не вижу, как это будет вести себя, как я вижу.

Итак, мой вопрос; есть ли какой-либо известный алгоритм организации очередей в сетевом стеке Linux, который мог бы регулировать малые объемы трафика через сетевую карту, но больше не регулировал бы трафик при более высоких объемах?

0
задан 10 December 2020 в 20:37
1 ответ

Это было вызвано активным управлением питанием беспроводной сетевой карты.

Выполнение этой команды, которая отключает управление питанием для сетевой карты, исправило следующее:

sudo iwconfig wlp3s0 power off

Похоже, что управление питанием для этой конкретной сетевой карты стало активным с очень коротким временем ожидания. Например, отсутствие передачи трафика в течение ~200 мс приведет к переводу сетевой карты в режим пониженного энергопотребления. Это означало, что сетевую карту приходилось постоянно активировать при малых объемах трафика, что приводило к задержке пакетов.

0
ответ дан 23 December 2020 в 09:03

Теги

Похожие вопросы