Умное распределение полосы пропускания с помощью qos что это
Quality of Service: приоритизация трафика
Для обеспечения улучшенного качества передачи данных, имеющих повышенное значение, в сетях применяется специальный механизм Quality of Service (QoS). Поэтому любой специалист, занимающийся сетями, должен знать, что это — QoS, и как работает эта технология.
О технологии
Технология QoS используется для предотвращения потери и увеличения скорости обработки важных данных при отправке по сети. Ее суть заключается в приоритизации трафика. Умное распределение QoS — это предоставление деление трафика на классы с предоставлением им разных приоритетов в обслуживании. При этом трафик, которому присвоен более высокий класс, обрабатывается сетевым оборудованием в первую очередь. Поэтому он проходит по сети с минимальными задержками.
Что такое качество обслуживания?
При передаче данных по сетям качество обслуживания оценивается по следующим ключевым параметрам:
Поддержка QoS — это возможность сетевого оборудования контролировать все эти параметры. Этот механизм, который выделяет для информации заданную полосу пропускания, снижает уровень джиттера и задержки, защищает важные пакеты от потери.
Использовать технологию QoS можно при условии, что она поддерживается всеми сетевыми устройствами между получателем и отправителем.
Зачем использовать приоритизацию трафика?
По сетям проходит трафик разных видов. В том числе передаются данные электронной почты, веб-приложений, мессенджеров, голосовых сообщений, видео, телеметрии и других типов. Для каждого из вида трафика существуют определенные требования по качеству передачи. Так, для видео или голосового трафика характерна особая чувствительность к задержкам. Телеметрический трафик намного более устойчив к задержкам, но он должен гарантированно доставляться. Для выполнения всех требований каждому виду трафика присваивается определенный приоритет, в соответствии с которым определяется очередность его обработки сетевым оборудованием.
Приоритизация трафика дает следующие плюсы:
Приоритизация необходима, главным образом в особо нагруженных, узких местах, в которых пропускная способность канала не позволяет одновременно передавать большой объем поступающих пакетов. Также она позволяет защитить трафик, чувствительный к задержкам, от воздействия всплесков активности в сети.
Механизм работы QoS
Чтобы понять, что такое QoS в сетях, необходимо разобрать механизм его работы. Для реализации технологии применяется маркировка трафика, благодаря которой каждый передаваемый пакет имеет поле с указанной отметкой о его приоритете.
В сетевых коммутаторах применяются два стандартных способа маркировки:
Особенности маркировки IEEE 802.1p — Class of Service
Стандарт IEEE 802.1Q предусматривает тегирование трафика, что необходимо для передачи данных о принадлежности к VLAN. В кадр Ethernet включается тег 802.1Q размерностью 4 байта. Он содержит информацию о VLAN, а также сведения об установленном уровне приоритета трафика. Таким образом, IEEE 802.1p можно назвать частью IEEE 802.1Q.
В стандарте IEEE 802.1p предусматривается 8 классов приоритета трафика, которые приведены в таблице:
Качество передачи не гарантировано, но поддерживается на лучшем уровне из возможного
Приоритетный трафик. Не критичные к задержке, но критичные к потерям данные. Менее приоритетные, чем контролируемый трафик
Excellent Effort (business critical)
Контролируемый трафик. Критичный к потерям, но не критичный к задержке. Мультимедийные потоки
Controlled Load (streaming multimedia)
Видеопотоки. Критичной является задержка свыше 100 мс
Голосовой трафик. Критичной является задержка свыше 10 мс
Данные управления сетью
Network Control Reserved traffic
Несмотря на достаточно частое использование в локальных сетях, приоритизация по стандарту IEEE 802.1p имеет ряд существенных ограничений:
Особенности маркировки Differentiated Services (DiffServ) — Type of Service
QoS Type of Service — это маркировка, которая применяется в коммутаторах 3 уровня и маршрутизаторах. Она предусматривает включение специального байта ToS (Type of Service) в заголовок IP. В этом байте прописаны сведения о приоритете трафика.
Преимущества DiffServ перед IEEE 802.1p:
Очереди трафика
В коммутаторах поступающие на порт пакеты помещаются в несколько очередей трафика для ожидания их обработки устройством. Наиболее важный трафик помещается в первую очередь, менее важный — в последующие очереди по убыванию степени важности. Чем большее количество очередей поддерживает коммутатор, тем точнее он балансирует передачу данных.
Порядок работы коммутатора:
Существую разные механизмы очередей. Управляемыми коммутаторами применяется два типа таких механизмов: Weighted Fair Queuing (WFQ) и Strict Priority Queuing (SPQ).
При использовании механизма WFQ (взвешенная справедливая очередь) выполняется циклическое обслуживание очередей. Объем трафика, передаваемого за цикл, определяется в зависимости от приоритета очереди. Из высокоприоритетных очередей в единицу времени на выходной порт выдается больше пакетов, чем из очередей с меньшим приоритетом. Плюс этого механизма заключается в выделении определенного минимума пропускной способности всем классам трафика при полной загруженности полосы пропускания. Это исключает потерю менее приоритетного трафика при перегрузках.
Механизм SPQ (строгая очередь приоритетов) предусматривает первоочередную передачу трафика с высоким приоритетом. Менее приоритетный трафик начинает передаваться только после полной передачи данных с высшим приоритетом. Этот подход гарантирует отправку высокоприоритетных данных, но может приводить к потере менее приоритетного трафика при перегрузках канала.
В неуправляемых коммутаторах применяется механизм Weighted Round Robin (WRR), или взвешенный циклический алгоритм. Он предусматривает последовательное и циклическое обслуживание очередей. Каждой из очередей, в соответствии с ее приоритетом, задается определенное время обработки. Плюсом алгоритм можно назвать гарантию доступа к передаче в установленных пропорциях для каждой очереди.
Настройка приоритизации трафика на коммутаторах TING
Понимая, что такое тип QoS, нужно разобраться с настройкой трафика на сетевом оборудовании.
Настройка приоритизации на коммутаторах TING предусматривает назначение коэффициентов типам трафика. Они вступают в силу при полной загрузке канала. В результате пропускная способность распределяется для разных типов трафика в соответствии с установленными значениями коэффициентов, которые могут варьироваться от 1 до 100. Чем более высокий коэффициент присвоен трафику, тем более высокая доля пропускной способности канала предоставляется ему в случае повышенной нагрузки.
Настройка выполняется путем задания правил, ссылающихся на очереди, которые, в свою очередь, ссылаются на каналы (пайпы).
Для создания канала нужно перейти по пути Межсетевой экран — Ограничитель трафика — Настройки. После этого необходимо вызывать окно редактирования канала, кликнув на «+» на вкладке «Каналы». Здесь задается пропускная способность канала.
Далее нужно перейти на вкладку «Очереди» и нажать на значок «+». В появившемся окне редактирования ввести данные для очереди. Основным параметром для очереди будет ее весовой коэффициент.
После задания весового коэффициента для очереди приступают к созданию правил. Для этого нужно кликнуть на «+» на вкладке «Правила». Предусматривается возможность создания правил для трафика SMTP, HTTP, HTTPS — в таблицах прописывают соответствующие порты и IP-адреса. При этом трафик HTTP и HTTPS попадают в одну очередь и одинаково обрабатываются со скоростью до 1 Мбит/c.
Использование QoS в кольцевых топологиях Turbo Ring/Chain
При работе в топологиях Turbo Ring/Turbo Chain самый высокий приоритет всегда должен иметь служебный трафик протоколов резервирования. Если при настройке QoS наивысший приоритет задан другому трафику, это может привести к несвоевременной доставке служебных сообщений. Поэтому в резервированных сетях Turbo Ring/Chain не рекомендуется назначать наивысший приоритет никакому трафику в настройках, чтобы не допустить ухудшения работы и увеличения времени восстановления.
Умное распределение полосы пропускания с помощью qos что это
Функцию QoS еще называют планировщиком пакетов. Ее задача заключается в том, чтобы получить пакеты из разных очередей и промаркировать их скоростью потока в соответствии с приоритетами.
Важность этой функции для офиса, где WiFi роутер обслуживает большое количество подключенных гаджетов, не вызывает сомнений. Важно обеспечить каждому устройству максимально возможную скорость при ограниченных пропускных способностях канала. Но возникает вопрос: QoS – что это дает для использования дома? Рассмотрим важность правильной настройки на конкретных примерах.
К примеру, вы проводите видеосовещание в Skype, а в это же время один из детей играет в онлайн-игру, а другой смотрит фильм по Netflix. В такой ситуации качество связи в Скайпе неизбежно снизится, в результате голос будет «плыть», пропадать и «заикаться». Это происходит потому, что роутер делит общую полосу между тремя устройствами без каких-либо приоритетов.
Другой пример – вы играете онлайн на ноутбуке и одновременно скачиваете фильм. Если не установлен приоритет игрового приложения над программой-загрузчиком файлов, то в какой-то момент игра начнет подвисать.
Как расставить приоритеты
В различных моделях роутеров опция QoS расположена в разных разделах меню. В большинстве случаев по умолчанию активирован автоматический режим. Перед изменением настроек рекомендуется изучить документацию на веб-сайте производителя маршрутизатора, чтобы понять какие есть возможности настройки качества обслуживания на вашем конкретном маршрутизаторе.
Как использовать «Quality of Service» (QoS)
Не весь интернет-трафик равен. Потоковое видео высокой четкости или наличие бесплатного Skype-звонка, вероятно, более важно для вас, чем загрузка большого файла. Функция качества обслуживания на вашем маршрутизаторе позволяет вам определять приоритеты в отношении вещей, о которых вы заботитесь, поэтому они происходят быстрее, чем то, что вы не делаете.
Что такое качество обслуживания?
Качество обслуживания — отличный и недостаточно используемый инструмент, который позволяет вам обучать ваш маршрутизатор, чтобы разделить вашу доступную пропускную способность между приложениями. С хорошими правилами QoS вы можете убедиться, что потоковое видео не заикается, потому что большой файл загружается одновременно или что ваш рабочий ноутбук не вялый, когда вы пытаетесь выполнить этот последний крайний срок, пока ваши дети играют в игры онлайн.
Это может помочь подумать о качестве обслуживания следующим образом: давайте притворимся на мгновение, что ваше интернет-соединение — это больница, где доступная полоса пропускания — это количество врачей, доступных для лечения пациентов. Пациенты — это разные приложения, а медсестра-сортировщик — это роутер.
В обычной сети медсестра с сортировкой безразлична к состоянию входящих пациентов и просто назначает их любым доступным врачам, постепенно распространяя персонал больницы тоньше и тоньше, не учитывая тяжести ситуации пациента. Случайно прострелил руку с помощью гвоздя во время проекта DIY? Немедленно обратитесь к врачу. Кто-то просто пробежал грузовик? Они сразу же получают врача. У кого-то еще появляется сломанная рука? Они тоже получают врача (но если он действительно очень занят, то вскоре люди делят врачей, и никто не получает особо быстрого ухода). Вы можете видеть, как в короткие сроки больница будет увязшей в беспорядке, и пациенты с высоким приоритетом не будут получать высокоприоритетную помощь.
То же самое происходит и в вашей сети на дому — пропускная способность выдается по мере необходимости, без особого внимания к тому, что делает каждое приложение. Это означает, что если вы разговариваете по телефону с вашим боссом, и ваши дети начинают смотреть Netflix, качество вашего звонка в Skype может снизиться. Маршрутизатор делает все возможное, чтобы предоставить доступную пропускную способность между двумя службами, а не учитывая, что «более важно».
QoS визуализируется с использованием приоритетной модели на основе сервисов.
Качество обслуживания, чтобы вернуться к аналогии с нашей больницей, похоже на очень компетентную медсестру для кормления, которая направляет пациентов к правильному врачу самым эффективным способом: парень, который только что наткнулся на грузовик, получит несколько врачей и сидящий там парень с гвоздем, застрявшим в руке от птичьего домика, подождет минутку другого врача.
Сети с примененной моделью качества обслуживания будут расставлять приоритеты, как вы укажете, определенным приложениям, службам и/или пользователям над другими, так что важные вещи (Netflix, Skype-звонки, ваш Xbox Live-соединение и т. Д.) Имеют наибольшую пропускную способность и лучшее время пинга.
Как включить качество обслуживания вашего маршрутизатора
Есть сотни разных маршрутизаторов, где есть совершенно разные прошивки и возможности. Некоторые маршрутизаторы имеют параметры качества обслуживания, которые столь же упрощенны, что и вы можете расставить приоритеты трафика с одного компьютера на другой. В некоторых из них вы указываете, какие услуги вы хотите установить приоритет (например, потоковое видео через просмотр веб-страниц), а другие предлагают подробный контроль над почти всеми аспектами процесса.
Шаг первый: определите свою цель
Прежде чем вы откроете свою страницу администратора, подумайте о своих целях. Что вы пытаетесь выполнить с помощью правил качества обслуживания? Вы хотите, чтобы ваш домашний офисный компьютер всегда имел приоритет над всеми другими устройствами в доме (например, весь ваш рабочий трафик всегда должен быть более важным, чем развлечение и игры на других устройствах)? Вы хотите определить приоритет трафика из блока IP-адресов, назначенных вашему домашнему медиа-серверу и серверу Minecraft, чтобы обеспечить быстрый доступ из-за пределов вашей домашней сети? Вы хотите установить приоритет Netflix, чтобы ваше потоковое видео всегда было гладким?
Для использования в жилых помещениях правила QoS должны быть выборочными и минимальными. Не сходите с ума и задайте дюжину различных правил прямо из ворот. Создание множества различных правил качества обслуживания может вызвать больше головных болей, чем они решают, мы рекомендуем вам начать с самой большой проблемы и создать правило для борьбы с ней. Если это устраняет проблемы с вашей сетью, остановите их. Если нет, вы можете продолжить с другим правилом.
Шаг второй: определите скорость соединения
После того, как вы установили свои цели для настройки QoS, пришло время погрузиться в ее запуск и запуск. Сохраните для самых простых систем QoS, почти каждая настройка QoS спросит о вашей скорости загрузки и загрузки, чтобы установить ограничения на то, сколько пользователей и сервисов пропускной способности могут сожрать. Абсолютно не полагайтесь на рекламируемую скорость, которую ваш интернет-провайдер говорит о вашей учетной записи. Испытай сам, чтобы получить истинное измерение.
Во-первых, прекратите все действия с высокой пропускной способностью в вашей сети: прекратите большие загрузки, остановите поток Netflix и так далее. Вы хотите получить точную картину вашей реальной доступной загрузки и загрузки.
Затем нажмите Speedtest.net и нажмите кнопку «Начать тест». В идеале вы должны выполнить этот тест, пока ваш компьютер подключен к кабелю Ethernet или, по крайней мере, к быстрому соединению Wi-Fi (с использованием современных беспроводных технологий, таких как Wireless N или Wireless AC ). Старое сетевое оборудование Wi-Fi может помешать вашему сетевому тесту, и вы не получите точных результатов (например, ваша передача Wi-Fi может обрабатывать только передачу 40 Мбит / с, но ваше соединение действительно способно на 75mpbs).
После того, как у вас есть результаты, преобразуйте числа с Mbps в Kbps (поскольку настройка управления QoS обычно запрашивает эти значения в килобитах, а не в мегабитах). Вы можете сделать это, умножив каждое значение на 1000. Таким образом, в нашем примере выше мы достигли 42 900 Кбит / с для нашей пропускной способности загрузки и 3980 Кбит / с для нашей полосы пропускания.
Шаг третий: включение QoS на вашем маршрутизаторе
Опять же, для акцента мы используем DD-WRT для демонстрационных целей (потому что у него есть надежная система QoS); вам необходимо применить общие принципы, если это применимо.
Сначала откройте страницу администратора вашего маршрутизатора. Откройте веб-браузер и введите IP-адрес вашего маршрутизатора в адресную строку (обычно что-то вроде 192.168.1.1 или 10.0.0.1, хотя вам может потребоваться проверить руководство вашего маршрутизатора). Войдите в систему с вашим именем пользователя и паролем при появлении запроса (опять же, если вы не знаете, что у вас есть, оно может по-прежнему быть по умолчанию, указанным в вашем руководстве).
После входа в систему выберите вкладку NAT / QoS, а затем вкладку QoS. Сначала выберите «Включить» рядом с «Запуск QoS». Оставьте порт установленным в WAN. Оставьте диспетчер пакетов и Queuing Discipline установленным по умолчанию (он должен быть установлен автоматически на основе оборудования маршрутизатора).
Наконец, заполните значения нисходящей линии связи и восходящей линии связи. Значения, которые вы заполняете, должны быть на 80-95% выше, чем у вашего теста скорости. Умножьте оба значения на 0,8 или 0,95, чтобы получить уменьшенную величину Kbps.
Зачем использовать уменьшенное значение? Правила качества обслуживания работают только в том случае, если маршрутизатор и алгоритм качества обслуживания могут создать искусственное узкое место для перенаправления трафика, поскольку обработчик QoS сочтет нужным. Если вы используете значения, равные или превышающие максимальную пропускную способность вашего соединения, вы даете обработчику QoS никакого пространства для маневра, и система становится значительно менее эффективной.
Как определить приоритет трафика
После того, как вы включили Quality of Service, пришло время создать основные правила приоритизации трафика.
Некоторые новые маршрутизаторы имеют мертвые простые параметры QoS, где вы просто выбираете сервисы, которые вы хотите расставить по приоритетам (или перетаскивайте их в список). Вот, к примеру, это скриншот от нового маршрутизатора ASUS, который у нас есть:
Если это все, что вам нужно, и ваш маршрутизатор имеет эту функцию, попробуйте и посмотрите, что работает. Но если вам нужен более мелкий контроль, или у вас есть более старый маршрутизатор, у которого нет такой простой настройки, вот несколько более подробных инструкций по настройке QoS.
Приоритет службы
Если вы хотите, чтобы каждое устройство в вашей сети имело приоритетный доступ к определенному приложению или сервису, вы можете создать правило приоритета службы сети. Скажем, для примера, вы хотите убедиться, что Netflix получает приоритет за менее чувствительные к пропускной способности вещи, такие как общий просмотр веб-страниц. Сначала вы выберите услугу в раскрывающемся меню, как показано ниже, а затем нажмите «Добавить».
После того, как сервис указан, выберите приоритет, который вы хотите использовать для этого.
Приоритет по интерфейсу
В сетевом языке «интерфейс» — это метод, с помощью которого ваше устройство подключено к сети. Вы можете установить приоритеты в локальной сети Ethernet, вы можете назначить приоритеты беспроводным соединениям, или вы даже можете установить правила, которые делают сетевой трафик для гостей невысоким.
Давайте посмотрим, как мы можем сделать гостевой сетевой трафик низким приоритетом. В раскрывающемся меню мы выберем «wl0.1», который в сетевом сокращении будет виртуальной локальной сетью № 0. Виртуальная сеть 1. Нажмите «Добавить».
После того, как вы добавили интерфейс, вы можете указать максимальную скорость загрузки / скачивания и даже приоритизировать службы на конкретном соединении, как показано на скриншоте ниже.
Приоритет интерфейса заключается в том, что из-за необходимых знаний о схемах тайного сетевого наименования используется одна из наиболее сложных систем приоритета.
Приоритет устройства с IP-адресами
Предположите, что вы всегда должны указывать определенное устройство, такое как ваш рабочий компьютер. Если вы используете статические IP-адреса или резервирования DHCP в своей сети, вы можете определить приоритет трафика на определенных компьютерах и устройствах, используя их IP-адрес. Многие маршрутизаторы допускают это, и DD-WRT делает шаг дальше, позволяя вам назначать приоритет группе IP-адресов с помощью «сетевой маски».
Скажем, например, что вы хотите, чтобы ваш домашний сервер, расположенный на статическом IP-адресе 10.0.0.200, имел доступ с наивысшим приоритетом к вашей сети. Вы должны ввести адрес в разделе «Приоритет сетевой маски» и добавить конец с 32, как показано ниже.
Если вы обнаружите, что сетевая маска немного запутана (это не совсем интуитивно понятно), лучше всего просто придерживаться / 32 и вводить вручную каждый IP-адрес.
Как только вы нажмете «Добавить», вы можете назначить приоритетный доступ к адресу, как в предыдущем разделе.
Приоритет устройства с MAC-адресами
Если вы не используете статические IP-адреса в своей сети, вы все равно можете определить приоритеты для определенных компьютеров и устройств с их MAC-адресом. Он будет либо на физическом ярлыке, прикрепленном к устройству, либо где-нибудь в его настройках программного обеспечения.
С MAC-адресом в руке просто введите его в раздел приоритета MAC, нажмите «Добавить», а затем назначьте приоритет устройству, как это было в предыдущих разделах.
Теперь, независимо от того, какой IP-адрес назначает ваш маршрутизатор, скажем, вы можете обеспечить свой рабочий ноутбук, он всегда будет иметь приоритет.
«Честное» распределение интернет-канала между пользователями — QoS
Долгими посленовогодними вечерами довелось активно поюзать домашний интернет, в результате чего обратил внимание на некомфортную работу в интернет при одновременной работе нескольких приложений — например, торретны, ютуб и браузер. Или выгрузка файла и работа по ssh. Полез гуглить и увидел, что есть такая вещь, как QoS. У меня в маршрутизаторе установлена прошивка Gargoyle, которая очень неплохо умеет работать с QoS.
Кстати, OpenWRT, на базе которого и сделана Gargoyle, тоже работает с QoS, но там настройка несколько иная, хотя описанные ниже принципы работы QoS помогут настроить QoS и в OpenWRT.
В Горгульевской wiki нашлась статья про QoS, которая мне весьма понравилась и благодаря ей я настроил QoS на своем маршрутизаторе. Работой маршрутизатора с настроенным QoS был приятно удивлен — ни приложения, ни пользователи не мешали друг другу работать в интернет, посему я решил сделать доброе дело и перевести эту статью на русский — может быть кому-нибудь пригодится.
Вольный перевод статьи о QoS из Gargoyle wiki
Скриншоты и названия пунктов меню приведены на примере прошивки 1.10.0
Введение
Это не пошаговая инструкция по настройке QoS. Я не знаю, как написать такую инструкцию, поэтому напишу о принципах работы QoS. Надеюсь, что эта небольшая крупица знаний о QoS поможет вам решить поставленные задачи. Здесь много написано, потому что QoS довольно сложен. Ниже постараюсь изложить необходимый, на мой взгляд, минимум.
Самое простое, что можно сделать — использовать настройки QoS по умолчанию. QoS будет следить за тем, чтобы все устройства, подключенные к вашей локальной сети, использовали канал связи поровну. Эти настройки также установят повышенный приоритет просмотру веб-страниц, по сравнению с любой другой деятельностью в интернет (торренты, email, FTP и т.д.) Чтобы использовать настройки по умолчанию, вам необходимо измерить скорость вашего подключения к интернет. Это можно сделать при помощи Speedtest или Яндекс.Интернетометр, причем перед запуском теста убедитесь, что никто другой в данный момент не использует ваш интернет-канал и на своем компьютере выключите все программы, использующие интернет (Skype, uTorrent и т.д.). Лучше запустить тест дважды. Запишите полученные значения скорости входящего и исходящего соединения. Если запускали тест дважды, то запишите МИНИМАЛЬНОЕ полученное значение и для скорости входящего соединения, и для скорости исходящего соединения. Не перепутайте байты и биты, кило- и мегабиты.
Тепрь в веб-интерфейсе Gargoyle заходите во вкладку «Firewall», затем в «QoS (Upload)» и там ставите галку напротив «Enable Quality of Service (Upload Direction)»
Проматываем страницу вниз, в поле «Total (Upload) Bandwidth» вписываем 95% от полученного значения скорости исходящего соединения и жмем «Save Changes»
Теперь переходим во вкладку QoS (Download) и ставим галку напротив «Enable Quality of Service (Download Direction)»
Проматываем страницу ниже и в поле «Total Download Bandwidth» вписываем скорость своего входящего соединения.
Мотаем в самый низ, ставим галку напротив «Enable active congestions control (Download Direction)» и жмем «Save Changes»
Всё. На этом настройка QoS по умолчанию закончена. Ленивым дальше читать необязательно.
Ну а те, кто хочет узнать больше о том, как работает QoS и что можно с этим делать, читайте дальше.
QoS (Quality of Service — «качество обслуживания», если переводить дословно) — это всего лишь название технологии, определяющей очерёдность доступа к сети интернет, поэтому используя QoS не обманывайте себя, надеясь на то, что каждый получит высокое качество соединения с интернет.
Начнем с того, что попытаемся понять, когда QoS может быть нам полезен. Если вы и так довольны качеством интернет-соединения, то вам не нужно использовать QoS и читать дальше. Но, если вы играете в онлайн-игры или используете Skype, то знаете, что когда кто-то еще смотрит видео на YouTube, то у вас увеличиваются пинги и тайм-ауты или качество голоса в Skype резко снижается. Другой пример — если вы запустите torrent, то просматривать страницы в веб-браузере становится некомфортно. Или если вы раздаете интернет друзьям, то некоторые могут жаловаться на низкое качество интернета, в то время как у других будет все в порядке. Если несколько людей, устройств или программ используют один канал связи, то имеет смысл использовать QoS. QoS будет раздавать интернет строго по правилам, которые вы сами и установите.
За всё в этой жизни нужно платить. В случае с QoS платой будет являться уменьшенная скорость работы с интернет. Много усилий было потрачено на уменьшение потери пропускной способности и в данный момент потери составляют порядка 5% скорости. Если не хотите терять 5% скорости соединения — просто не используйте QoS. Но бывают случаи, когда вы спокойно пожертвуете 5% пропускной способности канала, ради получения приоритезированного доступа в интернет.
Попробую провести аналогию — возьмем, например, посадку в самолет. В данном случае сотрудник аэропорта, осуществляющий контроль пассажиров при посадке в самолет является QoS для пассажиров — сначала он пропускает на посадку инвалидов, затем пассажиров, летящих бизнес-классом и лишь потом пассажиров эконом-класса. В этом примере сотрудник аэропорта — маршрутизатор, пассажиры — пакеты данных, которые пытаются проникнуть в самолет — интернет. Когда пассажиры ожидают посадки на борт — такое состояние называется «загруженным», потому что контролер не может пропустить больше одного человека за раз. Из этого примера можно сделать вывод — если нет очереди на посадку, то совершенно не важно, каким классом вы летите — вы тут же пройдете контроль на посадку, т.е. если ваш канал в интернет не загружен, то настройки QoS не имеют никакого значения — пакеты тут же попадают в интернет.
Прежде чем мы расскажем о том, как настроить маршрутизатор, нам нужно обсудить концепцию пакетов, классов и правил. Данные в Ethernet передаются в пакетах. Каждый пакет содержит заголовок, который содержит информацию об источнике, месте назначения, типе и длине. При прохождении по QoS пакет никогда не разбивается — все байты передаются вместе. Пакеты имеют размер от 64 до, примерно, 1500 байт. Правила определяют пакет в какой-либо класс. Зачастую правила анализируют данные только в заголовке пакета, чтобы решить, в какой класс определить пакет. Классы — это то, где пакеты ожидают отправки в интернет. Как долго они будут ждать, зависит от загруженности канала связи и уровня обслуживания, который установлен для класса, к которому принадлежат пакеты. Когда канал связи освобождается, маршрутизатор сверяется с классами, чтобы определить, пакеты какого класса передавать первыми.
Если вы новичок в QoS, я рекомендую вам ввести исходящую и входящую скорость своей линии на вкладках «QoS (Download)» и «QoS (Upload)», остальные настройки оставить по умолчанию и просто поизучать, как это работает. Для этого зайдите во вкладку «Status — Connection List» и обратите внимание на столбец «QoS Up/Down» — здесь можно увидеть работают ли правила QoS или нет. В конфигурации по умолчанию существует правило для 80-го порта. Порт 80 — это порт, используемый веб-браузерами. Если вы откроете веб-браузер и перейдете на какой-нибудь сайт, то заметите, что появилось несколько новых подключений, у которых указан класс «Normal». Это показывает, что правило работает. При написании правил QoS используйте вышеописанный способ, чтобы убедиться, что правило работает так, как вы планировали. Наиболее распространенной ошибкой новичков, является неправильное написание правил и то, что они не проверяют, работают ли их правила надлежащим образом.
Теперь пара слов об отслеживании соединений. Когда ваш компьютер начинает общаться с другим компьютером в Интернете, то происходит отправка и получение большого количества пакетов. Если вы посмотрите на заголовки этих пакетов, то увидите, что они почти идентичны, поскольку тип исходящих и входящих пакетов одинаков. Этот поток пакетов называется «соединением». Соединение начинается, когда первый пакет отправляется, а заканчивается, когда пакеты больше не отправляются. Чтобы узнать больше о отслеживании соединений — погуглите. В интернете предостаточно информации по этой теме.
В правилах могут описываться следующие критерии совпадения пакетов: содержимое заголовка, количество байт, протокол приложения (Layer7). Написание правил является самой тяжелой частью QoS. К сожалению, способов, которыми мы наверняка можем классифицировать данные, не так уж много и часто вам будет не хватать этих способов.
Пример использования QoS
Начнем с примера, в котором мы хотим, чтобы определенный компьютер в вашей локальной сети имел более высокий приоритет доступа к Интернету, нежели остальные компьютеры в классе Normal. Во-первых, у нас есть только один способ определить конкретный компьютер, а именно его IP-адрес. Чтобы гарантировать, что этот компьютер всегда получает один и тот же IP-адрес, мы переходим во вкладку «Connection — DHCP» и присваиваем ему статический IP-адрес на основе MAC-адреса этого компьютера. Теперь каждый раз, когда этот компьютер будет запрашивать у маршрутизатора IP-адрес, маршрутизатор будет выдавать ему один и тот же IP-адрес. Теперь мы можем написать правило, используя IP-адрес, зная, что он будет неизменным у этого компьютера. Когда этот компьютер отправляет пакет в Интернет, IP-адресом источника (Source) будет этот IP-адрес. Когда ответ приходит из Интернета, то этот IP-адрес будет адресом назначения (Destination). Значит, на вкладке «Firewall — QoS Download» мы будем использовать этот IP как адрес назначения (Destination), а на вкладке «Firewall — QoS Upload» мы будем использовать этот IP как адрес источника (Source). Это очень важный момент и он часто является причиной ошибок в написании правил.
По такому же принципу можно создавать правила для определенных портов, которые являются еще одним способом классификации пакетов.
Совпадения
Совпадение IP-адреса
Этот случай был подробно описан выше. На вкладке «Firewall — QoS Download» обычно мы прописываем IP-адрес назначения (Destination), а на вкладке «Firewall — QoS Upload» — IP-адрес источника (Source). Использование IP-адреса источника (Source) на вкладке «Firewall — QoS Download» проблематично, потому что мы обычно не знаем адрес сервера, к которому мы обращаемся. IP-адреса могут быть указаны как по одному, так и подсетью (например, 192.168.1.8/30). Если хотите узнать о подсетях побольше, то снова предложу вам погуглить.
Совпадение номера порта
Если вы знаете номер порта, который использует приложение, то это можно эффективно использовать для написания правила. Чаще всего используют порты 80 и 443 — это порты, которые использует веб-браузер. К сожалению, многие программы используют диапазоны портов или вообще случайные порты. У некоторых приложений в настройках, можно назначить определенный порт. Тогда можно будет написать правило, прописав указанный порт. Но если у приложения нет таких настроек, то у вас не получится написать правило, указав номер порта. Можно указать диапазоны портов, разделяя минимальные и максимальные номера портов знаком «-» (например, 20000-21000).
Совпадение длины пакета
Можно писать правила, указывая длину пакета. Если вы укажете максимальную длину пакета (Maximum Packet Length), то под это правило будут попадать все пакеты, у которых длина меньше, указанной в правиле. Если вы укажете минимальную длину пакета (Minimum Packet Length), то под это правило будут попадать все пакеты, у которых длина больше, указанной в правиле.
Что в оригинале имелось в виду в предложении «One use of this would be match on ‘ACK’ packets. These packets are typically 64 bytes long and while other packets may also be 64 bytes long you can get pretty good selection in this manner» я так и не понял. Далее по тексту курсивом будут выделены части статьи, которые я не смог перевести. Если кто-нибудь окажет помощь в данном вопросе — буду премного благодарен.
Совпадение протокола
Пакеты вашей локальной сети могут принадлежать к ICMP, TCP или UDP протоколу. Часто онлайн-игры используют UDP-пакеты для уменьшения задержек. Этим можно воспользоваться, чтоб дать онлайн-игре приоритет над другими программами.
Совпадение пакетов только если определенное количество байт было передано через определенное соединение (connection-bytes)
Можно изменить класс пакета, как только соединение, к которому принадлежит этот пакет, накопило определенное количество переданных байт. В данном случае мы присваиваем класс не по длине отдельных пакетов, а смотрим на общее количество переданных байт в одном соединении. Например, если пользователь просматривал видео, количество байт в соединении быстро накапливается, даже если каждый пакет имеет размер всего 1500 байт. Установив определенный порог, вы можете изменить класс данных, проходящих через соединение. Например, в загруженной локальной сети пользователь сможет быстро загрузить первую часть видео до того, как маршрутизатор изменит класс соединения, и скорость этого пользователя будет снижена. Этот способ называется «Speedboost», и его нередко используют интернет-провайдеры. «Speedboost» в этом случае является типом QoS, реализованным интернет-провайдером.
Можно предположить, что «connection-bytes» будет хорошим способом выделить в отдельный класс торренты, но используя этот способ необходимо быть осторожным — администраторы сетей пытаются поделить полосу пропускания между всеми клиентами поровну, а авторы программ пытаются обойти ограничения пропускной способности и блоки портов, чтобы их программы работали быстрее. Поэтому, если производительность соединения сильно ухудшается, то приложение просто закрывает это соединение и открывает новое. Возможно, получится улучшить работу сети, используя «connection-bytes», но только если не сильно снижать скорость торрентов.
Совпадение протокола приложения (Layer7)
В данном случае просматриваются данные (а не только заголовок) первых нескольких пакетов, передаваемых через соединение. Просматривая эти данные, можно определить какое именно приложение отправило эти данные и отнести их к нужному классу. Проблема в том, что приложения постоянно меняют типы отправленных данных, что затрудняет сопоставление шаблонов. Вдобавок постоянно увеличивается количество зашифрованных данных проходящих через маршрутизатор и становится понятно, что практически не имеет смысла использовать этот способ. Я не рекомендую этот способ и в будущем, возможно, он будет удален из Gargoyle.
Выше мы рассмотрели все способы, которыми можно определить пакеты к классам. Gargoyle позволяет использовать одновременно несколько способов, чтобы создать более сложные правила. Мы можем выбрать несколько способов для одного правила. Пакет должен соответствовать всем выбранным критериям, чтоб попасть в класс. Можно написать несколько правил. Они читаются маршрутизатором в том порядке, в котором они расположены в списке, сверху вниз. Как только пакет удовлетворяет всем требованиям правила, он тут же определяется в класс. Если пакет не удовлетворил условиям ни одного из правил, то он попадает в класс по умолчанию. В любом случае каждый пакет должен быть определен в класс. Снова напомню, насколько важно проверять написанные правила, просматривать список соединений, чтобы убедиться, что правила работают так, как было запланировано. Вы можете написать любое количество правил — ограничением может стать только производительность вашего маршрутизатора, которая зависит от объема ОЗУ и производительности CPU.
Классы
Как только пакет попал в маршрутизатор, правила QoS решают, что с ним делать. Правила не хранят пакеты, они анализируют их и отправляют в соответствующий класс. А вот классы содержат очередь пакетов, в которой пакет ждет, пока не наступит время его отправки в интернет. Если пакеты с разных IP-адресов попали в один класс, то они все имеют равный приоритет при доступе к интернет.
Процентная доля полосы пропускания (BW)
Это процентная доля пропускной способности канала, которую получит класс, когда канал связи загружен, и в классах находятся пакеты, ожидающие передачи. Когда я использую слово «загружен», это означает, что канал связи полностью занят, и пакеты находятся в очереди в ожидании передачи. Этот принцип работает и для входящей, и для исходящей линии связи. Если канал связи не загружен, то пакет сразу же отправляется без всяких задержек. Таким образом, ограничение ширина полосы пропускания для класса действует только тогда, когда канал загружен. Чтобы узнать, что происходит, когда канал загружен, но не во всех классах есть пакеты, ожидающие отправки, смотрите ниже FAQ 1. Если вы создали классы таким образом, что сумма процентов ширины пропускания всех классов не равна 100%, то Gargoyle пропорционально откорректирует эти значения так, чтобы сумма процентов всех классов равнялась 100%. Процент ширины полосы пропускания класса вводится при редактировании параметров класса (в таблице «Service Classes» кнопка «Edit», справа от названия класса) в поле «Percent Bandwidth At Capacity». Ниже приведены несколько примеров использования регулировки ширины полосы пропускания.
Пример 1 — Интернет соседям
Вы провели себе Интернет, но решили поделиться им с двумя соседями, когда канал связи не загружен. Для этого нам нужно создать два класса — один с 1% BW, другой с 99% BW. Теперь мы используем IP-адреса компьютеров соседей, чтобы направлять их трафик в класс 1%, а трафик с IP-адреса своего компьютера направляем в класс 99%. В этом случае, когда канал связи загружен, вы получите 99% пропускной способности канала, а каждый из двух соседей получит по половине от 1%. Если вы не используете Интернет, но канал связи все еще загружен, то каждый из соседей будет получать по 50% пропускной способности канала, поскольку Gargoyle будет распределять всю доступную пропускную способность канала равномерно между всеми IP-адресами одного класса. Если канал связи не загружен, то все получают столько, сколько им необходимо, потому что общего количества пакетов недостаточно для полной загрузки канала. Если захотите, то можете увеличить BW класса соседей с 1% до величины, которую считаете разумной и приемлемой.
Пример 2 — Всем поровну
В этом примере интернетом пользуются только члены вашей семьи. Платите за него только вы, но когда канал занят, то он распределяется всем поровну. Это простой случай. Необходим только один класс, поскольку Gargoyle и так распределяет пропускную способность поровну между IP-адресами в одном классе. Таким образом, один класс получает 100% BW, а пропускная способность распределяется поровну между всеми активными пользователями. Добиться этого можно просто включив настройку QoS по умолчанию, как было описано в самом начале этой статьи.
Минимальная полоса пропускания (Minimum Bandwidth)
Это полоса пропускания, которая гарантированно будет предоставлена классу. И это не совсем то же самое, что процентная доля пропускной способности канала. При использовании QoS в Gargoyle зачастую необходимо использовать ACC. Эта технология следит за состоянием канала — измеряет скорость и делает корректировки QoS, если провайдер снизил вам скорость. Более подробно об ACC будет написано ниже, на данный момент достаточно сказать, что ACC необходимо использовать, когда какому-нибудь приложению необходима определенная скорость соединения с интернет. Три наиболее распространенных случая, которые мне известны — это онлайн-игры, Skype и потоковое видео (например, YouTube). Если вы используете какие-нибудь из вышеперечисленных или подобных приложений, то необходимо определить потребности этих приложений. Сначала создайте для них правило и класс, используя любые параметры, а затем понаблюдайте за ними в процессе использования — какая скорость им необходима. Затем добавьте к полученному значению небольшой запас (около 10%) и пропишите его в качестве значения минимальной полосы пропускания (в таблице «Service Classes» кнопка «Edit», справа от названия класса) в поле «Bandwidth Minimum». Gargoyle сначала выделяет полосу пропускания для всех классов, у которых указана минимальная полоса пропускания, а потом уже оставшуюся полосу пропускания делит между классами, у которых указана ширина полосы пропускания в процентах, поэтому используйте этот параметр осмысленно. When Gargoyle calculates the percentage bandwidth it includes whatever service it included under the minimum requirement in that calculation. Если канал не загружен, то установка минимальной полосы пропускания никак не повлияет на работу приложения. Если сумма значений минимальной полосы пропускания всех активных классов (которые в данный момент принимают или отправляют пакеты) больше, чем доступная полоса пропускания, то очевидно, что классы не получат минимальной полосы пропускания, прописанной в параметрах класса, а получат пропорционально меньше. Очень желательно избегать таких ситуаций и устанавливать минимальную полосу пропускания только тем приложениям, которым это действительно необходимо.
Максимальная полоса пропускания (Maximum Bandwidth)
Этот параметр устанавливает максимально доступную полосу пропускания для класса, даже если канал абсолютно свободен. This is the only class parameter which is not affected by link saturation.
Уменьшение пинга (Minimize RTT) (присутствует в современных версиях прошивки начиная с v1.5.4)
Этот параметр доступен только на вкладке «QoS Download» и работает только при включенном ACC.
Качество работы некоторых приложений сильно зависит от времени отправки-приема пакета (ping или если быть точным, то — RTT). RTT могут достигать значений в 2-3 секунды при загруженном канале, что является серьезной проблемой, если необходима работа в режиме реального времени. Допустим, вы разговариваете с кем-то по Skype, и потребуется 2 секунды, чтобы собеседник услышал вас и еще 2 секунды, чтобы вы услышали ответ. Поверьте, общаться в таком режиме будет очень неприятно. Gargoyle обеспечивает низкий уровень RTT для активных классов даже при большой загрузке канала. Если включен ACC, пинги будут в районе 150 мс. Если этого достаточно для комфортной работы вашего приложения, то включать параметр «Minimize RTT (ping times) when active» НЕ надо. Если вы включите этот параметр, то пинги уменьшатся примерно до 75 мс, но скорость канала упадет процентов на 25.
Пример 3 — YouTube, онлайн-игры и все остальное
Возьмем среднестатистическую семью — мама смотрит YouTube, в это же время папа с сыном играют в онлайн-игры, а сестра залипает в соцсетях. Для онлайн-игры мы создаем класс с необходимой минимальной полосой пропускания, предварительно посмотрев, какая скорость необходима данной игре. Так же онлайн-играм требуется минимальное значение пинга, поэтому создаем класс «Gaming», для которого устанавливаем минимальную полосу пропускания и включаем параметр «Minimize RTT (ping times) when active». После чего смотрим, какая полоса пропускания нужна маме для просмотра видео на YouTube. Мама огорчается, если ее фильм тормозит, а когда огорчается мама, то плохо становится всей семье, но мы-то знаем, что для просмотра YouTube пинги не имеет никакого значения, поэтому создаем еще один класс «YouTube» с установленной минимальной полосой пропускания, но с выключенным параметром «Minimize RTT (ping times) when active» — теперь мама будет счастлива. Мы написали правила чтоб направить трафик из онлайн-игр и YouTube в соответствующие классы, а весь оставшийся трафик направляем в класс Normal.
Скорость входящего и исходящего соединений (Total Bandwidth)
В самом начале статьи уже был рассмотрен данный вопрос, сейчас хочу сделать пару уточнений.
Иногда провайдер снижает вам скорость исходящего соединения, поэтому приходится заново производить замеры скорости и корректировать значение «Total Upload Bandwidth» во вкладке «QoS (Upload)». Если это будет происходить часто, то данная процедура вам надоест. Но зачастую скорость исходящего соединения достаточно стабильна и хватает однократного измерения.
На вкладке «QoS (Download)» значение, которое вы вводите в поле «Total Download Bandwidth» зависит от того, используете ли вы ACC или нет. Если используете ACC, то вводите значение, которое показали результаты измерения скорости или даже процентов на 10 больше. ACC будет автоматически корректировать фактическое значение скорости в пределах от 12% до 100% от введенного вами значения. Если вы введете сильно завышенное значение (скажем, в два раза), то просто потеряете определенный диапазон корректировки, потому что ACC будет регулировать только от 12% до 50% от вашей реальной скорости. Все значения скорости от 50% до 100% будут выше реальной пропускной способности вашего канала, но QoS по-прежнему будет корректно работать.
Если же вы не используете ACC, то ситуация осложняется. Введите минимальное полученное значение скорости входящего соединения. Но скорость входящего соединения может значительно меняться время от времени, причем на 20% — 80%. И вы не сможете постоянно прописывать актуальные значения скорости. Если вписанное значение скорости будет выше реальной скорости, то QoS просто не будет работать. Если вы установите значение скорости слишком низкое, то будете использовать использовать лишь часть канала. Поэтому крайне желательно использовать ACC, конечно, если вы хотите, чтобы QoS работал.
ACC (Active Congestion Controller)
Для функционирования QoS маршрутизатор должен знать максимальную скорость соединения с интернет. Можете поэкспериментировать с ACC и убедиться в этом. При выключенном ACC, если вы пропишите слишком высокую скорость в поле «Total Download Bandwidth», то QoS перестает работать. Если вы пропишите слишком низкую скорость, то сами себе снизите скорость соединения с интернет. Теоретически, существует абсолютно точное значение скорости соединения с интернет. Если вы сможете найти это значение, и оно постоянно будет одним и тем же, то ACC вам не нужен. Однако в большинстве случаев не существует абсолютно точного значения скорости соединения с интернет, потому что скорость входящего соединения, которую предоставляет ваш провайдер, периодически меняется. Именно в таком случае и пригодится ACC.
ACC постоянно следит за скоростью соединения с интернет и корректирует значение «Total Download Bandwidth». Под понятием «корректирует» имеется в виду, что ACC изменяет значение скорости входящего соединения, которую использует QoS для работы. Значения, которые будет использовать QoS, находятся в пределах между введенным вами значением скорости входящего соединения и 1/8 от этого значения. Это динамический диапазон, поэтому, чтобы максимально использовать диапазон регулировки, важно ввести правильное значение максимальной скорости загрузки, которую предоставляет вам провайдер, но не больше.
Значение скорости входящего соединений, которую вам на самом деле предоставляет ваш провайдер будет постоянно меняться в зависимости от загрузки сети самого провайдера. У вашего провайдера есть свой канал в интернет. И когда этот канал полностью загружен, то провайдер вынужден снижать скорость своим клиентам. ACC отслеживает скорость входящего соединения, измеряя время отправки-приема пакетов (RTT), которые отправляет на шлюз вашего провайдера. Измеряя RTT можно примерно определить количество данных в очереди от провайдера к вашему маршрутизатору. Принцип работы ACC основывается на том, что когда канал загружен, то время RTT (ping) увеличивается. В большинстве случаев так и происходит, но иногда бывают исключения, и тогда ACC не будет работать, и его необходимо отключить.
Давайте подумаем об очереди от провайдера к вашему роутеру. Количество ожидающих в очереди данных будет увеличиваться или уменьшаться в зависимости от нескольких факторов. Критическая точка будет достигнута в тот момент, когда очередь вырастет до такой степени, что больше не сможет принять в себя данные. В этом случае пакет будет отброшен вашим провайдером. Это плохо для QoS. Чтобы QoS нормально функционировал, он сам должен решать, какие пакеты необходимо отбросить. Когда ACC включен, он следит чтобы очередь не переполнялась, и только QoS вашего маршрутизатора отбрасывал пакеты при необходимости. ACC регулирует только длину очереди входящего соединения. Он не может регулировать скорость исходящего соединения. До тех пор, пока в очереди входящего соединения будут находится пакеты, ваш входящий канал будет полностью задействован. ACC необходим как раз для того, чтобы задействовать входящий канал по максимуму, позволяя очереди увеличиваться до необходимой длины, но не до такой, чтоб пакеты были отброшены.
Если очередь не будет пополнятся новыми пакетами, то необходимо около 100 мс, чтобы отправить все имеющиеся пакеты из этой очереди. Это говорит о том, что каждый пакет ожидает отправки из очереди около 100 мс. The affects the round trip time (RTT) of a packet exchange. Например, если я отправлю пинг на компьютер в сети интернет, то ответ будет ждать в этой очереди. Добавим сюда другие накладные расходы, и в итоге мы получим время отправки-приема пакета (RTT) около 150 мс. Для некоторых приложений такое значение RTT неприемлемо. В таких случаях, ACC переключается в другой режим, в котором он уменьшает среднюю длину очереди примерно в два раза. Т.е. значение RTT будет около 75 мс, но это произойдет за счет снижения скорости канала. Когда вы включаете режим «Minimize RTT», то скорость соединения с интернет снижается примерно на 25%, но пинги сокращается наполовину. This is a useful compromise which the ACC will make when a class becomes active which indicates it needs minimum RTTs and is indicated in the status display by the MinRTT mode.
ACC считает класс активным, если этот класс потребляет более 4 Кбит/с.
Для ACC доступны следующие настройки:
Включен или выключен «Enable active congestions control (Download Direction)» — тут пояснения не требуются.
Использовать нестандартную цель ping «Use non-standard ping target»: ACC должен получить ответ от компьютера в интернет, чтобы определить текущую загрузку линии. По умолчанию ACC использует в качестве цели шлюз вашего провайдера, но это часто не является хорошим решением и иногда в качестве цели приходится выбирать другой компьютер в интернет. К сожалению, я не могу дать универсальные рекомендации, как правильно найти хорошую цель, поэтому вам придется самостоятельно поэкспериментировать с данной настройкой. Если ACC у вас не работает, то эта настройка — первое, с чем нужно поэкспериментировать. Необходимо помнить, что ACC отслеживает скорость входящего соединения, измеряя время отправки-приема пакетов (RTT), которые отправляет с вашего маршрутизатора на компьютер в сети интернет, поэтому в качестве цели нужно выбрать какой-нибудь компьютер, находящийся в интернет, но не у вашего провайдера. Одной из целей, которую я часто использую — сервер OpenDNS 208.67.222.222, поэтому, если ACC не работает с настройками по умолчанию, то попробуйте этот сервер OpenDNS. Так же оптимальной целью может стать один из серверов между вашим маршрутизатором и вышеуказанным сервером OpenDNS. Чтобы узнать IP-адреса этих серверов можно использовать команду traceroute (если не знаете как — гуглите). Затем, посмотрите на выдачу команды traceroute и выберите тот сервер, у кого первое значение времени ощутимо больше, нежели у предыдущих. Или же экспериментируйте с другими серверами из данного списка (желательно находящийся поближе к вашему маршрутизатору), пока не найдете тот, с которым заработает ACC.
Ограничение времени жизни ping (TTL) «Manually control target ping time»: это ограничение времени жизни пинга, значение которого ACC будет использовать при включенном режиме «Minimize RTT». Если вы не включите этот параметр, ACC будет автоматически вычислять и устанавливать время жизни пинга в зависимости от скорости соединения с интернет. Как правило, автоматическое вычисление времени жизни пинга работает хорошо, но если вдруг в вашем случае это значение выбирается неверно, то можно установить его вручную. Обычно это значение находится в пределах от 40 до 90 мс, но можно поэкспериментировать с ним, если включен режим «Minimize RTT».
Производительность маршрутизатора
Чем мощнее процессор вашего маршрутизатора, тем больше данных он может обработать за единицу времени. Почти ничего, из написанного выше, не будет работать, если вы слишком сильно загрузите процессор своего маршрутизатора. Когда процессор маршрутизатора перегружен, то на вкладке «Status — Overview» значение «CPU Load Averages» будет «1.00 / 1.00 / 1.00» и с маршрутизацией начнет происходить всякая НЁХ.
Обычно это происходит при скоростях от 10 Мбит/с и до 500 Мбит/с — в зависимости от мощности вашего маршрутизатора и функций Gargoyle, которые вы используете. Чтобы использовать Gargoyle, необходимо уменьшить значения «Total Bandwidth» на вкладках «Total (Upload) Bandwidth» и «QoS (Download)» до такой степени, чтоб загрузка процессора никогда не приближалась к значению «1.00» даже при максимальной нагрузке.
Мониторинг полосы пропускания и QoS — это две функции, которые сильно нагружают процессор маршрутизатора. Если вы их отключите, то существенно разгрузите процессор, но, также потеряете многие функции, которые вам может предоставить Gargoyle.
Не жалуйтесь на форуме Gargoyle, что с родной прошивкой ваш маршрутизатор работает быстрее, нежели с прошивкой Gargoyle. С Gargoyle вы получаете стабильность и множество функций, которых так не хватает в родной прошивке. Если не можете получить желаемую скорость — купите маршрутизатор пошустрее.
Как распределяется скорость канала, если некоторые классы неактивны
В. У меня есть три класса с 15, 35 и 60% от пропускной способности канала. Как будет распределяться пропускная способность канала, если активны только первые два класса, и канал полностью загружен данными этих классов?
О. Если канал загружен, то он делится в соответствии с процентами активных классов. В вашем случае это будет выглядеть следующим образом — 15 / (15 + 35) = 30% и 35 / (35 + 15) = 70%
Как происходит распределение полосы пропускания между IP-адресами?
В. У меня есть данные с нескольких компьютеров, направленных в один класс. Как распределяется полоса пропускания, выделенная классу между компьютерами?
О. До Gargoyle версии 1.5.4 это никак не контролировалось и распределялось непредсказуемо. Начиная с Gargoyle версии 1.5.4, полоса пропускания распределяется поровну между всеми IP-адресами одного класса. Это значительно упрощает настройку QoS для больших локальных сетей. Например, если вы хотите, чтобы все компьютеры в вашей сети имели одинаковую пропускную способность, вам нужно создать класс по умолчанию, удалить все правила, которые вы создали, и включить QoS. Для деления полосы пропускания поровну между IP-адресами в классе не требуется никаких настроек. Также эту функцию невозможно отключить. Если вы хотите, чтобы определенному IP были предоставлены особые привилегии, то необходимо сделать для него специальные классы и правила.
Включение режима уменьшения пинга (Minimize RTT)
В. Есть идея — включить режим «Minimize RTT» для всех моих классов, ведь минимальное время отклика — это хорошо?
О. Минимальное время отклика — хорошо, но за минимальные пинги вы заплатите снижением пропускной способности канала. The reason for this is the same reason we have lines everywhere in our lives. Если вы пойдете в банк, то получить минимальное RTT (то есть получить деньги и тут же выйти из банка), возможно только двумя способами — или перед вами в очереди никого не будет, или президент банка, увидев вас, выйдет и проведет к кассе без очереди. Это будет нечестно по отношению к другим клиентам, но это же QoS.
In the case of the WAN down link there is no way to re-order packets that are queued to travel over the WAN downlink so we are left with keeping the line short as the only means
Использование MAC-адреса при создании правил
В. Я хочу использовать MAC-адреса при создании правил — так будет легче. Почему вы не предусмотрели такую возможность?
О. QoS не имеет доступа к MAC-адресам устройств. В архитектуре маршрутизации Linux эта информация удаляется из пакетов до того, как они попадают в QoS. Эту проблему можно решить, назначив фиксированный IP-адрес устройству с соответствующим MAC-адресом и написав правило для этого IP-адреса.
QoS для трафика между компьютерами
В. Я хочу использовать QoS для трафика между компьютерами в локальной сети. Как это можно реализовать?
О. Никак. QoS работает только с трафиком между маршрутизатором и провайдером. В большинстве маршрутизаторов трафик между компьютерами локальной сети обрабатывается сетевым коммутатором (switch) аппаратно и поэтому прошивка маршрутизатора не имеет доступа к этому трафику. Это связано с тем, что скорость передачи данных внутри локальной сети гораздо выше, чем из локальной сети в интернет. Ну а так как QoS не видит этот трафика, то и ничего не может с ним сделать. Это относится и к WiFi-трафику. QoS ничем не поможет, если перегружен радиоканал. Я рекомендую серьезным игрокам использовать проводное соединение между их приставкой или компьютером и маршрутизатором, чтобы избежать непредсказуемых задержек на радиоканале.
Количество правил и классов
В. Сколько правил и классов я могу создать?
О. Вы ограничены только мощностью процессора и объемом оперативной памяти маршрутизатора. Я не знаю технических характеристик вашего маршрутизатора, но скорее всего их хватит для обработки любого разумного количества правил и классов. Предполагаю, что теоретический предел количества правил — порядка нескольких тысяч, а то и миллионов. Теоретический предел количества классов — 125 для загрузки и еще 125 — для выгрузки.
Создание класса с повышенным приоритетом.
В. Хочу создать специальный класс с повышенным приоритетом над другими классами. Как это сделать?
О. В Gargoyle мы используем концепцию распределения полосы пропускания, а не концепцию «приоритета». Слово «приоритет» неоднозначно по смыслу. Вы хотите чтобы пакеты класса с повышенным приоритетом всегда передавались перед пакетами классов с более низким приоритетом? Этого можно добиться, установив значение минимальной полосы пропускания (Minimum Bandwidth) равным скорости вашего соединения с интернет для приоритетного класса, для остальных классов установите значение этого параметра равным нулю. Вообще, концепции Gargoyle «процентная доля полосы пропускания», «минимальная полоса пропускания» и «максимальная полоса пропускания» более гибкие, поэтому советую вам подумать о своей проблеме используя эти концепции и отказаться от концепции «приоритет».
QoS не работает
В. QoS не работает, что я делаю не так?
О. Судя по длине этой статьи, QoS — непростая штука, а значит существует много вещей, которые вы могли сделать неправильно. Для начала, рекомендую проверить — попадают ли пакеты в нужный класс. Если с этим все в порядке, то посмотрите, не перегружен ли процессор маршрутизатора. Попробуйте выключить ACC и установить скорость соединения с интернет на 50% от фактической скорости. Если все заработало, значит правила и классы работают корректно. Пробуйте повысить скорость и включить ACC.
ACC ограничивает скорость моего соединения с интернет
В. Почему ACC ограничивает скорость моего соединения с интернет? Когда выключаю ACC — скорость повышается.
О. ACC lowers your link limit until the filtered ping time falls under the target ping times. So if your link limits is being lowered either your ISP performance has dropped (the usual case) or your target ping time is too aggressive.
Распространенные заблуждения
QoS не может управлять скоростью входящего соединения
Заблуждение: QoS не может управлять скоростью загрузки, потому что маршрутизатор не может остановить передачу данных из интернет.
Опровержение: Ерунда. Может. И управляет.
Я не хочу, чтоб маршрутизатор отбрасывал пакеты
Заблуждение: Я не хочу, чтоб маршрутизатор отбрасывал пакеты, пришедшие из интернет — это будет пустой тратой полосы пропускания.
Опровержение: Отбрасывание пакетов является основным принципом работы интернет. Это единственный способ, с помощью которого можно сообщить отправителю пакетов, что скорость соединения необходимо снизить. Пакеты удаляются в любом соединении. Вопрос только в том, как долго маршрутизатор будет их отбрасывать. При отбрасывании пакетов теряется максимум пара процентов пропускной способности канала.
Мне не нужен QoS, потому что у меня очень быстрый канал
Заблуждение: У меня очень быстрый интернет — 100500 Мбит/с. Мне не нужен QoS.
Опровержение: Скорость вашего интернет-соединения не имеет ничего общего с вашей потребностью в QoS. Вы можете полностью загрузить канал, потому что даже один ПК может загружать данные со скоростью 100 Мбит/с. В каких случаях необходим QoS — написано в начале данной статьи. То есть в тех случаях, когда вы хотите поделить определенным образом пропускную способность канала между участниками своей локальной сети или между приложениями.
Мой провайдер использует технологию X, поэтому мне не нужен QoS
Заблуждение: Мой провайдер использует технологию (вставьте сюда название технологии, по которой вы подключены к интернет). У меня абсолютно стабильная скорость подключения к интернет, поэтому мне не нужен ACC.
Опровержение: Ваша потребность в ACC не имеет ничего общего с качеством вашего интернет-соединения. Поверьте, все провайдеры урезают канал своим клиентам при необходимости. Просто представьте себя на месте провайдера. У вас есть 10000 клиентов, у каждого из которых установлен модем со скоростью 20 Мбит/с. Ваш канал в интернет — 1 Гбит/с. Прикинем — 10000 клиентов умножим 20 Мбит/с и разделим на 1 Гбит/с получится 200, т.е. ваши клиенты могут скачать в 200 раз больше, чем вы можете им предоставить! И если все они начнут качать новую серию «Игры престолов», то вам не останется ничего другого, кроме как урезать им канал.
Когда я включаю ACC, он реально снижает скорость загрузки
Заблуждение: Когда я включаю ACC, он реально снижает скорость загрузки.
Опровержение: The ACC manages the download link limit. Do not confuse the link limit with your actual link load. This link limit has no effect on you unless your load is actually the same as the limit. When these two are the same it means your WAN link is getting congested and simply cannot go any faster. The ACC also does not become active unless there is enough load to warrant it. You should also be aware that the ACC reacts slowly to changes in your ISPs performance so sudden burst of download data (like some DSL speed test programs use) will not move the link limit much.
‘ACK’ packets are special I want them treated with higher priority
Statement: It’s necessary to handle ‘ACK’ packets with special ‘priority’ so my uplink does not affect my downlink when I am using HTTP.
Rebuttal: It is not necessary to handle ACK packets different than other packets. As with all packets you need to think about how to allocate WAN resource for them. ACK packets are typically around 54 bytes long and the maximum packets around 1500 bytes. This ratio is 54/1500 = 3.6%. Any class which includes TCP traffic in the download needs a matching upload class that has allocation greater than 3.6% of the download bandwidth in bps. Many WAN links are asymmetrical in that the download is much faster than the upload so this affects the calculation.
Example: On a 10Mbps down/1Mbps up link we want HTTP traffic to consume 50% of the WAN down link when saturated. Let’s say our HTTP traffic is routed into the Normal class on both upload and download. The %BW in the download Normal class is simply 50%. On the uplink we must account for the fact that the link is asymmetrical so we allocate 3.6% * 10Mbps/1Mbps = 36% to the Normal class in the uplink. With this setup if either the uplink or downlink is saturated the HTTP traffic will be allocated not less than 5Mbps in the downlink.
Когда я использую QoS, пинги увеличиваются
Заблуждение: Я не использую QoS, потому что он увеличивает время пинга и я проигрываю в онлайн-игры. Мне нужно реально хорошее время пинга, чтобы не проигрывать.
Опровержение: QoS не виноват в плохих пингах. Если ваш канал не загружен, то пакеты будут задерживаться в маршрутизаторе не более чем на 1 мс. Если ваш канал загружен и правила написаны неправильно, то, возможно, время пинга увеличится до 150 мс. Проверьте свои правила, и убедитесь, что игровой трафик попадает в нужный класс и что этот класс не перегружен.