Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:manual:ng_car [2009/08/18 23:05] 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 | ||
+ | |||
+ | Для работы нужно указать в конфигурационном файле **config.pl** | ||
+ | |||
+ | $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 | ||
+ | |||
Пример поднятых правил: | Пример поднятых правил: | ||
| | ||
- | # Локальный трафик | + | |
- | 09000 0 0 netgraph tablearg ip from table(12) to table(2) out via lnc0 | + | # перекинуть трафик в правила заворота в ng_car |
- | 09010 0 0 netgraph tablearg ip from table(2) to table(13) out via ng* | + | 09020 7 363 skipto 10120 ip from table(12) to table(2) in recv ng* |
- | # Глобальный класс трафика | + | 09025 1 214 skipto 10125 ip from table(2) to table(13) out xmit ng* |
- | 10000 0 0 netgraph tablearg ip from table(10) to any out via lnc0 | + | 09030 0 0 skipto 10130 ip from table(14) to table(3) in recv ng* |
- | 10010 0 0 netgraph tablearg ip from any to table(11) out via ng* | + | 09035 0 0 skipto 10135 ip from table(3) to table(15) out xmit ng* |
+ | | ||
+ | # Заворот глобального для прописанных пользователей в таблице 10 в ng_car | ||
+ | 10000 1720 106227 netgraph tablearg ip from table(10) to any in recv ng* | ||
+ | 10010 2863 3965522 netgraph tablearg ip from any to table(11) out xmit ng* | ||
+ | # Весь остальной трафик пропускать | ||
+ | 10015 0 0 allow ip from any to any via ng* | ||
+ | #Локальный заворот в ng_car | ||
+ | 10120 7 363 netgraph tablearg ip from table(12) to any in recv ng* | ||
+ | 10125 1 214 netgraph tablearg ip from any to table(13) out xmit ng* | ||
+ | | ||
+ | 10130 0 0 netgraph tablearg ip from table(14) to any in recv ng* | ||
+ | 10135 0 0 netgraph tablearg ip from any to table(15) out xmit ng | ||
Описание таблиц: | Описание таблиц: | ||
- | ^ 2 | Список сетей для локального класcа трафика с номером 2 | | + | ^ 2 | Список сетей для локального класса трафика с номером 2. Номера формируются соответственно с номером класса трафика в журнале классов трафика. | |
^ 10 | список пользователей которые попадают в правила шейпера для исходящего глобального трафика | | ^ 10 | список пользователей которые попадают в правила шейпера для исходящего глобального трафика | | ||
^ 11 | список пользователей которые попадают в правила шейпера для входящего глобального трафика | | ^ 11 | список пользователей которые попадают в правила шейпера для входящего глобального трафика | | ||
- | ^ 12 | список пользователей которые попадают в правила шейпера для исходящего локального трафика с номером класса 2 | | + | ^ 12 | список пользователей которые попадают в правила шейпера для исходящего локального трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10. | |
- | ^ 13 | список пользователей которые попадают в правила шейпера для входящего локального трафика с номером класса 2 | | + | ^ 13 | список пользователей которые попадают в правила шейпера для входящего локального трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10 + 1. | |
+ | ^ 3 | Список сетей для локального класса трафика с номером 3. Номера формируются соответственно с номером класса трафика в журнале классов трафика. | | ||
+ | ^ 14,15 | Соответственно класс 3 трафика | | ||
+ | Для поднятия шейпера используется программа linkupdown. Программа прописывает пользователей в таблицы ipfw и присваивает им скорость. Для проверки правил которые она выполняет нужно указать последним параметром параметр debug.\\ | ||
+ | **Например:** | ||
+ | abills/libexec/linkupdown up ng0 test 10.11.11.11 debug | ||
- | Для проверки назначенно скорости используется программа | + | **Внимание!!! При использовании ng_car шейпера можно использовать одновременно только одну активную сессию для учётной записи** |
- | abills/libexec/billd checkspeed NAS_ID=10 SHOW_SPEED=1 | + | |
+ | ====Проверка установленного шейпера==== | ||
+ | Для проверки назначено скорости и её изменения используется программа:\\ | ||
+ | * Проверка установленной скорости и изменение для активных абонентов | ||
+ | |||
+ | /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 | ||
+ |