1

Так же, как есть «высокий приоритет, нормальный приоритет и т.д.» Или "приятность" для процессорного времени, есть ли способ сделать что-то подобное для сетевой карты / интернета? Например, если я загружаю файл со своего сервера по Wi-Fi и смотрю видео на YouTube, есть ли способ сделать видео на YouTube более высоким приоритетом? Как это будет сделано на Windows и Linux?

1 ответ1

5

Во-первых, немного фона (вернитесь к этому ответу после того, как вы прочитали это) - в Википедии.

Теперь вы можете подумать, "QoS" (качество обслуживания) - это билет! Ну нет, наверное нет. Проблема заключается в том, что QoS действительно должен быть "сквозным", чтобы быть эффективным, однако многие узлы не будут соблюдать его, что делает его бесполезным. Кроме того , она до сих пор не решить основную проблему , которая на самом деле вызывает ваше отставание видео, скорее всего.

Буфер раздувается.

Вы можете начать читать о раздутии буфера, прочитав отличные статьи Джима Геттиса в его блоге.

Короткий ответ: большие загрузки HTTP-файлов, которые "насыщают" сеть (используют 100% доступной пропускной способности на уровне маршрутизатора), заставляют оборудование маршрутизатора создавать все большие и большие буферы для хранения всех данных. Эти огромные буферы вызывают большую и большую задержку при получении пакета через сеть, чем больше ваш буфер.

Чтобы понять, почему это так, представьте, что у вас есть сетевая карта, принимающая данные со скоростью 100 Кбит / с. Помните, что каждый входящий пакет попадает в очередь в конце очереди (в конце строки, как при входе в обеденную очередь в школе).

Если у вас есть буфер размером 100 КБ, сколько времени потребуется пакету для прохождения через буфер? 1 секунда.

Если у вас есть буфер размером 1 МБ, то сколько времени потребуется пакету для прохождения через буфер, если пропускная способность равна 100 Кбит / с, как указано выше? 10 секунд.

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

Проблема заключается в том, что как только задержка достигает определенного значения, TCP (протокол управления передачей) начинает выходить из строя. Видите ли, TCP зависит от пакетов, поступающих в течение заданного промежутка времени, а затем получающих "ACK" (подтверждение, как сообщение «Хорошо, я понял!»).с другого конца. Когда он не получает "ACK" вовремя, он пытается отправить пакет снова, предполагая, что он был потерян. Таким образом, общий эффект состоит в том, что, пытаясь предотвратить потерю пакетов, раздутые буферы фактически вызывают потерю пакетов !!!

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

Вы можете не знать об этом, но YouTube работает, транслируя небольшое количество видео каждые несколько секунд. Он будет транслироваться с достаточной пропускной способностью, чтобы дать вам видео от 10 до 15 секунд за ~ 5 секунд загрузки, а затем остановится и снова запустится до тошноты. Проблема в том, что если у вас есть раздутые буферы, ваше видео будет зависать, потому что видео-пакеты Youtube не могут вовремя пройти через ваши раздутые буферы!

Управляемая задержка Active Queue Management на помощь.

Вы должны действительно попытаться развернуть управление активной очередью с управляемой задержкой (CoDel), если это вообще возможно, на вашем маршрутизаторе - если вы можете установить на него прошивку CeroWRT, это было бы лучше всего. OpenWRT также можно настроить для использования CoDel. Вы также можете настроить CoDel на компьютере с Linux (ноутбуке / настольном компьютере) и направить туда свой трафик. CoDel - лучшее известное в настоящее время решение проблемы переполнения буфера. К сожалению, реализации для Windows пока не существует. Подробности установки можно найти на bufferbloat.net.

Если вы попробуете CoDel, и он не сработает, держу пари, это либо ваша конфигурация, либо я летающий единорог. Если вы попробуете QoS, и это не сработает, ну, это совершенно нормально. ;)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .