You are previewing Internet Multimedia Communications Using SIP: A Modern Approach Including Java® Practice.
O'Reilly logo
Internet Multimedia Communications Using SIP: A Modern Approach Including Java® Practice

Book Description

Session Initiation Protocol (SIP) was conceived in 1996 as a signaling protocol for inviting users to multimedia conferences. With this development, the next big Internet revolution silently started. That was the revolution which would end up converting the Internet into a total communication system which would allow people to talk to each other, see each other, work collaboratively or send messages in real time. Internet telephony and, in general, Internet multimedia, is the new revolution today and SIP is the key protocol which allows this revolution to grow.
The book explains, in tutorial fashion, the underlying technologies that enable real-time IP multimedia communication services in the Internet (voice, video, presence, instant messaging, online picture sharing, white-boarding, etc). Focus is on session initiation protocol (SIP) but also covers session description protocol (SDP), Real-time transport protocol (RTP), and message session relay protocol (MSRP). In addition, it will also touch on other application-related protocols and refer to the latest research work in IETF and 3GPP about these topics. (3GPP stands for "third-generation partnership project" which is a collaboration agreement between ETSI (Europe), ARIB/TTC (Japan), CCSA (China), ATIS (North America) and TTA (South Korea).) The book includes discussion of leading edge theory (which is key to really understanding the technology) accompanied by Java examples that illustrate the theoretical concepts.

Throughout the book, in addition to the code snippets, the reader is guided to build a simple but functional IP soft-phone therefore demonstrating the theory with practical examples.

This book covers IP multimedia from both a theoretical and practical point of view focusing on letting the reader understand the concepts and put them into practice using Java. It includes lots of drawings, protocol diagrams, UML sequence diagrams and code snippets that allow the reader to rapidly understand the concepts.

KEY FEATURES

* Focus on HOW multimedia communications over the Internet works to allow readers to really understand and implement the technology
* Explains how SIP works, including many programming examples so the reader can understand abstract concepts like SIP dialogs, SIP transactions, etc.
* It is not focused on just VoIP. It looks At a wide array of enhanced communication services related to SIP enabling the reader put this technology into practice.
* Includes nearly 100 references to the latest standards and working group activities in the IETF, bringing the reader completely up to date.
* Provides a step-by-step tutorial on how to build a basic, though functional, IP soft-phone allowing the reader to put concepts into practice.
* For advanced readers, the book also explains how to build a SIP proxy and a SIP registrar to enhance one's expertise and marketability in this fast moving area.

