From owner-freebsd-net Thu Oct 26 20:23:38 2000 Delivered-To: freebsd-net@freebsd.org Received: from hotmail.com (f40.law6.hotmail.com [216.32.241.40]) by hub.freebsd.org (Postfix) with ESMTP id 315A837B479; Thu, 26 Oct 2000 20:23:32 -0700 (PDT) Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Thu, 26 Oct 2000 20:23:32 -0700 Received: from 203.11.225.5 by lw6fd.law6.hotmail.msn.com with HTTP; Fri, 27 Oct 2000 03:23:31 GMT X-Originating-IP: [203.11.225.5] From: "Aaron Hill" To: freebsd-questions@FreeBSD.ORG, freebsd-net@FreeBSD.ORG Cc: paulh@chariot.net.au, julian@elischer.org, ao@pobox.com, gcorcoran@lucent.com Subject: Solved! R4.1.1 PPPoE with ADSL (Telstra Bigpond) Date: Fri, 27 Oct 2000 03:23:31 GMT Mime-Version: 1.0 Content-Type: text/plain; format=flowed Message-ID: X-OriginalArrivalTime: 27 Oct 2000 03:23:32.0121 (UTC) FILETIME=[48580890:01C03FC5] Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org For those following my problems getting FreeBSD 4.1.1-RELEASE to work with ADSL, that problem is now solved. Thank you to everyone on the list who responded or just spent some brain time on the problem, I appreciate your help. Please read on for the solution. What it all comes down to is my ISPs equipment is not RFC 2516 compliant - in the way I read the RFC at least. Their Access Concentrator would not work correctly with a PPPoE discovery session unless the the Service-Name tag was positioned as the last tag in the PPPoE payload. Following is proof of that. First here's the system I'm working with... homer# uname -a FreeBSD homer 4.1.1-RELEASE FreeBSD 4.1.1-RELEASE #2: Fri Oct 27 04:25:15 EST 2000 root@homer:/usr/src/sys/compile/FWCUSTOM i386 ... next I should say that the only thing that was being changed on this system between the following tcpdump captures was a modification of the file /usr/src/sys/netgraph/ng_pppoe.c , a re-compile of the kernel and a reboot. Here's what is happening when I try to start a PPPoE session with the standard 4.1.1-RELEASE code... 0:e0:29:73:81:dd Broadcast 8863 60: PPPoE PADI [Service-Name "bigpond"] [Host-Uniq UTF8] 0:90:39:47:0:3f 0:e0:29:73:81:dd 8863 192: PPPoE PADO [Service-Name] [Service-Name "telstra"] [Service-Name "cmux"] [Service-Name "bigpond"] [Service-Name "n7061992k"] [Service-Name "n2155202k"] [Service-Name "n2155201k"] [Service-Name "n1011426k"] [Service-Name "n2155203k"] [Service-Name "n7061995k"] [Service-Name "n2155205k"] [Service-Name "n3120511k"] [Service-Name "n2155206k"] [AC-Name "nkt1-kent"] [Hos t-Uniq UTF8] 0:e0:29:73:81:dd 0:90:39:47:0:3f 8863 60: PPPoE PADR [Service-Name "bigpond"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] 0:90:39:47:0:3f 0:e0:29:73:81:dd 8863 62: PPPoE PADS [Service-Name-Error "SvcNameTag Error"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] ... so that's not working. You can see FreeBSD makes correct PADI and PADR requests of the Access Concentrator but receives nonsense in reply - the AC is not hearing what FreeBSD is saying. So next I modified the source code for pppoe to put the Service-Name tag after the Host-Uniq tag in the PADI frame. Here's the results... 0:e0:29:73:81:dd Broadcast 8863 60: PPPoE PADI [Host-Uniq UTF8] [Service-Name "bigpond"] 0:90:39:47:0:3f 0:e0:29:73:81:dd 8863 60: PPPoE PADO [Service-Name "bigpond"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] 0:e0:29:73:81:dd 0:90:39:47:0:3f 8863 60: PPPoE PADR [Service-Name "bigpond"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] 0:90:39:47:0:3f 0:e0:29:73:81:dd 8863 62: PPPoE PADS [Service-Name-Error "SvcNameTag Error"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] ... so now I'm getting somewhere - the Access Concentrator is reading the PADI correctly and offering the PADO as it should. Problem is it doesn't understand the next PADR frame so another Service-Name-Error is encountered. Kicking myself I modify the code again, this time to change the order of the tags in the PADR frame as well as the PADI frame. Here's the results... 0:e0:29:73:81:dd Broadcast 8863 60: PPPoE PADI [Host-Uniq UTF8] [Service-Name "bigpond"] 0:90:39:47:0:3f 0:e0:29:73:81:dd 8863 60: PPPoE PADO [Service-Name "bigpond"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] 0:e0:29:73:81:dd 0:90:39:47:0:3f 8863 60: PPPoE PADR [Host-Uniq UTF8] [AC-Name "nkt1-kent"] [Service-Name "bigpond"] 0:90:39:47:0:3f 0:e0:29:73:81:dd 8863 60: PPPoE PADS [ses 0x1ec] [Service-Name "bigpond"] [AC-Name "nkt1-kent"] [Host-Uniq UTF8] ... success! The session then goes on to authenticate and set up IP addresses etc. Here's the final result... tun0: flags=8051 mtu 1492 inet 61.9.179.226 --> 172.31.18.3 netmask 0xff000000 Opened by PID 181 ...done. So what do I/we do next with this information? Is it worth changing the FreeBSD source to accomodate for dodgy ISP equipment? I can't say what type of Access Concentrator it is I'm dealing with but if this Telco is using it I'd say others will. Of course anyone's welcome to the changes I've made but based on the descriptions above I'm sure you could replicate it yourself easily. I only changed the position of two lines in the file. Thanks again Aaron Hill _________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com. Share information about yourself, create your own public profile at http://profiles.msn.com. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message