Страница 1 из 1

mpd5 путает интерфейсы

Добавлено: 2009-10-09 21:44:33
Spank
Долго ковыряя пытался понять в чем все же дело и походу при отключении клиента иногда mpd5 в down_script передает неверный интерфейс. При выводе в логи бывает стопается ng100 и сразу за ним стопается опять ng100, при этом нового коннекта не было. Так же у меня есть файлики куда я при старте(up_скрипт) пишу инфу о коннекте и если сверять с логином, который приходит в down скрипт, то интерфейс там совсем другой. Как выловить багу чет я не понимаю. Клиентов онлайн грубо около 500. Сейчас сделал так, если интерфейс переданный в down скрипт не равен интерфейсу который прописан в конфиге при старте клиента, тогда убиваю интерфейс из конфига и удаляю правила из ipfw.
Сервис используем pppoe
mpd-5.3
7.2-RELEASE FreeBSD
Вот собственно скрипт остановки ифейса

Код: Выделить всё

$username=$ARGV[4];
$iface=$ARGV[0];
$ipaddr=$ARGV[3];

$date = `/bin/date`;
chomp($date);

$iface =~ /.*?(\d+).*/;
$num_pipe2 = ($1 + 1)*10;

if (-e "/usr/local/etc/mpd5/clients/$username"){
    open(USERFILE, "/usr/local/etc/mpd5/clients/$username");
    my $num_pipe = '';
    while(<USERFILE>){
<------>chomp;
<------>my($key, $val) = split(':');
<------>if($key eq 'pipe'){
<------>    $num_pipe = $val;
<------>}
    }
    close(USERFILE);

    if($num_pipe ne ''){
        if($num_pipe2 ne $num_pipe){
    <-->    my $new_if = ($num_pipe / 10) - 1;
<------>    `/usr/sbin/ngctl shutdown ng$new_if:`;
<------>    `/bin/echo "$date: Disconnected error pipe_conf != pipe_if $iface pipe: $num_pipe, destoroy: ng$new_if $username" >> /var/log/mpd_up.log`;
<------>}

<------>$cmd = "";
<------>for($index = 0; $index < 6; $index++){
    <-->    $cmd .= "/sbin/ipfw pipe ".($num_pipe+$index)." delete 2> /dev/null\n";
    <-->    $cmd .= "/sbin/ipfw table ".(5+$index)." delete $ipaddr 2> /dev/null\n";
<------>}
<------>`$cmd`;
    }else{
        `/bin/echo "$date: Disconnected error, pipe num not found!!!" >> /var/log/mpd_up.log`;
    }
    unlink("/usr/local/etc/mpd5/clients/$username");
    `/bin/echo "$date: Disconnected $username $ipaddr $iface pipe: $num_pipe " >> /var/log/mpd_up.log`;
}else{
    `/bin/echo "$date: Disconnected (Client not starting up_sctript) $username $iface " >> /var/log/mpd_up.log`;
}

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 21:55:37
paradox
ну и зачем все эти сложности не помнимаю

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 21:56:31
Spank
paradox писал(а):ну и зачем все эти сложности не помнимаю
А какие варианты есть?

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:03:35
paradox
а что нужно делать ?

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:07:56
Spank
paradox писал(а):а что нужно делать ?
Нужно что бы мпд нормально заработал :)...

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:16:30
paradox
ну так выкинте скрипт
и он нормально работает

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:25:54
Spank
paradox писал(а):ну так выкинте скрипт
и он нормально работает
А зарезки по скорости как удалять без него? Можно конешно не удалять но опять хотелось бы все таки чтобы лишних проверок ipfw не делал...

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:40:48
paradox
зачем вам думать вместо ipfw ? оставте это на функции ядра

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:49:45
Spank
paradox писал(а):зачем вам думать вместо ipfw ? оставте это на функции ядра
Логика понятна, но меня смущает количество пользователей которое уже сейчас может достигать 700 одновременных коннектов. Причем есть классы трафика разные с разными зарезками, что полюбому производтельность снижает. Хотя да, если посмотреть на загрузку, то тут нужно бороться с прерываниями, а не ipfw. Но все же если есть какойто ответ на задачу хотелось бы найти его. Хотя бы даже ради спортивного интереса ...

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:53:44
paradox
по айпишникам нарежте и ipfw не трогайте

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 22:57:49
Spank
paradox писал(а):по айпишникам нарежте и ipfw не трогайте
Как? Вот в tc в линуксе заню, там есть фильтры. А тут как? ng_car вроде как не умеет трафик на классы делить..

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-09 23:13:39
paradox
при отключении клиента иногда mpd5 в down_script передает неверный интерфейс. При выводе в логи бывает стопается ng100 и сразу за ним стопается опять ng100
лучше бы вы эту ситуацию в mpd.log показали
ибо есть народ который и поболее клиентов чем у вас использует и у них никаких проблем
правда я не в курсе как они шейпят...

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-10 0:43:11
Spank
В скрипт пришло ng48 а при старте клиенту выдался ng9

