Table of Contents

Abstract 1

Dankwoord 2

Introductie 3 Situering 3.1

Inleiding 3.1.1 Huidige werking 3.1.2

Nieuwe werking 3.1.3

Beschrijving stagebedrijf 3.2

Opgave 3.3

Algemene beschrijving van het project 3.4

Technisch 4

Introductie 4.1 Beschrijving gevolgde ontwikkelproces 4.2 Analyse en requirements 4.3 Probleem en oplossing 4.4 Configuraties 4.5 Nieuw in Asterisk 13/FreePBX 13 4.6 Basis functionaliteiten Asterisk 4.7 Testing 4.8 Gebruikte technologieën/tools/protocollen 4.9 Conclusie en samenvatting 5 Geraadpleegde bronnen 6 Glossary 7

2 Abstract

Mijn opdracht is om op Asterisk 13 Res_pjsip werkende te krijgen en te vergelijken met Chan_sip. Chan_sip en Res_pjsip zijn 2 SIP drivers die Asterisk gebruikt. Nagaan of het op dit moment al de moeite loont om te upgraden naar Asterisk 13 met Res_pjsip. Controleren of de huidige functionaliteiten van Chan_sip kunnen behouden worden bij Res_pjsip en welke nieuwe functies er beschikbaar zijn. Daarnaast ook een stresstest doen met SIPp bij Res_pjsip op Asterisk 13.

Dankwoord

Ik zou graag mijn stagebedrijf Intellinet willen bedanken voor de stageplaats en de goede en leuke samenwerking. Verder wil ik ook graag mijn externe promotor Thijs Vandecasteele bedanken voor de interessante opdracht en voor de hulp tijdens de stage. Bedankt aan Maarten Luyts als interne promotor voor de feedback van mijn verslagen. Tot slot ook dank aan Tim Dams voor de begeleiding en tips om het maken van deze scriptie.

3 Introductie

Situering

Inleiding

Voip ofwel Voice over ip is een naam die bij veel mensen nog niet echt bekend is terwijl het bij bedrijven al goed ingeburgerd is. Voip telefonie is eigenlijk de huidige manier van bellen via het internet. Wanneer de meeste mensen dit horen denken ze direct aan skype, maar bellen via internet kan ook via speciale telefoontoestellen die het SIP protocol ondersteunen. Dit is een veel goedkopere oplossing dan de huidige telefooncentrales. Je hebt dan enkel SIP toestellen nodig en een internet verbinding. Dit heeft als voordeel dat je geen dure hardware moet kopen en je vestigingen niet afhankelijk zijn van één bepaalde plaats. Bij voip zit je telefooncentrale in de Cloud en kun je van elke locatie ter wereld waar je een internet verbinding hebt connectie maken met je telefooncentrale. Je kunt dus tussen 2 verschillende vestigingen "gratis" bellen, zelfs al bevinden die zich in een ander land. Eén van de meest voorkomende opmerkingen van voip is dat de geluidskwaliteit slecht zou zijn. Omdat voip via internet werkt is het afhankelijk van je internet verbinding, dus als je veel data aan het gebruiken bent en er bijna geen bandbreedte meer over is voor voip kan het zijn dat de geluidskwaliteit vermindert. Dit probleem is simpel op te lossen door QOS (Quality of Service) in te stellen zodat het voip verkeer voorrang krijgt op andere services. Intellinet biedt zowel de SIP telefoons als de Cloud telefooncentrale aan. Verder zorgt Intellinet ook voor de juiste configuratie van je netwerk.

Als Voip telefooncentrale heb ik gebruik gemaakt van Asterisk en FreePBX. Asterisk is een opensource platform dat alle gesprekken verwerkt en handige functionaliteiten aanbiedt, terwijl FreePBX de GUI is om Asterisk eenvoudig te kunnen beheren.

Huidige Werking

Momenteel maakt Intellinet gebruik van Asterisk versie 11 met de Chan_sip driver. Dit is een stabiele versie waar al de huidige functies van de Chan_sip beschikbaar zijn. De release date van Asterisk 11 is 25/10/2012 en biedt Long Term Support (LTS), dit wil zeggen dat deze versie volledige support biedt voor 4 jaar. Dit wil ook zeggen dat de laatste security fix 25/10/2016 is en er daarna geen support meer wordt geleverd. Hierdoor moet er gekeken worden naar een mogelijke upgrade van Asterisk naar versie 13. Versie 13 biedt ook Long Term Support aan tot 24/10/2018. Voor de frontend, de GUI maakt Intellinet gebruik van FreePBX. FreePBX is een opensource GUI om Asterisk te beheren. Asterisk en FreePBX vormen samen de PBX. Intellinet biedt 2 soorten van PBX aan, namelijk een smart en een ingenious PBX.

Nieuwe werking

De nieuwe werking zou gebruik maken van Asterisk 13 met de nieuwe Res_pjsip driver. Voor de GUI zou FreePBX versie 13 gebruikt worden.

4 Beschrijving stagebedrijf

Intelinet is een provider met meer dan 4000 gebruikers. Intellinet richt zich vooral op bedrijven in de Belgische markt. Het hoofdkantoor bevindt zich in Antwerpen maar Intellinet is aanwezig op verschillende locaties over heel de wereld. Intellinet biedt 2 soorten van PBX aan, namelijk een Smart PBX en een Ingenious PBX. Bij een Smart PBX krijg je alle basisfunctionaliteiten van een PBX en een gedeelde Cloud met andere gebruikers terwijl je bij een Ingenious PBX dezelfde functionaliteiten krijgt en toegang tot Fop2 (web overzicht van je gesprekken) in een private Cloud omgeving.

Opgave

Onze "Ingenious PBX" is gebaseerd op het open source Asterisk platform. Tot voor kort werkte Asterisk met Chan_sip, maar sinds kort is er nu ook Res_pjsip. Deze SIP driver is modulair, en daardoor lichter maar ook flexibeler dan zijn voorganger. Het is nu duidelijk dat dit de SIP driver van de toekomst wordt.

De opdracht bestaat erin om beide drivers te vergelijken:

Kunnen we met Res_pjsip de huidige functionaliteiten behouden? Zijn er nieuwe functionaliteiten die interessant kunnen zijn? Wat met security? Stress tests met SIPp

Algemene beschrijving van het project

Het is mijn opdracht om 2 verschillende systemen op te zetten, één met Chan_sip en één met Res_pjsip. Als deze twee systemen werken, de functies van beiden vergelijken en de functies van de "oude" sip driver Chan_sip implementeren in de "nieuwe" sip driver Res_pjsip. Hiernaast een stresstest doen met SIPp bij Res_pjsip op Asterisk 13.

5 Technisch

Introductie

Om te kunnen bellen heb je een telefooncentrale nodig, bij voip noemt dit een PBX. De PBX verwerkt alle telefoongesprekken. De PBX die wij gebruiken is gebaseerd op 2 platformen, Asterisk en FreePBX. Een voip gesprek maakt gebruik van 2 protocollen, SIP voor het initialiseren/signalisatie van het gesprek en RTP voor de audio en/of video -stream. Om de gesprekken de verwerken op de PBX wordt er gebruik gemaakt van een channel driver zoals Res_pjsip. Om met je Voip telefooncentrale te kunnen bellen naar mensen die geen Voip gebruiken, wordt er een verbinding gemaakt naar een proxy server die de gesprekken doorstuurt naar andere ISP providers, een ISP provider is een bedrijf / organisatie die telefonie aanbiedt. Een paar afkortingen die ik in dit deel vaak ga gebruiken zijn:

Chan_sip: dit is de "oude" SIP driver van Asterisk Res_pjsip: dit is de nieuwe SIP driver die ik moest testen. PBX: dit is de telefooncentrale (Asterisk + FreePBX) Extensie: dit is een gebruiker op de PBX Endpoint: dit is de SIP telefoon

Beschrijving gevolgde ontwikkelproces

De eerste dag bij Intellinet hebben we kennis gemaakt met wat een voip gesprek allemaal inhoudt, hoe de communicatie verloopt tussen de bellers. We hebben ook een uitleg gekregen hoe de netwerkstructuur van Intellinet in elkaar zit. Later die dag hebben we 2 SIP telefoons ingesteld op een demo PBX om zo kennis te kunnen maken met de configuratie die erbij komt kijken. Na het instellen en een eerst gelukt gesprek hebben we een paar functies die een PBX aanbiedt uitgeprobeerd, onder andere music on hold, follow me, voicemail en call transfer. Later meer over deze functies.

Om verbinding te kunnen maken met de demo PBX en eender welke interne host van Intellinet moesten we een proxy verbinding opzetten. Om verbinding te maken met de proxy heb ik gebruik gemaakt van de opensource applicatie putty. Putty zet een ssh verbinding op naar de firewall van Intellinet. Om dan via de command line verbinding te maken met een host kun je gewoon een ssh verbinding starten. Om met de browser firefox verbinding te maken met de GUI van de PBX heb ik de extensie FoxyProxy geïnstalleerd. Voor chrome kun je ook gebruik maken van FoxyProxy.

De tweede dag ben ik begonnen met het aanmaken van mijn eigen PBX. Om dit te doen moest ik eerst een virtuele machine aanmaken op de Vsphere server van Intellinet. Bij het aanmaken van de virtuele machine moest ik het OS kiezen wat een gebaseerd OS is, namelijk CentOS. Om van deze machine een PBX te maken moet je er Asterisk op installeren. Omdat we gebruik willen maken van een GUI gebruiken we een FreePBX Distro ISO om de virtuele machine op te starten. In FreePBX Distro zit Asterisk en FreePBX (GUI) zodat we dat niet afzonderlijk hoefden te installeren. Bij de eerste configuratie van de virtuele machine was er het probleem dat er via de webpagina van Vsphere geen toegang was tot de console. Om dit probleem op te lossen moest ik de VMware Sphere client op mijn pc installeren. Er kon alleen maar ingelogd worden met het root account van Vsphere, hiervoor moest er in de proxy verbinding van putty nog 2 tunnels aangemaakt worden. Hierna kon er ingelogd worden met het root account en console worden geopend.

