Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

abills:docs:manual:ng_car [2011/10/15 15:42]
asmodeus [FreeBSD ng_car шейпер]
abills:docs:manual:ng_car [2015/12/05 17:50]
Строка 1: Строка 1:
-=====FreeBSD ng_car шейпер===== 
-ng_car является частью netgraph и используется для ограничения трафика на интерфейсах,​ представляет из себя модуль ядра системы. 
- 
-ng_car можно использовать как на физических интерфейсах,​ так и на виртуальных интерфейсах и интерфейсах MPD. Разграничения скорости трафика по сетям и Ip адресам,​ можно использовать ng_car совместно с ng_bpf. ​ 
- 
-Для ограничения пропускной способности интерфейса потребуется собрать ядро с поддержкой netgraph. 
- 
-В файле конфигурации ядра убираем комментарий со строк: 
-          options ​        ​NETGRAPH 
-          options ​        ​NETGRAPH_ETHER 
- 
-и пересобираем ядро. ​ 
- 
-Описание принципов работы шейпера FreeBSD + ng_car 
- 
-Для работы нужно указать в конфигурационном файле **config.pl** 
- 
-  $conf{ng_car}=1;​ 
- 
- 
-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 
- 
- 
-Пример поднятых правил:​ 
-  ​ 
- 
-  # перекинуть трафик в правила заворота в ng_car 
-  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* 
-  09030        0          0 skipto 10130 ip from table(14) to table(3) in recv 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 | Список сетей для локального класса трафика с номером 2. Номера формируются соответственно с номером класса трафика в журнале классов трафика. ​ | 
-^  10 | список пользователей которые попадают в правила шейпера для исходящего глобального ​ трафика | 
-^  11 | список пользователей которые попадают в правила шейпера для входящего глобального ​ трафика | 
-^  12 | список пользователей которые попадают в правила шейпера для исходящего локального ​  ​трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10.     | 
-^  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 ​ шейпера можно использовать одновременно только одну активную сессию для учётной записи** 
- 
-====Проверка установленного шейпера==== 
-Для проверки назначено скорости и её изменения используется программа:​\\ 
-  * Проверка установленной скорости и изменение для активных абонентов 
- 
-  /​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