PPPoE passthrough op Fritz!Box 7360 voor XS4all VDSL

Met dank aan Philip Homburg, Daan Kroese, Miquel, Maarten, Sylvester, Timo, Jerry, Freetz, OpenWRT, en de xs4all.adsl newsgroup. Met name Daan en Philip's instructies waren zeer behulpzaam; deze pagina beschrijft ook andere experimenten en additionele info.

1. Introductie

XS4all levert bij VDSL op dit moment de AVM Fritz!Box 7360 DSL modem. Het modem werkt niet alleen als modem, maar ook als NAT-box en firewall en, zoals we eerder gezien hebben bij de SpeedTouch modems, kan het gewenst zijn om het modem alleen als modem te laten werken en de NAT/firewall functionaliteit op een ander systeem uit te laten komen. We krijgen hierdoor direct (ongefilterd) toegang tot het publieke IP-adres.

Bij oude modellen was PPPoE-passthrough een configuratie-optie; AVM heeft de optie helaas verwijderd (afaik heeft de 7360 deze optie nooit gehad). Een van de uitdagingen is dan ook het modem alsnog te bewegen alleen te doen wat de naam suggereert en niet meer.

Op xs4all.adsl hebben een aantal mensen het modem vervangen door een ander type (Zyxel). Dat is mogelijk, maar de 7360 zit bij het abonnement, dus waarom dit modem niet gebruiken? Het is gratis.

Door het modem alleen als modem te schakelen verliezen we andere functionaliteit zoals:

Maar er zijn ook voordelen:

1.2 Chapeau XS4all!

Ik ben al een hele tijd XS4all ADSL van KPN (AvK) klant, waarbij je een bedrag betaalt aan XS4all voor Internet, en een bedrag aan KPN voor de ADSL lijn.

Deels was mijn AvK-lijn luiheid, deels was dit omdat op mijn adres de kabel erg lang was en de te halen ADSL snelheid heel beperkt; is was blij met wat ik uiteindelijk had kunnen regelen want dat zat ruim boven hetgeen de inzetregels voorschreven voor mijn locatie.

Er komen steeds meer problemen met AvK. Formeel is hier KPN degene die de ADSL verbinding levert, maar bij storingen verwijst men naar de ISP (zoals ook bij andere abonnementen); XS4all zelf echter krijgt van KPN ook absoluut geen medewerking en het hangt van persoonlijke contacten, die de helpdeskmensen toevallig nog hebben, af of ze je kunnen helpen als er iets stuk gaat. KPN wil duidelijk van z'n klanten af.

