Страница 1 из 2
mikrotik
Добавлено: Ср май 27, 2009 1:22 pm
galaxy
Доброго времени суток!
Возник вопрос по микротику:
возможно-ли изменить модуль linkupdown чтобы при создании siple queues определить для параметров burst-threshold и burst-limit значение speed_in * 2 а burst-time=8
Пробовал изменить кусок модуля не помогло, так и не передало нужніе параметры

Может - кто уже проделывал аналогичные манипуляции ?
Re: mikrotik
Добавлено: Ср май 27, 2009 3:21 pm
~AsmodeuS~
более полно объясните задачи и подайте желаемые правила и возможно я сделаю
Re: mikrotik
Добавлено: Чт май 28, 2009 2:15 pm
galaxy
В шейпере микротика есть возможность відавать на время пиковую скорость, описание алгоритма:
если средня скорость меньше burst-threshold то віделяется скорость burst-limit пока она(средняя скорость) не привысит burst-threshold
Если она превысила то скорость опускается на уровень max-limit.
Это очень хорошо при серфинге, закачка-же идет на скорости max-limit.
Вы передаете из биллинга burst-limit=0; т.е. и серфинг и закачки на одной скорости.
при таких параметрах (изменял правило на микротике руками)
burst-threshold=sped_in * 2
burst-limit=sped_in * 2
burst-time= от 4 до 8s
Страниці откріваются заметно бістрее, а закачка работает на своей sped_in
Біло-бі неплохо дописать такое изменение в биллинге
Заранее спасибо!
Re: mikrotik
Добавлено: Чт май 28, 2009 3:32 pm
~AsmodeuS~
я попросил полніе правила продемонстрировать
Re: mikrotik
Добавлено: Пт май 29, 2009 4:20 pm
galaxy

пример двух Queue
<pppoe-ct> - сделана копия созданной биллингом и отредактированны поля Burst Limit, Burst Threshold, Burst Time
<pppoe-ct-ed> - созданна биллингом
У пользователя ct серфит намного быстрее чем у ct-ed. Закачка одинакова.
Re: mikrotik
Добавлено: Пт май 29, 2009 6:08 pm
Silver Ghost
Асмодеус видимо имел ввиду консольные команды для выставления бурста.
Re: mikrotik
Добавлено: Пт май 29, 2009 6:29 pm
~AsmodeuS~
Silver Ghost писал(а):Асмодеус видимо имел ввиду консольные команды для выставления бурста.
совершенно верно
Re: mikrotik
Добавлено: Пт май 29, 2009 9:16 pm
galaxy
Нашел, я внес изменения в эту процедуру:
Код: Выделить всё
#**********************************************************
# Manage mikrotik bandwidth
# 3 type of actions
# up
# down
# check
#**********************************************************
sub mikrotik {
my ($attr)=@_;
my $cmd = '';
my $proto = 'pptp';
my $nets = '';
my $nas_host = '';
my $nas_admin = '';
my $SSH = '/usr/bin/ssh';
foreach my $id (keys %{ $attr->{SPEEDS} }) {
my $interface = "<$proto-$USER>";
my $name = "ads-$proto-$USER";
my $speed_in = $attr->{SPEEDS}->{$id}->{IN};
my $speed_out = $attr->{SPEEDS}->{$id}->{OUT};
my $speed_bt_in = $speed_in + ($speed_in / 2);
my $speed_bt_out = $speed_out + ($speed_in / 2);
my $speed_bl_in = $speed_in * 2;
my $speed_bl_out = $speed_out * 2;
$cmd = '';
if ($id == 0) {
$nets = '0.0.0.0/0';
}
else {
$nets = $attr->{NETS}->[0];
}
if ($nets ne '' || $id == 0) {
if ($ACTION eq 'up') {
$cmd = "/queue tree add name name=\"$name\" dst-address=0.0.0.0/0 interface=$interface
parent=none direction=both priority=8 queue=default-small/default-small
limit-at=$speed_in/$speed_out max-limit=$speed_in/$speed_out
burst-limit=$speed_bl_in/$speed_bl_out burst-threshold=$speed_bt_in/$speed_bt_out burst-time=8/8
total-queue=default-small;";
}
elsif($ACTION eq 'down') {
$cmd = "/queue tree add name remove [ find name=$name ];";
}
}
}
my $result = `$SSH $nas_admin\@$nas_host "$cmd"`;
}
Также внес изменения в эту следующую процедуру:
Код: Выделить всё
#**********************************************************
# Manage mikrotik bandwidth
# 3 type of actions
# up
# down
# check
#**********************************************************
sub mikrotik_ext {
my ($attr)=@_;
my $speeds = $attr->{SPEEDS};
my $nets = $attr->{NETS};
my $proto = $argv->{PROTO} || 'pptp';
my $nas_host = $argv->{NAS_HOST} || '';
my $nas_admin = $argv->{NAS_ADMIN}|| 'admin';
my $SSH = $argv->{SSH_CMD} || '/usr/bin/ssh';
my $cmds = "$SSH $nas_admin\@$nas_host '/ppp active print where name=$USER'";
open(CMD, "$cmds |") || die "Can't open '$cmds' $!\n";
my @check_int = <CMD>;
close(CMD);
my $protoup = (grep /pppoe/, @check_int) ? "pppoe" : "pptp";
$INTERFACE="<$protoup-$USER>";
my @commands = ();
$INTERFACE="<$proto-$USER>";
if($ACTION eq 'down') {
foreach my $traf_type (sort keys %$speeds) {
my @nets_arr = ();
if ($nets->{$traf_type}) {
$nets->{$traf_type} =~ s/[\r]?\n//g;
$nets->{$traf_type} =~ s/;/,/g;
@nets_arr = split(/;|,/, $nets->{$traf_type});
}
my $address_list_name = "TT_$user->{TP_ID}_".$traf_type."_".$USER;
my $mark_name=$address_list_name. "_mark";
my $mark_name_in=$address_list_name. "_mark_in";
my $mark_name_out=$address_list_name. "_mark_out";
push @commands, "/ip firewall address-list remove [ find list=$address_list_name ]; ";
push @commands, "/ip firewall mangle remove [ find comment=$mark_name_in ]; ";
push @commands, "/ip firewall mangle remove [ find comment=$mark_name_out ]; ";
push @commands, "/queue tree remove [ find name=$mark_name_out ] ";
push @commands, "/queue tree remove [ find name=$mark_name_in ] ";
}
} else {
foreach my $traf_type (sort keys %$speeds) {
my $speed = $speeds->{$traf_type};
my $speed_in = (defined($speed->{IN})) ? $speed->{IN} * 1024 : 0;
my $speed_out = (defined($speed->{OUT})) ? $speed->{OUT}* 1024 : 0;
my $speed_bt_in = $speed_in * 2;
my $speed_bt_out = $speed_out * 2;
my $speed_bl_in = $speed_in * 2;
my $speed_bl_out = $speed_out * 2;
my @nets_arr = ();
if ($nets->{$traf_type}) {
$nets->{$traf_type} =~ s/[\r]?\n//g;
$nets->{$traf_type} =~ s/;/,/g;
@nets_arr = split(/;|,/, $nets->{$traf_type});
}
my $address_list_name = "TT_$user->{TP_ID}_".$traf_type."_".$USER;
my $mark_name_in=$address_list_name. "_mark_in";
my $mark_name_out=$address_list_name. "_mark_out";
my $priority = 5 - $traf_type;
if ($traf_type == 0) {
push @commands, qq{ /ip firewall mangle add chain=forward out-interface=$INTERFACE action=mark-packet new-packet-mark=$mark_name_in comment=$mark_name_in passthrough=yes };
push @commands, qq{ /ip firewall mangle add chain=forward in-interface=$INTERFACE action=mark-packet new-packet-mark=$mark_name_out comment=$mark_name_out passthrough=yes };
push @commands, qq{ /queue tree add name=$mark_name_in parent=$INTERFACE packet-mark=$mark_name_in limit-at=$speed_in max-limit=$speed_in queue=default-small priority=8 burst-limit=$speed_bl_in burst-threshold=$speed_bt_in burst-time=8};
push @commands, qq{ /queue tree add name=$mark_name_out parent=global-out packet-mark=$mark_name_out limit-at=$speed_out max-limit=$speed_out queue=default-small priority=8 burst-limit=$speed_bl_out burst-threshold=$speed_bt_out burst-time=8};
}
foreach my $address (@nets_arr) {
push @commands, qq{ /ip firewall address-list add list=$address_list_name address=$address };
}
push @commands, qq{ /ip firewall mangle add chain=forward out-interface=$INTERFACE action=mark-packet new-packet-mark=$mark_name_in comment=$mark_name_in passthrough=yes };
push @commands, qq{ /ip firewall mangle add chain=forward in-interface=$INTERFACE action=mark-packet new-packet-mark=$mark_name_out comment=$mark_name_out passthrough=yes };
push @commands, qq{ /queue tree add name=$mark_name_in parent=$INTERFACE packet-mark=$mark_name_in limit-at=$speed_in max-limit=$speed_in queue=default-small priority=8 burst-limit=$speed_bl_in burst-threshold=$speed_bt_in burst-time=8 };
push @commands, qq{ /queue tree add name=$mark_name_out parent=global-out packet-mark=$mark_name_out limit-at=$speed_out max-limit=$speed_out queue=default-small priority=8 burst-limit=$speed_bl_out burst-threshold=$speed_bt_out burst-time=8 };
}
}
#Make ssh command
my $result = '';
$result .= `echo "===> Initialising remote commands executing:" >> /var/log/shaper`;
foreach my $cmd (@commands) {
print "$cmd\n" if ($debug > 0);
$result .= `$SSH $nas_admin\@$nas_host "$cmd"; echo "$cmd" >> /var/log/shaper`;
}
print $result;
}
проверьте пожалуйства внесенніе изменения.
Re: mikrotik
Добавлено: Пн июн 01, 2009 7:59 am
Silver Ghost
Галакси, а файлик укажи, где правки делать,а лучше diff выложи или patch...
Re: mikrotik
Добавлено: Пн июн 01, 2009 9:12 am
Silver Ghost
внес правки. не работает. в /var/log/shaper ничего не пишется, в бурсте ничего не появляется.
Re: mikrotik
Добавлено: Вс июн 07, 2009 2:46 am
ivabizov
У меня тоже не заработало, хотя затея очень хорошая.
А вот если-бы еще можно было бы эти параметры вводить в тарифных планах, чтобы не грубое умножить на 2
Re: mikrotik
Добавлено: Вс июн 07, 2009 8:22 am
~AsmodeuS~
Уже сделано и доступно коммерческим пользователям
Re: mikrotik
Добавлено: Сб июн 13, 2009 7:56 am
sopov
Нечто подобное было на freebsd. Помоему включается так net.inet.ip.dummynet.io_fast=1
Re: mikrotik
Добавлено: Чт июн 25, 2009 6:50 am
Silver Ghost
Re: mikrotik
Добавлено: Вс авг 09, 2009 9:45 am
alex209
~AsmodeuS~ писал(а):Уже сделано и доступно коммерческим пользователям
А простые смертные могут эти воспользоваться?