De eerste stap na het installeren van de PBX is het aanmaken van extensies voor elke gebruiker (telefoon). Dan moest er een trunk (verbinding) aangemaakt worden naar de proxy zodat je ook met andere mensen kunt bellen die geen voip gebruiken. Om te kunnen bellen moet je instellen wat er moet gebeuren met inkomende en

6 uitgaande gesprekken. Dit is niet nodig om te kunnen bellen tussen 2 toestellen die met dezelfde PBX verbonden zijn. Voor een inkomend gesprek stel je in bij welke extensie(s) er gebeld moeten worden. Voor een uitgaand gesprek selecteer je de trunk die gebruikt moet worden en welke nummers met welke prefix er gebeld mogen worden, bv. "03" nummers. Hierna heb ik dan 2 telefoons verbonden met de PBX door in te loggen met hun gebruikersnaam (extensie) en wachtwoord.

Figuur 1.1: standaard opstelling voip netwerk

Verder heb ik de PBX uitgebreid met Fop2. Fop2 oftewel Flash Operator Panel 2 is een extra GUI om alle telefoongesprekken te beheren.

Toen ik de eerste keer een gesprek startte bleek dat er geen audio (RTP) was tijdens het gesprek, dus heb ik een aantal packet captures gemaakt op de PBX en de endpoints (telefoons).

Om de packet capture op de PBX te maken heb ik gebruik gemaakt van tcpdump met het commando: tcpdump -w Capture.pcap -i eth0 -s 0. Hier wordt geluisterd naar pakketjes op de interface eth0 en wordt alles opgeslagen in de pcap file met naam Capture. Om de captures van de PBX te halen heb ik gebruik gemaakt van WinSCP. Echter kon er geen rechtstreekse verbinding gemaakt worden door de proxy. Daarom moesten de captures eerst gekopieerd worden naar de firewall met het commando: "scp [email protected]:PBX.pcap Firewall.pcap". Dit commando wordt uitgevoerd vanop de Firewall, daarna kan met WinSCP de pcap file van de firewall gehaald worden.

Op de telefoon (Yealink) kan je een packet capture maken via Settings -> Configuration -> Pcap Feature.

Figuur 1.2: Pcap nemen op Yealink telefoon

7 Uit deze packet captures bleek dat de PBX het private ip adres van de endpoints gebruikt voor de audio, dus heb ik een aantal instellingen op de PBX proberen aanpassen, onder andere RTP Symetric, Rewrite Contact en Force rport. Volgens de documentatie van Asterisk zouden dit de nieuwe instellingen voor NAT moeten zijn sinds Asterisk 13. Deze instellingen bleken echter niet te helpen dus heb ik nog veel meer instellingen getest dat met NAT of RTP te maken kunnen hebben maar telkens zonder succes.

Om NAT te helpen kun je een STUN server instellen die helpt bij het bepalen van het publieke ip adres. Ik heb als STUN server "stun.callwithus.com" genomen en deze ingesteld op de PBX en de endpoints maar weeral zonder resultaat. Na vele tests met Res_pjsip bij Ipv4 bleek dat het audioprobleem door NAT momenteel niet op te lossen viel.

Het concrete probleem met Res_pjsip bij Ipv4 is dat de telefoons op het kantoor staan en de PBX waarmee ze verbonden zijn in het datacenter staat. Bij IPV4 wil dit zeggen dat zowel de PBX als de telefoons 2 ip adressen hebben, namelijk een privaat en een publiek ip adres. NAT wordt hierbij gebruik om het privaat ip adres om te zetten naar een publiek ip adres. Enkel dit publieke ip adres kan op "het internet" gebruikt worden om te communiceren. Bij Res_pjsip wordt deze omzetting niet correct gedaan en daarom stuurt de PBX de audio naar het privaat ip van de telefoon.

Figuur 1.3: Opstelling telefoon en PBX achter NAT

Om dit probleem met NAT te vermijden heb ik een PBX ingesteld op een raspberry pi namelijk RasPBX. Hiermee kon ik de PBX en de telefoons in hetzelfde netwerk plaatsen zodat er geen gebruikt meer werd gemaakt van NAT. Na het registreren van de telefoons op de RasPBX met Ipv4 werkte alles perfect en was er audio. Dit is echter geen praktische oplossing want je kunt niet bij elke klant een PBX installeren in hun eigen netwerk.

Hierbij besloot ik om het over een andere boeg te gooien en iets nieuws uit te proberen, namelijk Ipv6. Het voordeel van Ipv6 is dat het geen NAT gebruikt en de ip adressen van de telefoons en de PBX rechtstreeks bereikbaar zijn vanop het internet. Hiervoor moest er op de virtuele machine (PBX) wel een nieuwe netwerkkaart ingesteld worden omdat de huidige in het private Vlan zat en niet in het publieke Vlan. Dit was redelijk eenvoudig in te stellen via de Vsphere web client. Om Asterisk met Res_pjsip te laten luisteren naar Ipv6 moest het bind adres nog aangepast worden. Momenteel is daar nog geen optie voor voorzien in de GUI dus moest dit manueel aangepast worden in de file "pjsip.transports_custom.conf". Door in deze file het bind adres op :: te zetten, luistert Asterisk nu naar inkomende Ipv6 en Ipv4 adressen. Voor de juiste configuratie zie hoofdstuk "Configuraties".

De telefoons krijgen normaal automatisch een Ipv6 adres van de DHCP server, op voorwaarde dat de router correct geconfigureerd is.

Nadat alles geconfigureerd was om gebruik te maken van Ipv6 bij Res_pjsip was ik zeer teleurgesteld toen bleek dat er ook geen audio was tijdens het gesprek. Na het opzoeken van dit probleem en na de genomen pakket captures op de PBX bleek dat de pakketjes niet aankomen op de telefoons en er een error "destination unreachable(port unreachable)" wordt terug gestuurd. Na het verder onderzoeken van de pakketjes blijkt dat de PBX bij de invite wel zijn Ipv6 adres doorstuurt maar als adres type Ipv4 gebruikt. Dit kan nog een bug zijn in Asterisk omdat Res_pjsip nog niet optimaal werkt met Ipv6 bij Asterisk 13.

8 Het testen van Ipv6 bij Chan_sip had meer succes, hier werkte alles meteen en kon er uitgebeld worden met een trunk die geregistreerd is met Ipv4.

Nu bleek dat Ipv6 ook niet werkte bleek er nog maar een optie over te blijven, de PBX een publiek Ipv4 adres te geven. Dit was niet zoveel werk omdat de PBX al een netwerkkaart in het publieke Vlan had. Na de juiste configuraties bleek alles te werken met audio. Deze oplossing is aanvaardbaar om te testen maar is weer niet praktisch voor elke klant omdat Ipv4 adressen schaars zijn, later meer hierover. Verder is een publiek ip adres ook niet zo veilig omdat het dan rechtstreeks bereikbaar is vanop het internet. Als je de Asterisk console opent zie je meerdere meldingen van personen die met een bepaalde reeks extensies proberen te registreren op je PBX.

Figuur 1.4: Onbekende proberen te registreren op PBX

Op het moment dat Res_pjsip werkte met een publiek Ipv4 adres hadden we op kantoor 2 video-telefoons staan. Er was dus de mogelijkheid om Res_pjsip ook te testen bij een video gesprek. Dit was helaas ook geen succes omdat er in FreePBX geen instellingen bij Res_pjsip zijn voor video-codecs. Bij de "oude" SIP driver Chan_sip werkte het na het aanpassen van de video-codecs en kon er zelfs een video gesprek gemaakt worden via Ipv6. Vanaf dit moment stond het zeker vast dat Asterisk 13 en FreePBX 13 met Res_pjsip op sommige vlakken helemaal niet werkten en het geen goed idee zou zijn om nu al Res_pjsip in productie te gebruiken.

Daarom heb ik Res_pjsip en Chan_sip getest bij vorige versies van Asterisk en FreePBX. Hierbij kwam ik tot de constatatie dat Res_pjsip bij geen enkele versie van Asterisk en FreePBX werkt achter NAT. Er is dus nog werkt aan Res_pjsip om het even goed te krijgen dan Chan_sip, er ontbreken namelijk nog te veel belangrijke functies en instellingen zoals: duidelijke NAT instellingen, ondersteuning voor video, instellingen voor Ipv6, ... .

Om een goede vergelijking te maken welke functies er werken bij welke versie heb ik mijn resultaten in een tabel gegoten. Functies in het rood zijn niet gelukt en in het groen wel. Vakjes in het grijs zijn niet van toepassing, meerdere toestellen/extensie wordt niet ondersteund bij Chan_sip.

Figuur 1.5: Resultaten bij verschillende versies Asterisk/FreePBX

9 Als je de webpagina van FreePBX opent, merk je direct dat overal de naam FreePBX wordt gebruikt en overal het logo te zien is (groene kikker). Veel bedrijven gebruik FreePBX maar willen wel hun eigen logo gebruiken en de stijl van de pagina aanpassen. FreePBX heeft hiervoor een programma gestart namelijk het OEM programma. Dit programma maakt een persoonlijke ISO file met je eigen logo, een aangepaste startpagina en aangepaste drop down menu's. Hiervoor moet je wel een éénmalige kost voor het maken van de ISO betalen en een jaarlijks bedrag.

