Так же, как есть «высокий приоритет, нормальный приоритет и т.д.» Или "приятность" для процессорного времени, есть ли способ сделать что-то подобное для сетевой карты / интернета? Например, если я загружаю файл со своего сервера по Wi-Fi и смотрю видео на YouTube, есть ли способ сделать видео на YouTube более высоким приоритетом? Как это будет сделано на Windows и Linux?
1 ответ
Во-первых, немного фона (вернитесь к этому ответу после того, как вы прочитали это) - в Википедии.
Теперь вы можете подумать, "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, и это не сработает, ну, это совершенно нормально. ;)