Netwerken 3
00
Hoofdstuk 8

VoIP

Telefoneren over IP: SIP, RTP, ENUM, NAT-problemen en Cisco-configuratie

0%
voltooid

1Wat is VoIP? Legacy en architectuur

Legacy telefonieBetekenis
PSTNPublic Switched Telephone Network: klassiek circuit-geschakeld telefoonnetwerk
E.164ITU-standaard voor telefoonnummers (max 15 cijfers, landcode vooraan)
DTMFDual-Tone Multi-Frequency: de "touch tones" bij toetsen indrukken
PBXPrivate Branch Exchange: bedrijfstelefooncentrale die interne toestellen verbindt en naar het PSTN routeert. Asterisk = een volledige PBX in software (Linux/BSD/macOS).

VoIP (Voice over IP) splitst een gesprek in twee kanalen, zoals FTP control/data:

Controlekanaal (signaling)
  • Zet het gesprek op, beheert en beeindigt het
  • Protocollen: SIP, H.323, SCCP, XMPP, Skype
  • Vaste well-known poort (SIP 5060, H.323 1720)
  • Bevat wie belt wie + codec + RTP-poort
Mediakanaal (voice data)
  • RTP: de geencodeerde stem zelf
  • UDP-pakketten met tijdstempel + volgordenummer
  • Dynamische poort (onderhandeld via SIP)
  • Peer-to-peer tussen de toestellen
ControleprotocolKenmerk
H.323ITU-standaard, gebruikt ASN.1, TCP+UDP 1720
SIPHTTP-achtige headers, UDP/TCP 5060
SCCP ("Skinny")Cisco-eigen, lichtgewicht, praat met de Cisco Call Manager
SkypeEigen protocol, gebaseerd op Kazaa (P2P)
XMPPXML-gebaseerd, ontstaan uit Jabber; geen centrale master-server, iedereen mag een server draaien

Inline power (PoE): gelijkstroom over de standaard Cat-5 UTP-kabel, zodat een IP-telefoon geen aparte voeding nodig heeft.

Twee kanalen: SIP regelt het gesprek, RTP draagt de stem.
Twee kanalen: SIP regelt het gesprek, RTP draagt de stem.
+25 XP

2SIP: Session Initiation Protocol

  • Tekstgebaseerd, syntax van HTTP en SMTP; UDP (of TCP) poort 5060
  • SIP-adres lijkt op een mailadres: sip:jan.celis@kdg.be
  • Headers (From, To, ...) voor call-routering; body = SDP (Session Description Protocol): codec + RTP-poorten
  • Commando's: INVITE, ACK, BYE, REGISTER, ...
  • Responses (zoals HTTP): 1xx info, 2xx succes, 3xx redirect, 4xx client-fout, 5xx server-fout, 6xx globale fout
NetwerkelementRol
User AgentHet eindpunt: softphone of hardphone
SIP proxyRouteert SIP-berichten naar de bestemming
RegistrarNeemt REGISTER aan en bewaart mapping SIP-adres naar IP in de location database (vergelijk DNS)
Registratie en routering
Stap 1 van 4
REGISTER

Een SIP-adres is niet gebonden aan een IP. Jan stuurt REGISTER (sip:jan@kdg.be, IP 10.10.10.1) naar de proxy/registrar.

  • Eerste proxy vinden: outbound proxy (manueel of via DHCP) of DNS lookup van het host-deel (kdg.be, via SRV/A-record)
  • Authenticatie (digest): REGISTER, 401 Unauthorized (nonce + realm), REGISTER opnieuw met username + MD5-digest van (request, password, nonce), 200 OK
  • Plain SIP heeft geen authenticatie, integriteit of confidentialiteit. Oplossing: SIP over TLS (X.509-certificaten, HMAC voor integriteit, encryptie) en SRTP voor media; firmware/config met RSA-handtekening
+25 XP

3Gesprek opzetten tussen 2 VoIP-toestellen