Код: Выделить всё

Oct 10 01:31:32 access2 mpd: [vlan106-40] LCP: state change Req-Sent --> Ack-Sent
Oct 10 01:31:33 access2 mpd: [vlan105-31] LCP: no reply to 5 echo request(s)
Oct 10 01:31:33 access2 mpd: [vlan105-31] LCP: peer not responding to echo requests
Oct 10 01:31:33 access2 mpd: [vlan105-31] LCP: state change Opened --> Stopping
Oct 10 01:31:33 access2 mpd: [vlan105-31] Link: Leave bundle "B-67"
Oct 10 01:31:33 access2 mpd: [vlan105-31] RADIUS: Accounting user 'nn8315' (Type: 2)
Oct 10 01:31:33 access2 mpd: [B-67] can't configure tcpmss node program: No such file or directory
Oct 10 01:31:33 access2 mpd: [B-67] can't configure tcpmss node program: No such file or directory
Oct 10 01:31:33 access2 mpd: [B-67] Bundle: Status update: up 0 links, total bandwidth 9600 bps
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: Close event
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: state change Opened --> Closing
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: SendTerminateReq #3
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: LayerDown
Oct 10 01:31:33 access2 mpd: [vlan105-31] RADIUS: Rec'd RAD_ACCOUNTING_RESPONSE for user 'nn8315'
Oct 10 01:31:33 access2 mpd: [B-67] IFACE: Down event
Oct 10 01:31:33 access2 mpd: [B-67] CCP: Close event
Oct 10 01:31:33 access2 mpd: [B-67] CCP: state change Stopped --> Closed
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: Down event
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: LayerFinish
Oct 10 01:31:33 access2 mpd: [B-67] Bundle: No NCPs left. Closing links...
Oct 10 01:31:33 access2 mpd: [B-67] IPCP: state change Closing --> Initial
Oct 10 01:31:33 access2 mpd: [B-67] CCP: Down event
Oct 10 01:31:33 access2 mpd: [B-67] CCP: state change Closed --> Initial
Oct 10 01:31:33 access2 mpd: [B-67] Bundle: Shutdown
Oct 10 01:31:33 access2 mpd: [vlan105-31] LCP: SendTerminateReq #3
Oct 10 01:31:33 access2 mpd: [vlan105-31] LCP: LayerDown
Oct 10 01:31:34 access2 mpd: [vlan106-40] LCP: SendConfigReq #2
Как появятся логи когда уже и файл с конфигом клиента удален скину...

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-10 0:52:51
paradox
7.2-RELEASE FreeBSD
желательно все же до стеибла обновиться
ибо баги могут быть в релизе но уже может не быть их в стеибле

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-10 0:56:17
Spank
paradox писал(а):
7.2-RELEASE FreeBSD
желательно все же до стеибла обновиться
ибо баги могут быть в релизе но уже может не быть их в стеибле
Я наверное туплю, а какой же тогда стейбл? Вроде это последнее что есть на сайте freebsd.org .

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-10 1:01:52
paradox
до стеибла обновляються путем cvsup и сборкой всего мира
стеибл на компактах не распрастраняеться
на компактах токо оффициальный релиз который выходит токо один раз

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-10 1:14:08
Spank
paradox писал(а):до стеибла обновляються путем cvsup и сборкой всего мира
стеибл на компактах не распрастраняеться
на компактах токо оффициальный релиз который выходит токо один раз
Понял, уже походу так делал :). Пасиб буду пробовать.

Re: mpd5 путает интерфейсы

Добавлено: 2009-10-10 16:45:52
Spank
Нашел проблему. Оказывается если клиент был подключен и связь порвалась и он по новой подключается, то в логи пишется, что ип такой то уже есть на ифейсе и выполняется скрипт остановки, в котором указывается номер договора и уже новый интерфейс. Ну а потом еще и когда старый ифейс падает, так же запускается скрипт.