Figuur 1.6: Originele lay-out FreePBX

Omdat ik geen aangepaste ISO file wou gebruiken maar toch een gepersonaliseerde PBX wou hebben ben ik gaan kijken in de lay-out files van FreePBX of ik daar iets kon aanpassen. Na enige tijd zoeken ben ik dan een map tegengekomen waar de logo's van FreePBX staan namelijk in "/var/www/html/admin/images". Na het onderzoeken van de afbeeldingen heb ik er enkele aangepast met logo's van Intellinet. Dit zorgde eerst niet voor verandering, dus heb ik FreePBX herstart met het volgende commando: "fwconsole reload". Hierna waren de logo's wel aangepast. Er was echter nog een probleem: als men op de logo's klikt wordt de website van FreePBX geopend. FreePBX 13 is geschreven in PHP en ging ik dus op zoek naar PHP files. In de map "/var/www/html/admin/views" vond ik dan de file's "footer_content.php " en "menu.php". Hierin de link url aanpassen was de oplossing.

In het tabblad van de browser stond nog de tekst FreePBX. Dit heb ik kunnen aanpassen door in de console het commando "mysql -e 'update freepbx_settings set value="Intellinet" where keyword="BRAND_TITLE";' " in te geven.

Verder heb ik nog de welkomsttitel en de dashboardtitel aangepast in de files "main.php" en "Overview.php".

10 Figuur 1.7: Aangepaste lay-out FreePBX

Al deze aanpassingen hebben FreePBX wel gepersonaliseerd, maar telkens je een update van een module installeert worden alle wijzigingen ongedaan gemaakt. FreePBX heeft daarom ook een ingebouwde security signing. Van zodra je dus een bestand aanpast wordt hiervan een melding gegeven op het dashboard van FreePBX.

Figuur 1.8: Security Warning bij het aanpassen van de bestanden

Je kunt de security signing wel uitzetten in de advanced instellingen, waarna de melding verdwijnt. Verder blijft er nog een security warning melding bovenaan de pagina staan, maar die verdwijnt na het herladen van de signatures met de volgende commando's:

fwconsole chown fwconsole ma refreshsignatures fwconsole reload

Figuur 1.9: Security Warning bovenaan de pagina

11

Het enige wat nog van FreePBX op het dashboard stond, waren de rss feeds met de laatste nieuws van FreePBX. In de advanced instellingen kan je dit gemakkelijk aanpassen naar eender welke rss feed door de url in te geven.

Figuur 1.10: Rss feed instelling FreePBX

Tot slot heb ik ook met softphones een paar tests gedaan. Een softphone is een mobiele client (app) voor op je smartphone of pc, waarmee je dan verbinding maakt met de PBX. Op deze manier kun je goedkoper bellen met je gsm, of ben je via je extensie bereikbaar op je gsm. Er is wel een internet verbinding nodig, het liefst via wifi want mobiele data heeft niet zo'n stabiele connectie. De meest gebruikte softphone is zoiper omdat deze op zowat elk besturingssysteem werkt. Verder heb ik ook tests gedaan met bria, ekiga, jitsi maar de enige die ik echt werkende heb gekregen was zoiper.

Figuur 1.11: Zoiper client op een smartphone

12 Analyse en requirements

Om de functionaliteiten van beide drivers, Chan_sip en Res_pjsip te kunnen vergelijken moet er eerst gekeken worden naar de functionaliteiten die belangrijk zijn en zeker nodig zijn in de nieuwe driver Res_pjsip.

Register string

Als men bij Chan_sip een trunk naar de proxy wil registreren kan er een register string worden meegegeven. Bij Res_pjsip is deze optie er niet met als gevolg dat de trunk niet volledig correct is geregistreerd, met name het telefoonnummer is niet doorgegeven aan de proxy.

User and device mode vs multiple endpoints

Res_pjsip heeft een nieuwe optie waarmee er meerdere endpoints (telefoons) kunnen registreren met dezelfde extensie nummer. Dit zorgt ervoor dat je user and device mode niet meer hoeft te gebruiken. Het voordeel van user and device mode vind ik dat je op elk toestel kunt inloggen en uitloggen wat bij de nieuwe optie van Res_pjsip niet mogelijk is. Het is wel nog mogelijk om user and device mode te gebruiken bij Res_pjsip.

Video

Ten opzichte van Chan_sip heeft Res_pjsip geen enkele instelling voor video in FreePBX. Een video gesprek kan dan ook niet gemaakt worden met Res_pjsip.

NAT

Bij Res_pjsip zijn de instelling voor NAT onderverdeeld waar er bij Chan_sip 1 algemene instelling is, dit maakt het instellen ervan wel moeilijker. NAT wordt bij Res_pjsip niet volledig ondersteund waardoor er nog veel problemen zijn. Het werkende krijgen van de PBX achter NAT bij Res_pjsip is dan ook niet gelukt.

Call transfer

Eén van de opties van voip calling is dat men gemakkelijk gesprekken kan doorschakelen. Deze optie noemt blind/attended transfer. Bij Res_pjsip wordt deze optie volledig ondersteund en werkt ze zoals het hoort.

Encryptie

Encryptie tijdens de signalisatie (TLS) en audio tijdens het gesprek (SRTP) worden beiden ondersteund bij Res_pjsip. SRTP heb ik zelf getest maar er waren nog problemen bij gesprekken van Chan_sip naar Res_pjsip.

Remote Call Pickup

Met remote call pickup kun je een inkomend gesprek bij iemand anders opnemen door middel van de BLF knop, een BLF knop is een sneltoets naar een andere extensie of telefoonnummer. Deze functie werk zowel bij Chan_sip als bij Res_pjsip.

Conference call/bridging

Hiermee kun je telefoongesprekken houden met meerdere personen. Ik heb een conference bridge opgezet met 4 personen bij Res_pjsip en dit werkte.

13 Voicemail

Voicemail is getest bij Res_pjsip en werkte volledig, ook de email-alerts.

Paging and intercom

Via deze feature kun je een audio stream starten naar meerdere telefoons op de PBX. Zo kun je in 1 keer meerdere personen toespreken zonder dat ze hun telefoon moeten opnemen. Er kunnen ook groepen aangemaakt worden zodat je enkel tot een bepaalde groep mensen spreekt, bv. sales. Deze functionaliteit werkt bij Res_pjsip.

14 Probleem en oplossing

Na de installatie van Asterisk 13 en FreePBX op de virtuele machine waren er sommige toepassingen zoals extensies niet beschikbaar in FreePBX. Dit probleem was simpel te verhelpen door een aantal modules te activeren en te updaten. De modules zijn te vinden in Admin -> Module Admin. Nadat de endpoints geregistreerd waren op de PBX en de trunk naar de proxy ingesteld was, kon ik niet bellen. Het probleem was dat de telefoon tijdens de signalisatie van het gesprek de ACK op de invite naar het private ip adres van de PBX stuurde. Om dit probleem op te lossen moest ik voor elke extensie op de PBX de instelling "Rewrite contact" aan zetten. Deze instelling zorgt ervoor dat SIP de pakketjes terug stuurt naar het ip adres waarvan hij de invite heeft gekregen, dus het publieke ip adres van de PBX.

Nadat de eerste endpoints met Chan_sip ingesteld waren en de signalisatie van het gesprek in orde was bleek, er geen audio te zijn tijdens het gesprek. Dit kwam omdat de poorten voor de audio op de Firewall gesloten waren. Door een paar poortregels aan te maken in de Firewall was het probleem opgelost en kon ik bellen met audio met Chan_sip.

Na een bepaalde tijd kreeg ik op de raspberry pi in FreePBX regelmatig de error "Can not connect to Asterisk" na het rebooten. Dit was blijkbaar heel simpel om op te lossen door het commando "asterisk start" in te geven in de command line van de RasPBX. Verder heb ik op de RasPBX ook een probleem gehad in FreePBX waardoor er geen files meer konden opgeslagen worden. Dit was zo een groot probleem dat ik niet kon oplossen, dus zat er niets anders op om de sd card te formatteren en een nieuwe RasPBX image te gebruiken.

Figuur 2.1: "Can Not Connect to Asterisk" melding

Na het overschakelen van Ipv4 naar Ipv6 ben ik nog een paar problemen tegengekomen. Zo wou ik de telefoons een statisch ip adres geven en had bij de dns servers "2001:4860:4860::8888" en "2001:4860:4860::8844" ingevuld wat de Ipv6 dns servers van google zijn. Dit lukte niet en daardoor kon ik de telefoons niet meer bereiken via de web interface. Door op de telefoons dit aan te passen naar "::" bleek alles weer in orde te zijn.

Een ander probleem dat ik regelmatig ben tegengekomen is dat na het beëindigen van het gesprek de andere gesprekspartner bleef bellen en het gesprek niet stopte. Dit kwam omdat de BYE van de persoon die het gesprek beëindigd heeft niet aan kwam op de PBX. De oplossing was om de poort bij het externe ip van de PBX te zetten op de PBX zelf bv. x.x.x.x:5060 .

Figuur 2.2: Instellen extern ip adres PBX

15 Tijdens de laatste weken van mijn stage ben ik een paar keer de melding "Firewall rules corrupted" tegengekomen in de console waarna de Firewall herstart. Hierdoor had ik geen rechtstreekse toegang meer tot de PBX omdat mijn ip adres aan de iptables werd toegevoegd, wel kon ik nog via de Firewall van Intellinet aan de PBX geraken. Ik denk dat dit probleem te wijten was aan een telefoon die meerdere malen probeerde te registreren op de PBX maar daar niet in geslaagd is en daardoor als hacker aanzien werd.

