Twinkle

advertisement
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
Download