Ограничение полосы пропускания
Данное руководство по настройке адресовано системным администраторам, эксплуатирующим LANBilling у которых стоят задачи ограничения полосы пропускания для абонентов сети передачи данных.
Обратите внимание что ссылки на актуальные скрипты LANBilling будут добавлены в течение недели. В данный момент они унифицируются. И могут быть высланы по дополнительному запросу по e-mail в любой момент.
В LANBilling имеется возможность привязки ограничения пропускной способности канала как к учетной записи, так и к тарифу абонента. Установив определенное значение скорости в интерфейсе LANBilling, вы всего лишь добавляете новое свойство учетной записи, но это никак не влияет на фактическую пропускную способность канала пользователя. Дело в том, что реальная регулировка полосы пропускания (шейпинг, от английского shaping) возможна только на маршрутизирующих (коммутирующих) устройствах, через которые проходит трафик. В качестве таких устройств могут выступать PC-маршрутизаторы, маршрутизаторы cisco, управляемые коммутаторы (например, HP Procurve) и т.п. К сожалению, универсального интерфейса взаимодействия с подобными устройствами не существует, поэтому перед системным администратором встает задача настройки этого взаимодействия (написание дополнительных модулей, скриптов управления и т.п.), которое в общем случае определяется спецификой используемого оборудования, топологией сети и другими факторами.
В LANBilling предлагаются следующие механизмы взаимодействия с внешними системами, осуществляющими шейпинг:
1. Средствами внешних скриптов. По определенному событию LANBilling запускает внешний скрипт с рядом параметров, относящихся к конкретной учетной записи. Среди этих параметров имеется значение полосы пропускания, установленной для пользователя (см. описание vg-скриптов в документации: разделы «Файл конфигурации billing.conf», «Система контроля доступа»). Этот скрипт должен осуществлять управление шейпером.
2. При помощи RADIUS-атрибутов. Речь идет об услугах VPN и DialUP, когда NAS является устройством, осуществляющим шейпинг. В ответе на запрос аутентификации RADIUS сервер (он же агент LANBilling) может отсылать атрибут, определенный для данного абонента, который содержит в себе инструкции по управлению пропускной способностью устанавливаемого соединения. В данном случае необходима поддержка этой возможности программным обеспечение со стороны NAS'а. Среди устройств, поддерживающих данный механизм, можно выделить маршрутизаторы Cisco Systems и коммутаторы HP Procurve.
Примеры управляющих скриптов:
Cisco
Маршрутизаторы Сisco Systems позволяют делать шейпинг как по входящему, так и по исходящему трафику (возможность зависит от версии IOS).
1. Статическая привязка скорости к IP адресу
! interface FastEthernet0/0 ip address 192.168.0.1 255.255.255.0 rate-limit output access-group 2055 64000 8000 8000 conform-action transmit exceed-action drop rate-limit output access-group 2057 128000 16000 16000 conform-action transmit exceed-action drop ! access-list 2055 permit ip any host 192.168.0.107 deny ip any any ! access-list 2057 permit ip any host 192.168.0.3 deny ip any any !
В данном примере конфигурации маршрутизатора на интерфейсе FastEthernet0/0 созданы два правила по ограничению исходящего (по отношению к интерфейсу) трафика. Под эти правила согласно access-list попадает трафик хоста 192.168.0.107 (ограничение 64 Кбит) и 192.168.0.3(ограничение 128 Кбит). Автоматизировав редактирование этих инструкций для каждого пользователя, можно динамически управлять пропускной способностью из интерфейса LANBilling. В качестве примера автоматизации можно рассмотреть следующий скрипт. Скрипт написан на языке perl использует telnet для доступа к маршрутизатору и нуждается в редактировании параметров доступа в начале скрипта (cisco_ip, cisco_password, cisco_enable). Этот скрипт принимает в качестве параметров ip адрес, маску и значение пропускной способности, и должен вызываться из процедур vg_on/vg_off.
2. Динамическая привязка скорости к интерфейсу с помощью RADIUS-атрибутов
Когда DialUP (VPN) пользователь успешно прошел аутентификацию, на маршрутизаторе создается новый виртуальный интерфейс. При этом RADIUS агент (сервер) в ответном пакете может передать ряд VSA атрибутов, определяющих параметры вновь созданного соединения. В контексте решения интересует установка значения пропускной способности на этом интерфейсе.
За установку значения полосы пропускания отвечает следующий атрибут:
Radius Code = Access-Accept, Номер атрибута = 26 (VSA), Номер Vendor'а = 9 (Cisco), Номер VSA атрибута = 1, Тип = строка, Значение атрибута = lcp:interface-config#1=rate-limit output 192000 24000 24000 conform-action transmit exceed-action drop
В данном примере устанавливается скорость 192kbps на исходящий по отношению к интерфейсу на cisco трафик, т.е. на входящий трафик для пользователя. Ознакомиться с конфигурированием rate-limit на Cisco можно здесь.
К одной учетной записи можно привязать несколько атрибутов. Все они будут передаваться на NAS. При этом нужно следить, чтобы атрибуты не конфликтовали между собой.
Linux маршрутизатор
1. Средства ядра ОС
В ОС Linux есть весьма мощное средство управления трафиком - утилита tc, входящая в пакет iproute2. Вся работа с трафиком, в том числе реализация QoS, происходит в ядре. Пакет iproute2 по сути представляет из себя интерфейс взаимодействия с ядром ОС. В интернет можно найти большое количество статей на эту тему (теперь даже на русском языке). В двух словах механизм управления полосой пропускания можно описать следующим образом. На интерфейсе создается очередь пакетов (qdisc). Очередь обрабатывается в соответствии с одним из возможных алгоритмов (PFIFO, CBQ, HTB, TBF, SFQ, RED и т.д.). Существуют бесклассовые и классовые qdisc. Последние допускают создание разветвленной схемы классов трафика в очереди, что обеспечивает более гибкое управление трафиком. Пакет может быть отнесен к тому или иному классу в соответствии с правилами фильтров.
Следует отметить, что все очереди работают только с исходящим трафиком (исключение ingress). Мотивировано это тем, что мы в общем случае не можем влиять на скорость присылаемого нам трафика. На самом деле это актуально только для трафика самого сервера. Если речь идет о маршрутизируемом трафике, то это ограничение ничем не мешает, т.к. весь трафик является исходящим на одном из интерфейсов роутера.
Нас будет интересовать только ограничение полосы пропускания для конкретного пользователя. Рассмотрим простейший случай: требуется ограничить скорость на интерфейсе до требуемого значения, скажем 128 Кб/с. Такая необходимость может возникнуть при использовании PoPToP, когда для каждого пользователя создается свой ppp интерфейс. Здесь имеет смысл ограничивать скорость на всем интерфейсе без применения каких-либо фильтров. Для этих целей лучше всего подойдет бесклассовый qdisc TBF.
#tc qdisc add dev ppp0 root tbf rate 128kbit burst 4kb latency 70ms minburst 1540
Этой командой ограничивается исходящая скорость на интерфейсе ppp0 (т.е. скорость входящего трафика для пользователя).
Использованы следующие параметры:
rate - максимальная скорость потока.
burst - количество байт данных, которые можно поместить в буфер в единицу времени. Чем выше скорость потока, тем больше должно быть значение burst. burst не может быть меньше значения MTU (minburst) - 1540 байт для ethernet.
latency - определяет размер буфера по максимальному времени нахождения пакета в буфере. Можно вместо этого указать размер буфера в байтах (параметр limit).
2. Пример использования TC
#tc qdisc add dev eth0 root handle 1: htb #tc class add dev eth0 parent 1: classid 1:10 htb rate 16kbps burst 2kbps #tc class add dev eth0 parent 1: classid 1:20 htb rate 32kbps burst 2kbps #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.10 flowid 1:10 #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.20 flowid 1:20 #tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 #tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
Первой инструкцией на интерфейсе создается htb qdisc. Затем от него ответвляются 2 класса, для которых резервируется скорость 16 и 32 Кбайт/с. Следующие 2 инструкции - это фильтры, привязывающие трафик, принадлежащий к данному ip к конкретному классу. Трафик, который не попадает под правила фильтров, обрабатывается стандартным образом (без ограничений). Следующие 2 команды не являются обязательными. Они определяют тип очереди (sfq qdisc) в каждом из двух созданных классов. По умолчанию всегда используется pfifo очередь, пакеты в которой обрабатываются по принципу first-in-firts-out.
В sfq алгоритме очередность пакетов определяется случайным образом так, чтобы обеспечить равномерное распределение полосы между между различными приложениями (точнее между потоками, определяемыми по src ip, dst ip, src port). Применение sfq в некоторых случаях может помочь избежать ситуации, когда процесс закачки полностью занял полосу и в результате остальные приложения не могут отправлять пакеты.
В вышеприведенном примере мы выделяем гарантированную полосу для каждого из двух пользователей, при этом неиспользуемая часть зарезервированной для них полосы не может быть использована другими. Допуская, что вся сеть 192.168.0.0/24 состоит из пользователей, для которых нужно установит ограничение в 128 Кбит/с каждому, но не имеется желания выделять на них более 2 Мбит/с. В этом случае конфигурация может быть следующей:
#tc qdisc add dev eth0 root handle 1: htb #tc class add dev eth0 parent 1: classid 1:1 htb rate 250kbps burst 10kbps #tc class add dev eth0 parent 1:1 classid 1:10 htb rate 16kbps ceil 250kbps burst 2kbps #tc class add dev eth0 parent 1:1 classid 1:20 htb rate 16kbps ceil 250kbps burst 2kbps #tc class add dev eth0 parent 1:1 classid 1:30 htb rate 16kbps ceil 250kbps burst 2kbps ... #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.1 flowid 1:10 #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.2 flowid 1:20 #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.2 flowid 1:30 ...
В этом случае пользовательские классы создаются как подклассы одного root класса, определяющего общую пропускную способность, полоса в 2 Мбит/с делится между всеми подклассами в соответствии с их параметрами.
Динамическое управление настройками шейпера через LANBilling должно быть реализовано как часть скриптов vg_on, vg_off, vg_edit. При старте агента эти скрипты запускаются для всех пользователей (vg_off для заблокированных, vg_on для активных). Соответственно vg_on должен добавлять правило для шейпера, а vg_off его удалять. Так же можно использовать vg_create, vg_delete и vg_edit, которые запускаются соответственно при создании, удалении и редактировании учетной записи. В параметрах скрипту передается все необходимое - ip, netmask, полоса пропускания.
Примеры скриптов можно посмотреть здесь.
FreeBSD маршрутизатор
Во FreeBSD существуют две различные реализации QoS: DUMMYNET и ALTQ. Первая используется совместно с ipfw и содержится в базовой комплектации ОС. ALTQ до недавнего времени приходилось устанавливать отдельно, в отличие от dummynet здесь реализованы более гибкие механизмы управления очередями (CBQ, RED...). Для задачи решаемой в рамках этого документа - простого ограничения полосы пропускания для пользователя (группы пользователей) - вполне подойдет dummynet.
1. Примеры настройки шейпера с использованием ipfw+dummynet
В первую очередь, ядро должно быть сконфигурировано со следующими опциями:
options IPFIREWALL options DUMMYNET options HZ=1000
Управление трафиком осуществляется при помощи двух объектов: канал или труба(pipe) и очередь(queue). Каналы обладают такими свойствами как пропускная способность, размер очереди пакетов и дополнительная задержка каждого пакета. Канал по сути имитирует линк заданной «толщины». Очереди осуществляют распределение полосы пропускания в соответствии с заданными весами(WFQ).
Канал определяется следующим правилом:
#ipfw pipe 1 config bw 256Kbits queue 20
Канал с номером 1 будет иметь пропускную способность 512 Кбит/с и очередь размером в 40 слотов(пакетов). Направления трафика в данный канал осуществляется обычным правилом firewall'а:
#ipfw add pipe 1 ip from any to 192.168.0.1
Таким образом весь трафик, идущий на ip 192.168.0.1 в локальной сети будет ограничен согласно параметрам созданного pipe'а. Для каждого пользователя в LANBilling с установленным ограничением скорости нужно создать свой pipe и соответствующее правило ipfw. Однако эту задачу можно несколько упростить, благодаря возможности использовать маску при создании канала. Продемонстрируем на примере:
#ipfw pipe 1 config mask dst-addr 0xffffffff bw 256Kbits queue 20
Созданный таким образом канал на самом деле является шаблоном, на основе которого создаются каналы для каждого нового адреса назначения (dst-addr).
Можно статически прописать шаблоны всех используемых скоростей и с помощью средств LANBilling динамически управлять только правилами ipfw, направляющими трафик в тот или иной канал:
#ipfw pipe 1 config mask dst-addr 0xffffffff bw 64Kbits queue 10 #ipfw pipe 2 config mask dst-addr 0xffffffff bw 128Kbits queue 10 #ipfw pipe 3 config mask dst-addr 0xffffffff bw 256Kbits queue 20 #ipfw pipe 4 config mask dst-addr 0xffffffff bw 512Kbits queue 40
2. Пример использования очередей (queue)
Часто возникает необходимость использования приоритезации трафика. Предположим, есть несколько привилегированных пользователей(VIP), которым нужно гарантировать хорошую пропускную способность даже в случае полной загрузки канала. Это можно реализовать, например, так. Всю полосу пропускания необходимо поделить на две очереди: очередь для «VIP персон» и для всех остальных с разными весовыми коэффициентами. На языке ip-фильтра выглядеть это будет следующим образом.
ipfw pipe 1 config bw 1000Kbit/s queue 40 ipfw queue 1 config pipe 1 weight 50 queue 40 mask dst-addr 0xffffffff ipfw queue 2 config pipe 1 weight 10 queue 40 mask dst-addr 0xffffffff ipfw add queue 1 ip from any to 192.168.0.0/24 ipfw add queue 2 ip from any to 172.16.0.0/12
Трафик подсети 192.168.0.0/24 попадает в первую (VIP) очередь. В этой очереди в единицу времени обрабатывается в 5 раз больше пакетов, чем во второй. В отличии от pipe здесь не происходит резервирование полосы пропускания, поэтому если VIP очередь пустует, вся полоса (в данном примере 1 Мбит/с) делится между всеми остальными пользователями. В большинстве случаев, чтобы добиться требуемого распределения полосы пропускания между пользователями, необходимо использовать комбинации queue и pipe.
Примечание: следует обратить внимание на значение параметра ядра (sysctl) net.inet.ip.fw.one_pass:
0 - пакет обрабатывается следующим правилом firewall'а при выходе из pipe;
1 - пакет не обрабатывается.
Политика в отношении обработки
персональных данных
1. Общие положения
Настоящая политика обработки персональных данных составлена в соответствии с требованиями Федерального закона от 27.07.2006. №152-ФЗ «О персональных данных» и определяет порядок обработки персональных данных и меры по обеспечению безопасности персональных данных, предпринимаемые ООО "Сетевые решения" (далее – Оператор).
1.1. Оператор ставит своей важнейшей целью и условием осуществления своей деятельности соблюдение прав и свобод человека и гражданина при обработке его персональных данных, в том числе защиты прав на неприкосновенность частной жизни, личную и семейную тайну.
1.2. Настоящая политика Оператора в отношении обработки персональных данных (далее – Политика) применяется ко всей информации, которую Оператор может получить о посетителях веб-сайта https://www.lanbilling.ru/.
2. Основные понятия, используемые в Политике
2.1. Автоматизированная обработка персональных данных – обработка персональных данных с помощью средств вычислительной техники;
2.2. Блокирование персональных данных – временное прекращение обработки персональных данных (за исключением случаев, если обработка необходима для уточнения персональных данных);
2.3. Веб-сайт – совокупность графических и информационных материалов, а также программ для ЭВМ и баз данных, обеспечивающих их доступность в сети интернет по сетевому адресу https://www.lanbilling.ru/;
2.4. Информационная система персональных данных — совокупность содержащихся в базах данных персональных данных, и обеспечивающих их обработку информационных технологий и технических средств;
2.5. Обезличивание персональных данных — действия, в результате которых невозможно определить без использования дополнительной информации принадлежность персональных данных конкретному Пользователю или иному субъекту персональных данных;
2.6. Обработка персональных данных – любое действие (операция) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных данных;
2.7. Оператор – государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели обработки персональных данных, состав персональных данных, подлежащих обработке, действия (операции), совершаемые с персональными данными;
2.8. Персональные данные – любая информация, относящаяся прямо или косвенно к определенному или определяемому Пользователю веб-сайта https://www.lanbilling.ru/;
2.9. Пользователь – любой посетитель веб-сайта https://www.lanbilling.ru/;
2.10. Предоставление персональных данных – действия, направленные на раскрытие персональных данных определенному лицу или определенному кругу лиц;
2.11. Распространение персональных данных – любые действия, направленные на раскрытие персональных данных неопределенному кругу лиц (передача персональных данных) или на ознакомление с персональными данными неограниченного круга лиц, в том числе обнародование персональных данных в средствах массовой информации, размещение в информационно-телекоммуникационных сетях или предоставление доступа к персональным данным каким-либо иным способом;
2.12. Трансграничная передача персональных данных – передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому или иностранному юридическому лицу;
2.13. Уничтожение персональных данных – любые действия, в результате которых персональные данные уничтожаются безвозвратно с невозможностью дальнейшего восстановления содержания персональных данных в информационной системе персональных данных и (или) уничтожаются материальные носители персональных данных.
3. Оператор может обрабатывать следующие персональные данные Пользователя
3.1.Фамилия, имя, отчество;
3.2.Электронный адрес;
3.3.Номера телефонов;
3.4. Также на сайте происходит сбор и обработка обезличенных данных о посетителях (в т.ч. файлов «cookie») с помощью сервисов интернет-статистики (Яндекс Метрика и Гугл Аналитика и других).
3.5. Вышеперечисленные данные далее по тексту Политики объединены общим понятием Персональные данные.
4. Цели обработки персональных данных
4.1. Цель обработки персональных данных Пользователя —информирование Пользователя посредством отправки электронных писем; предоставление доступа Пользователю к сервисам, информации и/или материалам, содержащимся на веб-сайте; информирование Пользователя посредством телефонного звонка.
4.2. Также Оператор имеет право направлять Пользователю уведомления о новых продуктах и услугах, специальных предложениях и различных событиях. Пользователь всегда может отказаться от получения информационных сообщений, направив Оператору письмо на адрес электронной почты itdep@lanbilling.ru с пометкой «Отказ от уведомлений о новых продуктах и услугах и специальных предложениях».
4.3. Обезличенные данные Пользователей, собираемые с помощью сервисов интернет-статистики, служат для сбора информации о действиях Пользователей на сайте, улучшения качества сайта и его содержания.
5. Правовые основания обработки персональных данных
5.1. Оператор обрабатывает персональные данные Пользователя только в случае их заполнения и/или отправки Пользователем самостоятельно через специальные формы, расположенные на сайте https://www.lanbilling.ru/. Заполняя соответствующие формы и/или отправляя свои персональные данные Оператору, Пользователь выражает свое согласие с данной Политикой.
5.2. Оператор обрабатывает обезличенные данные о Пользователе в случае, если это разрешено в настройках браузера Пользователя (включено сохранение файлов «cookie» и использование технологии JavaScript).
6. Порядок сбора, хранения, передачи и других видов обработки персональных данных
Безопасность персональных данных, которые обрабатываются Оператором, обеспечивается путем реализации правовых, организационных и технических мер, необходимых для выполнения в полном объеме требований действующего законодательства в области защиты персональных данных.
6.1. Оператор обеспечивает сохранность персональных данных и принимает все возможные меры, исключающие доступ к персональным данным неуполномоченных лиц.
6.2. Персональные данные Пользователя никогда, ни при каких условиях не будут переданы третьим лицам, за исключением случаев, связанных с исполнением действующего законодательства.
6.3. В случае выявления неточностей в персональных данных, Пользователь может актуализировать их самостоятельно, путем направления Оператору уведомление на адрес электронной почты Оператора itdep@lanbilling.ru с пометкой «Актуализация персональных данных».
6.4. Срок обработки персональных данных является неограниченным. Пользователь может в любой момент отозвать свое согласие на обработку персональных данных, направив Оператору уведомление посредством электронной почты на электронный адрес Оператора itdep@lanbilling.ru с пометкой «Отзыв согласия на обработку персональных данных».
7. Трансграничная передача персональных данных
7.1. Оператор до начала осуществления трансграничной передачи персональных данных обязан убедиться в том, что иностранным государством, на территорию которого предполагается осуществлять передачу персональных данных, обеспечивается надежная защита прав субъектов персональных данных.
7.2. Трансграничная передача персональных данных на территории иностранных государств, не отвечающих вышеуказанным требованиям, может осуществляться только в случае наличия согласия в письменной форме субъекта персональных данных на трансграничную передачу его персональных данных и/или исполнения договора, стороной которого является субъект персональных данных.
8. Заключительные положения
8.1. Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты itdep@lanbilling.ru.
8.2. В данном документе будут отражены любые изменения политики обработки персональных данных Оператором. Политика действует бессрочно до замены ее новой версией.
8.3. Актуальная версия Политики в свободном доступе расположена в сети Интернет по адресу https://www.lanbilling.ru/privacy/.