Contents List of Tables x List of Figures xi Acknowledgments xv Chapter 1 Introduction 1 1.1 Components of an Internet Telephony Service . . . . . . . . . . . . . . . . . . . 2 1.1.1 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Chapter 2 Transport 5 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Internet Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1 Previous Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.2 Measurement Approach . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.3 Results for Receivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.4 Results for Senders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.5 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 Review of Existing Recovery Mechanisms . . . . . . . . . . . . . . . . . . . . . 23 2.4 Media Aware vs. Media Unaware Recovery . . . . . . . . . . . . . . . . . . . . 25 2.4.1 Resynchronization Time . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.2 Magnitude of Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.2.1 Objective Measurements . . . . . . . . . . . . . . . . . . . . 29 2.4.2.2 Subjective Measurements . . . . . . . . . . . . . . . . . . . . 31 2.4.3 Contribution of Resynchronization . . . . . . . . . . . . . . . . . . . . . 32 2.4.3.1 Objective Comparison . . . . . . . . . . . . . . . . . . . . . . 33 2.4.3.2 Subjective Tests . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5 Integrating FEC with Playout Buffers . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.1 The Coupling Effect . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5.1.1 Redundant Codecs . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.1.2 Reed-Solomon FEC . . . . . . . . . . . . . . . . . . . . . . . 38 2.5.1.3 Conditions for Dependency . . . . . . . . . . . . . . . . . . . 40 2.5.1.4 A Note on Applicability . . . . . . . . . . . . . . . . . . . . . 41 2.5.2 Existing Playout Buffer Algorithms . . . . . . . . . . . . . . . . . . . . 41 2.5.3 New Playout Buffer Algorithms . . . . . . . . . . . . . . . . . . . . . . 43 2.5.3.1 Virtual Delay Algorithms . . . . . . . . . . . . . . . . . . . . 44 2.5.3.1.1 Formulation for Redundant Codecs . . . . . . . . . . 44 2.5.3.1.2 Formulation for Reed Solomon FEC . . . . . . . . . 45 2.5.3.1.3 Implementation . . . . . . . . . . . . . . . . . . . . 45 2.5.3.1.4 Proof of Correctness . . . . . . . . . . . . . . . . . 45 2.5.3.1.5 Supporting Target Loss Probabilities . . . . . . . . . 48 2.5.3.2 “Previous Optimal” Algorithm . . . . . . . . . . . . . . . . . 50 2.5.3.3 Model-Based “Analytical” Playout Adaptation Algorithm . . . 52 2.5.4 Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.5.4.1 Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . 56 2.5.4.2 Coupled vs. Uncoupled . . . . . . . . . . . . . . . . . . . . . 57 2.5.4.3 Comparisons of New Algorithms . . . . . . . . . . . . . . . . 62 2.5.4.3.1 Using FEC with Minimal Delays . . . . . . . . . . . 62 2.5.4.3.2 Achieving a Specific Loss Target . . . . . . . . . . . 64 2.5.4.3.3 Achieving a Varying Loss Target . . . . . . . . . . . 64 2.6 Transport of Media-Unaware FEC . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.6.1 Transport Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.6.2 Previous Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.6.3 Our Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.6.3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.6.3.2 Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.6.3.2.1 FEC Packet Structure . . . . . . . . . . . . . . . . . 71 2.6.3.2.1.1 RTP Header of FEC Packets . . . . . . . . . 71 2.6.3.2.1.2 FEC Header . . . . . . . . . . . . . . . . . . 72 2.6.3.2.2 Protection Operation . . . . . . . . . . . . . . . . . 73 2.6.3.2.3 Reconstruction . . . . . . . . . . . . . . . . . . . . 74 2.6.4 Determination of the Set of Packets . . . . . . . . . . . . . . . . . . . . 75 2.6.4.1 Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 2.6.4.2 Computing T . . . . . . . . . . . . . . . . . . . . . . . . . . 77 2.7 Conclusion and Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Chapter 3 QoS Feedback 81 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.2 Overview of RTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.2.1 RTCP: Control and Management . . . . . . . . . . . . . . . . . . . . . . 84 3.2.2 Scaling RTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.3 Problems with RTCP Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.3.1 Congestion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.3.2 State Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.3.3 Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.4 Requirements of a Solution for IP telephony . . . . . . . . . . . . . . . . . . . . 89 3.5 Taxonomizing the Solution Space . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.5.1 Feedback Destination: Where . . . . . . . . . . . . . . . . . . . . . . . 90 3.5.2 Feedback Mechanism: How . . . . . . . . . . . . . . . . . . . . . . . . 91 3.5.3 Feedback Source: Who . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 3.5.4 Feedback Content: What . . . . . . . . . . . . . . . . . . . . . . . . . . 93 3.5.5 Congestion Control: When . . . . . . . . . . . . . . . . . . . . . . . . . 93 3.6 Solution Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.6.1 Existing Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.6.1.1 Summarizers . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.6.1.2 Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.6.1.3 Separate Multicast Groups . . . . . . . . . . . . . . . . . . . 97 3.6.1.4 Event-Based Reporting . . . . . . . . . . . . . . . . . . . . . 98 3.6.2 Additional Approaches . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 3.7 Reconsideration Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.7.1 Ideal Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 3.7.2 Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.7.3 Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.7.3.1 No Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.7.3.1.1 Computing the Send Probability . . . . . . . . . . . 112 3.7.3.1.2 Computing the Scheduled Rate . . . . . . . . . . . . 113 3.7.3.1.3 Obtaining the ODE . . . . . . . . . . . . . . . . . . 117 3.7.3.1.4 Computing the Level of Congestion . . . . . . . . . 117 3.7.3.1.5 Reconsideration as a Control Mechanism . . . . . . . 119 3.7.3.1.6 Computing the Convergence Time . . . . . . . . . . 120 3.7.3.2 Modeling Delay and Loss . . . . . . . . . . . . . . . . . . . . 120 3.7.3.2.1 Number of Packets Sent for Conditional Reconsider- ation . . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.7.3.2.2 Number of Packets Sent for Unconditional Reconsid- eration . . . . . . . . . . . . . . . . . . . . . . . . . 124 3.7.3.2.3 Duration of Plateau Period . . . . . . . . . . . . . . 125 3.7.3.3 Linear Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 3.7.3.4 Steady State Behavior . . . . . . . . . . . . . . . . . . . . . . 130 3.7.3.5 Fairness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 3.7.3.6 Single User Joins Late . . . . . . . . . . . . . . . . . . . . . . 135 3.8 BYE Reconsideration Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . 137 3.9 Reverse Reconsideration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 3.9.1 Quantifying the Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 141 3.9.1.1 Long Declines . . . . . . . . . . . . . . . . . . . . . . . . . . 143 3.9.1.2 Rapid Declines . . . . . . . . . . . . . . . . . . . . . . . . . . 144 3.9.2 Reverse Reconsideration Algorithm . . . . . . . . . . . . . . . . . . . . 145 3.9.3 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 3.10 Group Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 3.10.1 Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 3.10.1.1 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 3.10.2 Increasing the Sampling Probability . . . . . . . . . . . . . . . . . . . . 152 3.10.3 Reducing the Sampling Probability . . . . . . . . . . . . . . . . . . . . 152 3.10.3.1 Corrective Factors . . . . . . . . . . . . . . . . . . . . . . . . 153 3.10.3.2 Binning Algorithm . . . . . . . . . . . . . . . . . . . . . . . . 155 3.10.3.3 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 3.10.4 Sender Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 3.11 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Chapter 4 Signaling Protocols 160 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 4.2 Requirements for a Signaling Protocol . . . . . . . . . . . . . . . . . . . . . . . 161 4.3 Existing Signaling Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 4.3.1 BICC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.3.2 H.323 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.4 SIP Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 4.4.1 Protocol Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4.4.2 SIP Network Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 4.4.3 SIP Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 4.4.4 Addressing and Naming . . . . . . . . . . . . . . . . . . . . . . . . . . 172 4.4.5 Initiating, Modifying, and Terminating Calls . . . . . . . . . . . . . . . 173 4.4.6 Registrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 4.4.7 Session Description Protocol Usage . . . . . . . . . . . . . . . . . . . . 175 4.4.8 SIP as a Tool for New Services . . . . . . . . . . . . . . . . . . . . . . . 177 4.4.8.1 MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 4.4.8.2 URIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 4.5 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 4.5.1 Events and Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 4.5.2 Processing Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 182 4.5.3 Server State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 4.5.4 Client State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 4.5.5 Mediator State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . 190 4.5.6 Server API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 4.5.7 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 4.5.8 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 4.6 Conclusions and Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Chapter 5 Gateway and Service Discovery 198 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 5.2 Problem Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.2.1 Gateways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.2.2 General Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 5.3 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.4 Existing Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 5.4.1 Centralized Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 5.4.1.1 Service Location Protocol . . . . . . . . . . . . . . . . . . . . 211 5.4.1.2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 5.4.2 Replicated Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 5.4.3 Distributed Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 5.4.3.1 DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 5.4.3.2 LDAP and X.500 . . . . . . . . . . . . . . . . . . . . . . . . 216 5.4.4 Indexed Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 5.4.4.1 Telephony Routing over IP (TRIP) . . . . . . . . . . . . . . . 219 5.4.4.2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 5.4.5 Multicast Push and Pull . . . . . . . . . . . . . . . . . . . . . . . . . . 223 5.4.6 Summary of Existing Architectures . . . . . . . . . . . . . . . . . . . . 224 5.5 Wide Area Service Discovery Protocol . . . . . . . . . . . . . . . . . . . . . . . 225 5.5.1 Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 5.5.2 Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 5.5.3 BA URL’s and Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . 229 5.5.4 Message Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 5.5.5 SA Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 5.5.6 DA Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 5.5.6.1 Multicast Listening . . . . . . . . . . . . . . . . . . . . . . . 233 5.5.6.2 Contacting BA’s . . . . . . . . . . . . . . . . . . . . . . . . . 233 5.5.6.3 Multicasting DAAdverts . . . . . . . . . . . . . . . . . . . . 235 5.5.7 AA Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 5.5.8 BA Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 5.5.8.1 Receiving Advertisements . . . . . . . . . . . . . . . . . . . . 236 5.5.8.2 Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 5.5.8.3 Policing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 5.5.9 Sending Multicast Advertisements . . . . . . . . . . . . . . . . . . . . . 237 5.5.10 Scheduling Transmission of Advertisements . . . . . . . . . . . . . . . . 238 5.5.10.1 Timing Out Senders . . . . . . . . . . . . . . . . . . . . . . . 239 5.5.10.2 Minimum Transmission Interval . . . . . . . . . . . . . . . . 240 5.5.11 Multicast Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 5.5.12 Reducing the Storage Requirements of a BA . . . . . . . . . . . . . . . 240 5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Chapter 6 Application Architecture 242 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 6.2 Requirements for an Internet Telephony Service Architecture . . . . . . . . . . . 243 6.3 Existing Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 6.3.1 Centralized Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . 246 6.3.1.1 Intelligent Network . . . . . . . . . . . . . . . . . . . . . . . 246 6.3.1.2 MGCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 6.3.2 Distributed Software Architectures . . . . . . . . . . . . . . . . . . . . . 250 6.3.3 Distributed Component Architectures . . . . . . . . . . . . . . . . . . . 253 6.3.4 Mobile Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 6.3.4.1 General Purpose Languages . . . . . . . . . . . . . . . . . . . 256 6.3.4.2 Domain Specific Languages . . . . . . . . . . . . . . . . . . . 257 6.4 Application Component Architecture . . . . . . . . . . . . . . . . . . . . . . . . 258 6.4.1 Dialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 6.4.2 Mixing Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 6.4.3 Text-To-Speech Component . . . . . . . . . . . . . . . . . . . . . . . . 270 6.4.4 Additional Session Components . . . . . . . . . . . . . . . . . . . . . . 271 6.4.5 Presence Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 6.4.6 Additional Components . . . . . . . . . . . . . . . . . . . . . . . . . . 275 6.4.7 Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 6.4.8 Third Party Call Control . . . . . . . . . . . . . . . . . . . . . . . . . . 278 6.4.8.1 Basic Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 6.4.8.2 Advanced Flow . . . . . . . . . . . . . . . . . . . . . . . . . 280 6.4.8.3 Continued Processing of Third Party Calls . . . . . . . . . . . 281 6.4.8.4 End User Initiates Call . . . . . . . . . . . . . . . . . . . . . . 283 6.4.9 Obtaining Data from End Users . . . . . . . . . . . . . . . . . . . . . . 284 6.4.9.1 Stimulus Signaling . . . . . . . . . . . . . . . . . . . . . . . . 286 6.4.9.2 Functional Signaling . . . . . . . . . . . . . . . . . . . . . . . 288 6.5 Target Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 6.5.1 Pre-Paid Calling Card . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 6.5.2 Click-to-dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 6.5.3 Auto-conference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 6.5.4 Web Form Entry for Call Center . . . . . . . . . . . . . . . . . . . . . . 297 6.5.5 Speech-to-text for the Hearing Impaired . . . . . . . . . . . . . . . . . . 298 6.6 Comparison to Existing Architectures . . . . . . . . . . . . . . . . . . . . . . . 300 6.6.1 DFC and ECLIPSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 6.6.2 Distributed Software and Component Architectures . . . . . . . . . . . . 301 6.6.3 Mobile Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 6.6.4 Centralized Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . 303 6.7 Conclusions and Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Chapter 7 Conclusion and Future Work 305