Hi! I have a box with two external ISDN modems attached to it that acts as an outgoing modem pool to a number of remote located ISDN routers (zyxel P-202H Plus v2).
Recently I was given the go-ahead to upgrade this 3.6 box so I swapped the disk with a new one with a fresh install of 4.1 (4.2 cds haven't yet arrived then). Unfortuantely, this upgrade caused the outgoing ppp connections to fail. My initial investigation didn't show me a clear reason for this so I went back to 3.6 and then upgraded version by version, until I found the moment when the unchanged very simple ppp.conf (at the bottom of this mail) didn't work anymore. To cut a long story shirt, something happened between 3.8 and 3.9 that changes the behaviour of the LCP negotiation protocol in my specific case: 3.8: Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: deflink: LayerStart Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: deflink: SendConfigReq(1) state = Stopped Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: ACFCOMP[2] Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: PROTOCOMP[2] Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: ACCMAP[6] 0x00000000 Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: MRU[4] 1500 Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: MAGICNUM[6] 0x434b14d1 Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: deflink: State change Stopped --> Req-Sent Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: deflink: RecvConfigRej(1) state = Req-Sent Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: PROTOCOMP[2] Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: ACFCOMP[2] Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: deflink: SendConfigReq(2) state = Req-Sent Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: ACCMAP[6] 0x00000000 Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: MRU[4] 1500 Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: MAGICNUM[6] 0x434b14d1 Oct 18 16:29:27 ringie ppp[11094]: tun0: LCP: deflink: RecvConfigAck(2) state = Req-Sent 3.9: Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: deflink: LayerStart Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: deflink: SendConfigReq(1) state = Stopped Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: ACFCOMP[2] Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: PROTOCOMP[2] Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: ACCMAP[6] 0x00000000 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: MRU[4] 1500 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: MAGICNUM[6] 0x1c0be38b Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: deflink: State change Stopped --> Req-Sent Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: deflink: RecvConfigReq(235) state = Req-Sent Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: MRU[4] 1524 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: AUTHPROTO[5] 0xc223 (CHAP 0x05) Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: MAGICNUM[6] 0x4b27d550 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: ACFCOMP[2] Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: MRRU[4] 1524 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: ENDDISC[9] MAC 00:13:49:33:c8:84 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: LDBACP[4] 002b Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: ACCMAP[6] 0x00000000 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: deflink: SendConfigRej(235) state = Req-Sent Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: MRRU[4] 1524 Oct 18 16:28:45 ringie ppp[6602]: tun0: LCP: LDBACP[4] 002b Under 3.8, my end makes some proposals, the remote end rejects a couple of them and eventually we reach an agreement. Under 3.9 and all the later versions including -current, we send the exactly same proposals but the remote end instead of replying to them, sends its own set of proposals - which we ultimately find unnacceptable as we cannot grok LDBACP. Under 3.8 the flow goes: SendConfigReq -> RecvConfigRej -> SendConfigReq -> RecvConfigAck. Under 3.9 the flow goes: SendConfigReq -> RecvConfigReq -> SendConfigRej -> RecvConfigReq -> SendConfigRej ... The funny part is that our config file and proposal remain the same during the OS version change, even the physical bits being pushed through the serial port seem not to have changed except for MAGICNUM - so what makes the remote router change its behaviour??? What makes Zyxel react differently? cvs diff on /usr/src/usr.sbin/ppp/ppp between 3.8 and 3.9 shows a good 2k lines have changed, but it seems to be mostly the inclusion of radius support and some ipv6-related work, nothing that even remotely appears to be involved in LCP. Out of desperation I have tried to build 3.8's ppp sources on a 3.9 system, but surprisingly the resulting ppp gave the 3.9 behaviour. Could this mean that change was caused by kernel or other system components? Regards, Mitja ------------------- default: set log Phase Chat LCP IPCP CCP tun command set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" disable ipv6cp enable mssfixup stpn: set device /dev/cua03 set phone 004912345678901 set login set authname xxxxxx set authkey yyyyyy set ifaddr 0.0.0.0/16 10.32.0.1/0 255.255.0.0 0.0.0.0 add! 10.32.0.0/16 HISADDR ------------------