Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:manual:freebsd_dummynet [2010/11/23 10:40]
asmodeus
abills:docs:manual:freebsd_dummynet [2018/03/09 15:26] (текущий)
anton [Отслеживание проблем]
Строка 1: Строка 1:
 =====FreeBSD Dummynet/​table шейпер===== =====FreeBSD Dummynet/​table шейпер=====
 +
 +Данная схема шейпера работает следующим образом\\
 +При старте системы инициализируются правила обрезки скорости для каждого тарифного плана два правила на каждый класс трафика.
 +При подключении абонента его ип вносится в IPFW таблицу 10  и 11 (входной и исходящий трафик) с аргументом номер тарифного плана ​
 +
 +
  
 ====Опции ядра==== ====Опции ядра====
Строка 9: Строка 15:
 **Таблицы сетей. Данные о сетях** **Таблицы сетей. Данные о сетях**
  
-^table 1   ​| ​ Всегда глобальная таблица. Значение по умолчанию 0.0.0.0/0 | +^table 1   | Всегда глобальная таблица. Значение по умолчанию 0.0.0.0/​0 ​  ​
-^table 2   ​| ​ Таблица с пиринговыми сетями |+^table 2   | Таблица с пиринговыми сетями ​  ​|
  
 В таблицу пиринговых сетей данные заносятся следующим образом В таблицу пиринговых сетей данные заносятся следующим образом
Строка 18: Строка 24:
  
 Таблицы клиентов. В них сохраняются данные по клиентам. Таблицы клиентов. В них сохраняются данные по клиентам.
 +^table 9 |Добавляются абоненты у которых нет ограничения по глобальному трафику |
 ^table 10  | Таблица клиентов для входящего трафика | ^table 10  | Таблица клиентов для входящего трафика |
 +^table 11  | Таблица клиентов для исходящего трафика |
 +^table 12  | Таблица клиентов для входящего пирингового трафика класс 2 |
 +^table 13  | Таблица клиентов для исходящего пирингового ​ трафика класс 2 |
 +^table 14  | Таблица клиентов для входящего пирингового трафика класс 3 |
 +^table 15  | Таблица клиентов для исходящего пирингового ​ трафика класс 3 |
  
  
 В таблицы заносятся следующие данные В таблицы заносятся следующие данные
  
-  ipfw table add ip_адрес_клиента ​ тарифный_план_клиента+  ipfw table 10 add ip_адрес_клиента ​ тарифный_план_клиента 
 +  ipfw table 11 add ip_адрес_клиента ​ тарифный_план_клиента
  
 При подключении абонента система автоматически заноси IP  адресами в таблицы пользователей и сетей\\ При подключении абонента система автоматически заноси IP  адресами в таблицы пользователей и сетей\\
Строка 33: Строка 45:
  
  
-Для поднятий правил шейпирования при старте системы ​нужно ​создать файл  +Для поднятий правил шейпирования при старте системы ​используется программа  
- **/​usr/​local/​etc/​rc.d/​shaper.sh**+ 
 +  # cp /​usr/​abills/​misc/​freebsd/​shaper_start.sh ​/​usr/​local/​etc/​rc.d/​shaper_start.sh 
 + 
 +**/​etc/​rc.conf** 
 +  abills_shaper_enable="​YES"​ 
 +  abills_nas_id="​1"​ 
 +  abills_shaper_if="" ​ # По умолчанию ng 
  
-  #!/bin/sh 
-  ​ 
-  # /​usr/​abills/​libexec/​billd checkspeed NAS_IDS=... RECONFIGURE=1 
  
 +** При установке скорости в аккаунте пользователя если она еще не указывалась другим пользователям нужно переинициализировать шейпер **
  
 Дополнительные параметры:​ Дополнительные параметры:​
