VoIP - De meestvoorkomende problemen

Door WHiZZi op vrijdag 27 januari 2012 22:13 - Reacties (14)
Categorie: Categorieloos, Views: 14.250

Op mijn werk heb ik dagelijks te maken met bedrijven welke mij bellen die problemen hebben met hun VoIP. Hierdoor ben ik ook wel een beetje de VoIP-expert geworden van het technische team bij ons en wellicht kan ik deze kennis met jullie delen.

Als het bevalt, kan ik in de toekomst nog wat handige weetjes over de diverse telefooncentrales en configuraties vermelden.Opmerkingen dus graag in het commentaar.

VoIP
Wat is VoIP :? Nou, dat is Voice over IP (Internet Protocol). Oftewel, en is een datastream tussen een punt A en een punt B wat bestaat uit allemaal kleine UDP pakketjes waarin je gesprek zit. Deze datastream gaat dus over het Internet. Punt B kan een telefooncentrale zijn die het verkeer omzet naar het ouderwetse analoge signaal zodat je elkaar kan horen. Het kan ook een (VoIP) telefoontoestel zijn.
Punt A is meestal een trunk, oftewel een VoIP/SIP endpoint. Hier achter zit weer een uitgebreid systeem die het digitale VoIP omzet naar signalen die de carriers (KPN/Vodafone/T-Mobile etc) begrijpen. Dit zal overigens ook vaak weer digitaal zijn ;)

99% van de VoIP problemen ligt ook tussen punt A en punt B. Uiteraard kan het verder in het netwerk ook nog wel fout gaan, maar het cruciale punt zit tussen A en B. ;)

Verder is er nog een control channel (ook UDP en via poort 5060 over het algemeen) die waar onder andere de opdrachten voor één van de endpoints in zitten.

De meest voorkomende problemen
Op nummer 1, met stip:
:r NAT
Telefooncentrales zitten vaak op een intern IPv4 netwerk in een RFC1918 adresreeks. Daar is op zich niks mis mee. Zoals je uit bovenstaande tekst zou kunnen leiden, zit de spraak verpakt in kleine UDP pakketjes. Nou is één van de verschillen tussen TCP en UDP dat een UDP pakketje niet weet of deze is ontvangen. Grappig dat TCP pakketjes vaak worden vergeleken met een telefoongesprek terwijl een VoIP telefoongesprek over UDP gaat 8)7. In ieder geval wordt door punt A dus een hele rits aan UDP pakketjes verstuurd naar punt B, niet wetend of deze ooit zullen aankomen. Punt B op zijn beurt zal ook UDP pakketjes naar punt A sturen (want iemand aan Punt B zal ook wat willen zeggen -> upstream verkeer).

In een NAT omgeving (zonder SIP helper) wordt onthouden welk pakketje waar naar toe moet (of het nou TCP of UDP is) en waar het vandaan komt (intern IP adres). Deze tabel, want dat is het, kan dus ook vol raken. Als een tabel vol is, weet de NAT router niet meer waar een pakketje heen moet en voilà, daar valt een gedeelte van het gesprek weg. Ook als bijvoorbeeld een poort wordt gebruikt die gefirewalled is, valt dus één kant van het gesprek weg. Kortom, bij VoIP moet je een degelijke router hebben die bij voorkeur een SIP helper heeft. Mocht dit niet zo zijn, dan zou er een 'stateless' portforward gemaakt kunnen worden naar het IP adres van de Interne PBX en dan UDP poort 5060 en 10000 t/m 20000.
* Uitgezonderd centrales die 2 IP adressen gebruiken, daar mag geen SIP helper worden gebruikt.

Heel veel bedrijven hebben veel geld uitgegeven aan een dure telefooncentrale. Men koopt er dan een dure insteekkaart bij en gaat vervolgens VoIP gebruiken. Gezien men dan toch een routertje in de kast heeft staan gebruiken ze die maar en voilà, daar zijn de VoIP problemen! Kortom, koop een degelijke router of zorg voor voldoende kennis van netwerken voordat je aan VoIP begint!