Een poos geleden leerde ik dat op mijn adres nu ook VDSL leverbaar was, maar de migratie bleek erg lastig: zo moet ik ISDN behouden (don't ask), bleek het onmogelijk emailadressen aan te houden, enzovoort.

Op mijn adres waren wel twee aderparen aanwezig, maar zowel KPN als XS4all (alsook concurrenten van XS4all) konden slechts een aderpaar vinden, en of ik mijn ISDN niet om wilde zetten naar IPTV. Nou, nee dus.

Ik kwam een stap verder doordat ik op mijn adres een "bel basis"-abonnement bestelde. Deze bleek niet geleverd te kunnen worden omdat het tweede aderpaar niet aangesloten was; vermoedelijk is dit aderpaar in de kabel een jaren geleden ingezet toen een belwinkel verderop in de straat extra lijnen gekregen heeft. Na een halve dag graafwerk van Van Der Pas (daar heeft KPN zeker geen winst op gemaakt) bleek het tweede aderpaar plots wel weer bereikbaar en kwam VDSL weer in beeld.

De doorbraak kwam een paar weken geleden toen bleek dat allerlei beperkingen rondom migratie plotseling verholpen bleken: het bleek mogelijk een tweede DSL aansluiting op hetzelfde klantnummer te nemen, inzet van het tweede aderpaar was plotseling geen probleem, tijdelijk parallel-bedrijf van mijn oude AvK en mijn nieuwe VDSL geen probleem. Chapeau voor de XS4all medewerker die dit gewoon heeft kunnen regelen; er is een brief met naam en toenaam gestuurd naar de XS4all directie en ik hoop dat dit helpt nu er gereorganiseerd wordt.

De conclusie moet zijn: als je eerder problemen hebt gehad bij het weg-migreren van AvK, probeer het dan nog eens. Met wat mazzel zul je zien dat het nu wel kan allemaal. XS4all, chapeau!

2.1 XS4all VDSL parameters

De volledige parameters voor VDSL staan niet op de XS4all help-pagina's (hint):

Annex:A
PPPoE 
VPI/VCI 8/48

Internet: PPPoE via 802.1Q VLAN 6
IPTV: PPPoE via 802.1Q VLAN 4
Let met name op het gebruik van VLANs; dit is alleen voor VDSL, niet voor ADSL. Het heeft als voordeel dat de ADSL-link en de besturing van het modem via gescheiden netwerken kunnen lopen.

2.2 ADSL van XS4all (AvX) / ADSL van KPN (MXstream) (AvK)

Het hier beschreven systeem werkt niet met bovenstaande ADSL diensten, omdat de encapsulation anders is (PPPoA, VPI/VCI 8/48).

Voor de oudere Alcatel/Speedtouch modems is er http://sip-spoof.wiki.xs4all.nl/index.php. De beschrijving voor de ST780 werkt ook bij een TG787 mits deze voorzien is van generieke software, bijvoorbeeld via de Engelse modem-help website.

2.3 7340 / 7390 modems, 7360 v1 en v2 modems

De in deze pagina beschreven truuk werkt helaas niet op de 7340/7390. Deze modems gebruiken een andere processor en de koppeling met VDSL werkt anders en laat zich niet met deze truuk bridgen. Dit moet nog eens uitgezocht worden.

Voor gebruikers van andere providers: XS4all levert de "international" versie van de 7360.

Van de 7360 bestaan inmiddels twee hardware-versies: v1 en v2. XS4all levert op dit moment nog v1 uit maar als de voorraad op is kan dit veranderen. Experimenten hebben laten zien dat een v2 modem vermoedelijk ook werkt (het lukt in ieder geval de VDSL interface te bridgen), maar het opbrengen van een PPPoE verbinding is nog niet geprobeerd - wie rapporteert zijn ervaringen?

3. AVM Fritz!Box 7360

3.1 Introductie

Het 7360 modem (v1) maakt gebruik van de volgende hardware:

Functie Fabrikant Type Beschrijving
CPU LANTIQ VRX288 XWAYtm V1.2
FLASH MXIC mx29gl128fht21-90g 16M
RAM WINBOND w971gg6jb-25 128M
DSL lantiq VRX208 XWAYtm v1.1
WLAN Atheros ar9287  
Phone DIALOG SC14441  
Ethernet Atheros ar8030 Gigabit PHY voor eth1 en eth2

Het modem draait Linux en de processor is een MIPS architectuur; OpenWRT 'ar71xx' binaries draaien ook op een ongewijzigde Fritz.

Helaas is niet alles goed nieuws: de VRX288 processor maakt gebruik van een hardware 'protocol-processor' die de data-transmissie doet. Helaas is dit stuk geen Open-Source en Lantiq is niet scheutig met informatie waardoor we afhankelijk zijn van AVM's binaries, in ieder geval een gedeelte ervan.

De Flash layout hoort eigenlijk thuis op de OpenWRT pagina, maar voor de volledigheid:

mtd1      0x90020000,0x90F80000   (kernel/fs image)
mtd2      0x90000000,0x90020000   (ADAM2 bootstrap loader)
mtd3      0x90F80000,0x90FC0000   (TTFS configuratie, copie 1)
mtd4      0x90FC0000,0x91000000   (TTFS configuratie, copie 2)

Later meer.

3.2 Console (optioneel)

De printplaat is voorzien van een seriele console en een reset-ingang. Bij het experimenteren is het handig om op de console te zien wat er gebeurt en om het ding te kunnen resetten. Noodzakelijk is dit niet.

Disclaimer:Het modem is in bruikleen van XS4all, die het niet leuk zal vinden als mensen zelf gaan solderen in verband met garantie enzo. Denk hieraan als je de console aansluit; ikzelf heb een extra modem 'gemarktplaatst' zodat ik de vrijheid had te rommelen met eigen hardware.

Rechts naast de processor (die zich in het metalen blikje bevindt, dit blikje is afscherming en koeling) bevinden zich een rij van 4 aansluitingen voor de seriele console op 115200 baud. De aansluitingen zijn:

1= +3.3V uit (niet gebruiken bij CP2101) [vierkant]
2= RXin
3= TXout
4= GND
Dit is 3.3V logica, geen RS232; aansluiten op een CP2101 van FleaBay werkte prima maar sluit deze dus niet aan op een COM-poort want dan is het stuk.

Een stukje lager bevinden zich nog twee pads, dit is voor de RESET:

1= RESET [vierkant]
2= GND
Ikzelf heb pin 1 via een 1N4148 diode verbonden met de DECT-drukknop (DECT gebruik ik niet), zodat ik het modem kan resetten door gewoon op de knop te drukken.

3.3 Freetz (optioneel)

Freetz is een alternatieve distributie voor Fritz!Boxen. Op het moment van schrijven ondersteunt 'trunk' de 7360.

Freetz biedt onder andere de mogelijkheid nuttige dingen toe te voegen zoals tcpdump en dropbear wat erg prettig is bij experimenteren, maar geen noodzaak voor de PPPoE-ombouw. Desalniettemin adviseer ik om hier eens naar te kijken, ga je geen spijt van krijgen.

Het maken van packet capture files blijkt overigens ook te kunnen via het modem zelf, via de url http://fritz.box/capture.lua.

Hier is de Freetz config die ik gebruik, en de image (maar voor veiligheidsredenen adviseer ik dat je zelf een freetz-omgeving optuigt!).

De Freetz-omgeving heeft dropbear ingebouwd, dus kun je het gedoe met het starten van telnet met een telefoon omzeilen. Default accounts zijn admin/freetz of root/freetz.

3.4 PPPoE passthrough

Deze beschrijving is uitgegaan van versie 05.51 van de firmware. Het is handig de firmware-images (en de "recovery-image") te bewaren; als er een nieuwe release uitkomt lijken de oude releases onbereikbaar gemaakt te worden. Zie: De recovery-image heb je overigens niet nodig tenzij je, zoals ik, gaat experimenteren met de bootloader en andere images en het ding hierdoor gebricked hebt (grin).

Na het updaten van de code en factory-reset, configureer allereerst je modem. Ik heb ervoor gekozen om het DSL-gedeelte goed in te stellen maar het IP-gedeelte bewust verkeerd (verkeerd VLAN en alleen opbouw als er verkeer is, en dat is dus nooit) dan zit dat niet in de weg als we zelf PPPoE gaan doen. Een gedeelte van de mooie DSL-plaatjes van het modem werkt nog steeds met deze wijzigingen.

Een van de dingen waar ik lang mee heb lopen vechten is dat de netwerk-interface van de protocolprocessor (ptm_vr9) geen inkomende packets laat zien als dsld draait. de vinding om dsld gewoon af te schieten is briljant, hierna is het mogelijk om ptm_vr9 gewoon te bridgen in de lan netwerk-bridge, waarna de PPPoE packets (op VLAN 6) gewoon op ethernet beschikbaar komen.

Configureren gaat als volgt:

4. FreeBSD host

Voor deze opstelling wordt gebruik gemaakt van een FreeBSD 9.1 systeem als internet host / router / firewall.

Er is eerst geexperimenteerd met de standard ppp (/usr/sbin/ppp). De performance was niet best, een soekris 5500 leverde maar 50% van de snelheid van de VDSL-lijn en ik gebruikte daarom een FitPC2i en later een IntensePC.

Het probleem bleek de standaard ppp software te zijn. Met mpd5 (ports: net/mpd5) bleek dat de performance veel, veel beter te zijn (ook veel lagere CPU load) en bleek ook de Soekris 5500 ruim snel genoeg (zie verderop).
Enige nadeel: mpd wordt veel in Rusland gebruikt en een hoop google-info is dan ook in het Russisch, en Google Translate is, tja, Google Translate.

De oude, trage configuratie staat nu hier (alleen voor historie, niet als aanbeveling).

Van de IntensePC kan ik alleen nog vertellen dat de documentatie niet klopt: eindgebruikers kunnen geen FACE-modules plaatsen. De Nederlandse vertegenwoordiging is prima maar ondersteuning vanuit de fabriek is een minder prettige ervaring geweest helaas.

4.1 PPP configuratie

Merk op dat de ppp daemon zelf (met lqr) ontdekt dat als de verbinding down is, de PPP sessie down is en dit zelf blijft proberen te herstellen. Experimenten hiermee (tot en met het vervangen van het modem met openstaande SSH sessies) zijn erg goed.

Recent ben ik omgegaan van de oude E320 naar een MX960 router en is DHCPv6-PD verplicht geworden. Dit doen we via WIDE dhcp6, maar dit starten we NIET vanuit rc.conf maar pas nadat de PPP sessie up is, gebruik makend van de ng interface die hiervoor gebruikt wordt.

5 MTU blues

In plaats van een standaard 1500-byte ethernet aansluiting gebruikt een VDSL aansluiting meer overhead: 8 bytes voor PPPoE, en 4 bytes voor VLAN tagging (802.1Q). Met de 802.1Q tagging is in de meeste ethernet-producten rekening gehouden, maar PPPoE zorgt ervoor dat een verbinding standaard 1492 bytes aankan, geen 1500.

Dit kan probleemn geven met systemen die PMTU ICMP packets filteren. Dat is een ernstige configuratiefout maar dat weerhoudt zelfs grote namen er niet van deze fout te maken.

Als PMTU wel werkt (of met MSS clamping) valt het in de praktijk wel mee, maar fraai is het natuurlijk niet. Of we in staat zijn de verbinding geschikt te maken voor een MTU van 1500 bytes hangt van diverse factoren af, o.a. van de edge router bij XS4all, en van het VDSL modem. Er zijn allerlei factoren die ik hier verder beschrijf.

5.1 Edge router

RFC4638 beschrijft een methode om een grotere MTU te vragen, als alle tussenliggende spullen deze grotere packets ondersteunt.

De meeste XS4all klanten zijn op dit moment aangesloten via Juniper E320 routers. Deze ondersteunen RFC4638 niet. Wat op deze routers wel werkt (maar niet volgens de standaard is) is om domweg een grotere MTU/MRU te vragen bij de PPP handshake. Bij MPD5 (v 5.7) is een (triviale) sourcecode-wijziging nodig (zie pppoe.c) om een beveiliging te slopen die dit mogelijk maakt. Ik heb vastgesteld dat mijn VDSL aansluiting inderdaad een MTU/MRU van 1500 toestaat als je het vraagt. Helaas is dit geen complete oplossing; zie verderop.

XS4all is bezig met een migratietraject naar nieuwe Juniper MX routers. Dit is een uiterst complexe klus die gefaseerd ingevoerd moet worden, o.a. vanwege allerlei nare consequenties die dit met KPN heeft. Deze routers ondersteunen RFC4638 wel. Een aantal 'glas'-aansluitingen gebruiken dit inmiddels en er zijn rapporten dat dit daar werkt.

De migratie is complex en zal zeker nog maanden duren. Doe iedereen een lol en laat de XS4all techneuten met rust hierover, ze kunnen niet harder als dat ze nu doen.

5.2 VDSL modem

In het modem zijn er diverse plaatsen waar grote packets misgaan: in de ethernet-driver, de bridge-code, en de code van de DSL coprocessor. Het vergroten van de MTU in de ethX interfaces en de LAN bridge is helaas niet voldoende. Ik heb hier verder nog niet naar gekeken, want ook de code van de DSL coprocessor blijkt hier niet mee om te kunnen gaan, en dit is een showstopper: van dit stuk hebben we alleen een binaire blob, freetz enzo helpen hier niet en zolang deze code niet aangepast is (er ligt een feature-request bij AVM) komen we hiermee niet verder.

De hoop is dat dit natuurlijk verandert. Vooralsnog geeft het bovenstaande recept een oplossing waar ik dik tevreden mee ben.

6. Performance

Omdat op de xs4all.adsl newsgroep getallen vergeleken worden, hier de cijfers van mijn verbinding. Volgens de helpdesk krijg je meer dan 40 Mbit/sec als de VDSL verbinding het aankan, bij mij is dat zo:
                                        Receive Direction       Send Direction
Max. DSLAM throughput   kbit/s          52000                   5224
Min. DSLAM throughput   kbit/s          3488                    64
Attainable throughput   kbit/s          74482                   37003
Current throughput      kbit/s          52000                   5224
                        
Latency                                 8 ms                    2 ms
Bitswap                                 off                     on
Impulse Noise Protection                1.0                     1.0
                        
Signal-to-noise ratio   dB              13                      29
Line attenuation        dB              17                      4
Carrier record                          A43                     A43
Profile                 17a             
Met een soekris 5500 als FreeBSD gateway en een Ubuntu Atom-machine als client, zie ik:
$ ftp ftp.xs4all.nl
Connected to ftp.xs4all.nl.
220 XS4ALL ftpd DCLXVI
Name: anonymous
331 Anonymous login ok, send your complete email address as your password
Password:
230-
230-Welkom op de FTP server van XS4ALL
230-----------------------------------
230-
230 Anonymous access granted, restrictions apply
ftp> get pub/test/100mb.bin /dev/null
local: /dev/null remote: pub/test/100mb.bin
200 PORT command successful
150 Opening BINARY mode data connection for 100mb.bin (104857600 bytes)
226 Transfer complete
104857600 bytes received in 19.46 secs (5260.8 kB/s)
ftp> get pub/test/100mb.bin /dev/null
local: /dev/null remote: pub/test/100mb.bin
200 PORT command successful
150 Opening BINARY mode data connection for 100mb.bin (104857600 bytes)
226 Transfer complete
104857600 bytes received in 19.47 secs (5260.0 kB/s)
Ik ben hier niet ontevreden over.

7. Vectoring

Inmiddels is dezelfde opzet (alas, zonder freetz) ook geprobeerd op de 'labor version' 05.60-26674, 05.60-26937, 05.60-27109 en de release-code 6.01, 6.03 en 6.04 en werkt daar ook.

Het updaten van de firmware gaat niet zomaar, de workaround is hierboven omschreven.

De GUI geeft op dit moment aan:

G.Vector  off  off
Afwachten tot KPN ook mijn DSLAM geupdated heeft.
Opmerkingen graag via de newsgroup xs4all.adsl.

$Id: index.html,v 1.17 2014/03/12 12:13:12 gjppp Exp gjppp $