Sie sind auf Seite 1von 42

Introduction to Internet telephony (VoIP)

Kundan Singh

Agenda


Introducing VoIP


What does it take to build simple audio telephony? What are the main features of SIP How do we implement various services like call transfer, auto-attendant, voicemail?
Introduction to VoIP 2

Inside Session Initiation Protocol (SIP)




VoIP services using SIP




Audio Packet Transfer

 

Digitization (e.g., sampling at 8kHz, 16 bits per sample, i.e, 128 kb/s or 320 bytes per 20 ms) Real-time compression/encoding (e.g., G.729A at 8 kb/s) Transport to remote IP address and port number over UDP (Why not TCP?) Processing on receiver side is the reverse

Introduction to VoIP

Sampling, Quantization, Encoding


+127

1010111101101101

Encode each quantized sample into 8 bit code word


+0

PCM: 8000 x 8 bits = 64 kb/s


Other techniques (differential coding, linear prediction) 2.4 kb/s to 64 kb/s

-127

Sample at twice the highest voice frequency 2 x 4000=8000 Hz (interval of 125 sec)

Round off samples to one of 256 levels (introduces noise)


Introduction to VoIP 4

Problems with UDP


timeline Sender

5
(a)

7
(b)

1
Receiver

Unreliable UDP a) Packet loss b) Out-of-order (very rarely) c) Jitter (delay variation)
Introduction to VoIP 5

Receive buffer
(playout buffer or circular buffer)
read microphone 20 ms packet sendto(remote IP:port)

write speaker

20 ms packet

get