DD/DID 7(8)7
Wat is DDI of DID vraag je je misschien af? Het betekent Direct Dial In of Direct Inward Dialing. In oude "telecomtermen" is dit een MSN nummer (en dan niet het Microsoft spul ;) ). Oftewel, in een inkomend telefoongesprek wordt het nummer meegestuurd wat gebeld wordt. Dit kan een VoIP-provider aan- of uitschakelen, afhankelijk van de centrale. Een welbekende FritzBox kan dus totaal niet omgaan met DDI/DID (geen enkele) terwijl een Draytek dit wel weer goed kan. Let hier dus op !

Fax / T.38 :?
VoIP is hoe dan ook, gevoeliger voor storingen in het stuk tussen A en B. Een drukke download (+slechte QoS) kan het VoIP-verkeer wegdrukken en vallen er delen van het gesprek weg. Mensen kunnen dit over het algemeen nog wel accepteren (mits niet teveel pakketten wegvallen), een fax heeft hier wat meer moeite mee vanwege dat het digitale geluiden zijn. Daar hebben ze gelukkig iets op bedacht, namelijk T.38. Als zowel Punt A als Punt B hebben besloten dat het een fax betreft en beide T.38 doen, wordt er een akkoord gegeven en verandert de normale UDP stream met Voice-data in een UDPTL stream met hierin digitale gegevens om een fax te versturen en een controle of een fax is aangekomen of niet. Kortom, voor fax is T.38 dus wel aan te raden. Of T.38 wordt ondersteund, ligt aan de gebruikte codec en aan Punt B. Om dezelfde FritzBox en Draytek te gebruiken; Een FritzBox kan wel T.38, een Draytek (nog) niet.

Bellen duurt langer
Het oude PTT/KPN telefonie spul werkte simpel. Elk knopje wat ingedrukt wordt genereert een toon en zo wordt er een telefoongesprek opgebouwd. VoIP kan dit niet en moet dus het gehele nummer ineens sturen. Vandaar dat het langer duurt voordat je toestel gaat bellen.

Delen van gesprek vallen weg :o
Zie het stukje onder fax. De router zal het te druk hebben of je internet verbinding is te druk.
Per gesprekskanaal kun je rekenen op 60 tot 100 Kbit/sec, afhankelijk van de gekozen codec.

Codecs :?
De meest gebruikte voor VoIP zijn G711alaw en G711ulaw waarbij de algehele afspraak stelt dat alaw voor Europa wordt gebruikt en ulaw voor USA. Een andere is G729 waarvoor een licentie moet worden betaald. Dit levert wel een hogere kwaliteit op.

Hoe ziet een SIP account eruit in UDP
Wireshark zelf? :P
Simpel beschreven:
B zegt: REGISTER Hallo, ik ben die en die
A antwoord: 200 OK, Hallo! Ik heb je verbonden OF 407 Je moet op een Proxy authenticeren
B zegt: 200 OK! of REGISTER Hallo, ik ben die en die !

Een inkomend gesprek:
A zegt: INVITE - Hier komt nummer +31xxxx die belt naar +31xxxx
B zegt: 200 OK
B zegt: 100 Trying - Ik ga het proberen
A zegt: 200 OK
B zegt: RINGING.. (= de toon die je hoort)
B zegt: 200 OK
A zegt: 200 OK
en de UDP datastream begint!
Einde gesprek:
B zegt: Bye (letterlijk)
A zegt: Ok! Bye (ook letterlijk)

Uitgaand gesprek:
B zegt: INVITE - Ik wil +31xxxx@pbx.isp.nl bellen vanaf +31xxxx (CallerID) met account die en die
A zegt: OK, 100 Trying
B zegt: OK!
A zegt: RINGING (weer die toon)
A zegt: 200 OK
B zegt: 200 OK
en de UDP datastream begint.

Dit was even in vogelvlucht hoe VoIP globaal werkt en wat de meestvoorkomende problemen zijn. Mocht je nog vragen hebben, laat het maar weten dan zal ik eens kijken of ik het kan antwoorden.

