faq обучение настройка
Текущее время: Пт июн 27, 2025 19:38

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: DSL-2640U/BRU/C: ошибка в коде?...
СообщениеДобавлено: Чт апр 30, 2009 16:23 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
Если в поле KeepAliveTime [0-30] (настройка PPPoE) юзер введет значение 0 (вполне в диапазоне), то PPP-демон НИКОГДА не переподключит PPP-сессию! Смотрите сами...
1) Чтобы PPP-демон сбросил сессию, должна выполниться процедура LcpLinkFailure:
Код:
/*------- /userapps/opensource/ppp/pppoe/lcp.c --------*/
/*
 * Time to shut down the link because there is nothing out there.
 */

static
void LcpLinkFailure (f)
    fsm *f;
{
    if (f->state == OPENED) {
   info("No response to %d echo-requests", lcp_echos_pending);
        notice("Serial link appears to be disconnected.");
        lcp_close(f->unit, "Peer not responding");
   status = EXIT_PEER_DEAD;
    }
}

2) Вызывается процедура отсюда, и при условии, что переменная lcp_echo_fails не равна нулю:
Код:
/*------- /userapps/opensource/ppp/pppoe/lcp.c --------*/
/*
 * LcpSendEchoRequest - Send an echo request frame to the peer
 */

static void
LcpSendEchoRequest (f)
    fsm *f;
{   ...
    ...
    /*
     * Detect the failure of the peer at this point.
     */
    if (lcp_echo_fails != 0) {
        if (lcp_echos_pending >= lcp_echo_fails) {
            LcpLinkFailure(f);
       lcp_echos_pending = 0;
   }
    }
    ...
    ...
}

3) Переменная при создании инициализируется на умолчальное значение 5, но на этом участке ей присваивается значение, базирующееся на переменной keepalivetime:
Код:
/*------- /userapps/opensource/ppp/pppoe/lcp.c --------*/
/*
 * lcp_up - LCP has come UP.
 */
static void
lcp_up(f)
    fsm *f;
{   ...
    ...
    printf("#######in pppoe 100  #%d##\n",keepalive);   
    if(keepalive==0)
       {
          lcp_echo_interval = 0;
         lcp_echo_fails = 0;
     }   
    else
    {
          lcp_echo_interval = 30;          
         lcp_echo_fails = keepalivetime * 2;
        
    }   
    printf("#######in pppoe 200  #%d#%d#\n",lcp_echo_interval,lcp_echo_fails);      
    ...
    ...
}


Что скажете?...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 01, 2009 07:35 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
Мда... Представительство проблему игнорирует, здесь, похоже, та же ситуация...
А меж тем я почти три недели ковырялся с настройкой модема, чтобы заставить его адекватно реагировать на разрыв сессии биллингом. Пока не догадался заглянуть в исходники...
А решение-то ведь совсем тривиальное, господа! Нужно в веб-фейсе предлагать юзеру в поле KeepAliveTime диапазон не от 0 до 30, а от 1 до 30:
Код:
<!-- /userapps/broadcom/cfm/html/pppoe.html -->
            <table border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td width="160">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeepAliveTime [1-30]:</td><td><input type='text' name='time'>&nbsp;min</td>
              </tr>         
            </table>

И в скрипте веб-фейса сделать проверку значения именно в этом диапазоне:
Код:
<!-- /userapps/broadcom/cfm/html/pppoe.html -->
         if ( alivetime < 1 || alivetime > 30 )
         {
            msg = 'keepalive Timeout "' + time.value + '" is out of range [1-30].';
            alert(msg);
            return;
         }

И всего делов-то...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 01, 2009 23:08 
Не в сети

Зарегистрирован: Пт май 01, 2009 22:53
Сообщений: 90
У меня 2640 u/bru/c с новейшей (1.20_20090424) прошивкой. В свойствах PPPoE у меня
Код:
Keep alive enable.   
KeepAliveTime [0-30]: 0

и всё нормально восстанавливается после обрыва сессии.