SIP-gesprek (vereenvoudigd)
Stap 1 van 7
INVITE

Beller stuurt INVITE sip:jan@10.10.10.1 (via proxy) met SDP: codecs + eigen RTP-poort.

RTP (RFC 1889, gebruikt door H.323 en SIP): UDP-pakketten met tijdstempel (jitter/synchronisatie) en volgordenummer (herordenen, verlies detecteren). Eén pakket bevat meerdere samples (+/- 20 ms) en codec-info. Poort wordt dynamisch onderhandeld. RTP en NAT/PAT gaan niet goed samen.

+25 XP

4ENUM: telefoonnummer naar SIP-adres

Stappen
Stap 1 van 5
Volledig E.164-nummer

Gebruik het internationale nummer zonder +, spaties, haakjes en de (0): +32 (0)3/613.13.13 wordt 3236131313.

text
$ORIGIN 3.1.3.1.3.1.6.3.2.3.e164.arpa.
IN NAPTR 100 10 "U" "E2U+sip" "!^.*$!sip:jan.celis@kdg.be!i" .
; "U"        = resultaat is een URI
; E2U+sip   = ENUM naar SIP-dienst
; !regex!vervanging! = het hele nummer wordt sip:jan.celis@kdg.be
Antwoord van DNS: nummer wordt sip:jan.celis@kdg.be
+25 XP

5NAT/PAT en firewalls: het probleem en de oplossingen

Probleem 1 (signaling): een telefoon achter NAT (10.10.10.1) stuurt REGISTER met Contact: sip:jan@10.10.10.1. De router herschrijft het bron-IP in de IP-header naar het publieke adres, maar niet het private adres in de SIP-body/header. De ander kan niet terugbellen naar een privé-adres.

Probleem 2 (media): RTP gebruikt dynamische poorten die in SIP/SDP onderhandeld worden. De NAT/firewall kent die niet, laat inkomend verkeer niet door en het gevolg is eenrichtingsaudio of geen audio. Firewalls gaan uit van een end-to-end (niet-NAT) internet. Ook de stateful inspectie faalt als control en media een ander pad volgen: media heeft dan geen state en wordt geblokkeerd.

Twee telefoons achter een router: privé-adressen in de SIP-boodschap zijn onbereikbaar van buitenaf.
Twee telefoons achter een router: privé-adressen in de SIP-boodschap zijn onbereikbaar van buitenaf.
TechniekHoe werkt het
STUN (Simple Traversal of UDP through NAT)Request/response met een STUN-server op het internet. Het antwoord bevat het publieke IP + UDP-poort zoals de server ze ziet. Client leert zo zijn publieke adres, het NAT-type en de gemapte poort, en zet die in SIP/SDP. Werkt niet bij symmetrische NAT.
TURNFallback als STUN faalt: de media wordt via een relay-server gestuurd (kost bandbreedte, maar werkt altijd).
ICEVerzamelt kandidaat-adressen (lokaal/host, server-reflexive via STUN, relayed via TURN; IPv4 en/of IPv6), test de paden en kiest het beste werkende paar.
SIP ALG / protocol-aware firewallRouter/firewall begrijpt SIP, herschrijft private adressen in SIP/SDP en opent dynamisch de RTP-poorten (Linux: sip-conntrack-nat, h323-conntrack-nat). Vaak foutgevoelig.
Port forwarding / statische mappingSIP-poort 5060 en een RTP-poortbereik manueel doorsturen naar de telefoon.
Media proxy (Asterisk, siproxd)Applicatieniveau-proxy die RTP voor beide kanten doorgeeft, dus beide telefoons praten enkel met de proxy.
SBC (Session Border Controller)Gateway aan de rand van het netwerk: schakelt calls door tussen intern, PSTN en internet, doet NAT-traversal, beveiliging en codec-conversie (bv. bij Microsoft Teams).
Tunnel/VPNVia een ongefilterd, globaal uniek IP-adres (eender welke VPN).
+25 XP

6Skype en SuperNodes