Op mijn eigen Engelstalige blog ga ik dieper in op centrales welke ik inmiddels heb getest en hun voor- en nadelen. Mocht je interesse hebben :)

Ik ben niet alwetend dus mocht je iets zien wat gewoon niet klopt, dan laat het ook even weten ;)

Volgende: Het leven van een muzikant on the road 07-'12 Het leven van een muzikant on the road
Volgende: Nieuwe VPS, nieuwe kansen part #1 05-'11 Nieuwe VPS, nieuwe kansen part #1

Reacties


Door Tweakers user Jape, vrijdag 27 januari 2012 23:51

Leuke blog, ik had absoluut geen idee van hoe VOIP op de achtergrond functioneerde. Weer wat geleerd! :)

Door Tweakers user -ko-, zaterdag 28 januari 2012 01:33

Heel veel geleerd. Dankjewel!

Door Tweakers user HenriM, zaterdag 28 januari 2012 10:32

Eindelijk weer eens een goede blog op Tweakers.net i.p.v. al die 'onzin-blogs'.

Door Tweakers user vanaalten, zaterdag 28 januari 2012 10:56

Yep, met bovenstaanden: interessant!

Door Tweakers user Kyletk, zaterdag 28 januari 2012 11:43

interessant, heb de werking hiervan woensdag nog op school gehoord, maar op de mannier dat jij uilegt toch veel eenvoudiger. ;)

Thx WHiZZi!

Door Tweakers user Gish, zaterdag 28 januari 2012 14:06

Ook eens met veel van bovenstaande reacties. Ik heb geen enkel benul hoe VoIP in elkaar zit en dit heeft me toch wat geleerd. Please post some more :)!

Door Tweakers user xx77qq, zaterdag 28 januari 2012 14:24

Is het niet zo dat voor de handshaking (REGISTER/INVITE/HELLO/ACK etc..) wel TCP gebruiken? Voor dat soort data is het robuustere en full duplex TCP wel zo fijn.

Bij de bandbreedte zou je kunnen vermelden dat bv. 64kbit aan upload en download nodig is.

Door Tweakers user WHiZZi, zaterdag 28 januari 2012 15:45

xx77qq schreef op zaterdag 28 januari 2012 @ 14:24:
Is het niet zo dat voor de handshaking (REGISTER/INVITE/HELLO/ACK etc..) wel TCP gebruiken? Voor dat soort data is het robuustere en full duplex TCP wel zo fijn.
Het kan wel, maar is standaard niet zo. Ik heb zojuist even getest, maar de INVITE/REGISTER etc komen echt via UDP 5060 binnen en niet via iets anders:
# tcpdump -Ann -s0 host 24.xxx.xxx.xxx and not tcp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

