Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:manual:freebsd_dummynet [2011/10/15 15:42]
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 11  | Таблица клиентов для исходящего трафика |
-^table 12  | Таблица клиентов для входящего пирингового трафика | +^table 12  | Таблица клиентов для входящего пирингового трафика ​класс 2 
-^table 13  | Таблица клиентов для исходящего пирингового ​ трафика |+^table 13  | Таблица клиентов для исходящего пирингового ​ трафика ​класс 2 | 
 +^table 14  | Таблица клиентов для входящего пирингового трафика класс 3 | 
 +^table 15  | Таблица клиентов для исходящего пирингового ​ трафика класс 3 | 
  
 В таблицы заносятся следующие данные В таблицы заносятся следующие данные
Строка 38: Строка 47:
 Для поднятий правил шейпирования при старте системы используется программа ​ Для поднятий правил шейпирования при старте системы используется программа ​
  
-  # cp /​usr/​abills/​misc/​ipfw/​shaper_start.sh shaper_start.sh+  # cp /​usr/​abills/​misc/​freebsd/​shaper_start.sh ​/​usr/​local/​etc/​rc.d/​shaper_start.sh
  
 **/​etc/​rc.conf** **/​etc/​rc.conf**
Строка 46: Строка 55:
  
  
-====Пример правил перенаправления в Pipe==== 
-  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* 
  
 ** При установке скорости в аккаунте пользователя если она еще не указывалась другим пользователям нужно переинициализировать шейпер ** ** При установке скорости в аккаунте пользователя если она еще не указывалась другим пользователям нужно переинициализировать шейпер **
Строка 73: Строка 73:
  
  
 +====Проверка работоспособности====
 +
 +**правил перенаправления в 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**
Строка 100: Строка 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>​ 
 + 
 +если вторая и третья колонка нули значит трафик не попадает