1 / 41

Introduction to Internet telephony (VoIP)

Introduction to Internet telephony (VoIP). Kundan Singh. Agenda. 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

cutler
Download Presentation

Introduction to Internet telephony (VoIP)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Internet telephony (VoIP) Kundan Singh

  2. Agenda • 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. 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) • Transportto remote IP address and port number over UDP (Why not TCP?) • Processing on receiver side is the reverse Introduction to VoIP

  4. +127 +0 -127 Sampling, Quantization, Encoding 10101111…01101101 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 4000=8000 Hz (interval of 125 µsec) Round off samples to one of 256 levels (introduces noise) Introduction to VoIP

  5. timeline Sender 1 2 3 4 5 6 7 (a) (b) 1 2 3 5 7 6 Receiver Problems with UDP • Unreliable UDP • Packet loss • Out-of-order (very rarely) • Jitter (delay variation) Introduction to VoIP

  6. read 20 ms packet sendto(remote IP:port) microphone write get 20 ms packet speaker put Received packet recvfrom() Receive 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); } Introduction to VoIP

  7. 8 9 0 1 2 3 4 1 2 3 4 5 6 7 8 9 0 2 3 4 1 2 3 5 7 6 2 1 2 3 2 1 1 2 1 3 2 3 2 7 5 7 6 0 0 9 9 8 8 7 5 Receive 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 Introduction to VoIP

  8. Timestamp vs sequence number • Silence suppression • Variable length packets Sender t1 t2 t3 t4 t5 t6 t7 t8 t9 Silence … 5 6 7 1 2 3 4 5 6 7 1 2 3 4 Receiver Playout time vs packet loss detection Introduction to VoIP

  9. 8 bits 8 bits 16 bits Real-time Transport Protocol (RTP) IP header V CC M Payload type Sequence number 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, …) Introduction to VoIP

  10. RTP-based conference ssrc=5263 ssrc=7182 224.1.2.3:8000 Session identified using receive IP address + port ssrc=2639 ssrc=9844 Introduction to VoIP

  11. RTP-based conference Mixer mixes multiple streams, and puts rtp.ssrcsof 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 Introduction to VoIP

  12. INVITE for a call using µ-law and G.729 at 202.16.49.27:8000 OK using µ-law at 128.59.19.194 Bob=>192.1.2.3 Alice=>128.59.19.194 Where is Alice? 128.59.19.194 Sam 154.28.32.112 Henry=>125.33.2.81 Why do we need signaling? Bob 202.16.49.27 Alice 128.59.19.194 Sam 154.28.32.112 Henry 125.33.2.81 • Locate destination user • Negotiate session parameters Introduction to VoIP

  13. 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 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" "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 1010 5060 cocoa.cc.columbia.edu. _sip._udp.columbia.edu. 3600 IN SRV 1010 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

  14. SIP message format Request INVITEsip: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

  15. RTP To port 8000 RTP To port 6780 Session Description Protocol (SDP) INVITE alice@home.com I can support -lawand G.729 Send me audio at 202.16.49.27:6780 Bob Alice 128.59.19.194 202.16.49.27 OK; I can support -law Send me audio at 128.59.19.194:8000 ACK Introduction to VoIP

  16. 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 t=0 0 m=audio6780 RTP/AVP 0 8 5 m=video 6790 RTP/AVP 31 Response SIP/2.0 200 OK ... c=IN IP4 128.59.19.194 t=0 0 m=audio8000 RTP/AVP 0 8 m=video 0 RTP/AVP 31 Introduction to VoIP

  17. Agenda • 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 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 Introduction to VoIP

  19. yahoo.com alice24@yahoo.com tel:12125551234 alice@columbia.edu 1234@columbia.edu tel:19172223333 Alice.Smith@columbia.edu columbia.edu pc12.columbia.edu Addressing • Personal mobility: • 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

  20. 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, … SIP message format Introduction to VoIP

  21. 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, . . . Building blocks Other entities: outbound proxy, back-to-back user agent (b2bua), application-level-gateway (ALG), … Typically implemented in a single software or box Introduction to VoIP

  22. 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: c.yahoo.com Via: b.example.com Via: a.home.com Via: b.example.com Via: a.home.com Via: a.home.com Via: c.yahoo.com Via: b.example.com Via: a.home.com Via: a.home.com Via: b.example.com Via: a.home.com alice@home.com bob@example.com bob@yahoo.com bob@ip2.yahoo.com 302 moved INVITE 486 busy 200 OK Message routing q=1.0 q=0.7 q=0.2 Introduction to VoIP

  23. (13) Example call setup (9) ok Alice (8) @residence.net (10) @visiting.com (6) unavailable (7) (6) (5) (3) invite (4) moved @school.edu (12) ok (6) Bob (2) moved (11) cancel @home.com (1) invite @lab.school.edu @yahoo.com Introduction to VoIP

  24. 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 Transport Introduction to VoIP

  25. 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 INVITE alice@ E=128.59.19.194:8123 REGISTER alice@iptel.org Contact: sip:alice@10.1.2.3:5060 . . . NAT traversal iptel.org L=10.1.2.3:5060 Introduction to VoIP

  26. NAT traversal (ICE) • Address gathering • Negotiation • Connectivity check STUN server stun01.sipphone.com R=192.1.2.3:7002 example.net INVITE (offer) OK (answer) E=128.59.19.194:8123 L=10.1.2.3:8000 192.168.1.2:6000 10.1.2.3:8000 Gather addresses 192.168.1.2:6000 (local) 135.59.22.99:6000 (external) 192.1.2.4:9004 (relay) Gather addresses (L,E,R) 10.1.2.3:8000 (local) 128.59.19.194:8123 (external) 192.1.2.3:7002 (relay) Introduction to VoIP

  27. Agenda • 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. 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 services (PSTN) IP-telephony can’t win by just providing what PSTN has Introduction to VoIP

  29. 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? 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 Introduction to VoIP

  31. 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

  32. 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"; } } Urgent SIP proxy Phone Low-priority Voicemail Network 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 Introduction to VoIP

  33. Call transfer • REFER • Blind/ consultation/ attended B A C active call REFER C Referred-By: B INVITE C Referred-By: B BYE A active call Introduction to VoIP

  34. SIP SIP B2BUA and third-party call control B • Back-to-back UA • Incoming call triggers outgoing call • Services • Calling card • Anonymizer A C INVITE OK (SDP1) ACK INVITE (SDP1) OK (SDP2) ACK INVITE (SDP2) OK ACK Introduction to VoIP

  35. Endpoint based Redirect after 10s alice@vmail.yahoo.com Proxy controls Voicemail acts like a phone vmail.pl SIP_FROM SIP_TO stdin CGI-PROXY-REQUEST stdout If no response accept after 15s Voicemail Various design alternatives Introduction to VoIP

  36. Internet Internet user VXML Voice gateway HTML • Voice and telephony functions • VoiceXML browser Web server • Service logic (CGI, servlet, JSP) Interactive voice response using VoiceXML Gateway VXML Browser PSTN Telephone IVR platform • Voice and telephony functions • (ASR, TTS, DTMF) • Service logic (application specific) Introduction to VoIP

  37. VoiceXML contd. <form> <field name=‘id’> <prompt> Your ID, please. </prompt> </field> <block> <submit next=“url”/> </block> </form> <form action=“url”> Enter your Id: <input name=‘id’> <input type=‘submit’> </form> Telephony, speech synthesis or audio output, user input and grammar, program flow, variable and properties, error handling, … Introduction to VoIP

  38. Interworking with telephone network sip:bob@home.com +1-415-123-4567 • 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 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 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 network Telephone subscriber SIP/PSTN gateway SIP server IP endpoint Introduction to VoIP

  39. Summary • 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

  40. 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, ETSI-Tiphon, 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

More Related