Post on 14-Apr-2017
Introduction to Internet Introduction to Internet telephony (VoIP)telephony (VoIP)
Kundan SinghColumbia University
Introduction to VoIP 2
AgendaAgenda Introducing VoIP
What does it take to build simple audio telephony?
Inside Session Initiation Protocol (SIP) What are the main features of SIP
VoIP services using SIP How do we implement various services
like call transfer, auto-attendant, voicemail?
Introduction to VoIP 3
…
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
Audio Packet TransferAudio Packet Transfer
Introduction to VoIP 4
+127
+0
-127
10101111…01101101
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)
Encode each quantized sample into 8 bit code word
PCM: 8000 x 8 bits = 64 kb/s
Other techniques (differential coding, linear prediction) 2.4 kb/s to 64 kb/s
Sampling, Quantization, EncodingSampling, Quantization, Encoding
Introduction to VoIP 5
Unreliable UDP a) Packet lossb) Out-of-order (very rarely)c) Jitter (delay variation)
1 2 3 5 7 6
1 2 3 4 5 6 7
timeline
Sender
Receiver
(a)(b)
Problems with UDPProblems with UDP
Introduction to VoIP 6
Receive buffer Receive buffer (playout buffer or circular buffer)(playout buffer or circular buffer)
playout buffer
while (true) {
buf = read(au,20ms); //blocks
if (!silence)
sendto(remote, buf);
…
buf = get(20 ms);
write(au, buf);
}
20 ms packetmicrophone
sendto(remote IP:port)read
speaker
20 ms packet
write get
Receivedpacket
recvfrom()put
while (true) {
buf = recvfrom(...); // blocks
put(buf);
}
Introduction to VoIP 7
Sender
Receiver
Receive buffer Receive buffer (playout buffer or circular buffer)(playout buffer or circular buffer)
1 2 3 5 7 6
1 2 3 4 5 6 7
8 9 0 2 3 4
8 9 0 1 2 3 4
Receive buffer: to absorb jitter Tradeoff in buffer size Adaptive delay adjustment Sequence number: to detect packet loss; Just ignore the loss!
321
1
21
21
2
3
5
7 5
76
87
98
09
0
2
32
Introduction to VoIP 8
1 2 3 4
1 2 3 4
Sender
Receiver
5 6 7
5 6 7Silence …
t1 t2 t3 t4 t5 t6 t7 t8 t9
Playout time vs packet loss detection
Timestamp vs sequence numberTimestamp vs sequence number Silence suppression Variable length
packets
Introduction to VoIP 9
Encoded Audio
RTP Header
UDP header
IP header
msg
sendto(…, msg, …)recvfrom(…, msg, …)
Sequence number
Optional contributors’ list (CSrc)
Source identifier (SSrc)
Timestamp (proportional to sampling time)
Payload typeCC MV P X
Real-time Transport Protocol (RTP)Real-time Transport Protocol (RTP)
RTP: media transportRTCP: QoS feedback
8 bits 8 bits 16 bits
Introduction to VoIP 10
RTP-based conferenceRTP-based conference
224.1.2.3:8000
ssrc=5263 ssrc=7182
ssrc=2639 ssrc=9844Session identified using receive IP address + port
Introduction to VoIP 11
RTP-based conferenceRTP-based conference
Mixer Transcoder-law
-law
G.729
G.729
-law
-law
Mixer mixes multiple streams, and puts rtp.ssrcs of contributors in the mixed packet as rtp.csrc
Transcoder converts one encoding to another. Typically to accommodate heterogeneous bandwidth links.
Introduction to VoIP 12
Why do we need signaling?Why do we need signaling?
Alice128.59.19.194
Bob202.16.49.27
Sam154.28.32.112
Henry125.33.2.81
Bob=>192.1.2.3
Sam 154.28.32.112
Henry=>125.33.2.81
Alice=>128.59.19.194
Where is Alice?
128.59.19.194
INVITE for a call using µ-law and G.729 at 202.16.49.27:8000
OK using µ-law at 128.59.19.194
1. Locate destination user2. Negotiate session parameters
Introduction to VoIP 13
columbia.edu yahoo.com
home.com
office.com
Alice
Bob
128.59.19.194
Session Initiation Protocol (SIP)Session Initiation Protocol (SIP) Address similar to email sip:alice@home.com Two stage lookup:
DNS: uses naming authority pointer and service records Database or service logic: within a domain
Jane128.59.19.61
$ dig –t naptr columbia.educolumbia.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.educocoa.cc.columbia.edu. 3600 IN A 128.59.59.199
Introduction to VoIP 14
INVITE sip:alice@home.com SIP/2.0From: “Bob” <bob@office.com>To: “Alice” <alice@home.com>Subject: How are you?...
SIP/2.0 200 OKFrom: “Bob” <bob@office.com>To: “Alice” <alice@home.com>Subject: How are you?...
Request
Response
SIP message formatSIP message format
Introduction to VoIP 15
AliceBob
INVITE alice@home.com I can support -law and G.729Send me audio at 202.16.49.27:6780
OK; I can support -lawSend me audio at 128.59.19.194:8000
202.16.49.27 128.59.19.194
To port 8000RTP
To port 6780RTP
Session Description Protocol (SDP)Session Description Protocol (SDP)
ACK
Introduction to VoIP 16
INVITE sip:alice@home.com SIP/2.0...v=0o=bob 26172 27162 IN IP4 202.16.49.27s=SIP callc=IN IP4 202.16.49.27t=0 0m=audio 6780 RTP/AVP 0 8 5m=video 6790 RTP/AVP 31
Request
Response
SIP/2.0 200 OK...c=IN IP4 128.59.19.194t=0 0m=audio 8000 RTP/AVP 0 8m=video 0 RTP/AVP 31
SDP message format and offer SDP message format and offer answeranswer
Introduction to VoIP 17
AgendaAgenda Introducing VoIP
What does it take to build simple audio telephony?
Inside Session Initiation Protocol (SIP) What are the main features of SIP
VoIP services using SIP How do we implement various services
like call transfer, auto-attendant, voicemail?
Introduction to VoIP 18
SIP SIP isis…, SIP …, SIP is notis not … … SIP = core protocol for establishing sessions
in the Internet (peer-to-peer) Transports session description information
from initiator (caller) to receiver (callee) Allows change of parameters in mid-session Terminate session NOT for distribution of multimedia data NOT suitable for media gateway control . . .
SIP applications typically fall in following categories:• setting up voice-over-IP calls• setting up multimedia conferences• event notification => IM and presence• text and general messaging• signaling transport
Introduction to VoIP 19
AddressingAddressing Personal mobility:
Examples: “Alice Smith” <sip:alice@columbia.edu> sip:alice@128.59.19.194:5070 sip:alice@columbia.edu;user=phone;transport=tcp
tel:12125551234
tel:19172223333
pc12.columbia.edu
yahoo.com
columbia.edu
alice24@yahoo.com
alice@columbia.edu
1234@columbia.edu
Alice.Smith@columbia.edu
Introduction to VoIP 20
SIP message formatSIP message format Very similar to HTTP/1.1
Text-based, request-response Request method operates on
the resource/entity identified in URI
Headers: To, From, Call-ID, CSeq:
transaction identification Via: response traverses the
reverse request path Content-Length, Content-Type:
message body information Syntax:
White-space doesn’t matter except in first line
Lines can be folded Multi-valued header fields can
be combiled as a comma-list
Requests: INVITE, ACK, BYE, CANCEL: related
to call setup and tear down OPTIONS, INFO, COMET, PRACK,
SUBSCRIBE, NOTIFY, PUBLISH, REFER, …
Responses: 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, …
Introduction to VoIP 21
Building blocksBuilding blocks SIP user agent
IP phone, PC, conference bridge,…
SIP redirect server returns new location for
requests SIP stateless proxy
routes call requests SIP (forking) stateful proxy
routes call requests SIP registrar
accepts name to address mapping
Location server maintains name to address
mapping
Maintaining state stateless: each request and
each response handled independently
Fast load balancing proxies; robust
(transaction) stateful: remember a whole request/response transaction
Enterprise servers, . . . call stateful: remember a call
from beginning to end Billing, NAT traversal, . . .
Typically implemented in a single software or box
Other entities: outbound proxy, back-to-back user agent (b2bua), application-level-gateway (ALG), …
Introduction to VoIP 22
Message routingMessage routing Response follows the reverse request path
Via header in SIP message records the request path
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 q-value in Contact) Caller and callee info: further govern
request routing
Via: a.home.comVia: b.example.comVia: a.home.com
Via: c.yahoo.comVia: b.example.comVia: a.home.com
alice@home.com bob@example.com bob@yahoo.com bob@ip2.yahoo.com
Via: a.home.com Via: b.example.comVia: a.home.com
Via: c.yahoo.comVia: b.example.comVia: a.home.com
q=1.0
q=0.7
q=0.2
INVITE 302 moved
486 busy
200 OK
Introduction to VoIP 23
(3) invite (4) moved
(5)
@school.edu
Bob
@home.com
Example call setupExample call setup
(6)(6)
(6)
unavailable (7)
Alice
(8)
(11) cancel
(12) ok
(13)
(1) invite
(2) moved
@yahoo.com
@residence.net
@visiting.com
@lab.school.edu
(9) ok
(10)
Introduction to VoIP 24
TransportTransport SIP can operate on any
packet network, reliable or unreliable
UDP: most common Low state overhead But small max packet
size TCP:
Use with SSL Connection setup
overhead Head of line blocking for
trunks (use SCTP instead)
Transport reliability Request
retransmissions, exponential back-off interval
INVITE different than other methods
Retransmit INVITE response after provisional response was sent
Introduction to VoIP 25
NAT traversalNAT traversal Problem: Solutions:
Smart servers (open)SER allows detecting
nodes behind a NAT Use application level
gateway and media-proxy SIP Signaling
Symmetric response routing for UDP (rport)
Connection reuse for TCP/TLS (sip-outbound)
Media STUN: Simple traversal of
UDP through NAT TURN: Traversal using
relay NAT ICE: Interactive
connectivity establishmentL=10.1.2.3:5060
REGISTER alice@iptel.orgContact: sip:alice@10.1.2.3:5060. . .
E=128.59.19.194:8123
iptel.org
INVITE alice@
Introduction to VoIP 26
NAT traversal (ICE)NAT traversal (ICE)1. Address gathering2. Negotiation3. Connectivity check
L=10.1.2.3:8000 192.168.1.2:6000
example.net
STUN serverstun01.sipphone.com
E=128.59.19.194:8123
R=192.1.2.3:7002
Gather addresses (L,E,R)10.1.2.3:8000 (local)128.59.19.194:8123 (external)192.1.2.3:7002 (relay)
Gather addresses192.168.1.2:6000 (local)135.59.22.99:6000 (external)192.1.2.4:9004 (relay)
INVITE (offer)
OK (answer)
10.1.2.3:8000
Introduction to VoIP 27
AgendaAgenda Introducing VoIP
What does it take to build simple audio telephony?
Inside Session Initiation Protocol (SIP) What are the main features of SIP
VoIP services using SIP How do we implement various services
like call transfer, auto-attendant, voicemail?
Introduction to VoIP 28
IP telephony services (PSTN)IP telephony services (PSTN) Call routing services: pre-
call, one party speed dial call forwarding “follow me” call filtering/blocking
(in/out) do not disturb distinctive ringing
Call handling features autoanswer
Multi-party features call waiting call transfer (blind,
consultative) conference call call park call pickup music on hold call monitoring
IP-telephony can’t win by just providing what PSTN has
Introduction to VoIP 29
IP telephony services (Internet)IP telephony services (Internet) Presence-enabled calls
place call only if callee is available Presence-enabled conferencing
call conference participants when all are online and not busy
IM conference alerts receive IM when someone joins a conference
Unified messaging receive email, IM alert for new voicemails
Programmability of services
Introduction to VoIP 30
Where do the services reside?Where do the services reside?
Make call when boss is online …
Enter your authentication PIN for billing…
B2BUA
Double ringing sound when boss calls…
Endpoint
Forward to office phone during day, and home phone during evening…
Proxy/registrar
Endpoint
Service control on client vs server
Use finger for locating user…
Introduction to VoIP 31
Endpoint call controlEndpoint 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 32
Network call controlNetwork call control Common gateway
interface -- SIP-CGI (RFC 3050)
Call processing language -- CPL (XML-based, allows GUI)
SIP servlets (Java)
Priority.pl
SIP_FROMSIP_TOstdin
CGI-PROXY-REQUESTstdout
SIP proxy
Urgent
Low-priority
Voicemail
Phone
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"; }}
Introduction to VoIP 33
Call transferCall transfer REFER Blind/ consultation/
attended
active call
REFER CReferred-By: B
INVITE CReferred-By: BBYE A
A B
C
active call
Introduction to VoIP 34
B2BUA and third-party call controlB2BUA and third-party call control Back-to-back UA
Incoming call triggers outgoing call
Services Calling card Anonymizer
INVITE
AB
CSIP
SIP
OK (SDP1)ACK INVITE (SDP1)
OK (SDP2)
ACKINVITE (SDP2)OKACK
Introduction to VoIP 35
VoicemailVoicemailVarious design alternatives
vmail.pl
SIP_FROMSIP_TOstdin
CGI-PROXY-REQUESTstdout
If no response
Proxy controls
accept after 15s
Voicemail acts like a phone
alice@vmail.yahoo.com
Redirect after 10s
Endpoint based
Introduction to VoIP 36
Interactive voice response Interactive voice response using VoiceXMLusing VoiceXML
Telephone
PSTN
Voice gateway
Web server• Service logic (CGI, servlet, JSP)
• Voice and telephony functions• VoiceXML browser
Internet userVXMLVXML HTMLHTML
Internet
IVR platform• Voice and telephony functions (ASR, TTS, DTMF)• Service logic (application specific)
VXML BrowserGateway
Introduction to VoIP 37
VoiceXML contd.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 39
Interworking with telephone networkInterworking with telephone network
Translating audio (µ-law/A-law) Translating signaling (PRI/T1,ISUP)
Overlap signaling Advanced features in SIP are lost in PSTN
Translating identifiers (phone number) Determining transition points
Telephonenetwork
SIP/PSTN gateway
SIP server IP endpointTelephonesubscriber
+1-415-123-4567 sip:bob@home.com
IP to telephone Static mapping
1-212854xxxx=>@gw1.columbia.edu Gateway information is dynamic:
Overlapping networks Multiple providers Load balancing
Telephony routing over IP (TRIP) Route advertisement Can be implemented in outbound
proxy Suitable for current hierarchical
network+1 @service.mci.com at 4¢/min+1212 @nyc.gw.com at 1¢/min+1212939 @itgw1.columbia.edu free
Telephone to IP Gateway knows the SIP
server <sip:4567@gateway2.example.com
;user=phone>
ENUM – E164 numbering (using DNS)
+1 212 9397042 => 2.4.0.7.9.3.9.2.1.2.1.e164.arpa => sip:hgs@cs.columbia.edu
Suitable for relatively “static” contacts
Introduction to VoIP 40
SummarySummary Introducing VoIP
Basic audio transfer, why we need RTP and SIP/SDP?…
Inside SIP Message format, addressing, building
blocks, routing, transport, NAT traversal, … VoIP services using SIP
Types of services, programmability, call transfer, third-party, voicemail, interactive voice response, telephone interworking, …
Introduction to VoIP 41
VoIP activitiesVoIP activities IETF working groups: sip, sipping, mmusic,
xcon, p2psip, simple, impp, iptel, enum, ecrit, avt, sigtran, midcom, …
Elsewhere: 3GPP, ITU-T, W3C, Jabber/XSF, ETSI-Tiphon, IMTC, sip-forum, VON, …
Introduction to VoIP 42
ReferencesReferences 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