put while (true) { buf = read(au,20ms); //blocks if (!silence) sendto(remote, buf); buf = get(20 ms); write(au, buf); } playout buffer

Received packet

recvfrom()

while (true) { buf = recvfrom(...); // blocks put(buf); }

Introduction to VoIP

Receive buffer
(playout buffer or circular buffer)
  

Sender 1 2 3

Receive buffer: to absorb jitter Tradeoff in buffer size Adaptive delay adjustment Sequence number: to detect packet loss; Just ignore the loss!
4 5 6 7 8 9 0 1 2 3 4

1 Receiver 3 2 1

2 1

7 2 1 5 2 3 5 7 6 8 7 9 8 0 9 2 0 3 2

Introduction to VoIP

Timestamp vs sequence number


 

Silence suppression Variable length packets

Sender

t1 1

t2 2

t3 3

t4

t5

t6 4

t7 5

t8 6

t9 7

Silence

1 Receiver

Playout time vs packet loss detection


Introduction to VoIP 8

RealReal-time Transport Protocol (RTP)


IP header UDP header RTP Header Source identifier (SSrc) Optional contributors list (CSrc)
8 bits 8 bits 16 bits

V PX

CC

M Payload type

Sequence number

Timestamp (proportional to sampling time)

msg

Encoded Audio

sendto(, msg, ) recvfrom(, msg, )

RTP: media transport RTCP: QoS feedback

Introduction to VoIP

RTPRTP-based conference

ssrc=5263 224.1.2.3:8000

ssrc=7182

ssrc=2639

Session identified using receive IP address + port


Introduction to VoIP

ssrc=9844
10

RTPRTP-based conference
Mixer mixes multiple streams, and puts rtp.ssrcs of contributors in the mixed packet as rtp.csrc
Q-law

Transcoder converts one encoding to another. Typically to accommodate heterogeneous bandwidth links.

Mixer

7
Q-law

Q-law

Transcoder

G.729

Q-law

G.729

Introduction to VoIP

11

Why do we need signaling?

Bob 202.16.49.27

Alice 128.59.19.194

Sam 154.28.32.112

1. Locate destination user 2. Negotiate session parameters


Introduction to VoIP

Henry 125.33.2.81
12

Session Initiation Protocol (SIP)


 

Address similar to email sip:alice@home.com Two stage lookup:


 

office.com
Bob

DNS: uses naming authority pointer and service records Database or service logic: within a domain

home.com
columbia.edu yahoo.com Alice 128.59.19.194 Jane 128.59.19.61
$ dig t naptr columbia.edu columbia.edu. 3600 IN NAPTR 1 0 "s" "SIP+D2U" "" _sip._udp.columbia.edu. columbia.edu. 3600 IN NAPTR 2 0 "s" "SIP+D2T" "" _sip._tcp.columbia.edu. $ dig t srv _sip._udp.columbia.edu _sip._udp.columbia.edu. 3600 IN SRV 10 10 5060 cocoa.cc.columbia.edu. _sip._udp.columbia.edu. 3600 IN SRV 10 10 5060 eclair.cc.columbia.edu. $ dig t a cocoa.cc.columbia.edu cocoa.cc.columbia.edu. 3600 IN A 128.59.59.199

Introduction to VoIP

13

SIP message format


Request

INVITE sip:alice@home.com SIP/2.0 From: Bob <bob@office.com> To: Alice <alice@home.com> Subject: How are you? ...
Response

SIP/2.0 200 OK From: Bob <bob@office.com> To: Alice <alice@home.com> Subject: How are you? ...

Introduction to VoIP

14

Session Description Protocol (SDP)


INVITE alice@home.com I can support Q-law and G.729 Send me audio at 202.16.49.27:6780 OK; I can support Q-law Send me audio at 128.59.19.194:8000 ACK
RTP To port 8000 RTP To port 6780

Bob

Alice

202.16.49.27

128.59.19.194

Introduction to VoIP

15

SDP message format and offer answer


Request INVITE sip:alice@home.com SIP/2.0 ... v=0 o=bob 26172 27162 IN IP4 202.16.49.27 s=SIP call c=IN IP4 202.16.49.27 Response t=0 0 m=audio 6780 RTP/AVP 0 8 5 m=video 6790 RTP/AVP 31 SIP/2.0 200 OK ... c=IN IP4 128.59.19.194 t=0 0 m=audio 8000 RTP/AVP 0 8 m=video 0 RTP/AVP 31
Introduction to VoIP 16

Agenda


Introducing VoIP


What does it take to build simple audio telephony? What are the main features of SIP How do we implement various services like call transfer, auto-attendant, voicemail?
Introduction to VoIP 17

Inside Session Initiation Protocol (SIP)




VoIP services using SIP




SIP is , SIP is not


SIP = core protocol for establishing sessions in the Internet (peer-to-peer)  Transports session description information from initiator typically to in following categories: SIP applications (caller) fall receiver (callee) setting up voice-over-IP calls  Allows change of parameters in mid-session setting up multimedia conferences  Terminate session IM and presence event notification => text for distribution of multimedia data  NOTand general messaging signaling transport  NOT suitable for media gateway control  . . .

Introduction to VoIP 18

Addressing


Personal mobility:
yahoo.com

alice24@yahoo.com alice@columbia.edu 1234@columbia.edu Alice.Smith@columbia.edu


columbia.edu

tel:12125551234

tel:19172223333

pc12.columbia.edu

Examples:
  

Alice Smith <sip:alice@columbia.edu> sip:alice@128.59.19.194:5070 sip:alice@columbia.edu;user=phone;transport=tcp


Introduction to VoIP 19

SIP message format




Very similar to HTTP/1.1


 

Requests:


Text-based, request-response Request method operates on the resource/entity identified in URI To, From, Call-ID, CSeq: transaction identification Via: response traverses the reverse request path Content-Length, Content-Type: message body information White-space doesn t matter except in first line Lines can be folded Multi-valued header fields can be combiled as a comma-list

Headers:


INVITE, ACK, BYE, CANCEL: related to call setup and tear down OPTIONS, INFO, COMET, PRACK, SUBSCRIBE, NOTIFY, PUBLISH, REFER, Provisional: 100 Trying, 180 Ringing, 183 Session progress, Success: 200 OK, 202 Pending, Redirection: 301 Moved permanently, 302 Moved temporarily, Request failure: 400 Bad Request, 401 Unauthorized, 404 Not found, 480 Not available, 486 Busy here, Server failure: 500 Internal server error, 501 Not implemented, Global failure: 600 Busy everywhere, 603 Decline,

Responses:


 

Syntax:
 

 

Introduction to VoIP

20

Building blocks


SIP user agent




Maintaining state


IP phone, PC, conference bridge, returns new location for requests

SIP redirect server




stateless: each request and each response handled independently




Fast load balancing proxies; robust

SIP stateless proxy




(transaction) stateful: remember a whole request/response transaction




routes call requests




Enterprise servers, . . .

SIP (forking) stateful proxy




routes call requests accepts name to address mapping maintains name to address mapping

call stateful: remember a call from beginning to end




SIP registrar


Billing, NAT traversal, . . .

Location server


Typically implemented in a single software or box

Other entities: outbound proxy, back-to-back user agent (b2bua), application-levelgateway (ALG),

Introduction to VoIP

21

Message routing


Response follows the reverse request path




Via header in SIP message records the request path


Via: b.example.com Via: a.home.com Via: b.example.com Via: a.home.com bob@example.com Via: c.yahoo.com Via: b.example.com Via: a.home.com

Via: a.home.com Via: a.home.com alice@home.com




Via: c.yahoo.com Via: b.example.com Via: a.home.com bob@yahoo.com bob@ip2.yahoo.com

Request routing decision at each hop




Usually direct end-to-end transport after initial request Forcing request path: Record-route and Route headers. Request forking: parallel vs sequential (use qvalue in Contact) Caller and callee info: further govern request routing

q=1.0

INVITE 486 busy

q=0.7

q=0.2

Introduction to VoIP

22

Example call setup


(9) ok
@residence.net

Alice

(10) (6)

(8)
@visiting.com

(13) unavailable (7) (6) (5) (3) invite (12) ok


Bob
@home.com @school.edu

(4) moved (6) (11) cancel


@lab.school.edu

(2) moved (1) invite


@yahoo.com

Introduction to VoIP

23

Transport


SIP can operate on any packet network, reliable or unreliable UDP: most common
 

Transport reliability


Low state overhead But small max packet size Use with SSL Connection setup overhead Head of line blocking for trunks (use SCTP instead)

Request retransmissions, exponential back-off interval INVITE different than other methods


TCP:
  

Retransmit INVITE response after provisional response was sent

Introduction to VoIP

24

NAT traversal


Problem:
iptel.org INVITE alice@

Solutions:


Smart servers
 

(open)SER allows detecting nodes behind a NAT Use application level gateway and media-proxy Symmetric response routing for UDP (rport) Connection reuse for TCP/TLS (sip-outbound) STUN: Simple traversal of UDP through NAT TURN: Traversal using relay NAT ICE: Interactive connectivity establishment

SIP Signaling
 

E=128.59.19.194:8123

Media
 

REGISTER alice@iptel.org Contact: sip:alice@10.1.2.3:5060 ...

L=10.1.2.3:5060

Introduction to VoIP

25

NAT traversal (ICE)


STUN server stun01.sipphone.com
R=192.1.2.3:7002
1. 2. 3.

Address gathering Negotiation Connectivity check

INVITE (offer)

example.net OK (answer)

E=128.59.19.194:8123

L=10.1.2.3:8000 10.1.2.3:8000 Gather addresses (L,E,R) 10.1.2.3:8000 (local) 128.59.19.194:8123 (external) 192.1.2.3:7002 (relay)

192.168.1.2:6000

Gather addresses 192.168.1.2:6000 (local) 135.59.22.99:6000 (external) 192.1.2.4:9004 (relay)

Introduction to VoIP

26

Agenda


Introducing VoIP


What does it take to build simple audio telephony? What are the main features of SIP How do we implement various services like call transfer, auto-attendant, voicemail?
Introduction to VoIP 27

Inside Session Initiation Protocol (SIP)




VoIP services using SIP




IP telephony services (PSTN)




Call routing services: precall, one party


   

Multi-party features
 

 

speed dial call forwarding follow me call filtering/blocking (in/out) do not disturb distinctive ringing autoanswer

    

call waiting call transfer (blind, consultative) conference call call park call pickup music on hold call monitoring

Call handling features




IP-telephony can t win by just providing what PSTN has


Introduction to VoIP 28

IP telephony services (Internet)




Presence-enabled calls


place call only if callee is available call conference participants when all are online and not busy receive IM when someone joins a conference receive email, IM alert for new voicemails

Presence-enabled conferencing


IM conference alerts


Unified messaging


Programmability of services
Introduction to VoIP 29

Where do the services reside?


Enter your authentication PIN for billing Use finger for locating user Double ringing sound when boss calls

B2BUA
Make call when boss is online

Endpoint

Proxy/registrar
Forward to office phone during day, and home phone during evening

Endpoint

Service control on client vs server


Introduction to VoIP 30

Endpoint call control


  

Language for End System Services (LESS) for endpoint service creation Direct user interaction, direct media control Handle converged information, e.g., call, presence, email

Example: when buddy is online, make a call


<less name="online_call" require="generic presence ui"> <notification status="online" priority="0.5"> <address-switch field="origin"> <address is=alice@home.com"> <call /> <alert sound=ring.au" text="Calling " /> </address> </address-switch> </notification> </less>
Introduction to VoIP 31

Network call control



Priority.pl

SIP_FROM SIP_TO stdin

CGI-PROXY-REQUEST stdout

Common gateway interface -SIP-CGI (RFC 3050) Call processing language -CPL (XML-based, allows GUI) SIP servlets (Java)

if (defined $ENV{SIP_FROM} && $ENV{SIP_FROM} =~ /sip:boss@mycompany.com/) { foreach $reg (get_regs()) { print "CGI-PROXY-REQUEST $reg SIP/2.0\n"; print "Priority: urgent\n\n"; } } Low-priority Urgent

SIP proxy

Phone

Introduction to VoIP

32 Voicemail

Call transfer
A B
 

REFER Blind/ consultation/ attended

C active call REFER C Referred-By: B INVITE C Referred-By: B BYE A active call

Introduction to VoIP

33

B2BUA and third-party call control third

Back-to-back UA


B A

SIP SIP

Incoming call triggers outgoing call Calling card Anonymizer

Services
 

INVITE OK (SDP1) ACK INVITE (SDP1) OK (SDP2) INVITE (SDP2) OK ACK


Introduction to VoIP 34

ACK

Voicemail
Various design alternatives

Endpoint based

Redirect after 10s

alice@vmail.yahoo.com

Proxy controls
vmail.pl

Voicemail acts like a phone

SIP_FROM SIP_TO stdin

CGI-PROXY-REQUEST stdout

If no response

accept after 15s

Introduction to VoIP

35

Interactive voice response


using VoiceXML
Gateway VXML Browser

PSTN
Telephone

Internet
Voice gateway VXML Voice and telephony functions VoiceXML browser
HTML Internet user

IVR platform Voice and telephony functions (ASR, TTS, DTMF) Service logic (application specific)

Web server Service logic (CGI, servlet, JSP)

Introduction to VoIP

36

VoiceXML contd.
<form action=url> Enter your Id: <input name=id> <input type=submit> </form> <form> <field name=id> <prompt> Your ID, please. </prompt> </field> <block> <submit next=url/> </block> </form>

Telephony, speech synthesis or audio output, user input and grammar, program flow, variable and properties, error handling,
Introduction to VoIP 37

DTMF
PSTN
Telephone SIP/PSTN gateway

Internet
Internet user Audio

D
SIP INFO

RTP/ RFC2833

Introduction to VoIP

38

Interworking with telephone network


+1-415-123-4567 sip:bob@home.com

IP to telephone Telephone to IP  Static mapping Telephone  Gateway knows the SIP server Telephone SIP/PSTN SIP server
network subscriber gateway  <sip:4567@gateway2.example.com  ;user=phone>


1-212854xxxx=>@gw1.columbia.edu

IP endpoint

Gateway information is dynamic:

 Overlapping networks  E164 numbering (using ENUM Translating audio (-law/A-law)  Multiple providers DNS) Translating signaling (PRI/T1,ISUP)  Load balancing +1 212 9397042 =>  Overlap signaling 2.4.0.7.9.3.9.2.1.2.1.e164.arp  Telephony routing over IP (TRIP) a => sip:hgs@cs.columbia.edu in SIP are Route in PSTN   Advanced features lost advertisement
 

Suitable for relatively static contacts 

Can be implemented in outbound proxy Translating identifiers (phone number) hierarchical network  Suitable for current +1 Determining transition points @service.mci.com at 4/min +1212 @nyc.gw.com at 1/min +1212939 @itgw1.columbia.edu free


Introduction to VoIP

39

Summary


Introducing VoIP


Basic audio transfer, why we need RTP and SIP/SDP? Message format, addressing, building blocks, routing, transport, NAT traversal, Types of services, programmability, call transfer, third-party, voicemail, interactive voice response, telephone interworking,
Introduction to VoIP 40

Inside SIP


VoIP services using SIP




VoIP activities


IETF working groups: sip, sipping, mmusic, xcon, p2psip, simple, impp, iptel, enum, ecrit, avt, sigtran, midcom, Elsewhere: 3GPP, ITU-T, W3C, Jabber/XSF, ETSITiphon, IMTC, sip-forum, VON,

Introduction to VoIP

41

References
  

 

SIP: RFC 3261-3265 http://www.cs.columbia.edu/sip RTP: RFC 3550, 3551, http://www.cs.columbia.edu/~hgs/rtp My thesis: http://www.cs.columbia.edu/~kns10/publication/thesis.pdf (part III: Enterprise IP telephony) Open source SIP server: http://www.openser.org Free SIP accounts: http://iptel.org

Introduction to VoIP

42

Das könnte Ihnen auch gefallen