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 Wat is VoIP? Voice over IP Signalering (opzetten van een gesprek) Media transport (audio, video) signalering IP media Signaleringsprotocollen H.323 SIP - Session Initiation Protocol IETF protocol MGCP - Media Gateway Control Protocol ITU protocol familie 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 sip:[email protected] 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 GSM – 8 Khz, 13 Kbps G.729 – 8 Khz, 8 Kbps Standaard telefonie 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 Voorbeeld SIP gesprek INVITE sip:[email protected] 180 Ringing 200 OK ACK Speech (RTP) BYE 200 OK SIP netwerk elementen User agent SIP proxy (server) SIP endpoint, soft phone, hard phone 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? Location database REGISTER Store mapping SIP to IP address 200 OK SIP proxy (registrar) 10.0.0.1 sip:[email protected] SIP routering Location database Get IP address of sip:[email protected] INVITE sip:[email protected] SIP proxy IP = 10.0.0.1 INVITE 10.0.0.1 sip:[email protected] 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:[email protected] 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) REGISTER 401 Unauthorized (nonce, realm) SIP proxy 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. Signaling gateway C7 / ISDN SIP SIP SIP proxy Telefooncentrale RTP Voice circuit Media gateway Signaling en media gateway kunnen in gecombineerd zijn NAT Network Address Translation NAT breekt SIP signalering! 10.0.0.151 10.0.0.1 1.1.1.1 ADSL modem/router Src ip: 10.0.0.1 REGISTER Contact: sip:[email protected] SIP proxy Src ip: 1.1.1.1 REGISTER Contact: sip:[email protected] 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: Codecs: commoncpp2, ccrtp 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) Demonstratie