| OpenSS7 SS7 for the Common Man | © Copyright 1997-2007 OpenSS7 Corporation All Rights Reserved. Last modified: Sun, 05 Mar 2006 08:34:12 GMT | ||||||||||||||||
| |||||||||||||||||
| ISUP - ISDN User Part (ISUP) DocumentationDescription: OpenSS7 Resources Library.A PDF version of this document is available here. Call Control Interface (CCI)Call Control InterfacePrefaceSecurity WarningPermission to use, copy and distribute this documentation without modification, for any purpose and without fee or royalty is hereby granted, provided that both the above copyright notice and this permission notice appears in all copies and that the name of OpenSS7 Corporation not be used in advertising or publicity pertaining to distribution of this documentation or its contents without specific, written prior permission. OpenSS7 Corporation makes no representation about the suitability of this documentation for any purpose. It is provided “as is” without express or implied warranty. OpenSS7 Corporation disclaims all warranties with regard to this documentation including all implied warranties of merchantability, fitness for a particular purpose, non-infringement, or title; that the contents of the document are suitable for any purpose, or that the implementation of such contents will not infringe on any third party patents, copyrights, trademarks or other rights. In no event shall OpenSS7 Corporation be liable for any direct, indirect, special or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with any use of this document or the performance or implementation of the contents thereof. OpenSS7 Corporation is making this documentation available as a reference point for the industry. While OpenSS7 Corporation believes that these interfaces are well defined in this release of the document, minor changes may be made prior to products conforming to the interfaces being made available. AbstractThis document is a Application Programming Interface containing technical details concerning the implementation of the Call Control Interface (CCI) for OpenSS7. It contains recommendations on software architecture as well as platform and system applicability of the Call Control Interface (CCI). This document specifies a Call Control Interface (CCI) Specification in support of the OpenSS7 Integrated Service Digital Network (ISDN) and ISDN User Part (ISUP) protocol stacks.1 It provides abstraction of the call control interface to these components as well as providing a basis for call control for other call control signalling protocols. PurposeThe purpose of this document is to provide technical documentation of the Call Control Interface (CCI). This document is intended to be included with the OpenSS7 STREAMS software package released by OpenSS7 Corporation. It is intended to assist software developers, maintainers and users of the Call Control Interface (CCI) with understanding the software architecture and technical interfaces that are made available in the software package. IntentIt is the intent of this document that it act as the primary source of information concerning the Call Control Interface (CCI). This document is intended to provide information for writers of OpenSS7 Call Control Interface (CCI) applications as well as writers of OpenSS7 Call Control Interface (CCI) Users. AudienceThe audience for this document is software developers, maintainers and users and integrators of the Call Control Interface (CCI). The target audience is developers and users of the OpenSS7 SS7 and ISDN stack. DisclaimerAlthough the author has attempted to ensure that the information in this document is complete and correct, neither the Author nor OpenSS7 Corporation will take any responsibility in it. Revision HistoryTake care that you are working with a current version of this documentation: you will not be notified of updates. To ensure that you are working with a current version, check the OpenSS7 Project website for a current version. A printed (or postscript) version of this document is an UNCONTROLLED version.
cci.texi,v
Revision 0.9.2.7 2007/06/17 01:55:58 brian
- updates for release, remove any later language
Revision 0.9.2.6 2006/08/26 09:17:03 brian
- better release file generation
Revision 0.9.2.5 2006/08/23 11:02:50 brian
- corrections
Revision 0.9.2.4 2006/08/22 12:44:12 brian
- documentation updates
Revision 0.9.2.3 2006/01/04 08:04:11 brian
- corrected documentation
Revision 0.9.2.2 2006/01/03 12:00:35 brian
- documentation updates
Revision 0.9.2.1 2006/01/02 11:51:36 brian
- new CCI texinfo file
Revision 0.8.2.3 2003/07/12 19:12:29 brian
Update draft revision 4.
Revision 0.8.2.2 2003/03/23 19:56:50 brian
Finalizing isdn.
Revision 0.8.2.1 2003/02/21 12:00:35 brian
Updated primitive interface and Q.764 conformance.
Revision 0.8 2002/11/17 15:06:36 brian
Added initial documentation for call control interface.
1 IntroductionThis document specifies a STREAMS-based kernel-level instantiation of the ITU-T Call Control Interface definition. The Call Control Interface (CCI) enables the user of a call control service to access and use any of a variety of conforming call control service providers without specific knowledge of the provider's protocol. The service interface is designed to support any network call control protocol and user call control protocol. This interface only specifies access to call control service providers, and does not address issues concerning call control and circuit management, protocol performance, and performance analysis tools. This specification assumes that the reader is familiar with ITU-T state machines and call control interfaces (e.g., Q.764, Q.931), and STREAMS. 1.1 Related Documentation
1.1.1 RoleThis document specifies an interface that supports the services provided by the Integrated Services Digital Network (ISDN) and ISDN User Part (ISUP) for ITU-T applications as described in ITU-T Recommendation Q.931 and ITU-T Recommendation Q.764.2 These specifications are targeted for use by developers and testers of protocol modules that require call control service. 1.2 Definitions, Acronyms, Abbreviations
2 The Call Control LayerThe Call Control Layer provides the means to manage the connection and disconnection of calls. It is responsible for the routing and management of call control signalling between call control-user entities. 2.1 Model of the CCIThe CCI defines the services provided by the call control layer to the call control-user at the boundary between the call control provider and the call control user entity. The interface consists of a set of primitives defined as STREAMS messages that provide access to the call control layer services, and are transferred between the CCS user entity and the CCS provider. These primitives are of two types; ones that originate from the CCS user, and others that originate from the CCS provider. The primitives that originate from the CCS user make requests to the CCS provider, or respond to an indication of an event of the CCS provider. The primitives that originate from the CCS provider are either confirmations of a request or are indications to the CCS user that an event has occurred. Figure 1 shows the model of the CCI. ![]() Figure 1. Model of the CCI
The CCI allows the CCS provider to be configured with any call control layer user (such as an ISDN user call control application) that also conforms to the CCI. A call control layer user can also be a user program that conforms to the CCI and accesses the CCS provider via putmsg(2s) and getmsg(2s) system calls. 2.2 CCI ServicesThe features of the CCI are defined in terms of the services provided by the CCS provider, and the individual primitives that may flow between the CCS user and the CCS provider. The services supported by the CCI are based on three distinct modes of communication, user-network interface (UNI) User mode, user-network interface (UNI) Network mode, and network-network interface (NNI). In addition, the CCI supports services for local management. 2.2.1 UNIThe main features of the User-Network Interface mode of communication are:
2.2.1.1 Address FormatsAddresses specifying all the calls and channels known to the provider are specified with scope Customer/Provider GroupA customer/provider group has a different interpretation on the User and Network side of the call control interface. In User mode, the provider group is a group of all equipment groups that are serviced by the same network provider. In Network mode, the customer group is a group of all equipment groups to which the same service is provided to the same customer by the network. Customer/provider groups are identifier using a unique customer/provider group identifier within the CCS provider.
Addresses specifying all of the equipment groups in a customer/provider group and specified with scope
Equipment GroupAn equipment group is a group of all transmission groups (B- and D-channels) terminating at the same location. For User mode this corresponds to all the B- and D-channels terminating on the same network provider exchange. For Network mode this corresponds to all the B- and D-channels terminating on the same customer site. Equipment groups are identified using a unique equipment group identifier within the CCS provider. Addresses specifying
all of the B- and D-channels making up an equipment group are specified with scope Facility GroupA facility group is a group of D-channels (data links) controlling a set of B-channels. This corresponds to the signalling interface. For regular interfaces, a signalling relation consists of a single signalling interface. Where multiple signalling interfaces are used to control the same range of channels (e.g. primary and backup interfaces), all signalling interfaces belong to the same facility group. The B-channels that make up a facility group are channels that share the same dial plan and routing characteristics for telephone calls. A facility group is associated with an equipment group. Facility groups are identified using a unique facility group identifier within the CCS provider. Addresses specifying
all of the channels in a facility group are specified with scope An ISDN Channel Identifier is only unique within a facility group. Transmission GroupA transmission group is the group of all D- and B-Channels associated with a given Q.931 signalling interface. For example, a typical PRI interface would consist of 23B+D, where there is one signalling interface (the D-Channel) with 23 B-Channels associated with the D-Channel. The 1 D-Channel and 23 B-Channels form a single transmission group associated with the physical interface. Every D- or B-Channel belongs to one transmission group and occupies a single time slot within that transmission group. Transmission groups are identified using a unique transmission group identifier within the CCS provider. Addresses
specifying all of the channels in a transmission group are specified with scope ChannelA channel refers to a specific B-Channel within a transmission and facility group. Channels are identified using a unique channel identifier within the CCS provider. Addresses specifying a specific
channel are specified with scope Data LinkA data link corresponds to a specific D-channel used for the control of channels. Data links can be grouped into facility groups. Data links are identified using a unique data link identifier within the CCS provider. Addresses specifying all of the
channels controlled by a data link are specified with scope ![]() Figure 2. UNI Data Model
2.2.2 NNIThe main features of the Network-Network Interface mode of communication are:
2.2.2.1 Address FormatsAddresses specifying all of the circuits known to the provider are specified with scope Signalling PointsA signalling point is the SS7 signalling point (central office) that the provider represents. A CCS provider can represent more than one signalling point. A signalling point is identifier using a unique signalling point identifier within the CCS provider. Addresses
specifying all of the circuits in signalling point are specified with scope Signalling RelationsA signalling relation is a relationship between a local signalling point and a remote signalling point. A signalling relation consists of a single signalling interface. Signalling relations are identified using a unique signalling relation identifier within the CCS provider. Addresses
specifying all of the circuits in a signalling relation are specified with scope An ISUP Circuit Identification Code is only unique within a signalling relation. Trunk GroupsA trunk group is a group of circuits that share the same routing characteristics for telephone calls. A trunk group is associated with a signalling relation. For the NNI, a signalling relation is the combination of local MTP Point Code and remote MTP Point Code. A trunk group is identified using a unique trunk group identifier within the CCS provider. Addresses specifying all of
the circuits in a trunk group are specified with scope Circuit GroupsA circuit group is a group of circuits that share the same common transmission facility (e.g, E1 span) and is therefore impacted by any failure of the transmission facility. All of the individual channels of an E1 span that are used to carry calls are members of the circuit group. Circuits groups are identified using a unique circuit group identifier within the CCS provider. Addresses specifying
all of the circuits within a circuit group are specified with scope CircuitsA circuit refers to a specific time slot within a digital facility. Circuits are identified using a unique circuit identifier within the CCS provider. Addresses specifying a specific
circuit are specified with scope ![]() Figure 3. NNI Data Model
2.2.3 Local ManagementThe CCI specifications also define a set of local management functions that apply to UNI and NNI modes of communication. These services have local significance only. Tables 1, 2 and 3 summarizes the CCI service primitives by their state and service. 3 CCI Services DefinitionThis section describes the services of the CCI primitives. Time-sequence diagrams that illustrate the sequence of primitives are included. (Conventions for the time-sequence diagrams are defined in ITU-T X.210.) The format of the primitives will be defined later in this document. ![]() Table 1. CCI Service Primitives
3.1 Local Management Services DefinitionThe services defined in this section are outside the scope of international standards. These services apply to UNI (User and Network), and NNI modes of communication. They are invoked for the initialization/de-initialization of a stream connected to the CCS provider. They are also used to manage options supported by the CCS provider and to report information on the supported parameter values. 3.1.1 Call Control Information Reporting ServiceThis service provides information on the options supported by the CCS provider.
The sequence of primitive for call control information management is shown in Figure 4. ![]() Figure 4. Sequence of Primitives: Call Control Information Reporting Service
3.1.2 CCS Address ServiceThis service allows a CCS user to determine the bound call control address and the connected call control address for a given call reference associated with a stream. It permits the CCS user to not necessarily retain this information locally, and allows the CCS user to determine this information from the CCS provider at any time.
The sequence of primitives is shown in Figure 5. ![]() Figure 5. Sequence of Primitives: Call Control User Address Service
3.1.3 CCS User Bind ServiceThis service allows a call control address to be associated with a stream. It allows the CCS user to negotiate the number of setup indications that can remain unacknowledged for that CCS user (a setup indication is considered unacknowledged while it is awaiting a corresponding setup response or release request from the CCS user). This service also defines a mechanism that allows a stream (bound to a call control address of the CCS user) to be reserved to handle incoming calls only. This stream is referred to as the listener stream.
The sequence of primitives is shown in Figure 6 . ![]() Figure 6. Sequence of Primitives: Call Control User Bind Service
3.1.4 CCS User Unbind ServiceThis service allows the CCS user to be unbound from a call control address.
The sequence of primitives is shown in Figure 7. ![]() Figure 7. Sequence of Primitives: Call Control User Unbind Service
3.1.5 Receipt Acknowledgement Service
An example showing the sequence of primitives for successful receipt acknowledgement is depicted in Figure 8. ![]() Figure 8. Sequence of Primitives: Call Control Receipt Acknowledgement Service
3.1.6 Options Management ServiceThis service allows the CCS user to manage options parameter values associated with the CCS provider.
Figure 9 shows the sequence of primitives for call control options management. ![]() Figure 9. Sequence of Primitives: Call Control Options Management Service
3.1.7 Error Acknowledgement Service
Figure 10 shows the sequence or primitives for the error management primitive. ![]() Figure 10. Sequence of Primitives: Call Control Error Acknowledgement Service
3.2 User-Network Interface Services DefinitionThis section describes the required call control service primitives that define the UNI interface. The queue model for UNI is discussed in more detail in ITU-T Q.931. For Q.931 specific conformance considerations, see Addendum for Q.931 Conformance. The queue model represents the operation of a call control connection in the abstract by a pair of queues linking the two call control addresses. There is one queue for each direction of signalling transfer. The ability of a user to add objects to a queue will be determined by the behaviour of the user removing objects from that queue, and the state of the queue. The pair of queues is considered to be available for each potential call. Objects that are entered or removed from the queue are either as a result of interactions at the two call control addresses, or as the result of CCS provider initiatives.
Table 3 shows the ordering relationship among the queue model objects. ![]() Figure 11. Sequence of Primitives: Call Control UNI Overview
3.2.1 Call Setup PhaseA pair of queues is associated with a call between two call control addresses (facility group and channel(s)) when the CCS provider receives a CC_SETUP_REQ primitive at one of the call control addresses resulting in a setup object being entered into the queue. The queues will remain associated with the call until a CC_RELEASE_REQ or CC_RELEASE_IND (resulting in a release object) is either entered into or removed from a queue. Similarly, in the queue from the called CCS user, objects can be entered into the queue only after the setup object associated with the CC_SETUP_RES has been entered into the queue. Alternatively, the called CCS user can enter a release object into the queue instead of the setup object to terminate the call. The call establishment procedure will fail if the CCS provider is unable to establish the call, or if the destination CCS user is unable to accept the CC_SETUP_IND (see call failure and call reject primitive definitions). 3.2.1.1 User Primitives for Successful Call Setup
3.2.1.2 Provider Primitives for Successful Call Setup
The sequence of primitives in a successful call setup is defined by the time sequence diagram shown in Figure 12. The sequence of primitives for the call response token value determination is shown in Figure 13 (procedures for call response token value determination are discussed in section 4.1.3 and 4.1.4.) ![]() Figure 12. Sequence of Primitives: Call Control Call Setup Service
![]() Figure 13. Sequence of Primitives: Call Control Token Request Service
If the CCS provider is unable to establish a call, it indicates this to the request by a CC_CALL_REATTEMPT_IND. This is shown in Figure 14. ![]() Figure 14. Sequence of Primitives: Call Reattempt - CCS Provider
The sequence of primitives for call reattempt on dual seizure are shown in Figure 15. ![]() Figure 15. Sequence of Primitives: Call Reattempt - Dual Seizure
3.2.2 Call Establishment PhaseDuring the call establishment phase, a pair of queues has already been associated with the call between the selected call control addresses (facility group and channel(s)) during the setup phase. 3.2.2.1 User Primitives for Successful Call Establishment
3.2.2.2 Provider Primitives for Successful Call Establishment
3.2.2.3 Provider Primitives for Successful Call SetupThe sequence of primitives in a successful call establishment is defined by the time sequence diagrams as shown in Figure 16. ![]() Figure 16. Sequence of Primitives: Call Control Successful Call Establishment Service
3.2.3 Call Established PhaseFlow control of the call is done by management of the queue capacity, and by allowing objects of certain types to be inserted to the queues, as shown in Table X. 3.2.3.1 Suspend ServiceUser Primitives for Suspend Service
Provider Primitives for Suspend Service
Figure 17 and Figure 18 show the sequence of primitives for suspend service. The sequence of primitives may remain incomplete if a CC_RESET or a CC_RELEASE primitive occurs. The sequence of primitives to suspend a call is defined in the time sequence diagram as shown in Figure 17 and Figure 18. ![]() Figure 17. Sequence of Primitives: Call Control Network Suspend Service: Successful
![]() Figure 18. Sequence of Primitives: Call Control Network Suspend Service: Unsuccessful
![]() Figure 19. Sequence of Primitives: Call Control User Suspend Service
3.2.3.2 Resume ServiceUser Primitives for Resume Service
Provider Primitives for Resume Service
Figure 20 and Figure 21 show the sequence of primitives for resume service. The sequence of primitives may remain incomplete if a CC_RESET or a CC_RELEASE primitive occurs. The sequence of primitives to resume a call is defined in the time sequence diagram as shown in Figure 20 and Figure 21. ![]() Figure 20. Sequence of Primitives: Call Control Resume Service: Successful
![]() Figure 21. Sequence of Primitives: Call Control Resume Service: Unsuccessful
![]() Figure 22. Sequence of Primitives: Call Control User Resume Service
The sequence of primitives as shown above may remain incomplete if a CC_RESET or CC_RELEASE primitive occurs (see Table 3). A CCS user must not issue a CC_RESUME_REQ primitive if no CC_SUSPEND_REQ has been sent previously. Following a reset procedure (CC_RESET_REQ or CC_RESET_IND), a CCS user may not issue a CC_RESUME_REQ to resume a call suspended before the reset procedure was signalled. 3.2.4 Call Termination Phase3.2.4.1 Call Reject ServiceUser Primitives for Call Reject Service
Provider Primitives for Call Reject ServiceThe sequence of events for rejecting a call setup attempt at the UNI is defined in the time sequence diagram shown in Figure 23. ![]() Figure 23. Sequence of Primitives: Rejecting a Call Setup
3.2.4.2 Call Failure ServiceProvider Primitives for Call Failure Service
The sequence of events for error indications is described in the time sequence diagram shown in Figure 24. ![]() Figure 24. Sequence of Primitives: Call Failure
3.2.4.3 Call Release ServiceThe call release procedure is initialized by the insertion of a release object (associated with a CC_DISCONNECT_REQ, CC_RELEASE_REQ, or CC_REJECT_REQ) in the queue. As shown in Table 3, the release procedure is destructive with respect to other objects in the queue, and eventually results in the emptying of queues and termination of the call. The Release procedure invokes the following interactions:
The sequence of primitive depends on the origin of the release action. The sequence may be:
User Primitives for Release Service
Provider Primitives for Release Service
The sequence of primitives as shown in Figure 25, Figure 26, Figure 27, and Figure 28 may remain incomplete if a CC_RESTART primitive occurs. A CCS user can release a call establishment attempt by issuing a CC_DISCONNECT_REQ. The sequence of events is shown in Figure 25, Figure 26, Figure 27, and Figure 28. ![]() Figure 25. Sequence of Primitives: CCS User Invoked Release
![]() Figure 26. Sequence of Primitives: Simultaneous CCS User Invoked Release
![]() Figure 27. Sequence of Primitives: CCS Provider Invoked Release
![]() Figure 28. Sequence of Primitives: Simultaneous CCS User and CCS Provider Invoked Release
3.2.5 Call Management3.2.5.1 User Primitives for Call Management
3.2.5.2 Provider Primitives for Call Management
3.3 Network-Network Interface Services DefinitionThis section describes the required call control service primitives that define the NNI interface. The queue model for NNI is discussed in more detail in ITU-T Q.764. For Q.764 specific conformance considerations, see Addendum for Q.764 Conformance. For ETSI EN 300 356-1 V3.2.2 specific conformance considerations, see Addendum for ETSI EN 300 356-1 V3.2.2 Conformance. ![]() Figure 29. Sequence of Primitives: Call Control NNI Overview
3.3.1 Call Setup PhaseA pair of queues is associated with a call between the two call control addresses when the CCS provider receives a CC_SETUP_REQ primitive at one of the call control addresses resulting in a setup object being entered into the queue. The queues will remain associated with the call until a CC_RELEASE_REQ (resulting in a release object) is either entered into or removed from a queue. Similarly, in the queue from the called CCS user, objects can be entered into the queue only after the setup object associated with the CC_SETUP_RES has been entered into the queue. Alternatively, the called CCS user can enter a release object into the queue instead of the setup object to terminate the call. The call establishment procedure will fail if the CCS provider is unable to establish the call, or if the destination CCS user is unable to accept the CC_SETUP_IND (see call release primitive definition). 3.3.1.1 User Primitives for Successful Call Setup
3.3.1.2 Provider Primitives for Successful Call Setup
The sequence of primitives in a successful call setup is defined by the time sequence diagrams as shown in Figure 30 and Figure 31. The sequence of primitives for the call response token value determination is shown in Figure 32 (procedures for call response token value determination are discussed in section 4.1.3 and 4.1.4.) ![]() Figure 31. Sequence of Primitives: Call Control Call Setup Service: Overlap Sending
![]() Figure 32. Sequence of Primitives: Call Control Token Request Service
If the CCS provider is unable to establish a call, it indicates this to the request by a CC_CALL_REATTEMPT_IND. This is shown in Figure 33. ![]() Figure 33. Sequence of Primitives: Call Reattempt - CCS Provider
The sequence of primitives for call reattempt on dual seizure are shown in Figure 34. ![]() Figure 34. Sequence of Primitives: Call Reattempt - Dual Seizure
3.3.2 Continuity Test PhaseThe continuity test service is only applicable to the NNI. During the continuity test phase, a pair of queues has already been associated with the call between the selected call control addresses (signalling interface and circuit(s)) during the setup phase. The continuity test phase begins when the CCS provider returns a CC_CONT_TEST_IND primitive in response to a CC_SETUP_REQ primitive that had the ISUP_NCI_CONT_CHECK_REQUIRED flag set in the call flags. The continuity test phase also begins when the CCS user responds with a CC_CONT_TEST_REQ primitive in response to a CC_SETUP_IND primitive that had the ISUP_NCI_CONT_CHECK_REQUIRED flag set in the call flags. Upon entering the continuity test phase, it is the responsibility of the CCS user to establish a loop back on the call control address (signalling interface and circuit(s)) or to attach tone generation and detection devices to the call control address (signalling interface and circuit(s)). 3.3.2.1 Continuity Test SuccessfulUser Primitives for Successful Continuity Test
Provider Primitives for Successful Continuity Test
The sequence of primitives in a successful continuity test associated with call setup when continuity check is required on the circuit(s) is defined by the time sequence diagrams as shown in Figure 35. ![]() Figure 35. Sequence of Primitives: Call Setup Continuity Test Service: Required: Successful
The sequence of primitives in a successful continuity test associated with call setup when continuity check is being performed on a previous circuit is defined by the time sequence diagrams as shown in Figure 36. ![]() Figure 36. Sequence of Primitives: Call Setup Continuity Test Service: Previous: Successful
The sequence of primitives in a successful continuity test not associated with call setup is defined by the time sequence diagrams as shown in Figure 37. ![]() Figure 37. Sequence of Primitives: Continuity Test Service: Successful
3.3.2.2 Continuity Test UnsuccessfulUser Primitives for Unsuccessful Continuity Test
Provider Primitives for Unsuccessful Continuity Test
The sequence of primitives for an unsuccessful continuity test associated with a call setup is defined by the time sequence diagrams as shown in Figure 38. ![]() Figure 38. Sequence of Primitives: Call Setup Continuity Test Service: Unsuccessful
The sequence of primitives for an unsuccessful continuity test not associated with a call setup is defined by the time sequence diagrams as shown in Figure 39. ![]() Figure 39. Sequence of Primitives: Continuity Test Service: Unsuccessful
3.3.3 Call Establishment PhaseDuring the call establishment phase, a pair of queues has already been associated with the call between the selected call control addresses (signalling interface and circuit(s)) during the setup phase. The call establishment phase begins when the CCS provider returns a CC_SETUP_CON primitive (or receives a CC_CONT_REPORT_REQ primitive) in response to a CC_SETUP_REQ primitive (that had the ISUP_NCI_CONT_CHECK_REQUIRED flag set). The call establishment phase also begins when the CCS user responds with a CC_SETUP_RES primitive (or receives a CC_CONT_REPORT_IND primitive) in response to a CC_SETUP_IND primitive (that had the ISUP_NCI_CONT_CHECK_REQUIRED flag set). Upon entering the call establishment phase, it is the responsibility of the CCS user to remove any loop back from the call control address (signalling interface and circuit(s)) or to remove tone generation and detection devices from the call control address (signalling interface and circuit(s)). 3.3.3.1 User Primitives for Successful Call Establishment
3.3.3.2 Provider Primitives for Successful Call Establishment
The sequence of primitives in a successful call establishment is defined by the time sequence diagrams as shown in Figure 40. ![]() Figure 40. Sequence of Primitives: Call Control Successful Call Establishment Service
3.3.4 Call Established PhaseFlow control of the call is done by management of the queue capacity, and by allowing objects of certain types to be inserted to the queues, as shown in Table X. 3.3.4.1 User Primitives for Established Calls
3.3.4.2 Provider Primitives for Established Calls
Figure 41 shows the sequence of primitives for suspension and resumption of established calls. The sequence of primitives may remain incomplete if a CC_RESET or a CC_RELEASE primitive occurs. The sequence of primitives to successfully suspend and resume a call is defined in the time sequence diagram as shown in Figure 41. ![]() Figure 41. Sequence of Primitives: Call Control Suspend and Resume Service
The sequence of primitives as shown above may remain incomplete if a CC_RESET or CC_RELEASE primitive occurs (see Table 3). A CCS user must not issue a CC_RESUME_REQ primitive if no CC_SUSPEND_REQ has been sent previously. Following a reset procedure (CC_RESET_REQ or CC_RESET_IND), a CCS user may not issue a CC_RESUME_REQ to resume a call suspended before the reset procedure was signalled. 3.3.5 Call Termination Phase3.3.5.1 Call Reject ServiceUser Primitives for Call Reject Service
Provider Primitives for Call Reject ServiceThe sequence of events for rejecting a call setup attempt at the NNI is defined in the time sequence diagram shown Figure 42. ![]() Figure 42. Sequence of Primitives: CCS User Rejection of a Call Setup Attempt
3.3.5.2 Call Failure ServiceThe call error procedure is indicated by the removal of a reattempt or failure object (associated with a local event) from the queue. The error procedure is destructive with respect to other objects in the queue, and eventually results in the emptying of queues and termination of the call. Provider primitives for the Call Failure Service
The sequence of primitives for call failure are shown in Figure 43. ![]() Figure 43. Sequence of Primitives: Call Failure
3.3.5.3 Call Release ServiceThe call release procedure is initialized by the insertion of a release object (associated with a CC_RELEASE_REQ) into the queue. As shown in Table 3, the release procedure is destructive with respect to other objects in the queue, and eventually results in the emptying of queues and termination of the call. The release procedure invokes the following interactions:
The sequence of primitives depends on the origin of the release action. The sequence may be:
User primitives for the Release Service
Provider primitives for the Release Service
The sequence of primitives as shown in Figure 44, Figure 45, Figure 46, and Figure 47, may remain incomplete if a CC_RESET primitive occurs. A CCS user can release a call establishment attempt by issuing a CC_RELEASE_REQ. The sequence of events is shown in Figure 44, Figure 45, Figure 46, and Figure 47. ![]() Figure 44. Sequence of Primitives: CCS User Invoked Release
![]() Figure 45. Sequence of Primitives: Simultaneous CCS User Invoked Release
![]() Figure 46. Sequence of Primitives: CCS Provider Invoked Release
![]() Figure 47. Sequence of Primitives: Simultaneous CCS User and CCS Provider Invoked Release
3.3.6 Circuit Management Services3.3.6.1 Reset ServiceThe reset service is used by the CCS user or management to resynchronize the use of the call, or by the CCS provider to report detected loss of a unrecoverable call. The reset service is only applicable to the NNI. The reset procedure invokes the following interactions:
The complete sequence of primitives depends upon the origin of the reset action. The reset service may be:
User Primitives for Reset Service
Provider Primitives for Reset Service
The sequence of primitives are shown in Figure 48, Figure 49, Figure 50, and Figure 51. ![]() Figure 48. Sequence of Primitives: CCS User Invoked Reset
![]() Figure 49. Sequence of Primitives: Simultaneous CCS User Invoked Reset
![]() Figure 50. Sequence of Primitives: CCS Provider Invoked Reset
![]() Figure 51. Sequence of Primitives: Simultaneous CCS user and CCS Provider Invoked Reset
3.3.6.2 Blocking ServiceThe blocking service is used by the CCS user or management to effect local maintenance or hardware blocking on circuits, or by the CCS provider to indicate to CCS user or management the remote maintenance or hardware blocking of circuits. The blocking service is only applicable to the NNI. The blocking service provides for the local and remote blocking of call control addresses (signalling interface and circuit or circuit group) either for maintenance oriented or hardware failure purposes. Blocking should only be invoked from streams that are listening on a circuit group that includes the circuits for which blocking is requested, or the CC_DEFAULT_LISTENER. Maintenance blocking will also only be indicated on streams that are listening on circuit group that includes the circuits for which blocking is requested, or in the absence of such a stream, the CC_DEFAULT_LISTENER. When no stream is available to report maintenance blocking indications, the indication should be responded to by the CCS provider without user or management indication. User Primitives for Blocking Service
Provider Primitives for Blocking Service
The sequence of primitives are shown in Figure 51. ![]() Figure 51. Sequence of Primitives: Successful Blocking Service
3.3.6.3 Unblocking ServiceThe unblocking service is only applicable to the NNI. The unblocking service provides for the local and remote unblocking of call control addresses (signalling interface and circuit or circuit group) either for maintenance oriented or hardware failure purposes. User Primitives for Unblocking Service
Provider Primitives for Unblocking Service
The sequence of primitives are shown in Figure 52. ![]() Figure 52. Sequence of Primitives: Successful Unblocking Service
3.3.6.4 Query ServiceThe query service is only applicable to the NNI. The query service provides for the query of the remote state and blocking level of call control addresses (signalling interface and circuit group). User Primitives for Query Service
Provider Primitives for Query Service
The sequence of primitives are shown in Figure 53. ![]() Figure 53. Sequence of Primitives: Successful Query Service
4 CCI PrimitivesThis section describes the format and parameters of the CCI primitives (Mapping of CCI Primitives to Q.931 and Mapping of CCI Primitives to Q.764. shows the mapping of CCI primitives of the primitives defined in Q.931 and Q.764). In addition, it discusses the states the primitive is valid in, the resulting state, and the acknowledgement that the primitive expects. (The state/event tables for these primitives are shown in State/Event Tables. The precedence tables for the CCI primitives are shown in Primitive Precedence Tables.) Rules for ITU-T conformance are described in Addendum for Q.931 Conformance and Addendum for Q.764 Conformance to this document. Tables 5, 6, and 7 provide a summary of the CCS primitives and their parameters. 4.1 Management PrimitivesThese primitives apply to UNI (User and Network) and NNI. 4.1.1 Call Control Information RequestCC_INFO_REQThis primitive request the CCS provider to return the values of all supported protocol parameters (see under CC_INFO_ACK), and also the current state of the CCS provider (as defined in State/Event Tables). This primitive does not affect the state of the CCS provider and does not appear in the state tables. FormatThe format of the message is one M_PCPROTO message block and its structure is as follows: typedef struct CC_info_req {
ulong cc_primitive; /* always CC_INFO_REQ */
} CC_info_req_t;
ParametersValid StatesThis primitive is valid in any state where a local acknowledgement is not pending. New StateThe new state remains unchanged. AcknowledgementsThis primitive requires the CCS provider to generate one of the following acknowledgements upon receipt of the primitive:
4.1.2 Call Control Information AcknowledgementCC_INFO_ACKThis primitive indicates to the CCS user any relevant protocol-dependent parameters. It should be initiated in response to the CC_INFO_REQ primitive described above. FormatThe format of this message is one M_PCPROTO message block and its structure is as follows: typedef struct CC_info_ack {
ulong cc_primitive; /* always CC_INFO_ACK */
/* FIXME ... more ... */
} CC_info_ack_t;
ParametersThe above fields have the following meaning: FlagsValid StatesThis primitive is valid in any state in response to a CC_INFO_REQ primitive. New StateThe state remains the same. 4.1.3 Protocol Address RequestCC_ADDR_REQThis primitive requests that the CCS provider return information concerning the call control addresses upon which the CCS user is bound or engage in a call. The format of the message is one M_PROTO message block and its structure is as follows: typedef struct CC_addr_req {
ulong cc_primitive; /* always CC_ADDR_REQ */
ulong cc_call_ref; /* call reference */
} CC_addr_req_t;
Parameters
Valid StatesThis primitive is valid in any state. New StateThe new state is CCS_WACK_AREQ. Rules
AcknowledgementsThe CCS provider will generate on of the following acknowledgements upon receipt of the CC_ADDR_REQ primitive:
4.1.4 Protocol Address AcknowledgementCC_ADDR_ACKThis primitive acknowledges the corresponding request primitive and is used by the CCS provider to return information concerning the bound and connected protocol addresses for the stream. The format of the message is one M_PROTO message block and its structure is as follows: typedef struct CC_addr_ack {
ulong cc_primitive; /* always CC_ADDR_ACK */
ulong cc_bind_length; /* length of bound address */
ulong cc_bind_offset; /* offset of bound address */
ulong cc_call_ref; /* call reference */
ulong cc_conn_length; /* length of connected address */
ulong cc_conn_offset; /* offset of connected address */
} CC_addr_ack_t;
Parameters
Valid StateThis primitive is valid in state CC_WACK_AREQ. New StateThe new state is the state previous to the CC_ADDR_REQ. Rules
4.1.5 Bind Protocol Address RequestCC_BIND_REQThis primitive requests that the CCS provider bind a CCS user entity to a call control address (circuit, circuit group) and negotiate the number of setup indications allowed to be outstanding by the CCS provider for the specified CCS user entity being bound. FormatThe format of the message is one M_PROTO message block and its structure is as follows: typedef struct CC_bind_req {
ulong cc_primitive; /* always CC_BIND_REQ */
ulong cc_addr_length; /* length of address */
ulong cc_addr_offset; /* offset of address */
ulong cc_setup_ind; /* req # of setup inds to be queued */
ulong cc_bind_flags; /* bind options flags */
} CC_bind_req_t;
/* Flags associated with CC_BIND_REQ */
#define CC_DEFAULT_LISTENER 0x000000001UL
#define CC_TOKEN_REQUEST 0x000000002UL
#define CC_MANAGEMENT 0x000000004UL
#define CC_TEST 0x000000008UL
#define CC_MAINTENANCE 0x000000010UL
Parameters
Flags
Valid StatesThis primitive is valid in state CCS_UNBND (see State/Event Tables). New StateThe new state is CCS_WACK_BREQ. AcknowledgementsThe CCS provider will generate one of the following acknowledgements upon receipt of the CC_BIND_REQ primitive: |