{"id":198,"date":"2006-07-12T18:54:54","date_gmt":"2006-07-12T16:54:54","guid":{"rendered":"http:\/\/www.lucas-nussbaum.net\/blog\/?p=198"},"modified":"2006-11-13T14:21:11","modified_gmt":"2006-11-13T12:21:11","slug":"how-i-got-my-internet-access-back-or-how-much-does-tele2-suck","status":"publish","type":"post","link":"https:\/\/www.lucas-nussbaum.net\/blog\/?p=198","title":{"rendered":"How I got my Internet access back (or: How much does Tele2 suck ?)"},"content":{"rendered":"<p>After being offline for 2.5 weeks at home, I finally took the decision to investigate the issue myself, because I don&#8217;t think that Tele2 can be trusted about this.<\/p>\n<p>So, I googled for a while, started to understand the details of PPPoE (<a href=\"http:\/\/rfc.net\/rfc2516.html\">RFC 2516<\/a>), and discovered that the error I was encountering (Windows reports it as error 676, which seems to be its official name ;) is actually quite common. The symptoms are that the Access Concentrator replies to your PADI (PPPoE Active Discovery Initiation) packet with a PADO (PPPoE Active Discovery Offer) packet, but doesn&#8217;t reply to your PADR (PPPoE Active Discovery Request) with a PADS (PPPoE Active Discovery Session-confirmation), so the session can&#8217;t be established.<\/p>\n<p>A bad design of PPPoE, and probably a bad implementation of the Access Concentrator, is the source for major problem : <strong>PPPoE sessions can die without being noticed<\/strong>, for example if your DSL connexion is abruptly reset (bad line, etc). When you try to reconnect, the authentication server refuses to open a new session, because you already have a session open.<\/p>\n<p>Now, how do you solve that ? Normally, Joe Random can just call its hotline, say he encounters the infamous 676 error, and the friendly guy on the other side of the phone will manually close the session, so Joe can connect again. But with Tele2, this doesn&#8217;t work. If you phone Tele2&#8217;s hotline and report a 676 error, you can get the following answers :<\/p>\n<ul>\n<li><em>We have some large scale problems, and are aware of the issue. We are working on it, it will be fixed in 1-2 days<\/em> (two weeks later, still not fixed, of course).<\/li>\n<li><em>The problem is known, and impacts all you area. The tech guys are working on it.<\/em><\/li>\n<li><em>This is caused by an incompatibility between your modem (I didn&#8217;t buy it, Tele2 provides it) and the DSLAM.<\/em> (I got this answer today, and got quite angry because they could <strong>really<\/strong> have told me this earlier, so I could have borrowed a friend&#8217;s modem).<\/li>\n<\/ul>\n<p>There are solutions to close the session from the client side, using a PADT (The PPPoE Active Discovery Terminate) packet. But it&#8217;s tricky, because you have to determine the AC&#8217;s MAC address (easy) and the ghost session&#8217;s ID (harder). To determine your session&#8217;s ID, you can just sniff the ethernet interface which connects your computer to the modem, and wait until you receive a packet from your old session on it (e.g a random UDP probe from a computer you don&#8217;t know). They, you can look at the PPPoE headers, and retrieve the AC&#8217;s MAC and the Session ID, and forge a PADT packet with them.<\/p>\n<p>On Windows, <a href=\"http:\/\/membres.lycos.fr\/beel1\/KillPPPoE\/\">KillPPPoE<\/a> does just this automatically.<\/p>\n<p>On Linux, you have to do it partially by hand.<\/p>\n<ul>\n<li>Capture the packets using tcpdump (<strong>tcpdump -Unvvi eth0 -w file.cap pppoed or pppoes<\/strong>).<\/li>\n<li>Open the capture file using ethereal, and find a packet from your old session.<\/li>\n<\/ul>\n<pre>No.     Time        Source                Destination           Protocol Info\r\n11 49.125813   221.208.208.89        83.177.207.102        UDP      Source port: 36545  Destination port: 1027\r\n\r\nFrame 11 (507 bytes on wire, 96 bytes captured)\r\nArrival Time: Jul 12, 2006 18:00:18.950672000\r\nTime delta from previous packet: 6.698021000 seconds\r\nTime since reference or first frame: 49.125813000 seconds\r\nFrame Number: 11\r\nPacket Length: 507 bytes\r\nCapture Length: 96 bytes\r\nProtocols in frame: eth:pppoes:ppp:ip:udp:data\r\nColoring Rule Name: UDP\r\nColoring Rule String: udp\r\nEthernet II, Src: ThomsonT_62:c4:f1 (00:90:d0:62:c4:f1), Dst: DellComp_15:dc:61 (00:c0:4f:15:dc:61)\r\nDestination: DellComp_15:dc:61 (00:c0:4f:15:dc:61)\r\nAddress: DellComp_15:dc:61 (00:c0:4f:15:dc:61)\r\n.... ...0 .... .... .... .... = Multicast: This is a UNICAST frame\r\n.... ..0. .... .... .... .... = Locally Administrated Address: This is a FACTORY DEFAULT address\r\nSource: ThomsonT_62:c4:f1 (00:90:d0:62:c4:f1)\r\nAddress: ThomsonT_62:c4:f1 (00:90:d0:62:c4:f1)\r\n.... ...0 .... .... .... .... = Multicast: This is a UNICAST frame\r\n.... ..0. .... .... .... .... = Locally Administrated Address: This is a FACTORY DEFAULT address\r\nType: PPPoE Session (0x8864)\r\nPPP-over-Ethernet Session\r\n0001 .... = Version: 1\r\n.... 0001 = Type: 1\r\nCode: Session Data (0x00)\r\nSession ID: 0x0019\r\nPayload Length: 487\r\nPoint-to-Point Protocol\r\nInternet Protocol, Src: 221.208.208.89 (221.208.208.89), Dst: 83.177.207.102 (83.177.207.102)\r\nUser Datagram Protocol, Src Port: 36545 (36545), Dst Port: 1027 (1027)\r\nData (46 bytes)<\/pre>\n<ul>\n<li>Call pppoe with the -k option to terminate the session (<strong>pppoe -k -e 25:00:90:d0:62:c4:f1<\/strong>). Note that the session ID must be passed in decimal, not hexadecimal.<\/li>\n<li>You can observe the PADT packet being sent, and the PADT reply from the AC.<\/li>\n<\/ul>\n<p>Open issue : <strong>How long would it have taken to solve the issue if I hadn&#8217;t dig it like that ?<\/strong><\/p>\n<p><strong>Update:<\/strong> Loic Pefferkorn wrote <a href=\"http:\/\/www.frozenbox.com\/pppoesk\">pppoesk<\/a> to automate the process. See related <a href=\"http:\/\/linuxfr.org\/~loic_p\/23094.html\">&#8220;journal&#8221; on LinuxFR.org<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After being offline for 2.5 weeks at home, I finally took the decision to investigate the issue myself, because I don&#8217;t think that Tele2 can be trusted about this. So, I googled for a while, started to understand the details of PPPoE (RFC 2516), and discovered that the error I was encountering (Windows reports it [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"0","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=198"}],"version-history":[{"count":0,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}