А у тебя возможно просто зависает сессия на сервере авторизации - это бывает часто и густо, когда у провайдера биллинг подглючивает. лечится (временно) передергиванием порта на дсламе и принудительным обрывом сессии на сервере. хотя мож это глюк конкретного модема :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 01, 2009 23:43 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
uncle1fred, с исходной версией прошивки (1.00) модем переподключался по нескольку раз в сутки. Когда я сменил прошивку на v1.12, модем стал держать PPP-сессию "намертво" и даже когда не получал эхо-ответов:
Код:
2009-04-24 22:53:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x3e magic=0x32912d5a]
2009-04-24 22:54:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x3f magic=0x32912d5a]
2009-04-24 22:54:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x40 magic=0x32912d5a]
2009-04-24 22:55:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x41 magic=0x32912d5a]
2009-04-24 22:55:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x42 magic=0x32912d5a]
2009-04-24 22:55:53 User.Warning 192.168.1.1 dnsprobe[769]: dns query failed
2009-04-24 22:55:55 User.Warning 192.168.1.1 dnsprobe[769]: dns query failed
2009-04-24 22:55:57 User.Warning 192.168.1.1 dnsprobe[769]: dns query failed
2009-04-24 22:55:57 User.Notice 192.168.1.1 dnsprobe[769]: Primary DNS server Is Down... Switching To Secondary DNS server
2009-04-24 22:56:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x43 magic=0x32912d5a]
2009-04-24 22:56:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x44 magic=0x32912d5a]
2009-04-24 22:57:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x45 magic=0x32912d5a]
2009-04-24 22:57:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x46 magic=0x32912d5a]
2009-04-24 22:58:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x47 magic=0x32912d5a]
2009-04-24 22:58:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x48 magic=0x32912d5a]
2009-04-24 22:59:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x49 magic=0x32912d5a]
2009-04-24 22:59:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x4a magic=0x32912d5a]
2009-04-24 23:00:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x4b magic=0x32912d5a]
2009-04-24 23:00:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x4c magic=0x32912d5a]
2009-04-24 23:01:16 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x4d magic=0x32912d5a]
2009-04-24 23:01:46 Daemon.Debug 192.168.1.1 pppd[376]: sent [LCP EchoReq id=0x4e magic=0x32912d5a]

Я сменил прошивку на v1.20 в надежде на то, что ситуация исправится - не помогло...
Скачал сырцы (с последними изменениями от 19.03.2009), посмотрел. Выставил KeepAliveTime в 1 - все заработало как полагается.
Вывод: в прошивке v1.20 описанный выше код не претерпел изменений...
Буду только рад, если меня убедят в обратном:)...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 02, 2009 08:17 
Не в сети

Зарегистрирован: Пт май 01, 2009 22:53
Сообщений: 90
да ни боже мой, никого не собираюсь ни в чем убеждать, прсто пишу личное мнение, вполне возможно что я не прав :)

но всё-таки она вертится (c) Галилей.
все-таки у меня все нормально пашет - мож я что не так делаю? а вообще то я после прочтения кучи инфы в инете хотел купить себе акорп с wifi, но в нашей глубинке таковых нету. взял длинк - все пашет отично, тьфу-тьфу-тьфу, pppoe интернет и bridge телевидение, модем купил неделю назад, с тех пор не выключал, тока перегружал после настройки. вайфай тож пашет - я через него еее рс 900 подключаю (щас с него пишу), торренты тяну с домашней сети и с внешки, доунлоад мастером фильмы тяну...

единственное что мне не нравится в последних длинках - нагрев сильный. мне есть с чем сравнивать, у меня в руках побывали и XAvi7722r+, и Интеркроссы 5633 NE, старые длинки 5хх серий, длинки серии U без bru/d, zyxel 660 серии. Все они, имхо, греются меньше сабжа, и это меня сильно нервирует :evil: хотя знаю людей, у которых u/bru/d модеы пашут уже год, греясь навроде печки, так что надеюсь на лучшее...


Последний раз редактировалось uncle1fred Сб май 02, 2009 08:41, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 02, 2009 08:36 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
uncle1fred писал(а):
...мож я что не так делаю? :wink:
Я не телепат, к сожалению (?) :) Если ты телепат, скажи, что Я делал не так? И если код, который я привел, давным-давно исправлен, я с удовольствием бы его посмотрел...
А вообще говоря, спасибо тебе, uncle1fred, что хоть ты проявляешь интерес:)...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 02, 2009 08:44 
Не в сети

Зарегистрирован: Пт май 01, 2009 22:53
Сообщений: 90
да всегда пожалуйста! я просто раньше диалап модемами "болел", а щас на адсл пересел, тож занятно...
чо то я увлекся редактированием своего поста, звиняй, погляди мои труды :D выше.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 04, 2009 11:12 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт апр 01, 2005 12:35
Сообщений: 8492
Откуда: Москва
To SGAIL

Здравствуйте,

Это не проблема и не ошибка работы устройства. Это всего лишь default значение параметра KeepAlive (0) в прошивке, при котором модем не контролирует PPP сессию посредством LCP протокола.
Мы изменим это в последующих версиях прошивок (default значение будет равно 1).

_________________
С уважением, Давыдов Денис.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 04, 2009 11:53 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
Здравствуйте, Денис! Спасибо, что обратили внимание на проблему...
Само устройство ни при чем - 100%. Проблема в ПО...
Буду ждать новую версию:) Пока-мест выхожу из положения описанным выше методом...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 04, 2009 11:56 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт апр 01, 2005 12:35
Сообщений: 8492
Откуда: Москва
SGAIL писал(а):
Здравствуйте, Денис! Спасибо, что обратили внимание на проблему...
Само устройство ни при чем - 100%. Проблема в ПО...
Буду ждать новую версию:) Пока-мест выхожу из положения описанным выше методом...


