Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:manual:ng_car [2009/08/20 10:03]
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    ​      ​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 netgraph tablearg ip from table(10) to any out via lnc0 +  ​09030        ​         skipto 10130 ip from table(14) to table(3) in recv ng* 
-  ​10010    ​      ​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        ​         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 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. Номера формируются соответсвенно номер класса трафика + 10.     | +^  12 | список пользователей которые попадают в правила шейпера для исходящего локального ​  ​трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10.     | 
-^  13 | список пользователей которые попадают в правила шейпера для входящего локального ​  ​трафика с номером класса 2. Номера формируются соответсвенно номер класса трафика + 10 + 1. |+^  13 | список пользователей которые попадают в правила шейпера для входящего локального ​  ​трафика с номером класса 2. Номера формируются соответственно номер класса трафика + 10 + 1. 
 +^   3 | Список сетей для локального класса трафика с номером 3. Номера формируются соответственно с номером класса трафика в журнале классов трафика. ​ | 
 +^   14,15 | Соответственно класс 3 трафика ​|
  
  
- +Для поднятия шейпера используется программа linkupdown. ​Программа прописывает пользователей в таблицы ipfw  и присваивает им скорость.  ​Для проверки правил которые она выполняет нужно указать последним параметром параметр debug.\\
-Для поднятия шейпера используется программа linkupdown. Для проверки правил которые она выполняет нужно указать последним параметром параметр 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_ID=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