Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:manual:ng_car [2009/11/21 13:54] asmodeus |
abills:docs:manual:ng_car [2015/12/05 17:50] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
=====FreeBSD ng_car шейпер===== | =====FreeBSD ng_car шейпер===== | ||
+ | ng_car является частью netgraph и используется для ограничения трафика на интерфейсах, представляет из себя модуль ядра системы. | ||
+ | |||
+ | ng_car можно использовать как на физических интерфейсах, так и на виртуальных интерфейсах и интерфейсах MPD. Разграничения скорости трафика по сетям и Ip адресам, можно использовать ng_car совместно с ng_bpf. | ||
+ | |||
+ | Для ограничения пропускной способности интерфейса потребуется собрать ядро с поддержкой netgraph. | ||
+ | |||
+ | В файле конфигурации ядра убираем комментарий со строк: | ||
+ | options NETGRAPH | ||
+ | options NETGRAPH_ETHER | ||
+ | |||
+ | и пересобираем ядро. | ||
+ | |||
Описание принципов работы шейпера FreeBSD + ng_car | Описание принципов работы шейпера FreeBSD + ng_car | ||
Строка 6: | Строка 18: | ||
$conf{ng_car}=1; | $conf{ng_car}=1; | ||
+ | |||
+ | |$conf{ng_car_prefix}=10000;| Префикс для для добавления в номеру входящего правила | | ||
1. Поднятия правил ipfw заворота в ng_car шейпер осуществляется скриптом misc/ipfw/shaper_start.sh \\ | 1. Поднятия правил ipfw заворота в ng_car шейпер осуществляется скриптом misc/ipfw/shaper_start.sh \\ | ||
+ | |||
+ | # cp /abills/misc/ipfw/shaper_start.sh /usr/local/etc/rc.d/ | ||
+ | |||
+ | **/etc/rc.conf** | ||
+ | abills_shaper_enable="YES" | ||
+ | abills_nas_id="1" | ||
+ | abills_shaper_if="" # По умолчанию ng | ||
+ | |||
Пример поднятых правил: | Пример поднятых правил: | ||
Строка 32: | Строка 54: | ||
Описание таблиц: | Описание таблиц: | ||
- | ^ 2 | Список сетей для локального класcа трафика с номером 2. Номера формируются соответсвенно с номером класса трафика в журнале классов трафика. | | + | ^ 2 | Список сетей для локального класса трафика с номером 2. Номера формируются соответственно с номером класса трафика в журнале классов трафика. | |
^ 10 | список пользователей которые попадают в правила шейпера для исходящего глобального трафика | | ^ 10 | список пользователей которые попадают в правила шейпера для исходящего глобального трафика | | ||
^ 11 | список пользователей которые попадают в правила шейпера для входящего глобального трафика | | ^ 11 | список пользователей которые попадают в правила шейпера для входящего глобального трафика | | ||
- | ^ 12 | список пользователей которые попадают в правила шейпера для исходящего локального трафика с номером класса 2. Номера формируются соответсвенно номер класса трафика + 10. | | + | ^ 12 | список пользователей которые попадают в правила шейпера для исходящего локального трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10. | |
- | ^ 13 | список пользователей которые попадают в правила шейпера для входящего локального трафика с номером класса 2. Номера формируются соответсвенно номер класса трафика + 10 + 1. | | + | ^ 13 | список пользователей которые попадают в правила шейпера для входящего локального трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10 + 1. | |
+ | ^ 3 | Список сетей для локального класса трафика с номером 3. Номера формируются соответственно с номером класса трафика в журнале классов трафика. | | ||
+ | ^ 14,15 | Соответственно класс 3 трафика | | ||
- | + | Для поднятия шейпера используется программа linkupdown. Программа прописывает пользователей в таблицы ipfw и присваивает им скорость. Для проверки правил которые она выполняет нужно указать последним параметром параметр debug.\\ | |
- | Для поднятия шейпера используется программа linkupdown. Програма прописывает пользователей в таблицы ipfw и присваивает им скорость. Для проверки правил которые она выполняет нужно указать последним параметром параметр debug.\\ | + | |
**Например:** | **Например:** | ||
abills/libexec/linkupdown up ng0 test 10.11.11.11 debug | abills/libexec/linkupdown up ng0 test 10.11.11.11 debug | ||
- | Для проверки назначенно скорости и её изминения используется программа: | + | |
- | abills/libexec/billd checkspeed NAS_IDS=10 SHOW_SPEED=1 | + | **Внимание!!! При использовании ng_car шейпера можно использовать одновременно только одну активную сессию для учётной записи** |
+ | |||
+ | ====Проверка установленного шейпера==== | ||
+ | Для проверки назначено скорости и её изменения используется программа:\\ | ||
+ | * Проверка установленной скорости и изменение для активных абонентов | ||
+ | |||
+ | /usr/abills/libexec/billd checkspeed NAS_IDS=10 | ||
+ | |||
+ | * Просмотр установленной скорости | ||
+ | |||
+ | /usr/abills/libexec/billd checkspeed NAS_IDS=10 SHOW_SPEED=1 | ||
+ | |||
+ | **Также можно просмотреть установлен ли шейпер на абонента следующим способом ** | ||
+ | * Найти IP адрес абонента в 10 таблице фаервола | ||
+ | |||
+ | # ipfw table 10 list | grep [IP адрес пользователя] | ||
+ | |||
+ | * Установлен ли шейпер ng_car | ||
+ | |||
+ | # ngctl list | grep [логин абонента] | ||
+ | |||
+ | * Подняты ли правила заворота абонента в ng_car | ||
+ | |||
+ | # ipfw show | grep netg | ||
+ | | ||
+ | Все эти команды должны возвращать строки с параметрами если не возвращают значит шейпер не присвоился абоненту | ||
+ | \\ | ||
+ | |||
+ | ====Опитимизация системы==== | ||
+ | **/etc/sysctl.conf** | ||
+ | |||
+ | kern.ipc.maxsockbuf=8388608 | ||
+ | net.graph.recvspace=256000 | ||
+ | # TCP bufer size | ||
+ | net.inet.tcp.recvspace=65535 | ||
+ | | ||
+ | # incoming TCP queue size | ||
+ | kern.ipc.somaxconn=1024 | ||
+ | # incoming packets queue size | ||
+ | net.inet.ip.intr_queue_maxlen=2000 | ||