Tweak Glasvezel
Dit document is de opvolger van de pagina KPN Glasvezel en is van toepassing op Fiber to the Home (FttH) verbindingen van de provider Tweak. Sinds zomer 2014 is Tweak afgestapt van de diensten welke middels KPN geleverd werden, het oude KPN IPTV platform is vervangen door Sparql IPTV en PPPoE over VLAN6 is vervangen met DHCP over VLAN34. Hierin wordt beschreven hoe deze nieuwe setup gebruikt kan worden zonder Genexis en zonder de meegeleverde router.
Contents
Apparatuur
Bij het opleveren van deze verbinding wordt de volgende apparatuur geleverd:
- Genexis FTU (Fiber Termination Unit).
- ISP Router
- Spaql IPTV set-top-box (STB).
Genexis
Wat de meeste mensen waarschijnlijk wel is opgevallen is dat er geen aderpaar naar binnen gebracht is maar slechts een enkele glasvezel. Dit kan omdat de Genexis gebruik maakt van een 'WDM' module om zowel het Tx als het Rx signaal over één enkele ader te multiplexen. Het kastje aan de muur is verder puur aanwezig voor de vertaal-slag van Glasvezel naar Ethernet en is voorzien van 100Mbit of 1Gbit Full-Duplex ethernet poorten (afhankelijk van de uitvoering); Er wordt maar één ethernet poort gebruikt, deze dient op de WAN poort van de router aangesloten te worden.
ISP Router
In het geval van
is er een ZyXEL VMG8324-B10A router meegeleverd. Welke router meegeleverd wordt, kan uiteraard verschillen maar maakt verder niet uit en kan onaangeraakt "nieuw in doos" blijven.
Deze router heeft een aantal functies welke door de eigen router overgenomen moeten worden:
- VoIP naar Analoog converteren
- IPTV naar LAN multicast routen
- Internet connectiviteit
- 802.1q VLAN Trunking op de WAN poort
Sparql STB
Deze box is momenteel nog niet te vervangen met een eigen apparaat. Sparql zal binnenkort ook TV op 'second screen' uitrollen, dit lijkt vooralsnog echter alleen voor Android en IOS apparaten beschikbaar te komen.
heeft een "Feature Request" ingediend om een XBMC plugin voor de "second screen" functie te maken zodat dit op een eigen Mediacenter gebruikt kan worden.
Vervangen
Zoals beschreven zijn de ISP Router en de Genexis vervangbaar met eigen apparatuur. In dit geval wordt beschreven hoe dit gedaan kan worden met:
- Managed Layer 2 switch welke zowel SFP's, 802.1q VLAN's als IGMP Snooping ondersteunt.
- Linux router (Ubuntu/Debian based) met 802.1q VLAN support.
Deze setup is als volgt ingericht:
- De switch heeft VLAN trunk op de Fiber SFP staan en VLAN Trunk richting de linux router. Allowed VLAN's zijn alleen 4 en 34.
- Op de switch is IGMP Snooping ingeschakeld op alle LAN intefaces met de optie "unkown multicast" ingesteld op "Forward".
- De Linux router heeft 802.1q subinterfaces op de WAN interface (Voor dit voorbeeld is
eth0
de WAN). - Interface
eth1
is in dit geval de LAN interface.
Voor de verdere config wordt er vanuit gegaan dat de LAN interface (eth1
) reeds volledig geconfigureerd is en zal niet behandeld worden.
Het kan ook middels een DD-WRT router gedaan worden, hiervoor zijn handleidingen te vinden op de DD-WRT forums.
Genexis
Er worden verschillende versies en uitvoeringen van de genexis geleverd. Dit maakt verder niet uit want het apparaat doet niets meer dan 'dom' vertalen van Fiber naar Ethernet. Dit houdt in dat deze vervangen kan worden door een eigen SFP in een switch. De eis hiervoor is dat deze een WDM Fiber SFP heeft:
De Genexis kant bevat een SC fiber connector, let erop dat de fiber welke tussen de genexis en de switch aan beide kanten de goede connector heeft! |
Router
Deze router configuratie is redelijk uitgebreid, voornamelijk wegens het regelen van VLAN4 (IPTV):
- Middels DHCP wordt een default gateway aangeboden welke alleen toegang tot het Sparql platform verschaft.
- IPTV is multicast based, de router moet multicast ROUTEN van VLAN4 naar het lokale LAN.
- De multicast streams en IGMP berichten moeten door de router verwerkt worden.
Verder wordt er op VLAN34 middels DHCP internet toegang verschaft. Deze configuratie is daardoor zeer simpel en traditioneel.
WAN Trunk
Als eerste moet de WAN interface ingesteld worden voor de betreffende vlan's en zonder enige IP configuraties:
/etc/network/interfaces
allow-hotplug eth0 iface eth0 inet6 manual iface eth0 inet manual hwaddress ether 00:11:22:33:44:55 post-up /sbin/vconfig add eth0 34 post-up /sbin/vconfig add eth0 4 pre-down /sbin/vconfig rem eth0 34 pre-down /sbin/vconfig rem eth0 4
Let hierbij op het MAC adres. Deze wordt op de subinterfaces aangepast omdat dhclient niet goed omgaat met DHCP leases op verschillende sub interfaces met hetzelfde MAC-adres.
VLAN34 / Internet
Aangezien de configuratie puur ethernet based is en geen PPPoE of andere constructies vereist, is het buitengewoon simpel:
/etc/network/interfaces
allow-hotplug eth0.34 iface eth0.34 inet6 manual iface eth0.34 inet dhcp metric 10 hwaddress ether 00:11:22:33:44:66 pre-up /path/to/firewall/script.sh
Hierin wordt een interface metric ingesteld, dit helpt met het voorkomen dat de router via het verkeerde gateway naar het internet probeert te verbinden. Dit is gedaan wegens de meerdere default gateways welke aangeboden worden over zowel VLAN4 als VLAN34. Er wordt geen IPv6 aangeboden over dit VLAN, vandaar dat dit op manual staat.
VLAN4 / Sparql IPTV
In dit gedeelte wordt alleen het Unicast routing uitgelegd, het multicast routing wordt later behandeld in de Sparql sectie.
Deze configuratie is wat uitgebreider en bevat meerdere configuraties om met het dubbele gateway om te gaan. Om te voorkomen dat het systeem een dubbel gateway krijgt, wordt er ook gewerkt met de functies van dhclient-script.
Interface config
Allereerst de netwerk interface configureren, dit is wederom uitermate simpel:
/etc/network/interfaces
allow-hotplug eth0.4 iface eth0.4 inet6 manual iface eth0.4 inet dhcp metric 1000 hwaddress ether 00:11:22:33:44:77
Hierin wordt de interface metric op 1000 gezet zodat de default gateway, wat middels DHCP aangeboden wordt, niet gebruikt wordt als de dhclient scripts niet correct functioneren. Verder wordt het MAC adres weer op een andere unieke waarde gezet.
dhclient-script
Voor het Sparql platform is het nodig om een bepaalde Public IP range te NAT routen over VLAN4 in plaats van VLAN34. Om dit voor elkaar te krijgen en direct de meerdere 'default gateways' op te lossen, wordt er gebruik gemaakt van dhclient's enter-hook en exit-hook scripts die specifiek op eth0.4
geactiveerd worden.
Allereerst moet het enter-hooks script geschreven worden. Dit script reageert op de DHCP berichten via eth0.4
en doet het volgende:
- Zet het default gateway in een andere variabele.
- Verwijdert het default gateway uit de DHCP Response.
Dat levert het volgende script op:
/etc/dhcp/dhclient-enter-hooks.d/sparql_tv
#!/bin/sh RUN="yes" if [ "$RUN" == "yes" ]; then case "$interface" in eth0.4) for router in $new_routers; do export sparql_gw=$router break done unset new_routers ;; *) esac fi
Het volgende script is de exit-hooks. Dit script reageert wederom alleen op DHCP berichten via eth0.4
en doet het volgende op basis van het gateway dat in het vorige script geëxporteerd is:
- Verwijderen en/of toevoegen van de static route via
eth0.4
naar het Sparql platform: 185.6.48.0/26 - Verwijderen en/of toevoegen van de static route via
eth0.4
naar het 'local' subnet opeth0.4
: 10.10.24.0/22- Controleer dit subnet na het initiele DHCP request en pas naar gelang aan in onderstaande scripts. Dit kan verschillen per aansluiting!!
De eerste static route is nodig zodat de Sparql STB kan communiceren met het Sparql platform, dit mag alleen via VLAN4 en moet NAT-gerouteerd worden. De tweede static route is om te zorgen dat de toegang tot de gateway op eth0.4
ook netjes NAT-gerouteerd wordt voor de Sparql STB.
/etc/dhcp/dhclient-exit-hooks.d/sparql_tv
#!/bin/sh RUN="yes" if [ "$RUN" = "yes" ]; then if [ "$interface" == "eth0.4" ]; then case "$reason" in BOUND|RENEW|REBIND|REBOOT|TIMEOUT) /sbin/ip route del 185.6.48.0/26 > /dev/null 2>&1 /sbin/ip route del 10.10.24.0/22 > /dev/null 2>&1 /sbin/ip route add 185.6.48.0/26 via $sparql_gw dev $interface metric 1000 /sbin/ip route add 10.10.24.0/22 via $sparql_gw dev $interface metric 1000 ;; EXPIRE|FAIL|RELEASE|STOP) /sbin/ip route del 10.10.24.0/22 > /dev/null 2>&1 /sbin/ip route delete 185.6.48.0/26 > /dev/null 2>&1 ;; *) esac fi fi
NAT Routing
Omdat er NAT gerouteerd moet worden over meerdere interfaces op basis van IP ranges, moet de iptables NAT routing net even anders aangepakt worden. Dit kan als volgt gedaan worden:
# NAT routing voor Sparql: iptables -t nat -A POSTROUTING -d 185.6.48.0/26 -o eth0.4 -j MASQUERADE iptables -t nat -A POSTROUTING -d 10.10.24.0/22 -o eth0.4 -j MASQUERADE # Normale NAT Routing voor NON-Sparql ranges: iptables -t nat -A POSTROUTING ! -d 185.6.48.0/26 -o eth0.34 -j MASQUERADE
Sparql
Deze sectie behandeld niet het vervangen van de Sparql STB maar hoe de eigen apparatuur ingesteld kan worden voor het gebruik hiervan. De Sparql STB is een apart geval, het apparaat heeft namelijk de volgende eisen:
- Normaal internet toegang via VLAN34
- Specifieke toegang tot het Sparql Platform (185.6.48.0/26) via VLAN4
- Multicast routing vanaf VLAN4 naar het LAN waarin de Sparql STB zich bevind.
Voor het gemak van uitleg, wordt er vanuit gegaan dat de Sparql STB zich in het normale LAN segment bevind, daarmee is de eerste eis automatisch voldaan. De tweede eis is ook aan voldaan middels de static routes en iptables NAT routing uit de vorige sectie.
Deze sectie gaat zich verder richten op het multicast routen, hiervoor wordt het tooltje 'igmpproxy' gebruikt.
igmpproxy
Dit tooltje is helaas niet beschikbaar in de Debian/Ubuntu APT repositories en zal met de hand gedownload en gecompiled moeten worden als prerequisite. Na het commando sudo make install
wordt de tool geinstalleerd naar /usr/local/sbin/igmpproxy
en de voorbeeld config file naar /usr/local/etc/igmpproxy.conf
.
Note: Het tooltje komt zonder init scripts, deze moeten zelf geschreven worden of het tooltje moet vanuit een cronjob gestart worden. Het starten van igmpproxy wordt verder niet behandeld in dit document.
De configuratie van igmpproxy is verbazingwekkend simpel en het volgende voldoet om het werkende te krijgen:
/usr/local/etc/igmpproxy.conf
# Enable Quickleave quickleave # Eth0.4 Sparql IPTV VLAN phyint eth0.4 upstream altnet 213.75.167.0/24 altnet <local subnet> # Eth1 LAN interface: phyint eth1 downstream # Disable listening on other interfaces: phyint eth0.34 disabled phyint eth0 disabled
De optie Quickleave kan veilig aanstaan zolang er maar één Sparql STB aanwezig is in het netwerk. Mochten er meerdere zijn en dit problemen opleveren is het raadzaam om Quickleave weg te halen uit de configuratie. Verder is het nuttig om alle interfaces welke niet gebruikt worden voor Sparql uit te schakelen in de igmpproxy configuratie. Vervang het '<local subnet>' gedeelte met het subnet dat actief is op eth1.
rp_filter / sysctl
Met bovenstaande configuratie werken de IGMP query en response berichten zoals verwacht, echter komen de multicast streams niet binnen het LAN op. Na wat zoeken bleek dit de maken te hebben met de standaard waarde van de 'rp_filter' optie in sysctl. Deze waarde staat normaal op '1', wat betekend dat er een Response Validatie plaatsvind op enkel de interface waarop het packet binnen kwam. Om te zorgen dat deze validatie over alle interfaces plaatsvind dient dit op waarde '2' gezet te worden. De functie is ook uit te schakelen door de waarde op '0' te zetten, dit wordt echter afgeraden.
Om deze waarde aan te passen per interface. Om het alleen op de IPTV interface aan te passen is het volgende toegevoegd aan /etc/sysctl.d/99_local.conf
:
# Enable Sparql IPTV net.ipv4.conf.eth0/4.rp_filter = 2
Let op: de interface naam is hier eth0/4
in plaats van eth0.4
!
Hierna zou de multicast stream wel netjes het LAN op gestuurd moeten worden.
VoIP
VoIP van Tweak kan middels een standaard Asterisk installatie geconfigureerd worden. Hiervoor moet de Asterisk PBX kunnen communiceren met het Tweak VoIP platform, dit bevind zich in de volgende IP range: 82.197.223.32/27
De configuratie van Asterisk is uitermate uitgebreid en een vak apart en wordt hier verder niet behandeld.