Вы можете в WEB указать значение параметра KeepAilve и если PPP соединение станет неактивным, модем через указанное время закроет текущую PPP сессию и начнет инициализацию новой сессии.

_________________
С уважением, Давыдов Денис.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 04, 2009 16:12 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
Davydov Denis писал(а):
Вы можете в WEB указать значение параметра KeepAilve...
Да, я именно так и сделал. Только не KeepAlive, а KeepAliveTime я выставил в 3 (3 минуты). И сегодня модем очень замечательно все отработал:
Код:
2009-05-03 14:27:43   Daemon.Critical   192.168.1.1   pppd[404]: PPP LCP UP.
...
...
2009-05-04 14:27:45   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP EchoReq id=0x3d magic=0x7aa785ae]
2009-05-04 14:28:15   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP EchoReq id=0x3e magic=0x7aa785ae]
2009-05-04 14:28:45   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP EchoReq id=0x3f magic=0x7aa785ae]
2009-05-04 14:29:15   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP EchoReq id=0x40 magic=0x7aa785ae]
2009-05-04 14:29:45   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP EchoReq id=0x41 magic=0x7aa785ae]
2009-05-04 14:30:15   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP EchoReq id=0x42 magic=0x7aa785ae]
2009-05-04 14:30:45   Daemon.Info   192.168.1.1   pppd[404]: No response to 6 echo-requests
2009-05-04 14:30:45   Daemon.Notice   192.168.1.1   pppd[404]: Serial link appears to be disconnected.
2009-05-04 14:30:46   Daemon.Critical   192.168.1.1   pppd[404]: Clear IP addresses.  Connection DOWN.
2009-05-04 14:30:46   Daemon.Critical   192.168.1.1   pppd[404]: Clear IP addresses.  PPP connection DOWN.
2009-05-04 14:30:46   Daemon.Warning   192.168.1.1   pppd[404]: Couldn't increase MTU to 1500.
2009-05-04 14:30:46   Daemon.Error   192.168.1.1   pppd[404]: Couldn't increase MRU to 1500
2009-05-04 14:30:46   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP TermReq id=0x2 "Peer not responding"]
2009-05-04 14:30:49   Daemon.Debug   192.168.1.1   pppd[404]: sent [LCP TermReq id=0x3 "Peer not responding"]
2009-05-04 14:30:52   Daemon.Notice   192.168.1.1   pppd[404]: Connection terminated.
2009-05-04 14:30:52   Daemon.Info   192.168.1.1   pppd[404]: Connect time 4912710.1 minutes.
2009-05-04 14:30:52   Daemon.Info   192.168.1.1   pppd[404]: Sent 2833159769 bytes, received 1582238003 bytes.
2009-05-04 14:30:52   Daemon.Warning   192.168.1.1   pppd[404]: Doing disconnect
2009-05-04 14:30:52   Daemon.Debug   192.168.1.1   pppd[404]: Sent packet: Ether addr: 00:1a:e2:3b:d9:54  (PPPOE Discovery)  PPPoE hdr: ver=0x1 type=0x1 code=0xa7 sid=0xc687 length=0x000c (PADT)  PPPoE tag: type=0103 length=0004 (Host Uniq) data (bin):  10 04 71 58 PPPoE tag: type=0101 length=0000 (Service name)
2009-05-04 14:30:55   Daemon.Notice   192.168.1.1   pppd[404]: PPP: Start to connect ...
...
...
2009-05-04 14:30:58   Daemon.Critical   192.168.1.1   pppd[404]: PPP LCP UP.

Вызывает вопрос еще один момент. В логе информация о времени соединения не соответствует: "Connect time 4912710.1 minutes". С учетом того, что в сутках всего 1440 минут, это явный перебор:) Может быть это время в системных тиках модема? Тогда можно "minutes" исправить на "ticks". Хотя... Это служебная информация, поэтому не критично:)...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 04, 2009 18:38 
Не в сети

Зарегистрирован: Чт апр 30, 2009 15:56
Сообщений: 8
Откуда: Yaroslavl
2500u-bru-d писал(а):
Скорей всего модем поднялся с системной датой. Подключился к интернету, обновил время. Поэтому прошло лет 3 или типа того :)...
2500u-bru-d, да, точно. Именно так и было:) Об этом я не подумал... Значит, этот момент я забираю обратно...

_________________
Всё знать нельзя;-)...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт май 05, 2009 10:24 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт мар 17, 2005 11:14
Сообщений: 1314
Откуда: Воронеж
SGAIL писал(а):
2500u-bru-d писал(а):
Скорей всего модем поднялся с системной датой. Подключился к интернету, обновил время. Поэтому прошло лет 3 или типа того :)...
2500u-bru-d, да, точно. Именно так и было:) Об этом я не подумал... Значит, этот момент я забираю обратно...


Это радует.

_________________
С уважением, Гакало Алексей


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 49


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB