Tweak Glasvezel

From Frack - Hackerspace Friesland
Jump to navigationJump to search

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.

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

Afbeelding Anoniem.png Fludizz
Fludizz Rol: deelnemer Deskundig met: GL-Inet, Glasvezel lassen, Iptables, Linux, Netwerken, OpenVPN, Python, RaspberryPi, Software Beginnend met: ENC28J60 Werkt aan: Geen projecten :(

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.

Afbeelding Anoniem.png Fludizz
Fludizz Rol: deelnemer Deskundig met: GL-Inet, Glasvezel lassen, Iptables, Linux, Netwerken, OpenVPN, Python, RaspberryPi, Software Beginnend met: ENC28J60 Werkt aan: Geen projecten :(

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:

  1. Managed Layer 2 switch welke zowel SFP's, 802.1q VLAN's als IGMP Snooping ondersteunt.
  2. 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

Icoon waarschuwing geel.svg Vervang de Genexis alleen indien er een switch beschikbaar is welke SFP's en 802.1q VLAN's ondersteunt óf een router welke SFP's ondersteunt beschikbaar is. Anders is het vereist om de Ethernet kabel rechtstreeks in de WAN van de router te verbinden.

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:

  • Bij een 100Mbit Genexis: een 100Base-BX module (Tx 1310nm, Rx 1550nm)
  • Bij een 1Gbit Genexis: een 1000Base-BX module (Tx 1310nm, Rx 1550nm)

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!

Fludizz zijn genexis open, met SC-SC koppelstuk en eigen fiber
Fludizz zijn genexis, dichtgemaakt met Dummy

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 op eth0.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.