+ All Categories
Home > Documents > Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to Internet telephony (VoIP) Kundan Singh.

Date post: 05-Jan-2016
Category:
Upload: tobias-wiggins
View: 229 times
Download: 2 times
Share this document with a friend
41
Introduction to Internet Introduction to Internet telephony (VoIP) telephony (VoIP) Kundan Singh
Transcript
Page 1: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to Internet Introduction to Internet telephony (VoIP)telephony (VoIP)

Kundan Singh

Page 2: Introduction to Internet telephony (VoIP) Kundan Singh.

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?

Page 3: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 4: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 5: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 6: Introduction to Internet telephony (VoIP) Kundan Singh.

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);

}

Page 7: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 8: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 9: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 10: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 11: Introduction to Internet telephony (VoIP) Kundan Singh.

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.

Page 12: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 13: Introduction to Internet telephony (VoIP) Kundan Singh.

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:[email protected] 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

Page 14: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 14

INVITE sip:[email protected] SIP/2.0From: “Bob” <[email protected]>To: “Alice” <[email protected]>Subject: How are you?...

SIP/2.0 200 OKFrom: “Bob” <[email protected]>To: “Alice” <[email protected]>Subject: How are you?...

Request

Response

SIP message formatSIP message format

Page 15: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 15

AliceBob

INVITE [email protected] 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

Page 16: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 16

INVITE sip:[email protected] 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

Page 17: Introduction to Internet telephony (VoIP) Kundan Singh.

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?

Page 18: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 19: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 19

AddressingAddressing

Personal mobility:

Examples: “Alice Smith” <sip:[email protected]> sip:[email protected]:5070 sip:[email protected];user=phone;transport=tcp

tel:12125551234

tel:19172223333

pc12.columbia.edu

yahoo.com

columbia.edu

[email protected]

[email protected]

[email protected]

[email protected]

Page 20: Introduction to Internet telephony (VoIP) Kundan Singh.

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, …

Page 21: Introduction to Internet telephony (VoIP) Kundan Singh.

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), …

Page 22: Introduction to Internet telephony (VoIP) Kundan Singh.

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

[email protected] [email protected] [email protected] [email protected]

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

Page 23: Introduction to Internet telephony (VoIP) Kundan Singh.

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)

Page 24: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 25: Introduction to Internet telephony (VoIP) Kundan Singh.

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 establishment

L=10.1.2.3:5060

REGISTER [email protected]: sip:[email protected]:5060. . .

E=128.59.19.194:8123

iptel.org

INVITE alice@

Page 26: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 27: Introduction to Internet telephony (VoIP) Kundan Singh.

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?

Page 28: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 29: Introduction to Internet telephony (VoIP) Kundan Singh.

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

Page 30: Introduction to Internet telephony (VoIP) Kundan Singh.

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…

Page 31: Introduction to Internet telephony (VoIP) Kundan Singh.

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=“[email protected]"> <call /> <alert sound=“ring.au"

text="Calling …" /> </address> </address-switch> </notification></less>

Page 32: Introduction to Internet telephony (VoIP) Kundan Singh.

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:[email protected]/)

{

foreach $reg (get_regs())

{

print "CGI-PROXY-REQUEST $reg SIP/2.0\n";

print "Priority: urgent\n\n";

}

}

Page 33: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 33

Call transferCall transfer

REFER Blind/ consultation/

attended

active call

REFER CReferred-By: B

INVITE CReferred-By: B

BYE A

A B

C

active call

Page 34: Introduction to Internet telephony (VoIP) Kundan Singh.

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)

ACKINVITE (SDP1)

OK (SDP2)

ACKINVITE (SDP2)

OK

ACK

Page 35: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 35

VoicemailVoicemail

Various design alternatives

vmail.pl

SIP_FROMSIP_TOstdin

CGI-PROXY-REQUESTstdout

If no response

Proxy controls

accept after 15s

Voicemail acts like a phone

[email protected]

Redirect after 10s

Endpoint based

Page 36: Introduction to Internet telephony (VoIP) Kundan Singh.

Introduction to VoIP 36

Interactive voice response Interactive voice response using VoiceXMLusing VoiceXML

Telephone

PSTNPSTN

Voice gateway

Web server

• Service logic (CGI, servlet, JSP)

• Voice and telephony functions• VoiceXML browser

Internet userVXMLVXML HTMLHTML

Internet

Internet

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

VXML BrowserGateway

Page 37: Introduction to Internet telephony (VoIP) Kundan Singh.

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, …

Page 38: Introduction to Internet telephony (VoIP) Kundan Singh.

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:[email protected]

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:[email protected]

;user=phone>

ENUM – E164 numbering (using DNS)

+1 212 9397042 => 2.4.0.7.9.3.9.2.1.2.1.e164.arpa => sip:[email protected]

Suitable for relatively “static” contacts

Page 39: Introduction to Internet telephony (VoIP) Kundan Singh.

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, …

Page 40: Introduction to Internet telephony (VoIP) Kundan Singh.

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, …

Page 41: Introduction to Internet telephony (VoIP) Kundan Singh.

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


Recommended