Title: Introduction to Internet telephony VoIP
1Introduction to Internet telephony (VoIP)
2Agenda
- 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?
3Audio 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
4Sampling, Quantization, Encoding
1010111101101101
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
Sample at twice the highest voice frequency 2 x
40008000 Hz (interval of 125 µsec)
Round off samples to one of 256 levels
(introduces noise)
5Problems with UDP
- Unreliable UDP
- Packet loss
- Out-of-order (very rarely)
- Jitter (delay variation)
6Receive buffer (playout buffer or circular
buffer)
while (true) buf read(au,20ms) //blocks
if (!silence) sendto(remote, buf) buf
get(20 ms) write(au, buf)
playout buffer
while (true) buf recvfrom(...) // blocks
put(buf)
7Receive buffer (playout buffer or circular
buffer)
- Receive buffer to absorb jitter
- Tradeoff in buffer size
- Adaptive delay adjustment
- Sequence number to detect packet loss Just
ignore the loss!
Sender
Receiver
8Timestamp vs sequence number
- Silence suppression
- Variable length packets
Sender
t1
t2
t3
t4
t5
t6
t7
t8
t9
Silence
1
2
3
4
5
6
7
1
2
3
4
5
6
7
Receiver
Playout time vs packet loss detection
9Real-time Transport Protocol (RTP)
IP header
Sequence number
Payload type
CC
M
V
P
X
UDP header
Timestamp (proportional to sampling time)
RTP Header
Source identifier (SSrc)
Encoded Audio
Optional contributors list (CSrc)
msg
RTP media transport RTCP QoS feedback
sendto(, msg, ) recvfrom(, msg, )
10RTP-based conference
ssrc5263
ssrc7182
224.1.2.38000
Session identified using receive IP address port
ssrc2639
ssrc9844
11RTP-based conference
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.
?-law
Mixer
Transcoder
?
?-law
?
G.729
G.729
?-law
?-law
12Why do we need signaling?
Alice 128.59.19.194
Bob 202.16.49.27
Sam 154.28.32.112
Henry 125.33.2.81
- Locate destination user
- Negotiate session parameters
13Session Initiation Protocol (SIP)
- Address similar to email sipalice_at_home.com
- Two stage lookup
- DNS uses naming authority pointer and service
records - Database or service logic within a domain
office.com
Bob
home.com
Alice
128.59.19.194
columbia.edu
yahoo.com
Jane
128.59.19.61
dig t naptr columbia.edu columbia.edu. 3600 IN
NAPTR 1 0 "s" "SIPD2U" "" _sip._udp.columbia.edu.
columbia.edu. 3600 IN NAPTR 2 0 "s" "SIPD2T" ""
_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. _si
p._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
14SIP message format
Request
INVITE sipalice_at_home.com SIP/2.0 From Bob
To Alice Subj
ect How are you? ...
Response
SIP/2.0 200 OK From Bob To
Alice Subject How are you? ...
15Session Description Protocol (SDP)
INVITE alice_at_home.com I can support ?-law and
G.729 Send me audio at 202.16.49.276780
Alice
Bob
128.59.19.194
202.16.49.27
OK I can support ?-law Send me audio at
128.59.19.1948000
ACK
16SDP message format and offer answer
Request
INVITE sipalice_at_home.com SIP/2.0 ... v0 obob
26172 27162 IN IP4 202.16.49.27 sSIP call cIN
IP4 202.16.49.27 t0 0 maudio 6780 RTP/AVP 0 8
5 mvideo 6790 RTP/AVP 31
Response
SIP/2.0 200 OK ... cIN IP4 128.59.19.194 t0
0 maudio 8000 RTP/AVP 0 8 mvideo 0 RTP/AVP 31
17Agenda
- 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?
18SIP is, SIP is 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
19Addressing
- Personal mobility
- Examples
- Alice Smith
- sipalice_at_128.59.19.1945070
- sipalice_at_columbia.eduuserphonetransporttcp
20SIP 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 doesnt 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,
21Building 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, . . .
Other entities outbound proxy, back-to-back user
agent (b2bua), application-level-gateway (ALG),
Typically implemented in a single software or box
22Message 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
q1.0
q0.7
q0.2
23Example call setup
Alice
(9) ok
(8)
_at_residence.net
(10)
_at_visiting.com
(6)
unavailable (7)
(6)
(5)
(3) invite
(4) moved
_at_school.edu
(12) ok
(6)
Bob
(2) moved
(11) cancel
_at_home.com
(1) invite
_at_lab.school.edu
_at_yahoo.com
24Transport
- 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
25NAT traversal
- 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 establishment
iptel.org
L10.1.2.35060
26NAT traversal (ICE)
- Address gathering
- Negotiation
- Connectivity check
STUN server stun01.sipphone.com
R192.1.2.37002
example.net
INVITE (offer)
OK (answer)
E128.59.19.1948123
L10.1.2.38000
192.168.1.26000
10.1.2.38000
Gather addresses 192.168.1.26000
(local) 135.59.22.996000 (external) 192.1.2.4900
4 (relay)
Gather addresses (L,E,R) 10.1.2.38000
(local) 128.59.19.1948123 (external) 192.1.2.370
02 (relay)
27Agenda
- 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?
28IP 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 cant win by just providing what
PSTN has
29IP 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
30Where do the services reside?
Double ringing sound when boss calls
Enter your authentication PIN for billing
Use finger for locating user
B2BUA
Endpoint
Make call when boss is online
Proxy/registrar
Endpoint
Forward to office phone during day, and home
phone during evening
Service control on client vs server
31Endpoint 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
- require"generic presence ui"
-
-
-
-
-
- text"Calling " /
-
-
-
32Network call control
- Common gateway interface -- SIP-CGI (RFC 3050)
- Call processing language -- CPL (XML-based,
allows GUI) - SIP servlets (Java)
Priority.pl
SIP_FROM SIP_TO stdin
CGI-PROXY-REQUEST stdout
33Call transfer
- REFER
- Blind/ consultation/ attended
B
A
C
active call
REFER C Referred-By B
INVITE C Referred-By B
BYE A
active call
34B2BUA and third-party call control
- Back-to-back UA
- Incoming call triggers outgoing call
- Services
- Calling card
- Anonymizer
B
A
C
INVITE
OK (SDP1)
ACK
INVITE (SDP1)
OK (SDP2)
ACK
INVITE (SDP2)
OK
ACK
35Voicemail
- Various design alternatives
36Interactive voice response using VoiceXML
Gateway
VXML Browser
PSTN
Telephone
IVR platform
- Voice and telephony functions
- (ASR, TTS, DTMF)
- Service logic (application specific)
37VoiceXML contd.
Your ID, please.
Enter your Id nameid
Telephony, speech synthesis or audio output, user
input and grammar, program flow, variable and
properties, error handling,
38DTMF
PSTN
Internet
Telephone
SIP/PSTN gateway
Internet user
Audio
D
SIP INFO
D
RTP/ RFC2833
39Interworking with telephone network
sipbob_at_home.com
1-415-123-4567
- IP to telephone
- Static mapping
- 1-212854xxxx_at_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 _at_service.mci.com at 4/min
- 1212 _at_nyc.gw.com at 1/min
- 1212939 _at_itgw1.columbia.edu free
- Telephone to IP
- Gateway knows the SIP server
-
- ENUM E164 numbering (using DNS)
- 1 212 9397042 2.4.0.7.9.3.9.2.1.2.1.e164.arpa
siphgs_at_cs.columbia.edu - Suitable for relatively static contacts
Telephone network
Telephone subscriber
SIP/PSTN gateway
SIP server
IP endpoint
- 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
40Summary
- 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,
41VoIP 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,
42References
- SIP RFC 3261-3265 http//www.cs.columbia.edu/sip
- RTP RFC 3550, 3551, http//www.cs.columbia.edu/h
gs/rtp - My thesis http//www.cs.columbia.edu/kns10/publi
cation/thesis.pdf (part III Enterprise IP
telephony) - Open source SIP server http//www.openser.org
- Free SIP accounts http//iptel.org