Строка 51: Строка 68:
   /​usr/​abills/​libexec/​billd checkspeed NAS_IDS=1 RECONFIGURE=1 FW_DIRECTION_OUT=out FW_DIRECTION_IN=in;​ ipfw /​etc/​fw.conf   /​usr/​abills/​libexec/​billd checkspeed NAS_IDS=1 RECONFIGURE=1 FW_DIRECTION_OUT=out FW_DIRECTION_IN=in;​ ipfw /​etc/​fw.conf
   ​   ​
 +====Переинициализация шейпера====
 +
 +  # /​usr/​local/​etc/​rc.d/​shaper_start.sh restart
 +
 +
 +====Проверка работоспособности====
 +
 +**правил перенаправления в Pipe**
 +
 +  # ipfw show
 +
 +  08000     ​0 ​       0 pipe tablearg ip from table(14) to table(2,2) out xmit ng*
 +  08010     ​0 ​       0 pipe tablearg ip from table(2,2) to table(15) in recv ng*
 +  09000     ​0 ​       0 pipe tablearg ip from table(12) to table(2,1) out xmit ng*
 +  09010     ​0 ​       0 pipe tablearg ip from table(2,1) to table(13) in recv ng*
 +  10000     ​0 ​       0 pipe tablearg ip from table(10) to any out xmit ng*
 +  10010     ​0 ​       0 pipe tablearg ip from any to table(11) in recv ng*
 +  10020     ​0 ​       0 allow ip from table(9) to any out xmit ng*
 +  10025     ​0 ​       0 allow ip from any to table(9) in recv ng*
 +
 +**Занесённые адреса в таблицы 10,11 (глобальный шейпер)**
 +  # ipfw table 10 list
 +
 +   ​10.11.1.1/​32 5145
 +
 +  # ipfw table 11 list
 +
 +   ​10.11.1.1/​32 6145
 +
 +**Поднятые пайпы (правила нарезки скорости)**
 +  # ipfw pipe show 5145 6145
 +  ​
 +  5145:   2.028 Mbit/​s ​   0 ms burst 0
 +  q136217 202 KB 0 flows (1 buckets) sched 70681 weight 0 lmax 0 pri 0 droptail
 +   sched 70681 type FIFO flags 0x1 64 buckets 0 active
 +    mask:  0x00 0x00000000/​0x0000 -> 0xffffffff/​0x0000
 +  BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/​bytes Pkt/Byte Drp
   ​   ​
 +  06145: ​  1.024 Mbit/​s ​   0 ms burst 0
 +  q137217 102 KB 0 flows (1 buckets) sched 71681 weight 0 lmax 0 pri 0 droptail
 +   sched 71681 type FIFO flags 0x1 64 buckets 0 active
 +     ​mask: ​ 0x00 0xffffffff/​0x0000 -> 0x00000000/​0x0000
 +  BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/​bytes Pkt/Byte Drp  ​
 +====Оптимизации====  ​
 **/​etc/​sysctl.conf** **/​etc/​sysctl.conf**
  
-  net.inet.ip.dummynet.hash_size=2048 
-  net.inet.ip.dummynet.expire=0 
   ​   ​
   net.inet.ip.fastforwarding=1   net.inet.ip.fastforwarding=1
Строка 62: Строка 120:
   kern.ipc.nmbclusters=65536   kern.ipc.nmbclusters=65536
   kern.ipc.maxsockets=204800   kern.ipc.maxsockets=204800
 +  net.inet.ip.dummynet.expire=0
   net.inet.ip.dummynet.hash_size=2048   net.inet.ip.dummynet.hash_size=2048
   net.inet.ip.fw.dyn_buckets=2048   net.inet.ip.fw.dyn_buckets=2048
Строка 79: Строка 138:
   ​   ​
   net.inet.flowtable.enable=0   net.inet.flowtable.enable=0
-  ​+ 
 +=====Отслеживание проблем====== 
 + 
 + ​при подключении абонента должен попасть в 10 и 11 таблицу 
 + 
 + 
 +  ipfw table 10 list | grep [IP  клиента] 
 +  ipfw table 11 list | grep [IP  клиента] 
 + 
 +результат 
 + 
 +<​code>​ 
 +ipfw table 10 list | grep 10.0.0.1 
 +--- table(10), set(0) --- 
 +10.0.0.1/32 5024 
 +</​code>​ 
 + 
 +Если результат пустой значит не срабатывает linkupdown 
 + 
 +5024 -  номер Pipe канала для шейпера 
 + 
 +  ipfw pipe 5024  list 
 + 
 +отображение правил шейпера 
 + 
 + 
 +проверка включен ли редирект траффика на шейпер  
 + 
 +  ipfw show 
 + 
 +<​code>​ 
 +10000     ​0 ​       0 pipe tablearg ip from table(10) to any out xmit ng* 
 +10010     ​0 ​       0 pipe tablearg ip from any to table(11) in recv ng* 
 +</​code>​ 
 + 
 +если вторая и третья колонка нули значит трафик не попадает