Bij het testen van SRTP (encryptie voor audio) ben ik problemen tegengekomen tussen Chan_sip en Res_pjsip. Tijdens het gesprek van Res_pjsip naar Chan_sip had de Res_pjsip extensie geen geluid, er was dus sprake van one way voice. Het gesprek van Chan_sip naar Res_pjsip lukte wel.

Voor een lange tijd heb ik met een nogal vreemd probleem gezeten, namelijk als ik belde naar extensie 300 kwam ik telkens bij 301 uit. Na een lange tijd zoeken naar de oorzaak van dit probleem heb ik gemerkt dat bij extensie 300 call forwarding aanstond en dus automatisch doorschakelde naar 301. Bij FreePBX heb je een goed overzicht van alle extensies waar je de ingestelde opties kunt bekijken, zie afbeelding hieronder. De enige manier om de call forwarding uit te zetten was door met de telefoon naar *73 te bellen.

Figuur 2.3: Overzicht van alle extensies

Bij het testen met SIPp ben ik bij het runnen van het commando "./sipp" de error "Can't create raw socket (need to run as root?)" tegengekomen. Zoals de error zelf al zegt moet je gewoon het commando runnen als root door er sudo voor te zetten.

In het begin bij het testen van SIPp met audio merkte ik dat af en toe de maximum simultane calls niet bereikt werden. In de file "uac_pcap.xml", waar het scenario in geschreven is stond een pauze van het gesprek van 8 seconden omdat de gesproken Pcap boodschap 8 seconden duurt. Er werden dus al gesprekken beëindigd voordat de maximum simultane gesprekken bereikt werden. Om dit probleem op te lossen heb ik telkens de pauze van het gesprek in de "uac_pcap.xml" aangepast zodat het maximum calls bereikt kon worden.

Bij het stresstesten van meer dan 250 gelijktijdige gesprekken stopt de SIPp client op de raspberry pi met de error "Can't create thread to send RTP packets". Bij elk nieuw gesprek start SIPp blijkbaar een nieuwe thread, het OS zal dan een limiet hebben van maximum 250 threads per proces waardoor SIPp crasht. Daarom heb ik bij het testen van meer dan 250 simultane gesprekken 2 SIPp processen gebruikt.

Tijdens de installatie bij een klant moesten we het logo van dat bedrijf op het scherm zetten van de telefoons. Bij de Yealink T46g telefoons die een groter scherm hebben was dit niet echt een probleem maar bij de Yealink T42g telefoons die een kleiner scherm hebben kwam het logo niet volledig tot de bovenkant van het scherm. Daarom heb ik op kantoor enkele tests gedaan bij een Yealink t41p telefoon die hezelfde scherm heeft maar dat was ook

16 geen succes. Ik heb daarop een mail gestuurd naar de support van Yealink en zij wisten ook niet direct een oplossing maar hadden gezien dat er nog een oude firmware op de telefoon stond en raadde me aan om die te updaten. Na het updaten was het probleem opgelost.

Figuur 2.4: Probleem met aangepast logo op Yealink telefoon

17 Configuraties

Inleiding

Hieronder heb ik een paar configuraties en instellingen samengevat die ik tijdens mijn stage heb uitgevoerd.

Ipv6 instellen bij Res_pjsip

Op de PBX in de file /etc/asterisk/pjsip.transports_custom.conf het volgende toevoegen:

Figuur 3.1: Ipv6 configuratie PBX

Dit moet in de file _custom omdat de originele file automatisch wordt aangepast door FreePBX.

Modules in FreePBX updaten

Via menu Admin naar module Admin. Hier staan alle modules die geïnstalleerd zijn of kunnen aangekocht worden. Eerst moet je controleren op updates door op de knop "Check Online " te drukken. Nu zie je alle modules die een update kunnen krijgen, om alles te upgraden druk je op de knop "Upgrade all" en daarna op process.

Figuur 3.2: Updaten modules FreePBX

18 Meerdere endpoints per extensie

Om meerdere endpoints te kunnen registreren ga je eerst naar de extensie, onder het tabblad advanced kun je vervolgens de "Max Contacts" verhogen naar het gewenste aantal endpoints.

Figuur 3.3: Meerdere Endpoints instellen per extensie

SRTP instellen bij Chan_sip

Op de PBX ga je naar Applications -> extensions -> extension (nr) -> advanced -> Enable Encryption = yes (SRTP only)

Dit zet het gebruik van SRTP aan voor de gekozen extensie. Je moet op de telefoon ook nog instellen dat er gebruik gemaakt zal worden van SRTP, dit doe je door op een Yealink telefoon te gaan naar Account -> Advanced -> RTP Encryption(SRTP) = Compulsory.

SRTP instellen bij Res_pjsip

Hiervoor zijn er op de PBX 2 stappen nodig, ga eerst naar Applications -> extensions -> extension (nr) -> advanced - > Require RTP (Media) Encryption = Yes en zet dan Media Encryption = SRTP via in-SDP.