15:40:56.969545 IP 217.xxx.xxx.xxx.5060 > 24.xxx.xxx.xxx.40878: SIP, length: 907
E`...j..@..5...#............INVITE sip:mijnsipaccount01@172.16.255.100:5060 SIP/2.0
Via: SIP/2.0/UDP 217.xxx.xxx.xxx:5060;branch=z9hG4bK296dee3b;rport
From: "+316xxxxxxxx" <sip:06xxxxxxxx@pbx.isp.nl>;tag=as2942dfe7
To: <sip:mijnsipaccount01@172.16.255.100:5060>
Contact: <sip:06xxxxxxxx@217.xxx.xxx.xxx>
Call-ID: 68964a6b7361b89146a2ca0d4b2c0699@pbx.isp.nl
CSeq: 102 INVITE
User-Agent: ISP-PBX
Max-Forwards: 70
Date: Sat, 28 Jan 2012 14:40:56 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces
Content-Type: application/sdp
Content-Length: 336

v=0
o=root 30911 30911 IN IP4 217.xxx.xxx.xxx
s=session
c=IN IP4 217.xxx.xxx.xxx
t=0 0
m=audio 13940 RTP/AVP 8 0 3 18 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
Overigens is bovenstaande zonder DDI voor de slimmeriken onder ons ;)
Bij de bandbreedte zou je kunnen vermelden dat bv. 64kbit aan upload en download nodig is.
Als je G711a of G711ulaw gebruikt, dan ja. Andere codec heeft andere bandbreedte nodig ;)

[Reactie gewijzigd op zaterdag 28 januari 2012 15:50]


Door Tweakers user Loekie, zaterdag 28 januari 2012 17:16

Interessant blog, behoorlijk begrijpelijk uitgelegd. Wel een aantal aanvullingen±
DD/DID
Ehm, het zal in dit geval van implementatie afhangen, maar een fritzbox kan van lokaal geregisteerde SIP-accounts prima het gebelde nummer meenemen en geeft dit ook door aan aangesloten apparatuur.
Als het gaat om gedrag achter een centrale kan het anders zijn, een registratie op een PBX waar een aantal trunks samengevoegd zijn en waar de fritzbox via een sip-account aanhangt zal ws alleen de naam van het sip-accouint meegeven.

Bellen duurt langer
Kleine nuance, vroeger had je pulskeuze, dat duurde echt lang. Nu met toonkeuze gaat het sneller, maar in dit geval is jou endpoint niet de centrale, maar je lokale apparaat die in geval van voip idd het hele nummer meestuurd. Dit werd vroeger in centrale gedaan.
Dit is dan ook vaak de reden dat je het gedraaide nummer terughoort, de centrale deed dat niet.

Codecs
Vergeet de G.722 niet, deze codec gebruikt een groter frequentie bereik evenals meer bandbreedte om een natuurlijker geluid mee te geven. Dit is echt een mooi helder geluid. Voorwaarde is wel dat je randapparatuur het ook ondersteund.

verder: bookmarked :)

Door Tweakers user tlpeter, zondag 29 januari 2012 09:58

Ik heb wat commentaar over de opmerking dat G.729 een betere codec is om dat deze een licentie nodig zou hebben.

Meestal heb je een licentie nodig maar dat is merk afhankelijk.
maar G.729 heeft geen betere kwaliteit, eerder slechter (blikkerig)
Dit komt omdat G.729 gecompromeerd is en G.711 niet.
Voordeel is meer gesprekken over de zelfde bandbreedte.

Door Tweakers user WHiZZi, zondag 29 januari 2012 11:42

dank tlpeter, dat wist ik dan weer niet ;)
@Loekie: G722 heb ik nog niet gezien, wellicht een goede om ook eens in te duiken ;)
Verder kan een FritzBox echt geen DDI, wordt ook toegegeven door AVM dat dit er niet in zit en ook niet van plan zijn om te bouwen. Je kunt inderdaad wel meerdere SIP trunks configureren en die toewijzen aan een toestel of fax.
Stuur je een DDI mee bij inkomend gesprek, dan geeft de FritzBox altijd een Busy Here terug, ongeacht hoe je deze instelt (heb ik heel veel keren getest) ;)

Door Tweakers user Loekie, zondag 29 januari 2012 15:58

@WHiZZi: In-band voorkeur als ik het zo zie, gezien het gebruik kan ik me voorstellen dat AVM het niet doet. Fritzboxen zijn consumentengericht en DDI heeft met name usecases voor zakelijk gebruik. Het is ook een functie die je tegenwoordig inderdaad eerder zou oplossen door verschillende sip-trunks te gebruiken.

Weer wat geleerd :)

Overigens, ik denk dat je hem al kent, maar toch: voip-info.org/wiki

[Reactie gewijzigd op zondag 29 januari 2012 16:03]


Door Tweakers user WHiZZi, zondag 29 januari 2012 20:28

Loekie: Inderdaad, AVM positioneert de FritzBoxen bij consumenten. DrayTek zit meer op het MKB ;)

En de voip-info pagina is mij (uiteraard) bekend ;).

Door Tweakers user FatalZero, maandag 30 januari 2012 12:35

Weer een top blog, met veel plezier gelezen!

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.