connection retry problem

Help
2007-06-27
2013-08-01
  • Nobody/Anonymous

    hello,
    I have a problem of reconnection when my pptp server restart while a connection is established between the server and mpd.
    mpd say that it will retry but nothing happen (I think it is because the link layer is closed)
    my configuration is :

    >>>>>> CONF

    default
       new -i ng5 pptp1n pptp1l
       set iface disable on-demand
       set ipcp yes vjcomp
       set bundle disable multilink
       set link yes acfcomp protocomp
       set link disable chap pap
       set link accept chap pap
       set link keep-alive 4 25
       set link max-redial 0
       set auth authname "pptptestname"
       set auth password "pptptestkey"
       set ipcp ranges 0.0.0.0/0 0.0.0.0/0
       open

    pptp1l:
       set phys type pptp
       set pptp peer 172.16.0.21
       set pptp disable incoming
       set pptp enable originate
       set pptp disable always-ack
       set pptp enable delayed-ack

    <<<<<< CONF

    and the mpd log :

    >>>>>> LOG

    (...)

    [pptp1n] IPCP: LayerUp
      172.16.7.128 -> 172.16.7.21
    [pptp1n] IFACE: Add address 172.16.7.128/32->172.16.7.21 to ng5
    [pptp1n] IFACE: Up event
    [pptp1n] IFACE: Change interface flags: -4096 +1

    (=> restart pptp server)

    pptp0: ctrl connection closed by peer
    pptp0: killing connection with 172.16.0.21 1723
    pptp0-0: killing channel
    [pptp1l] PPTP call terminated
    [pptp1l] device: DOWN event
    [pptp1l] link: DOWN event
    [pptp1l] link: reconnection attempt 1
    [pptp1l] LCP: Down event
    [pptp1l] LCP: state change Opened --> Starting
    [pptp1l] LCP: phase shift NETWORK --> DEAD
    [pptp1l] AUTH: Accounting data for user : 9 seconds, 740 octets in, 741 octets out
    [pptp1n] IFACE: setting ng5 MTU to 1500 bytes
    [pptp1n] Bundle up: 0 links, total bandwidth 9600 bps
    [pptp1n] IPCP: Close event
    [pptp1n] IPCP: state change Opened --> Closing
    [pptp1n] IPCP: SendTerminateReq #4
    [pptp1n] xmit bypass frame link=-1 proto=0x8021
        ff ff 80 21 05 04 00 04                          ...!....
    [pptp1n] error writing len 8 frame to bypass: Network is down
    [pptp1n] IPCP: LayerDown
    [pptp1n] IFACE: Remove address 172.16.7.128/32->172.16.7.21 from ng5
    [pptp1n] IFACE: Down event
    [pptp1n] IFACE: Change interface flags: -4097 +0
    [pptp1n] IPCP: Down event
    [pptp1n] IPCP: LayerFinish
    [pptp1n] No NCPs left. Closing links...    (<== I think the pb is near here)
    [pptp1n] closing link "pptp1l"...
    [pptp1n] IPCP: state change Closing --> Initial
    [pptp1l] AUTH: Cleanup
    [pptp1l] LCP: LayerDown
    pptp0-0: chan state ESTABLISHED --> FREE
    pptp0: ctrl state ESTABLISHED --> FREE
    [pptp1l] link: CLOSE event
    [pptp1l] LCP: Close event
    [pptp1l] LCP: state change Starting --> Initial
    [pptp1l] LCP: LayerFinish
    [pptp1l] device: OPEN event
    [pptp1l] pausing 5 seconds before open
    [pptp1l] device: CLOSE event

    (end of mpd4 logs)

    <<<<<< LOG

     
    • Alexander Motin

      Alexander Motin - 2007-06-27

      This is a known case. You should add 'set bundle no noretry' command to your config.

       
    • Nobody/Anonymous

      thanks, now it works

       
  • alex kushnaryov

    alex kushnaryov - 2013-07-30

    а как того же на последнем mpd5 добиться? noretry больше не значится среди бандловых опций.

     
  • Alexander Motin

    Alexander Motin - 2013-07-30

    set link max-redial 0

     
  • alex kushnaryov

    alex kushnaryov - 2013-07-30

    прописано - не помогает :(
    с той стороны - тоже mpd; когда там его останавливаешь - эта сторона рвёт линк и молчит:

    Jul 30 00:37:53 techno mpd: [B1] IPCP: rec'd Terminate Request #133 (Opened)
    Jul 30 00:37:53 techno mpd: [B1] IPCP: state change Opened --> Stopping
    Jul 30 00:37:53 techno mpd: [B1] IPCP: SendTerminateAck #3
    Jul 30 00:37:53 techno mpd: [B1] IPCP: LayerDown
    Jul 30 00:37:53 techno mpd: [B1] IFACE: Down event
    Jul 30 00:37:55 techno mpd: [B1] IPCP: rec'd Terminate Request #134 (Stopping)
    Jul 30 00:37:55 techno mpd: [B1] IPCP: SendTerminateAck #4
    Jul 30 00:37:55 techno mpd: [B1] IPCP: state change Stopping --> Stopped
    Jul 30 00:37:55 techno mpd: [B1] IPCP: LayerFinish
    Jul 30 00:37:55 techno mpd: [B1] Bundle: No NCPs left. Closing links...
    Jul 30 00:37:55 techno mpd: [B1] Bundle: closing link "L1"...
    Jul 30 00:37:55 techno mpd: [L1] Link: CLOSE event
    Jul 30 00:37:55 techno mpd: [L1] LCP: Close event
    Jul 30 00:37:55 techno mpd: [L1] LCP: state change Opened --> Closing
    Jul 30 00:37:55 techno mpd: [L1] Link: Leave bundle "B1"
    Jul 30 00:37:55 techno mpd: [B1] Bundle: Status update: up 0 links, total bandwidth 9600 bps
    Jul 30 00:37:55 techno mpd: [B1] IPCP: Close event
    Jul 30 00:37:55 techno mpd: [B1] IPCP: state change Stopped --> Closed
    Jul 30 00:37:55 techno mpd: [B1] IPCP: Down event
    Jul 30 00:37:55 techno mpd: [B1] IPCP: state change Closed --> Initial
    Jul 30 00:37:55 techno mpd: [L1] LCP: SendTerminateReq #3
    Jul 30 00:37:55 techno mpd: [L1] LCP: LayerDown
    Jul 30 00:37:55 techno mpd: [L1] LCP: rec'd Terminate Request #125 (Closing)
    Jul 30 00:37:55 techno mpd: [L1] LCP: SendTerminateAck #4
    Jul 30 00:37:55 techno mpd: [L1] LCP: rec'd Terminate Ack #126 (Closing)
    Jul 30 00:37:55 techno mpd: [L1] LCP: state change Closing --> Closed
    Jul 30 00:37:55 techno mpd: [L1] LCP: LayerFinish
    Jul 30 00:37:55 techno mpd: [L1] L2TP: Call #4670000 terminated locally
    Jul 30 00:37:55 techno mpd: [L1] Link: DOWN event
    Jul 30 00:37:55 techno mpd: [L1] LCP: Down event
    Jul 30 00:37:55 techno mpd: [L1] LCP: state change Closed --> Initial
    Jul 30 00:38:02 techno mpd: L2TP: Control connection 0x802bd9610 terminated: 0 ()
    Jul 30 00:38:13 techno mpd: L2TP: Control connection 0x802bd9610 destroyed
    

    и так висит, пока не перезапустишь и этот mpd.

    у этого конфиг:

    default:
            load l2tp_client
    
    l2tp_client:
            create bundle static B1
            set iface route default
            set ipcp ranges 0.0.0.0/0 0.0.0.0/0
            set iface enable proxy-arp
            set iface enable tcpmssfix
    
            create link static L1 l2tp
            set link action bundle B1
            set auth authname uuuuuu
            set auth password pppppp
            set link keep-alive 20 180
    
            set link max-redial 0
            set link mtu 1360
            set l2tp peer x.x.x.x
            open
    
     
  • Alexander Motin

    Alexander Motin - 2013-07-30

    Это известная проблема. Если соединение не обрывается, а именно закрывается завершением IPCP, то mpd и правда не перезванивает. Причина этого заложена в механизмах работы PPP описанных в RFC. Я не нашел красивого способа это обработать без грязного хака вроде старого noretry, а хаки в алгоритмах такой сложности добром обычно не заканчиваются. Если сервер тебе подконтролен, посмотри как именно там выполняется закрытие. Помнится закрывать можно по разному.

     
  • alex kushnaryov

    alex kushnaryov - 2013-07-30

    да, случай именно тот.
    сервер подконтролен, с той стороны это событие выглядит просто:

    Jul 30 00:37:55 gw mpd: [LL208] Link: CLOSE event
    Jul 30 00:37:55 gw mpd: [LL208] LCP: Close event
    Jul 30 00:37:55 gw mpd: [LL208] LCP: state change Opened --> Closing
    Jul 30 00:37:55 gw mpd: [LL208] Link: Leave bundle "BL208"
    Jul 30 00:37:55 gw mpd: [LL208] RADIUS: Accounting user 'uuuuuu' (Type: 2)
    Jul 30 00:37:55 gw mpd: [LL208] LCP: SendTerminateReq #125
    Jul 30 00:37:55 gw mpd: [LL208] LCP: LayerDown
    Jul 30 00:37:55 gw mpd: [LL208] LCP: rec'd Terminate Request #3 (Closing)
    Jul 30 00:37:55 gw mpd: [LL208] LCP: SendTerminateAck #126
    Jul 30 00:37:55 gw mpd: [LL208] LCP: rec'd Terminate Ack #4 (Closing)
    Jul 30 00:37:55 gw mpd: [LL208] LCP: state change Closing --> Closed
    Jul 30 00:37:55 gw mpd: [LL208] LCP: LayerFinish
    Jul 30 00:37:55 gw mpd: [LL208] L2TP: Call #4670000 terminated locally
    Jul 30 00:37:55 gw mpd: [LL208] RADIUS: Rec'd RAD_ACCOUNTING_RESPONSE for user 'uuuuuu'
    Jul 30 00:37:55 gw mpd: [LL208] Link: DOWN event
    Jul 30 00:37:55 gw mpd: [LL208] LCP: Down event
    Jul 30 00:37:55 gw mpd: [LL208] LCP: state change Closed --> Initial
    Jul 30 00:38:01 gw mpd: [LL208] Link: Shutdown
    

    в конфиге, собственно, начсчёт того как ложить сессию когда демон гасится - ничего такого нету, то есть он всё это делает сам когда его выключают.

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

     
  • alex kushnaryov

    alex kushnaryov - 2013-07-30

    попутно, к тому что проблема фундаментальна а не в рамках mpd - действительно, часть бытовых роутеров, которые подключаются к тому же серверу, после его выключения не переустанавливают впн-соединение, пока их не передёрнешь по питанию, хотя нормально переустанавливают после непланового обрыва - видимо, по той же причине. а что бы такого можно шепнуть серверному mpd, чтобы он перед выключением говорил "я ухожу, но скоро буду - ломись дальше"? :)

     
    Last edit: alex kushnaryov 2013-07-30
  • Dmitry S. Luhtionov

    У mpd есть опция on-demand. Попробуйте с ней.

     

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks