Learn how open APIs can be used to develop new services to leverage the value of converged Next Generation networks
'The essential open programming standards and the in-depth analysis spelled out in this book are paramount to converging homogeneous networks, providing a common language for the programmer and the network architect.'
-Douglas Tait, JAIN Founder, Sun Microsystems
'A great book. Programming Converged Networks is the best resource available today for those interested in understanding the history, motivation and details of enabling enriched 2G and 3G services.'
-Dr. Ard-Jan Moerdijk, former chairman Parlay/OSA Joint Working Group, Head of technology management, Ericsson Netherlands
'Open network APIs will revolutionize the creation of telecom applications and services. This book will help you understand how to use open APIs in designing and implementing novel telecoms applications that are ready for the next generation network, while being usable today.'
-Zygmunt Lozinski, President, The Parlay Group and IBM Senior Technical Staff Member
'A much needed introduction to unleashing the power of converged network services that are based on open and standardized APIs.'
-Christian Nord, Solution Strategy Manager & Parlay Board representative, Orange / France Telecom
Providing innovative, value-added services to customers is the key for success in today's competitive networking arena. This is particularly important for sophisticated converged Next Generation Networks (NGN)-integrating wired, wireless, circuit, and IP networks. Call Control models and Application Programming Interfaces (APIs)-such as JAIN, Parlay/OSA, and Parlay X Web Services-are used to develop, enhance, and attach advanced services to voice, data, and multimedia sessions in converged networks.
Programming Converged Networks: Call Control in Java, XML, and Parlay/OSA focuses on the role that APIs for Call Control play in next generation networks and addresses technical issues such as trade-offs between flexibility, performance, and simplicity. Special features include example software code and call flow diagrams using UML, Java, or OMG IDL; design choices and design patterns used by different call models and open API standards; advanced design solutions when programming with open APIs; and network programming using XML. This essential book will serve as an accessible tool for architects, programmers, and engineers; service designers and providers; and graduate students and researchers in telecom, networking, and computer science. Industry consultants and analysts will also find it a useful reference.
Table of Contents:
List of Figures.
1.1 Sessions and Call Control.
1.2 Programmability and APIs.
1.3 How This Book Is Organized.
1.4 Relevant Industry For a.
1.5 Concluding Remarks.
1.6 To Explore Further.
2. The Telephone Network, Converged Networks, and Programmability.
2.1 Evolution of the PSTN.
2.1.1 Circuit and Packet Switching.
2.1.2 Switches and Signaling.
2.1.3 Switch-Based Services.
2.1.4 The (Advanced) Intelligent Network.
2.1.5 Converged Networks.
2.1.6 A Glance at Signaling Protocols: ISUP and SIP.
2.2 Programmability in AIN and Converged Networks.
2.2.1 Limitations of AIN.
2.2.2 Programmability in Converged Networks.
2.3 APIs Versus Protocols.
2.3.1 The Difference Between APIs and Protocols.
2.3.2 APIs Versus Protocols for Programmability.
2.4 Motivating Services for API Definitions.
2.4.1 Voice Virtual Private Network.
2.4.2 Voice-Activated Dialing.
2.5 Running Examples Used in This Book.
2.5.1 Toll-Free Calling.
2.5.2 Internet Call Waiting.
2.6 Concluding Remarks.
2.7 To Explore Further.
3. Basic Concepts and Design Issues.
3.2 Basic Terminology.
3.2.1 Applications and Services.
3.2.2 Service and Network Providers.
3.2.3 Users and Subscribers.
3.2.4 Switches and Switching Centers.
3.3 A Simple Model of Call Processing.
3.4 Basic Model of Programmability.
3.5 First- and Third-Party Call Control.
3.6 Call Models and APIs.
3.7 Specification Language.
3.7.1 Specification Languages.
3.7.2 Choosing a Language.
3.8 Full and Half-Call Models.
3.9 Symmetric and Asymmetric Call Models.
3.10 Network and Application Views of Call Processing.
3.11 Network-Edge and Network-Core APIs.
3.12 API Extensibility.
3.13 Feature Interaction.
3.14 Concluding Remarks.
3.15 To Explore Further.
4. The Advanced Intelligent Network.
4.2.1 SS7 Elements.
4.2.2 SS7 Protocols.
4.3 Core AIN and IN Aspects.
4.3.1 AIN/IN Principles.
4.3.2 IN Processing Model.
4.3.3 Basic Call State Models.
4.4 ITU-T IN Aspects.
4.4.1 ITU-T IN Architecture and Capability Sets.
4.4.2 Service-Independent Building Blocks, Services, and Service Features.
4.5 Wireless Intelligent Networks (WIN).
4.5.2 WIN Architecture.
4.6 Customized Applications for Mobile Enhanced Logic (CAMEL).
4.7 AIN Examples.
4.7.1 Toll-Free Calling.
4.7.2 Internet Call Waiting.
4.7.3 900 Call Restriction with PIN Override.
4.8 Concluding Remarks.
4.9 To Explore Further.
5. The Java Telephony API.
5.1.1 What Is Computer Telephony Integration (CTI)?
5.1.2 Why JTAPI?
5.1.3 History of JTAPI.
5.2 JTAPI Basics.
5.3 Basic Call Scenarios.
5.3.1 Two-Party Call.
5.3.2 Two-Party Call with Multiple Terminals.
5.3.3 Three-Party Call.
5.4 The JTAPI Peer and JTAPI Packages.
5.4.2 Call Control.
5.4.3 Call Center.
5.4.7 Private Data.
5.5 JTAPI Examples.
5.5.1 Provisioned Call Forwarding Application.
5.5.2 Dynamic Call Forwarding Application.
5.6 Distributed JTAPI.
5.6.1 Full Call Model.
5.6.2 Half Call Model.
5.7 Concluding Remarks.
5.8 To Explore Further.
6. JAIN Call Control: JCC and JCAT.
6.3 JCC and Signaling Protocols.
6.4 JCC and Application-Level Facilities.
6.5 Call Control in JAIN.
6.6 JCC and JCAT Service Drivers.
6.6.1 JCC Service Drivers.
6.6.2 JCAT Service Drivers.
6.7 Components of the JCC/JCAT API.
6.7.1 Basic Components.
6.7.2 Advanced Call Control Objects.
6.7.3 Basic API Patterns: Listeners and Factories.
6.7.4 Event and Listener Inheritance Diagrams.
6.8 More About Java Call Control.
6.8.5 Event Filters.
6.9 Java Call Control EXTensions.
6.10 JCC Call Flows.
6.10.1 First-Party Call.
6.10.2 A Call Logging Application.
6.11 Running Examples Using JCC and JCAT.
6.11.1 Toll-Free Call Application.
6.11.2 Internet Call Waiting Application.
6.12 API and Protocols.
6.12.1 JCAT Merge Call Mapping to SIP.
6.13 Relationship of JCC/JCAT to JTAPI and Parlay APIs.
6.14 Concluding Remarks.
6.15 To Explore Further.
7. The Parlay/OSA API.
7.2 History and Background.
7.2.1 The JWG Process and Technology Mappings.
7.2.2 The Influence of TINA-C.
7.2.3 The TINA Business Model.
7.3 Parlay Architecture.
7.3.1 Registering and Using Parlay Services.
7.4 Overview of Parlay APIs.
7.4.2 Call Control APIs.
7.4.3 User Interaction.
7.4.5 Terminal Capabilities.
7.4.6 Data Session Control.
7.4.7 Generic Messaging Service.
7.4.8 Connectivity Manager.
7.4.9 Account Management.
7.4.10 Charging API.
7.4.11 Policy Management Service.
7.4.12 Presence and Availability Management API.
7.5 Design Patterns and Naming Conventions.
7.5.1 Design Patterns and Conventions.
7.5.2 Naming Conventions.
7.6 Call Control APIs.
7.6.1 Generic Call Control API.
7.6.2 Multiparty Call Control.
7.6.3 Multimedia Call Control.
7.6.4 Conference Call Control.
7.7 Steps in the Early Life of a Parlay Application.
7.7.1 How the Application Accesses the Initial Interface.
7.7.2 Authenticating the Framework and Application.
7.7.3 Requesting Access to the Service Discovery Interface.
7.7.4 Discovering Parlay Services.
7.7.5 Signing the Service Agreement.
7.8 Steps in the Early Life of a Parlay Service.
7.8.1 How the Service Accesses the Initial Interface.
7.8.2 Authenticating the Framework and Service.
7.8.3 Requesting Access to the Service Registration Interface.
7.8.4 Registering a Parlay Service.
7.9 The Usage Session: Multimedia Call Control.
7.10 Running Examples in Parlay.
7.10.1 Toll-Free Application.
7.10.2 Internet Call Waiting Application.
7.11 Concluding Remarks.
7.12 To Explore Further.
8. Detailed API Design Issues.
8.2 Synchronous Versus Asynchronous Calls.
8.3 FSM Inheritance Considerations.
8.4 Object Mutability.
8.4.1 Multiple Sessions per Object.
8.5 Callbacks and Event Listeners.
8.6 Handling Events.
8.7 Event and Listener Hierarchy.
8.8 Using Interfaces Versus Using Classes.
8.9 Bootstrapping, Factories, and Peers.
8.10 To Explore Further.
9. XML Programmability: PINT, SPIRITS, JAIN SCML, and Parlay X.
9.2 PINT and SPIRITS.
9.2.1 PSTN/Internet Interworking Protocol (PINT).
9.2.2 Service in the PSTN/IN Requesting InTernet Services (SPIRITS).
9.2.3 Authorization, Authentication, and Brokering.
9.3 Service Creation Markup Language.
9.3.1 Developing and Deploying an SCML Script.
9.3.2 An Example Using SCML.
9.3.3 Using XSL to Generate Scripts.
9.4 Parlay X Web Services.
9.5 Concluding Remarks.
9.6 To Explore Further.
10. Concluding Remarks and a Look at the Future.
10.1 Problems with Existing APIs.
10.1.1 Network Intelligence Model.
10.1.2 API Complexity and Overhead.
10.1.3 Specification Rigor.
10.1.5 Support for Mobile Wireless Networks.
10.1.6 Support for Alternative Charging and Billing Models.
10.1.7 The Bottom Line: The Elusive "Killer App".
10.2 A Speculative Look at the Future.
10.2.1 Scenario 1: APIs Everywhere.
10.2.2 Scenario 2: No APIs and No Call Models.
10.2.3 Scenario 3: APIs and Call Models, but No Standard.
10.2.4 Scenario 4: Other Approaches to Programmability.
10.3 Concluding Remarks.
RAVI JAIN received his PhD from the University of Texas, Austin. He is Vice President and Lab Director for the Network Services and Security Lab at DoCoMo USA Labs.
JOHN-LUC BAKKER holds an MS degree in programming aspects of Distributed and Parallel Computing from the Delft University of Technology, The Netherlands. He is a Research Scientist in the Information Analyses and Services Research department at Telcordia Technologies.
FAROOQ ANJUM has a PhD in Electrical and Computer Engineering from the University of Maryland at College Park. He is a Research Scientist at Telcordia, and an adjunct professor at University of Pennsylvania, Philadelphia, and at Stevens Institute of Technology, Hoboken.