Skype door NAT/firewall
Stap 1 van 4
Client start op

Verbindt uitgaand met een SuperNode (publiek IP, snel). Zo staat de NAT-mapping open.

  • Elke Skype-client met publiek IP en voldoende bandbreedte kan zelf SuperNode worden: je doet onbewust relay-werk
  • Microsoft Teams: gebruikt een SBC als gateway naar het telefoonnetwerk en internet
+25 XP

7Codecs, QoS en beveiliging

CodecBitrateOpmerking
G.71164 kbps (PCM)ITU, referentiekwaliteit
G.72616-40 kbps (ADPCM)Adaptive Differential PCM
GSM13 kbpsOok in mobiele telefoons
G.729, G.723.1laagPatent- en licentieproblemen
Speex, iLBCvariabelOpen source
Kleine pakketten van 50 tot 250 bytes. Niet elk product ondersteunt elke codec (onderhandeld via SDP).
QoS-factorBetekenis en gevolg
Latency (vertraging)Eén-weg > ~150 ms stoort het gesprek (praten door elkaar)
JitterVariatie in aankomsttijd: opgevangen met een jitter buffer (kost extra vertraging); RTP-tijdstempels helpen
Packet lossVerloren UDP-pakketten worden niet herstuurd: stem valt weg/kraakt; RTP-volgordenummer detecteert het
  • Voice VLAN: data en voice logisch scheiden (zelfde fysieke infrastructuur) geeft eenvoudigere QoS, schaalbaarheid, beheer en veiligheid. Fysieke scheiding is veiliger maar duurder.
  • UDP is gekozen voor media omdat vertraging erger is dan een verloren pakketje (hersturen komt te laat).
  • Signaalbeveiliging: TLS (bidirectionele PKI = authenticatie, HMAC = integriteit, encryptie = confidentialiteit). HMAC met MD5/SHA1, encryptie met AES/3DES.
+25 XP

8Cisco VoIP configureren (Packet Tracer, router 2811)

Volgorde
Stap 1 van 6
Router interface + IP

Router eerst een IP geven (bv. 192.168.10.1 /24) en de interface no shutdown.

text
Router(config)# ip dhcp pool voiptest
Router(dhcp-config)# network 192.168.10.0 255.255.255.0
Router(dhcp-config)# default-router 192.168.10.1
Router(dhcp-config)# option 150 ip 192.168.10.1   ! TFTP-/Call Manager-adres voor de telefoons
Router(dhcp-config)# exit
Router (2811): DHCP voor de telefoons
text
Router(config)# telephony-service
Router(config-telephony)# max-dn 24                      ! max aantal directory numbers (nummers)
Router(config-telephony)# max-ephones 24                 ! max aantal telefoons
Router(config-telephony)# ip source-address 192.168.10.1 port 2000   ! adres waarop telefoons registreren (SCCP, poort 2000)
Router(config-telephony)# auto assign 1 to 24            ! telefoons automatisch aan nummers koppelen
Router(config-telephony)# exit
Router(config)# ephone-dn 1
Router(config-ephone-dn)# number 501                     ! telefoonnummer 501
Router(config)# ephone-dn 2
Router(config-ephone-dn)# number 502
Router(config)# ephone-dn 3
Router(config-ephone-dn)# number 333                     ! bv. voor analoge telefoon
Router: telefonieservice en nummers
text
Switch(config)# interface range fa0/1 - 24
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport voice vlan 1         ! voice-verkeer in eigen (voice) VLAN
Switch: voice VLAN op de poorten naar de telefoons
  • option 150 = TFTP-server voor de telefoons (Cisco), 66 is de generieke variant
  • ephone = fysieke telefoon, ephone-dn = nummer (directory number)
  • auto assign koppelt ephones automatisch aan de dn's; ip source-address = waar telefoons registreren
  • Testen: bel van 501 naar 502
+25 XP
Volgende stap

Nog niet klaar? Je kan altijd terugkomen.

Leer de begrippen