Een SIP softphone voor Linux Michel de Boer
Agenda Wat is VoIP SIP Interface VoIP naar PSTN NAT Wat is Twinkle Demonstratie
Wat is VoIP? Voice over IP Signalering (opzetten van een gesprek) Media transport (audio, video) IP media signalering
Signaleringsprotocollen H.323 ITU protocol familie SIP - Session Initiation Protocol IETF protocol MGCP - Media Gateway Control Protocol IETF protocol, populair in kabelnetwerken Skype P2P VoIP, geen open standaard
SIP Gebaseerd op HTTP en SMTP UDP poort 5060 SIP adres lijkt op een mail adres Headers voor call routering From, To, …. Body beschrijft de media stroom SDP – Session Description Protocol Codecs, RTP poorten
Audio digitaliseren - Codecs G.711 (aLaw, ulaw) – 8 Khz, 64 Kbps Standaard telefonie GSM – 8 Khz, 13 Kbps G.729 – 8 Khz, 8 Kbps Licentie nodig Speex – 8, 16, 32 Khz, Kbps Open source
Media transport RTP – Real-time Transport Protocol UDP Poort nummer is dynamisch (onderhandeld via SIP/SDP) 1 RTP pakket bevat meerdere samples Gangbare lengte is 20ms Codec informatie Timestamps, sequence numbers
Voorbeeld SIP gesprek INVITE 180 Ringing 200 OK Speech (RTP) BYE 200 OK ACK
SIP netwerk elementen User agent SIP endpoint, soft phone, hard phone SIP proxy (server) Routeren van SIP gesprekken Registrar Mapping IP adres naar SIP adres
SIP registratie Een SIP adres is niet gebonden aan een IP adres. Hoe weet het netwerk waar je bent? SIP proxy (registrar) Location database REGISTER 200 OK Store mapping SIP to IP address
SIP routering SIP proxy Location database INVITE Get IP address of IP = INVITE Een gesprek kan via meerdere proxies worden gerouteerd.
SIP routering (2) Hoe vindt een SIP endpoint de eerste proxy? Outbound proxy Handmatig geconfigureerd, DHCP DNS lookup host gedeelte van SIP URL Eg. DNS lookup van “example.com” SRV en/of A record lookups
SIP authenticatie HTTP digest authenticatie Voor REGISTER request Kan in prinicipe op alle SIP requests behalve CANCEL Voor een uitgaand gesprek is een registratie niet nodig Misbruik kan voorkomen worden door authenticatie op de INVITE request
SIP authenticatie (2) SIP proxy REGISTER 401 Unauthorized (nonce, realm) REGISTER (username, MD5 digest of request, password, nonce) 200 OK SIP user name voor authenticatie hoeft niet dezelfde te zijn als het user deel in een SIP URL.
Gesprek naar het PSTN Voor een gesprek naar het PSTN is een signaling/media gateway nodig. SIP proxy SIP RTP C7 / ISDN Voice circuit Telefooncentrale Signaling gateway Media gateway Signaling en media gateway kunnen in gecombineerd zijn
NAT Network Address Translation NAT breekt SIP signalering! SIP proxy ADSL modem/router Src ip: REGISTER Contact: Src ip: REGISTER Contact:
Oplossingen voor NAT probleem Handmatige configuratie publiek IP adres in SIP endpoint Gebruiker moet statische adres mapping in router maken STUN protocol Simple Traversal of UDP through NAT Makkelijker voor de gebruiker Niet 100% fool proof
STUN SIP endpoint vraagt aan STUN server wat zijn publieke IP adres is Werkt niet bij een symmetrische NAT Eerste REGISTER request creëert dynamische adres mapping in NAT Keep alive packets houden adres mapping levend
Wat is Twinkle SIP softphone voor Linux Qt based GUI Required libraries: commoncpp2, ccrtp Codecs: G.711a, G.711u, GSM Audio support: OSS, ALSA
Twinkle features 2 “lijnen” Call waiting/Call hold (wisselgesprek) 3-way conference call Call redirect (doorschakelen) Call reject Call transfer Do not disturb Auto answer DTMF events (voor IVR navigatie)
Twinkle wish list Address book (interface naar KAdressbook) Log inkomende en uitgaande gesprekken DNS SRV support Speex codec Video …
Hoe kan je nu bellen? Je kan direct IP to IP bellen met Twinkle Maar beter is het om een SIP provider te gebruiken, bijvoorbeeld: Een eigen SIP netwerk bouwen kan ook Asterisk, SIP Express Router (SER)
Demonstratie