VoIP - De meestvoorkomende problemen

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

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 ;)