Начну по порядку:
>Вы на форуме задавали вопрос как прикрутить connbytes к
> новым ядрам, ответа не получили, но все равно используете этот модуль в вашей статье.
с выходом нового ядра, и использованием указанных пакетов
> Значит Вы нашли решение?
проблема connbytes сама собой решилась, в указанных пакетах ошибка это была исправлена,
именно это меня и сподвигло на обновление материалла
(ни какого утаивания информации не было, не мой стиль)>Насколько я понял, в статье серьёзная ошибка связанная с тем
>предположением, что приоритет фильтров как-то влияет на приоритет трафика.
>На самом деле приоритет фильтров для того, чтобы делать, например,
> такие вещи при фильтрации пакетов:
пример указанный Вами с одинаковым приоиритетом пакеты с меткой 1 и 2
направляет классу 1:1 что собственно и верно,
а пакеты у которых src 0.0.0.0/0 в класс 1:2
А легче всего самому убедиться, назначьте классу
маленькую скорость, сделайте 2 фильтра, одному prio 0, другому prio 1
и проверьте кто у кого кислород отбирает.
Давно дело было, боюсь соврать, но ошибки нету, да и эксперимент
тоже кажется это подтвердил... поскольку когда трафик DNS был низким, инет тормозил
в класс попадает трафик, на основание работы фильтров, теперь допустим что несколько
фильтров направляют свой трафик в один класс, возникает вопрос с какого фильтра трафик
в указанном классе имеет выше приоритет?
вот для этого и нужно указать prio для фильтра
> Скажите, а можно каким-то средством посмотреть
> сколько какому пользователю выделено полосы?
в приведенной конфигурации пользователь не ограничен скоростью, поэтому если
нет других качков то он получает максимальную скорость
А для удобства отслеживания текущей скорости использую
iftop -B -i eth0
iftop -B -i eth0 -f "host 10.10.10.xxx"
также написал скриптик с AWK который дает более наглядную
картину скоростей и тому подобнее (ниже приведены скрипты)
например
root@ISP ISP-serv]# ./rate.sh
****************************************************
* Statistic for incoming trafic's rate KByte/sek *
****************************************************
TRAFFIC-TYPE RATE MIN-RATE MAX-RATE
---------------------------------------------------------
ALL : lv+nlv 121
LV : http 0 307 409
NLV : other 5 5 37
LV : ftpmail 0 49 99
LV : skype 0 74 256
LV : p2p 52 49 460
LV : other 0 24 460
NLV : http 1 74 99
NLV : ftpmail 0 11 24
NLV : skype 0 18 62
NLV : p2p 17 11 24
--------------------------------------------------------
Local : 52
Foreign : 24
--------------------------------------------------------
[root@ISP ISP-serv]# cat rate.sh
#!/bin/bash
cd /ISP-serv
./ipr -s -d class show dev eth1 > rate.txt
awk -f rate.awk rate.txt
[root@ISP ISP-serv]# cat rate.awk
function getKBps( rate )
{
suffix_Kbit = index( rate, "Kbit");
suffix_bit = index( rate, "bit");
KBps = 8;
if ( suffix_Kbit > 0 )
{
KBps = KBps;
suffix = suffix_Kbit;
}
else if ( suffix_bit > 0 )
{
KBps = KBps*1024;
suffix = suffix_bit;
}
rate_val = substr( rate, 0, suffix );
rate_val = rate_val / KBps;
return rate_val;
}
BEGIN {
print "";
print " ****************************************************";
print " * Statistic for incoming trafic's rate KByte/sek *";
print " ****************************************************";
print"";
N=0; NLV=0; LV=0;
traffic ["1:1"] = "ALL : lv+nlv \t";
traffic ["1:10"] = "LV : http \t";
traffic ["1:20"] = "LV : ftpmail\t";
traffic ["1:30"] = "LV : skype \t";
traffic ["1:40"] = "LV : p2p \t";
traffic ["1:50"] = "LV : other \t";
traffic ["1:60" ] = "NLV : http \t";
traffic ["1:70" ] = "NLV : ftpmail\t";
traffic ["1:80" ] = "NLV : skype \t";
traffic ["1:90"] = "NLV : p2p \t";
traffic ["1:100"] = "NLV : other \t";
}
/class/ { class[N] =$3; str_min_rate[N] =$13; str_max_rate[N] =$15; }
/^ rate/ { str_rate[N]=$2; N=N+1; }
END {
printf( " TRAFFIC-TYPE \t RATE \t MIN-RATE MAX-RATE \n" );
print "---------------------------------------------------------";
for ( i=0; i < N; ++i )
{
name = traffic[ class[i] ];
rate = str_rate[i];
min_rate = str_min_rate[i];
max_rate = str_max_rate[i];
min_rate_val = getKBps( min_rate );
max_rate_val = getKBps( max_rate );
rate_val = getKBps( rate );
if ( class[i] == "1:10" ||
class[i] == "1:20" ||
class[i] == "1:30" ||
class[i] == "1:40" ||
class[i] == "1:50" )
{
LV = LV + rate_val;
}
else if ( class[i] != "1:1" )
{
NLV = NLV + rate_val;
}
if ( class[i] == "1:1" )
{
printf ( " %s %d \t \n", name, rate_val );
}
else
{
printf ( " %s %d \t %d \t %d \n", name, rate_val, min_rate_val, max_rate_val );
}
}
print "--------------------------------------------------------";
printf ( "\tLocal : %d \n", LV );
printf ( "\tForeign : %d \n", NLV );
print "--------------------------------------------------------";
}
ЗЫ
Если Вы заинтересованы в управление трафиком, то предлагаю вам
посмотреть статью
http://www.dzti.edu.lv/isp-serv/index.php?l=7
возмолжно вместе скооперироваться, и сделать дистр типа LFS
только ориентированный на управление трафиком.
А у Вас не возникла задача управления трафиком который шифруется poptop-serv
для Ваших клиентов (избежать подмены ip-mac)?