VoIP
Telefoneren over IP: SIP, RTP, ENUM, NAT-problemen en Cisco-configuratie
1Wat is VoIP? Legacy en architectuur
VoIP (Voice over IP) splitst een gesprek in twee kanalen, zoals FTP control/data:
- 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
- RTP: de geencodeerde stem zelf
- UDP-pakketten met tijdstempel + volgordenummer
- Dynamische poort (onderhandeld via SIP)
- Peer-to-peer tussen de toestellen
Inline power (PoE): gelijkstroom over de standaard Cat-5 UTP-kabel, zodat een IP-telefoon geen aparte voeding nodig heeft.

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
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
3Gesprek opzetten tussen 2 VoIP-toestellen
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.
4ENUM: telefoonnummer naar SIP-adres
Gebruik het internationale nummer zonder +, spaties, haakjes en de (0): +32 (0)3/613.13.13 wordt 3236131313.
$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.be5NAT/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.

6Skype en SuperNodes
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
7Codecs, QoS en beveiliging
- 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.
8Cisco VoIP configureren (Packet Tracer, router 2811)
Router eerst een IP geven (bv. 192.168.10.1 /24) en de interface no shutdown.
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)# exitRouter(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 telefoonSwitch(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- option 150 = TFTP-server voor de telefoons (Cisco), 66 is de generieke variant
- ephone = fysieke telefoon, ephone-dn = nummer (directory number)
auto assignkoppelt ephones automatisch aan de dn's;ip source-address= waar telefoons registreren- Testen: bel van 501 naar 502
Nog niet klaar? Je kan altijd terugkomen.