quality of service что это
Как использовать «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-адрес назначает ваш маршрутизатор, скажем, вы можете обеспечить свой рабочий ноутбук, он всегда будет иметь приоритет.
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 не рекомендуется назначать наивысший приоритет никакому трафику в настройках, чтобы не допустить ухудшения работы и увеличения времени восстановления.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
QoS (Quality of service)
В области компьютерных сетей и других пакетных сетей качество обслуживания обеспечивается с помощью алгоритмов приоритезации траффика и управления пакетами. В данном случае качеством обслуживания является способность предоставлять различный приоритет различным приложениям, пользователям или данным, а также гарантировать определенный уровень производительности для потока данных. [Источник 2]
Содержание
Механизм работы
Сети с коммутацией каналов обеспечивают QoS в их основном протоколе. Такие сети не нуждаются в дополнительных методах для достижения высокого качества.
В случае, когда обеспечение QoS является основнымв бизнес-требованием, сетевые клиенты и поставщики могут заключить договорное соглашение, называемое соглашение об уровне обслуживания (анг. SLA), которое гарантирует способность сети или протокола обеспечивать заявленную производительность и пропускную способность, обычно с помощью механизмов приоритезации трафика. [Источник 3] Существуют и другие подходы обеспечения QoS, когда ресурсы резервируются на каждом узле сети.
Избыточная производительность
В качестве альтернативы сложным механизмам управления QoS может использоваться обеспечение высококачественной связи путем обеспечения избыточной производительности сети. Таким образом емкость сети основывается на оценках максимальной нагрузки на сеть. Данный подход прост для сетей с предсказуемыми пиковыми нагрузками.
Производительность сети является критичным фактором для многих приложений. Некоторые из них могут компенсировать колебания полосы пропускания и задержки с помощью больших буферов приема, что часто возможно, например, при потоковой передаче видео. Избыточная производительность имеет предел масштабирования, однако, в условиях транспортных протоколов (например, TCP), которые со временем экспоненциально увеличивают объем данных, до тех пор, пока не будет использована вся пропускная способность и пакеты будут сбрасываться. Такие жадные протоколы, как правило, увеличивают задержки сети и могут терять пакеты для всех пользователей. [Источник 2]
Коммерческие сервисы VoIP часто конкурируют с традиционными телефонными операторами с точки зрения качества вызова, даже если механизмы QoS не используются при подключении пользователя к их интернет-провайдеру. Однако в условиях высокой нагрузки, качество связи VoIP может ухудшаться до сотовой связи или хуже.
Объем избыточного резервирования, необходимого для обеспечения QoS, зависит от количества пользователей и их требований к трафику. Это ограничивает использование избыточных ресурсов. Более новые приложения с большей пропускной способностью, а также большое количество пользователей являются недостатками данного метода. В этом случае требуется физическое обновления сетей, что является дорогостоящим процессом. Таким образом, избыточная производительность не может быть использована в сети Интернет.
IP-адреса и Ethernet
В отличие от сетей с одним владельцем, интернет представляет собой ряд пунктов обмена, соединяющих частные сети. Таким образом, ядро интернета принадлежит и управляется несколькими провайдерами сетевых услуг, а не одной организацией. Поведение такой сети более непредсказумое, Поэтому исследования в области процедур QoS, которые можно развертывать в больших и разнообразных сетях актуальны до сих пор. [Источник 1] Существует два основных подхода к QoS в современных IP-сетях с коммутацией пакетов: параметризованная система, основанная на обмене требованиями приложений в сети, и приоритетная система, в которой каждый пакет идентифицирует требуемый уровень обслуживания для сети.
Старые сети использовали философию интегрированных услуг (IntServ) резервирования сетевых ресурсов. В этой модели приложения использовали RSVP для запроса и резервирования ресурсов через сеть. В то время как механизмы IntServ получили широкое применение, стало понятно, что в широкополосной сети, типичной для более крупного поставщика услуг, ключевые роутеры должны будут принимать, поддерживать и срывать тысячи или, возможно, десятки тысяч пакетов. Данный подход не может масштабироваться с ростом сети интернет, и более того, противоречит понятию проектирования сетей, так как основные маршрутизаторы перегружены.
Маршрутизаторы, поддерживающие DiffServ, имеют свой сетевой планировщик для использования нескольких очередей для пакетов. Поставщики маршрутизаторов предоставляют различные возможности для настройки данной модели поведения, включая количество поддерживаемых очередей, относительные приоритеты очередей и пропускную способность, зарезервированную для каждой очереди. [Источник 1]
На практике, когда пакет должен быть перенаправлен из интерфейса с очередью, пакеты, требующие низкого джиттера (например, VoIP), получают приоритет над пакетами в других очередях. Как правило, некоторые потоки данных по умолчанию распределяются по сетевым управляющим пакетам, в то время как трафик с максимальным приоритетом может быть просто передан с любой пропускной способностью.
Протоколы и методы
Примеры технологий, требующих высокий QoS
Высокое качество обслуживания является необходимым требований для определенных типов сетевого трафика, например:
Для работы вышеперечисленных сервисов требуется обеспечить минимальную скорость передачи данных и максимальную латентность. [Источник 1]
Практика
Любая приоритезация имеет смысл только в том случае, когда возникает очередь на обслуживание. Именно там, в очереди, можно пройти первым, используя своё право. Очередь же образуется там, где узко (обычно такие места называются «бутылочным горлышком», bottle-neck). Типичное «горлышко» — выход в Интернет офиса, где компьютеры, подключенные к сети как минимум на скорости 100 Мбит/сек, все используют канал к провайдеру, который редко превышает 100 МБит/сек, а часто составляет мизерные 1-2-10МБит/сек. На всех.
QoS не панацея: если «горлышко» уж слишком узкое, то часто переполняется физический буфер интерфейса, куда помещаются все пакеты, собирающиеся выйти через этот интерфейс. И тогда новопришедшие пакеты будут уничтожены, даже если они сверхнужные. Поэтому, если очередь на интерфейсе в среднем превышает 20% от максимального своего размера (на маршрутизаторах cisco максимальный размер очереди составляет как правило 128-256 пакетов), есть повод крепко задуматься над дизайном своей сети, проложить дополнительные маршруты или расширить полосу до провайдера.
Разберемся с составными элементами технологии. [Источник 4]
Маркировка
В полях заголовков различных сетевых протоколов (Ethernet, IP, ATM, MPLS и др.) присутствуют специальные поля, выделенные для маркирования трафика. Маркировать же трафик нужно для последующей более простой обработки в очередях.
Маркировать данные лучше всего ближе к источнику этих данных. По этой причине большинство IP-телефонов самостоятельно добавляют в IP-заголовок голосовых пакетов поле DSCP = EF или CS5. Многие приложения также маркируют трафик самостоятельно в надежде, что их пакеты будут обработаны приоритетно. Например, этим «грешат» пиринговые сети. [Источник 4]
Очереди
Даже если не используются никаких технологий приоритезации, это не значит, что не возникает очередей. В узком месте очередь возникнет в любом случае и будет предоставлять стандартный механизм FIFO (First In First Out). Такая очередь, очевидно, позволит не уничтожать пакеты сразу, сохраняя их до отправки в буфере, но никаких преференций, скажем, голосовому трафику не предоставит. Если нужно предоставить некоторому выделенному классу абсолютный приоритет (т.е. пакеты из этого класса всегда будут обрабатываться первыми), то такая технология называется Priority queuing. Все пакеты, находящиеся в физическом исходящем буфере интерфейса будут разделены на 2 логических очереди и пакеты из привилегированной очереди будут отсылаться, пока она не опустеет. Только после этого начнут передаваться пакеты из второй очереди. Эта технология простая, довольно грубая, её можно считать устаревшей, т.к. обработка неприоритетного трафика будет постоянно останавливаться. На маршрутизаторах cisco можно создать 4 очереди с разными приоритетами. В них соблюдается строгая иерархия: пакеты из менее привилегированных очередей не будут обслуживаться до тех пор, пока не опустеют все очереди с более высоким приоритетом. Справедливая очередь (Fair Queuing). Технология, которая позволяет каждому классу трафика предоставить одинаковые права. Как правило не используется, т.к. мало даёт с точки зрения улучшения качества сервиса. Взвешенная справедливая очередь (Weighted Fair Queuing, WFQ). Технология, которая предоставляет разным классам трафика разные права (можно сказать, что «вес» у разных очередей разный), но одновременно обслуживает все очереди. Все пакеты делятся на логические очереди, используя в качестве критерия поле IP Precedence. Это же поле задаёт и приоритет (чем больше, тем лучше). Дальше, маршрутизатор вычисляет, пакет из какой очереди «быстрее» передать и передаёт именно его.
Считает он это по формуле:
IPP — значение поля IP Precedence t(i) — Время, требуемое на реальную передачу пакета интерфейсом. Можно вычислить, как L/Speed, где L — длина пакета, а Speed — скорость передачи интерфейса. [Источник 4]
Технология QoS — достаточно ресурсоёмкая и весьма существенно загружает процессор. И тем сильнее загружает, чем глубже в заголовки приходится залезать для классификации пакетов. Для сравнения: маршрутизатору гораздо проще посмотреть заголовок IP пакета и проанализировать там 3 бита IPP, нежели раскручивать поток практически до уровня приложения, определяя, что за протокол идёт внутри (технология NBAR). Для упрощения дальнейшей обработки трафика, а также для создания так называемой «области доверия» (trusted boundary), где мы верим всем заголовкам, относящимся к QoS, мы можем делать следующее: 1. На коммутаторах и маршрутизаторах уровня доступа (близко к клиентским машинам) ловить пакеты, сортируя их по классам 2.В политике качестве действия перекрашивать заголовки по-своему или переносить значения QoS-заголовков более высокого уровня на нижние.
Например, на маршрутизаторе ловим все пакеты из гостевого WiFi домена (предполагаем, что там могут быть не управляемые нами компьютеры и софт, который может использовать нестандартные QoS-заголовки), меняем любые заголовки IP на начальные, сопоставляем заголовкам 3 уровня (DSCP) заголовки канального уровня (CoS), чтобы дальше и коммутаторы могли эффективно приоритезировать трафик, используя только метку канального уровня. [Источник 4]
Настройка LLQ
Настройка очередей заключается в настройке классов, затем для этих классов надо определить параметры полосы пропускания и применить всю созданную конструкцию на интерфейс. Создание классов:
Для каждого класса в политике можно либо выделить приритетно кусок полосы:
и тогда пакеты этого класса смогут всегда рассчитывать как минимум на этот кусок.
Либо описать, какой «вес» имеет данный класс в рамках CBWFQ
В обоих случаях можно указать как аболютное значение, так и процент от всей доступной полосы. Возникает резонный вопрос: а откуда маршрутизатор знает ВСЮ полосу? Ответ банален: из параметра bandwidth на интерфейсе. Даже если он не сконфигурирован явно, какое то его значение обязательно есть. Его можно посмотреть командой sh int. [Источник 4] Также обязательно помнить, что по умолчанию вы распоряжаетсь не всей полосой, а лишь 75%. Пакеты, явно не попавшие в другие классы, попадают в class-default. Эту настройку для дефолтного класса можно задать явно
Изменить максимальную доступную полосу с дефолтных 75% можно командой на интерфейсе: max-reserved-bandwidth [percent]
Маршрутизаторы следят, чтобы администратор не выдал случайно больше полосы, чем есть и ругаются на такие попытки. Создаётся впечатление, что политика будет выдавать классам не больше, чем написано. Однако, такая ситуация будет лишь в том случае, если все очереди наполнены. Если же какая то пустует, то выделенную ей полосу наполненные очереди поделят пропорционально своему «весу». Работать же вся эта конструкция будет так: если идут пакеты из класса с указанием priority, то маршрутизатор сосредотачивается на передаче этих пакетов. Причем, т.к. таких приоритетных очередей может быть несколько, то между ними полоса делится пропорционально указанным процентам. Как только все приоритетные пакеты закончились, наступает очередь CBWFQ. За каждый отсчёт времени из каждой очереди «зачёрпывается» доля пакетов, указанная в настройке для данного класса. Если же часть очередей пустует, то их полоса делится пропорционально «весу» класса между загруженными очередями.
Применение на интерфейсе:
А что же делать, если надо строго рубить пакеты из класса, выходящие за дозволенную скорость? Ведь указание bandwidth лишь распределяет полосу между классами, когда очереди загружены. Для решения этой задачи для класса трафика в политике есть технология
она позволяет явно указать желаемую среднюю скорость (speed), максимальный «выброс», т.е. количество передаваемых данных за единицу времени. Чем больше «выброс», тем больше реальная скорость передачи может отклоняться от желаемой средней. Также указываются: действие для нормального трафика, не превышающего указанную скорость и действие для трафика, превысившего среднюю скорость. Действия могут быть такими
Часто возникает также и другая задача. Предположим, что надо ограничить поток, идущий в сторону соседа с медленным каналом.
Дабы точно предсказать, какие пакеты дойдут до соседа, а какие будут уничтожены в силу загруженности канала на «медленной» стороне, надо на «быстрой» стороне создать политику, которая бы заранее обрабатывала очереди и уничтожала избыточные пакеты. И тут мы сталкиваемся с одной очень важной вещью: для решения этой задачи надо сэмулировать «медленный» канал. Для этой эмуляции не достаточно только распределять пакеты по очередям, надо ещё сэмулировать физический буфер «медленного» интерфейса. У каждого интерфейса есть скорость передачи пакетов. Т.е. в единицу времени каждый интерфейс может передать не более, чем N пакетов. Обычно физический буфер интерфейса рассчитывают так, чтобы обеспечить «автономную» работу интерфейсу на несколько единиц вермени. Поэтому физический буфер будет в десятки раз больше какого-нибудь интерфейса Serial.
Что же плохого в том, чтобы запомнить много? Давайте рассмотрим подробно, что произойдёт, в случае если буфер на быстрой передающей стороне будет существенно больше буфера принимающей. Пусть для простоты есть 1 очередь. На «быстрой» стороне сэмулируем малую скорость передачи. Это значит, что попадая под нашу политику пакеты начнут накапливаться в очереди. Т.к. физический буфер большой, то и логическая очередь получится внушительной. Часть приложений (работающих через ТСР) поздно получат уведомление о том, что часть пакетов не получена и долго будут держать большой размер окна, нагружая сторону-приемник. Это будет происходить в том идеальном случае, когда скорость передачи будет равна или меньше скорости приёма. Но интерфейс принимающей стороны может быть сам загружен и другими пакетами и тогда маленькая очередь на принимающей стороне не сможет вместить всех пакетов, передаваемых ей из центра. Начнутся потери, которые повлекут за собой дополнительные передачи, но в передающем буфере ведь ещё останется солидный «хвост» ранее накопленных пакетов, которые будут передаваться «вхолостую», т.к. на принимающей стороне не дождались более раннего пакета, а значит более позние будут просто проигнорированы.
Поэтому для корректного решения задачи понижения скорости передачи к медленному соседу физический буфер тоже надо ограничить. Делается это командой
Ну а теперь самое интересное: а как быть, если мне помимо эмуляции физического буфера надо внутри него создать логические очереди? Например, выделить приоритетно голос? Для это создаётся так называемая вложенная политика, которая применяется внутри основной и делит на логические очереди то, что в неё попадает из родительской. Пришло время разобрать какой-нибудь залихватский пример на основе приведенной картинки. Пусть мы собираеися создать устойчиво работающие голосовые каналы через интернет между CO и Remote. Для простоты пусть сеть Remote (172.16.1.0/24) имеет только связь с СО (10.0.0.0/8). Скорость интерфейса на Remote — 1 Мбит/сек и выделяется 25% этой скорости на голосовой трафик. Тогда для начала нам надо выделить приоритетный класс трафика с обеих сторон и создать политику для данного класса. На СО дополнительно создадим класс, описывающий трафик между офисами На СО:
На Remote поступим иначе: пусть в силу слабого железа мы не можем использовать NBAR, тогда нам остаётся только явно описать порты для RTP
Далее, на СО надо сэмулировать медленный интерфейс, применить вложенную политику для приоритезации голосовых пакетов
и применить политику на интерфейсе
На Remote установим параметр bandwidth (в кбит/сек) в соответствие со скоростью интерфейса. Напомню, что именно от этого параметра будет считаться 25%. И применим политику.
С сугубо защитной точки зрения, знание основ QoS позволит оперативно предотвращать бутылочные горла, вызванные работой червей. Как известно, червь сам по себе довольно агрессивен на фазе распространения и создаёт много паразитного трафика, т.е. по сути атаку отказа в обслуживании (Denial of Service, DoS). [Источник 4] Причем часто червь распространяется по нужным для работы портам (ТСР/135,445,80 и др.) Просто закрыть на маршрутизаторе эти порты было бы опрометчиво, поэтому гуманнее поступать так:
1. Собираем статистику по сетевому трафику. Либо по NetFlow, либо NBARом, либо по SNMP. 2. Выявляем профиль нормального трафика, т.е. по статистике, в среднем, протокол HTTP (Hypertext Transfer Protocol) занимает не больше 70%, ICMP — не больше 5% и т.д. Такой профиль можно либо создать вручную, либо применив накопленную NBARом статистику. Мало того, можно даже автоматически создать классы, политику и применить на интерфейсе командой autoqos. 3. Далее, можно ограничить для нетипичного сетевого трафика полосу. Если вдруг и подцепим заразу по нестандартному порту, большой беды для шлюза не будет: на загруженном интерфейсе зараза займет не более выделенной части. 4. Создав конструкцию (class-map — policy-map — service-policy) можно оперативно реагировать на появление нетипичного всплеска трафика, создавая вручную для него класс и сильно ограничивая полосу для этого класса.