230 likes | 332 Views
Een SIP softphone voor Linux Michel de Boer www.twinklephone.com. Agenda. Wat is VoIP SIP Interface VoIP naar PSTN NAT Wat is Twinkle Demonstratie. signalering. media. Wat is VoIP?. Voice over IP Signalering (opzetten van een gesprek) Media transport (audio, video). IP.
E N D
Een SIP softphone voor Linux Michel de Boer www.twinklephone.com
Agenda • Wat is VoIP • SIP • Interface VoIP naar PSTN • NAT • Wat is Twinkle • Demonstratie
signalering media Wat is VoIP? • Voice over IP • Signalering (opzetten van een gesprek) • Media transport (audio, video) IP
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 • sip:michel@twinklephone.com • 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, 2.15-44.2 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
INVITE sip:michel@10.0.0.1 180 Ringing 200 OK ACK Speech (RTP) BYE 200 OK Voorbeeld SIP gesprek
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
REGISTER Store mapping SIP to IP address 200 OK SIP registratie • Een SIP adres is niet gebonden aan een IP adres. • Hoe weet het netwerk waar je bent? Location database SIP proxy (registrar) 10.0.0.1 sip:michel@example.com
Get IP address of sip:michel@example.com IP = 10.0.0.1 INVITE sip:michel@exmaple.com INVITE SIP routering Location database SIP proxy 10.0.0.1 sip:michel@example.com 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. sip:michel@example.comDNS 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
REGISTER 401 Unauthorized (nonce, realm) REGISTER (username, MD5 digest of request, password, nonce) 200 OK SIP proxy SIP authenticatie (2) SIP user name voor authenticatie hoeft niet dezelfde te zijn als het user deelin een SIP URL.
SIP proxy Gesprek naar het PSTN • Voor een gesprek naar het PSTN is een signaling/media gateway nodig. Signaling gateway C7 / ISDN SIP SIP Telefooncentrale RTP Voice circuit Media gateway Signaling en media gateway kunnen in gecombineerd zijn
Src ip: 10.0.0.1 REGISTER Contact: sip:michel@10.0.0.1 Src ip: 1.1.1.1 REGISTER Contact: sip:michel@10.0.0.1 SIP proxy NATNetwork Address Translation • NAT breekt SIP signalering! 10.0.0.151 1.1.1.1 ADSL modem/router 10.0.0.1
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: • www.sipphone.com • www.freeworlddialup.com • www.sipgate.com • Een eigen SIP netwerk bouwen kan ook • Asterisk, SIP Express Router (SER)