Table of Contents

  1. Copyright
    1. Dedication
  2. The Morgan Kaufmann Series in Networking
  3. Preface
    1. Why This Book
    2. Approach
    3. Audience
    4. Organization
    5. Code Examples
    6. Acknowledgments
  4. About the Author
  5. Foreword
    1. Jorge Gató, Vodafone España
    2. Rogier Noldus, Ericsson, Netherlands
  6. I. Fundamentals
    1. 1. Introduction
      1. 1.1. IP Multimedia Communication Services
      2. 1.2. The Role of Signaling and Media
      3. 1.3. Type of Services Enabled by SIP
        1. 1.3.1. Basic Session Management Services
        2. 1.3.2. Enhanced Control Services
        3. 1.3.3. Media Services
        4. 1.3.4. Conferencing Services
        5. 1.3.5. Presence
      4. 1.4. Examples of SIP Applications
        1. 1.4.1. SIP Communicator Applications
        2. 1.4.2. IP PBX Applications
        3. 1.4.3. Enterprise Total Communication Systems
        4. 1.4.4. IP Centrex Applications
        5. 1.4.5. PSTN Emulation Applications
      5. 1.5. The Internet Engineering Task Force (IETF)
        1. 1.5.1. The IETF Publications: RFCs and I-Ds
          1. Standards Track RFCs
          2. Non–Standards Track RFCs
          3. Best Current Practice RFCs
          4. Internet Drafts (I-Ds)
        2. 1.5.2. SIP in the IETF
          1. SIP WG
          2. SIPPING WG
          3. MMUSIC WG
          4. SIMPLE WG
          5. ENUM WG
          6. IPTEL WG
          7. AVT WG
      6. 1.6. Summary
    2. 2. A Bit of History
      1. 2.1. The Third Revolution in the Internet
      2. 2.2. The Next Revolution in the Telecommunication Industry
      3. 2.3. A Brief History of Internet Multimedia
      4. 2.4. Summary
    3. 3. IP Multimedia Fundamentals
      1. 3.1. Internet Concepts
        1. 3.1.1. Internet Protocol
        2. 3.1.2. The Internet Paradigm
      2. 3.2. TCP/IP Protocol Architecture
        1. 3.2.1. Application-Layer Protocols
        2. 3.2.2. Transport-Layer Protocols
          1. User Datagram Protocol
          2. Transmission Control Protocol
          3. Stream Control Transmission Protocol
      3. 3.3. Architecture for Internet Multimedia Communications
        1. 3.3.1. Core Protocols: Signaling
        2. 3.3.2. Core Protocols: Media
        3. 3.3.3. Complementary Protocols
          1. Quality of Service
          2. Policy Control
          3. Authentication, Authorization, and Accounting (AAA)
          4. Conferencing
          5. NAT Traversal
        4. 3.3.4. Internet Protocols in Other Service Domains
      4. 3.4. Summary
    4. 4. SIP Overview
      1. 4.1. What is SIP?
      2. 4.2. SIP Addressing
      3. 4.3. SIP Functions
        1. 4.3.1. Session Setup, Termination, and Modification
          1. Note on the Usage of SIP in Multicast Conferences
        2. 4.3.2. Location of Users
      4. 4.4. SIP Entities
        1. 4.4.1. User Agents
        2. 4.4.2. Registrar
        3. 4.4.3. Location Service
        4. 4.4.4. Proxy Servers
          1. Outbound Proxy
          2. Inbound Proxy
          3. Forking
        5. 4.4.5. Redirect Servers
        6. 4.4.6. Back-to-Back User Agents
      5. 4.5. Summary
    5. 5. Multimedia-Service Creation Overview
      1. 5.1. What are SIP Services?
      2. 5.2. SIP Services and SIP Entities
      3. 5.3. Terminal-Based or Network-Based SIP Services
        1. 5.3.1. Option A: Implementation at Alice’s Terminal
        2. 5.3.2. Option B: Implementation at Alice’s SIP Inbound Proxy
        3. 5.3.3. Aspects to Consider
          1. 1. Control on Users
          2. 2. Intelligence in the Terminals
          3. 3. Service Homogeneity
          4. 4. End-User Availability
        4. 5.3.4. Application Servers
      4. 5.4. SIP Programming Interfaces
        1. 5.4.1. Standard APIs
          1. JAIN SIP
          2. JAIN SDP
          3. SIP Servlets
          4. SIMPLE Instant Messaging
          5. SIP API for J2ME
          6. JAIN SLEE
          7. IMS API
          8. OSA/PARLAY
          9. PARLAY X
        2. 5.4.2. Open-Source Implementations
      5. 5.5. Media-Programming APIs
        1. 5.5.1. Mobile Media API
        2. 5.5.2. Java Media Framework
      6. 5.6. APIs Used in This Book
      7. 5.7. Summary
  7. II. Core Protocols
    1. 6. SIP Protocol Operation
      1. 6.1. SIP Mode of Operation
        1. 6.1.1. SIP Responses
        2. 6.1.2. SIP Requests
          1. REGISTER
          2. INVITE
          3. Re-INVITE
          4. ACK
          5. CANCEL
          6. BYE
          7. OPTIONS
      2. 6.2. SIP Message Format
        1. 6.2.1. SIP Requests
        2. 6.2.2. SIP Responses
        3. 6.2.3. SIP Header Fields
          1. From
          2. To
          3. Call-ID
          4. Via
          5. Contact
          6. Record-Route and Route
          7. CSeq
          8. Max-Forwards
          9. Content-Type, Content-Length, Content-Encoding, Content-Disposition
        4. 6.2.4. SIP Message Body
          1. Content-Type
          2. Content-Length
          3. Content-Encoding
          4. Content-Disposition
      3. 6.3. SIP Routing
        1. 6.3.1. Step 1: Determination of the Next-Hop SIP URI
          1. Strict Routing
        2. 6.3.2. Step 2: Determination of IP address, Port, and Transport
        3. 6.3.3. SIP Routing Scenarios
          1. Direct-Mode Scenario
          2. Proxy-Assisted-Mode Scenarios
      4. 6.4. SIP Detailed Call Flows
        1. 6.4.1. SIP Registration
          1. Step 1
          2. Step 2
        2. 6.4.2. SIP Call
          1. Step 1
          2. Step 2
          3. Step 3
          4. Step 4
          5. Step 5
          6. Step 6
          7. Step 7
          8. Step 8
          9. Step 9
          10. Step 10
          11. Step 11
          12. Step 12
          13. Step 13
          14. Step 14
          15. Step 15
          16. Step 16
          17. Step 17
          18. Step 18
      5. 6.5. Summary
    2. 7. SIP Protocol Structure
      1. 7.1. Protocol Structure Overview
        1. 7.1.1. The Layered Approach
        2. 7.1.2. About the Terminology
        3. 7.1.3. SIP Protocol Sublayers
        4. 7.1.4. What Layers Do the SIP Entities Implement?
          1. SIP User Agent
          2. Registrar
          3. Stateful Proxy
          4. Stateless Proxy
      2. 7.2. SIP Core Sublayer
        1. 7.2.1. SIP Transaction Users
        2. 7.2.2. SIP Transport Users
      3. 7.3. SIP Transaction Sublayer
        1. 7.3.1. Client Transaction and Server Transaction
        2. 7.3.2. Transaction-Layer Functions
          1. Request/Response Correlation
          2. Reliable Delivery
          3. Non-INVITE transactions
          4. INVITE transactions
        3. 7.3.3. Example
          1. Direct Call
          2. SIP Trapezoid
      4. 7.4. SIP Transport Sublayer
        1. 7.4.1. Client Transport
          1. Sending Requests
          2. Receiving Responses
        2. 7.4.2. Server Transport
          1. Receiving Requests
          2. Sending Responses
          3. Example
      5. 7.5. SIP Syntax and Encoding Function
      6. 7.6. SIP Dialogs
        1. 7.6.1. Identification of Dialogs
        2. 7.6.2. Dialog Information
        3. 7.6.3. How Dialogs Work
      7. 7.7. Summary
    3. 8. Practice with SIP
      1. 8.1. What Is JAIN SIP?
        1. 8.1.1. JAIN SIP Versions
      2. 8.2. JAIN SIP Architecture
        1. 8.2.1. The Peer-Provider Pattern
        2. 8.2.2. The Factory Pattern
        3. 8.2.3. The Event-Listener Pattern
      3. 8.3. The SipStack, SipProvider and ListeningPoint
      4. 8.4. The SipListener
      5. 8.5. Other Factories: MessageFactory, HeaderFactory, AddressFactory
        1. 8.5.1. MessageFactory
        2. 8.5.2. HeaderFactory
        3. 8.5.3. AddressFactory
      6. 8.6. Programs and Practice
        1. 8.6.1. Structure of the Applications
        2. 8.6.2. JAIN SIP Initialization
        3. 8.6.3. How to Test the Examples
          1. Option 1
          2. Option 2
        4. 8.6.4. Example 1: Building SIP Messages
        5. 8.6.5. Example 2: Using the Transport Sublayer
          1. User Interface
          2. Architecture
          3. Initialization
          4. Creating and Sending the Request
          5. Receiving the Request
        6. 8.6.6. Example 3: Using the Transaction Sublayer
          1. Creating the Request
          2. Sending a Request
          3. Receiving a Request
          4. Sending a Response
          5. Receiving a Response
        7. 8.6.7. Example 4: Creating a Dialog
          1. Creating the INVITE Request
          2. Sending the INVITE Request
          3. Receiving the INVITE Request
          4. Sending a Provisional Response
          5. Sending a 200 OK Response
          6. Receiving a 180 Provisional Response
          7. Receiving a 200 OK Response
          8. Sending the ACK
          9. Receiving the ACK
        8. 8.6.8. Example 5: Terminating a Dialog
          1. Sending a BYE Request
          2. Receiving the BYE Request
          3. Sending the 200 OK Response to BYE
          4. Receiving the 200 OK Response to BYE
      7. 8.7. Summary
    4. 9. Session Description
      1. 9.1. The Purpose of Session Description
      2. 9.2. The Session Description Protocol (SDP)
        1. 9.2.1. Origins of SDP
        2. 9.2.2. SDP Overview
        3. 9.2.3. Protocol Version (v-line)
        4. 9.2.4. Origin (o-line)
        5. 9.2.5. Session Name (s-line)
        6. 9.2.6. Connection Information (c-line)
        7. 9.2.7. Time Line (t-line)
        8. 9.2.8. Media and Transport (m-line)
        9. 9.2.9. Bandwidth (b-line)
        10. 9.2.10. Attributes (a-line)
      3. 9.3. Example IP Communication Sessions Described with SDP
        1. 9.3.1. Voice and Video
        2. 9.3.2. Telephony Tones
        3. 9.3.3. Real-time Text
        4. 9.3.4. Instant Messages (MSRP)
          1. c-line
          2. m-line
        5. 9.3.5. TCP Content
      4. 9.4. The Offer/Answer Model with SDP
        1. 9.4.1. Voice/Video
          1. Putting a Media Stream on Hold
        2. 9.4.2. MSRP
        3. 9.4.3. TCP Content
          1. Offer
          2. Answer
          3. Offer
          4. Answer
          5. Offer
          6. Answer
      5. 9.5. SDP Programming
        1. 9.5.1. JAIN SDP Overview
        2. 9.5.2. Encoding SDP Messages
        3. 9.5.3. Parsing SDP Messages
        4. 9.5.4. SDP Practice
      6. 9.6. Summary
    5. 10. The Media Plane
      1. 10.1. Overview of the Media Plane
      2. 10.2. Real-time Transport Protocol (RTP)
        1. 10.2.1. Motivation
          1. End-to-End Delay and Packet Loss
          2. Out-of-Sequence Delivery
          3. Jitter
        2. 10.2.2. RTP Overview
          1. Profile Specification
          2. Payload Format Specification
        3. 10.2.3. RTCP
        4. 10.2.4. Application Examples
          1. Audio/Video
          2. Telephony Tones
          3. Real-time Text
      3. 10.3. Messaging Service Relay Protocol (MSRP)
        1. 10.3.1. Main Features
          1. Message Chunking
          2. Message Framing
          3. MSRP Addressing
          4. Reporting
        2. 10.3.2. MSRP Nodes
        3. 10.3.3. MSRP Message Format
          1. Example
          2. MSRP Header Fields
          3. From-Path
          4. To-Path
          5. Message-ID
          6. Success-Report and Failure-Report
          7. Status
          8. Byte-Range
        4. 10.3.4. MSRP Mode of Operation
          1. Operation without Relays
          2. Operation with MSRP Relays
          3. Reporting
        5. 10.3.5. Detailed MSRP Example
          1. (SIP/SDP session establishment)
      4. 10.4. Summary
    6. 11. Media Plane Programming
      1. 11.1. Overview
        1. 11.1.1. Media streams
      2. 11.2. JMF Entities
        1. 11.2.1. Managers
        2. 11.2.2. Data Source
          1. The Format Class
        3. 11.2.3. Player
        4. 11.2.4. Processor
        5. 11.2.5. Data Sinks
        6. 11.2.6. SessionManager
          1. RTP Streams
          2. Listeners
          3. SessionManager Operation
          4. Session Addresses
      3. 11.3. JMF Operation
        1. 11.3.1. Capture Live Media
        2. 11.3.2. Capture Media File
        3. 11.3.3. Present Media
        4. 11.3.4. Send Media to File
        5. 11.3.5. Process Media
        6. 11.3.6. Receive and Send Media from/over the Network
          1. Approach 1: Media Locators
          2. Approach 2: SessionManager
      4. 11.4. Putting It All Together: The VoiceTool
        1. startMedia(String peerIP, int peerPort, int recvPort, int fmt)
        2. update(ReceiveStreamEvent event)
        3. stopMedia()
      5. 11.5. Putting It All Together: The VideoTool
        1. startMedia()
        2. update()
        3. stopMedia()
      6. 11.6. Putting It All Together: The TonesTool
        1. prepareTone(String filename)
        2. playTone()
        3. stopTone()
        4. controllerUpdate(ControllerEvent cEvent)
      7. 11.7. Using the Components. Example 6
      8. 11.8. Summary
    7. 12. The SIP Soft-Phone
      1. 12.1. Scope
      2. 12.2. Architecture
        1. 12.2.1. Components
        2. 12.2.2. Interfaces
          1. Interface between Softphone1GUI and Softphone1Listener
          2. Interface between Softphone1Listener and the SIP Implementation
          3. Interface between Softphone1Listener and the SDPManager
          4. Interface between SDPManager and the SDP Implementation
          5. Interface between Softphone1Listener and the VoiceTool
          6. Interface between Softphone1Listener and the VideoTool
          7. Interface between Softphone1Listener and the TonesTool
      3. 12.3. User Interface and Configuration
        1. 12.3.1. User Interaction Area
          1. “On” Button
          2. “Off” Button
          3. Info Label
          4. Destination Text Field
          5. “Yes” Button
          6. “No” Button
        2. 12.3.2. Configuration/Display Area
      4. 12.4. State Model
        1. 12.4.1. IDLE State
          1. Incoming Events
          2. Outgoing Events
        2. 12.4.2. WAIT_PROV State (in Originator)
          1. Incoming Events
          2. Outgoing Events
        3. 12.4.3. WAIT_FINAL State (in Originator)
          1. Incoming Events
          2. Outgoing Events
        4. 12.4.4. ESTABLISHED State (in Both Originator and Recipient)
          1. Incoming Events
          2. Outgoing Events
        5. 12.4.5. RINGING State (in Recipient)
          1. Incoming Events
          2. Outgoing Events
        6. 12.4.6. WAIT_ACK State (in Recipient)
          1. Incoming events
          2. Outgoing events
      5. 12.5. Implementation Aspects
        1. 12.5.1. Soft-phone Configuration
        2. 12.5.2. Treatment of CANCEL Requests
        3. 12.5.3. Tag Calculation and Management
        4. 12.5.4. Error Conditions and Timeouts
        5. 12.5.5. Retransmissions
        6. 12.5.6. Call Management and Transactions
        7. 12.5.7. Reception of 486 Busy Here and Generation of ACK
        8. 12.5.8. SDP Handling and Media Tool Utilization
          1. Sending the SDP Offer
          2. Receiving the SDP Offer
          3. Sending the SDP Answer
          4. Receiving the SDP Answer
        9. 12.5.9. Session Termination
        10. 12.5.10. Playing Tones and Signals
        11. 12.5.11. Running the Code
      6. 12.6. Summary
    8. 13. SIP Proxies
      1. 13.1. What Is a SIP Proxy?
        1. 13.1.1. Sip Routing
        2. 13.1.2. Proxy Types
      2. 13.2. Transaction Stateful Proxies
        1. 13.2.1. Treatment of Transactions
        2. 13.2.2. Call Stateful Proxies
      3. 13.3. Stateful Proxy Behavior
        1. 13.3.1. Treatment of Requests
        2. 13.3.2. Treatment of Responses
        3. 13.3.3. Receiving a CANCEL Request
        4. 13.3.4. Receiving an ACK Request
      4. 13.4. Transaction Stateless Proxies
      5. 13.5. Stateless Proxy Behavior
      6. 13.6. Practice: SIP Server
        1. 13.6.1. Scope
        2. 13.6.2. Architecture
        3. 13.6.3. Management Console (GUI)
          1. “On” Button
          2. “Off” Button
          3. Home Domain Text Box
          4. Port Text Box
          5. Record-Route Check Box
          6. The Tracer Display
          7. The Location Service Display
          8. The Transaction Display
        4. 13.6.4. JAIN SIP Initialization
        5. 13.6.5. Proxying Requests
          1. Non-ACK, Non-CANCEL Requests
          2. ACK Requests
          3. CANCEL Requests
        6. 13.6.6. Proxying Responses
        7. 13.6.7. Terminated Transactions
        8. 13.6.8. Handling Registrations
        9. 13.6.9. The Enhanced Client
          1. Softphone2GUI
          2. Softphone2Listener
        10. 13.6.10. Putting It All Together
          1. Starting the SIP Server
          2. Starting the Soft-phones
          3. Making Calls
      7. 13.7. Summary
    9. 14. Securing Multimedia Communications
      1. 14.1. Review of Basic Encryption Concepts
        1. 14.1.1. Cryptography
        2. 14.1.2. Symmetric Ciphers
        3. 14.1.3. Asymmetric Ciphers
        4. 14.1.4. Hash Functions
        5. 14.1.5. Digital Signatures
        6. 14.1.6. Digital Certificates
        7. 14.1.7. Cipher Suites
      2. 14.2. Attacks and Threat Models in SIP
        1. 14.2.1. Registration Hijacking
        2. 14.2.2. Tearing Down and Modification of Sessions
        3. 14.2.3. Impersonating a Server
        4. 14.2.4. Tampering with Message Bodies
        5. 14.2.5. Denial of Service
      3. 14.3. Security Services for SIP
      4. 14.4. Security Mechanisms for SIP
        1. 14.4.1. Network-Layer Security (IPsec)
        2. 14.4.2. Transport Layer Security (TLS)
        3. 14.4.3. SIPS URI Scheme
        4. 14.4.4. HTTP Authentication
          1. WWW-Authenticate Header
          2. Authorization Header
        5. 14.4.5. S/MIME
      5. 14.5. Best Practices on SIP Security
        1. 14.5.1. Example
      6. 14.6. Securing the Media Plane
        1. 14.6.1. Securing the Real-time Transport Protocol
          1. SDP Security Descriptions
          2. Key-Management Extensions for SDP
          3. ZRTP
          4. EKT
          5. Other Approaches for Securing the RTP Traffic
        2. 14.6.2. Securing TCP-Based Media Transport
        3. 14.6.3. Securing the Message Service Relay Protocol
      7. 14.7. Summary
  8. III. Advanced Topics
    1. 15. Extending SIP
      1. 15.1. Defining New Extensions
      2. 15.2. SIP Architectural Principles
      3. 15.3. Extensibility and Compatibility
        1. 15.3.1. Extending SIP with New Headers
          1. Option Tags
          2. P-Headers
        2. 15.3.2. Extending SIP with New Methods
        3. 15.3.3. Extending SIP with New Content Types
      4. 15.4. Reliability of Provisional Responses
        1. 15.4.1. Motivation
        2. 15.4.2. How It Works
      5. 15.5. UPDATE
        1. 15.5.1. Motivation
        2. 15.5.2. How It Works
      6. 15.6. SIP-specific Event Notification
        1. 15.6.1. Motivation
        2. 15.6.2. How It Works
        3. 15.6.3. Event Packages
        4. 15.6.4. Event Package for SIP Registrations
        5. 15.6.5. Event Package for SIP Dialogs
      7. 15.7. History-Info
        1. 15.7.1. Motivation
        2. 15.7.2. How It Works
      8. 15.8. Globally Routable User Agent URIs (GRUUs)
        1. 15.8.1. Motivation
        2. 15.8.2. How It Works
      9. 15.9. Summary
    2. 16. Presence and Instant Messaging
      1. 16.1. Overview of Presence and Instant Messaging
        1. 16.1.1. Presence and Online Communications
        2. 16.1.2. Presence and Instant Messaging Standards
      2. 16.2. The Presence Model
      3. 16.3. Presence with SIP
        1. 16.3.1. Publication of Presence Information
        2. 16.3.2. Subscribing to Presence Information
        3. 16.3.3. Generation of Notifications
        4. 16.3.4. Example
      4. 16.4. Presence Information
      5. 16.5. Address Resolution
      6. 16.6. Resource Lists
      7. 16.7. XCAP
      8. 16.8. Instant Messaging
        1. 16.8.1. Content Indirection
      9. 16.9. IM Servers
      10. 16.10. Practice: Softphone3
        1. 16.10.1. Softphone3GUI
        2. 16.10.2. Softphone3Listener
          1. Sending Instant Messages
          2. Receiving Instant Messages
      11. 16.11. Summary
    3. 17. Call Control
      1. 17.1. What Is Call Control?
      2. 17.2. Peer-to-Peer Call Control
        1. 17.2.1. The REFER Method
          1. Basic Call Transfer Example
        2. 17.2.2. The Referred-By Mechanism
        3. 17.2.3. The Replaces Header
        4. 17.2.4. The Join Header
      3. 17.3. Third Party Call Control (3PCC)
      4. 17.4. Remote Call Control
      5. 17.5. Summary
    4. 18. Interworking with PSTN/PLMN
      1. 18.1. Motivation
      2. 18.2. Architecture
        1. 18.2.1. Signaling Plane
        2. 18.2.2. Media Plane
        3. 18.2.3. Gateway Decomposition
        4. 18.2.4. Scenario 1 (IP to PSTN)
        5. 18.2.5. Scenario 2 (PSTN to Ip)
        6. 18.2.6. Scenario 3 (PSTN to PSTN via IP)
      3. 18.3. Telephone Addressing: The TEL URI
        1. 18.3.1. Motivation
        2. 18.3.2. TEL URI Format
      4. 18.4. ENUM: The E.164 to URI Dynamic Delegation Discovery System
      5. 18.5. Protocol Translation
        1. 18.5.1. Message Mapping
        2. 18.5.2. Parameter Mapping
        3. 18.5.3. State Machine Alignment
        4. 18.5.4. Example 1: IP-to-PSTN Call
        5. 18.5.5. Example 2: PSTN-to-IP Call
        6. 18.5.6. Example 3: PSTN to PSTN via IP
      6. 18.6. Protocol Encapsulation
        1. 18.6.1. The INFO Method
      7. 18.7. Translation or Encapsulation?
      8. 18.8. Summary
    5. 19. Media Servers and Conferencing
      1. 19.1. Basic Media Services
        1. 19.1.1. Architecture for Basic Media Services
        2. 19.1.2. Implementation
          1. Announcements
          2. User Interaction
          3. Basic Conferences
        3. 19.1.3. Examples
      2. 19.2. About KPML and the User Interaction Framework
      3. 19.3. Enhanced Conferencing
      4. 19.4. Framework for Conferencing with SIP
        1. 19.4.1. Example 1: Dial-out to a New Participant
        2. 19.4.2. Example 2: Focus Removes a Participant
      5. 19.5. XCON Framework
        1. 19.5.1. Additional Requirements
          1. Enhanced Conference Management
          2. Floor Control
          3. Media Services for Enhanced Conferencing
        2. 19.5.2. Architecture
          1. Conference Control
          2. Floor Control
          3. Focus
          4. Conference Notification
          5. Mixer
        3. 19.5.3. Example 1: Adding a New Participant to the Conference
        4. 19.5.4. Example 2: Media Manipulation
      6. 19.6. Media Server Control
        1. 19.6.1. Motivation
        2. 19.6.2. Approaches
        3. 19.6.3. Future Trends
      7. 19.7. Other Media Services
      8. 19.8. Summary
    6. 20. SIP Identity Aspects
      1. 20.1. Identity Management in SIP
      2. 20.2. Basic Identity Management
        1. 20.2.1. Assertion of the SIP Identity
        2. 20.2.2. Privacy Mechanisms
      3. 20.3. Private Header for Network Asserted Identity
        1. 20.3.1. Assertion of Identity
        2. 20.3.2. Privacy Mechanisms
      4. 20.4. Enhanced Identity Management
        1. 20.4.1. Assertion of Identity
        2. 20.4.2. Privacy Mechanisms
      5. 20.5. Summary
    7. 21. Quality of Service
      1. 21.1. Quality of Service in IP Networks
      2. 21.2. Mechanisms for QoS
        1. 21.2.1. Integrated Services
        2. 21.2.2. Differentiated Services
        3. 21.2.3. Integrated Services over diffserv Networks
      3. 21.3. Policy-based Admission Control
      4. 21.4. SIP Integration with Resource Reservation: The Preconditions framework
        1. 21.4.1. Motivation
        2. 21.4.2. Overview
        3. 21.4.3. Operation
      5. 21.5. SIP Integration with Policy Control: Media and QoS Authorization
        1. 21.5.1. Motivation
        2. 21.5.2. Architecture
        3. 21.5.3. Implementation
        4. 21.5.4. Example
      6. 21.6. Summary
    8. 22. NAT Traversal
      1. 22.1. NAT Overview
        1. 22.1.1. Basic NAT (Network Address Translation)
        2. 22.1.2. NAPT (Network Address and Port Translation)
      2. 22.2. Behavior of NAT Devices
        1. 22.2.1. Address Mapping Behavior for UDP Traffic
        2. 22.2.2. Filtering Behavior for UDP Traffic
        3. 22.2.3. Examples
          1. Endpoint-Independent NAT
          2. Address and Port-Dependent NAT
      3. 22.3. SIP Traversal through NAT
        1. 22.3.1. Issues
          1. Routing of SIP Responses
          2. Routing of Incoming Requests
        2. 22.3.2. Proposed Solutions
          1. Routing of Responses
          2. Routing of Incoming Requests
      4. 22.4. RTP Traversal through NAT
        1. 22.4.1. Issues
        2. 22.4.2. Proposed Solutions
          1. Scenario 1
          2. Scenario 2
          3. Scenario 3
          4. Putting It All Together
      5. 22.5. Session Border Controllers
      6. 22.6. NAT Traversal Using SBCs
        1. 22.6.1. SBC-Based NAT Traversal of SIP Signaling
          1. If TCP Is Used
          2. If UDP Is Used
        2. 22.6.2. SBC-Based NAT Traversal of RTP Traffic
      7. 22.7. Summary
    9. 23. SIP Networks
      1. 23.1. The Role of the Network
        1. 23.1.1. Network Functions
      2. 23.2. Mobility and Routing
      3. 23.3. Authentication, Authorization, and Accounting
      4. 23.4. Security
      5. 23.5. Interworking and Border Functions
      6. 23.6. Provision of Network-Based Services
      7. 23.7. Summary
    10. 24. The IMS
      1. 24.1. 3GPP and IMS
      2. 24.2. High-Level IMS Requirements
        1. 24.2.1. IP Connectivity
        2. 24.2.2. Access Independence
        3. 24.2.3. Roaming Support
        4. 24.2.4. QoS Support
        5. 24.2.5. Support for Multiple Services
        6. 24.2.6. Security
      3. 24.3. Overview of IMS Architecture
        1. 24.3.1. The Home SIP Server and the Subscriber Database
          1. 1. Authentication
          2. 2. User Profile
          3. 3. Originating Calls
          4. 4. Service Control
          5. 5. Prohibition of Media Types
        2. 24.3.2. The Outbound/Inbound Proxy
          1. 1. Securing the Communication between UE and Network
          2. 2. Compression of SIP Messages
          3. 3. Prohibition of Codecs
          4. 4. Policy Control
        3. 24.3.3. The Edge Proxy
        4. 24.3.4. The Application Server and the Media Server
          1. MRFP
          2. MRFC
        5. 24.3.5. The PSTN Gateway
        6. 24.3.6. The Border Function
        7. 24.3.7. The IMS Architecture
        8. 24.3.8. Call Flows: Nonroaming Case
          1. Registration
          2. Call Setup
        9. 24.3.9. Call Flows: Roaming Case
          1. Registration
          2. Call Setup
      4. 24.4. IMS Concepts
        1. 24.4.1. IMS Identities
          1. Private User Identity
          2. Public User Identity
        2. 24.4.2. IMS Security
          1. Access Security
          2. Network Domain Security (NDS)
        3. 24.4.3. Identity Management
        4. 24.4.4. The IM Call Model
        5. 24.4.5. Charging
          1. Offline Charging
          2. Online Charging
        6. 24.4.6. Policy and Charging Control
      5. 24.5. New Requirements on SIP
        1. 24.5.1. Service Route Discovery During Registration
        2. 24.5.2. Discovering Adjacent Contacts
        3. 24.5.3. Private SIP Extensions for 3GPP IMS
          1. P-Visited-Network-ID Header
          2. P-Access-Network-Info Header
          3. P-Charging-Function-Address Header
          4. P-Charging-Vector Header
            1. IMS Correlation ID
            2. Access Network Charging Information
            3. Inter Operator Identifier
          5. P-Associated-URI
          6. P-Called-Party-ID
      6. 24.6. IMS Services
        1. 24.6.1. The Presence Service
        2. 24.6.2. IMS Messaging
        3. 24.6.3. The PoC Service
        4. 24.6.4. The IMS Multimedia Telephony Service
        5. 24.6.5. Combinational Services
        6. 24.6.6. Global Text Telephony
      7. 24.7. ETSI TISPAN NGN
      8. 24.8. Next Trends in IMS
        1. 24.8.1. Voice Call Continuity (VCC)
        2. 24.8.2. IMS Centralized Services
      9. 24.9. Summary
  9. A. Source Code
    1. A.1 Obtaining the JAIN SIP and JAIN SDP Libraries
    2. A.2 Obtaining the JMF Libraries
    3. A.3 The Book’s Source Code
  10. Acronyms
  11. References
    1. IETF Documents
      1. Requests for Comments
    2. Internet Drafts
    3. 3GPP Documents
    4. ETSI TISPAN Documents
    5. ITU Documents
    6. OMA Documents
    7. W3C Documents
    8. Java Specification Requests
    9. Web Links