SIP Working Group W. Marshall Internet Draft AT&T Document: Category: Informational K. Ramakrishnan TeraOptic Networks E. Miller Terayon G. Russell M. Osman CableLabs B. Beser Pacific Broadband M. Mannette K. Steinbrenner 3Com D. Oran F. Andreasen Cisco J. Pickens Com21 P. Lalwaney Nokia J. Fellows Copper Mountain Networks D. Evans D. R. Evans Consulting K. Kelly NetSpeak August, 2001 Architectural Considerations for Providing Carrier Class Telephony Services Utilizing SIP-based Distributed Call Control Mechanisms Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026[1]. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- DCS Group Category: Informational - Expiration 2/28/02 1 DCS Architecture August 2001 Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. The distribution of this memo is unlimited. It is filed as , and expires February 28, 2002. Please send comments to the authors. 1. Abstract This document provides an overview of a SIP-based Distributed Call Signaling (DCS) architecture to support carrier class packet-based voice, video, and other real time multimedia services. Companion documents address a specific set of SIP 2.0 protocol extensions and usage rules that are necessary to implement the DCS architecture in an interoperable fashion. The DCS architecture takes advantage of endpoint intelligence in supporting telephony services without sacrificing the network's ability to provide value through mechanisms such as resource management, lookup of directory information and translation databases, routing services, security, and privacy enforcement. At the same time, the architecture provides flexibility to allow evolution in the services that may be provided by endpoints and the network. DCS also takes into account the need to manage access to network resources and account for resource usage. The SIP usage rules defined in the accompanying IDs specifically address the coordination between Distributed Call Signaling and dynamic quality of service control mechanisms for managing resources over the access network. In addition, the DCS architecture defines the interaction needed between network provided call controllers, known as a "DCS- proxy" for supporting these services. 2. Conventions used in this document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [2]. 3. Table of Contents DCS Group Category: Informational - Expiration 2/28/02 2 DCS Architecture August 2001 1. Abstract........................................................2 2. Conventions used in this document...............................2 3. Table of Contents...............................................2 4. Introduction....................................................3 4.1 Background and Motivation......................................4 4.2 Requirements And Design Principles............................6 4.3 Distributed Call Signaling Architecture........................7 4.4 Trust Boundary................................................10 4.5 Basic Call Flow...............................................10 5. Resource Management............................................13 6. Distributed Call State.........................................14 7. DCS Proxy - DCS Proxy Communications...........................16 8. Privacy........................................................17 9. Security Considerations........................................19 10. Call Flows....................................................19 10.1 Basic Call Flow from MTA to MTA..............................20 10.2 Basic Call Flow from MTA to CMS..............................34 10.3 Basic Call Flow from CMS to MTA..............................43 10.4 Basic Call Flow from CMS to CMS..............................52 10.5 Call-Forwarding-Unconditional and Call-Forwarding-Busy.......59 10.6 Call-Forwarding-No-Answer....................................65 10.7 Call-Forwarding-MTA-Unavailable..............................71 10.8 Return-Call..................................................73 10.9 Customer-Originated-Trace....................................77 10.10 Call-Waiting................................................79 10.11 Call-Transfer-Blind.........................................85 10.12 Call-Transfer-Consultative..................................92 10.13 Three-Way-Calling (with Network Bridge)....................100 10.14 Three-Way-Calling Hangup sequences.........................110 10.15 CODEC Change within previous authorization.................116 10.16 CODEC Change requiring new authorization...................118 10.17 Busy-Line-Verification.....................................125 10.18 Operator break-in..........................................128 10.19 Lawfully Authorized Electronic Surveillance................130 10.19.1 Call-Forwarding-Unconditional with Forwarder under Surveillance.....................................................131 10.19.2 Call-Transfer-Blind with Transferer under Surveillance...135 10.19.3 Call-Transfer with new destination unable to do interception .................................................................140 10.19.4 Call-Transfer-Consultative with Transferer under Surveillance.....................................................141 10.20 Privacy with Application-level Anonymizer..................146 11. Notice Regarding Intellectual Property Rights................163 12. References...................................................163 13. Acknowledgements.............................................164 14. Author's Addresses...........................................164 Full Copyright Statement.........................................167 4. Introduction DCS Group Category: Informational - Expiration 2/28/02 3 DCS Architecture August 2001 This document provides an overview of a SIP-based Distributed Call Signaling (DCS) architecture to support carrier class packet-based voice, video, and other real time multimedia services. The DCS architecture and the corresponding SIP protocol enhancements (described in companion documents) are being developed as part of the cable industry's PacketCable initiative, managed out of CableLabs (see www.cablelabs.com). PacketCable is defining a series of interface specifications that will enable vendors to develop interoperable products for providing internet telephony and other multimedia services over DOCSIS-enabled cable data networks. The DCS architecture described herein has its roots in the DOSA work performed by AT&T Laboratories ["Distributed Open Signaling Architecture"; Kalmanek, Marshall, Mishra, Nortz, Ramakrishnan, et al.; October, 1998]. A relatively large group of vendors have cooperated in an intensive effort to develop the DCS architecture and SIP protocol extensions described here and in the accompanying protocol drafts. Although DCS was originally designed with cable access networks in mind, the SIP signaling enhancements have general applicability to carrier class VOIP services running over QoS enabled IP networks. The authors are submitting this draft to the IETF in order to provide general information regarding the DCS architecture and to convey the motivation behind the SIP enhancements recommended in the accompanying protocol drafts. We believe that incorporation of the concepts and mechanisms described in this set of drafts by the IETF into the SIP standard will significantly enhance SIP's ability to function as a carrier-class signaling protocol. Such an enhancement to SIP would undoubtedly aid in its widespread acceptance and deployment. We have incorporated several useful comments received at the IETF SIP Working group on earlier versions of this and the other DCS related drafts. The PacketCable Draft Specification for DCS is available from the CableLabs website at: ftp://ftp.cablelabs.com/pub/ietfdocs/dcsdraft2.pdf. 4.1 Background and Motivation The design of the Distributed Call Signaling (DCS) architecture recognizes the trend towards use of packet networks as the underlying framework for communications. These networks will provide a broad range of services, including traditional best-effort data service as well as enhanced, value-added services, such as telephony. At the same time, improvements in silicon will reinforce the trend towards increased functionality in endpoints. These intelligent endpoints will take advantage of the widespread availability of packet networks to enable a rich set of applications and services for users. However, when the network is used for real-time telephony applications, it is essential to have service differentiation at the DCS Group Category: Informational - Expiration 2/28/02 4 DCS Architecture August 2001 IP layer. The ability to control and monitor usage is needed for the provider to be able to provide service differentiation and to derive revenue from the enhanced services. At the same time, the availability of best effort communications and the migration of functionality to the endpoints pose a challenge to the provider to find incentives for users to use or pay for enhanced services. We see three key functions that a provider can offer, as incentives to use enhanced services. First, the network service provider has the unique ability to manage and provide network layer quality of service. When users depend on the quality of the service, as with telephony, there is a strong incentive to use the enhanced service, rather than a best effort service. Second, the network service provider can play an important role as a trusted intermediary. This includes ensuring the integrity of call routing, as well as ensuring both the accuracy and the privacy of information that is exchanged. The service provider can also add value by ensuring that services are provided consistently and reliably, even when an endpoint is unavailable. Finally, there are a number of services that may be offered more efficiently by the network service provider rather than in endpoints. For example, conference bridging may be more cost effective to implement in a multi-point bridge rather than in every endpoint attached to the network. A key contribution of the DCS architecture is a recognition of the need for coordination between call signaling, which controls access to telephony specific services, and resource management, which controls access to network-layer resources. This coordination is designed to meet the user expectations and human factors associated with telephony. For example, the called party should not be alerted until the resources necessary to complete the call are available. If resources were not available when the called party picked up, the user would experience a call defect. In addition, users expect to be charged for service only after the called party answers the phone. As a result, usage accounting starts only after the called party picks up. Coordination between call signaling and resource management is also needed to prevent fraud and theft of service. The coordination between DCS and Dynamic QoS protocols ensures that users are authenticated and authorized before receiving access to the enhanced QoS associated with the telephony service. It is important to be able to deploy a residential telephone service at very large scale, cost-effectively. To achieve this, DCS minimizes the messaging overhead on network call servers, and does not require these servers to maintain call state for active calls. Once a call is established, call state is maintained only where it is needed, in keeping (informally) with the principle of "fate- sharing" at the endpoints that are involved in the call, and at the Edge Routers in the bearer path that are providing differentiated service to the media flow. This allows the network call servers to scale to support more users, and imposes less stringent reliability requirements on those servers. DCS Group Category: Informational - Expiration 2/28/02 5 DCS Architecture August 2001 DCS is also designed so that calling users receive consistent service even when a called endpoint is unavailable. For example, when an endpoint is unavailable service logic in a network call server can forward telephone calls to a voice mailbox. 4.2 Requirements And Design Principles In this section, we briefly describe the application requirements that led to a set of DCS signaling design principles. In its most basic implementation, DCS supports a residential telephone service comparable to the local telephone services offered today. In addition to the commonly used service features that need to be supported, there are important requirements in the areas of reliability, performance, and scalability that influence the signaling architecture. Supporting an IP telephony service comparable to the telephony service offered today requires enhanced bearer channel and signaling performance, including: . Low delay - end-to-end packet delay must be small enough that it does not interfere with normal voice conversations. The ITU recommends no greater than 300 ms roundtrip delay for telephony service. . Low packet loss - packet loss must be small enough to not perceptibly impede voice quality or performance of fax and voice band modems. . Short post-dial delay - the delay between the user dialing the last digit and receiving positive confirmation from the network must be short enough that users do not perceive a difference with post-dial delay in the circuit switched network or believe that the network has failed. . Short post pickup delay - the delay between a user picking up a ringing phone and the voice path being cut through must be short enough so that the "hello" from either the initiator or the receiver of the call is not clipped. We identify a number of key design principles that arise from the requirements and philosophy outlined above. 1. Providing differentiated network-layer quality of service is essential, while allowing the provider to derive revenues from the use of such differentiated services. 2. The architecture should allow, and even encourage, implementation of services and features in the intelligent endpoints, where economically feasible, while still retaining value in the network and network-based services 3. The architecture must ensure that the network is protected from fraud and theft of service. The service provider must be able to DCS Group Category: Informational - Expiration 2/28/02 6 DCS Architecture August 2001 authenticate users requesting service and ensure that only those authorized to receive a particular service be able to obtain it. 4. The architecture must enable the service provider to add value by supporting the functions of a trusted intermediary. This includes protecting the privacy of calling and called party information, and ensuring the accuracy of the information that is provided in messages from the network. 5. The architecture must enable the service provider to give a consistent view of basic services and features even when customer premise equipment is unavailable, and allow users to take advantage of functionality that is provided in the network, when it is cost-effective and easy to use. 6. The architecture must be implementable, cost-effectively, at very large scale. 4.3 Distributed Call Signaling Architecture The Distributed Call Signaling Architecture follows the principles outlined above to support a robust telephony service. Figure 1 introduces the key components in the architecture. The architecture assumes a broad range of DCS-compliant endpoints that provide telephony service to the user including Media Terminal Adapters (MTAs) that may be integrated with a Cable Modem or is a standalone device, as well as other endpoints such as personal computers. The access network interfaces to an IP backbone through a system we refer to as the Edge Router (ER). The ER is the first trusted element within the provider's network and is considered to be the edge of the network for providing access to differentiated quality of service. We believe that the access network is likely to manage resources on a per-flow basis, with associated signaling mechanisms (such as RSVP). The ER performs resource management, acts as a policy enforcement point and as a source of billing information. DCS-proxies (DPs) process call signaling messages and support number translation, call routing, feature support and admission control. In the context of SIP, a DCS-proxy is a SIP proxy that is involved in processing and forwarding of SIP requests. DPs act as trusted decision points for controlling when resources are committed to particular users. Media servers represent network-based components that operate on media flows to support the service. Media servers perform audio bridging, play terminating announcements, provide interactive voice response services, etc. Finally, PSTN gateways interface to the Public Switched Telephone Network. DCS Group Category: Informational - Expiration 2/28/02 7 DCS Architecture August 2001 +-----+ | MTA | MTA: media terminal adapter +-----+ | ER: Edge Router Access Network | | +----+ | ER | +----+ | +-----------+ |----| DCS Proxy | | +-----------+ | | +------------+ Backbone Network |----|Media Server| | +------------+ | | +------------+ |----|PSTN Gateway| | +------------+ +----+ | ER | +----+ | Access Network | | +-----+ | MTA | +-----+ Figure 1: A Simple view of Components of an IP Telephony Architecture used in a HFC Cable Environment. Telephony endpoints are considered to be "clients" of the telephony service. Consistent with the design principles, the architecture allows a range of services to be implemented by intelligent endpoints. They collect dialed digits, participate in signaling and contain the service logic required for basic call setup and feature support. Endpoints also participate in end-to-end capability negotiation. However, endpoints are not trusted to provide accurate information to the network or to keep information that is received private, except when it is in the endpoint's best interests to do so. Access to network resources on a differentiated basis is likely to be controlled by the service provider. The ER receives resource management requests from endpoints, and is responsible for ensuring that packets are provided the QoS they are authorized to receive (either through packet marking, or through routing and queueing the packets as a specific QoS assured flow). The ER requires authorization from a network entity (on a call-by-call basis for the telephony service) before providing access to enhanced QoS for an end-to-end IP flow. The obvious point where this policy and control function resides is the DCS-proxy (also called a gate-controller, DCS Group Category: Informational - Expiration 2/28/02 8 DCS Architecture August 2001 because of this responsibility for managing access to enhanced QoS). Thus, the ER is able to ensure that enhanced QoS is only provided for end-to-end flows that have been authorized and for which usage accounting is being done. Since the ER knows about the resource usage associated with individual IP flows, it generates the usage events that allow a user to be charged for service. We introduce the concept of a "gate" in the ER, which manages access to enhanced quality of service. The gate is a packet classifier and policer that ensures that only those IP flows that have been authorized by the DCS-proxy are granted access to enhanced QoS in the access and backbone networks. Gates are "opened" selectively for a flow. For the telephony service, they are opened for individual calls. Opening a gate involves an admission control check that is performed when a resource management request is received from the endpoint for an individual call, and it may involve resource reservation in the network for the call if necessary. The packet filter in the gate allows a flow of packets to receive enhanced QoS for a call from a specific IP source address and port number to a specific IP destination address and port number. The DCS-proxy, in addition to implementing many of the call control functions, is responsible for the policy decision regarding whether the gate should be opened. DCS sets up a gate in advance of a resource management message. This allows the policy function, which is at the DCS-proxy, to be "stateless" in that it does not need to know the state of calls that are already in progress. DCS-proxies are typically organized in domains. A DCS-proxy is responsible for a set of endpoints and the associated ERs. While endpoints are not trusted, there is a trust relationship between the ER and its associated DCS-proxy, since the DCS-proxy plays a role as a policy server controlling when the ER can provide enhanced QoS service. There is also a trust relationship among DCS-proxies. Details of the security model are outside the scope of this draft. The DCS-proxy is designed as a simple transaction server, so that the failure of a DCS-proxy does not affect calls in progress. A domain will likely have a primary and one or more secondary DCS- proxies. If the primary DCS-proxy fails, only calls in a transient state are affected. The endpoints involved in those calls will time out and retry. All active calls are unaffected. This is possible because the DCS-proxy retains no call state for stable calls. We believe this design makes the DCS-proxy efficient and highly scalable, and keeps the reliability requirements manageable. DCS supports inter-working with the circuit switched telephone network through PSTN gateways. A PSTN gateway may be realized as a combination of a media controller, media gateway, and a signaling gateway. A media gateway acts as the IP peer of an endpoint for media packets, converting between the data format used over the IP network and the PCM format required for transmission over the PSTN. DCS Group Category: Informational - Expiration 2/28/02 9 DCS Architecture August 2001 The signaling gateway acts as the IP peer of an endpoint for signaling packets, providing signaling inter-working between DCS and conventional telephony signaling protocols such as ISUP/SS7. A media gateway control protocol is used to control the operation of the media gateway from the signaling gateway. There are additional system elements that may be involved in providing the telephony service. For example, the DCS-proxy may interface with other servers that implement the authorization or translation functions. Similarly, three way calling may be supported using media servers in the network. 4.4 Trust Boundary The DCS architecture defines a trust boundary around the various systems and servers that are owned, operated by, and/or controlled by the service provider. These trusted systems include the proxies and various servers such as bridge servers, voicemail servers, announcement servers, etc. Outside of the trust boundary lie the customer premises equipment, and various media servers operated by third-party service providers. Certain subscriber-specific information, such as billing and accounting information, stays within the trust boundary. Other subscriber-specific information, such as endpoint identity, may be presented to untrusted endpoints or may be withheld based on subscriber profiles. The SIP User Agent (UA) may be either within the trust boundary (e.g. PSTN gateway) or outside the trust boundary (e.g. MTA), depending on exactly what function is being performed and exactly how it is being performed. Accordingly, the procedures followed by a User Agent, as contained in the accompanying drafts, are different depending on whether the UA is within the trust boundary or outside the trust boundary. A trusted user agent is, in almost all cases, equivalent to the combination of an untrusted user agent and a proxy. 4.5 Basic Call Flow Figure 2 presents a high-level overview of a basic MTA-to-MTA call flow in DCS. Each MTA is associated with a DCS-proxy, which acts as a SIP proxy. When a user goes off-hook and dials a telephone number, the originating MTA (MTA-o) collects the dialed digits and sends the initial INVITE message in SIP, to the "originating" DCS- proxy (DP-o). This INVITE contains SDP proposing a set of codecs that are acceptable to MTA-o (and their implied bandwidth requirements), and an indication of the (mandatory) QoS preconditions [9] needed for the session. DP-o verifies that MTA-o is a valid subscriber of the telephony service (using authentication information in the INVITE message) and determines whether this subscriber is authorized to place this call. DP-o then translates DCS Group Category: Informational - Expiration 2/28/02 10 DCS Architecture August 2001 the dialed number into the address of a "terminating" DCS-proxy (DP- t) and forwards the INVITE message to it. We assume that the originating and terminating DCS-proxies trust each other. DP-o augments the INVITE message that it forwards with additional information, such as billing information containing the account number of the caller. DP-t then translates the dialed number into the address of the terminating MTA (MTA-t) and forwards the INVITE message to MTA to notify it about the incoming call. The initial INVITE message invokes call feature handling at the terminating MTA, such as call-forwarding. Assuming that the call is not forwarded, MTA-t negotiates the coding style and bandwidth requirements for the media streams. A reliable provisional 1xx response to the initial INVITE is forwarded back through the DCS- proxies. DCS Group Category: Informational - Expiration 2/28/02 11 DCS Architecture August 2001 MTA-o ER-o DP-o DP-t ER-t MTA-t | Invite | | | | | |----------|--------->| Invite | | | | | |--------->| | | | | | | Invite | | | | | |----------|--------->| | | | | | 183 SDP | | | | |<---------|----------| | | | | | | | | Gate | 183 SDP |Gate Setup| | | | Setup |<---------|--------->| | | |<---------| | | | | 183 SDP | | | | | |<---------|----------| | | | | | | PRACK | | | |----------|----------|----------|----------|--------->| | | 200 OK (acknowledging PRACK) | | |<---------|----------|----------|----------|----------| | | | | | | |<---------|--------Reserve Resources-------|--------->| | | | | | | | | COMET | | |----------|--------- |----------|----------|--------->| | 200 OK (acknowledging COMET) | |<---------|----------|----------|----------|----------| | | | | | 180 Ring | | | | 180 Ring |<---------|----------| | | 180 Ring |<---------| | | |<---------|----------| | | | | | | PRACK | | | |----------|----------|----------|----------|--------->| | | 200 OK (acknowledging PRACK) | | |<---------|----------|----------|----------|----------| | | | | | | User | | | | | 200 OK | Answers | | | 200 OK |<---------|----------| | | 200 OK |<---------| | | |<---------|----------| | | | | ACK | | | | | |----------|----------|----------|----------|--------->| | | | | | | |<---------|----------Active Call----------|--------->| | | | | | | User | | | | | BYE | Hangs Up |<---------|----------|----------|----------|----------| | | | | | 200 OK | |----------|----------|----------|----------|--------->| Figure 2: A Basic Call Flow, including Resource Management functions In the figure, MTA-t sends a 183 SDP message[8] to DP-t. The 183 SDP contains a subset of the capabilities in the INVITE message that are acceptable to MTA-t. The SDP also carries the QoS preconditions DCS Group Category: Informational - Expiration 2/28/02 12 DCS Architecture August 2001 from the INVITE. DP-t sends a GATE-SETUP message to the terminating ER (ER-t), conveying policy instructions allowing ER-t to open a gate for the IP flow associated with this phone call. The GATE_SETUP message contains billing information containing the account number of the subscriber that will pay for the call. DP-t forwards the 183 SDP to DP-o. DP-o sends a GATE-SETUP message to the originating ER (ER-o) to indicate that it can open a gate for the IP flow associated with the phone call. Finally, DP-o forwards 200 OK to MTA-o. The initial INVITE request and 183 SDP response contain a SIP Contact header to indicate the IP address of the remote MTA to be used for subsequent end-to-end SIP signaling exchanges. MTA-o acknowledges the 183 SDP by sending a PRACK [7] directly to MTA-t. The PRACK may contain the SDP to allow for a further step in the negotiation of capabilities for the session. Once the initial INVITE/183/PRACK exchange has completed, both MTAs reserve the resources that will be needed for the media streams. Once MTA-o has successfully made its reservation, it sends a COMET message [9] to MTA-t, which is immediately acknowledged by MTA-t with a 200-OK. MTA-o uses the COMET message to communicate the fact that the desired pre-conditions necessary for the session as perceived by MTA-o are satisfied (e.g., successful reservation of resources, as perceived by MTA-o.) MTA-t acknowledges the COMET message with a 200 OK final response directly to MTA-o. However, resource reservation from MTA-t's perspective may not be completed yet. Thus, the 200 OK acknowledging the COMET message does not indicate successful resource reservation. Once MTA-t successfully reserves the resources needed for the call, it sends a 180 Ringing through the proxies to indicate that the phone is ringing, and that the calling party should be given a ringback call progress tone. We have not described, in detail, the messaging involved in resource reservation here, as we believe that it is appropriate to allow for a variety of resource management mechanisms. Thus, the MTA may use the resource management mechanism that is most suitable to the network segment that it is attached to. When the called party answers, by going off-hook, MTA-t sends a 200 OK final response through the proxies, which MTA-o acknowledges with an end-to-end ACK. At this point the resources that were previously reserved are committed to this conversation, and the call is "cut through." Either party can terminate the call. An MTA that detects an on-hook sends a SIP BYE message to the remote MTA, which is acknowledged. 5. Resource Management DCS's resource management protocols distinguish between two phases: a "Reserve" phase and a "Commit" phase. During the Reserve phase, resources are reserved but are not yet made available to the endpoint. This ensures that resources are available before ringing the far-end telephone. The Commit phase, which commits the resources associated with the flow, is initiated after ringing the far end telephone and after the called party picks up. At this DCS Group Category: Informational - Expiration 2/28/02 13 DCS Architecture August 2001 point, the resources are made available to the endpoint, and recording is started so that the user can be billed for usage. The use of a two-phase approach is essential because of the unique requirements associated with human communication, such as telephony. Recognition of the need for a two phase resource management approach is a significant motivation for the call flow adopted in the previous section. Although we believe that issues of billing ought not to be the primary consideration in the design of the protocol, the protocol design should not preclude the possibility of usage sensitive billing. Therefore, in addition to ensuring that resources are available before ringing the phone, the two-phase resource management protocol also allows us to preserve the semantics of billing that users are accustomed to, whereby usage recording is not started until the called party picks up the phone. Backbone resources are reserved and allocated in the first phase of the two- phase resource reservation protocol. This is important in order to limit the impact of backbone resource management on post-pickup delay (this minimizes the likelihood of clipping the first few syllables of the conversation). 6. Distributed Call State In order to provide enhanced services to millions of endpoints, we need an architecture that can be implemented cost-effectively at very large scale. Just as we enable flexibility by exploiting intelligence at the endpoints, services can be provided in a scaleable manner by storing the state associated with applications at the endpoints, rather than in network servers. Especially with telephony, endpoints are directly involved in handling calls and therefore need to maintain and use call state. In contrast, while network servers may need to be involved when setting up a call to gain access to enhanced QoS, there is no fundamental need for those servers to be involved throughout the lifetime of the call. Maintaining state for every call at network servers, while achievable, increases the reliability requirements and load on the servers. The less state kept in the network, the better. As a result, the DCS-proxies in DCS are designed to be Call stateless transaction servers. The proxy maintains SIP transaction state. So, when a DCS-proxy processes a service request from an endpoint, it maintains state until the transaction is complete, but does not maintain any per-call state about active calls in the network. There are two major advantages to this design. First the reliability of the service does not depend on the reliability of an individual DCS-proxy. A DCS-proxy can fail without affecting calls that are currently in progress. Second, it removes many complex synchronization problems where two (or more) entities need to have simultaneously accurate information. Since interactions with the DCS-proxies are simple stateless transactions, it is not necessary for consecutive calls to be processed by the same DCS-proxy. DCS- proxy crashes affect only the transient calls (the calls that are in DCS Group Category: Informational - Expiration 2/28/02 14 DCS Architecture August 2001 the process of being set up), and not stable conversations. Further, it is likely that most calls in a transient state can be recovered and successfully established through a backup or spare DCS-proxy using endpoint retransmission, with no explicit synchronization protocol required between the DCS-proxies. We believe this design principle will enable us to operate in very large scale, cost effectively. Furthermore it places the function of managing the state of a call where it belongs - at the endpoint. An existing call can only be affected by failures along the path or by failure of the endpoints: there are no unnecessary elements involved in a call. We note that there are many services that involve the use of servers or proxy endpoints that communicate directly with clients. Since these endpoints are directly involved in providing service, it is necessary and appropriate for them to maintain state. Examples of proxy endpoints include application layer firewalls, caching servers, transcoders, network-based conference bridges, interactive voice response systems, and PSTN gateways. The DCS architecture models these as end-points, that maintain appropriate call state. We now turn to the mechanisms that allow us to avoid state in the DCS-proxies. A number of examples of the need for distributed state arise in the implementation of telephony features. These give rise to two types of information that a DCS-proxy may present to an endpoint that may subsequently be given back to the proxy by the endpoint. The first type of information is Remote endpoint identification, contained in the "Remote-Party-ID" header. The second type of information is associated with an active session that an endpoint is participating in. This latter information, stored in the "State" header, is information that a service provider or proxy may need for methods that are invoked by an endpoint related to that session. Thus, a DCS-proxy stores the state information about the calls at an endpoint in two new headers, "State" and "Remote-Party- ID". The State header is both encrypted and signed by the proxy to ensure the privacy and the integrity of the information contained in the header. The information that may be contained in State includes resource information (such as Gate information) and billing information (such as a billing id). The Remote-Party-ID is only encrypted when privacy is requested by the endpoint (covered in detail in the Section 7 below.) When needed, the endpoint provides the State to the DCS-proxy that generated it, which can use the information to provide additional functionality. Because the State header is encrypted and signed by the DCS-proxy, the information it contains is trusted by the network even though the endpoint itself is not trusted. In addition, DCS-proxies store service-specific opaque data associated with a call at the edge router. Since charging for telephony services may be tied to the use of resources, this information is best stored at the edge router, where knowledge of resource usage exists. DCS Group Category: Informational - Expiration 2/28/02 15 DCS Architecture August 2001 The endpoint returns the state (possibly both State and Remote- Party-ID) information to the DCS-proxy when it is needed to implement specific features. The endpoint cannot interpret the information in the encrypted and signed State header (and Remote- Party-ID if it is also encrypted), and any attempt to tamper with it can be detected by the DCS-proxy. An example of use of the State information is one where a change in coding method in the middle of a call (e.g., upon detection of a fax tone) may require the proxies to authorize additional resources. Services such as call-transfer and three-way-calling require the proxy to be involved in authorizing resources for packet flows to the new destination(s). 7. DCS Proxy - DCS Proxy Communications DCS-proxies implement a set of service-specific control functions required to support the telephony service: . Authentication and authorization: Since services are only provided to authorized subscribers, DCS-proxies authenticate signaling messages and authorize requests for service on a call-by-call basis. . Name/number translation and call routing: DCS-proxies translate dialed E.164 numbers, or names, to a terminating IP address based on call routing logic to support a wide range of call features. . Service-specific admission control: DCS-proxies can implement a broad range of admission control policies for the telephony service. For example, DCS-proxies may provide precedence for particular calls (e.g., 911 calls). Admission control may also be used to implement overload control mechanisms, e.g. to restrict the number of calls to a particular location or to restrict the frequency of call setup to avoid signaling overload. . Signaling and service feature support: While many service features are implemented by endpoints, the DCS-proxy also plays a role in feature support. DCS signaling provides a set of service primitives to end-points that are mediated by the DCS-proxy. The DCS-proxy is involved in implementing service features that depend on the privacy of calling information, e.g., caller-ID blocking. It also plays a role in supporting service features that require users to receive a consistent view of feature operation even when an endpoint is down. For example, while an endpoint may normally participate in call forwarding, the DCS-proxy can control call forwarding on behalf of an endpoint when the endpoint is down. End-points MTA-o and MTA-t communicate through the DCS-Proxies DP-o and DP-t, as shown in Figure 2. The interface of concern in this section is the one between the DCS-Proxies DP-o and DP-t. In contrast to a true stateless SIP proxy, the DCS-Proxy maintains DCS Group Category: Informational - Expiration 2/28/02 16 DCS Architecture August 2001 transaction state. During the interval that a call is being setup, a DCS-Proxy keeps state related to a request until a response is received. For each call made to a phone number, DP-o may need to perform the functions needed for Local Number Portability (LNP). If a LNP database lookup is performed and the resulting dialed string is modified, DP-o must modify the Request-URI to include the result of the LNP lookup. The originating proxy DP-o generates and stores the State header. This information is intended to be sent to endpoint MTA-o and included with the first response that is returned to MTA- o. The originating DCS-Proxy, DP-o, may then use the call state information provided to it in the State header to manipulate call- legs when requested by MTA-o. As with conventional SIP proxies, DP-o adds its address to the top of the Via: header list with a branch=1 field when forwarding the request. In addition, to support billing functions for a carrier, DP-o appends opaque information called the Billing-Info and Billing- ID. In addition, to support the resource management functions (such as manipulating Gates for resource management in concert with call- leg manipulation), a Gate-Location: header is included. This allows for the subsequent generation of requests for access network QoS by the end-points. We also depend on originating DCS-Proxy, DP-o to be responsible for manipulating call legs. For instance, when a call is being forwarded, information about the new destination that the call is being forwarded to is provided by DP-t to DP-o. The new INVITE is then issued from DP-o. The information exchanged between the DCS- proxies enables such a function to be performed. 8. Privacy Many conventional telephony systems have the ability to provide information about the identity of the calling party to the called party before the latter accepts the call (such a capability is typically termed "Caller-ID"). Systems that support Caller-ID usually provide a mechanism that allows the calling party to instruct the network to refrain from delivering this information to the destination. In order for an IP-based network to provide a caller with a similar capability, a new SIP header is needed to signal the desire for anonymity to the network elements that would otherwise provide the caller's identity to the destination party. If a caller desires to remain anonymous, several additional changes to standard SIP are necessary. The triplet {From:, To:, Call-ID:} is used to identify a call leg in both endpoints and in proxies. Because call state information is DCS Group Category: Informational - Expiration 2/28/02 17 DCS Architecture August 2001 pushed to the edge of the network, this information must be delivered unchanged to the destination endpoint. The SIP From: header normally contains information that identifies the caller. In order to hide the identity of the caller, the From: header information is encrypted with the originating endpoint's key. The destination endpoint does not possess the key to decrypt the From: information. No new syntax for SIP is introduced here. Normally, the SIP Call-ID: header also contains information about the caller. In the DCS architecture, to support privacy the value of the Call-ID: header is a cryptographic hash string that contains no information about the user. Since all the normally available mechanisms for passing information about the caller are no longer available, a new SIP header, Remote- Party-ID, is used to pass the caller's identity to the destination. The Remote-Party-ID header is primarily used for endpoint identification. This header contains the information that would normally be present in the From: header; the network passes it to the destination endpoint only if the caller has not requested anonymity. If the caller had requested anonymity, then the Remote- Party-ID header contains an encrypted string that can be used by the proxy in handling further requests. If the user at an endpoint wants to return the last call (e.g., by dialing *69 on a traditional telephone) the "call return" function is invoked. If the user had subscribed to the caller ID service feature, the terminating endpoint could store the information (phone number or IP address) associated with the last call. However, it may be the case that the user does not subscribe to the feature, or the originator of the previous call may have requested that this information be blocked in order to retain privacy. In this case, call return can be implemented, while keeping the caller's identity private, by using the encrypted Remote-Party-ID header. In addition to the usual privacy elements provided by telephone systems, IP-based systems must implement methods of hiding the source IP address from the destination if the caller requires privacy. The entire address must be obscured, since even a few address bits may provide partial location information. Likewise, IP addresses of the destination should not be revealed to the caller, in order to maintain privacy of transfer destinations. IP addresses typically appear in the Contact: header; they also appear in SDP descriptions contained in SIP messages. These must all be protected. We chose to use an application-level anonymizer that inspects the SIP call signaling messages and replaces any identifying information contained therein in a consistent manner. The identifying information is modified such that when the messages are delivered to the destination endpoint any identifying information has been replaced with fields that obscure the identity of the party seeking privacy. DCS Group Category: Informational - Expiration 2/28/02 18 DCS Architecture August 2001 This mechanism does not require any modification to the call signaling initiated by the endpoints: the application-level anonymizer performs these functions silently within the network. 9. Security Considerations Detailed security considerations related to this architecture will be addressed in a future companion draft. 10. Call Flows This section contains sample message flows between MTAs, DCS- Proxies, and Call Management Systems (CMSs, which are trusted User Agents, as described in section 3.4). The first four subsections provide details for handling of basic calls, between all combinations of MTAs and CMSs. Following subsections provide details of the handling of call features, such as call-forwarding, call-transfer, three-way-calling, CODEC changes, operator services, electronic surveillance, and IP address privacy. DCS Group Category: Informational - Expiration 2/28/02 19 DCS Architecture August 2001 10.1 Basic Call Flow from MTA to MTA MTA-o ER-o Proxy-o Proxy-t ER-t MTA-t | (1)Invite | | | | |----------|--------->|(2)Invite | | | | | |--------->| | | | | | |(3)Invite | | | | | |----------|--------->| | | | | |(4)183 SDP| | | | |<---------|----------| | | | | | | | | Gate |(5)183 SDP|Gate Setup| | | | Setup |<---------|--------->| | | |<---------| | | | | (6)183 SDP | | | | |<---------|----------| | | | | | |(7)PRACK | | | |----------|----------|----------|----------|--------->| | |(8)200 OK (acknowledging PRACK) | | |<---------|----------|----------|----------|----------| | | | | | | |<---------|--------Reserve Resources-------|--------->| | | | | | | | | (9)COMET | | |----------|--------- |----------|----------|--------->| | (10)200 OK (acknowledging COMET) | |<---------|----------|----------|----------|----------| | | | | (11)180 Ring | | | | (12)180 |<---------|----------| | (13)180 Ring |<---------| | | |<---------|----------| | | | | | |(14)PRACK | | | |----------|----------|----------|----------|--------->| | | (15)200 OK (acknowledging PRACK) | |<---------|----------|----------|----------|----------| | | | | | | User | | | | (16)200 OK | Answers | | | (17)200 |<---------|----------| | (18)200 OK |<---------| | | |<---------|----------| | | | | (19)ACK | | | | |----------|----------|----------|----------|--------->| | | | | | | |<---------|----------Active Call----------|--------->| | | | | | | User | | | | (20)BYE | Hangs Up |<---------|----------|----------|----------|----------| | | | | (21)200 OK | |----------|----------|----------|----------|--------->| DCS Group Category: Informational - Expiration 2/28/02 20 DCS Architecture August 2001 The above figure shows the basic DCS call flow from one MTA to another. The basic DCS call flow starts with an INVITE from MTA-o to MTA-t through proxies Proxy-o and Proxy-t. It follows the conventions of SIP. The Via headers are used to track the path of the request (INVITE) so that the response can traverse backwards through the same path. This INVITE is sent requesting that MTA-t not ring until the QoS preconditions are met. The purpose of this first INVITE is to invoke call features, such as call forwarding, to determine the proper destination MTA, and to negotiate the bandwidth and codec to be used so that the proper resources can be reserved. The response (183-Session-Progress) acknowledges the receipt of the INVITE message, provides the SDP for the forward media flow, and provides contact information for end-to-end messages that happen later in the call flow. When the INVITE is received, MTA-t's state reflects that a call is now being set-up. After MTA-o receives the 183-Session- Progress, it sends a PRACK message directly to MTA-t (as specified in the contact header) to acknowledgement receipt of MTA-t's SDP. After resources are reserved for the call, a COMET is sent to MTA-t. MTA-t responds with a 200-OK, and also sends a ringback indication in the form of a 180-Ringing message. When the call is answered, a 200-OK to the INVITE is sent back to MTA-o, which ACKs the OK to MTA-t to complete the triple handshake. The bearer channel session can now be established. When the call is over, either end can send a BYE message directly to the other end. This BYE request must also be responded to with a 200-OK. The detailed steps followed and messages exchanged are: A call setup begins when MTA-o detects off-hook on one of its lines. MTA-o first puts that line in the "busy" state. MTA-o sends an audible dialtone signal to the customer and begins to detect DTMF digits. Upon receiving the first digit, MTA-o stops dialtone. Once a complete E.164 number has been received (based upon a digit map that has been provisioned in the MTA), MTA-o generates the following INVITE message and sends it to Proxy-o (the DCS-proxy that manages MTA-o). MTA-o starts the retransmission timer (T-proxy- request). (1) INVITE INVITE sip:555-2222@Host(DP-o);user=phone SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) Supported: 100rel, state Remote-Party-ID: John Doe Anonymity: Off From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE DCS Group Category: Informational - Expiration 2/28/02 21 DCS Architecture August 2001 Contact: sip:Host(mta-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuite:312F a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 The Request-URI starts with the dialed number from the user. The Remote-Party-ID gives the calling name and number, as provided by the MTA. Even though Anonymity indicates calling name and number privacy is not required for this call, the From, To, and Call-ID headers contain cryptographically random values to maintain privacy of the caller. Upon receiving the INVITE message, Proxy-o authenticates MTA-o using standard IPSec authentication. Proxy-o examines the Remote-Party-ID: line and checks to see that this originating phone number belongs to MTA-o, and is authorized for originating service. Proxy-o also checks to make sure the calling name in the Remote-Party-ID: line is a valid calling name for this line. Proxy-o then sends the dialed number to a directory server for resolution to an IP address. In this example, the directory server returns the address of Proxy-t, the Proxy that manages the terminating MTA. Proxy-o generates the following INVITE message and sends it to Proxy-t. Proxy-oadds a number of parameters to the INVITE message, which are described below. Upon sending this INVITE message, Proxy-o starts the retransmisison timer (T-proxy-request) and starts the T3 session timer (T-proxy-setup). The retransmission timer is cancelled on receipt of the optional 100-Trying provisional response (not present in this call flow); both are cancelled on receipt of the 183- Session-Progress provisional response. (2) INVITE INVITE sip:+1-212-555-2222;rn=+1-212-234-2222; npdi=yes@Host(dp-t);user=phone SIP/2.0 Via: SIP/2.0/UDP Host(DP-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) Supported: 100rel, state Require: state Proxy-Require: dcs, state Remote-Party-ID: John Doe; Anonymity: Off DCS Group Category: Informational - Expiration 2/28/02 22 DCS Architecture August 2001 Dcs-Gate: Host(cmts-o.provider):3612/17S30124/37FA1948 required Dcs-Billing-Info: Host(rks-o.provider)<5123-0123-4567-8900/ 212-555-1111/212-555-2222> State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124; orig-dest=tel:+1-212-555-2222; num-redirects=0 Dcs-Billing-ID: Host(dp-o.provider):36123E5C:0152 From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(mta-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 The "lrn" in the Request-URI shows that LNP dip has been done, and gives the result. The dialed number is fully expanded into E.164 number. The Remote-Party-ID header contains verified Calling-Name and full E.164 Calling-Number. Dcs-Gate contains the IP address of the CMTS, the identity of the originating gate, and key for gate coordination messages. Also contained is the indication that gate coordination is required for this call. Dcs-Billing-Info contains the IP address of the record-keeping-server for event collection, the account number, originating number, and terminating number for billing of this call. State contains the state information wanted by Proxy-o for handling of messages from MTA-t to MTA-o. Dcs- Billing-ID contains the unique Billing identifier, made up of the CMS IP address, timestamp, and sequence number. A suggested encryption key is inserted into the SDP. Upon receiving this INVITE message, Proxy-t authenticates that the sender was Proxy-o using IPSec, and sends the E.164-t address to the directory server. In this example, the Directory Server is able to translate E.164-t to the IP address of MTA-t (one of the MTAs managed by Proxy-t). Proxy-t then checks to see if MTA-t is authorized for receiving this call. Proxy-talso checks the account information to determine if MTA-o is paying for the call or if MTA-t is expected to pay. Proxy-t generates the following INVITE message DCS Group Category: Informational - Expiration 2/28/02 23 DCS Architecture August 2001 and sends it to MTA-t. The Remote-Party-ID line appears unchanged only if the destination MTA has subscribed to caller-id service; otherwise, or if the caller had specified privacy of the caller information, the Remote-Party-ID line would be altered. Note that the Via lines have been encrypted, maintaining the privacy of the caller. The line State has been added, and contains all the information needed by the Proxy for any subsequent call features that may be requested. This information is signed by Proxy-t and encrypted. Upon sending this INVITE message, Proxy-t starts the retransmisison timer (T-proxy-request) and starts the T3 session timer (T-proxy- setup). The retransmission timer is cancelled on receipt of the optional 100-Trying provisional response (not present in this call flow); both are cancelled on receipt of the 183-Session-Progress provisional response. (3) INVITE INVITE sip:555-2222@Host(mta-t.provider); user=phone SIP/2.0 Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"; via=Host(mta-o.provider)}K Supported: 100rel, state Require: state Remote-Party-ID: John Doe; Media-Authorization: 31S14621 State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider); gate=Host(cmts-t.provider):4321/31S14621; state="Host(dp-o.provider); nexthop=sip:555- 1111@Host(mta-o.provider); gate=Host(cmts- o.provider):3612/17S30124; orig-dest=tel:+1-212-555- 2222; num-redirects=0"}K" From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(mta-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 DCS Group Category: Informational - Expiration 2/28/02 24 DCS Architecture August 2001 Local number portability information has been removed from the Request-URI, and the username is a string that is known to MTA-t. Via headers are encrypted to provide calling party privacy. Media- Authorization header contains the Gate-ID at the CMTS controlling the resources for MTA-t. State contains a string encrypted with a Proxy-t privately-held key, and contains nexthop routing information, CMTS address, Gate-ID, and all previous state headers from other proxies. Upon receiving this INVITE, MTA-t authenticates that the message came from Proxy-t using IPSec. MTA-t checks the telephone line associated with the E.164-t (as found in the Request URI) to see if it is available. If it is available, MTA-t looks at the capability parameters in the Session Description Protocol (SDP) part of the message and determines which media channel parameters it can accommodate for this call. MTA-t stores the INVITE message, including the encrypted State parameters, for later use. MTA-t puts this line in the "busy" state (so any other call attempts are rejected until this call clears), generates the following 183- Session-Progress response, and sends it to Proxy-t. MTA-t starts the retransmission timer with value (T-proxy-response) and starts the session timer (T3) with value (T-resource). MTA-t can, at its option, still accept further incoming calls and present them all to the customer. Such enhanced user interfaces for the MTA is beyond the scope of this specification. Note that MTA-t can't use the To: header field to determine the proper line, as it may be totally unrelated to the phone number at MTA-t. (4)183-Session-Progress SIP/2.0 183 Session Progress Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"; via=Host(mta-o.provider)}K Require: 100rel State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider); gate=Host(cmts-t.provider):4321/31S14621; state="Host(dp-o.provider); nexthop=sip:555- 1111@Host(mta-o.provider); gate=Host(cmts- o.provider):3612/17S30124; orig-dest=tel:+1-212-555- 2222; num-redirects=0"}K" Remote-Party-ID: John Smith Anonymity: off From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(mta-t.provider) Content-Type: application/sdp Content-length: (.) DCS Group Category: Informational - Expiration 2/28/02 25 DCS Architecture August 2001 v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-t.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm Remote-Party-ID contains the called name and number, as provided by MTA. Anonymity indicates called name and number privacy is not requested for this call. SDP contains MTA-t's bearer channel IP address, and negotiated voice encoding parameters. Upon receiving the 183-Session-Progress message, Proxy-t forwards the following message to Proxy-o, restoring the Via headers, and adding Dcs-Gate information. At this point Proxy-t has completed all the call processing functions needed for this call, deletes its local state information, and handles all remaining messages as a stateless proxy. Proxy-t may include Dcs-Billing-Information if it wishes to override the billing information that came in the INVITE (e.g. collect or toll-free call). (5) 183-Session-Progress: SIP/2.0 183 Session Progress Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) Require: 100rel, state Proxy-Require: dcs, state State: Host(dp-t.provider); nexthop=sip:555-2222@Host(mta- t.provider); gate=Host(cmts-t.provider):4321/31S14621; orig-dest=tel:+1-212-555-1111; num-redirects=0 State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124; orig-dest=tel:+1-212-555-2222; num-redirects=0 Dcs-Gate: Host(cmts-t.provider):4321/31S14621/37FA1948 Remote-Party-ID: John Smith Anonymity: off From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(mta-t.provider) Content-Type: application/sdp Content-length: (.) DCS Group Category: Informational - Expiration 2/28/02 26 DCS Architecture August 2001 v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-t.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm Upon receiving the 183-Session-Progress message, Proxy-o forwards the following message to MTA-o. This message contains a State parameter giving all the information needed by the Proxy for later features. The State value is signed by Proxy-o and encrypted by Proxy-o's privately-held key. At this point Proxy-o has completed all the call processing functions needed for this call, deletes its local state information, and handles all remaining messages as a stateless proxy. (6) 183-Session-Progress: SIP/2.0 183 Session Progress Via: Sip/2.0/UDP Host(mta-o.provider) Require: 100rel, state Media-Authorization: 17S30124 State: Host(dp-o.provider); state="{gate= Host(cmts- o.provider): 3612/17S30124, nexthop=sip:+1-212-555- 2222;rn=+1-212-2342222;npdi=yes@Host(DP-t), state="Host(dp- t.provider); nexthop=sip:555-2222@Host(mta-t.provider); gate=Host(cmts-t.provider):4321/31S14621; orig- dest=tel:+1-212-555-1111; num-redirects=0"}K" Remote-Party-ID: John Smith From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(mta-t.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents DCS Group Category: Informational - Expiration 2/28/02 27 DCS Architecture August 2001 a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm Upon receiving the 183-Session-Progress message, MTA-o stops timer (T-proxy-request) and sends the following PRACK message directly to MTA-t using the IP address in the Contact header of the 183-Session- Progress message. (7) PRACK: PRACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK Rack: 9021 127 INVITE Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv MTA-t acknowledges the PRACK with a 200-OK, and begins to reserve the resources necessary for the call. (8) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK After sending PRACK(7), MTA-o attempts to reserve network resources if necessary. If resource reservation is successful, MTA-o sends the following COMET message directly to MTA-t. MTA-o starts timer (T-direct-request). DCS Group Category: Informational - Expiration 2/28/02 28 DCS Architecture August 2001 (9) COMET: COMET sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 a=qos:success send MTA-t acknowledges the COMET message with a 200-OK. (10) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Upon receipt of the 200-OK(10), MTA-o stops timer (T-direct- request). Upon receipt of the (7) PRACK message, MTA-t stops timer (T-proxy- response) and attempts to reserve network resources if necessary. Once MTA-t both receives the COMET message and has successfully reserved network resources, MTA-t begins to send ringing voltage to the designated line and sends the following 180 RINGING message through Proxy-t. MTA-t restarts the session timer (T3) with value (T-ringing). (11) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"; via=Host(mta-o.provider)} K Require: 100rel DCS Group Category: Informational - Expiration 2/28/02 29 DCS Architecture August 2001 State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider); gate=Host(cmts-t.provider):4321/31S14621; state="Host(dp-o.provider); nexthop=sip:555- 1111@Host(mta-o.provider); gate=Host(cmts- o.provider):3612/17S30124; orig-dest=tel:+1-212-555- 2222; num-redirects=0"}K" From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(mta-t.provider) Cseq: 127 INVITE Rseq: 9022 Proxy-t decodes the Via: headers, and passes the 180-Ringing to Proxy-o. This operation is done as a SIP stateless proxy. (12) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) Require: 100rel State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124 From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9022 Proxy-o handles the message as a SIP stateless proxy, and passes the 180-Ringing to MTA-o. (13) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(mta-o.provider) Require: 100rel From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9022 Upon receipt of the 180 RINGING message, MTA-o restarts the transaction timer (T3) with value (T-ringing). MTA-o acknowledges the provisional response with a PRACK, and plays audible ringback tone to the customer. DCS Group Category: Informational - Expiration 2/28/02 30 DCS Architecture August 2001 (14) PRACK: PRACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(mta-t.provider) Cseq: 130 PRACK Rseq: 9022 127 INVITE MTA-t acknowledges the PRACK with a 200-OK, and stops timer (T- proxy-response). (15) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK Once MTA-t detects off-hook on the called line, it disconnects ringing voltage from the line and sends the final response through the proxies. MTA-t stops timer (T-ringing) and starts timer (T- proxy-response). If necessary, MTA-t may also commit to resources that have been reserved for this call. At this point, MTA-t begins to generate bearer channel packets of encoded voice and send them to MTA-o using the IP address and port number specified in the SDP part of the original INVITE message. (16) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"; via=Host(mta-o.provider)} K State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider); gate=Host(cmts-t.provider):4321/31S14621; state="Host(dp-o.provider); nexthop=sip:555- 1111@Host(mta-o.provider); gate=Host(cmts- o.provider):3612/17S30124; orig-dest=tel:+1-212-555- 2222; num-redirects=0"}K" From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Proxy-t handles the message as a SIP stateless proxy, and forwards it to Proxy-o. DCS Group Category: Informational - Expiration 2/28/02 31 DCS Architecture August 2001 (17) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124 From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Proxy-o handles the message as a SIP stateless proxy, and forwards it to MTA-o. (18) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Upon receipt of the 200-OK message, MTA-o stops timer (T-ringing) and stops playing audible ringback tone to the customer and begins to play the bearer channel stream that is received from MTA-t. MTA- o sends the following ACK message to MTA-t. If necessary, MTA-o may also commit to resources that have been reserved for this call. At this point, MTA-o begins to generate bearer channel packets of encoded voice and send them to MTA-t using the IP address and port number specified in the SDP part of the original 183-Session- Progress message (that was a response to the original INVITE). (19) ACK: ACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 ACK Upon receipt of the ACK message, MTA-t stop timer (T-proxy- response). When either MTA detects hangup, it sends out a BYE message to the other MTA. In this example, MTA-o detected that the customer hung up the phone. MTA-o puts that line in the "idle" state so new calls can be made or received. It sends the following BYE message directly to MTA-t. MTA-o may also need to release network resources DCS Group Category: Informational - Expiration 2/28/02 32 DCS Architecture August 2001 that have been used for the call. MTA-o starts timer (T-direct- request). (20) BYE: BYE sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 131 BYE Upon receipt of the BYE message, MTA-t stops playing the bearer channel stream received from MTA-o and, if necessary, releases network resources that have been used for this call. MTA-tsends the following 200-OK message to MTA-o. MTA-t starts a 15-second timer (T-hangup) (Note: this is a local interface issue, and not part of this specification). If MTA-t does not detect hangup on the line before timer (T-hangup) expires, it plays "reorder" tone on the customer line. Once hangup is detected, MTA-t puts that line in the "idle" state so new calls can be made or received. (21) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 131 BYE Upon receipt of 200-OK, MTA-o stops timer (T-direct-request). DCS Group Category: Informational - Expiration 2/28/02 33 DCS Architecture August 2001 10.2 Basic Call Flow from MTA to CMS MTA-o Proxy-o CMS-t Endpoint-t | (1)Invite | | | |-------------------->|(2)Invite | | | |--------->| | | | | Private Signaling | | | |<------------------->| | |(3)183 SDP| | | |<---------| | | | | | | (4)183 SDP | | | |<--------------------| | | | (5)PRACK | | |---------------------|--------->| | | | | Private Signaling | | | |<------------------->| | (6)200 OK (acknowledging PRACK)| | |<--------------------|----------| | | | | | |<------------------Reserve Resources----------------->| | | | | | (7)COMET | | |-------------------- |--------->| | |(8)200 OK (acknowledging COMET) | |<--------------------|----------| | | | | Private Signaling | | | |<------------------->| | | (9)180 | | | (10)180 Ringing |<---------| | |<--------------------| | | | (11)PRACK | | |---------------------|--------->| | |(12)200 OK (acknowledging PRACK) | |<--------------------|----------| | | | | | User | | | Private Signaling | Answers | | |<------------------->| | | (13)200 | | | (14)200 OK |<---------| | |<--------------------| | | | (15)ACK | | | |---------------------|--------->| | | | | | |<--------------------Active Call-------------------->| | | | | User | | | Private Signaling | Hangs Up | (16)BYE |<------------------->| |<--------------------|----------| | | (17)200 OK | | |---------------------|--------->| | DCS Group Category: Informational - Expiration 2/28/02 34 DCS Architecture August 2001 This section describes the DCS call signaling flow for a basic call that terminate on the PSTN, or some other endpoint controlled by a CMS. A call setup begins when MTA-o detects off-hook on one of its lines. MTA-o first puts that line in the "busy" state. MTA-o sends an audible dialtone signal to the customer and begins to detect DTMF digits. Upon receiving the first digit, MTA-o stops dialtone. Once a complete E.164 number has been received (based upon a digit map that has been provisioned in the MTA), MTA-o generates the following SIP INVITE message and sends it to Proxy-o (the Proxy that manages MTA-o). MTA-o starts the retransmission timer (T-proxy-request). (1) INVITE: INVITE sip:555-2222@Host(DP-o);user=phone SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) Supported: 100rel, state Remote-Party-ID: John Doe Anonymity: Off From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(mta-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuite:312F a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 Upon receiving the INVITE message, Proxy-o authenticates MTA-o using standard IPSec authentication. Proxy-o examines the Remote-Party-ID: line and checks to see that this originating phone number belongs to MTA-o, and is authorized for originating service. Proxy-o also checks to make sure the calling name in the Remote-Party-ID: line is a valid calling name for this line. Proxy-o then sends the dialed number to a directory server for resolution to an IP address. In this example, the directory server returns the address of CMS-t, the CMS that manages the endpoint device. Proxy-o generates the DCS Group Category: Informational - Expiration 2/28/02 35 DCS Architecture August 2001 following INVITE message and sends it to CMS-t. Proxy-oadds a number of parameters to the INVITE message, which are described below. Upon sending this INVITE message, Proxy-o starts the retransmisison timer (T-proxy-request) and starts the T3 session timer (T-proxy-setup). The retransmission timer is cancelled on receipt of the optional 100-Trying provisional response (not present in this call flow); both are cancelled on receipt of the 183-Session-Progress provisional response. (2) INVITE: INVITE sip:+1-212-555-2222;rn=+1-212-234-2222; npdi=yes@Host(cms-t);user=phone SIP/2.0 Via: SIP/2.0/UDP Host(DP-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) Supported: 100rel, state Require: state Proxy-Require: dcs, state Remote-Party-ID: John Doe; Anonymity: Off Dcs-Gate: Host(cmts-o.provider):3612/17S30124/37FA1948 required Dcs-Billing-Info: Host(rks-o.provider)<5123-0123-4567-8900/212- 555-1111/212-555-2222> State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124; orig-dest=tel:+1-212-555-2222; num-redirects=0 Dcs-Billing-ID: Host(dp-o.provider):36123E5C:0152 From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(mta-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 Upon receiving this INVITE message, CMS-t authenticates that the sender was Proxy-o using IPSec, and determines the proper endpoint device to receive this call. CMS-t engages in local signaling with that endpoint device, outside the scope of this specification, and DCS Group Category: Informational - Expiration 2/28/02 36 DCS Architecture August 2001 determines the proper SDP for the media flow to this endpoint device. When complete, CMS-t forwards the following message message to Proxy-o. The CMS-t lists itself as the location of the Dcs-Gate, since it simulates the gate operation. CMS-t may include Dcs- Billing-Information if it wishes to override the billing information that came in the INVITE (e.g. collect or toll-free call). (3) 183-Session-Progress: SIP/2.0 183 Session Progress Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) Require: 100rel, state Proxy-Require: dcs, state State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124; orig-dest=tel:+1-212-555-2222; num-redirects=0 Dcs-Gate: Host(cms-t.provider):4321/137S90721/805628 Remote-Party-ID: John Smith Anonymity: off From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(cms-t.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm Upon receiving the 183-Session-Progress message, Proxy-o forwards the following message to MTA-o. This message contains a State parameter giving all the information needed by the Proxy for later features. The State value is signed by Proxy-o and encrypted by Proxy-o's privately-held key. At this point Proxy-o has completed all the call processing functions needed for this call, deletes its local state information, and handles all remaining messages as a stateless proxy. (4) 183-Session-Progress: SIP/2.0 183 Session Progress Via: Sip/2.0/UDP Host(mta-o.provider) DCS Group Category: Informational - Expiration 2/28/02 37 DCS Architecture August 2001 Require: 100rel, state Media-Authorization: 17S30124 State: Host(dp-o.provider); state="{gate= Host(cmts- o.provider): 3612/17S30124, nexthop=sip:+1-212-555- 2222;rn=+1-212-234-2222;npdi=yes@Host(cms-t)}K" Remote-Party-ID: John Smith From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(cms-t.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a-X=pc-qos:mandatory sendrecv confirm Upon receiving the 183-Session-Progress message, MTA-o stops timer (T-proxy-request) and sends the following PRACK message directly to CMS-t using the IP address in the Contact header of the 183-Session- Progress message. (5) PRACK: PRACK sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK Rack: 9021 127 INVITE Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F DCS Group Category: Informational - Expiration 2/28/02 38 DCS Architecture August 2001 a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 a-Qos:mandatory sendrecv CMS-t acknowledges the PRACK with a 200-OK, and performs local signaling with the endpoint (outside the scope of this specification) in order to begin reserving the resources necessary for the call. (6) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK After sending PRACK(5), MTA-o attempts to reserve network resources if necessary. If resource reservation is successful, MTA-o sends the following COMET message directly to CMS-t. MTA-o starts timer (T-direct-request). (7) COMET: COMET sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-o.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 a=qos:success send CMS-t acknowledges the COMET message with a 200-OK. (8) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" DCS Group Category: Informational - Expiration 2/28/02 39 DCS Architecture August 2001 To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Upon receipt of the 200-OK(8), MTA-o stops timer (T-direct-request). Upon receipt of the (5) PRACK message, CMS-t stops timer (T-proxy- response) and signals the endpoint device to attempt to reserve the network resources necessary. Once CMS-t both receives the COMET message and acknowledgement from the endpoint device, CMS-t sends the following 180-Ringing (or 183-Sesison-Progress, with a Session:Media header) message. CMS-t restarts the session timer(T3) with value (T-ringing). (9) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) Require: 100rel State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124 From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(cms-t.provider) Cseq: 127 INVITE Rseq: 9022 Proxy-o handles the message as a SIP stateless proxy, and passes the 180-Ringing (or 183-Session-Progress) to MTA-o. (10) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(mta-o.provider) Require: 100rel From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(cms-t.provider) Cseq: 127 INVITE RSeq: 9022 Upon receipt of the 180 RINGING message, MTA-o restarts the transaction timer (T3) with value (T-ringing). MTA-o acknowledges the provisional response with a PRACK, and plays audible ringback tone to the customer. (11) PRACK: PRACK sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" DCS Group Category: Informational - Expiration 2/28/02 40 DCS Architecture August 2001 To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK RAck: 9022 127 INVITE CMS-t acknowledges the PRACK with a 200-OK, and stops timer (T- proxy-response). (12) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK Once CMS-t, via private signaling with the endpoint device, detects off-hook on the called line, it sends the final response to the INVITE. CMS-t stops timer (T-ringing) and starts timer (T-proxy- response). If necessary, MTA-t may also commit to resources that have been reserved for this call. At this point, the endpoint device begins to generate bearer channel packets of encoded voice and send them to MTA-o using the IP address and port number specified in the SDP part of the original INVITE message. (13) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) State: Host(dp-o.provider); nexthop=sip:555-1111@Host(mta- o.provider); gate=Host(cmts-o.provider):3612/17S30124 From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Proxy-o handles the message as a SIP stateless proxy, and forwards it to MTA-o. (14) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Upon receipt of the 200-OK message, MTA-o stops timer (T-ringing) and stops playing audible ringback tone to the customer and begins to play the bearer channel stream that is received. MTA-o sends the DCS Group Category: Informational - Expiration 2/28/02 41 DCS Architecture August 2001 following ACK message to CMS-t. If necessary, MTA-o may also commit to resources that have been reserved for this call. At this point, MTA-o begins to generate bearer channel packets of encoded voice and send them to the remote endpoint using the IP address and port number specified in the SDP part of the original 183-Session- Progress message (that was a response to the original INVITE). (15) ACK: ACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-o.provider) From: "Alien Blaster" To: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 ACK Upon receipt of the ACK message, CMS-t stop timer (T-proxy- response). When MTA-o detects a hangup, or the endpoint device controlled by CMS-t detects a hangup, it sends out a BYE message to the other endpoint. In this example, CMS-t detected that the customer hung up the phone. CMS-t puts that line in the "idle" state so new calls can be made or received. It sends the following BYE message directly to MTA-o. CMS-t may also need to release network resources that have been used for the call. CMS-t starts timer (T-direct-request). (16) BYE: BYE sip:Host(mta-o.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-t.provider) From: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost To: "Alien Blaster" Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 131 BYE Upon receipt of the BYE message, MTA-o stops playing the bearer channel stream received from the endpoint device, and, if necessary, releases network resources that have been used for this call. MTA-o sends the following 200-OK message to CMS-t. MTA-o starts a 15- second timer (T-hangup) (Note: this is a local interface issue, and not part of this specification). If MTA-o does not detect hangup on the line before timer (T-hangup) expires, it plays "reorder" tone on the customer line. Once hangup is detected, MTA-o puts that line in the "idle" state so new calls can be made or received. (17) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-t.provider) From: sip:B64(SHA-1(555-2222; time=36123E5B; seq=73))@localhost To: "Alien Blaster" Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost DCS Group Category: Informational - Expiration 2/28/02 42 DCS Architecture August 2001 Cseq: 131 BYE Upon receipt of 200-OK, CMS-t stops timer (T-direct-request). 10.3 Basic Call Flow from CMS to MTA Endpoint-o CMS-o Proxy-t MTA-t | Private Signaling | | | |<------------------->|(1)INVITE | | | |--------->| (2)INVITE | | | |-------------------->| | | | (3) 183 SDP | | | |<--------------------| | |(4)183 SDP| | | |<---------| | | Private Signaling | | | |<------------------->| | (5)PRACK | | |------------------------------->| | | (6)200 OK (acknowledging PRACK)| | |<-------------------------------| | | | | |<------------------Reserve Resources----------------->| | | | | | Private Signaling | | | |<------------------->| (7)COMET | | |------------------------------->| | |(8)200 OK (acknowledging COMET) | | |<--------------------|----------| | | | (9) 180 Ringing | | | |<------------------->| | | (10)180 | | | Private Signaling |<---------| | |<------------------->| (11)PRACK | | |------------------------------->| | |(12)200 OK (acknowledging PRACK)| | |<-------------------------------| | | | | User | | | (13)200 OK | Answers | | |<--------------------| | | (14)200 | | | Private Signaling |<---------| | |<------------------->| (15)ACK | | |------------------------------->| | | | | |<--------------------Active Call-------------------->| | | | | User | | (16)BYE | Hangs Up | |<-------------------------------| | | (17)200 OK | | |------------------------------->| DCS Group Category: Informational - Expiration 2/28/02 43 DCS Architecture August 2001 This example shows a call originating on the PSTN and directed to a destination on the PacketCable network. We assume the same sequence of user behavior as in the basic call flow of section 10.1, only difference being the location of the originator. A call setup begins when the endpoint device controlled by CMS-o detects an off-hook condition on one of its lines. This event is communicated to CMS-o through a private signaling exchange beyond the scope of this specification. CMS-o first puts that line in the "busy" state, and collects a complete E.164 number. As a result of a translation function performed by CMS-o, the destination is determined to be a DCS device served by Proxy-t. CMS-o generates the following SIP INVITE message and sends it to Proxy-t. CMS-o starts the retransmission timer (T-proxy-request) and starts the T3 session timer (T -setup). The retransmission timer is cancelled on receipt of the optional 100-Trying provisional response (not present in this call flow); both are cancelled on receipt of the 183- Session-Progress provisional response. (1) INVITE: INVITE sip:+1-212-555-2222;rn=+1-212-234-2222; npdi=yes@Host(DP-t);user=phone SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider);branch=1 Supported: 100rel, state Require: state Proxy-Require: dcs, state Remote-Party-ID: John Doe; Anonymity: Off Dcs-Gate: Host(cms-o.provider):3612/17S30124/37FA1948 optional Dcs-Billing-Info: Host(rks-o.provider)<5123-0123-4567-8900/212- 555-1111/212-555-2222> Dcs-Billing-ID: Host(cms-o.provider):36123E5C:0152 From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(cms-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 DCS Group Category: Informational - Expiration 2/28/02 44 DCS Architecture August 2001 Upon receiving this INVITE message, Proxy-t authenticates that the sender was CMS-o using IPSec, and sends the E.164-t address to the directory server. In this example, the Directory Server is able to translate E.164-t to the IP address of MTA-t (one of the MTAs managed by Proxy-t). Proxy-t then checks to see if MTA-t is authorized for receiving this call. Proxy-talso checks the account information to determine if MTA-o is paying for the call or if MTA-t is expected to pay. Proxy-t generates the following INVITE message and sends it to MTA-t. The Remote-Party-ID line appears unchanged only if the destination MTA has subscribed to caller-id service; otherwise, or if the caller had specified privacy of the caller information, the Remote-Party-ID line would be altered. Note that the Via lines have been encrypted, maintaining the privacy of the caller. The line State has been added, and contains all the information needed by the Proxy for any subsequent call features that may be requested. This information is signed by Proxy-t and encrypted. Upon sending this INVITE message, Proxy-t starts the retransmisison timer (T-proxy-request) and starts the T3 session timer (T-proxy- setup). The retransmission timer is cancelled on receipt of the optional 100-Trying provisional response (not present in this call flow); both are cancelled on receipt of the 183-Session-Progress provisional response. (2) INVITE: INVITE sip:555-2222@Host(mta-t.provider); user=phone SIP/2.0 Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"}K Supported: 100rel, state Require: state Remote-Party-ID: John Doe; Media-Authorization: 31S14621 State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider);gate=Host(cmts-t.provider):4321/31S14621}K" From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(cms-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 DCS Group Category: Informational - Expiration 2/28/02 45 DCS Architecture August 2001 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 Upon receiving this INVITE, MTA-t authenticates that the message came from Proxy-t using IPSec. MTA-t checks the telephone line associated with the E.164-t (as found in the Request URI) to see if it is available. If it is available, MTA-t looks at the capability parameters in the Session Description Protocol (SDP) part of the message and determines which media channel parameters it can accommodate for this call. MTA-t stores the INVITE message, including the encrypted State parameters, for later use. MTA-t puts this line in the "busy" state (so any other call attempts are rejected until this call clears), generates the following 183- Session-Progress response, and sends it to Proxy-t. MTA-t starts the retransmission timer with value (T-proxy-response) and starts the session timer (T3) with value (T-resource). MTA-t can, at its option, still accept further incoming calls and present them all to the customer. Such enhanced user interfaces for the MTA is beyond the scope of this specification. Note that MTA-t can't use the To: header field to determine the proper line, as it may be totally unrelated to the phone number at MTA-t. (3) 183-Session-Progress: SIP/2.0 183 Session Progress Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"}K Require: 100rel State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider);gate=Host(cmts-t.provider):4321/31S14621}K" Remote-Party-ID: John Smith Anonymity: off From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(mta-t.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-t.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm DCS Group Category: Informational - Expiration 2/28/02 46 DCS Architecture August 2001 Upon receiving the 183-Session-Progress message, Proxy-t forwards the following message to CMS-o, restoring the Via headers, and adding Dcs-Gate information. At this point Proxy-t has completed all the call processing functions needed for this call, deletes its local state information, and handles all remaining messages as a stateless proxy. Proxy-t may include Dcs-Billing-Information if it wishes to override the billing information that came in the INVITE (e.g. collect or toll-free call). (4) 183-Session-Progress: SIP/2.0 183 Session Progress Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Require: 100rel, state State: Host(dp-t.provider); nexthop=sip:Host(dp-o.provider); gate=Host(cmts-t.provider):4321/31S14621; orig- dest=tel:+1-212-555-1111; num-redirects=0 Dcs-Gate: Host(cmts-t.provider):4321/31S14621/37FA1948 Remote-Party-ID: John Smith Anonymity: off From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(mta-t.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mta-t.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm Upon receiving the 183-Session-Progress message, CMS-o stops timer (T-proxy-request) and sends the following PRACK message directly to MTA-t using the IP address in the Contact header of the 183-Session- Progress message. (5) PRACK: PRACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK DCS Group Category: Informational - Expiration 2/28/02 47 DCS Architecture August 2001 Rack: 9021 127 INVITE Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 a-qos:mandatory sendrecv MTA-t acknowledges the PRACK with a 200-OK, and begins to reserve the resources necessary for the call. (6) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK After sending PRACK(5), CMS-o signals to the endpoint device to attempt to reserve the network resources necessary for the connection. If the endpoint signals that resource reservation is successful, CMS-o sends the following COMET message directly to MTA- t. CMS-o starts timer (T-direct-request). (7) COMET: COMET sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 DCS Group Category: Informational - Expiration 2/28/02 48 DCS Architecture August 2001 a=qos:success send MTA-t acknowledges the COMET message with a 200-OK. (8) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Upon receipt of the 200-OK(10), CMS-o stops timer (T-direct- request). Upon receipt of the (5) PRACK message, MTA-t stops timer (T-proxy- response) and attempts to reserve network resources if necessary. Once MTA-t both receives the COMET message and has successfully reserved network resources, MTA-t begins to send ringing voltage to the designated line and sends the following 180 RINGING message through Proxy-t. MTA-t restarts the session timer(T3) with value (T-ringing). (9) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"}K Require: 100rel State: Host(dp-t.provider); state="{nexthop=sip:Host(dp- o.provider);gate=Host(cmts-t.provider):4321/31S14621}K" From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(mta-t.provider) Cseq: 127 INVITE Rseq: 9022 Proxy-t decodes the Via: headers, and passes the 180-Ringing to CMS- o. This operation is done as a SIP stateless proxy. (10) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(cms-o.provider);branch=1 Require: 100rel From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(mta-t.provider) Cseq: 127 INVITE RSeq: 9022 Upon receipt of the 180 RINGING message, CMS-o restarts the transaction timer (T3) with value (T-ringing). CMS-o acknowledges DCS Group Category: Informational - Expiration 2/28/02 49 DCS Architecture August 2001 the provisional response with a PRACK, and signals the endpoint device to play audible ringback tone to the customer. (11) PRACK: PRACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK RAck: 9022 127 INVITE MTA-t acknowledges the PRACK with a 200-OK, and stops timer (T- proxy-response). (12) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK Once MTA-t detects off-hook on the called line, it disconnects ringing voltage from the line and sends the final response through the proxies. MTA-t stops timer (T-ringing) and starts timer (T- proxy-response). If necessary, MTA-t may also commit to resources that have been reserved for this call. At this point, MTA-t begins to generate bearer channel packets of encoded voice and send them to MTA-o using the IP address and port number specified in the SDP part of the original INVITE message. (13) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(dp-t.provider), {via="Host(dp- o.provider); branch=1"}K State: Host(dp-t.provider); state="{nexthop=sip:Host(cms- o.provider); gate=Host(cmts-t.provider):4321/31S14621; via="Host(cms-o.provider);branch=1"}K" From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Proxy-t handles the message as a SIP stateless proxy, and forwards it to CMS-o. (14) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(dp-o.provider);branch=1 Via: SIP/2.0/UDP Host(mta-o.provider) From: John Doe; To: tel:+1-212-555-2222 DCS Group Category: Informational - Expiration 2/28/02 50 DCS Architecture August 2001 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Upon receipt of the 200-OK message, CMS-o stops timer (T-ringing) and signals the endpoint device to stop playing audible ringback tone to the customer and to begin to play the bearer channel stream that is received from MTA-t. CMS-o sends the following ACK message to MTA-t. If necessary, CMS-o may also commit to resources that have been reserved for this call. At this point, the endpoint device begins to generate bearer channel packets of encoded voice and send them to MTA-t using the IP address and port number specified in the SDP part of the original 183-Session-Progress message (that was a response to the original INVITE). (15) ACK: ACK sip:Host(mta-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 ACK Upon receipt of the ACK message, MTA-t stop timer (T-proxy- response). When either endpoint detects hangup, it sends out a BYE message to the other one. In this example, MTA-t detected that the customer hung up the phone. MTA-t puts that line in the "idle" state so new calls can be made or received. It sends the following BYE message directly to CMS-o. MTA-t may also need to release network resources that have been used for the call. MTA-t starts timer (T-direct- request). (16) BYE: BYE sip:Host(cms-o.provider) SIP/2.0 Via: SIP/2.0/UDP Host(mta-t.provider) From: tel:+1-212-555-2222 To: John Doe; Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 131 BYE Upon receipt of the BYE message, CMS-o signals the endpoint device to stop playing the bearer channel stream received from MTA-t and, if necessary, releases network resources that have been used for this call. CMS-o sends the following 200-OK message to MTA-t. Once hangup is detected on the endpoint device, CMS-o puts that line in the "idle" state so new calls can be made or received. (17) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(mta-t.provider) From: tel:+1-212-555-2222 To: John Doe; DCS Group Category: Informational - Expiration 2/28/02 51 DCS Architecture August 2001 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 131 BYE Upon receipt of 200-OK, MTA-t stops timer (T-direct-request). 10.4 Basic Call Flow from CMS to CMS Endpoint-o CMS-o CMS-t Endpoint-t | Private Signaling | | | |<------------------->|(1)INVITE | | | |--------->| Private Signaling | | | |<------------------->| | |(2)183 SDP| | | |<---------| | | Private Signaling | | | |<------------------->|(3)PRACK | | | |--------->| | | |(4)200 OK | Private Signaling | | |<-------->|<------------------->| | | | | |<------------------Reserve Resources----------------->| | | | | | Private Signaling | | | |<------------------->|(5)COMET | | | |--------->| | | |(6)200 OK | Private Signaling | | |<-------->|<------------------->| | | (7)180 | | | Private Signaling |<---------| | |<------------------->|(8)PRACK | | | |--------->| | | |(9)200 OK | | | |<---------| | User | | | Private Signaling | Answers | | |<------------------->| | | (10)200 | | | Private Signaling |<---------| | |<------------------->| (11)ACK | | | |--------->| | | | | | |<--------------------Active Call-------------------->| | | | | User | | (12)BYE | Private Signaling | Hangs Up | |<---------|<------------------->| | |(13)200 OK| | | |----------| | A call setup begins when the endpoint device controlled by CMS-o detects an off-hook condition on one of its lines. This event is communicated to CMS-o through a private signaling exchange beyond DCS Group Category: Informational - Expiration 2/28/02 52 DCS Architecture August 2001 the scope of this specification. CMS-o first puts that line in the "busy" state, and collects a complete E.164 number. As a result of a translation function performed by CMS-o, the destination is determined to be an endpoint device served by CMS-t. CMS-o generates the following SIP INVITE message and sends it to CMS-t. CMS-o starts the retransmission timer (T-proxy-request) and starts the T3 session timer (T-setup). The retransmission timer is cancelled on receipt of the optional 100-Trying provisional response (not present in this call flow); both are cancelled on receipt of the 183-Session-Progress provisional response. (1) INVITE: INVITE sip:+1-212-555-2222;rn=+1-212-234-2222; npdi=yes@Host(cms-t);user=phone SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider);branch=1 Supported: 100rel, state Require: state Proxy-Require: dcs, state Remote-Party-ID: John Doe; Anonymity: Off Dcs-Gate: Host(cms-o.provider):3612/17S30124/37FA1948 optional Dcs-Billing-Info: Host(rks-o.provider)<5123-0123-4567-8900/212- 555-1111/212-555-2222> Dcs-Billing-ID: Host(cms-o.provider):36123E5C:0152 From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Contact: sip:Host(cms-o.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 a=rtpmap:96 G726-32/8000 m=audio 3456 RTP/AVP 0 a=qos:mandatory sendrecv a=X-pc-codecs:96 Upon receiving this INVITE message, CMS-t authenticates that the sender was CMS-o using IPSec, and sends the E.164-t address to the directory server. In this example, the Directory Server is able to translate E.164-t to the IP address of one of the endpoint devices controlled by CMS-t. CMS-t then checks to see if the endpoint device is authorized for receiving this call. CMS-talso checks the account information to determine if the originator is paying for the DCS Group Category: Informational - Expiration 2/28/02 53 DCS Architecture August 2001 call or if the destination is expected to pay. CMS-t engages in private signaling exchange with the endpoint device, beyond the scope of this specification, and determines the SDP description of the media stream to be sent to this endpoint. CMS-t puts this line in the "busy" state (so any other call attempts are rejected until this call clears), generates the following 183- Session-Progress response, and sends it to CMS-o. The Dcs-Gate header is omitted from this message, since CMS-o indicated it was optional, and CMS-t considers it optional as well. CMS-t starts the retransmission timer with value (T-proxy-response) and starts the session timer (T3) with value (T-resource). CMS-t may include Dcs- Billing-Information if it wishes to override the billing information that came in the INVITE (e.g. collect or toll-free call). (2) 183-Session-Progress: SIP/2.0 183 Session Progress Via: SIP/2.0/UDP Host(cms-o.provider);branch=1 Require: 100rel, state Proxy-Require: dcs, state From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Rseq: 9021 Content-Disposition: precondition Contact: sip:Host(cms-t.provider) Content-Type: application/sdp Content-length: (.) v=0 o=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(rgw12.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=rtpmap:0 PCMU/8000 m=audio 6544 RTP/AVP 0 a=qos:mandatory sendrecv confirm Upon receiving the 183-Session-Progress message, CMS-o stops timer (T-proxy-request) and sends the following PRACK message to CMS-t using the IP address in the Contact header of the 183-Session- Progress message. (3) PRACK: PRACK sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK DCS Group Category: Informational - Expiration 2/28/02 54 DCS Architecture August 2001 Rack: 9021 127 INVITE Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 a-qos:mandatory sendrecv CMS-t acknowledges the PRACK with a 200-OK, and signals the endpoint device to begin to reserve the resources necessary for the call. (4) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 128 PRACK After sending PRACK(3), CMS-o signals to the endpoint device to attempt to reserve the network resources necessary for the connection. If the endpoint signals that resource reservation is successful, CMS-o sends the following COMET message to CMS-t. CMS-o starts timer (T-direct-request). (5) COMET: COMET sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Content-Type: application/sdp Content-length: (.) v=0 O=- 2987933615 2987933615 IN IP4 A3C47F2146789F0 s=- c= IN IP4 Host(mg02.provider) b=AS:64 t=907165275 0 a=X-pc-csuites:312F a=X-pc-secret:clear:WhenInTheCourseOfHumanEvents a=rtpmap:0 PCMU/8000 m=audio 3456 RTP/AVP 0 DCS Group Category: Informational - Expiration 2/28/02 55 DCS Architecture August 2001 a=qos:success send CMS-t acknowledges the COMET message with a 200-OK. (6) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 129 COMET Upon receipt of the 200-OK(6), CMS-o stops timer (T-direct-request). Upon receipt of the (3) PRACK message, CMS-t stops timer (T-proxy- response) and attempts to reserve network resources if necessary. Once CMS-t both receives the COMET message and has successfully reserved network resources, CMS-t signals the endpoint to begin to send ringing voltage to the designated line and sends the following 180 RINGING message. CMS-t restarts the session timer (T3) with value (T-ringing). (7) 180 RINGING: SIP/2.0 180 Ringing Via: SIP/2.0/UDP Host(cms-o.provider);branch=1 Require: 100rel From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Contact: sip:Host(cms-t.provider) Cseq: 127 INVITE Rseq: 9022 Upon receipt of the 180 RINGING message, CMS-o restarts the transaction timer (T3) with value (T-ringing). CMS-o acknowledges the provisional response with a PRACK, and signals the endpoint device to play audible ringback tone to the customer. (8) PRACK: PRACK sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK RAck: 9022 127 INVITE CMS-t acknowledges the PRACK with a 200-OK, and stops timer (T- proxy-response). (9) 200 OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; DCS Group Category: Informational - Expiration 2/28/02 56 DCS Architecture August 2001 To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 130 PRACK Once CMS-t detects off-hook on the called line, it disconnects ringing voltage from the line and sends the final response. CMS-t stops timer (T-ringing) and starts timer (T-proxy-response). If necessary, CMS-t may also commit to resources that have been reserved for this call. At this point, CMS-t signals to the endpoint device to begin to generate bearer channel packets of encoded voice and send them to the originating endpoint, at the IP address and port number specified in the SDP part of the original INVITE message. (10) 200-OK: SIP/2.0 200 OK Via: SIP/2.0/UDP Host(cms-o.provider); branch=1 From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 INVITE Upon receipt of the 200-OK message, CMS-o stops timer (T-ringing) and signals the endpoint device to stop playing audible ringback tone to the customer and to begin to play the bearer channel stream that is received from the destination endpoint. CMS-o sends the following ACK message to CMS-t. If necessary, CMS-o may also commit to resources that have been reserved for this call. At this point, the endpoint device begins to generate bearer channel packets of encoded voice and send them to the destination endpoint using the IP address and port number specified in the SDP part of the original 183-Session-Progress message (that was a response to the original INVITE). (11) ACK: ACK sip:Host(cms-t.provider) SIP/2.0 Via: SIP/2.0/UDP Host(cms-o.provider) From: John Doe; To: tel:+1-212-555-2222 Call-ID: B64(SHA-1(555-1111;time=36123E5B;seq=72))@localhost Cseq: 127 ACK Upon receipt of the ACK message, CMS-t stop timer (T-proxy- response). When either endpoint detects hangup, it sends out a BYE message to the other one. In this example, the originating endpoint detected that the customer hung up the phone. CMS-o puts that line in the "idle" state so new calls can be made or received. It sends the following BYE message directly to CMS-t. CMS-o starts timer (T- direct-request). (12) BYE: DCS Group Category: Informational - Expiration 2/28/02 57