De instellingen op de telefoon zijn hetzelfde als bij Chan_sip. De volledige tutorial is te vinden op [http://wiki.freepbx.org/display/PHON/TLS+and+SRTP]

Aangepast logo op Yealink telefoons

Download eerst de zip file via deze link [http://www.yealink.com/Upload/document/HowtochangethelogoofYealinkPhonesRev_610/HowtochangethelogoofY ealinkPhonesRev_610-20424946725.zip]. Unzip het bestand en verplaats de "PictureExDemo.exe" file naar je c: drive. Dan moet je je afbeelding converteren naar een zwart-wit file in ".bmp" of ".gif" formaat, de grootte van de afbeelding mag maximum 192*64 pixel zijn. Zet de afbeelding ook op je c: drive en geef het een korte naam zonder speciale tekens. Dan open je het "PictureExDemo.exe" programma en kies je de afbeelding die je net hebt gemaakt. Klikken op convert zal een ".dob" file maken in de map "adv" op je c: drive. Nu kun je op de telefoon bij "Features -> General Information -> Use Logo -> Custom Logo" de ".dob file uploaden en het logo zal verschijnen op de telefoon.

SIPp installeren

De eenvoudigste manier om SIPp te installeren op een raspberry pi is door een installer te gebruiken. Ik heb de installer gedownload met het commando "sudo wget --no-check-certificate "http://bitbucket.org/idkpmiller/installation-scripts/raw/master/install_sipp.sh". Daarna moeten er de juiste permissies gegeven worden aan het bestand met het commando "sudo chmod +x install_sipp.sh". Gebruik daarna het commando "sudo ./install_sipp.sh" om het script te starten. Tijdens het installeren wordt er gevraagd om het systeem te upgraden, kies hier voor yes. Deze upgrade kan enige tijd duren. Dan wordt er gevraagd welke versie je wil installeren. Ik heb gekozen voor versie 3.4 omdat dit de laatste stabiele versie is, dus optie 3. Tot slot wordt SIPp geïnstalleerd in de map "/opt". Om gebruik te maken van audio moest ik wel nog het juiste scenario downloaden van [http://sipp.sourceforge.net/doc/uac_pcap.xml] met het wget commando. Vanaf dit moment kon SIPp uitgevoerd worden in de map "/opt/sipp-3.4.0" met het "./sipp" commando.

19 Figuur 3.4: SIPp installeren op Raspberry Pi

SIPp maximum simultane gesprekken wordt niet bereikt

Dit komt omdat de tijd tijdens het gesprek te kort is. Ik heb dit aangepast is de "uac_pcap.xml" file. De default waarden zijn 8 seconden plus 1 seconde. De gesprekken worden dus beëindigd na 9 seconden. Met een waarde van 10 nieuwe gesprekken per seconde kan dus maximum 90 simultane gesprekken behaald worden. Door de tijd langer in te stellen kunnen er meer simultane gesprekken behaald worden.

Figuur 3.5: Pauze tijdens gesprek instellen bij SIPp

20 Nieuw in Asterisk 13 / FreePBX 13

Follow-me optie eenvoudiger

Bij FreePBX kun je de follow-me optie gemakkelijker aan/uit zetten dan bij de vorige versies. Met de follow-me optie kun je bv een gsm nummer instellen waarop gebeld moet worden als je na x aantal seconden niet hebt opgenomen met je vaste telefoon.

Figuur 4.1: Overzicht om Follow-Me aan/uit te zetten

Meerdere endpoints per extensie

Een andere nieuwe feature dat Res_Pjsip bij FreePBX 13 heeft is dat men meerdere endpoints (telefoons) kan registreren per extensie. Om dit op te zetten verhoog je bij de instellingen van de extensie de max contacts van 1 naar het aantal endpoints dat je wilt hebben. Deze optie werkt wel nog niet met Ipv6.

Zoeken

Bij FreePBX 13 is er nu rechtsboven een zoekbalkje waarmee je gemakkelijk en snel kunt zoeken naar bepaalde extensies of andere instellingen.

UCP

Een nieuw mobile friendly User Control Panel dat gebaseerd is op het bootstrap framework en met HTML5 ondersteuning voor Res_pjsip zijn voicemail en recording via een beveiligde module signing

Bulk management

Een nieuwe bulk management module die je toelaat om users, extensies, contacten en DIDs te importeren of exporteren via een csv file. Je kunt ook een blacklist van telefoonnummers importeren of exporteren.

21 Multicast Paging

Hiermee kun je vanop 1 telefoon de audio stream sturen naar meerdere ontvangers. Dit kun je gebruiken bij intercom om zo meerdere mensen tegelijk een boodschap te kunnen geven.

Bootstrap

De layout en Navbar maken gebruik van bootstrap om zo een responsive frontend te maken waarbij de Save en Delete knop mee bewegen tijdens het scrollen op de pagina.

Call Event Log (CEL)

CEL houdt bij wie er heeft gebeld met alle details. Als call recording is geactiveerd bij je extensie houdt CEL zelfs de audio van het gesprek bij.

Fwconsole

Commando's ingeven via de commandline gebeurt niet meer met amportal maar met Fwconsole. FreePBX keurt amportal af en kiest nu voor Fwconsole omdat deze een puur PHP modulaire commandline toepassing is. De meeste functionaliteiten van amportal zijn herschreven en verbeterd om het meer dynamisch te maken. De PHP code heeft ook betere error meldingen die duidelijk melden wat het probleem is. Fwconsole zorgt ook voor een snellere reload van Asterisk.

Firewall Module

FreePBX heeft nu een ingebouwde Firewall dat de IPtables aanpast. Het mooie van deze Firewall is dat het een responsive Firewall bevat. Als je dan een endpoint wil registreren laat de Firewall alle pakketjes door, zelfs al kent de server de host niet. Als de endpoint na 10 signalisatie pakketjes niet succesvol geregistreerd is zal al het signalisatie verkeer dat van die host komt gedropt worden voor 60 seconden. Als die zelfde host pakketjes blijft sturen en na 50 pogingen nog niet geregistreerd geraakt zal de host voor minstens 24 uur geblokkeerd worden. Pas wanneer de host minstens 24 uur lang geen pakketjes meer stuurt naar de PBX zal de blokkade opgeheven worden. Er is ook een bescherming tegen hackers die grote hoeveelheden SIP pakketjes sturen in een korte periode, als er 50 of meer pakketjes worden ontvangen binnen de 10 seconden van de zelfde host zal deze direct geblokkeerd worden voor minstens 24 uur. Indien alles wel correct verloopt en de endpoint succesvol geregistreerd geraakt zal deze herkend worden als een legale gebruiker. Voor meer info over de responsive Firewall zie [http://wiki.freepbx.org/display/FPG/Responsive+Firewall], [http://wiki.freepbx.org/display/FPG/Firewall+Getting+Started+Guide].

22 Figuur 4.2: Firewall in FreePBX

VPN

Met deze vernieuwing kun je een vpn server starten op je PBX. Er wordt gebruik gemaakt van OpenVPN en de bedoeling is dat personen of klanten via een certificaat toegang kunnen krijgen tot je PBX of het netwerk van je PBX. De VPN optie kun je helaas niet gebruiken bij de gratis versie van FreePBX.

Sound Languages

Met deze nieuwe module in FreePBX 13 kun je simpel wisselen tussen verschillende talen of simpel een nieuwe taal toevoegen. Als je dan een IVR hebt met een optie "druk 2 voor Frans", dan kun je direct doorschakelen naar een IVR waar de taal Frans is.

Figuur 4.3: Sound Language module in FreePBX

23

Quick Create Extension

Dit is een optie om in 2 stappen een extensie te kunnen aanmaken in FreePBX. Het enige wat je hoeft in te vullen is een naam voor de extensie en de andere instellingen worden automatisch ingevuld. Het spreekt voor zich dat dit de standaard instellingen zijn en dus niet voor elk scenario van toepassing zijn.

Figuur 4.4: Quick Create Extension in FreePBX

Overzicht extensies

In FreePBX is er een beter overzicht van al de extensies. Hierdoor kan je direct zien of bepaalde extensies een optie zoals follow-me, call forwarding aan hebben staan.

Figuur 4.5: Overzicht van de extensies in FreePBX 13

24 Follow Me extensies gemakkelijk aan-uit zetten

In FreePBX 13 vind je onder Applications -> Follow-Me alle extensies terug waarbij je gemakkelijk de follow-me optie van de extensies aan-uit kunt zetten. Deze module werkt blijkbaar nog niet zo goed want enkel de eerste 10 extensies worden hier weergegeven.

Figuur 4.6: Follow me per extensie aan-uit zetten 13

Edge track

Dit is nieuw in FreePBX 13. Hierbij komen de modules in een edge track. Vanaf het moment er een nieuwe update is voor een module kan je die direct installeren, dit is handig in ontwikkel omgeving omdat je dan altijd de laatste nieuwe versie hebt. Voor in productie omgeving komen de updates elke dinsdag binnen, behalve voor security updates.

Figuur 4.7: Edge Track in Module Admin

25 Basis functionaliteiten Asterisk

Music On Hold

Dit spreekt voor zich dat dit muziek afspeelt wanneer je iemand in de wacht zet. Via FreePBX kan je makkelijk je eigen muziek uploaden naast de standaard muziektonen, hierbij moet je wel opletten dat de muziek commercieel gebruikt mag worden, anders moet je ervoor betalen.

Call Forwarding

Hiermee kun je inkomende gesprekken automatisch doorschakelen naar een andere extensie of telefoonnummer. Dit kan handig zijn wanneer je op vakantie bent en de inkomende gesprekken naar je telefoon thuis wil doorsturen.

Call transfer

Als je iemand aan de lijn hebt die je moet doorschakelen naar je collega kun je dit doen met de call transfer optie. Je hebt hierbij 2 opties, een blind transfer en een attended transfer. Bij een blind transfer kies je de persoon naar wie je doorschakelt en het gesprek wordt direct doorgeschakeld. Bij een attended transfer kies je de persoon naar wie je wilt doorschakelen waarna je eerst die persoon aan de lijn krijgt. Dit kan handig zijn om de persoon eerst te melden wie je wil doorschakelen naar hem/haar, daarna kan je gewoon inhaken en is het gesprek doorgeschakeld.

Follow Me

Met de follow me optie kun je een extensie of telefoonnummer ingeven waarnaar gebeld moet worden als je na x aantal seconden niet hebt opgenomen. Dit is handig als je vaak op de baan bent zodat je nog bereikbaar bent via je gsm.

Voicemail

Deze optie kent waarschijnlijk iedereen, wanneer je niet bereikbaar bent kan iemand een bericht inspreken op je voicemail. Asterisk heeft wel nog de extra optie die een email verstuurt met de ingesproken boodschap als iemand op je voicemail terecht is gekomen.

Do Not Disturb

Als deze optie aanstaat zal er geen enkel gesprek binnenkomen op je telefoon.

Call Parking

Hiermee kun je de huidige beller parkeren (in wacht zetten) bij een bepaalde extensie. Dit kan handig zijn als je een 2de lijn hebt of als je het gesprek wil doorschakelen naar iemand anders die al in gesprek is. Je kunt de geparkeerde beller aan de lijn krijgen door naar de geparkeerde extensie te bellen van eender welk toestel op de PBX.

Text-to-Speech

Met deze module kun je een tekst omzetten naar spraak. Een kunstmatige stem spreekt de tekst uit die je geschreven hebt. Dit kan in verschillende talen, wat handig kan zijn om een IVR in te stellen met verschillende talen.

26 Conference Bridging

Via een conference bridge kan je een gesprek maken met meer dan 2 personen. Eerst bel je een persoon op, waarna je meerdere personen kunt uitnodigen om bij het gesprek te voegen. Een conference bridge kan ook gemaakt worden via video maar dan heb je speciale SIP toestelen nodig of een softphone met een camera.

27 Testing

Om mijn PBX te stresstesten heb ik gebruik gemaakt van de gratis en opensource tool SIPp. Met SIPp kan je zoveel calls generen als je wil om zo te testen hoeveel simultane gesprekken je PBX aankan voordat er gesprekken mislukken.

Omdat ik eerst niet goed snapte hoe SIPp werkte had ik de windows versie op mijn pc geïnstalleerd maar blijkbaar werkt SIPp enkel via de command line dus heb in de Linux versie op een raspberry pi geïnstalleerd. Om SIPp te gebruiken bij Asterisk moet je eerst een nieuwe extensie aanmaken op de PBX met de naam sipp. Omdat je in FreePBX geen extensie kunt aanmaken met letters moest dat gedaan worden in de file zelf, via de command line. Omdat FreePBX de standaard files automatisch aanpast moest de sipp user aangemaakt worden in de custom file, namelijk in "/etc/asterisk/pjsip.endpoint_custom.conf". Hier moest ik dan onderstaande invullen.

Figuur 5.1: Aanmaken van de sipp user

Met deze extensie kan SIPp dan de gesprekken starten naar iemand anders. Verder moest er dus nog een dialplan aangemaakt worden waarin beschreven wordt wat er met de inkomende gesprekken moet gebeuren. De aanpassing moest weer in de custom file gebeuren, namelijk in "/etc/asterisk/extensions_custom.conf". Hier hebt ik het volgende dialplan aangemaakt.

Figuur 5.2: Aanmaken van het dialplan voor SIPp

Dit dialplan zal een gesprek van de sipp user naar extensie 300 beantwoorden -> music on hold afspelen -> 20 seconden wachten op de music on hold -> het gesprek beëindigen.

Nu alles ingesteld was op de PBX kon ik SIPp runnen vanaf de raspberry pi. Hiervoor moest ik eerst naar de map gaan waar SIPp is geïnstalleerd, in de map "/opt/sipp-3.4.0". Vanaf deze map kon ik dan het basis commando van SIPp runnen.

Figuur 5.3: Basis commando om SIPp te runnen

28 Dit ziet er misschien een moeilijk commando uit maar eigenlijk is het nogal straight forward. Hier wordt er gebeld naar extensie 300 (-s) via 87.255.xx.xx:5060 (ip adres van de pbx) met een maximum van 100 gelijktijdige calls (-l) en met een pauze tijdens ieder gesprek van 10000 ms (-d) waarbij het default client scenario uac wordt gebruikt (- sn).

Met dit commando kon ik niet veel doen omdat het enkel voor de signalisatie zorgt van het gesprek en er dus geen audio gebruikt wordt. Het voordeel van SIPp is dat je verschillende scenario's kunt gebruiken dus heb ik die met audio genomen. Ik moest het scenario wel nog eerst op de raspberry pi zetten, eerst heb ik de ".xml" file gedownload van [http://sipp.sourceforge.net/doc/uac_pcap.xml] door op de raspberry pi het commando "sudo wget [URL_File]" te gebruiken. Daarna heb ik in het commando de -sn parameter te vervangen door -sf met de bijhorende xml file.

Figuur 5.4: Basis commando om SIPp te runnen met audio

Dit commando heeft als nadeel dat er enkel in 1 richting audio wordt verstuurd, van de raspberry pi naar de PBX maar niet de music on hold van de PBX naar de raspberry pi. Hiervoor kan je de "-mi" parameter gebruiken om het locale ip adres van de raspberry pi mee te sturen zodat de PBX weet naar waar hij de music on hold moet sturen. Omdat de raspberry pi achter NAT zat en je enkel het locale ip adres (private ip) kunt meegeven is het testen van dit commando niet gelukt.

Figuur 5.5: Basis commando om SIPp te runnen met audio en -mi optie

Omdat ik het publieke ip adres van de raspberry pi niet kon meegeven heb ik in het commando de Ipv6 adressen van de PBX en raspberry pi gebruikt omdat deze wel rechtstreeks elkaar kunnen bereiken. Om Ipv6 te gebruiken bij SIPp moest ik gebruik maken van de "-i" parameter waarbij er eerst het lokale ip adres moet meegegeven worden en daarna het ip adres van de PBX. Ik ben dan tot volgende commando gekomen.

Figuur 5.6: SIPp met audio runnen bij Ipv6

De eerste keer dat ik dit commando met audio gebruikte was er een error te zien in de Asterisk console "No compatible codec", dit kwam omdat ik eerst bij de sipp extensie enkel de ulaw codec toeliet. ik heb het probleem kunnen oplossen door bij de sipp extensie de lijn "allow=alaw" toe te voegen.

Als je het commando start krijg je in een dynamische layout de resultaten van de huidige test te zien waarbij je kunt wisselen tussen vensters. De basis lay-out ziet er als volgend uit.

29 Figuur 5.7: Lay-out venster SIPp

in dit venster kun je een aantal opties aanpassen met de "+,-,*,/" symbolen. Je kunt wisselen tussen de vensters door middel van de cijfers 1-9. Om SIPp af te sluiten druk je op de "q" toets.

Nu de audio in 2 richtingen werkt en dus een "echt" gesprek gesimuleerd kan worden heb ik stresstests gedaan met verschillende maximum simultane gesprekken en aantal nieuwe gesprekken per seconde. Bij iedere test zijn dus X aantal nieuwe gesprekken gestart per seconde tot een maximum aantal bereikt is.

Om het aantal nieuwe gesprekken per seconde te wijzigen kun je de "-r" parameter meegeven met het SIPp commando.

Figuur 5.8: SIPp commando met -r parameter

Om tot slot de resultaten van de tests te kunnen opslaan moet het commando nog iets aangepast worden. Uiteindelijk is dit het finale commando.

Figuur 5.9: Finaal correcte SIPp commando

De resultaten van alle tests heb ik in onderstaande matrix gegoten.

30 Figuur 5.10: Resultaten van de SIPp stresstest

Bij het groene gedeelte zijn alle gesprekken gelukt terwijl er bij de rode gesprekken gefaald hebben. Hieruit kan worden samengevat dat een PBX met deze specificaties maximum 400 simultane gesprekken aankan bij 20 nieuwe gesprekken iedere seconde. Dit is zeker niet slecht voor een PBX met 1 CPU en 1024 mb aan geheugen. Een gedailleerde grafiek van de geslaagde gesprekken en het CPU gebruik van Asterisk zie hieronder.

Figuur 5.11: Geslaagde gesprekken in procent

31 Figuur 5.12: CPU gebruik tijdens de stresstests

32 Gebruikte technologieën/tools/protocollen

Asterisk

Asterisk is een opensource telefonie platform dat meerdere voip protocollen ondersteunt zoal SIP en H.323, waarmee het met de meeste SIP telefoons kan werken. Asterisk heeft ook een eigen protocol ontwikkeld namelijk IAX (Inter Asterisk Exchange) waarmee je verschillende Asterisk centrales met elkaar kunt verbinden. Asterisk werkt zowel op Linux, mac, freeBSD en Unix maar wordt het best ondersteund op Linux omdat dat het ontwikkelplatform is. Asterisk zorgt voor de verbinding en de conversie van de protocollen van telefonie. Deze software is het populairst omdat het opencource en flexibel is, daarnaast biedt het ook enorm veel mogelijkheden zoals voicemail, interactive voice respons, conference calling en meer. Om analoge telefoons te verbinden met een telefooncentrale heb je speciale hardware nodig wat bij Asterisk niet nodig is, je hebt enkel een SIP telefoon nodig en een internetverbinding naar Asterisk. De naam is afkomstig van het asterisksymbool * .

FreePBX

FreePBX is een web-based open source GUI om Asterisk te beheren. Je kunt FreePBX apart installeren of Freepbx Distro waarbij Asterisk en het System OS al mee is geïnstalleerd. De huidige stabiele versie van FreePBX is versie 13. Intellinet maakt gebruik van de Distro verie. De laatste versie kan je downloaden op [https://www.freepbx.org/downloads].

User and device mode

Bij user and device mode verdwijnt de module extensies en komen de modules users en devices in de plaats. Je registreert de telefoon dan met een device nummer i.p.v. met een extensie. Daarna kun je vanop elke geregistreerde telefoon inloggen met eender welke aangemaakte user. Deze optie is handig als er altijd iemand anders aan je bureau zit en je de telefoon moet delen met iemand anders.

Edge track

Dit is nieuw in FreePBX 13. Hierbij komen de modules in een edge track. Vanaf het moment er een nieuwe update is voor een module kan je die direct installeren, dit is handig in ontwikkel omgeving omdat je dan altijd de laatste nieuwe versie hebt. Voor in productie omgeving komen de updates elke dinsdag binnen, behalve voor security updates.

IVR

Een IVR oftewel Interactive Voice Response is een automatisch menu waar de beller een keuze kan maken om bv een taal te kiezen, een bepaalde persoon aan de lijn te krijgen, ... . Dit kun je dan koppelen aan de openingsuren van je bedrijf zodat er tijdens de openingsuren een keuzemenu is en na de openingsuren de openingsuren vermeld worden en bv de optie om een boodschap in spreken mogelijk is.

SIPp

SIPp is een open source test tool/traffic generator voor het SIP protocol. Met SIPp kun je verschillende test scenario's gebruiken of er zelf één maken. Zo kun je een scenario maken om je IVR te testen hoeveel gebruikers er kunnen bellen voor er iets misgaat. Je hebt een SIPp client (uac) die traffic kan sturen en een server (uas) die de traffic eventueel kan ontvangen. SIPp heeft een dynamisch display waar je gemakkelijk kunt wisselen tussen de scenario screens. SIPp ondersteund ook ipv6, TLS, SIP authentication, udp retransmissions en veel meer. SIPp kan ook media versturen (RTP) om zo een echt telefoongesprek te simuleren, hierbij kan gebruik gemaakt worden

33 van RTP echo of pcap replay. Ik heb gebruik gemaakt van pcap replay omdat dit de eenvoudigste manier was om te implementeren en omdat er anders bij RTP echo een server moet draaien op de PBX. Je gebruikt een op voorhand opgenomen gesprek in pcap formaat dat je bij ieder gesprek mee doorstuurt. In het begin was SIPp wel erg ingewikkeld om mee te starten maar SIPp heeft als voordelen dat het zeer uitgebreide functies heeft en een uitgebreide documentatie.

RTP echo

RTP echo is een feature van SIPp waarbij er op 1 tot 2 ip adressen/poorten kan geluisterd worden naar RTP media, alle RTP media die ontvangen wordt op dat adres/poort wordt identiek teruggestuurd naar de verzender. Dit heeft echter een server (uas) nodig die draait op de PBX.

TLS

Als je encryptie wilt toevoegen bij het opzetten van een gesprek kun je daarvoor TLS gebruiken. TLS zorgt ervoor dat andere mensen niet kunnen zien wie je aan het bellen bent. Om TLS te gebruiken moet je wel key files aanmaken. TLS zorgt enkel voor encryptie bij de signalisatie van het gesprek en niet voor de media tijdens het gesprek, om de media (audio) te encrypteren moet je gebruik maken van SRTP.

Udp retransmissions

SIPp maakt gebruik van Udp retransmissions om te controleren hoeveel pakketjes niet zijn aangekomen. Voor de udp retransmissions wordt gebruik gemaakt van het reliable udp protocol (RUDP). Ieder pakketje dat ontbreekt wordt geïndexeerd en bij het voltooien van de overdracht wordt die index teruggestuurd naar de verzender die dan op zijn beurt de ontbrekende pakketjes doorstuurt.

NAT

NAT oftewel Network Address Translation is een techniek waarbij het ip adres in data pakketjes wordt omgezet naar een ander ip adres. NAT zorgt ervoor dat meerdere computers op een lokaal netwerk via hetzelfde ip adres verbinding kunnen maken met internet zonder hun private ip te moeten publiceren. Dit heeft als voordeel dat de computers op het lokale netwerk niet rechtstreeks bereikbaar zijn vanaf het internet. Het tweede voordeel is dat het gebruik van het aantal Ipv4 adressen beperkt wordt omdat er niet genoeg zijn en sinds 31 januari 2011 de laatste ipv4 adressen uitgedeeld zijn. NAT heeft ook nog een ander voordeel buiten het omzetten van ip adressen, het heeft de mogelijkheid om een groot netwerk op te delen in meerdere kleinere netwerken zodat men wijzigingen kan doorvoeren zonder de rest van het netwerk in gevaar te brengen. NAT heeft ook een basis firewall waarbij alleen pakketten kunnen worden doorgelaten als een gebruiker van het netwerk dat heeft aangevraagd. Het is echter niet mogelijk te controleren of de uitgaande pakketten van het eigen netwerk afkomstig zijn of niet. NAT biedt wel bescherming tegen low-level-aanvallen zoals een SYN Flood of Ping-of-Death. Het nadeel van NAT is dat het de end to end connectiviteit beperkt die eigenlijk centraal staat in de hele internet filosofie. Hierdoor werken sommige protocollen niet goed samen met NAT, onder andere SIP. Een ander nadeel is dat als een gebruiker in het lokale netwerk een aanval doet op iemand buiten het netwerk deze moeilijk te traceren is omdat het ip adres verborgen wordt door de router. NAT is ook intensief voor de router aangezien de checksums aangepast moeten worden per datapakket. NAT op Ipv4 biedt slechts een schijn van veiligheid voor de achterliggende systemen omdat de systemen in eerste instantie niet rechtstreeks bereikbaar zijn vanop internet. Verschillende methoden laten echter zien dat NAT wel te omzeilen is. De NAT opties bij Res_pjsip zijn: rtp_symmetric (stuur de media naar het adres en de poort waarvan Asterisk het ontvangen heeft), force_rport (stuur antwoorden naar het bron ip en poort) , rewrite_contact (herschrijf de sip contact header met het bron ip en poort van de request)

34 Ipv4

Ipv4 is de vierde versie en de huidige versie van het internet protocol. Ipv4 is al sinds 1980 in gebruik en heeft adressen van 32 bits (bv 192.168.1.1) waarmee er zo'n 4 miljard adressen mogelijk zijn. De ip adressen worden beheerd door de Internet Assigned Numbers Authority (IANA) wereldwijd. Echter op 31 januari 2011 zijn de laatste Ipv4 adressen uitgedeeld. Hierbij dringt het overschakelen naar Ipv6 zich op.

Ipv6

Ipv6 is de opvolger van Ipv4, er was wel nog een tussenliggende versie Ipv5 maar die werd enkel gebruikt voor experimentele doeleinden. Ipv6 is ontwikkeld om de tekortkomingen van ipv4 op te lossen. Dus met belangrijkste reden het tekort van Ipv4 adressen. Bij Ipv4 zijn "maar" 4 miljard adressen beschikbaar terwijl dat bij Ipv6 ongeveer 3,4 x 10^38 zijn, voor elke aardbewoner zijn er dus 50 quadriljard ip adressen beschikbaar wat dus neerkomt op een bijna onuitputtelijke voorraad ip adressen. Een aantal grote verbeteringen bij ipv6 zijn:

Het overbodig maken van NAT gegevensbeveiliging op ip niveau ondersteuning voor mobiele nodes

Het grootste verschil tussen Ipv4 en Ipv6 is de lengte van het netwerk adres. Een Ipv6 adres is 128 bits lang wat overeenkomt met 32 hexadecimale cijfers terwijl een Ipv4 adres 32 bit lang is. Soms bestaat een ipv6 adres uit twee logische delen, een netwerkprefix en een host adres wat vaak wordt afgeleid van het MAC adres. Ipv6 adressen zijn dus 128 bit lang en worden normaal geschreven als 8 groepen van 4 hexadecimale cijfers. Bv.:"2001:db8:85a3:08d3:0000:8a2e:0370:7344". Als een groep van 4 cijfers 0000 is kan dit worden herschreven als "0" of "::". Dit kan wel maar op 1 plaats toegepast worden. De werking van protocol in Ipv4 en Ipv6 verschilt nauwelijks. Een van de weinige verschillen is dat bij ipv6 geen netwerkadres of broadcastadres wordt gebruikt. Het eerste adres in een ipv6 subnet is het router anycast adres, het "broadcast adres in ipv6 is een special geval van multicast waarbij het adres ff02::1 overeenkomt met het subnet-specifieke broadcastadres in IPv4.

RTP

Om de audio de versturen en te ontvangen wordt er bij voice over ip gebruik gemaakt van het Real-time Transport Protocol oftewel RTP. Dit is een protocol dat een gestandaardiseerd pakketformaat definieert om audio en video over het internet te verzenden. RTP is de technische grondlegger van het hedendaagse voice over ip. Vroeger en nu nog wordt er udp gebruikt voor realtime multimedia applicaties maar door de toenemende populariteit van voip en videoconferenties en andere multimedia applicaties werd RTP ontwikkeld. Dit protocol is ontwikkeld voor audio en video transport en is in 1996 gepubliceerd als RFC 1889. Er is ook een 'secure'- of veilige versie van RTP, namelijk SRTP.

SRTP

SRTP is de secure variant van RTP. SRTP zorgt voor encryptie, message authentication en integrity. Het zorgt ook voor replay protectie van de RTP data bij unicast en multicast applicaties. Bij Chan_sip noemt deze optie "enable encryption" terwijl het bij Res_pjsip "media encryption" heet. Bij Res_pjsip kun je wel nog kiezen tussen "SRTP via in-SDP" en "DTLS-SRTP".

UDP

User datagram protocol is een van de basis protocollen van het internet net zoals tcp. Udp werkt dan ook op het zelfde niveau als tcp. In tegenstelling tot tcp is udp onbetrouwbaar, het protocol biedt geen garantie dat de pakketjes aankomen op de bestemming of niet. Sommige protocollen die met udp werken lossen dit probleem op door zelf een verificatiemethode te implementeren en zo eigenlijk de functionaliteit van tcp te vervangen. Udp wordt nog veel gebruikt wanneer de overdracht van de gegevens zeer snel moet gaan en het verlies van gegevens

35 minder belangrijk is zoals bij telefonie, videoconferentie, dns of online games. Als men voor deze toepassingen tcp zouden gebruiken zou er vertraging optreden totdat het ontbrekende pakketje is aangekomen wat niet altijd gewenst is. Voip maakt dus gebruik van udp. Er kan ook tcp gebruikt worden indien expliciet gewenst.

TCP

Tcp is de betrouwbare variant van Udp. Tcp controleert of de pakketjes zijn aangekomen en geeft dus de garantie voor het aankomen van de data. Die garantie zorgt ervoor dat de gegevens in dezelfde volgorde aankomen zoals de verzender ze heeft verstuurd, dit kan wel zorgen voor een vertraging van de datastroom. Door deze reden wordt Tcp zelden gebruikt bij audio of video overdracht omdat er anders vertraging optreedt.

Chan_sip

Chan_SIP is een SIP driver die in plaats van de volledige sip transaction layer te gebruiken de inkomende retransmissions probeert te identificeren en te markeren met een "ignore" vlag. Dan in iedere request/response een functie uitvoeren dat mogelijk belangrijk kan zijn, dus de code doorlopen. Dit principe heeft heel veel bugs veroorzaakt en in veel gevallen leidde dit tot de reconstructie van de respons van hetzelfde signaal. Chan_sip wordt nog altijd veel gebruikt als sip driver en dit zal zeker nog lang zo blijven.

Res_pjsip

Res_Ppsip is een opensource multimedia communicatie bibliotheek dat standaard protocollen zoals sip, sdp, rtp, stun, ... implementeert. Res_pjsip is de opvolger van Chan_sip en het combineert sip met multimedia framework en NAT in een api zodat het mobiel en bruikbaar is voor elk type van systeem van desktop tot mobiele toestellen.

Res_pjsip Vs Chan_sip

De functionaliteiten bij Res_pjsip zijn geschreven in gescheiden modules en kunnen hierdoor gemakkelijk gewijzigd of vervangen worden zonder aan andere modules te komen, bij Chan_sip is dit niet het geval. De SLOC (source lines of code) in chan_sip werd altijd maar meer en meer, wat neerkomt op almaar meer en meer code dat niet meer gestructureerd is. Bij de release van Asterisk 12 stond er in 1 bestand meer dan 25000 lijnen code! Bij de release van Asterisk 11 begon men te denken om een nieuwe sip driver te schrijven van scratch, men was wel een beetje sceptisch om helemaal vanaf 0 te beginnen omdat 90% van nieuwe softwareprojecten falen. Chan_sip wordt gebruikt bij heel veel telefoongesprekken en dat is niet niets, waarom dan toch een nieuwe sip driver? Volgens statistieken hebben 25% van de bugs in Asterisk te maken met Chan_sip en spenderen de ontwikkelaars de helft van hun tijd aan het herstellen van die bugs. Dit wil zeggen dat de helft van een achtkoppig ontwikkelaars team niets anders doet dan bugs repareren in 1 bestand. Door de slechte structuur in de file gebeurt het dat er nieuwe bugs ontstaan door het repareren van een andere bug. Het spijtige is dat men de tijd dat men steekt in het vinden en repareren van die bugs niet kan gebruiken om nieuwe features te ontwikkelen. Chan_sip proberen te handhaven is zoals ter plaatse blijven staan, je doet veel maar je gaat niet vooruit. Res_pjsip gebruik een SIP stack van andere ontwikkelaars waardoor de ontwikkelaars van Asterisk zich kunnen focussen op het maken van nieuwe features in plaats van bezig te zijn met de lagere SIP laag. Dit betekent dus snelle en betere nieuwe features.

PoE

De meeste voip telefoons ondersteunen PoE oftewel power over ethernet. PoE is een technologie om stroom en data te leveren over een standaard twisted pair-kabel. Deze technologie wordt ook gebruikt bij webcams, switches en antennes, vooral bij apparaten waar stroomvoorziening moeilijk is. De technologie omvat een speciaal protocol waarbij er eerst wordt gemeten of er een PoE toestel aangesloten is, welk vermogen er nodig is, en dan pas zal er de nodige stroom worden gegeven. De originele standaard laat vermogens toe van 15.4 watt per aderpaar. De opvolger van POE is POE+.

36 Fop2

Fop2 is een grafische web interface waarop je de gedetailleerde status van de PBX kunt zien. Het bestaat al sinds 2004 en is het meest gebruikte controle paneel voor Asterisk in de wereld. Met Fop2 kan zien wie er aan het bellen is, hoe lang, met wie. Je kan ook gesprekken in de wacht zetten, doorschakelen, meeluisteren met gesprekken en veel meer. Deze tool is vooral handig voor receptionisten of voor bazen die hun personeel in de gaten willen houden.

Figuur 6.1: Fop2 Panel

RasPBX

RasPBX is een op gebaseerd OS waarop Asterisk en FreePBX al geïnstalleerd zijn. Men kan de image op volgende website downloaden: [http://www.raspberry-asterisk.org/downloads]. Om op afstand toegang te krijgen tot je raspberry pi via ssh kun je gewoon als hostname "raspbx" gebruiken. Om via de web interface FreePBX te openen kun je surfen naar "http://raspbx". Op een Mac gebruik je "raspbx.local" i.p.v "raspbx". Na de eerste keer je raspberry pi op te starten typ je het commando "raspi-config" en selecteer dan "expand_rootfs" om meer geheugen vrij te maken. Verder moet je nog ssh host keys aanmaken, dit doe je door het commando "regen-hostkeys" te typen in de console. Om de laatste versie van Asterisk te installeren typ je het commando "raspbx-upgrade". FreePBX gebruikt zijn eigen update systeem dus om dit te updaten moet je naar "Module Admin" gaan om je systeem te updaten.

Putty

Putty is een heel bekende applicatie die veel wordt gebruikt om ssh verbindingen te maken vanaf een windows computer. Deze heb ik dan ook gebruikt om verbinding te maken met de raspberry pi. Om toegang te krijgen tot de servers van Intellinet moet er eerst een ssh verbinding gemaakt worden met de firewall waarvoor ik putty ook gebruikt heb. Hierbij moesten er ook poorten geforward worden in de tunnel, die in te stellen zijn via het menu links -> connection -> SSH -> Tunnels. Als er connectie is gemaakt met de Firewall kan men via een proxy toegang krijgen tot bv de vmware machines.

WinSCP

WinSCP (Windows Secure CoPy) is een grafische opensource-FTP-client voor Windows die gebruikmaakt van SSH. Deze tool heb ik vaak gebruikt om de gemaakte pakket captures op de virtuele machine te kopiëren naar mijn pc.

37 VmWare VSphere Client

Dit is de desktop versie van vmware vsphere om je Vsphere server te beheren.

Figuur 6.2: Vsphere Client

STUN server

Om NAT te kunnen helpen bij het omzetten van het ip adres kun je gebruik maken van Session Traversal Utilities for NAT oftewel een STUN server. STUN is een netwerk protocol dat de interne host helpt op zijn publieke ip te vinden als die zich achter NAT bevindt. Een STUN server helpt ook om de publieke poort te vinden die toegewezen is voor Udp. Dit protocol maakt gebruik van een third-party netwerk server om het publieke ip adres te vinden.

38 Conclusie en samenvatting

Het is nog te vroeg om gebruik te maken van de nieuwe Res_pjsip driver omdat het nog niet volledig werkt achter NAT/Firewall/Router. Wel werkt Res_pjsip met een publiek ip adres zonder NAT maar dit is niet de oplossing om te gebruiken in productie. Alle functionaliteiten dat ik getest heb bij Chan_sip werken bij Res_pjsip behalve video gesprekken. Nieuwe functionaliteiten bij Res_pjsip zijn er nog niet echt omdat dit de eerste Long Term Support versie van Asterisk is waar Res_pjsip gebruikt wordt. De enige nieuwe functionaliteit dat Res_pjsip op dit moment heeft is "meerdere endpoints registreren per extensie" welk zoiets gelijkaardig is al "user and device mode" bij Chan_sip. Hieronder nog eens de resultaten van Chan_sip en Res_pjsip bij de verschillende versies van Asterisk en FreePBX.

Figuur 7.1: Resultaten bij verschillende versies Asterisk/FreePBX

Wat security betreft van de PBX, FreePBX heeft sinds versie 13 (huidige versie) een ingebouwde Firewall waarbij je een responsive mode hebt. Bij deze modus hoef je zelf niets te doen want de Firewall beslist zelf welke ip adressen op de blacklist komen of niet. Meer informatie over de Firewall zie het hoofdstuk "Nieuw in Asterisk 13/FreePBX 13".

Uit de stresstests bij Res_pjsip is gebleken dat een virtuele machine met Asterisk 13 / FreePBX 13 met de specificaties "1 CPU, 1024 MB memory, 8 GB Harddisk" 20 nieuwe startende gesprekken per seconde aankan bij een maximum van 400 simultane gesprekken. Resultaten van de stresstests hieronder.

Figuur 7.2: Resultaten van de SIPp stresstest

39 Figuur 7.3: Geslaagde gesprekken in procent

Figuur 7.4: CPU gebruik tijdens de stresstests

40 Ten opzichte van de nieuwe SIP driver Res_pjsip werkt Asterisk 13 en FreePBX 13 wel volledig en heb ik tijdens het testen van Chan_sip bij deze versies geen problemen ondervonden. Er kan dus perfect gebruik gemaakt worden van Chan_sip bij deze versies waarbij alle functionaliteiten werken zoals het hoort. Chan_sip werkt zelfs met Ipv6 bij deze versies.

Op enkele forums en op de wiki van Asterisk heb ik gelezen dat de huidige versie van Asterisk nog geen volledige ondersteuning biedt voor NAT en Ipv6 bij Res_pjsip. De volgende versie, Asterisk 14 zou dit well volledig moeten ondersteunen maar die versie komt pas uit in oktober 2016. Hierna zou Res_pjsip opnieuw getest kunnen worden of NAT en Ipv6 wel werken.

Ik heb uiteindelijk alles kunnen testen wat nodig was en vond het een leerrijke stage. Vroeger wist ik niet echt wat voip allemaal inhield maar nu weet ik dat de mogelijkheden bijna onbeperkt zijn. Ik kan nu zelf een voip telefooncentrale instellen en ben van plan om dit zelf te doen op een raspberry pi thuis. Ik ben ook een paar keer mogen meegaan op installatie wat zeer leuk was en zo leer je hoe het bedrijfsleven er aan toe gaat. Door de vele problemen die ik ben tegengekomen heb ik veel nieuwe dingen bijgeleerd, zo heb ik kennis kunnen maken met Ipv6. Dit was een stage die ik niet snel zal vergeten.

41 Geraadpleegde bronnen

[http://www.raspberry-asterisk.org] [http://www.asterisk.org] [https://www.freepbx.org] [https://wiki.asterisk.org/wiki/display/AST/Home] [http://wiki.freepbx.org] [https://en.wikipedia.org/wiki/IPv6] [http://forum.yealink.com/forum] [http://sipp.sourceforge.net] [https://www.fop2.com] [http://wiki.freepbx.org/display/PHON/TLS+and+SRTP] [http://asteriskonvps.com/asterisk/how-to-install-google-tts-in-freepbx] [http://wiki.freepbx.org/display/FPG/Module+Signing] [https://www.freepbx.org/store/oem-program] [http://wiki.freepbx.org/display/FPG/Languages+Module+User+Guide] [http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Reliable-UDP-%28RUDP%29-The-Next- Big-Streaming-Protocol-85316.aspx] [https://www.freepbx.org/introducing-the-edge-repository] [https://wiki.asterisk.org/wiki/display/AST/PJSIP+Transport+Selection#PJSIPTransportSelection- IPv4+IPv6Combined%28SingleInterface%29] [http://blog.sip2serve.com/post/86035109221/sipp-meet-the-raspberry-pi]

42 Glossary

PBX = Private branch exchange SIP = Session initiation protocol Trunk = Verbinding tussen de PBX en de Proxy Chan_sip = Huidige sip channel driver Res_pjsip = Nieuwe sip channel driver Endpoint = SIP telefoon RTP = Realtime transport protocol SRTP = Secure Realtime transport protocol Udp = User datagram protocol Tcp = Transmission Control Protocol NAT = Network adress translation STUN = Session Traversal Utilities for NAT POE = Power over Ethernet Ipv4 = Internet protocol version 4 Ipv6 = Internet protocol version 6 Fop2 = Flash Operator Panel 2 TLS = Transport Layer Security IVR = Interactive Voice Response Voip = Voice Over Internet Protocol

43