summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2705.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc2705.txt')
-rw-r--r--doc/rfc/rfc2705.txt7507
1 files changed, 7507 insertions, 0 deletions
diff --git a/doc/rfc/rfc2705.txt b/doc/rfc/rfc2705.txt
new file mode 100644
index 0000000..c11aea4
--- /dev/null
+++ b/doc/rfc/rfc2705.txt
@@ -0,0 +1,7507 @@
+
+
+
+
+
+
+Network Working Group M. Arango
+Request for Comments: 2705 RSL COM
+Category: Informational A. Dugan
+ I. Elliott
+ Level3 Communications
+ C. Huitema
+ Telcordia
+ S. Pickett
+ Vertical Networks
+ October 1999
+
+
+ Media Gateway Control Protocol (MGCP)
+ Version 1.0
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+IESG NOTE:
+
+ This document is being published for the information of the
+ community. It describes a protocol that is currently being deployed
+ in a number of products. Implementers should be aware of
+ developments in the IETF Megaco Working Group and ITF-T SG16 who are
+ currently working on a potential successor to this protocol.
+
+Abstract
+
+ This document describes an application programming interface and a
+ corresponding protocol (MGCP) for controlling Voice over IP (VoIP)
+ Gateways from external call control elements. MGCP assumes a call
+ control architecture where the call control "intelligence" is outside
+ the gateways and handled by external call control elements.
+
+ The document is structured in 6 main sections:
+
+ * The introduction presents the basic assumptions and the relation
+ to other protocols such as H.323, RTSP, SAP or SIP.
+
+
+
+
+
+
+Arango, et al. Informational [Page 1]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * The interface section presents a conceptual overview of the MGCP,
+ presenting the naming conventions, the usage of the session
+ description protocol SDP, and the procedures that compose MGCP:
+ Notifications Request, Notification, Create Connection, Modify
+ Connection, Delete Connection, AuditEndpoint, AuditConnection and
+ RestartInProgress.
+
+ * The protocol description section presents the MGCP encodings,
+ which are based on simple text formats, and the transmission
+ procedure over UDP.
+
+ * The security section presents the security requirement of MGCP,
+ and its usage of IP security services (IPSEC).
+
+ * The event packages section provides an initial definition of
+ packages and event names.
+
+ * The description of the changes made in combining SGCP 1.1 and IPDC
+ to create MGCP 1.0.
+
+Table of Contents
+
+ 1. Introduction .............................................. 5
+ 1.1. Relation with the H.323 standards .................... 7
+ 1.2. Relation with the IETF standards ..................... 8
+ 1.3. Definitions .......................................... 9
+ 2. Media Gateway Control Interface ........................... 9
+ 2.1. Model and naming conventions. ........................ 10
+ 2.1.1. Types of endpoints .............................. 10
+ 2.1.1.1. Digital channel (DS0) ...................... 11
+ 2.1.1.2. Analog line ................................ 11
+ 2.1.1.3. Annoucement server access point ............ 12
+ 2.1.1.4. Interactive Voice Response access point .... 12
+ 2.1.1.5. Conference bridge access point ............. 13
+ 2.1.1.6. Packet relay ............................... 13
+ 2.1.1.7. Wiretap access point ....................... 14
+ 2.1.1.8. ATM "trunk side" interface. ................ 14
+ 2.1.2. Endpoint identifiers ............................ 15
+ 2.1.3. Calls and connections ........................... 17
+ 2.1.3.1. Names of calls ............................. 20
+ 2.1.3.2. Names of connections ....................... 20
+ 2.1.3.3. Management of resources, attributes of ..... 20
+ 2.1.3.4. Special case of local connections .......... 23
+ 2.1.4. Names of Call Agents and other entities ......... 23
+ 2.1.5. Digit maps ...................................... 24
+ 2.1.6. Names of events ................................. 26
+ 2.2. Usage of SDP ......................................... 29
+ 2.3. Gateway Control Commands ............................. 30
+
+
+
+Arango, et al. Informational [Page 2]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 2.3.1. EndpointConfiguration ........................... 32
+ 2.3.2. NotificationRequest ............................. 33
+ 2.3.3. CreateConnection ................................ 38
+ 2.3.4. ModifyConnection ................................ 44
+ 2.3.5. DeleteConnection (from the Call Agent) .......... 46
+ 2.3.6. DeleteConnection (from the VoIP gateway) ........ 51
+ 2.3.7. DeleteConnection (multiple connections, from the 51
+ 2.3.8. Audit Endpoint .................................. 52
+ 2.3.9. Audit Connection ................................ 55
+ 2.3.10. Restart in progress ............................ 56
+ 2.4. Return codes and error codes. ........................ 58
+ 2.5. Reason Codes ......................................... 61
+ 3. Media Gateway Control Protocol ............................ 61
+ 3.1. General description .................................. 62
+ 3.2. Command Header ....................................... 62
+ 3.2.1. Command line .................................... 62
+ 3.2.1.1. Coding of the requested verb ............... 63
+ 3.2.1.2. Transaction Identifiers .................... 63
+ 3.2.1.3. Coding of the endpoint identifiers and ..... 64
+ 3.2.1.4. Coding of the protocol version ............. 65
+ 3.2.2. Parameter lines ................................. 65
+ 3.2.2.1. Response Acknowledgement ................... 68
+ 3.2.2.2. Local connection options ................... 68
+ 3.2.2.3. Capabilities ............................... 70
+ 3.2.2.4. Connection parameters ...................... 71
+ 3.2.2.5. Reason Codes ............................... 72
+ 3.2.2.6. Connection mode ............................ 73
+ 3.2.2.7. Coding of event names ...................... 73
+ 3.2.2.8. RequestedEvents ............................ 74
+ 3.2.2.9. SignalRequests ............................. 76
+ 3.2.2.10. ObservedEvent ............................. 76
+ 3.2.2.11. RequestedInfo ............................. 76
+ 3.2.2.12. QuarantineHandling ........................ 77
+ 3.2.2.13. DetectEvents .............................. 77
+ 3.2.2.14. EventStates ............................... 77
+ 3.2.2.15. RestartMethod ............................. 78
+ 3.2.2.16. Bearer Information ........................ 78
+ 3.3. Format of response headers ........................... 78
+ 3.4. Formal syntax description of the protocol ............ 81
+ 3.5. Encoding of the session description .................. 86
+ 3.5.1. Usage of SDP for an audio service ............... 86
+ 3.5.2. Usage of SDP in a network access service ........ 87
+ 3.5.3. Usage of SDP for ATM connections ................ 90
+ 3.5.4. Usage of SDP for local connections .............. 91
+ 3.6. Transmission over UDP ................................ 91
+ 3.6.1. Providing the At-Most-Once functionality ........ 91
+ 3.6.2. Transaction identifiers and three ways handshake. 92
+ 3.6.3. Computing retransmission timers ................. 93
+
+
+
+Arango, et al. Informational [Page 3]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 3.6.4. Piggy backing ................................... 94
+ 3.6.5. Provisional responses ........................... 94
+ 4. States, failover and race conditions. ..................... 95
+ 4.1. Basic Asumptions ..................................... 95
+ 4.2. Security, Retransmission, and Detection of Lost ...... 96
+ 4.3. Race conditions ...................................... 99
+ 4.3.1. Quarantine list ................................. 99
+ 4.3.2. Explicit detection ..............................103
+ 4.3.3. Ordering of commands, and treatment of disorder .104
+ 4.3.4. Fighting the restart avalanche ..................105
+ 4.3.5. Disconnected Endpoints ..........................107
+ 1. A "disconnected" timer is initialized to a random value, .107
+ 2. The gateway then waits for either the end of this timer, .107
+ 3. When the "disconnected" timer elapses, when a command is .107
+ 4. If the "disconnected" procedure still left the endpoint ..107
+ 5. Security requirements .....................................108
+ 5.1. Protection of media connections ......................109
+ 6. Event packages and end point types ........................109
+ 6.1. Basic packages .......................................110
+ 6.1.1. Generic Media Package ...........................110
+ 6.1.2. DTMF package ....................................112
+ 6.1.3. MF Package ......................................113
+ 6.1.4. Trunk Package ...................................114
+ 6.1.5. Line Package ....................................116
+ 6.1.6. Handset emulation package .......................119
+ 6.1.7. RTP Package .....................................120
+ 6.1.8. Network Access Server Package ...................121
+ 6.1.9. Announcement Server Package .....................122
+ 6.1.10. Script Package .................................122
+ 6.2. Basic endpoint types and profiles ....................123
+ 7. Versions and compatibility ................................124
+ 7.1. Differences between version 1.0 and draft 0.5 ........124
+ 7.2. Differences between draft-04 and draft-05 ............125
+ 7.3. Differences between draft-03 and draft-04 ............125
+ 7.4. Differences between draft-02 and draft-03 ............125
+ 7.5. Differences between draft-01 and draft-02 ............126
+ 7.6. The making of MGCP from IPDC and SGCP ................126
+ 7.7. Changes between MGCP and initial versions of SGCP ....126
+ 8. Security Considerations ...................................128
+ 9. Acknowledgements ..........................................128
+ 10. References ................................................129
+ 11. Authors' Addresses ........................................130
+ 12. Appendix A: Proposed "MoveConnection" command .............132
+ 12.1. Proposed syntax modification ........................133
+ 13. Full Copyright Statement ..................................134
+
+
+
+
+
+
+Arango, et al. Informational [Page 4]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+1. Introduction
+
+ This document describes an abstract application programming interface
+ and a corresponding protocol (MGCP) for controlling Telephony
+ Gateways from external call control elements called media gateway
+ controllers or call agents. A telephony gateway is a network element
+ that provides conversion between the audio signals carried on
+ telephone circuits and data packets carried over the Internet or over
+ other packet networks. Example of gateways are:
+
+ * Trunking gateways, that interface between the telephone network
+ and a Voice over IP network. Such gateways typically manage a
+ large number of digital circuits.
+
+ * Voice over ATM gateways, which operate much the same way as voice
+ over IP trunking gateways, except that they interface to an ATM
+ network.
+
+ * Residential gateways, that provide a traditional analog (RJ11)
+ interface to a Voice over IP network. Examples of residential
+ gateways include cable modem/cable set-top boxes, xDSL devices,
+ broad-band wireless devices
+
+ * Access gateways, that provide a traditional analog (RJ11) or
+ digital PBX interface to a Voice over IP network. Examples of
+ access gateways include small-scale voice over IP gateways.
+
+ * Business gateways, that provide a traditional digital PBX
+ interface or an integrated "soft PBX" interface to a Voice over IP
+ network.
+
+ * Network Access Servers, that can attach a "modem" to a telephone
+ circuit and provide data access to the Internet. We expect that,
+ in the future, the same gateways will combine Voice over IP
+ services and Network Access services.
+
+ * Circuit switches, or packet switches, which can offer a control
+ interface to an external call control element.
+
+ MGCP assumes a call control architecture where the call control
+ "intelligence" is outside the gateways and handled by external call
+ control elements. The MGCP assumes that these call control elements,
+ or Call Agents, will synchronize with each other to send coherent
+ commands to the gateways under their control. MGCP does not define a
+ mechanism for synchronizing Call Agents. MGCP is, in essence, a
+ master/slave protocol, where the gateways are expected to execute
+ commands sent by the Call Agents. In consequence, this document
+ specifies in great detail the expected behavior of the gateways, but
+
+
+
+Arango, et al. Informational [Page 5]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ only specify those parts of a call agent implementation, such as
+ timer management, that are mandated for proper operation of the
+ protocol.
+
+ MGCP assumes a connection model where the basic constructs are
+ endpoints and connections. Endpoints are sources or sinks of data and
+ could be physical or virtual. Examples of physical endpoints are:
+
+ * An interface on a gateway that terminates a trunk connected to a
+ PSTN switch (e.g., Class 5, Class 4, etc.). A gateway that
+ terminates trunks is called a trunk gateway.
+
+ * An interface on a gateway that terminates an analog POTS
+ connection to a phone, key system, PBX, etc. A gateway that
+ terminates residential POTS lines (to phones) is called a
+ residential gateway.
+
+ An example of a virtual endpoint is an audio source in an audio-
+ content server. Creation of physical endpoints requires hardware
+ installation, while creation of virtual endpoints can be done by
+ software.
+
+ Connections may be either point to point or multipoint. A point to
+ point connection is an association between two endpoints with the
+ purpose of transmitting data between these endpoints. Once this
+ association is established for both endpoints, data transfer between
+ these endpoints can take place. A multipoint connection is
+ established by connecting the endpoint to a multipoint session.
+
+ Connections can be established over several types of bearer networks:
+
+ * Transmission of audio packets using RTP and UDP over a TCP/IP
+ network.
+
+ * Transmission of audio packets using AAL2, or another adaptation
+ layer, over an ATM network.
+
+ * Transmission of packets over an internal connection, for example
+ the TDM backplane or the interconnection bus of a gateway. This is
+ used, in particular, for "hairpin" connections, connections that
+ terminate in a gateway but are immediately rerouted over the
+ telephone network.
+
+ For point-to-point connections the endpoints of a connection could be
+ in separate gateways or in the same gateway.
+
+
+
+
+
+
+Arango, et al. Informational [Page 6]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+1.1. Relation with the H.323 standards
+
+ MGCP is designed as an internal protocol within a distributed system
+ that appears to the outside as a single VoIP gateway. This system is
+ composed of a Call Agent, that may or may not be distributed over
+ several computer platforms, and of a set of gateways, including at
+ least one "media gateway" that perform the conversion of media
+ signals between circuits and packets, and at least one "signalling
+ gateway" when connecting to an SS7 controlled network. In a typical
+ configuration, this distributed gateway system will interface on one
+ side with one or more telephony (i.e. circuit) switches, and on the
+ other side with H.323 conformant systems, as indicated in the
+ following table:
+
+ ___________________________________________________________________
+ | Functional| Phone | Terminating | H.323 conformant |
+ | Plane | switch | Entity | systems |
+ |___________|____________|_________________|_______________________|
+ | Signaling | Signaling | Call agent | Signaling exchanges |
+ | Plane | exchanges | | with the call agent |
+ | | through | | through H.225/RAS and|
+ | | SS7/ISUP | | H.225/Q.931. |
+ |___________|____________|_________________|_______________________|
+ | | | | Possible negotiation |
+ | | | | of logical channels |
+ | | | | and transmission |
+ | | | | parameters through |
+ | | | | H.245 with the call |
+ | | | | agent. |
+ |___________|____________|_________________|_______________________|
+ | | | Internal | |
+ | | | synchronization| |
+ | | | through MGCP | |
+ |___________|____________|_________________|_______________________|
+ | Bearer | Connection| Telephony | Transmission of VOIP |
+ | Data | through | gateways | data using RTP |
+ | Transport | high speed| | directly between the |
+ | Plane | trunk | | H.323 station and the|
+ | | groups | | gateway. |
+ |___________|____________|_________________|_______________________|
+
+
+ In the MGCP model, the gateways focus on the audio signal translation
+ function, while the Call Agent handles the signaling and call
+ processing functions. As a consequence, the Call Agent implements the
+ "signaling" layers of the H.323 standard, and presents itself as an
+ "H.323 Gatekeeper" or as one or more "H.323 Endpoints" to the H.323
+ systems.
+
+
+
+Arango, et al. Informational [Page 7]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+1.2. Relation with the IETF standards
+
+ While H.323 is the recognized standard for VoIP terminals, the IETF
+ has also produced specifications for other types of multi-media
+ applications. These other specifications include:
+
+ * the Session Description Protocol (SDP), RFC 2327,
+
+ * the Session Announcement Protocol (SAP),
+
+ * the Session Initiation Protocol (SIP),
+
+ * the Real Time Streaming Protocol (RTSP), RFC 2326.
+
+ The latter three specifications are in fact alternative signaling
+ standards that allow for the transmission of a session description to
+ an interested party. SAP is used by multicast session managers to
+ distribute a multicast session description to a large group of
+ recipients, SIP is used to invite an individual user to take part in
+ a point-to-point or unicast session, RTSP is used to interface a
+ server that provides real time data. In all three cases, the session
+ description is described according to SDP; when audio is transmitted,
+ it is transmitted through the Real-time Transport Protocol, RTP.
+
+ The distributed gateway systems and MGCP will enable PSTN telephony
+ users to access sessions set up using SAP, SIP or RTSP. The Call
+ Agent provides for signaling conversion, according to the following
+ table:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 8]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ _____________________________________________________________________
+ | Functional| Phone | Terminating | IETF conforming systems|
+ | Plane | switch | Entity | |
+ |___________|____________|_________________|_________________________|
+ | Signaling | Signaling | Call agent | Signaling exchanges |
+ | Plane | exchanges | | with the call agent |
+ | | through | | through SAP, SIP or |
+ | | SS7/ISUP | | RTSP. |
+ |___________|____________|_________________|_________________________|
+ | | | | Negotiation of session |
+ | | | | description parameters |
+ | | | | through SDP (telephony |
+ | | | | gateway terminated but |
+ | | | | passed via the call |
+ | | | | agent to and from the |
+ | | | | IETF conforming system)|
+ |___________|____________|_________________|_________________________|
+ | | | Internal | |
+ | | | synchronization| |
+ | | | through MGCP | |
+ |___________|____________|_________________|_________________________|
+ | Bearer | Connection| Telephony | Transmission of VoIP |
+ | Data | through | gateways | data using RTP, |
+ | Transport | high speed| | directly between the |
+ | Plane | trunk | | remote IP end system |
+ | | groups | | and the gateway. |
+ |___________|____________|_________________|_________________________|
+
+
+ The SDP standard has a pivotal status in this architecture. We will
+ see in the following description that we also use it to carry session
+ descriptions in MGCP.
+
+1.3. Definitions
+
+ Trunk: A communication channel between two switching systems. E.g., a
+ DS0 on a T1 or E1 line.
+
+2. Media Gateway Control Interface
+
+ The interface functions provide for connection control and endpoint
+ control. Both use the same system model and the same naming
+ conventions.
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 9]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1. Model and naming conventions
+
+ The MGCP assumes a connection model where the basic constructs are
+ endpoints and connections. Connections are grouped in calls. One or
+ more connections can belong to one call. Connections and calls are
+ set up at the initiative of one or several Call Agents.
+
+2.1.1. Types of endpoints
+
+ In the introduction, we presented several classes of gateways. Such
+ classifications, however, can be misleading. Manufacturers can
+ arbitrarily decide to provide several types of services in a single
+ packaging. A single product could well, for example, provide some
+ trunk connections to telephony switches, some primary rate
+ connections and some analog line interfaces, thus sharing the
+ characteristics of what we described in the introduction as
+ "trunking", "access" and "residential" gateways. MGCP does not make
+ assumptions about such groupings. We simply assume that media
+ gateways support collections of endpoints. The type of the endpoint
+ determines its functionalities. Our analysis, so far, has led us to
+ isolate the following basic endpoint types:
+
+ * Digital channel (DS0),
+
+ * Analog line,
+
+ * Annoucement server access point,
+
+ * Interactive Voice Response access point,
+
+ * Conference bridge access point,
+
+ * Packet relay,
+
+ * Wiretap access point,
+
+ * ATM "trunk side" interface.
+
+ In this section, we will develop the expected behavior of such end
+ points.
+
+ This list is not limitative. There may be other types of endpoints
+ defined in the future, for example test endpoint that could be used
+ to check network quality, or frame-relay endpoints that could be used
+ to managed audio channels multiplexed over a frame-relay virtual
+ circuit.
+
+
+
+
+
+Arango, et al. Informational [Page 10]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1.1.1. Digital channel (DS0)
+
+ Digital channels provide an 8Khz*8bit service. Such channels are
+ found in trunk and ISDN interfaces. They are typically part of
+ digital multiplexes, such as T1, E1, T3 or E3 interfaces. Media
+ gateways that support such channels are capable of translating the
+ digital signals received on the channel, which may be encoded
+ according to A or mu-law, using either the complete set of 8 bits or
+ only 7 of these bits, into audio packets. When the media gateway
+ also supports a NAS service, the gateway shall be capable of
+ receiving either audio-encoded data (modem connection) or binary data
+ (ISDN connection) and convert them into data packets.
+
+ +-------
+ +------------+|
+ (channel) ===|DS0 endpoint| -------- Connections
+ +------------+|
+ +-------
+
+ Media gateways should be able to establish several connections
+ between the endpoint and the packet networks, or between the endpoint
+ and other endpoints in the same gateway. The signals originating
+ from these connections shall be mixed according to the connection
+ "mode", as specified later in this document. The precise number of
+ connections that an endpoint support is a characteristic of the
+ gateway, and may in fact vary according with the allocation of
+ resource within the gateway.
+
+ In some cases, digital channels are used to carry signalling. This
+ is the case for example of SS7 "F" links, or ISDN "D" channels.
+ Media gateways that support these signalling functions shall be able
+ to send and receive the signalling packets to and from a call agent,
+ using the "back haul" procedures defined by the SIGTRAN working group
+ of the IETF. Digital channels are sometimes used in conjunction with
+ channel associated signalling, such as "MF R2". Media gateways that
+ support these signalling functions shall be able to detect and
+ produce the corresponding signals, such as for example "wink" or "A",
+ according to the event signalling and reporting procedures defined in
+ MGCP.
+
+2.1.1.2. Analog line
+
+ Analog lines can be used either as a "client" interface, providing
+ service to a classic telephone unit, or as a "service" interface,
+ allowing the gateway to send and receive analog calls. When the
+ media gateway also supports a NAS service, the gateway shall be
+ capable of receiving audio-encoded data (modem connection) and
+ convert them into data packets.
+
+
+
+Arango, et al. Informational [Page 11]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ +-------
+ +---------------+|
+ (line) ===|analog endpoint| -------- Connections
+ +---------------+|
+ +-------
+
+ Media gateways should be able to establish several connections
+ between the endpoint and the packet networks, or between the endpoint
+ and other endpoints in the same gateway. The audio signals
+ originating from these connections shall be mixed according to the
+ connection "mode", as specified later in this document. The precise
+ number of connections that an endpoint support is a characteristic of
+ the gateway, and may in fact vary according with the allocation of
+ resource within the gateway. A typical gateway should however be
+ able to support two or three connections per endpoint, in order to
+ provide services such as "call waiting" or "three ways calling".
+
+2.1.1.3. Annoucement server access point
+
+ An announcement server endpoint provides acces to an announcement
+ service. Under requests from the call agent, the announcement server
+ will "play" a specified announcement. The requests from the call
+ agent will follow the event signalling and reporting procedures
+ defined in MGCP.
+
+ +----------------------+
+ | Announcement endpoint| -------- Connection
+ +----------------------+
+
+ A given announcement endpoint is not supposed to support more than
+ one connection at a time. If several connections were established to
+ the same endpoint, then the same announcements would be played
+ simultaneously over all the connections.
+
+ Connections to an announcement server are typically oneway, or "half
+ duplex" -- the announcement server is not expected to listen the
+ audio signals from the connection.
+
+2.1.1.4. Interactive Voice Response access point
+
+ An Interactive Voice Response (IVR) endpoint provides acces to an IVR
+ service. Under requests from the call agent, the IVR server will
+ "play" announcements and tones, and will "listen" to responses from
+ the user. The requests from the call agent will follow the event
+ signalling and reporting procedures defined in MGCP.
+
+
+
+
+
+
+Arango, et al. Informational [Page 12]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ +-------------+
+ | IVR endpoint| -------- Connection
+ +-------------+
+
+ A given IVR endpoint is not supposed to support more than one
+ connection at a time. If several connections were established to the
+ same endpoint, then the same tones and announcements would be played
+ simultaneously over all the connections.
+
+2.1.1.5. Conference bridge access point
+
+ A conference bridge endpoint is used to provide access to a specific
+ conference.
+
+ +-------
+ +--------------------------+|
+ |Conference bridge endpoint| -------- Connections
+ +--------------------------+|
+ +-------
+
+ Media gateways should be able to establish several connections
+ between the endpoint and the packet networks, or between the endpoint
+ and other endpoints in the same gateway. The signals originating
+ from these connections shall be mixed according to the connection
+ "mode", as specified later in this document. The precise number of
+ connections that an endpoint support is a characteristic of the
+ gateway, and may in fact vary according with the allocation of
+ resource within the gateway.
+
+2.1.1.6. Packet relay
+
+ A packet relay endpoint is a specific form of conference bridge, that
+ typically only supports two connections. Packets relays can be found
+ in firewalls between a protected and an open network, or in
+ transcoding servers used to provide interoperation between
+ incompatible gateways, for example gateways that do not support
+ compatible compression algorithms, or gateways that operate over
+ different transmission networks such as IP and ATM.
+
+ +-------
+ +---------------------+ |
+ |Packet relay endpoint| 2 connections
+ +---------------------+ |
+ +-------
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 13]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1.1.7. Wiretap access point
+
+ A wiretap access point provides access to a wiretap service,
+ providing either a recording or a life playback of a connection.
+
+ +-----------------+
+ | Wiretap endpoint| -------- Connection
+ +-----------------+
+
+ A given wiretap endpoint is not supposed to support more than one
+ connection at a time. If several connections were established to the
+ same endpoint, then the recording or playback would mix the audio
+ signals received on this connections.
+
+ Connections to an wiretap endpoint are typically oneway, or "half
+ duplex" -- the wiretap server is not expected to signal its presence
+ in a call.
+
+2.1.1.8. ATM "trunk side" interface.
+
+ ATM "trunk side" endpoints are typically found when one or several
+ ATM permanent virtual circuits are used as a replacement for the
+ classic "TDM" trunks linking switches. When ATM/AAL2 is used,
+ several trunks or channels are multiplexed on a single virtual
+ circuit; each of these trunks correspond to a single endpoint.
+
+ +-------
+ +------------------+|
+ (channel) = |ATM trunk endpoint| -------- Connections
+ +------------------+|
+ +-------
+
+ Media gateways should be able to establish several connections
+ between the endpoint and the packet networks, or between the endpoint
+ and other endpoints in the same gateway. The signals originating
+ from these connections shall be mixed according to the connection
+ "mode", as specified later in this document. The precise number of
+ connections that an endpoint support is a characteristic of the
+ gateway, and may in fact vary according with the allocation of
+ resource within the gateway.
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 14]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1.2. Endpoint identifiers
+
+ Endpoints identifiers have two components that both are case
+ insensitive:
+
+ * the domain name of the gateway that is managing the endpoint,
+
+ * a local name within that gateway,
+
+ The syntax of the local name depends on the type of endpoint being
+ named. However, the local name for each of these types is naturally
+ hierarchical, beginning with a term which identifies the physical
+ gateway containing the given endpoint and ending in a term which
+ specifies the individual endpoint concerned. With this in mind, the
+ following rules for construction and interpretation of the Entity
+ Name field for these entity types MUST be supported:
+
+ 1) The individual terms of the naming path MUST be separated by a
+ single slash ("/", ASCII 2F hex).
+
+ 2) The individual terms are character strings composed of letters,
+ digits or other printable characters, with the exception of
+ characters used as delimitors ("/", "@"), characters used for
+ wildcarding ("*", "$") and white spaces.
+
+ 3) Wild-carding is represented either by an asterisk ("*") or a
+ dollar sign ("$") for the terms of the naming path which are to be
+ wild-carded. Thus, if the full naming path looks like
+
+ term1/term2/term3
+
+ then the Entity Name field looks like this depending on which
+ terms are wild-carded:
+
+ */term2/term3 if term1 is wild-carded
+ term1/*/term3 if term2 is wild-carded
+ term1/term2/* if term3 is wild-carded
+ term1/*/* if term2 and term3 are wild-carded,
+ etc.
+
+ In each of these examples a dollar sign could have appeared
+ instead of an asterisk.
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 15]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 4) A term represented by an asterisk is to be interpreted as: "use
+ ALL values of this term known within the scope of the Media
+ Gateway". A term represented by a dollar sign is to be
+ interpreted as: "use ANY ONE value of this term known within the
+ scope of the Media Gateway". The description of a specific
+ command may add further criteria for selection within the general
+ rules given here.
+
+ If the Media Gateway controls multiple physical gateways, the first
+ term of the naming MUST identify the physical gateway containing the
+ desired entity. If the Media Gateway controls only a single physical
+ gateway, the first term of the naming string MAY identify that
+ physical gateway, depending on local practice. A local name that is
+ composed of only a wildcard character refers to either all (*) or any
+ ($) endpoints within the media gateway.
+
+ In the case of trunking gateways, endpoints are trunk circuits
+ linking a gateway to a telephone switch. These circuits are typically
+ grouped into a digital multiplex, that is connected to the gateway by
+ a physical interface. Such circuits are named in three contexts:
+
+ * In the ISUP protocol, trunks are grouped into trunk groups,
+ identified by the SS7 point codes of the switches that the group
+ connects. Circuits within a trunk group are identified by a
+ circuit number (CIC in ISUP).
+
+ * In the gateway configuration files, physical interfaces are
+ typically identified by the name of the interface, an arbitrary
+ text string. When the interface multiplexes several circuits,
+ individual circuits are typically identified by a circuit number.
+
+ * In MGCP, the endpoints are identified by an endpoint identifier.
+
+ The Call Agents use configuration databases to map ranges of circuit
+ numbers within an ISUP trunk group to corresponding ranges of
+ circuits in a multiplex connected to a gateway through a physical
+ interface. The gateway will be identified, in MGCP, by a domain name.
+ The local name will be structured to encode both the name of the
+ physical interface, for example X35V3+A4, and the circuit number
+ within the multiplex connected to the interface, for example 13. The
+ circuit number will be separated from the name of the interface by a
+ fraction bar, as in:
+
+ X35V3+A4/13
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 16]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Other types of endpoints will use different conventions. For example,
+ in gateways were physical interfaces by construction only control one
+ circuit, the circuit number will be omitted. The exact syntax of such
+ names should be specified in the corresponding server specification.
+
+2.1.3. Calls and connections
+
+ Connections are created on the call agent on each endpoint that will
+ be involved in the "call." In the classic example of a connection
+ between two "DS0" endpoints (EP1 and EP2), the call agents
+ controlling the end points will establish two connections (C1 and
+ C2):
+
+ +---+ +---+
+ (channel1) ===|EP1|--(C1)--... ...(C2)--|EP2|===(channel2)
+ +---+ +---+
+
+ Each connection will be designated locally by a connection
+ identifier, and will be characterized by connection attributes.
+
+ When the two endpoints are located on gateways that are managed by
+ the same call agent, the creation is done via the three following
+ steps:
+
+ 1) The call agent asks the first gateway to "create a connection" on
+ the first endpoint. The gateway allocates resources to that
+ connection, and respond to the command by providing a "session
+ description." The session description contains the information
+ necessary for a third party to send packets towards the newly
+ created connection, such as for example IP address, UDP port, and
+ packetization parameters.
+
+ 2) The call agent then asks the second gateway to "create a
+ connection" on the second endpoint. The command carries the
+ "session description" provided by the first gateway. The gateway
+ allocates resources to that connection, and respond to the command
+ by providing its own "session description."
+
+ 3) The call agent uses a "modify connection" command to provide this
+ second "session description" to the first endpoint. Once this is
+ done, communication can proceed in both directions.
+
+ When the two endpoints are located on gateways that are managed by
+ the different call agents, these two call agents shall exchange
+ information through a call-agent to call-agent signalling protocol,
+ in order to synchronize the creation of the connection on the two
+ endpoints.
+
+
+
+
+Arango, et al. Informational [Page 17]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Once established, the connection parameters can be modified at any
+ time by a "modify connection" command. The call agent may for
+ example instruct the gateway to change the compression algorithm used
+ on a connection, or to modify the IP address and UDP port to which
+ data should be sent, if a connection is "redirected."
+
+ The call agent removes a connection by sending to the gateway a
+ "delete connection" command. The gateway may also, under some
+ circumstances, inform a gateway that a connection could not be
+ sustained.
+
+ The following diagram provides a view of the states of a connection,
+ as seen from the gateway:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 18]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Create connection
+ received
+ |
+ V
+ +-------------------+
+ |resource allocation|-(failed)-+
+ +-------------------+ |
+ | (connection refused)
+ (successful)
+ |
+ v
+ +----------->+
+ | |
+ | +-------------------+
+ | | remote session |
+ | | description |----------(yes)--------+
+ | | available ? | |
+ | +-------------------+ |
+ | | |
+ | (no) |
+ | | |
+ | +-----------+ +------+
+ | +--->| half open |------> Delete <-------| open |<----------+
+ | | | (wait) | Connection |(wait)| |
+ | | +-----------+ received +------+ |
+ | | | | | |
+ | | Modify Connection | Modify Connection |
+ | | received | received |
+ | | | | | |
+ | | +--------------------+ | +--------------------+ |
+ | | |assess modification | | |assess modification | |
+ | | +--------------------+ | +--------------------+ |
+ | | | | | | | |
+ | |(failed) (successful) | (failed) (successful) |
+ | | | | | | | |
+ | +<---+ | | +-------------+-------+
+ | | |
+ +<-------------------+ |
+ |
+ +-----------------+
+ | Free connection |
+ | resources. |
+ | Report. |
+ +-----------------+
+ |
+ V
+
+
+
+
+
+Arango, et al. Informational [Page 19]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1.3.1. Names of calls
+
+ One of the attributes of each connection is the "call identifier."
+
+ Calls are identified by unique identifiers, independent of the
+ underlying platforms or agents. These identifiers are created by the
+ Call Agent. They are treated in MGCP as unstructured octet strings.
+
+ Call identifiers are expected to be unique within the system, or at a
+ minimum, unique within the collection of Call Agents that control the
+ same gateways. When a Call Agent builds several connections that
+ pertain to the same call, either on the same gateway or in different
+ gateways, these connections that belong to the same call share the
+ same call-id. This identifier can then be used by accounting or
+ management procedures, which are outside the scope of MGCP.
+
+2.1.3.2. Names of connections
+
+ Connection identifiers are created by the gateway when it is
+ requested to create a connection. They identify the connection within
+ the context of an endpoint. They are treated in MGCP as unstructured
+ octet strings. The gateway should make sure that a proper waiting
+ period, at least 3 minutes, elapses between the end of a connection
+ that used this identifier and its use in a new connection for the
+ same endpoint. (Gateways may decide to use identifiers that are
+ unique within the context of the gateway.)
+
+2.1.3.3. Management of resources, attributes of connections
+
+ Many types of resources will be associated to a connection, such as
+ specific signal processing functions or packetization functions.
+ Generally, these resources fall in two categories:
+
+ 1) Externally visible resources, that affect the format of "the bits
+ on the network" and must be communicated to the second endpoint
+ involved in the connection.
+
+ 2) Internal resources, that determine which signal is being sent over
+ the connection and how the received signals are processed by the
+ endpoint.
+
+ The resources allocated to a connection, and more generally the
+ handling of the connection, are chosen by the gateway under
+ instructions from the call agent. The call agent will provide these
+ instructions by sending two set of parameters to the gateway:
+
+ 1) The local directives instruct the gateway on the choice of
+ resources that should be used for a connection,
+
+
+
+Arango, et al. Informational [Page 20]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 2) When available, the "session description" provided by the other
+ end of the connection.
+
+ The local directives specify such parameters as the mode of the
+ connection (e.g. send only, send-receive), preferred coding or
+ packetization methods, usage of echo cancellation or silence
+ suppression. (A detailed list can be found in the specification of
+ the LocalConnectionOptions parameter of the CreateConnection
+ command.) For each of these parameters, the call agent can either
+ specify a value, a range of value, or no value at all. This allow
+ various implementations to implement various level of control, from a
+ very tight control where the call agent specifies minute details of
+ the connection handling to a very loose control where the call agent
+ only specifies broad guidelines, such as the maximum bandwidth, and
+ let the gateway choose the detailed values.
+
+ Based on the value of the local directives, the gateway will
+ determine the resources allocated to the connection. When this is
+ possible, the gateway will choose values that are in line with the
+ remote session description - but there is no absolute requirement
+ that the parameters be exactly the same.
+
+ Once the resource have been allocated, the gateway will compose a
+ "session description" that describes the way it intends to receive
+ packets. Note that the session description may in some cases present
+ a range of values. For example, if the gateway is ready to accept
+ one of several compression algorithm, it can provide a list of these
+ accepted algorithms.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 21]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Local Directives
+ (from call agent 1)
+ |
+ V
+ +-------------+
+ | resources |
+ | allocation |
+ | (gateway 1) |
+ +-------------+
+ | |
+ V |
+ Local |
+ Parameters V
+ | Session
+ | Description Local Directives
+ | | (from call agent 2)
+ | +---> Transmission----+ |
+ | (CA to CA) | |
+ | V V
+ | +-------------+
+ | | resources |
+ | | allocation |
+ | | (gateway 2) |
+ | +-------------+
+ | | |
+ | | V
+ | | Local
+ | | Parameters
+ | Session
+ | Description
+ | +---- Transmission<---+
+ | | (CA to CA)
+ V V
+ +-------------+
+ | modification|
+ | (gateway 1) |
+ +-------------+
+ |
+ V
+ Local
+ Parameters
+
+ -- Information flow: local directives & session descriptions --
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 22]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1.3.4. Special case of local connections
+
+ Large gateways include a large number of endpoints which are often of
+ different types. In some networks, we may often have to set-up
+ connections between endpoints that are located within the same
+ gateway. Examples of such connections may be:
+
+ * Connecting a trunk line to a wiretap device,
+
+ * Connecting a call to an Interactive Voice-Response unit,
+
+ * Connecting a call to a Conferencing unit,
+
+ * Routing a call from on endpoint to another, something often
+ described as a "hairpin" connection.
+
+ Local connections are much simpler to establish than network
+ connections. In most cases, the connection will be established
+ through some local interconnecting device, such as for example a TDM
+ bus.
+
+ When two endpoints are managed by the same gateway, it is possible to
+ specify the connection in a single command that conveys the name of
+ the two endpoints that will be connected. The command is essentially
+ a "Create Connection" command which includes the name of the second
+ endpoint in lieu of the "remote session description."
+
+2.1.4. Names of Call Agents and other entities
+
+ The media gateway control protocol has been designed to allow the
+ implementation of redundant Call Agents, for enhanced network
+ reliability. This means that there is no fixed binding between
+ entities and hardware platforms or network interfaces.
+
+ Reliability can be improved by the following precautions:
+
+ * Entities such as endpoints or Call Agents are identified by their
+ domain name, not their network addresses. Several addresses can be
+ associated with a domain name. If a command or a response cannot
+ be forwarded to one of the network addresses, implementations
+ should retry the transmission using another address.
+
+ * Entities may move to another platform. The association between a
+ logical name (domain name) and the actual platform are kept in the
+ domain name service. Call Agents and Gateways should keep track of
+ the time-to-live of the record they read from the DNS. They should
+ query the DNS to refresh the information if the time to live has
+ expired.
+
+
+
+Arango, et al. Informational [Page 23]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ In addition to the indirection provided by the use of domain names
+ and the DNS, the concept of "notified entity" is central to
+ reliability and fail-over in MGCP. The "notified entity" for an
+ endpoint is the Call Agent currently controlling that endpoint. At
+ any point in time, an endpoint has one, and only one, "notified
+ entity" associated with it, and when the endpoint needs to send a
+ command to the Call Agent, it MUST send the command to the current
+ "notified entity" for which endpoint(s) the command pertains. Upon
+ startup, the "notified entity" MUST be set to a provisioned value.
+ Most commands sent by the Call Agent include the ability to
+ explicitly name the "notified entity" through the use of a
+ "NotifiedEntity" parameter. The "notified entity" will stay the same
+ until either a new "NotifiedEntity" parameter is received or the
+ endpoint reboots. If the "notified entity" for an endpoint is empty
+ or has not been set explicitly, the "notified entity" will then
+ default to the source address of the last connection handling command
+ or notification request received for the endpoint. Auditing will thus
+ not change the "notified entity."
+
+2.1.5. Digit maps
+
+ The Call Agent can ask the gateway to collect digits dialed by the
+ user. This facility is intended to be used with residential gateways
+ to collect the numbers that a user dials; it may also be used with
+ trunking gateways and access gateways alike, to collect the access
+ codes, credit card numbers and other numbers requested by call
+ control services.
+
+ An alternative procedure is for the gateway to notify the Call Agent
+ of the dialed digits, as soon as they are dialed. However, such a
+ procedure generates a large number of interactions. It is preferable
+ to accumulate the dialed numbers in a buffer, and to transmit them in
+ a single message.
+
+ The problem with this accumulation approach, however, is that it is
+ hard for the gateway to predict how many numbers it needs to
+ accumulate before transmission. For example, using the phone on our
+ desk, we can dial the following numbers:
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 24]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ _______________________________________________________
+ | 0 | Local operator |
+ | 00 | Long distance operator |
+ | xxxx | Local extension number |
+ | 8xxxxxxx | Local number |
+ | #xxxxxxx | Shortcut to local number at|
+ | | other corporate sites |
+ | *xx | Star services |
+ | 91xxxxxxxxxx | Long distance number |
+ | 9011 + up to 15 digits| International number |
+ |________________________|_____________________________|
+
+ The solution to this problem is to load the gateway with a digit map
+ that correspond to the dial plan. This digit map is expressed using a
+ syntax derived from the Unix system command, egrep. For example, the
+ dial plan described above results in the following digit map:
+
+ (0T| 00T|[1-7]xxx|8xxxxxxx|#xxxxxxx|*xx|91xxxxxxxxxx|9011x.T)
+
+ The formal syntax of the digit map is described by the DigitMap rule
+ in the formal syntax description of the protocol (section 3.4). A
+ Digit-Map, according to this syntax, is defined either by a "string"
+ or by a list of strings. Each string in the list is an alternative
+ numbering scheme, specified either as a set of digits or timers, or
+ as regular expression. A gateway that detects digits, letters or
+ timers will:
+
+ 1) Add the event parameter code as a token to the end of an internal
+ state variable called the "current dial string"
+
+ 2) Apply the current dial string to the digit map table, attempting a
+ match to each regular expression in the Digit Map in lexical order
+
+ 3) If the result is under-qualified (partially matches at least one
+ entry in the digit map), do nothing further.
+
+ If the result matches, or is over-qualified (i.e. no further digits
+ could possibly produce a match), send the current digit string to the
+ Call Agent. A match, in this specification, can be either a "perfect
+ match," exactly matching one of the specified alternatives, or an
+ impossible match, which occur when the dial string does not match any
+ of the alternative. Unexpected timers, for example, can cause
+ "impossible matches." Both perfect matches and impossible matches
+ trigger notification of the accumulated digits.
+
+ Digit maps are provided to the gateway by the Call Agent, whenever
+ the Call Agent instructs the gateway to listen for digits.
+
+
+
+
+Arango, et al. Informational [Page 25]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.1.6. Names of events
+
+ The concept of events and signals is central to MGCP. A Call Agent
+ may ask to be notified about certain events occurring in an endpoint,
+ e.g. off-hook events, and a call agent may request certain signals
+ to be applied to an endpoint, e.g. dial-tone.
+
+ Events and signals are grouped in packages within which they share
+ the same namespace which we will refer to as event names in the
+ following. Packages are groupings of the events and signals
+ supported by a particular type of endpoint. For instance, one package
+ may support a certain group of events and signals for analog access
+ lines, and another package may support another group of events and
+ signals for video lines. One or more packages may exist for a given
+ endpoint-type.
+
+ Event names are case insensitive and are composed of two logical
+ parts, a package name and an event name. Both names are strings of
+ letters, hyphens and digits, with the restriction that hyphens shall
+ never be the first or last characters in a name. Package or event
+ names are not case sensitive - values such as "hu", "Hu", "HU" or
+ "hU" should be considered equal.
+
+ Examples of package names are "D" (DTMF), "M" (MF), "T" (Trunk) or
+ "L" (Line). Examples of event names can be "hu" (off hook or "hang-
+ up" transition), "hf" (flash hook) or "0" (the digit zero).
+
+ In textual representations, the package name, when present, is
+ separated from the event name by a slash ("/"). The package name is
+ in fact optional. Each endpoint-type has a default package associated
+ with it, and if the package name is excluded from the event name, the
+ default package name for that endpoint-type is assumed. For example,
+ for an analog access line, the following two event names are equal:
+
+ l/dl dial-tone in the line package for an analog access line.
+
+ dl dial-tone in the line package (default) for an analog access
+ line.
+
+ This document defines a basic set of package names and event names.
+ Additional package names and event names can be registered with the
+ IANA. A package definition shall define the name of the package, and
+ the definition of each event belonging to the package. The event
+ definition shall include the precise name of the event (i.e., the
+ code used in MGCP), a plain text definition of the event, and, when
+ appropriate, the precise definition of the corresponding signals, for
+ example the exact frequencies of audio signal such as dial tones or
+ DTMF tones.
+
+
+
+Arango, et al. Informational [Page 26]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ In addition, implementers can gain experience by using experimental
+ packages. The names of experimental packages must start with the two
+ characters "x-"; the IANA shall not register package names that start
+ with these characters.
+
+ Digits, or letters, are supported in many packages, notably "DTMF"
+ and "MF". Digits and letters are defined by the rules "Digit" and
+ "Letter" in the definition of digit maps. This definition refers to
+ the digits (0 to 9), to the asterisk or star ("*") and orthotrope,
+ number or pound sign ("#"), and to the letters "A", "B", "C" and "D",
+ as well as the timer indication "T". These letters can be combined in
+ "digit string" that represent the keys that a user punched on a dial.
+ In addition, the letter "X" can be used to represent all digits, and
+ the sign "$" can be used in wildcard notations. The need to easily
+ express the digit strings has a consequence on the form of event
+ names:
+
+ An event name that does not denote a digit should always contain at
+ least one character that is neither a digit, nor one of the letters
+ A, B, C, D, T or X. (Such names should not contain the special
+ signs "*", "#", "/" or "$".)
+
+ A Call Agent may often have to ask a gateway to detect a group of
+ events. Two conventions can be used to denote such groups:
+
+ * The wildcard convention can be used to detect any event belonging
+ to a package, or a given event in many packages, or event any
+ event in any package supported by the gateway.
+
+ * The regular expression Range notation can be used to detect a
+ range of digits.
+
+ The star sign (*) can be used as a wildcard instead of a package
+ name, and the keyword "all" can be used as a wildcard instead of an
+ event name:
+
+ A name such as "foo/all" denotes all events in package "foo"
+ A name such as "*/bar" denotes the event "bar" in any package
+ supported by the gateway
+ The names "*" or "*/all" denote all events supported by the
+ gate way.
+
+ The call agent can ask a gateway to detect a set of digits or letters
+ either by individually describing those letters, or by using the
+ "range" notation defined in the syntax of digit strings. For example,
+ the call agent can:
+
+
+
+
+
+Arango, et al. Informational [Page 27]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Use the letter "x" to denote "any letter or digit."
+ Use the notation "[0-9#]" to denote the digits 0 to 9 and the pound
+ sign.
+
+ In some cases, Call Agents will request the gateway to generate or
+ detect events on connections rather than on the end point itself.
+ For example, gateways may be asked to provide a ringback tone on a
+ connection. When an event shall be applied on a connection, the name
+ of the connection is added to the name of the event, using an "at"
+ sign (@) as a delimiter, as in:
+
+ G/rt@0A3F58
+
+ The wildcard character "*" (star) can be used to denote "all
+ connections". When this convention is used, the gateway will generate
+ or detect the event on all the connections that are connected to the
+ endpoint. An example of this convention could be:
+
+ R/qa@*
+
+ The wildcard character "$" can be used to denote "the current
+ connection." It should only be used by the call agent, when the event
+ notification request is "encapsulated" within a command creation or
+ modification command. When this convention is used, the gateway will
+ generate or detect the event on the connection that is currently
+ being created or modified. An example of this convention is:
+
+ G/rt@$
+
+ The connection id, or a wildcard replacement, can be used in
+ conjunction with the "all packages" and "all events" conventions.
+ For example, the notation:
+
+ */all@*
+
+ can be used to designate all events on all connections.
+
+ Events and signals are described in packages. The package description
+ must provide, for each events, the following informations:
+
+ * The description of the event and its purpose, which should mean
+ the actual signal that is generated by the client (i.e., xx ms FSK
+ tone) as well as the resulting user observed result (i.e., MW
+ light on/off).
+
+ * The detailed characteristics of the event, such as for example
+ frequencies and amplitude of audio signals, modulations and
+ repetitions,
+
+
+
+Arango, et al. Informational [Page 28]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * The typical and maximum duration of the event.
+
+ Signals are divided into different types depending on their behavior:
+
+ * On/off (OO) Once applied, these signals last forever until they
+ are turned off. This may happen either as the result of an event
+ or a new SignalRequests (see later).
+
+ * Time-out (TO) Once applied, these signals last until they are
+ either turned off (by an event or SignalRequests) or a signal
+ specific period of time has elapsed. Depending on package
+ specifications, a signal that times out may generate an "operation
+ complete" event.
+
+ * Brief (BR) The duration of these signals is so short, that they
+ stop on their own. If an event occurs the signal will not stop,
+ however if a new SignalRequests is applied, the signal will stop.
+ (Note: this point should be debated. One could make a case that
+ events such as strings of DTMF digits should in fact be allowed to
+ complete.)
+
+ TO signals are normally used to alert the endpoints' users, to
+ signal them that they are expected to perform a specific action,
+ such as hang down the phone (ringing). Transmission of these
+ signals should typically be interrupted as soon as the first of
+ the requested events has been produced.
+
+ Package descriptions should describe, for all signals, their type
+ (OO, TO, BR). They should also describe the maximum duration of
+ the TO signals.
+
+2.2. Usage of SDP
+
+ The Call Agent uses the MGCP to provision the gateways with the
+ description of connection parameters such as IP addresses, UDP port
+ and RTP profiles. These descriptions will follow the conventions
+ delineated in the Session Description Protocol which is now an IETF
+ proposed standard, documented in RFC 2327.
+
+ SDP allows for description of multimedia conferences. This version
+ limits SDP usage to the setting of audio circuits and data access
+ circuits. The initial session descriptions contain the description
+ of exactly one media, of type "audio" for audio connections, "nas"
+ for data access.
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 29]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.3. Gateway Control Commands
+
+ This section describes the commands of the MGCP. The service consists
+ of connection handling and endpoint handling commands. There are nine
+ commands in the protocol:
+
+ * The Call Agent can issue an EndpointConfiguration command to a
+ gateway, instructing the gateway about the coding characteristics
+ expected by the "line-side" of the endpoint.
+
+ * The Call Agent can issue a NotificationRequest command to a
+ gateway, instructing the gateway to watch for specific events such
+ as hook actions or DTMF tones on a specified endpoint .
+
+ * The gateway will then use the Notify command to inform the Call
+ Agent when the requested events occur.
+
+ * The Call Agent can use the CreateConnection command to create a
+ connection that terminates in an "endpoint" inside the gateway.
+
+ * The Call Agent can use the ModifyConnection command to change the
+ parameters associated to a previously established connection.
+
+ * The Call Agent can use the DeleteConnection command to delete an
+ existing connection. The DeleteConnection command may also be used
+ by a gateway to indicate that a connection can no longer be
+ sustained.
+
+ * The Call Agent can use the AuditEndpoint and AuditConnection
+ commands to audit the status of an "endpoint" and any connections
+ associated with it. Network management beyond the capabilities
+ provided by these commands are generally desirable, e.g.
+ information about the status of the gateway. Such capabilities are
+ expected to be supported by the use of the Simple Network
+ Management Protocol (SNMP) and definition of a MIB which is
+ outside the scope of this specification.
+
+ * The Gateway can use the RestartInProgress command to notify the
+ Call Agent that the gateway, or a group of endpoints managed by
+ the gateway, is being taken out of service or is being placed back
+ in service.
+
+ These services allow a controller (normally, the Call Agent) to
+ instruct a gateway on the creation of connections that terminate in
+ an "endpoint" attached to the gateway, and to be informed about
+ events occurring at the endpoint. An endpoint may be for example:
+
+
+
+
+
+Arango, et al. Informational [Page 30]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * A specific trunk circuit, within a trunk group terminating in a
+ gateway,
+
+ * A specific announcement handled by an announcement server.
+
+ Connections are grouped into "calls". Several connections, that may
+ or may not belong to the same call, can terminate in the same
+ endpoint . Each connection is qualified by a "mode" parameter, which
+ can be set to "send only" (sendonly), "receive only" (recvonly),
+ "send/receive" (sendrecv), "conference" (confrnce), "data",
+ "inactive" (inactive), "loopback", "continuity test" (conttest),
+ "network loop back" (netwloop) or "network continuity test"
+ (netwtest).
+
+ The handling of the audio signals received on these connections is
+ determined by the mode parameters:
+
+ * Audio signals received in data packets through connections in
+ "receive", "conference" or "send/receive" mode are mixed and sent
+ to the endpoint.
+
+ * Audio signals originating from the endpoint are transmitted over
+ all the connections whose mode is "send", "conference" or
+ "send/receive."
+
+ * In addition to being sent to the endpoint, audio signals received
+ in data packets through connections in "conference" mode are
+ replicated to all the other connections whose mode is
+ "conference."
+
+ The "loopback" and "continuity test" modes are used during
+ maintenance and continuity test operations. There are two flavors of
+ continuity test, one specified by ITU and one used in the US. In the
+ first case, the test is a loopback test. The originating switch will
+ send a tone (the go tone) on the bearer circuit and expect the
+ terminating switch to loopback the circuit. If the originating switch
+ sees the same tone returned (the return tone), the COT has passed. If
+ not, the COT has failed. In the second case, the go and return tones
+ are different. The originating switch sends a certain go tone. The
+ terminating switch detects the go tone, it asserts a different return
+ tone in the backwards direction. When the originating switch detects
+ the return tone, the COT is passed. If the originating switch never
+ detects the return tone, the COT has failed.
+
+ If the mode is set to "loopback", the gateway is expected to return
+ the incoming signal from the endpoint back into that same endpoint.
+ This procedure will be used, typically, for testing the continuity of
+ trunk circuits according to the ITU specifications.
+
+
+
+Arango, et al. Informational [Page 31]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ If the mode is set to "continuity test", the gateway is informed that
+ the other end of the circuit has initiated a continuity test
+ procedure according to the GR specification. The gateway will place
+ the circuit in the transponder mode required for dual-tone continuity
+ tests.
+
+ If the mode is set to "network loopback", the audio signals received
+ from the connection will be echoed back on the same connection.
+
+ If the mode is set to "network continuity test", the gateway will
+ process the packets received from the connection according to the
+ transponder mode required for dual-tone continuity test, and send the
+ processed signal back on the connection.
+
+2.3.1. EndpointConfiguration
+
+ The EndpointConfiguration commands are used to specify the encoding
+ of the signals that will be received by the endpoint. For example,
+ in certain international telephony configurations, some calls will
+ carry mu-law encoded audio signals, while other will use A-law. The
+ Call Agent will use the EndpointConfiguration command to pass this
+ information to the gateway. The configuration may vary on a call by
+ call basis, but can also be used in the absence of any connection.
+
+ ReturnCode
+ <-- EndpointConfiguration( EndpointId,
+ BearerInformation)
+
+ EndpointId is the name for the endpoint in the gateway where
+ EndpointConfiguration executes, as defined in section 2.1.1. The
+ "any of" wildcard convention shall not be used. If the "all of"
+ wildcard convention is used, the command applies to all the endpoint
+ whose name matches the wildcard.
+
+ BearerInformation is a parameter defining the coding of the data
+ received from the line side. These information is encoded as a list
+ of sub-parameters. The only sub-parameter defined in this version of
+ the specification is the encoding method, whose values can be set to
+ "A-law" and "mu-law".
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 32]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.3.2. NotificationRequest
+
+ The NotificationRequest commands are used to request the gateway to
+ send notifications upon the occurrence of specified events in an
+ endpoint. For example, a notification may be requested for when a
+ gateway detects that an endpoint is receiving tones associated with
+ fax communication. The entity receiving this notification may decide
+ to use a different type of encoding method in the connections bound
+ to this endpoint.
+
+ ReturnCode
+ <-- NotificationRequest( EndpointId,
+ [NotifiedEntity,]
+ [RequestedEvents,]
+ RequestIdentifier,
+ [DigitMap,]
+ [SignalRequests,]
+ [QuarantineHandling,]
+ [DetectEvents,]
+ [encapsulated EndpointConfiguration])
+
+ EndpointId is the name for the endpoint in the gateway where
+ NotificationRequest executes, as defined in section 2.1.1.
+
+ NotifiedEntity is an optional parameter that specifies where the
+ notifications should be sent. When this parameter is absent, the
+ notifications should be sent to the originator of the
+ NotificationRequest.
+
+ RequestIdentifier is used to correlate this request with the
+ notifications that it triggers.
+
+ RequestedEvents is a list of events that the gateway is requested to
+ detect and report. Such events include, for example, fax tones,
+ continuity tones, or on-hook transition. To each event is associated
+ an action, which can be:
+
+ * Notify the event immediately, together with the accumulated list
+ of observed events,
+
+ * Swap audio,
+
+ * Accumulate the event in an event buffer, but don't notify yet,
+
+ * Accumulate according to Digit Map,
+
+ * Keep Signal(s) active,
+
+
+
+
+Arango, et al. Informational [Page 33]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * process the Embedded Notification Request,
+
+ * Ignore the event.
+
+ Some actions can be combined. In particular:
+
+ * The "swap audio" action can be combined with "Notify",
+ "Accumulate" and "Ignore."
+
+ * The "keep signal active" action can be combined with "Notify",
+ "Accumulate", "Accumulate according to Digit Map", "Ignore" and
+ "Embedded Notification Request."
+
+ * The "Embedded Notification Request" can be combined with
+ "Accumulate" and with "Keep signals active." It can also be
+ combined with Notify, if the gateway is allowed to issue several
+ Notify commands in response to a single Notification request.
+
+ In addition to the requestedEvents parameter specified in the
+ command, some profiles of MGCP have introduced the concept of
+ "persistent events." According to such profiles, the persistent event
+ list is configured in the endpoint, by means outside the scope of
+ MGCP. The basic MGCP specification does not specify any persistent
+ event.
+
+ If a persistent event is not included in the list of RequestedEvents,
+ and the event occurs, the event will be detected anyway, and
+ processed like all other events, as if the persistent event had been
+ requested with a Notify action. Thus, informally, persistent events
+ can be viewed as always being implicitly included in the list of
+ RequestedEvents with an action to Notify, although no glare
+ detection, etc., will be performed.
+
+ Non-persistent events are those events explicitly included in the
+ RequestedEvents list. The (possibly empty) list of requested events
+ completely replaces the previous list of requested events. In
+ addition to the persistent events, only the events specified in the
+ requested events list will be detected by the endpoint. If a
+ persistent event is included in the RequestedEvents list, the action
+ specified will then replace the default action associated with the
+ event for the life of the RequestedEvents list, after which the
+ default action is restored. For example, if "Ignore off-hook" was
+ specified, and a new request without any off-hook instructions were
+ received, the default "Notify off-hook" operation then would be
+ restored. A given event MUST NOT appear more than once in a
+ RequestedEvents.
+
+
+
+
+
+Arango, et al. Informational [Page 34]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The gateway will detect the union of the persistent events and the
+ requested events. If an event is not specified in either list, it
+ will be ignored.
+
+ The Swap Audio action can be used when a gateway handles more than
+ one active connection on an endpoint. This will be the case for
+ three-way calling, call waiting, and possibly other feature
+ scenarios. In order to avoid the round-trip to the Call Agent when
+ just changing which connection is attached to the audio functions of
+ the endpoint, the NotificationRequest can map an event (usually hook
+ flash, but could be some other event) to a local function swap audio,
+ which selects the "next" connection in a round robin fashion. If
+ there is only one connection, this action is effectively a no-op.
+
+ If signal(s) are desired to start when an event being looked for
+ occurs, the "Embedded NotificationRequest" action can be used. The
+ embedded NotificationRequest may include a new list of
+ RequestedEvents, SignalRequests and a new digit map as well. The
+ semantics of the embedded NotificationRequest is as if a new
+ NotificationRequest was just received with the same NotifiedEntity,
+ and RequestIdentifier. When the "Embedded NotificationRequest" is
+ activated, the "current dial string" will be cleared; the list of
+ observed events and the quarantine buffer will be unaffected.
+
+ MGCP implementations shall be able to support at least one level of
+ embedding. An embedded NotificationRequest that respects this
+ limitation shall not contain another Embedded NotificationRequest.
+
+ DigitMap is an optional parameter that allows the Call Agent to
+ provision the gateways with a digit map according to which digits
+ will be accumulated. If this optional parameter is absent, the
+ previously defined value is retained. This parameter must be defined,
+ either explicitly or through a previous command, if the
+ RequestedEvent parameters contain an request to "accumulate according
+ to the digit map." The collection of these digits will result in a
+ digit string. The digit string is initialized to a null string upon
+ reception of the NotificationRequest, so that a subsequent
+ notification only returns the digits that were collected after this
+ request. Digits that were accumulated according to the digit map are
+ reported as any other accumulated event, in the order in which they
+ occur. It is therefore possible that other events be accumulated may
+ be found in between the list of digits.
+
+ SignalRequests is a parameter that contains the set of signals that
+ the gateway is asked to apply to the endpoint, such as, for example
+ ringing, or continuity tones. Signals are identified by their name,
+ which is an event name, and may be qualified by parameters.
+
+
+
+
+Arango, et al. Informational [Page 35]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The action triggered by the SignalRequests is synchronized with the
+ collection of events specified in the RequestedEvents parameter. For
+ example, if the NotificationRequest mandates "ringing" and the event
+ request ask to look for an "off-hook" event, the ringing shall stop
+ as soon as the gateway detect an off hook event. The formal
+ definition is that the generation of all "Time Out" signals shall
+ stop as soon as one of the requested events is detected, unless the
+ "Keep signals active" action is associated to the specified event.
+
+ The specific definition of actions that are requested via these
+ SignalRequests, such as the duration of and frequency of a DTMF
+ digit, is out side the scope of MGCP. This definition may vary from
+ location to location and hence from gateway to gateway.
+
+ The RequestedEvents and SignalRequests refer to the same event
+ definitions. In one case, the gateway is asked to detect the
+ occurrence of the event, and in the other case it is asked to
+ generate it. The specific events and signals that a given endpoint
+ can detect or perform are determined by the list of event packages
+ that are supported by that end point. Each package specifies a list
+ of events and actions that can be detected or performed. A gateway
+ that is requested to detect or perform an event belonging to a
+ package that is not supported by the specified endpoint shall return
+ an error. When the event name is not qualified by a package name, the
+ default package name for the end point is assumed. If the event name
+ is not registered in this default package, the gateway shall return
+ an error.
+
+ The Call Agent can send a NotificationRequest whose requested signal
+ list is empty. It will do so for example when tone generation should
+ stop.
+
+ The optional QuarantineHandling parameter specifies the handling of
+ "quarantine" events, i.e. events that have been detected by the
+ gateway before the arrival of this NotificationRequest command, but
+ have not yet been notified to the Call Agent. The parameter provides
+ a set of handling options:
+
+ * whether the quarantined events should be processed or discarded
+ (the default is to process them.)
+
+ * whether the gateway is expected to generate at most one
+ notification (step by step), or multiple notifications (loop), in
+ response to this request (the default is exactly one.)
+
+ When the parameter is absent, the default value is assumed.
+
+
+
+
+
+Arango, et al. Informational [Page 36]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ We should note that the quarantine-handling parameter also governs
+ the handling of events that were detected but not yet notified when
+ the command is received.
+
+ DetectEvents is an optional parameter that specifies a list of events
+ that the gateway is requested to detect during the quarantine period.
+ When this parameter is absent, the events that should be detected in
+ the quarantine period are those listed in the last received
+ DetectEvents list. In addition, the gateway should also detect the
+ events specified in the request list, including those for which the
+ "ignore" action is specified.
+
+ Some events and signals, such as the in-line ringback or the quality
+ alert, are performed or detected on connections terminating in the
+ end point rather than on the endpoint itself. The structure of the
+ event names allow the Call Agent to specify the connection (or
+ connections) on which the events should be performed or detected.
+
+ The command may carry an encapsulated EndpointConfiguration command,
+ that will apply to the same endpoint. When this command is present,
+ the parameters of the EndpointConfiguration command are inserted
+ after the normal parameters of the NotificationRequest, with the
+ exception of the EndpointId, which is not replicated.
+
+ The encapsulated EndpointConfiguration command shares the fate of the
+ NotificationRequest command. If the NotificationRequest is rejected,
+ the EndpointConfiguration is not executed.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary. .NH 3 Notifications
+
+ Notifications are sent via the Notify command and are sent by the
+ gateway when the observed events occur.
+
+ ReturnCode
+ <-- Notify( EndpointId,
+ [NotifiedEntity,]
+ RequestIdentifier,
+ ObservedEvents)
+
+ EndpointId is the name for the endpoint in the gateway which is
+ issuing the Notify command, as defined in section 2.1.1. The
+ identifier should be a fully qualified endpoint identifier, including
+ the domain name of the gateway. The local part of the name shall not
+ use the wildcard convention.
+
+
+
+
+
+Arango, et al. Informational [Page 37]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ NotifiedEntity is an optional parameter that identifies the entity to
+ which the notifications is sent. This parameter is equal to the last
+ received value of the NotifiedEntity parameter. The parameter is
+ absent if there was no such parameter in the triggering request. The
+ notification is sent to the "current notified entity" or, if no such
+ entity was ever specified, to the address from which the request was
+ received.
+
+ RequestIdentifier is parameter that repeats the RequestIdentifier
+ parameter of the NotificationRequest that triggered this
+ notification. It is used to correlate this notification with the
+ request that triggered it.
+
+ ObservedEvents is a list of events that the gateway detected. A
+ single notification may report a list of events that will be reported
+ in the order in which they were detected. The list may only contain
+ the identification of events that were requested in the
+ RequestedEvents parameter of the triggering NotificationRequest. It
+ will contain the events that were either accumulated (but not
+ notified) or treated according to digit map (but no match yet), and
+ the final event that triggered the detection or provided a final
+ match in the digit map.
+
+ ReturnCode is a parameter returned by the call agent. It indicates
+ the outcome of the command and consists of an integer number
+ optionally followed by commentary.
+
+2.3.3. CreateConnection
+
+ This command is used to create a connection between two endpoints.
+
+ ReturnCode,
+ ConnectionId,
+ [SpecificEndPointId,]
+ [LocalConnectionDescriptor,]
+ [SecondEndPointId,]
+ [SecondConnectionId]
+ <--- CreateConnection(CallId,
+ EndpointId,
+ [NotifiedEntity,]
+ [LocalConnectionOptions,]
+ Mode,
+ [{RemoteConnectionDescriptor |
+ SecondEndpointId}, ]
+ [Encapsulated NotificationRequest,]
+ [Encapsulated EndpointConfiguration])
+
+
+
+
+
+Arango, et al. Informational [Page 38]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ A connection is defined by its endpoints. The input parameters in
+ CreateConnection provide the data necessary to build a gateway's
+ "view" of a connection.
+
+ CallId is a globally unique parameter that identifies the call (or
+ session) to which this connection belongs. Connections that belong to
+ the same call share the same call-id. The call-id can be used to
+ identify calls for reporting and accounting purposes. It does not
+ affect the handling of connections by the gateway.
+
+ EndpointId is the identifier for the connection endpoint in the
+ gateway where CreateConnection executes. The EndpointId can be
+ fully-specified by assigning a value to the parameter EndpointId in
+ the function call or it may be under-specified by using the "anyone"
+ wildcard convention. If the endpoint is underspecified, the endpoint
+ identifier will be assigned by the gateway and its complete value
+ returned in the SpecificEndPointId parameter of the response.
+
+ The NotifiedEntity is an optional parameter that specifies where the
+ Notify or DeleteConnection commands should be sent. If the parameter
+ is absent, the Notify or DeleteConnection commands should be sent to
+ the last received Notified Entity, or to originator of the
+ CreateConnection command if no Notified Entity was ever received for
+ the end point.
+
+ LocalConnectionOptions is a parameter used by the Call Agent to
+ direct the handling of the connection by the gateway. The fields
+ contained in LocalConnectionOptions are the following:
+
+ * Encoding Method,
+
+ * Packetization period,
+
+ * Bandwidth,
+
+ * Type of Service,
+
+ * Usage of echo cancellation,
+
+ * Usage of silence suppression or voice activity detection,
+
+ * Usage of signal level adaptation and noise level reduction, or
+ "gain control."
+
+ * Usage of reservation service,
+
+ * Usage of RTP security,
+
+
+
+
+Arango, et al. Informational [Page 39]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * Type of network used to carry the connection.
+
+ This set of field can be completed by vendor specific optional or
+ mandatory extensions. The encoding of the first three fields, when
+ they are present, will be compatible with the SDP and RTP profiles:
+
+ * The encoding method shall be specified by using one or several
+ valid encoding names, as defined in the RTP AV Profile or
+ registered with the IANA.
+
+ * The packetization period is encoded as either the length of time
+ in milliseconds represented by the media in a packet, as specified
+ in the "ptime" parameter of SDP, or as a range value, specifying
+ both the minimum and maximum acceptable packetization periods.
+
+ * The bandwidth is encoded as either a single value or a range,
+ expressed as an integer number of kilobit per seconds.
+
+ For each of the first three fields, the Call Agent has three options:
+
+ * It may state exactly one value, which the gateway will then use
+ for the connection,
+
+ * It may provide a loose specification, such as a list of allowed
+ encoding methods or a range of packetization periods,
+
+ * It may simply provide a bandwidth indication, leaving the choice
+ of encoding method and packetization period to the gateway.
+
+ The bandwidth specification shall not contradict the specification of
+ encoding methods and packetization period. If an encoding method is
+ specified, then the gateway is authorized to use it, even if it
+ results in the usage of a larger bandwidth than specified.
+
+ The LocalConnectionOptions parameter may be absent in the case of a
+ data call.
+
+ The Type of Service specifies the class of service that will be used
+ for the connection. When the connection is transmitted over an IP
+ network, the parameters encodes the 8-bit type of service value
+ parameter of the IP header. When the Type of Service is not
+ specified, the gateway shall use a default or configured value.
+
+ The gateways can be instructed to perform a reservation, for example
+ using RSVP, on a given connection. When a reservation is needed, the
+ call agent will specify the reservation profile that should be used,
+ which is either "controlled load" or "guaranteed service." The
+
+
+
+
+Arango, et al. Informational [Page 40]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ absence of reservation can be indicated by asking for the "best
+ effort" service, which is the default value of this parameter. When
+ reservation has been asked on a connection, the gateway will:
+
+ * start emitting RSVP "PATH" messages if the connection is in
+ "send-only", "send-receive", "conference", "network loop back" or
+ "network continuity test" mode (if a remote connection descriptor
+ has been received,)
+
+ * start emitting RSVP "RESV" messages as soon as it receives "PATH"
+ messages if the connection is in "receive-only", "send-receive",
+ "conference", "network loop back" or "network continuity test"
+ mode.
+
+ The RSVP filters will be deduced from the characteristics of the
+ connection. The RSVP resource profiles will be deduced from the
+ connection's bandwidth and packetization period.
+
+ By default, the telephony gateways always perform echo cancellation.
+ However, it is necessary, for some calls, to turn off these
+ operations. The echo cancellation parameter can have two values,
+ "on" (when the echo cancellation is requested) and "off" (when it is
+ turned off.)
+
+ The telephony gateways may perform gain control, in order to adapt
+ the level of the signal. However, it is necessary, for example for
+ modem calls, to turn off this function. The gain control parameter
+ may either be specified as "automatic", or as an explicit number of
+ decibels of gain. The default is to not perform gain control, which
+ is equivalent to specifying a gain of 0 decibels.
+
+ The telephony gateways may perform voice activity detection, and
+ avoid sending packets during periods of silence. However, it is
+ necessary, for example for modem calls, to turn off this detection.
+ The silence suppression parameter can have two values, "on" (when the
+ detection is requested) and "off" (when it is turned off.) The
+ default is "off."
+
+ The Call agent can request the gateway to enable encryption of the
+ audio Packets. It does so by providing an key specification, as
+ specified in RFC 2327. By default, encryption is not used.
+
+ The Call Agent may instruct the gateway to prepare the connection on
+ a specified type of network. The type of network is encoded as in
+ the "connection-field" parameter of the SDP standard. Possible
+ values are IN (Internet), ATM and LOCAL. The parameter is optional;
+ if absent, the network is determined by the type of gateway.
+
+
+
+
+Arango, et al. Informational [Page 41]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ RemoteConnectionDescriptor is the connection descriptor for the
+ remote side of a connection, on the other side of the IP network. It
+ includes the same fields as in the LocalConnectionDescriptor, i.e.
+ the fields that describe a session according to the SDP standard.
+ This parameter may have a null value when the information for the
+ remote end is not known yet. This occurs because the entity that
+ builds a connection starts by sending a CreateConnection to one of
+ the two gateways involved in it. For the first CreateConnection
+ issued, there is no information available about the other side of the
+ connection. This information may be provided later via a
+ ModifyConnection call. In the case of data connections (mode=data),
+ this parameter describes the characteristics of the data connection.
+
+ The SecondEndpointId can be used instead of the
+ RemoteConnectionDescriptor to establish a connection between two
+ endpoints located on the same gateway. The connection is by
+ definition a local connection. The SecondEndpointId can be fully-
+ specified by assigning a value to the parameter SecondEndpointId in
+ the function call or it may be under-specified by using the "anyone"
+ wildcard convention. If the secondendpoint is underspecified, the
+ second endpoint identifier will be assigned by the gateway and its
+ complete value returned in the SecondEndPointId parameter of the
+ response.
+
+ Mode indicates the mode of operation for this side of the connection.
+ The mode are "send", "receive", "send/receive", "conference", "data",
+ "inactive", "loopback", "continuity test", "network loop back" or
+ "network continuity test." The expected handling of these modes is
+ specified in the introduction of the "Gateway Handling Function"
+ section. Some end points may not be capable of supporting all modes.
+ If the command specifies a mode that the endpoint cannot support, and
+ error shall be returned.
+
+ The gateway returns a ConnectionId, that uniquely identifies the
+ connection within one endpoint, and a LocalConnectionDescriptor,
+ which is a session description that contains information about
+ addresses and RTP ports, as defined in SDP. The
+ LocalConnectionDescriptor is not returned in the case of data
+ connections. The SpecificEndPointId is an optional parameter that
+ identifies the responding endpoint. It can be used when the
+ EndpointId argument referred to a "any of" wildcard name. When a
+ SpecificEndPointId is returned, the Call Agent should use it as the
+ EndpointId value is successive commands referring to this call.
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 42]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ When a SecondEndpointId is specified, the command really creates two
+ connections that can be manipulated separately through
+ ModifyConnection and DeleteConnection commands. The response to the
+ creation provides a SecondConnectionId parameter that identifies the
+ second connection.
+
+ After receiving a "CreateConnection" request that did not include a
+ RemoteConnectionDescriptor parameter, a gateway is in an ambiguous
+ situation. Because it has exported a LocalConnectionDescriptor
+ parameter, it can potentially receive packets. Because it has not yet
+ received the RemoteConnectionDescriptor parameter of the other
+ gateway, it does not know whether the packets that it receives have
+ been authorized by the Call Agent. It must thus navigate between two
+ risks, i.e. clipping some important announcements or listening to
+ insane data. The behavior of the gateway is determined by the value
+ of the Mode parameter:
+
+ * If the mode was set to ReceiveOnly, the gateway should accept the
+ voice signals and transmit them through the endpoint.
+
+ * If the mode was set to Inactive, Loopback, Continuity Test, the
+ gateway should refuse the voice signals.
+
+ * If the mode was set to Network Loopback or Network Continuity
+ Test, the gateway should perform the expected echo or Response.
+
+ Note that the mode values SendReceive, Conference, Data and SendOnly
+ don't make sense in this situation. They should be treated as errors,
+ and the command should be rejected (Error code 517).
+
+ The command may optionally contain an encapsulated Notification
+ Request command, in which case a RequestIdentifier parameter will be
+ present, as well as, optionally, the RequestedEvents DigitMap,
+ SignalRequests, QuarantineHandling and DetectEvents parameters. The
+ encapsulated NotificationRequest is executed simultaneously with the
+ creation of the connection. For example, when the Call Agent wants to
+ initiate a call to an residential gateway, it should:
+
+ * ask the residential gateway to prepare a connection, in order to
+ be sure that the user can start speaking as soon as the phone goes
+ off hook,
+
+ * ask the residential gateway to start ringing,
+
+ * ask the residential gateway to notify the Call Agent when the
+ phone goes off-hook.
+
+
+
+
+
+Arango, et al. Informational [Page 43]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ This can be accomplished in a single CreateConnection command, by
+ also transmitting the RequestedEvent parameters for the off hook
+ event, and the SignalRequest parameter for the ringing signal.
+
+ When these parameters are present, the creation and the
+ NotificationRequests should be synchronized, which means that
+ bothshould be accepted, or both refused. In our example, the
+ CreateConnection may be refused if the gateway does not have
+ sufficient resources, or cannot get adequate resources from the local
+ network access, and the off-hook Notification-Request can be refused
+ in the glare condition, if the user is already off-hook. In this
+ example, the phone should not ring if the connection cannot be
+ established, and the connection should not be established if the user
+ is already off hook.
+
+ The NotifiedEntity parameter, if present, applies to both the
+ CreateConnection and the NotificationRequest command. It defines the
+ new "notified entity" for the endpoint.
+
+ The command may carry an encapsulated EndpointConfiguration command,
+ that will apply to the same endpoint. When this command is present,
+ the parameters of the EndpointConfiguration command are inserted
+ after the normal parameters of the CreateConnection with the
+ exception of the EndpointId, which is not replicated. The
+ EndpointConfiguration command may be encapsulated together with an
+ encapsulated NotificationRequest command.
+
+ The encapsulated EndpointConfiguration command shares the fate of the
+ CreateConnection command. If the CreateConnection is rejected, the
+ EndpointConfiguration is not executed.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+2.3.4. ModifyConnection
+
+ This command is used to modify the characteristics of a gateway's
+ "view" of a connection. This "view" of the call includes both the
+ local connection descriptors as well as the remote connection
+ descriptor.
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 44]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ ReturnCode,
+ [LocalConnectionDescriptor]
+ <--- ModifyConnection(CallId,
+ EndpointId,
+ ConnectionId,
+ [NotifiedEntity,]
+ [LocalConnectionOptions,]
+ [Mode,]
+ [RemoteConnectionDescriptor,]
+ [Encapsulated NotificationRequest,]
+ [Encapsulated EndpointConfiguration])
+
+ The parameters used are the same as in the CreateConnection command,
+ with the addition of a ConnectionId that identifies the connection
+ within the endpoint. This parameter is returned by the
+ CreateConnection function, as part of the local connection
+ descriptor. It uniquely identifies the connection within the context
+ of the endpoint.
+
+ The EndpointId should be a fully qualified endpoint identifier. The
+ local name shall not use the wildcard convention.
+
+ The ModifyConnection command can be used to affect parameters of a
+ connection in the following ways:
+
+ * Provide information about the other end of the connection, through
+ the RemoteConnectionDescriptor.
+
+ * Activate or deactivate the connection, by changing the value of
+ the Mode parameter. This can occur at any time during the
+ connection, with arbitrary parameter values.
+
+ * Change the sending parameters of the connection, for example by
+ switching to a different coding scheme, changing the packetization
+ period, or modifying the handling of echo cancellation.
+
+ Connections can only be activated if the RemoteConnectionDescriptor
+ has been provided to the gateway. The receive only mode, however, can
+ be activated without the provision of this descriptor.
+
+ The command will only return a LocalConnectionDescriptor if the local
+ connection parameters, such as RTP ports, were modified. (Usage of
+ this feature is actually for further study.)
+
+ The command may optionally contain an encapsulated Notification
+ Request command, in which case a RequestIdentifier parameter will be
+ present, as well as, optionnally, the RequestedEvents DigitMap,
+ SignalRequests, QuarantineHandling and DetectEvents parameters. The
+
+
+
+Arango, et al. Informational [Page 45]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ encapsulated NotificationRequest is executed simultaneously with the
+ modification of the connection. For example, when a connection is
+ accepted, the calling gateway should be instructed to place the
+ circuit in send-receive mode and to stop providing ringing tones.
+
+ This can be accomplished in a single ModifyConnection command, by
+ also transmitting the RequestedEvent parameters, for the on hook
+ event, and an empty SignalRequest parameter, to stop the provision of
+ ringing tones.
+
+ When these parameters are present, the modification and the
+ NotificationRequests should be synchronized, which means that both
+ should be accepted, or both refused. The NotifiedEntity parameter,
+ if present, applies to both the ModifyConnection and the
+ NotificationRequest command.
+
+ The command may carry an encapsulated EndpointConfiguration command,
+ that will apply to the same endpoint. When this command is present,
+ the parameters of the EndpointConfiguration command are inserted
+ after the normal parameters of the ModifyConnection with the
+ exception of the EndpointId, which is not replicated. The
+ EndpointConfiguration command may be encapsulated together with an
+ encapsulated NotificationRequest command.
+
+ The encapsulated EndpointConfiguration command shares the fate of the
+ ModifyConnection command. If the ModifyConnection is rejected, the
+ EndpointConfiguration is not executed.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+2.3.5. DeleteConnection (from the Call Agent)
+
+ This command is used to terminate a connection. As a side effect, it
+ collects statistics on the execution of the connection.
+
+ ReturnCode,
+ Connection-parameters
+ <-- DeleteConnection(CallId,
+ EndpointId,
+ ConnectionId,
+ [Encapsulated NotificationRequest,]
+ [Encapsulated EndpointConfiguration])
+
+ The endpoint identifier, in this form of the DeleteConnection
+ command, shall be fully qualified. Wildcard conventions shall not be
+ used.
+
+
+
+Arango, et al. Informational [Page 46]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ In the general case where a connection has two ends, this command has
+ to be sent to both gateways involved in the connection. Some
+ connections, however, may use IP multicast. In this case, they can be
+ deleted individually.
+
+ After the connection has been deleted, any loopback that has been
+ requested for the connection should be cancelled. When all
+ connections to an endpoint have been deleted, that endpoint should be
+ placed in inactive mode.
+
+ In response to the DeleteConnection command, the gateway returns a
+ list of parameters that describe the status of the connection. These
+ parameters are:
+
+ Number of packets sent:
+
+ The total number of RTP data packets transmitted by the sender since
+ starting transmission on this connection. The count is not reset if
+ the sender changes its synchronization source identifier (SSRC, as
+ defined in RTP), for example as a result of a Modify command. The
+ value is zero if the connection was set in "receive only" mode.
+
+ Number of octets sent:
+
+ The total number of payload octets (i.e., not including header or
+ padding) transmitted in RTP data packets by the sender since starting
+ transmission on this connection. The count is not reset if the sender
+ changes its SSRC identifier, for example as a result of a
+ ModifyConnection command. The value is zero if the connection was set
+ in "receive only" mode.
+
+ Number of packets received:
+
+ The total number of RTP data packets received by the sender since
+ starting reception on this connection. The count includes packets
+ received from different SSRC, if the sender used several values. The
+ value is zero if the connection was set in "send only" mode.
+
+ Number of octets received:
+
+ The total number of payload octets (i.e., not including header or
+ padding) transmitted in RTP data packets by the sender since starting
+ transmission on this connection. The count includes packets received
+ from different SSRC, if the sender used several values. The value is
+ zero if the connection was set in "send only" mode.
+
+
+
+
+
+
+Arango, et al. Informational [Page 47]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Number of packets lost:
+
+ The total number of RTP data packets that have been lost since the
+ beginning of reception. This number is defined to be the number of
+ packets expected less the number of packets actually received, where
+ the number of packets received includes any which are late or
+ duplicates. The count includes packets received from different SSRC,
+ if the sender used several values. Thus packets that arrive late are
+ not counted as lost, and the loss may be negative if there are
+ duplicates. The count includes packets received from different SSRC,
+ if the sender used several values. The number of packets expected is
+ defined to be the extended last sequence number received, as defined
+ next, less the initial sequence number received. The count includes
+ packets received from different SSRC, if the sender used several
+ values. The value is zero if the connection was set in "send only"
+ mode. This parameter is omitted if the connection was set in "data"
+ mode.
+
+ Interarrival jitter:
+
+ An estimate of the statistical variance of the RTP data packet
+ interarrival time measured in milliseconds and expressed as an
+ unsigned integer. The interarrival jitter J is defined to be the mean
+ deviation (smoothed absolute value) of the difference D in packet
+ spacing at the receiver compared to the sender for a pair of packets.
+ Detailed computation algorithms are found in RFC 1889. The count
+ includes packets received from different SSRC, if the sender used
+ several values. The value is zero if the connection was set in "send
+ only" mode. This parameter is omitted if the connection was set in
+ "data" mode.
+
+ Average transmission delay:
+
+ An estimate of the network latency, expressed in milliseconds. This
+ is the average value of the difference between the NTP timestamp
+ indicated by the senders of the RTCP messages and the NTP timestamp
+ of the receivers, measured when this messages are received. The
+ average is obtained by summing all the estimates, then dividing by
+ the number of RTCP messages that have been received. This parameter
+ is omitted if the connection was set in "data" mode.
+ When the gateway's clock is not synchronized by NTP, the latency
+ value can be computed as one half of the round trip delay, as
+ measured through RTCP.
+ When the gateway cannot compute the one way delay or the round trip
+ delay, the parameter conveys a null value.
+
+ For a detailed definition of these variables, refer to RFC 1889.
+
+
+
+
+Arango, et al. Informational [Page 48]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ When the connection was set up over an ATM network, the meaning of
+ these parameters may change:
+
+ Number of packets sent: The total number of ATM cells transmitted
+ since starting transmission on this connection.
+
+ Number of octets sent:
+ The total number of payload octets transmitted in ATM cells.
+
+ Number of packets received:
+ The total number of ATM cells received since starting reception on
+ this connection.
+
+ Number of octets received:
+ The total number of payload octets received in ATM cells.
+
+ Number of packets lost:
+ Should be determined as the number of cell losts, or set to zero
+ if the adaptation layer does not enable the gateway to assess
+ losses.
+
+ Interarrival jitter:
+ Should be understood as the interarrival jitter between ATM cells.
+
+ Average transmission delay:
+ The gateway may not be able to assess this parameter over an ATM
+ network. It could simply report a null value.
+
+ When the connection was set up over an LOCAL interconnect, the
+ meaning of these parameters is defined as follows:
+
+ Number of packets sent:
+ Not significant.
+
+ Number of octets sent:
+ The total number of payload octets transmitted over the local
+ connection.
+
+ Number of packets received:
+ Not significant.
+
+ Number of octets received:
+ The total number of payload octets received over the connection.
+
+ Number of packets lost:
+ Not significant. A value of zero is assumed.
+
+
+
+
+
+Arango, et al. Informational [Page 49]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Interarrival jitter:
+ Not significant. A value of zero is assumed.
+
+ Average transmission delay:
+ Not significant. A value of zero is assumed.
+
+ The standard set of connection parameters can be extended by the
+ creation of extension parameters.
+
+ The command may optionally contain an encapsulated Notification
+ Request command, in which case a RequestIdentifier parameter will be
+ present, as well as, optionnally, the RequestedEvents DigitMap,
+ SignalRequests, QuarantineHandling and DetectEvents parameters. The
+ encapsulated NotificationRequest is executed simultaneously with the
+ deletion of the connection. For example, when a user hang-up is
+ notified, the gateway should be instructed to delete the connection
+ and to start looking for an off hook event.
+
+ This can be accomplished in a single DeleteConnection command, by
+ also transmitting the RequestedEvent parameters, for the off hook
+ event, and an empty SignalRequest parameter.
+
+ When these parameters are present, the DeleteConnection and the
+ NotificationRequests should be synchronized, which means that both
+ should be accepted, or both refused.
+
+ The command may carry an encapsulated EndpointConfiguration command,
+ that will apply to the same endpoint. When this command is present,
+ the parameters of the EndpointConfiguration command are inserted
+ after the normal parameters of the DeleteConnection with the
+ exception of the EndpointId, which is not replicated. The
+ EndpointConfiguration command may be encapsulated together with an
+ encapsulated NotificationRequest command.
+
+ The encapsulated EndpointConfiguration command shares the fate of the
+ DeleteConnection command. If the DeleteConnection is rejected, the
+ EndpointConfiguration is not executed.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 50]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.3.6. DeleteConnection (from the VoIP gateway)
+
+ In some circumstances, a gateway may have to clear a connection, for
+ example because it has lost the resource associated with the
+ connection, or because it has detected that the endpoint no longer is
+ capable or willing to send or receive voice. The gateway terminates
+ the connection by using a variant of the DeleteConnection command:
+
+ ReturnCode,
+ <-- DeleteConnection( CallId,
+ EndpointId,
+ ConnectionId,
+ Reason-code,
+ Connection-parameters)
+
+ In addition to the call, endpoint and connection identifiers, the
+ gateway will also send the call's parameters that would have been
+ returned to the Call Agent in response to a DeleteConnection command.
+ The reason code indicates the cause of the disconnection.
+
+ ReturnCode is a parameter returned by the call agent. It indicates
+ the outcome of the command and consists of an integer number
+ optionally followed by commentary.
+
+2.3.7. DeleteConnection (multiple connections, from the Call Agent)
+
+ A variation of the DeleteConnection function can be used by the Call
+ Agent to delete multiple connections at the same time. The command
+ can be used to delete all connections that relate to a Call for an
+ endpoint:
+
+ ReturnCode,
+ <-- DeleteConnection( CallId,
+ EndpointId)
+
+ It can also be used to delete all connections that terminate in a
+ given endpoint:
+
+ ReturnCode,
+ <-- DeleteConnection( EndpointId)
+
+ Finally, Call Agents can take advantage of the hierarchical naming
+ structure of endoints to delete all the connections that belong to a
+ group of endpoints. In this case, the "local name" component of the
+ EndpointID will be specified using the "all value" wildcarding
+ convention. The "any value" convention shall not be used. For
+ example, if endpoints names are structured as the combination of a
+ physical interface name and a circuit number, as in "X35V3+A4/13",
+
+
+
+Arango, et al. Informational [Page 51]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ the Call Agent may replace the circuit number by a wild card
+ character "*", as in "X35V3+A4/*". This "wildcard" command instructs
+ the gateway to delete all the connections that where attached to
+ circuits connected to the physical interface "X35V3+A4".
+
+ After the connections have been deleted, the endpoint should be
+ placed in inactive mode. Any loopback that has been requested for the
+ connections should be cancelled.
+
+ This command does not return any individual statistics or call
+ parameters.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+2.3.8. Audit Endpoint
+
+ The AuditEndPoint command can be used by the Call Agent to find out
+ the status of a given endpoint.
+
+ ReturnCode,
+ EndPointIdList|{
+ [RequestedEvents,]
+ [DigitMap,]
+ [SignalRequests,]
+ [RequestIdentifier,]
+ [NotifiedEntity,]
+ [ConnectionIdentifiers,]
+ [DetectEvents,]
+ [ObservedEvents,]
+ [EventStates,]
+ [BearerInformation,]
+ [RestartReason,]
+ [RestartDelay,]
+ [ReasonCode,]
+ [Capabilities]}
+ <--- AuditEndPoint(EndpointId,
+ [RequestedInfo])
+
+ The EndpointId identifies the endpoint that is being audited. The
+ "all of" wildcard convention can be used to start auditing of a group
+ of endpoints. If this convention is used, the gateway should return
+ the list of endpoint identifiers that match the wildcard in the
+ EndPointIdList parameter. It shall not return any parameter specific
+ to one of these endpoints.
+
+
+
+
+
+Arango, et al. Informational [Page 52]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ When a non-wildcard EndpointId is specified, the (possibly empty)
+ RequestedInfo parameter describes the information that is requested
+ for the EndpointId specified. The following endpoint info can be
+ audited with this command:
+
+ RequestedEvents, DigitMap, SignalRequests, RequestIdentifier,
+ NotifiedEntity, ConnectionIdentifiers, DetectEvents, ObservedEvents,
+ EventStates, RestartReason, RestartDelay, ReasonCode, and
+ Capabilities.
+
+ The response will in turn include information about each of the items
+ for which auditing info was requested:
+
+ * RequestedEvents: The current value of RequestedEvents the endpoint
+ is using including the action associated with each event.
+ Persistent events are included in the list.
+
+ * DigitMap: the digit map the endpoint is currently using.
+
+ * SignalRequests: A list of the; Time-Out signals that are currently
+ active, On/Off signals that are currently "on" for the endpoint
+ (with or without parameter), and any pending Brief signals. Time-
+ Out signals that have timed-out, and currently playing Brief
+ signals are not included.
+
+ * RequestIdentifier, the RequestIdentifier for the last Notification
+ Request received by this endpoint (includes NotificationRequest
+ encapsulated in Connection handling primitives). If no
+ notification request has been received, the value zero will be
+ returned.
+
+ * QuarantineHandling, the QuarantineHandling for the last
+ NotificationRequest received by this endpoint.
+
+ * DetectEvents, the list of events that are currently detected in
+ quarantine mode.
+
+ * NotifiedEntity, the current notified entity for the endpoint.
+
+ * ConnectionIdentifiers, the list of ConnectionIdentifiers for all
+ connections that currently exist for the specified endpoint.
+
+ * ObservedEvents: the current list of observed events for the
+ endpoint.
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 53]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * EventStates: For events that have auditable states associated with
+ them, the event corresponding to the state the endpoint is in,
+ e.g., off-hook if the endpoint is off-hook. The definition of the
+ individual events will state if the event in question has an
+ auditable state associated with it.
+
+ * BearerInformation: the value of the last received
+ BearerInformation parameter for this endpoint.
+
+ * RestartReason: the value of the restart reason parameter in the
+ last RestartInProgress command issued by the endpoint, "restart"
+ indicating a fully functional endpoint.
+
+ * RestartDelay: the value of the restart delay parameter if a
+ RestartInProgress command was issued by the endpoint at the time
+ of the response, or zero if the command would not include this
+ parameter.
+
+ * ReasonCode:the value of the Reason-Code parameter in the last
+ RestartInProgress or DeleteConnection command issued by the
+ gateway for the endpoint, or the special value 000 if the
+ endpoint's state is nominal.
+
+ * The capabilities for the endpoint similar to the
+ LocalConnectionOptions parameter and including event packages and
+ connection modes. If there is a need to specify that some
+ parameters, such as e.g., silence suppression, are only compatible
+ with some
+
+ * codecs, then the gateway will return several capability sets:
+
+ Compression Algorithm: a list of supported codecs. The rest of
+ the parameters will apply to all codecs specified in this list.
+
+ Packetization Period: A single value or a range may be
+ specified.
+
+ Bandwidth: A single value or a range corresponding to the range
+ for packetization periods may be specified (assuming no silence
+ suppression).
+
+ Echo Cancellation: Whether echo cancellation is supported or
+ not.
+
+ Silence Suppression: Whether silence suppression is supported
+ or not.
+
+ Type of Service: Whether type of service is supported or not.
+
+
+
+Arango, et al. Informational [Page 54]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Event Packages: A list of event packages supported. The first
+ event package in the list will be the default package.
+
+ Modes: A list of supported connection modes.
+
+ The Call Agent may then decide to use the AuditConnection command to
+ obtain further information about the connections.
+
+ If no info was requested and the EndpointId refers to a valid
+ endpoint, the gateway simply returns a positive acknowledgement.
+
+ If no NotifiedEntity has been specified in the last
+ NotificationRequest, the notified entity defaults to the source
+ address of the last NotificationRequest command received for this
+ connection.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+2.3.9. Audit Connection
+
+ The AuditConnection command can be used by the Call Agent to retrieve
+ the parameters attached to a connection:
+
+ ReturnCode,
+ [CallId,]
+ [NotifiedEntity,]
+ [LocalConnectionOptions,]
+ [Mode,]
+ [RemoteConnectionDescriptor,]
+ [LocalConnectionDescriptor,]
+ [ConnectionParameters]
+ <--- AuditConnection(EndpointId,
+ ConnectionId,
+ RequestedInfo)
+
+ The EndpointId parameter specifies the endpoint that handles the
+ connection. The wildcard conventions shall not be used.
+
+ The ConnectionId parameter is the identifier of the audited
+ connection, within the context of the specified endpoint.
+
+ The (possibly empty) RequestedInfo describes the information that is
+ requested for the ConnectionId within the EndpointId specified. The
+ following connection info can be audited with this command:
+
+
+
+
+
+Arango, et al. Informational [Page 55]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ CallId, NotifiedEntity, LocalConnectionOptions, Mode,
+ RemoteConnectionDescriptor, LocalConnectionDescriptor,
+ ConnectionParameters
+
+ The AuditConnectionResponse will in turn include information about
+ each of the items auditing info was requested for:
+
+ * CallId, the CallId for the call the connection belongs to.
+
+ * NotifiedEntity, the current notified entity for the Connection.
+
+ * LocalConnectionOptions, the LocalConnectionOptions that was
+ supplied for the connection.
+
+ * Mode, the current mode of the connection.
+
+ * RemoteConnectionDescriptor, the RemoteConnectionDescriptor that
+ was supplied to the gateway for the connection.
+
+ * LocalConnectionDescriptor, the LocalConnectionDescriptor the gate-
+ way supplied for the connection.
+
+ * ConnectionParameters, the current value of the connection
+ parameters for the connection.
+
+ If no info was requested and the EndpointId is valid, the gateway
+ simply checks that the connection exists, and if so returns a
+ positive acknowledgement.
+
+ If no NotifiedEntity has been specified for the connection, the
+ notified entity defaults to the source address of the last connection
+ handling command received for this connection.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+2.3.10. Restart in progress
+
+ The RestartInProgress command is used by the gateway to signal that
+ An endpoint, or a group of endpoint, is taken in or out of service.
+
+ ReturnCode,
+ [NotifiedEntity]
+ <------- RestartInProgress ( EndPointId,
+ RestartMethod,
+ [RestartDelay,]
+ [Reason-code])
+
+
+
+Arango, et al. Informational [Page 56]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The EndPointId identifies the endpoint that are taken in or out of
+ service. The "all of" wildcard convention may be used to apply the
+ command to a group of endpoint, such as for example all endpoints
+ that are attached to a specified interface, or even all endpoints
+ that are attached to a given gateway. The "any of" wildcard
+ convention shall not be used.
+
+ The RestartMethod parameter specified the type of restart. Three
+ values have been defined:
+
+ * A "graceful" restart method indicates that the specified endpoints
+ will Be taken out of service after the specified delay. The
+ established connections are not yet affected, but the Call Agent
+ should refrain to establish new connections, and should try to
+ gracefully tear down the existing connections.
+
+ * A "forced" restart method indicates that the specified endpoints
+ are taken abruptely out of service. The established connections,
+ if any, are lost.
+
+ * A "restart" method indicates that service will be restored on the
+ endpoints after the specified "restart delay." There are no
+ connections that are currently established on the endpoints.
+
+ * A "disconnected" method indicates that the endpoint has become
+ disconnected and is now trying to establish connectivity. The
+ "restart delay" specifies the number of seconds the endpoint has
+ been disconnected. Established connections are not affected.
+
+ * A "cancel-graceful" method indicates that a gateway is canceling a
+ previously issued "graceful" restart command.
+
+ The optional "restart delay" parameter is expressed as a number of
+ seconds. If the number is absent, the delay value should be
+ considered null. In the case of the "graceful" method, a null delay
+ indicates that the call agent should simply wait for the natural
+ termination of the existing connections, without establishing new
+ connections. The restart delay is always considered null in the case
+ of the "forced" method.
+
+ A restart delay of null for the "restart" method indicates that
+ service has already been restored. This typically will occur after
+ gateway startup/reboot.
+
+ The optional reason code parameter the cause of the restart.
+
+
+
+
+
+
+Arango, et al. Informational [Page 57]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Gateways SHOULD send a "graceful" or "forced" RestartInProgress
+ message as a courtesy to the Call Agent when they are taken out of
+ service, e.g., by being shutdown, or taken out of service by a
+ network management system, although the Call Agent cannot rely on
+ always receiving such messages. Gateways MUST send a "restart"
+ RestartInProgress message with a null delay to their Call Agent when
+ they are back in service according to the restart procedure specified
+ in Section 4.3.4 - Call Agents can rely on receiving this message.
+ Also, gateways MUST send a "disconnected" RestartInProgress message
+ to their current "notified entity" according to the "disconnected"
+ procedure specified in Section 4.3.5. The "restart delay" parameter
+ MUST NOT be used with the "forced" restart method.
+
+ The RestartInProgress message will be sent to the current notified
+ entity for the EndpointId in question. It is expected that a default
+ Call Agent, i.e., notified entity, has been provisioned for each
+ endpoint so, after a reboot, the default Call Agent will be the
+ notified entity for each endpoint. Gateways should take full
+ advantage of wild- carding to minimize the number of
+ RestartInProgress messages generated when multiple endpoints in a
+ gateway restart and the endpoints are managed by the same Call Agent.
+
+ ReturnCode is a parameter returned by the gateway. It indicates the
+ outcome of the command and consists of an integer number optionally
+ followed by commentary.
+
+ A NotifiedEntity may additionally be returned with the response from
+ the Call Agent:
+
+ * If the response indicated success (return code 200 - transaction
+ executed), the restart procedure has completed, and the
+ NotifiedEntity returned is the new "notified entity" for the
+ endpoint(s).
+
+ * If the response from the Call Agent indicated an error, the
+ restart procedure is not yet complete, and must therefore be
+ initiated again. If a NotifiedEntity parameter was returned, it
+ then specifies the new "notified entity" for the endpoint(s),
+ which must consequently be used when retrying the restart
+ procedure.
+
+2.4. Return codes and error codes.
+
+ All MGCP commands are acknowledged. The acknowledgment carries a
+ return code, which indicates the status of the command. The return
+ code is an integer number, for which four ranges of values have been
+ defined:
+
+
+
+
+Arango, et al. Informational [Page 58]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * values between 100 and 199 indicate a provisional response,
+
+ * values between 200 and 299 indicate a successful completion,
+
+ * values between 400 and 499 indicate a transient error,
+
+ * values between 500 and 599 indicate a permanent error.
+
+ The values that have been already defined are listed in the following
+ list:
+
+ 100 The transaction is currently being executed. An actual
+ completion message will follow on later.
+
+ 200 The requested transaction was executed normally.
+
+ 250 The connection was deleted.
+
+ 400 The transaction could not be executed, due to a transient error.
+
+ 401 The phone is already off hook
+
+ 402 The phone is already on hook
+
+ 403 The transaction could not be executed, because the endpoint does
+ not have sufficient resources at this time
+
+ 404 Insufficient bandwidth at this time
+
+ 500 The transaction could not be executed, because the endpoint is
+ unknown.
+
+ 01 The transaction could not be executed, because the endpoint is
+ not ready.
+
+ 502 The transaction could not be executed, because the endpoint does
+ not have sufficient resources
+
+ 510 The transaction could not be executed, because a protocol error
+ was detected.
+
+ 11 The transaction could not be executed, because the command
+ contained an unrecognized extension.
+
+ 512 The transaction could not be executed, because the gateway is
+ not equipped to detect one of the requested events.
+
+
+
+
+
+Arango, et al. Informational [Page 59]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 513 The transaction could not be executed, because the gateway is
+ not equipped to generate one of the requested signals.
+
+ 514 The transaction could not be executed, because the gateway
+ cannot send the specified announcement.
+
+ 515 The transaction refers to an incorrect connection-id (may have
+ been already deleted)
+
+ 516 The transaction refers to an unknown call-id.
+
+ 517 Unsupported or invalid mode.
+
+ 518 Unsupported or unknown package.
+
+ 519 Endpoint does not have a digit map.
+
+ 520 The transaction could not be executed, because the endpoint is
+ "restarting".
+
+ 521 Endpoint redirected to another Call Agent.
+
+ 522 No such event or signal.
+
+ 523 Unknown action or illegal combination of actions
+
+ 524 Internal inconsistency in LocalConnectionOptions
+
+ 525 Unknown extension in LocalConnectionOptions
+
+ 526 Insufficient bandwidth
+
+ 527 Missing RemoteConnectionDescriptor
+
+ 528 Incompatible protocol version
+
+ 529 Internal hardware failure
+
+ 530 CAS signaling protocol error.
+
+ 531 failure of a grouping of trunks (e.g. facility failure).
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 60]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+2.5. Reason Codes
+
+ Reason-codes are used by the gateway when deleting a connection to
+ inform the Call Agent about the reason for deleting the connection.
+ They may also be used in a RestartInProgress command, to inform the
+ gateway of the Restart's reason. The reason code is an integer
+ number, and the following values have been defined:
+
+ 000 Endpoint state is nominal. (This code is used only in response
+ to audit requests.)
+
+ 900 Endpoint malfunctioning
+
+ 901 Endpoint taken out of service
+
+ 902 Loss of lower layer connectivity (e.g., downstream sync)
+
+3. Media Gateway Control Protocol
+
+ The MGCP implements the media gateway control interface as a set of
+ transactions. The transactions are composed of a command and a
+ mandatory response. There are eight types of command:
+
+ * CreateConnection
+
+ * ModifyConnection
+
+ * DeleteConnection
+
+ * NotificationRequest
+
+ * Notify
+
+ * AuditEndpoint
+
+ * AuditConnection
+
+ * RestartInProgress
+
+ The first four commands are sent by the Call Agent to a gateway. The
+ Notify command is sent by the gateway to the Call Agent. The gateway
+ may also send a DeleteConnection as defined in 2.3.6. The Call Agent
+ may send either of the Audit commands to the gateway. The Gateway
+ may send a RestartInProgress command to the Call Agent.
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 61]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+3.1. General description
+
+ All commands are composed of a Command header, optionally followed by
+ a session description.
+
+ All responses are composed of a Response header, optionally followed
+ by a session description.
+
+ Headers and session descriptions are encoded as a set of text lines,
+ separated by a carriage return and line feed character (or,
+ optionnally, a single line-feed character). The headers are separated
+ from the session description by an empty line.
+
+ MGCP uses a transaction identifier to correlate commands and
+ responses. The transaction identifier is encoded as a component of
+ the command header and repeated as a component of the response header
+ (see section 3.2.1, 3.2.1.2 and 3.3).
+
+3.2. Command Header
+
+ The command header is composed of:
+
+ * A command line, identifying the requested action or verb, the
+ transaction identifier, the endpoint towards which the action is
+ requested, and the MGCP protocol version,
+
+ * A set of parameter lines, composed of a parameter name followed by
+ a parameter value.
+
+ Unless otherwise noted or dictated by other referenced standards,
+ each component in the command header is case insensitive. This goes
+ for verbs as well as parameters and values, and all comparisons MUST
+ treat upper and lower case as well as combinations of these as being
+ equal.
+
+3.2.1. Command line
+
+ The command line is composed of:
+
+ * The name of the requested verb,
+
+ * The identification of the transaction,
+
+ * The name of the endpoint that should execute the command (in
+ notifications or restarts, the name of the endpoint that is
+ issuing the command),
+
+ * The protocol version.
+
+
+
+Arango, et al. Informational [Page 62]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ These four items are encoded as strings of printable ASCII
+ characters, separated by white spaces, i.e. the ASCII space (0x20) or
+ tabulation (0x09) characters. It is recommended to use exactly one
+ ASCII space separator.
+
+3.2.1.1. Coding of the requested verb
+
+ The verbs that can be requested are encoded as four letter upper or
+ lower case ASCII codes (comparisons should be case insensitive) as
+ defined in the following table:
+
+ ______________________________
+ | Verb | Code|
+ |______________________|______|
+ | EndpointConfiguration| EPCF|
+ | CreateConnection | CRCX|
+ | ModifyConnection | MDCX|
+ | DeleteConnection | DLCX|
+ | NotificationRequest | RQNT|
+ | Notify | NTFY|
+ | AuditEndpoint | AUEP|
+ | AuditConnection | AUCX|
+ | RestartInProgress | RSIP|
+ |______________________|______|
+
+ The transaction identifier is encoded as a string of up to 9 decimal
+ digits. In the command lines, it immediately follows the coding of
+ the verb.
+
+ New verbs may be defined in further versions of the protocol. It may
+ be necessary, for experimentation purposes, to use new verbs before
+ they are sanctioned in a published version of this protocol.
+ Experimental verbs should be identified by a four letter code
+ starting with the letter X, such as for example XPER.
+
+3.2.1.2. Transaction Identifiers
+
+ MGCP uses a transaction identifier to correlate commands and
+ responses. A gateway supports two separate transaction identifier
+ name spaces:
+
+ a transaction identifier name space for sending transactions, and
+
+ a transaction identifier name space for receiving transactions.
+
+ At a minimum, transaction identifiers for commands sent to a given
+ gateway MUST be unique for the maximum lifetime of the transactions
+ within the collection of Call Agents that control that gateway. Thus,
+
+
+
+Arango, et al. Informational [Page 63]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ regardless of the sending Call Agent, gateways can always detect
+ duplicate transactions by simply examining the transaction
+ identifier. The coordination of these transaction identifiers between
+ Call Agents is outside the scope of this specification though.
+
+ Transaction identifiers for all commands sent from a given gateway
+ MUST be unique for the maximum lifetime of the transactions
+ regardless of which Call Agent the command is sent to. Thus, a Call
+ Agent can always detect a duplicate transaction from a gateway by the
+ combination of the domain-name of the endpoint and the transaction
+ identifier.
+
+ The transaction identifier is encoded as a string of up to nine
+ decimal digits. In the command lines, it immediately follows the
+ coding of the verb.
+
+ Transaction identifiers have values between 1 and 999999999. An MGCP
+ entity MUST NOT reuse a transaction identifier more quickly than
+ three minutes after completion of the previous command in which the
+ identifier was used.
+
+3.2.1.3. Coding of the endpoint identifiers and entity names
+
+ The endpoint identifiers and entity names are encoded as case
+ insensitive e-mail addresses, as defined in RFC 821. In these
+ addresses, the domain name identifies the system where the endpoint
+ is attached, while the left side identifies a specific endpoint on
+ that system.
+
+ Examples of such addresses can be:
+
+ ______________________________________________________________________
+ | hrd4/56@gw23.example.net | Circuit number 56 in |
+ | | interface "hrd4" of the Gateway 23 |
+ | | of the "Example" network |
+ | Call-agent@ca.example.net | Call Agent for the |
+ | | "example" network |
+ | Busy-signal@ann12.example.net| The "busy signal" virtual |
+ | | endpoint in the announcement |
+ | | server number 12. |
+ |______________________________|______________________________________|
+
+ The name of notified entities is expressed with the same syntax, with
+ the possible addition of a port number as in:
+
+ Call-agent@ca.example.net:5234
+
+
+
+
+
+Arango, et al. Informational [Page 64]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ In case the port number is omitted, the default MGCP port (2427) will
+ be used.
+
+3.2.1.4. Coding of the protocol version
+
+ The protocol version is coded as the key word MGCP followed by a
+ white space and the version number, and optionally followed by a
+ profile name.. The version number is composed of a major version,
+ coded by a decimal number, a dot, and a minor version number, coded
+ as a decimal number. The version described in this document is
+ version 1.0.
+
+ The profile name, if present, is represented by a white-space
+ separated strings of visible (printable) characters extending to the
+ end of the line. Profile names may be defined for user communities
+ who want to apply restrictions or other profiling to MGCP.
+
+ In the initial messages, the version will be coded as:
+
+ MGCP 1.0
+
+3.2.2. Parameter lines
+
+ Parameter lines are composed of a parameter name, which in most cases
+ is composed of a single upper case character, followed by a colon, a
+ white space and the parameter value. The parameter that can be
+ present in commands are defined in the following table:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 65]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ _______________________________________________________________________
+ |Parameter name | Code| Parameter value |
+ |______________________|______|_______________________________________|
+ |ResponseAck | K | see description |
+ |BearerInformation | B | see description |
+ |CallId | C | Hexadecimal string, at most 32 chars.|
+ |ConnectionId | I | Hexadecimal string, at most 32 chars.|
+ |NotifiedEntity | N | An identifier, in RFC 821 format, |
+ | | | composed of an arbitrary string and |
+ | | | of the domain name of the requesting |
+ | | | entity, possibly completed by a port |
+ | | | number, as in: |
+ | | | Call-agent@ca.example.net:5234 |
+ |RequestIdentifier | X | Hexadecimal string, at most 32 chars.|
+ |LocalConnectionOptions| L | See description |
+ |Connection Mode | M | See description |
+ |RequestedEvents | R | See description |
+ |SignalRequests | S | See description |
+ |DigitMap | D | A text encoding of a digit map |
+ |ObservedEvents | O | See description |
+ |ConnectionParameters | P | See description |
+ |ReasonCode | E | An arbitrary character string |
+ |SpecificEndpointID | Z | An identifier, in RFC 821 format, |
+ | | | composed of an arbitrary string, |
+ | | | followed by an "@" followed by the |
+ | | | domain name of the gateway to which |
+ | | | this endpoint is attached. |
+ |Second Endpoint ID | Z2 | Endpoint Id. |
+ |SecondConnectionId | I2 | Connection Id. |
+ |RequestedInfo | F | See description |
+ |QuarantineHandling | Q | See description |
+ |DetectEvents | T | See Description |
+ |RestartMethod | RM | See description |
+ |RestartDelay | RD | A number of seconds, encoded as |
+ | | | a decimal number |
+ |EventStates | ES | See description |
+ |Capabilities | A | See description |
+ |______________________|______|_______________________________________|
+ |RemoteConnection | RC | Session Description |
+ |Descriptor | | |
+ |LocalConnection | LC | Session Description |
+ |Descriptor | | |
+ |______________________|______|_______________________________________|
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 66]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The parameters are not necessarily present in all commands. The
+ following table provides the association between parameters and
+ commands. The letter M stands for mandatory, O for optional and F for
+ forbidden.
+
+ ___________________________________________________________________
+ | Parameter name | EP| CR| MD| DL| RQ| NT| AU| AU| RS|
+ | | CF| CX| CX| CX| NT| FY| EP| CX| IP|
+ |_____________________|____|____|____|____|____|____|____|____|____|
+ | ResponseAck | O | O | O | O | O | O | O | O | O |
+ | BearerInformation | M | O | O | O | O | F | F | F | F |
+ | CallId | F | M | M | O | F | F | F | F | F |
+ | ConnectionId | F | F | M | O | F | F | F | M | F |
+ | RequestIdentifier | F | O+| O+| O+| M | M | F | F | F |
+ | LocalConnection | F | O | O | F | F | F | F | F | F |
+ | Options | | | | | | | | | |
+ | Connection Mode | F | M | M | F | F | F | F | F | F |
+ | RequestedEvents | F | O | O | O | O*| F | F | F | F |
+ | SignalRequests | F | O | O | O | O*| F | F | F | F |
+ | NotifiedEntity | F | O | O | O | O | O | F | F | F |
+ | ReasonCode | F | F | F | O | F | F | F | F | O |
+ | ObservedEvents | F | F | F | F | F | M | F | F | F |
+ | DigitMap | F | O | O | O | O | F | F | F | F |
+ | Connection | F | F | F | O | F | F | F | F | F |
+ | parameters | | | | | | | | | |
+ | Specific Endpoint ID| F | F | F | F | F | F | F | F | F |
+ | Second Endpoint ID | F | O | F | F | F | F | F | F | F |
+ | RequestedInfo | F | F | F | F | F | F | M | M | F |
+ | QuarantineHandling | F | O | O | O | O | F | F | F | F |
+ | DetectEvents | F | O | O | O | O | F | F | F | F |
+ | EventStates | F | F | F | F | F | F | F | F | F |
+ | RestartMethod | F | F | F | F | F | F | F | F | M |
+ | RestartDelay | F | F | F | F | F | F | F | F | O |
+ | SecondConnectionID | F | F | F | F | F | F | F | F | F |
+ | Capabilities | F | F | F | F | F | F | F | F | F |
+ |_____________________|____|____|____|____|____|____|____|____|____|
+ | RemoteConnection | F | O | O | F | F | F | F | F | F |
+ | Descriptor | | | | | | | | | |
+ | LocalConnection | F | F | F | F | F | F | F | F | F |
+ | Descriptor | | | | | | | | | |
+ |_____________________|____|____|____|____|____|____|____|____|____|
+
+ Note (+) that the RequestIdentifier parameter is optional in
+ connection creation, modification and deletion commands, but that it
+ becomes mandatory if the command contains an encapsulated
+ notification request.
+
+
+
+
+
+Arango, et al. Informational [Page 67]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Note (*) that the RequestedEvents and SignalRequests parameters are
+ optional in the NotificationRequest. If these parameters are omitted,
+ the corresponding lists will be considered empty.
+
+ If implementers need to experiment with new parameters, for example
+ when developing a new application of MGCP, they should identify these
+ parameters by names that start with the string "X-" or "X+", such as
+ for example:
+
+ X-FlowerOfTheDay: Daisy
+
+ Parameter names that start with "X+" are critical parameter
+ extensions. An MGCP entity that receives a critical parameter
+ extension that it cannot understand should refuse to execute the
+ command. It should respond with an error code 511 (Unrecognized
+ extension).
+
+ Parameter names that start with "X-" are non critical parameter
+ extensions. An MGCP entity that receives a non critical parameter
+ extension that it cannot understand can safely ignore that parameter.
+
+3.2.2.1. Response Acknowledgement
+
+ The response acknowledgement attribute is used to managed the "at-
+ most-once" facility described in the "transmission over UDP" section.
+ It contains a comma separated list of "confirmed transaction-id
+ ranges".
+
+ Each "confirmed transaction-id ranges" is composed of either one
+ decimal number, when the range includes exactly one transaction, or
+ two decimal numbers separated by a single hyphen, describing the
+ lower and higher transaction identifiers included in the range.
+
+ An example of response acknowledgement is:
+
+ K: 6234-6255, 6257, 19030-19044
+
+3.2.2.2. Local connection options
+
+ The local connection options describe the operational parameters that
+ the Call Agent suggests to the gateway. These parameters are:
+
+ * The packetization period in milliseconds, encoded as the keyword
+ "p", followed by a colon and a decimal number. If the Call Agent
+ specifies a range of values, the range will be specified as two
+ decimal numbers separated by an hyphen.
+
+
+
+
+
+Arango, et al. Informational [Page 68]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * The preferred type of compression algorithm, encoded as the
+ keyword "a", followed by a colon and a character string. If the
+ Call Agent specifies a list of values, these values will be
+ separated by a semicolon.
+
+ * The bandwidth in kilobits per second (1000 bits per second),
+ encoded as the keyword "b", followed by a colon and a decimal
+ number. If the Call Agent specifies a range of values, the range
+ will be specified as two decimal numbers separated by an hyphen.
+
+ * The echo cancellation parameter, encoded as the keyword "e",
+ followed by a colon and the value "on" or "off".
+
+ * The gain control parameter, encoded as the keyword "gc", followed
+ by a colon a value which can be either the keyword "auto" or a
+ decimal number (positive or negative) representing the number of
+ decibels of gain.
+
+ * The silence suppression parameter, encoded as the keyword "s",
+ followed by a colon and the value "on" or "off".
+
+ * The type of service parameter, encoded as the keyword "t",
+ followed by a colon and the value encoded as two hexadecimal
+ digits.
+
+ * The resource reservation parameter, encoded as the keyword "r",
+ followed by a colon and the value "g" (guaranteed service), "cl"
+ (controlled load) or "be" (best effort).
+
+ * The encryption key, encoded as the keyword "k" followed by a colon
+ and a key specification, as defined for the parameter "K" of SDP
+ (RFC 2327).
+
+ * The type of network, encoded as the keyword "nt" followed by a
+ colon and the type of network encoded as the keyword "IN", "ATM"
+ or "LOCAL".
+
+ Each of the parameters is optional. When several parameters are
+ present, the values are separated by a comma.
+
+ Examples of connection descriptors are:
+
+ L: p:10, a:PCMU
+ L: p:10, a:G726-32
+ L: p:10-20, b:64
+ L: b:32-64, e:off
+
+ These set of attributes may be extended by extension attributes.
+
+
+
+Arango, et al. Informational [Page 69]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Extension attributes are composed of an attribute name, followed by a
+ semi-colon and by an attribute value. The attribute name should start
+ by the two characters "x+", for a mandatory extensions, or "x-", for
+ a non mandatory extension. If a gateway receives a mandatory
+ extension attribute that it does not recognize, it should reject the
+ command with an error code 525 (Unknown extension in
+ LocalConnectionOptions).
+
+3.2.2.3. Capabilities
+
+ Capabilities inform the Call Agent about endpoints' capabilities when
+ audited. The encoding of capabilities is based on the Local
+ Connection Options encoding for the parameters that are common to
+ both. In addition, capabilities can also contain a list of supported
+ packages, and a list of supported modes.
+
+ The parameters used are:
+
+ *
+ A list of supported codecs. The following parameters will apply to
+ all codecs specified in this list. If there is a need to specify
+ that some parameters, such as e.g. silence suppression, are only
+ compatible with some codecs, then the gateway will return several
+ LocalConnectionOptions parameters, one for each set of codecs.
+
+ Packetization Period:
+ A range may be specified.
+
+ Bandwidth:
+ A range corresponding to the range for packetization periods may
+ be specified (assuming no silence suppression). If absent, the
+ values will be deduced from the codec type.
+
+ Echo Cancellation:
+ "on" if echo cancellation is supported for this codec, "off"
+ otherwise. The default is support.
+
+ Silence Suppression:
+ "on" if silence suppression is supported for this codec, "off"
+ otherwise. The default is support.
+
+ Gain Control:
+ "0" if gain control is not supported. The default is support.
+
+ Type of Service:
+ The value "0" indicates no support for type of service, all other
+ values indicate support for type of service. The default is
+ support.
+
+
+
+Arango, et al. Informational [Page 70]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Resource Reservation:
+ The parameter indicates the reservation services that are
+ supported, in addition to best effort. The value "g" is encoded
+ when the gateway supports both the guaranteed and the controlled
+ load service, "cl" when only the controlled load service is
+ supported. The default is "best effort."
+
+ Encryption Key:
+ Encoding any value indicates support for encryption. Default is
+ no support.
+
+ Type of network:
+ The keyword "nt", followed by a colon and a semicolon separated
+ list of supported network types. This parameter is optional.
+
+ Event Packages
+ The event packages supported by this endpoint encoded as the
+ keyword "v", followed by a colon and a character string. If a list
+ of values is specified, these values will be separated by a
+ semicolon. The first value specified will be the default package
+ for that endpoint.
+
+ Modes
+ The modes supported by this endpoint encoded as the keyword "m",
+ followed by a colon and a semicolon-separated list of supported
+ connection modes for this endpoint.
+
+3.2.2.4. Connection parameters
+
+ Connection parameters are encoded as a string of type and value
+ pairs, where the type is a either letter identifier of the parameter
+ or an extension type, and the value a decimal integer. Types are
+ separated from value by an `=' sign. Parameters are encoded from each
+ other by a comma.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 71]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The connection parameter types are specified in the following table:
+
+ __________________________________________________________________
+ | Connection parameter| Code| Connection parameter |
+ | name | | value |
+ |_____________________|______|____________________________________|
+ | Packets sent | PS | The number of packets that |
+ | | | were sent on the connection. |
+ | Octets sent | OS | The number of octets that |
+ | | | were sent on the connection. |
+ | Packets received | PR | The number of packets that |
+ | | | were received on the connection. |
+ | Octets received | OR | The number of octets that |
+ | | | were received on the connection. |
+ | Packets lost | PL | The number of packets that |
+ | | | were not received on the |
+ | | | connection, as deduced from |
+ | | | gaps in the sequence number. |
+ | Jitter | JI | The average inter-packet arrival |
+ | | | jitter, in milliseconds, |
+ | | | expressed as an integer number. |
+ | Latency | LA | Average latency, in milliseconds, |
+ | | | expressed as an integer number. |
+ |_____________________|______|____________________________________|
+
+ Extension parameters names are composed of the string "X-" followed
+ by a two letters extension parameter name. Call agents that received
+ unrecognized extensions shall silently ignore these extensions.
+
+ An example of connection parameter encoding is:
+
+ P: PS=1245, OS=62345, PR=0, OR=0, PL=0, JI=0, LA=48
+
+3.2.2.5. Reason Codes
+
+ Reason codes are three-digit numeric values. The reason code is
+ optionally followed by a white space and commentary, e.g.:
+
+ 900 Endpoint malfunctioning
+
+ A list of reason-codes can be found in Section 2.5.
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 72]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+3.2.2.6. Connection mode
+
+ The connection mode describes the mode of operation of the
+ connection. The possible values are:
+
+ ________________________________________________________
+ | Mode | Meaning |
+ |____________|__________________________________________|
+ | M: sendonly| The gateway should only send packets |
+ | M: recvonly| The gateway should only receive packets |
+ | M: sendrecv| The gateway should send |
+ | | and receive packets |
+ | M: confrnce| The gateway should place |
+ | | the connection in conference mode |
+ | M: inactive| The gateway should neither |
+ | | send nor receive packets |
+ | M: loopback| The gateway should place |
+ | | the circuit in loopback mode. |
+ | M: conttest| The gateway should place |
+ | | the circuit in test mode. |
+ | M: netwloop| The gateway should place |
+ | | the connection in network loopback mode.|
+ | M: netwtest| The gateway should place |
+ | | the connection in network |
+ | | continuity test mode. |
+ | M: data | The gateway should use the circuit |
+ | | for network access for data |
+ | | (e.g., PPP, SLIP, etc.). |
+ |____________|__________________________________________|
+
+3.2.2.7. Coding of event names
+
+ Event names are composed of an optional package name, separated by a
+ slash (/) from the name of the actual event. The event name can
+ optionally be followed by an at sign (@) and the identifier of a
+ connection on which the event should be observed. Event names are
+ used in the RequestedEvents, SignalRequests and ObservedEvents
+ parameter.
+
+ Each signal has one of the following signal-types associated with:
+ On/Off (OO), Time-out (TO), Brief (BR). (These signal types are
+ specified in the package definitions, and are not present in the
+ messages.) On/Off signals can be parameterized with a "+" to turn
+ the signal on, or a "-" to turn the signal off. If an on/off signal
+ is not parameterized, the signal is turned on. Both of the following
+ will turn the vmwi signal on:
+
+ vmwi(+), vmwi
+
+
+
+Arango, et al. Informational [Page 73]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The following are valid examples of event names:
+
+ ____________________________________________________________
+ | L/hu | on-hook transition, in the line package |
+ | F/0 | digit 0 in the MF package |
+ | fh | Flash-hook, assuming that the line package|
+ | | is a default package for the end point. |
+ | G/rt@0A3F58 | Ring back signal on |
+ | | connection "0A3F58". |
+ |_____________|_____________________________________________|
+
+ In addition, the range and wildcard notation of events can be used,
+ instead of individual names, in the RequestedEvents and DetectEvents
+ parameters. The star sign can be used to denote "all connections",
+ and the dollar sign can be used to denote the "current" connection.
+ The following are valid examples of such notations:
+
+ __________________________________________________________
+ | M/[0-9] | Digits 0 to 9 in the MF package |
+ | fh | Flash-hook, assuming that the line package|
+ | | is a default package for the end point. |
+ | [0-9*#A-D]| All digits and letters in the DTMF |
+ | | packages (default for endpoint). |
+ | T/$ | All events in the trunk packages. |
+ | R/qa@* | The quality alert event in all |
+ | | connections |
+ | R/rt@$ | Ringback on current connection |
+ |___________|_____________________________________________|
+
+
+3.2.2.8. RequestedEvents
+
+ The RequestedEvent parameter provides the list of events that have
+ been requested. The event codes are described in the previous
+ section.
+
+ Each event can be qualified by a requested action, or by a list of
+ actions. The actions, when specified, are encoded as a list of
+ keywords, enclosed in parenthesis and separated by commas. The codes
+ for the various actions are:
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 74]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ ______________________________________
+ | Action | Code|
+ |______________________________|______|
+ | Notify immediately | N |
+ | Accumulate | A |
+ | Treat according to digit map | D |
+ | Swap | S |
+ | Ignore | I |
+ | Keep Signal(s) active | K |
+ | Embedded Notification Request| E |
+ |______________________________|______|
+
+
+ When no action is specified, the default action is to notify the
+ event. This means that, for example, ft and ft(N) are equivalent.
+ Events that are not listed are ignored.
+
+ The digit-map action can only be specified for the digits, letters
+ and interdigit timers in the MF and DTMF packages, or in other
+ packages that would define the encoding of digits and timers.
+
+ The requested list is encoded on a single line, with event/action
+ groups separated by commas. Examples of RequestedEvents encoding are:
+
+ R: hu(N), hf(S,N)
+ R: hu(N), [0-9#T](D)
+
+ In the case of the "enable" action, the embedded notification request
+ parameters are encoded as a list of up to three parameter groups,
+ separated by commas. Each group start by a one letter identifier,
+ followed by a list of parameters enclosed between parenthesis. The
+ first optional parameter group, identified by the letter "R", is the
+ enabled value of the RequestedEvents parameter. The second optional
+ group, identified by the letter "S", is the enabled value of the
+ SignalRequests parameter. The third optional group, identified by
+ the letter "D", is the enabled value of the DigitMap. (Note that some
+ existing implementation may encode these three components in a
+ different order.)
+
+ If the RequestedEvents is not present, the parameter will be set to a
+ null value. If the SignalRequest is not present, the parameter will
+ be set to a null value. If the DigitMap is absent, the current value
+ should be used. The following are valid examples of embedded
+ requests:
+
+ R: hd(E(R([0-9#T](D),hu(N)),S(dl),D([0-9].[#T])))
+ R: hd(E(R([0-9#T](D),hu(N)),S(dl)))
+
+
+
+
+Arango, et al. Informational [Page 75]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+3.2.2.9. SignalRequests
+
+ The SignalRequests parameter provides the name of the signals that
+ have been requested. Each signal is identified by a name, as
+ indicated in the previous section.
+
+ Several signals, such as for example announcement or ADSI display,
+ can be qualified by additional parameters:
+
+ * the name and parameters of the announcement,
+
+ * the string that should be displayed.
+
+ These parameters will be encoded as a set of UTF8 character strings,
+ spearated by comams and enclosed within parenthesis, as in:
+ S: adsi("123456 Francois Gerard")
+ S: ann(no-such-number, 1234567)
+
+ When several signals are requested, their codes are separated by a
+ comma, as in:
+
+ S: asdi(123456 Your friend), rg
+
+3.2.2.10. ObservedEvent
+
+ The observed event parameters provides the list of events that have
+ been observed. The event codes are the same as those used in the
+ NotificationRequest. Events that have been accumulated according to
+ the digit map may be grouped in a single string; they should be
+ reported as lists of isolated events if other events where detected
+ during the digit accumulation. Examples of observed actions are:
+
+ O: L/hu
+ O: 8295555T
+ O: 8,2,9,5,5,L/hf,5,5,T
+ O: L/hf, L/hf, L/hu
+
+3.2.2.11. RequestedInfo
+
+ The RequestedInfo parameter contains a comma separated list of
+ parameter codes, as defined in the "Parameter lines" section. For
+ example, if one wants to audit the value of the NotifiedEntity,
+ RequestIdentifier, RequestedEvents, SignalRequests, DigitMap,
+ QuarantineHandling and DetectEvents parameters, The value of the
+ RequestedInfo parameter will be:
+
+ F:N,X,R,S,D,Q,T
+
+
+
+
+Arango, et al. Informational [Page 76]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The capabilities request, in the AuditEndPoint command, is encoded by
+ the keyword "A", as in:
+
+ F:A
+
+3.2.2.12. QuarantineHandling
+
+ The quarantine handling parameter contains a list of comma separated
+ keywords:
+
+ * The keyword "process" or "discard" to indicate the treatment of
+ quarantined events. If neither process or discard is present,
+ process is assumed.
+
+ * The keyword "step" or "loop" to indicate whether exactly at most
+ one notification is expected, or whether multiple notifications
+ are allowed. If neither step or loop is present, step is assumed.
+ The following values are valid examples:
+
+ Q:loop
+ Q:process
+ Q:discard,loop
+
+3.2.2.13. DetectEvents
+
+ The DetectEvent parameter is encoded as a comma separated list of
+ events, such as for example:
+
+ T: hu,hd,hf,[0-9#*]
+
+ It should be noted, that no actions can be associated with the
+ events.
+
+3.2.2.14. EventStates
+
+ The EventStates parameter is encoded as a comma separated list of
+ events, such as for example:
+
+ ES: hu
+
+ It should be noted, that no actions can be associated with the
+ events.
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 77]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+3.2.2.15. RestartMethod
+
+ The RestartMethod parameter is encoded as one of the keywords
+ "graceful", "forced", "restart", "disconnected" or "cancel-graceful"
+ as for example:
+
+ RM:restart
+
+3.2.2.16. Bearer Information
+
+ The values of the bearer informations are encoded as a comma
+ separated list of attributes, represented by an attribute name,
+ separated by a colon from an attribute value.
+
+ The only attribute that is defined is the "encoding" (code "e"),
+ whose defined values are "A" (A-law) and "mu" (mu-law).
+
+ An example of bearer information encoding is:
+
+ B: e:mu
+
+3.3. Format of response headers
+
+ The response header is composed of a response line, optionally
+ followed by headers that encode the response parameters.
+
+ An example of response header could be:
+
+ 200 1203 OK
+
+ The response line starts with the response code, which is a three
+ digit numeric value. The code is followed by a white space, the
+ transaction identifier, and an optional commentary preceded by a
+ white space.
+
+ The following table describe the parameters whose presence is
+ mandatory or optional in a response header, as a function of the
+ command that triggered the response. The letter M stands for
+ mandatory, O for optional and F for forbidden.
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 78]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ ___________________________________________________________________
+ | Parameter name | EP| CR| MD| DL| RQ| NT| AU| AU| RS|
+ | | CF| CX| CX| CX| NT| FY| EP| CX| IP|
+ |_____________________|____|____|____|____|____|____|____|____|____|
+ | ResponseAck | F | F | F | F | F | F | F | F | F |
+ | BearerInformation | F | F | F | F | F | F | O | F | F |
+ | CallId | F | F | F | F | F | F | F | O | F |
+ | ConnectionId | F | O*| F | F | F | F | F | F | F |
+ | RequestIdentifier | F | F | F | F | F | F | O | F | F |
+ | LocalConnection | F | F | F | F | F | F | O | O | F |
+ | Options | | | | | | | | | |
+ | Connection Mode | F | F | F | F | F | F | F | O | F |
+ | RequestedEvents | F | F | F | F | F | F | O | F | F |
+ | SignalRequests | F | F | F | F | F | F | O | F | F |
+ | NotifiedEntity | F | F | F | F | F | F | F | F | O |
+ | ReasonCode | F | F | F | F | F | F | O | F | F |
+ | ObservedEvents | F | F | F | F | F | F | O | F | F |
+ | DigitMap | F | F | F | F | F | F | O | F | F |
+ | Connection | F | F | F | O | F | F | F | O | F |
+ | Parameters | | | | | | | | | |
+ | Specific Endpoint ID| F | O | F | F | F | F | F | F | F |
+ | RequestedInfo | F | F | F | F | F | F | F | F | F |
+ | QuarantineHandling | F | F | F | F | F | F | O | F | F |
+ | DetectEvents | F | F | F | F | F | F | O | F | F |
+ | EventStates | F | F | F | F | F | F | O | F | F |
+ | RestartMethod | F | F | F | F | F | F | O | F | F |
+ | RestartDelay | F | F | F | F | F | F | O | F | F |
+ | Capabilities | F | F | F | F | F | F | O | F | F |
+ | SecondConnectionId | F | O | F | F | F | F | F | F | F |
+ | SecondEndpointID | F | O | F | F | F | F | F | F | F |
+ |_____________________|____|____|____|____|____|____|____|____|____|
+ | LocalConnection | F | M | O | F | F | F | F | O*| F |
+ | Descriptor | | | | | | | | | |
+ | RemoteConnection | F | F | F | F | F | F | F | O*| F |
+ | Descriptor | | | | | | | | | |
+ |_____________________|____|____|____|____|____|____|____|____|____|
+
+ In the case of a CreateConnection message, the response line is
+ followed by a Connection-Id parameter. It may also be followed a
+ Specific-Endpoint-Id parameter, if the creation request was sent to a
+ wildcarded Endpoint-Id. The connection-Id parameter is marked as
+ optional in the Table. In fact, it is mandatory with all positive
+ responses, when a connection was created, and forbidden when the
+ response is negative, when no connection as created.
+
+ In the case of a DeleteConnection message, the response line is
+ followed by a Connection Parameters parameter, as defined in section
+ 3.2.2.2.
+
+
+
+Arango, et al. Informational [Page 79]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ A LocalConnectionDescriptor should be transmitted with a positive
+ response (code 200) to a CreateConnection. It may be transmitted in
+ response to a ModifyConnection command, if the modification resulted
+ in a modification of the session parameters. The
+ LocalConnectionDescriptor is encoded as a "session description," as
+ defined in section 3.4. It is separated from the response header by
+ an empty line.
+
+ When several session descriptors are encoded in the same response,
+ they are encoded one after each other, separated by an empty line.
+ This is the case for example when the response to an audit connection
+ request carries both a local session description and a remote session
+ description, as in:
+
+ 200 1203 OK
+ C: A3C47F21456789F0
+ N: [128.96.41.12]
+ L: p:10, a:PCMU;G726-32
+ M: sendrecv
+ P: PS=1245, OS=62345, PR=780, OR=45123, PL=10, JI=27,LA=48
+
+ v=0
+ c=IN IP4 128.96.41.1
+ m=audio 1296 RTP/AVP 0
+
+ v=0
+ c=IN IP4 128.96.63.25
+ m=audio 1296 RTP/AVP 0 96
+ a=rtpmap:96 G726-32/8000
+
+ In this example, according to the SDP syntax, each description starts
+ with a "version" line, (v=...). The local description is always
+ transmitted before the remote description. If a connection descriptor
+ is requested, but it does not exist for the connection audited, that
+ connection descriptor will appear with the SDP protocol version field
+ only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 80]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+3.4. Formal syntax description of the protocol
+
+ In this section, we provided a formal description of the protocol
+ syntax, following the "Augmented BNF for Syntax Specifications"
+ defined in RFC 2234.
+
+MGCPMessage = MGCPCommand / MGCPResponse
+
+MGCPCommand = MGCPCommandLine 0*(MGCPParameter) [EOL *SDPinformation]
+
+MGCPCommandLine = MGCPVerb 1*(WSP) <transaction-id> 1*(WSP)
+ <endpointName> 1*(WSP) MGCPversion EOL
+
+MGCPVerb = "EPCF" / "CRCX" / "MDCX" / "DLCX" / "RQNT"
+ / "NTFY" / "AUEP" / "AUCX" / "RSIP" / extensionVerb
+
+extensionVerb = "X" 3(ALPHA / DIGIT)
+
+transaction-id = 1*9(DIGIT)
+
+endpointName = localEndpointName "@" DomainName
+LocalEndpointName = LocalNamePart 0*("/" LocalNamePart)
+LocalNamePart = AnyName / AllName / NameString
+AnyName = "$"
+AllNames = "*"
+NameString = 1*(range-of-allowed-characters)
+DomainName = 1*256(ALPHA / DIGIT / "." / "-") ; as defined in RFC 821
+
+MGCPversion = "MGCP" 1*(WSP) 1*(DIGIT) "." 1*(DIGIT)
+ [1*(WSP) ProfileName]
+ProfileName = 1*(range-of-allowed-characters)
+
+MGCPParameter = ParameterValue EOL
+
+ParameterValue = ("K" ":" 0*WSP <ResponseAck>) /
+ ("B" ":" 0*WSP <BearerInformation>) /
+ ("C" ":" 0*WSP <CallId>) /
+ ("I" ":" 0*WSP <ConnectionId>) /
+ ("N" ":" 0*WSP <NotifiedEntity>) /
+ ("X" ":" 0*WSP <RequestIdentifier>) /
+ ("L" ":" 0*WSP <LocalConnectionOptions>) /
+ ("M" ":" 0*WSP <ConnectionMode>) /
+ ("R" ":" 0*WSP <RequestedEvents>) /
+ ("S" ":" 0*WSP <SignalRequests>) /
+ ("D" ":" 0*WSP <DigitMap>) /
+ ("O" ":" 0*WSP <ObservedEvents>) /
+ ("P" ":" 0*WSP <ConnectionParameters>) /
+ ("E" ":" 0*WSP <ReasonCode>) /
+
+
+
+Arango, et al. Informational [Page 81]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ ("Z" ":" 0*WSP <SpecificEndpointID>) /
+ ("Z2" ":" 0*WSP <SecondEndpointID>) /
+ ("I2" ":" 0*WSP <SecondConnectionID>) /
+ ("F" ":" 0*WSP <RequestedInfo>) /
+ ("Q" ":" 0*WSP <QuarantineHandling>) /
+ ("T" ":" 0*WSP <DetectEvents>) /
+ ("RM" ":" 0*WSP <RestartMethod>) /
+ ("RD" ":" 0*WSP <RestartDelay>) /
+ ("A" ":" 0*WSP <Capabilities>) /
+ ("ES" ":" 0*WSP <EventStates>) /
+ (extensionParameter ":" 0*WSP <parameterString>)
+
+ResponseAck = confirmedTransactionIdRange
+ *[ "," confirmedTransactionIdRange ]
+
+confirmedTransactionIdRange = 1*9DIGIT [ "-" 1*9DIGIT ]
+
+BearerInformation = BearerAttribute 0*("," 0*WSP BearerAttribute)
+BearerAttribute = ("e" ":" <BearerEncoding>)
+BearerEncoding = "A" / "mu"
+
+CallId = 1*32(HEXDIG)
+
+// The audit request response may include a list of identifiers
+ConnectionId = 1*32(HEXDIG) 0*("," 1*32(HEXDIG))
+SecondConnectionID = ConnectionId
+
+NotifiedEntity = [LocalName "@"] DomainName [":" portNumber]
+LocalName = 1*32(suitableCharacter)
+portNumber = 1*5(DIGIT)
+
+RequestIdentifier = 1*32(HEXDIG)
+
+LocalConnectionOptions = [ LocalOptionValue 0*(WSP)
+ 0*("," 0*(WSP) LocalOptionValue 0*(WSP)) ]
+LocalOptionValue = ("p" ":" <packetizationPeriod> )
+ / ("a" ":" <compressionAlgorithm> )
+ / ("b" ":" <bandwidth> )
+ / ("e" ":" <echoCancellation> )
+ / ("gc" ":" <gainControl> )
+ / ("s" ":" <silenceSuppression> )
+ / ("t" ":" <typeOfService> )
+ / ("r" ":" <resourceReservation> )
+ / ("k" ":" <encryptionmethod>[":"<encryptionKey>])
+ / ("nt" ":" <typeOfNetwork> )
+ / (localOptionExtensionName ":"
+ / localOptionExtensionValue)
+
+
+
+
+Arango, et al. Informational [Page 82]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+Capabilities = [ CapabilityValue 0*(WSP)
+ 0*("," 0*(WSP) CapabilityValue 0*(WSP)) ]
+
+
+CapabilityValue = LocalOptionValue
+ / ("v" ":" <supportedPackages>)
+ / ("m" ":" <supportedModes> )
+
+
+packetizationPeriod = 1*4(DIGIT)["-" 1*4(DIGIT)]
+compressionAlgorithm = algorithmName 0*(";" algorithmName)
+algorithmName = 1*32(SuitableCharacter)
+bandwidth = 1*4(DIGIT)["-" 1*4(DIGIT)]
+echoCancellation = "on" / "off"
+gainControl = "auto" / ["-"]1*4(DIGIT)
+silenceSuppression = "on" / "off"
+typeOfService = 2HEXDIG
+resourceReservation = "g" / "cl" / "be"
+
+;encryption parameters are coded as in SDP (RFC 2327)
+encryptiondata = ( "clear" ":" <encryptionKey> )
+ / ( "base64" ":" <encodedEncryptionKey> )
+ / ( "uri" ":" <URItoObtainKey> )
+ / ( "prompt" ) ; defined in SDP, not usable in MGCP!
+encryptionKey = 1*(SuitableCharacter / SP)
+encodedEncryptionKey = 1*(ALPHA / DIGIT / "+" / "/" / "=")
+URItoObtainKey = 1*(SuitableCharacter) / quotedString
+
+typeOfNetwork = "IN" / "ATM" / "LOCAL"
+supportedModes= ConnectionMode 0*(";" ConnectionMode)
+supportedPackages = packageName 0*(";" packageName)
+
+localOptionExtensionName = "x" ("+"/"-") 1*32(SuitableCharacter)
+localOptionExtensionValue = 1*32(SuitableCharacter) / quotedString
+
+
+ConnectionMode = "sendonly" / "recvonly" / "sendrecv" /
+ "confrnce" / "inactive" / "loopback" /
+ "conttest" / "netwloop" / "netwtest" / "data"
+
+RequestedEvents = [requestedEvent 0*("," 0*(WSP) requestedEvent)]
+requestedEvent = eventName [ "(" requestedActions ")" ]
+
+eventName = [ (packageName / "*") "/" ] (eventId / "all" / eventRange)
+ [ "@" (ConnectionId / "$" / "*") ]
+packageName = 1*(ALPHA / DIGIT / HYPHEN)
+eventId = 1*(SuitableCharacter)
+eventRange = "[" 1*(DIGIT / DTMFLetter / "*" / "#" /
+
+
+
+Arango, et al. Informational [Page 83]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ (DIGIT "-" DIGIT)/(DTMFLetter "-"
+ DTMFLetter)) "]"
+
+requestedActions = requestedAction 0*("," 0*(WSP) requestedAction)
+requestedAction = "N" / "A" / "D" / "S" / "I" / "K" /
+ "E" "(" EmbeddedRequest ")"
+
+EmbeddedRequest = ( "R" "(" EmbeddedRequestList ")"
+ ["," "S" "(" EmbeddedSignalRequest ")" ]
+ ["," "D" "(" EmbeddedDigitMap ")" ] )
+ / ( "S" "(" EmbeddedSignalRequest ")"
+ ["," "D" "(" EmbeddedDigitMap ")" ] )
+ / ( "D" "(" EmbeddedDigitMap ")" )
+
+EmbeddedRequestList = RequestedEvents
+EmbeddedSignalRequest = SignalRequests
+EmbeddedDigitMap = DigitMap
+
+SignalRequests = [ SignalRequest 0*("," 0*(WSP) SignalRequest ) ]
+SignalRequest = eventName [ "(" eventParameters ")" ]
+eventParameters = eventParameter 0*("," 0*(WSP) eventParameter)
+eventParameter = eventParameterString / quotedString
+eventParameterString = 1*(SuitableCharacter)
+
+DigitMap = DigitString / "(" DigitStringList ")"
+DigitStringList = DigitString 0*( "|" DigitString )
+DigitString = 1*(DigitStringElement)
+DigitStringElement = DigitPosition ["."]
+DigitPosition = DigitMapLetter / DigitMapRange
+DigitMapLetter = DIGIT / "#" / "*" / "A" / "B" / "C" / "D" / "T"
+DigitMapRange = "x" / "[" 1*DigitLetter "]"
+DigitLetter ::= *((DIGIT "-" DIGIT ) / DigitMapLetter)
+
+ObservedEvents = SignalRequests
+EventStates = SignalRequests
+
+ConnectionParameters = [ConnectionParameter
+ 0*( "," 0*(WSP) ConnectionParameter )
+ConnectionParameter = ( "PS" "=" packetsSent )
+ / ( "OS" "=" octetsSent )
+ / ( "PR" "=" packetsReceived )
+ / ( "OR" "=" octetsReceived )
+ / ( "PL" "=" packetsLost )
+ / ( "JI" "=" jitter )
+ / ( "LA" "=" averageLatency )
+ / ( ConnectionParameterExtensionName "="
+ ConnectionParameterExtensionValue )
+packetsSent = 1*9(DIGIT)
+
+
+
+Arango, et al. Informational [Page 84]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+octetsSent = 1*9(DIGIT)
+packetsReceived = 1*9(DIGIT)
+octetsReceived = 1*9(DIGIT)
+packetsLost = 1*9(DIGIT)
+jitter = 1*9(DIGIT)
+averageLatency = 1*9(DIGIT)
+ConnectionParameterExtensionName = "X" "-" 2*ALPHA
+ConnectionParameterExtensionValue = 1*9(DIGIT)
+
+ReasonCode = 3DIGIT [SPACE 1*(%x20-7E)]
+
+SpecificEndpointID = endpointName
+SecondEndpointID = endpointName
+
+RequestedInfo = [infoCode 0*("," infoCode)]
+
+infoCode = "B" / "C" / "I" / "N" / "X" / "L" / "M" /
+ "R" / "S" / "D" / "O" / "P" / "E" / "Z" /
+ "Q" / "T" / "RC" / "LC" / "A" / "ES" / "RM" / "RD"
+
+QuarantineHandling = loopControl / processControl /
+ (loopControl "," processControl )
+loopControl = "step" / "loop"
+processControl = "process" / "discard"
+
+DetectEvents = [eventName 0*("," eventName)]
+
+RestartMethod = "graceful" / "forced" / "restart" / "disconnected"
+
+RestartDelay = 1*6(DIGIT)
+
+extensionParameter = "X" ("-"/"+") 1*6(ALPHA / DIGIT)
+parameterString = 1*(%x20-7F)
+
+MGCPResponse = MGCPResponseLine 0*(MGCPParameter)
+ [EOL *SDPinformation]
+
+MGCPResponseLine = (<responseCode> 1*(WSP) <transaction-id>
+ [1*(WSP) <responseString>] EOL)
+responseCode = 3DIGIT
+responseString = *(%x20-7E)
+
+SuitableCharacter= DIGIT / ALPHA / "+" / "-" / "_" / "&" /
+ "!" / "'" / "|" / "=" / "#" / "?" / "/" /
+ "." / "$" / "*" / ";" / "@" / "[" / "]" /
+ "^" / "`" / "{" / "}" / "~"
+
+quotedString = DQUOTE visibleString
+
+
+
+Arango, et al. Informational [Page 85]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 0*(quoteEscape visibleString) DQUOTE
+quoteEscape = DQUOTE DQUOTE
+visibleString = (%x00-21 / %x23-FF)
+EOL = CRLF / LF
+
+SDPinformation = ;See RFC 2327
+
+3.5. Encoding of the session description
+
+ The session description is encoded in conformance with the session
+ description protocol, SDP. MGCP implementations are expected to be
+ fully capable of parsing any conformant SDP message, and should send
+ session descriptions that strictly conform to the SDP standard. The
+ usage of SDP actually depends on the type of session that is being,
+ as specified in the "mode" parameter:
+
+ * if the mode is set to "data", the session description describes
+ the configuration of a data access service.
+
+ * if the mode is set to any other value, the session description is
+ for an audio service.
+
+ For an audio service, the gateway will consider the information
+ provided in SDP for the "audio" media. For a data service, the
+ gateway will consider the information provided for the "network-
+ access" media.
+
+3.5.1. Usage of SDP for an audio service
+
+ In a telephony gateway, we only have to describe sessions that use
+ exactly one media, audio. The parameters of SDP that are relevant for
+ the telephony application are:
+
+ At the session description level:
+
+ * The IP address of the remote gateway (in commands) or of the
+ local gateway (in responses), or multicast address of the audio
+ conference, encoded as an SDP "connection data" parameter. This
+ parameter specifies the IP address that will be used to
+ exchange RTP packets.
+
+ For the audio media:
+
+ * Media description field (m) specifying the audio media, the
+ transport port used for receiving RTP packets by the remote
+ gateway (commands) or by the local gateway (responses), the
+
+
+
+
+
+Arango, et al. Informational [Page 86]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ RTP/AVP transport, and the list of formats that the gateway
+ will accept. This list should normally always include the code
+ 0 (reserved for PCMU).
+
+ * Optionally, RTPMAP attributes that define the encoding of
+ dynamic audio formats,
+
+ * Optionally, a packetization period (packet time) attribute
+ (Ptime) defining the duration of the packet,
+
+ * Optionally, an attribute defining the type of connection
+ (sendonly, recvonly, sendrecv, inactive). Note that this
+ attribute does not have a direct relation with the "Mode"
+ parameter of MGCP. In fact, the SDP type of connection will
+ most of the time be set to "sendrecv", regardless of the value
+ used by MGCP. Other values will only be used rarely, for
+ example in the case of information or announcement servers that
+ need to establish one way connections.
+
+ * The IP address of the remote gateway (in commands) or of the
+ local gateway (in responses), if it is not present at the
+ session level.
+
+ An example of SDP specification for an audio connection could be:
+
+ v=0
+ c=IN IP4 128.96.41.1
+ m=audio 3456 RTP/AVP 0 96
+ a=rtpmap:96 G726-32/8000
+
+ There is a request, in some environments, to use the MGCP to
+ negotiate connections that will use other transmission channels than
+ RTP over UDP and IP. This will be detailed in an extension to this
+ document.
+
+3.5.2. Usage of SDP in a network access service
+
+ The parameters of SDP that are relevant for a data network access
+ application are:
+
+ For the data media:
+
+ * Media description field (m) specifying the network access
+ media, identified by the code "m=nas/xxxx", where "xxxx"
+ describes the access control method that should be used for
+ parametrizing the network access, as specified below. The field
+ may also specify the port that should be used for contacting
+ the server, as specified in the SDP syntax.
+
+
+
+Arango, et al. Informational [Page 87]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * Connection address parameter (c=) specifying the address, or
+ the domain name, of the server that implement the access
+ control method. This parameter may also be specified at the
+ session level.
+
+ * Optionally, a bearer type attribute (a=bearer:) describing the
+ type of data connection to be used, including the modem type.
+
+ * Optionally, a framing type attribue (a=framing:) describing the
+ type of framing that will be used on the channel.
+
+ * Optionally, attributes describing the called number
+ (a=dialed:), the number to which the call was delivered
+ (a=called:) and the calling number (a=dialing:).
+
+ * Optionally, attributes describing the range of addresses that
+ could be used by the dialup client on its LAN (a=subnet:).
+
+ * Optionally, an encryption key, encoded as specified in the SDP
+ protocol(k=).
+
+ The connection address shall be encoded as specified in the SDP
+ standard. It will be used in conjunction with the port specified in
+ the media line to access a server, whose type will one of:
+
+ __________________________________________________________
+ | Method name| Method description |
+ |____________|____________________________________________|
+ | radius | Authentication according |
+ | | to the Radius protocol. |
+ | tacacs | Authentication according |
+ | | to the TACACS+ protocol. |
+ | diameter | Authentication according |
+ | | to the Diameter protocol. |
+ | l2tp | Level 2 tunneling protocol. |
+ | | The address and port are those of the LNS.|
+ | login | Local login. (There is normally |
+ | | no server for that method.) |
+ | none | No authentication required. |
+ | | (The call was probably vetted |
+ | | by the Call Agent.) |
+ |____________|____________________________________________|
+
+ If needed, the gateway may use the key specified in the announcement
+ to access the service. That key, in particular, may be used for the
+ establishment of an L2TP tunnel.
+
+
+
+
+
+Arango, et al. Informational [Page 88]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The bearer attribute is composed of a bearer name and an optional
+ extension. The bearer type specifies the type of modulation (modem
+ name) or, in the case of digital connections, the type of ISDN
+ service (8 bits, 7 bits). When an extension is present, it is
+ separated from the bearer name by a single slash (/). The valid
+ values of the bearer attribute are defined in the following table:
+
+ ____________________________________________________________________
+ | Type of bearer description | Example of values |
+ |_________________________________|_________________________________|
+ | ITU modem standard | V.32, V.34, V.90. |
+ | ITU modem standard qualified | v.90/3com, |
+ | by a manufacturer name | v.90/rockwell, |
+ | | v.90/xxx |
+ | Well known modem types | X2, K56flex |
+ | ISDN transparent access, 64 kbps| ISDN64 |
+ | ISDN64 + V.110 | ISDN64/V.110 |
+ | ISDN64 + V.120 | ISDN64/V.120 |
+ | ISDN transparent access, 56 kbps| ISDN56 |
+ | Informal identification | (Requires coordination between |
+ | | the Call Agent and the gateway)|
+ |_________________________________|_________________________________|
+
+ The valid values of the framing attribute are defined in the
+ following table:
+
+ _________________________________________________
+ | Type of framing description| Example of values|
+ |____________________________|___________________|
+ | PPP, asynchronous framing | ppp-asynch |
+ | PPP, HDLC framing | ppp-hdlc |
+ | SLIP, asynchronous | slip |
+ | Asynchronous, no framing | asynch |
+ |____________________________|___________________|
+
+ The network access authentication parameter provides instructions on
+ the access control that should be exercized for the data call. This
+ optional attribute is encoded as:
+
+ "a=subnet:" <network type> <address type>
+ <connection address> "/" <prefix length>
+
+
+ Where the parameters "network type", "address type", and "connection
+ address" are formatted as defined for the connection address
+ parameter (c=) in SDP, and where the "prefix length" is a decimal
+ representation of the number of bits in the prefix.
+
+
+
+
+Arango, et al. Informational [Page 89]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Examples of SDP announcement for the network access service could be:
+
+ v=0
+ m=nas/radius
+ c=IN IP4 radius.example.net
+ a=bearer:v.34
+ a=framing:ppp-asynch
+ a=dialed:18001234567
+ a=called:12345678901
+ a=dialing:12340567890
+
+ v=0
+ m=nas/none
+ c=IN IP4 128.96.41.1
+ a=subnet:IN IP4 123.45.67.64/26
+ a=bearer:isdn64
+ a=framing:ppp-sync
+ a=dialed:18001234567
+ a=dialing:2345678901
+
+ v=0
+ c=IN IP4 access.example.net
+ m=nas/l2tp
+ k=clear:some-shared-secret
+ a=bearer:v.32
+ a=framing:ppp-asynch
+ a=dialed:18001234567
+ a=dialing:2345678901
+
+3.5.3. Usage of SDP for ATM connections
+
+ The specification of the SDP payload for ATM connections will be
+ described in a companion document, "Usage of MGCP to control Voice
+ over ATM gateways." The following text is indicative.
+
+ The SDP payload will specify:
+
+ * That the connection is to be established over an ATM interface,
+ using the "c=" parameter of SDP to specify an address in the ATM
+ family, the ATM addressing variant (NSAP, UNI, E.164) and the ATM
+ address.
+
+ * The "m=audio" parameter will specify the audio encoding and, if
+ needed, the VPI and VCI.
+
+ * Additional attributes parameters (a=) will be used to specify the
+ ATM coding variants, such as the type of adaptation layer and the
+ error correction or loss compenmsation algorithms.
+
+
+
+Arango, et al. Informational [Page 90]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ An example of SDP payload for an ATM connection could be:
+
+ v=0 c=ATM NSAP
+ 47.0091.8100.0000.0060.3e64.fd01.0060.3e64.fd01.fe m=audio
+ 5/1002 ATM/AVP PCMU a=connection_type:AAL2
+
+3.5.4. Usage of SDP for local connections
+
+ When MGCP is used to set up internal connections within a single
+ gateway, the SDP format is used to encode the parameters of that
+ connection. The following parameters will be used:
+
+ * The connection parameter (C=) will specify that the connection is
+ local, using the keyword "LOCAL" as network type space, the
+ keyword "EPN" (endpoint name) as address type, and the name of
+ the endpoint as the connection-address.
+
+ * The "m=audio" parameter will specify a port number, which will
+ always be set to 0, the type of protocol, always set to the
+ keyword LOCAL, and the type of encoding, using the same
+ conventions used for RTP (RTP payload numbers.) The type of
+ encoding should normally be set to 0 (PCMU).
+
+ An example of local SDP payload could be:
+
+ v=0
+ c=LOCAL EPN X35V3+A4/13
+ m=audio 0 LOCAL 0
+
+3.6. Transmission over UDP
+
+ MGCP messages are transmitted over UDP. Commands are sent to one of
+ the IP addresses defined in the DNS for the specified endpoint . The
+ responses are sent back to the source address of the commands.
+
+ When no port is specified for the endpoint, the commands should be
+ sent:
+
+ * by the Call Agents, to the default MGCP port for gateways, 2427.
+
+ * by the Gateways, to the default MGCP port for Call Agents, 2727.
+
+3.6.1. Providing the At-Most-Once functionality
+
+ MGCP messages, being carried over UDP, may be subject to losses. In
+ the absence of a timely response, commands are repeated. Most MGCP
+ commands are not idempotent. The state of the gateway would become
+
+
+
+
+Arango, et al. Informational [Page 91]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ unpredictable if, for example, CreateConnection commands were
+ executed several times. The transmission procedures must thus
+ provide an "At-Most-Once" functionality.
+
+ MGCP entities are expected to keep in memory a list of the responses
+ that they sent to recent transactions and a list of the transactions
+ that are currently being executed. The transaction identifiers of
+ incoming commands are compared to the transaction identifiers of the
+ recent responses. If a match is found, the MGCP entity does not
+ execute the transaction, but simply repeats the response. The
+ remaining commands will be compared to the list of current
+ transaction. If a match is found, the MGCP entity does not execute
+ the transaction, which is simply ignored.
+
+ The procedure use a long timer value, noted LONG-TIMER in the
+ following. The timer should be set larger than the maximum duration
+ of a transaction, which should take into account the maximum number
+ of repetitions, the maximum value of the repetition timer and the
+ maximum propagation delay of a packet in the network. A suggested
+ value is 30 seconds.
+
+ The copy of the responses can be destroyed either LONG-TIMER seconds
+ after the response is issued, or when the gateway (or the call agent)
+ receives a confirmation that the response has been received, through
+ the "Response Acknowledgement attribute". For transactions that are
+ acknowledged through this attribute, the gateway shall keep a copy of
+ the transaction-id for LONG-TIMER seconds after the response is
+ issued, in order to detect and ignore duplicate copies of the
+ transaction request that could be produced by the network.
+
+3.6.2. Transaction identifiers and three ways handshake
+
+ Transaction identifiers are integer numbers in the range from 0 to
+ 999,999,999. Call-agents may decide to use a specific number space
+ for each of the gateways that they manage, or to use the same number
+ space for all gateways that belong to some arbitrary group. Call
+ agents may decide to share the load of managing a large gateway
+ between several independent processes. These processes will share
+ the same transaction number space. There are multiple possible
+ implementations of this sharing, such as having a centralized
+ allocation of transaction identifiers, or pre-allocating non-
+ overlapping ranges of identifiers to different processes. The
+ implementations must guarantee that unique transaction identifiers
+ are allocated to all transactions that originate from a logical call
+ agent, as defined in the "states, failover and race conditions"
+ section. Gateways can simply detect duplicate transactions by looking
+ at the transaction identifier only.
+
+
+
+
+Arango, et al. Informational [Page 92]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The Response Acknowledgement Attribute can be found in any command.
+ It carries a set of "confirmed transaction-id ranges."
+
+ MGCP gateways may choose to delete the copies of the responses to
+ transactions whose id is included in "confirmed transaction-id
+ ranges" received in the Response Confirmation messages. They should
+ silently discard further commands from that Call Agent when the
+ transaction-id falls within these ranges.
+
+ The "confirmed transaction-id ranges" values shall not be used if
+ more than LONG-TIMER seconds have elapsed since the gateway issued
+ its last response to that call agent, or when a gateway resumes
+ operation. In this situation, commands should be accepted and
+ processed, without any test on the transaction-id.
+
+ Commands that carry the "Response Acknowledgement attribute" may be
+ transmitted in disorder. The gateway shall retain the union of the
+ "confirmed transaction-id ranges" received in recent commands.
+
+3.6.3. Computing retransmission timers
+
+ It is the responsibility of the requesting entity to provide suitable
+ time outs for all outstanding commands, and to retry commands when
+ time outs have been exceeded. Furthermore, when repeated commands
+ fail to be acknowledged, it is the responsibility of the requesting
+ entity to seek redundant services and/or clear existing or pending
+ connections.
+
+ The specification purposely avoids specifying any value for the
+ retransmission timers. These values are typically network dependent.
+ The retransmission timers should normally estimate the timer by
+ measuring the time spent between the sending of a command and the
+ return of a response. One possibility is to use the algorithm
+ implemented in TCP-IP, which uses two variables:
+
+ * the average acknowledgement delay, AAD, estimated through an
+ exponentially smoothed average of the observed delays,
+
+ * the average deviation, ADEV, estimated through an exponentially
+ smoothed average of the absolute value of the difference between
+ the observed delay and the current average
+
+ The retransmission timer, in TCP, is set to the sum of the average
+ delay plus N times the average deviation. In MGCP, the maximum value
+ of the timer should however be bounded, in order to guarantee that no
+ repeated packet will be received by the gateways after LONG-TIMER
+ seconds. A suggested maximum value is 4 seconds.
+
+
+
+
+Arango, et al. Informational [Page 93]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ After any retransmission, the MGCP entity should do the following:
+
+ * It should double the estimated value of the average delay, AAD
+
+ * It should compute a random value, uniformly distributed between
+ 0.5 AAD and AAD
+
+ * It should set the retransmission timer to the sum of that random
+ value and N times the average deviation.
+
+ This procedure has two effects. Because it includes an exponentially
+ increasing component, it will automatically slow down the stream of
+ messages in case of congestion. Because it includes a random
+ component, it will break the potential synchronization between
+ notifications triggered by the same external event.
+
+3.6.4. Piggy backing
+
+ There are cases when a Call Agent will want to send several messages
+ at the same time to the same gateways. When several MGCP messages
+ have to be sent in the same UDP packets, they should be separated by
+ a line of text that contain a single dot, as in for example:
+
+ 200 2005 OK
+ DLCX 1244 card23/21@trgw-7.example.net MGCP 1.0
+ C: A3C47F21456789F0
+ I: FDE234C8
+
+ The piggy-backed messages should be processed exactly has if they had
+ been received in several simultaneous messages.
+
+3.6.5. Provisional responses
+
+ Executing some transactions may require a long time. Long execution
+ times may interact with the timer based retransmission procedure.
+ This may result either in an inordinate number of retransmissions, or
+ in timer values that become too long to be efficient.
+
+ Gateways that can predict that a transaction will require a long
+ execution time may send a provisional response, with response code
+ 100. They should send this response if they receive a repetition of
+ a transaction that is still being executed.
+
+ MGCP entities that receive a provisional response shall switch to a
+ longer repetition timer for that transaction.
+
+
+
+
+
+
+Arango, et al. Informational [Page 94]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+4. States, failover and race conditions.
+
+ In order to implement proper call signalling, the Call Agent must
+ keep track of the state of the endpoint, and the gateway must make
+ sure that events are properly notified to the call agent. Special
+ conditions exist when the gateway or the call agent are restarted:
+ the gateway must be redirected to a new call agent during "failover"
+ procedures, the call agent must take special action when the gateway
+ is taken offline, or restarted.
+
+4.1. Basic Asumptions
+
+ The support of "failover" is based on the following assumptions:
+
+ * Call Agents are identified by their domain name, not their network
+ addresses, and several addresses can be associated with a domain
+ name.
+
+ * An endpoint has one NotifiedEntity associated with it any given
+ point in time.
+
+ * The NotifiedEntity is the last value of the "NotifiedEntity"
+ parameter received for this endpoint (including wild-carded end-
+ point-names). If no explicit "NotifiedEntity" parameter has been
+ received, the "NotifiedEntity" defaults to the provisioned
+ NotifiedEntity value, or if no value was provisioned to the source
+ address of the last command received for the endpoint,
+
+ * Responses to commands are always sent to the source address of the
+ command, regardless of the NotifiedEntity.
+
+ * When the "notified entity" refers to a domain name that resolves
+ to multiple IP- address, endpoints are capable of switching
+ between different interfaces on the same logical call agent,
+ however they cannot switch to other (backup) call agent(s) on
+ their own. A backup call agent can however instruct them to
+ switch, either directly or indirectly.
+
+ * If an entire call agent becomes unavailable, the endpoints managed
+ by that call agent will eventually become "disconnected". The only
+ way for these endpoints to become connected again is either for
+ the failed call agent to become available, or for a backup call
+ agent to contact the affected endpoints.
+
+ * When a backup call agent has taken over control of a group of
+ endpoints, it is assumed that the failed call agent will
+ communicate and synchronize with the backup call agent in order to
+
+
+
+
+Arango, et al. Informational [Page 95]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ transfer control of the affected endpoints back to the original
+ call agent (if that's even desired - maybe the failed call agent
+ should simply become the backup call agent now).
+
+ We should note that handover conflict resolution between separate
+ CA's is not in place - we are relying strictly on the CA's knowing
+ what they are doing and communicating with each other (although
+ AuditEndpoint can be used to learn about the current NotifiedEntity).
+
+4.2. Security, Retransmission, and Detection of Lost Associations:
+
+ The media gateway control protocol is organized as a set of
+ transactions, each of which is composed of a command and a response,
+ commonly referred to as an acknowledgement. The MGCP messages, being
+ carried over UDP, may be subject to losses. In the absence of a
+ timely response, commands are repeated. MGCP entities are expected to
+ keep in memory a list of the responses that they sent to recent
+ transactions, i.e. a list of all the responses they sent over the
+ last LONG-TIMER seconds, and a list of the transactions that are
+ currently being executed.
+
+ The transaction identifiers of incoming commands are compared to the
+ transaction identifiers of the recent responses. If a match is found,
+ the MGCP entity does not execute the transaction, but simply repeats
+ the response. The remaining commands will be compared to the list of
+ current transaction. If a match is found, the MGCP entity does not
+ execute the transaction, which is simply ignored - a response will be
+ provided when the execution of the command is complete.
+
+ The repetition mechanism is used to guard against four types of
+ possible errors:
+
+ * transmission errors, when for example a packet is lost due to
+ noise on a line or congestion in a queue,
+
+ * component failure, when for example an interface to a call agent
+ becomes unavailable,
+
+ * call agent failure, when for example an entire call agent becomes
+ unavailable,
+
+ * failover, when a new call agent is "taking over" transparently.
+
+ The elements should be able to derive from the past history an
+ estimate of the packet loss rate due to transmission errors. In a
+ properly configured system, this loss rate should be kept very low,
+ typically less than 1%. If a call agent or a gateway has to repeat a
+ message more than a few times, it is very legitimate to assume that
+
+
+
+Arango, et al. Informational [Page 96]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ something else than a transmission error is occurring. For example,
+ given a loss rate of 1%, the probability that 5 consecutive
+ transmission attempts fail is 1 in 100 billion, an event that should
+ occur less than once every 10 days for a call agent that processes
+ 1,000 transactions per second. (Indeed, the number of repetition that
+ is considered excessive should be a function of the prevailing packet
+ loss rate.) We should note that the "suspicion threshold", which we
+ will call "Max1", is normally lower than the "disconnection
+ threshold", which should be set to a larger value.
+
+ Command issued: N=0
+ |
+ transmission: N++
+ | +------------ retransmission: N++ -----------+
+ | | |
+ | | transmission |
+ | | +---to new address -+<--------------------|--+
+ | | | N=0 | | |
+ V V V | | |
+ +-----------+ | | |
+ | awaiting |- new call agent ->+ +------------+ | |
+ | response |--- timer elapsed --->| N > Max1 ? |-(no)+ |
+ +-----------+ <----------+ +------------+ ^ |
+ | | | | | |
+ | +- wrong key? -+ (yes) | |
+ | | | |
+ response received (if N=Max1, | |
+ | or N=Max2 | |
+ | check DNS) | |
+ v | | |
+ (end) +---------------+ | |
+ |more addresses?|(yes)|--+
+ +---------------+ |
+ | |
+ (no) |
+ | |
+ +------------+ |
+ | N > Max2 ? |(no)-+
+ +------------+
+ |
+ (yes)
+ |
+ v
+ (disconnected)
+
+ A classic retransmission algorithm would simply count the number of
+ successive repetitions, and conclude that the association is broken
+ after re-transmitting the packet an excessive number of times
+
+
+
+Arango, et al. Informational [Page 97]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ (typically between 7 and 11 times.) In order to account for the
+ possibility of an undetected or in-progress "failover", we modify the
+ classic algorithm as follows:
+
+ * We request that the gateway always checks for the presence of a
+ new call agent. It can be noticed either by
+
+ - receiving a valid multicast message announcing a failover, or
+
+ - receiving a command where the NotifiedEntity points to the new
+ call agent, or
+
+ - receiving a redirection response pointing to a new Call Agent.
+
+ If a new call agent is detected, the gateway starts transmitting
+ outstanding commands to that new agent. Responses to commands are
+ still transmitted to the source address of the command.
+
+ * we request that if the number of repetitions for this Call Agent
+ is larger than "Max1", that the gateway actively queries the name
+ server in order to detect the possible change of the call agent
+ interfaces.
+
+ * The gateway may have learned several IP addresses for the call
+ agent. If the number of repetitions is larger than "Max1" and
+ lower than "Max2", and there are more interfaces that have not
+ been tried, then the gateway should direct the retransmissions to
+ alternate addresses.
+
+ * If there are no more interfaces to try, and the number of
+ repetitions is Max2, then the gateway contacts the DNS one more
+ time to see if any other interface should have become available.
+ If not, the gateway is now disconnected.
+
+ The procedure will maximize the chances of detecting an ongoing
+ failover. It poses indeed two very specific problems, the potentially
+ long delays of a timer based procedure and the risk of confusion
+ caused by the use of cryptographic protections.
+
+ In order to automatically adapt to network load, MGCP specifies
+ exponentially increasing timers. If the initial timer is set to 200
+ milliseconds, the loss of a fifth retransmission will be detected
+ after about 6 seconds. This is probably an acceptable waiting delay
+ to detect a failover. The repetitions should continue after that
+ delay not only in order to perhaps overcome a transient connectivity
+ problem, but also in order to allow some more time for the execution
+ of a failover - waiting a total delay of 30 seconds is probably
+ acceptable.
+
+
+
+Arango, et al. Informational [Page 98]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ It is however important that the maximum delay of retransmissions be
+ bounded. Prior to any retransmission, it is checked that the time
+ elapsed since the sending of the initial datagram is no greater than
+ T- MAX. If more than T-MAX time has elapsed, the endpoint becomes
+ disconnected. The value T-MAX is related to the LONG-TIMER value: the
+ LONG-TIMER value is obtained by adding to T-MAX the maximum
+ propagation delay in the network.
+
+ Another potential cause of connection failure would be the reception
+ of a "wrong key" message, sent by a call agent that could not
+ authenticate the command, presumably because it had lost the security
+ parameters of the association. Such messages are actually not
+ authorized in IPSEC, and they should in fact not be taken at face
+ value: an attacker could easily forge "wrong key" messages in order
+ to precipitate the loss of a control connection. The current
+ algorithm ignores these messages, which translates into a strict
+ reliance on timers. The algorithm could in fact be improved, maybe
+ by executing a check with the key server of the call agent after
+ "Max1" repetitions.
+
+4.3. Race conditions
+
+ MGCP deals with race conditions through the notion of a "quarantine
+ list" and through explicit detection of desynchronization.
+
+ MGCP does not assume that the transport mechanism will maintain the
+ order of command and responses. This may cause race conditions, that
+ may be obviated through a proper behavior of the call agent. (Note
+ that some race conditions are inherent to distributed systems; they
+ would still occur, even if the commands were transmitted in strict
+ order.)
+
+ In some cases, many gateways may decide to restart operation at the
+ same time. This may occur, for example, if an area loses power or
+ transmission capability during an earthquake or an ice storm. When
+ power and transmission are reestablished, many gateways may decide to
+ send "RestartInProgress" commands simultaneously, leading to very
+ unstable operation.
+
+4.3.1. Quarantine list
+
+ MGCP controlled gateways will receive "notification requests" that
+ ask them to watch for a list of "events." The protocol elements that
+ determine the handling of these events are the "Requested Events"
+ list, the "Digit Map" and the "Detect Events" list.
+
+
+
+
+
+
+Arango, et al. Informational [Page 99]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ When the endpoint is initialized, the requested events list and the
+ digit map are empty. After reception of a command, the gateway
+ starts observing the endpoint for occurrences of the events mentioned
+ in the list.
+
+ The events are examined as they occur. The action that follows is
+ determined by the "action" parameter associated to the event in the
+ list of requested events, and also by the digit map. The events that
+ are defined as "accumulate" or "treat according to digit map" are
+ accumulated in a list of events, the events that are marked as
+ "treated according to the digit map" will additionally be accumulated
+ in the dialed string. This will go on until one event is encountered
+ that triggers a Notification to the "notified entity."
+
+ The gateway, at this point, will transmit the notification command
+ and will place the endpoint in a "notification" state. As long as the
+ endpoint is in this notification state, the events that are to be
+ detected on the endpoint are stored in a "quarantine" buffer for
+ later processing. The events are, in a sense, "quarantined." All
+ events that are specified by the union of the RequestedEvents
+ parameter and the most recently received DetectEvent parameter or, in
+ the absence of the latter, all events that are referred to in the
+ RequestedEvents, should be detected and quarantined, regardless of
+ the action associated to the event.
+
+ The endpoint exits the "notification state" when the acknowledgement
+ of the Notify command is received. The Notify command may be
+ retransmitted in the "notification state", as specified in section
+ 3.5. When the endpoint exits the "notification state" it resets the
+ list of observed events and the "current dial string" of the endpoint
+ to a null value.
+
+ Following that point, the behavior of the gateway depends on the
+ value of The QuarantineHandling parameter in the notification
+ request. If the Call Agent specified that it expected at most one
+ notification in response to the notification request command, then
+ the gateway should simply keep on accumulating events in the
+ quarantine list until it receives the next notification request
+ command.
+
+ If the gateway is authorized to send multiple successive Notify
+ commands, it will proceed as follows. When the gateway exits the
+ "notification state", it resets the list of observed events and the
+ "current dial string" of the endpoint to a null value and starts
+ processing the list of quarantined events, using the already received
+ list of requested events and digit map. When processing these events,
+
+
+
+
+
+Arango, et al. Informational [Page 100]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ the gateway may encounter an event which requires a Notify command to
+ be sent. If that is the case, the gateway can adopt one of the two
+ following behaviors:
+
+ * it can immediately transmit a Notify command that will report all
+ events that were accumulated in the list of observed events until
+ the triggering event, included, leaving the unprocessed events in
+ the quarantine list,
+
+ * or it can attempt to empty the quarantined list and transmit a
+ single Notify command reporting several sets of events and
+ possibly several dial strings. The dial string is reset to a null
+ value after each triggering event. The events that follow the last
+ triggering event are left in the quarantine list.
+
+ If the gateway transmits a Notify command, the end point will remain
+ in the "notification state" until the acknowledgement is received. If
+ the gateway does not find a quarantined event that requests a Notify
+ command, it places the end point in a normal state. Events are then
+ processed as they come, in exactly the same way as if a Notification
+ Request command had just been received.
+
+ A gateway may receive at any time a new Notification Request command
+ for the end point. When a new notification request is received in the
+ notification state, the gateway shall ensure that the pending
+ notification is received by the Call Agent prior to a successful
+ response to the new NotificationRequest. It does so by using the
+ "piggy-backing" functionality of the protocol. The messages will then
+ be sent in a single packetto the source of the new
+ NotificationRequest, regardless of respectively the source and
+ "notified entity" for the old and new command. The steps involved are
+ the following:
+
+ a) the gateway builds a message that carries in a single packet a
+ repetition of the old pending Notify command and the
+ acknowledgement of the new notification request.
+
+ b) the endpoint is then taken out of the "notification state" without
+ waiting for the acknowledgement of the notification command.
+
+ c) a copy of the unacknowledged Notify command command is kept until
+ an acknowledgement is received. If a timer elapses, the
+ notification will be repeated, in a packet that will also carry a
+ repetition of the acknowledgement of the notification request.
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 101]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ d) if the acknowledgement is lost, the Call Agent will retransmit the
+ Notification Request. The gateway will reply to this repetition
+ by retransmitting in a single packet the unacknowledged Notify and
+ the acknowledgement of the notification request.
+
+ e) if the gateway has to transmit a Notify before the previous Notify
+ is acknowledged, it should construct a packet that piggybacks a
+ repetition of the old Notify, a repetition of the acknowledgement
+ of the last notification request and the new Notify.
+
+ f) Gateways that cannot piggyback several packets in the same message
+ should elect to leave the endpoint in the "notification" state as
+ long as the last notification is not acknowledged.
+
+ After receiving the Notification Request command, the requested
+ events list and digit map (if a new one was provided) are replaced by
+ the newly received parameters, and the list of observed events and
+ accumulated dial string are reset to a null value. The behavior is
+ conditioned by the value of the QuarantineHandling parameter. The
+ parameter may specify that quarantined events, or previously observed
+ events, should be discarded, in which case they will be. If the
+ parameter specifies that the quarantined events should be processed,
+ the gateway will start processing the list of quarantined events or
+ previously observed events, using the newly received list of
+ requested events and digit map. When processing these events, the
+ gateway may encounter an event which requires a Notify command to be
+ sent. If that is the case, the gateway will immediately transmit a
+ Notify command that will report all events that were accumulated in
+ the list of observed events until the triggering event, included,
+ leaving the unprocessed events in the quarantine buffer, and will
+ enter the "notification state".
+
+ A new notification request may be received while the gateway has
+ accumulated events according to the previous notification requests,
+ but has not yet detected a notification-triggering events. The
+ handling of not-yet-notified events is determined, as with the
+ quarantined events, by the quarantine handling parameters:
+
+ * If the quarantine-handling parameter specifies that quarantined
+ events shall be ignored, the observed event list is simply reset.
+
+ * If the quarantine-handling parameter specifies that quarantined
+ events shall be processed, the observed event list is transferred
+ to the quarantined event list. The observed event list is then
+ reset, and the quarantined event list is processed.
+
+
+
+
+
+
+Arango, et al. Informational [Page 102]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Call Agents SHOULD provide the response to a successful Notify
+ message and the new NotificationRequest in the same datagram using
+ the piggy-backing mechanism.
+
+4.3.2. Explicit detection
+
+ A key element of the state of several endpoints is the position of
+ the hook. A race condition may occur when the user decides to go
+ off-hook before the Call Agent has the time to ask the gateway to
+ notify an off hook event (the "glare" condition well known in
+ telephony), or if the user goes on-hook before the Call Agent has the
+ time to request the event's notification.
+
+ To avoid this race condition, the gateway should check the condition
+ of the endpoint before acknowledging a NotificationRequest. It should
+ return an error:
+
+ 1- If the gateway is requested to notify an "off hook" transition
+ while the phone is already off hook,
+
+ 2- If the gateway is requested to notify an "on hook" or "flash hook"
+ condition while the phone is already on hook.
+
+ It should be noted, that the condition check is performed at the time
+ the notification request is received, where as the actual event that
+ caused the current condition may have either been reported, or
+ ignored earlier, or it may currently be quarantined.
+
+ The other state variables of the gateway, such as the list of
+ RequestedEvent or list of requested signals, are entirely replaced
+ after each successful NotificationRequest, which prevents any long
+ term discrepancy between the Call Agent and the gateway.
+
+ When a NotificationRequest is unsuccessful, whether it is included in
+ a connection-handling command or not, the gateway will simply
+ continue as if the command had never been received. As all other
+ transactions, the NotificationRequest should operate as an atomic
+ transaction, thus any changes initiated as a result of the command
+ should be reverted.
+
+ Another race condition may occur when a Notify is issued shortly
+ before the reception by the gateway of a NotificationRequest. The
+ RequestIdentifier is used to correlate Notify commands with
+ NotificationRequest commands.
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 103]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+4.3.3. Ordering of commands, and treatment of disorder
+
+ MGCP does not mandate that the underlying transport protocol
+ guarantees the sequencing of commands sent to a gateway or an
+ endpoint. This property tends to maximize the timeliness of actions,
+ but it has a few draw backs. For example:
+
+ * Notify commands may be delayed and arrive to the call agent after
+ the transmission of a new Notification Request command,
+
+ * If a new NotificationRequest is transmitted before a previous one
+ is acknowledged, there is no guarantee that the previous one will
+ not be received in second position.
+
+ Call Agents that want to guarantee consistent operation of the end
+ points can use the following rules:
+
+ 1) When a gateway handles several endpoints, commands pertaining to
+ the different endpoints can be sent in parallel, for example
+ following a model where each endpoint is controlled by its own
+ process or its own thread.
+
+ 2) When several connections are created on the same endpoint,
+ commands pertaining to different connections can be sent in
+ parallel.
+
+ 3) On a given connection, there should normally be only one
+ outstanding command (create or modify). However, a
+ DeleteConnection command can be issued at any time. In
+ consequence, a gateway may sometimes receive a ModifyConnection
+ command that applies to a previously deleted connection. Such
+ commands should be ignored, and an error code should be returned.
+
+ 4) On a given endpoint, there should normally be only one outstanding
+ NotificationRequest command at any time. The RequestId parameter
+ should be used to correlate Notify commands with the triggering
+ notification request.
+
+ 5) In some cases, an implicitly or explicitly wildcarded
+ DeleteConnection command that applies to a group of endpoints can
+ step in front of a pending CreateConnection command. The Call
+ Agent should individually delete all connections whose completion
+ was pending at the time of the global DeleteConnection command.
+ Also, new CreateConnection commands for endpoints named by the
+ wild-carding cannot be sent until the wild-carded DeleteConnection
+ command is acknowledged.
+
+
+
+
+
+Arango, et al. Informational [Page 104]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ 6) When commands are embedded within each other, sequencing
+ requirements for all commands must be adhered to. For example a
+ Create Connection command with a Notification Request in it must
+ adhere to the sequencing for CreateConnection and
+ NotificationRequest at the same time.
+
+ 7) AuditEndpoint and AuditConnection is not subject to any
+ sequencing.
+
+ 8) RestartInProgress must always be the first command sent by an
+ endpoint as defined by the restart procedure. Any other command or
+ response must be delivered after this RestartInProgress command
+ (piggy-backing allowed).
+
+ 9) When multiple messages are piggy-backed in a single packet, the
+ messages are always processed in order.
+
+ These rules do not affect the gateway, which should always respond to
+ commands.
+
+4.3.4. Fighting the restart avalanche
+
+ Let's suppose that a large number of gateways are powered on
+ simultaneously. If they were to all initiate a RestartInProgress
+ transaction, the call agent would very likely be swamped, leading to
+ message losses and network congestion during the critical period of
+ service restoration. In order to prevent such avalanches, the
+ following behavior is suggested:
+
+ 1) When a gateway is powered on, it should initiate a restart timer
+ to a random value, uniformly distributed between 0 and a maximum
+ waiting delay (MWD). Care should be taken to avoid synchronicity
+ of the random number generation between multiple gateways that
+ would use the same algorithm.
+
+ 2) The gateway should then wait for either the end of this timer, the
+ reception of a command from the call agent, or the detection of a
+ local user activity, such as for example an off-hook transition on
+ a residential gateway.
+
+ 3) When the timer elapses, when a command is received, or when an
+ activity is detected, the gateway should initiate the restart
+ procedure.
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 105]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The restart procedure simply requires the endpoint to guarantee that
+ the first message (command or response) that the Call Agent sees from
+ this endpoint is a RestartInProgress message informing the Call Agent
+ about the restart. The endpoint is free to take full advantage of
+ piggy-backing to achieve this.
+
+ It is expected that each endpoint in a gateway will have a
+ provisionable Call Agent, i.e., "notified entity", to direct the
+ initial restart message towards. When the collection of endpoints in
+ a gateway is managed by more than one Call Agent, the above procedure
+ must be performed for each collection of endpoints managed by a given
+ Call Agent. The gateway MUST take full advantage of wild-carding to
+ minimize the number of RestartInProgress messages generated when
+ multiple endpoints in a gateway restart and the endpoints are managed
+ by the same Call Agent.
+
+ The value of MWD is a configuration parameter that depends on the
+ type of the gateway. The following ]reasoning can be used to
+ determine the value of this delay on residential gateways.
+
+ Call agents are typically dimensioned to handle the peak hour traffic
+ load, during which, in average, 10% of the lines will be busy,
+ placing calls whose average duration is typically 3 minutes. The
+ processing of a call typically involves 5 to 6 MGCP transactions
+ between each end point and the call agent. This simple calculation
+ shows that the call agent is expected to handle 5 to 6 transactions
+ for each end point, every 30 minutes on average, or, to put it
+ otherwise, about one transaction per end point every 5 to 6 minutes
+ on average. This suggest that a reasonable value of MWD for a
+ residential gateway would be 10 to 12 minutes. In the absence of
+ explicit configuration, residential gateways should adopt a value of
+ 600 seconds for MWD.
+
+ The same reasoning suggests that the value of MWD should be much
+ shorter for trunking gateways or for business gateways, because they
+ handle a large number of endpoints, and also because the usage rate
+ of these endpoints is much higher than 10% during the peak busy hour,
+ a typical value being 60%. These endpoints, during the peak hour,
+ are this expected to contribute about one transaction per minute to
+ the call agent load. A reasonable algorithm is to make the value of
+ MWD per "trunk" endpoint six times shorter than the MWD per
+ residential gateway, and also inversely proportional to the number of
+ endpoints that are being restarted. for example MWD should be set to
+ 2.5 seconds for a gateway that handles a T1 line, or to 60
+ milliseconds for a gateway that handles a T3 line.
+
+
+
+
+
+
+Arango, et al. Informational [Page 106]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+4.3.5. Disconnected Endpoints
+
+ In addition to the restart procedure, gateways also have a
+ "disconnected" procedure, which is initiated when an endpoint becomes
+ "disconnected" as described in Section 3.4.2. It should here be
+ noted, that endpoints can only become disconnected when they attempt
+ to communicate with the Call Agent. The following steps are followed
+ by an endpoint that becomes "disconnected":
+
+ 1. A "disconnected" timer is initialized to a random value, uniformly
+ distributed between 0 and a provisionable "disconnected" initial
+ waiting delay (Tdinit), e.g., 15 seconds. Care MUST be taken to
+ avoid synchronicity of the random number generation between
+ multiple gateways and endpoints that would use the same algorithm.
+
+ 2. The gateway then waits for either the end of this timer, the
+ reception of a command from the call agent, or the detection of a
+ local user activity for the endpoint, such as for example an off-
+ hook transition.
+
+ 3. When the "disconnected" timer elapses, when a command is received,
+ or when a local user activity is detected, the gateway initiates
+ the "disconnected" procedure for the endpoint. In the case of
+ local user activity, a provisionable "disconnected" minimum
+ waiting delay (Tdmin) must furthermore have elapsed since the
+ gateway became disconnected or the last time it initiated the
+ "disconnected" procedure in order to limit the rate at which the
+ procedure is performed.
+
+ 4. If the "disconnected" procedure still left the endpoint
+ disconnected, the "disconnected" timer is then doubled, subject to
+ a provisionable "disconnected" maximum waiting delay (Tdmax),
+ e.g., 600 seconds, and the gateway proceeds with step 2 again.
+
+ The "disconnected" procedure is similar to the restart procedure in
+ that it now simply states that the endpoint MUST send a
+ RestartInProgress command to the Call Agent informing it that the
+ endpoint was disconnected and furthermore guarantee that the first
+ message (command or response) that the Call Agent now sees from this
+ endpoint MUST be this RestartInProgress command. The endpoint MUST
+ take full advantage of piggy-backing in achieving this. The Call
+ Agent may then for instance decide to audit the endpoint, or simply
+ clear all connections for the endpoint.
+
+ This specification purposely does not specify any additional behavior
+ for a disconnected endpoint. Vendors MAY for instance choose to
+ provide silence, play reorder tone, or even enable a downloaded wav
+ file to be played.
+
+
+
+Arango, et al. Informational [Page 107]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The default value for Tdinit is 15 seconds, the default value for
+ Tdmin, is 15 seconds, and the default value for Tdmax is 600 seconds.
+
+5. Security requirements
+
+ If unauthorized entities could use the MGCP, they would be able to
+ set-up unauthorized calls, or to interfere with authorized calls. We
+ expect that MGCP messages will always be carried over secure Internet
+ connections, as defined in the IP security architecture as defined in
+ RFC 2401, using either the IP Authentication Header, defined in RFC
+ 2402, or the IP Encapsulating Security Payload, defined in RFC 2406.
+ The complete MGCP protocol stack would thus include the following
+ layers:
+
+ ________________________________
+ | MGCP |
+ |_______________________________|
+ | UDP |
+ |_______________________________|
+ | IP security |
+ | (authentication or encryption)|
+ |_______________________________|
+ | IP |
+ |_______________________________|
+ | transmission media |
+ |_______________________________|
+
+ Adequate protection of the connections will be achieved if the
+ gateways and the Call Agents only accept messages for which IP
+ security provided an authentication service. An encryption service
+ will provide additional protection against eavesdropping, thus
+ forbidding third parties from monitoring the connections set up by a
+ given endpoint
+
+ The encryption service will also be requested if the session
+ descriptions are used to carry session keys, as defined in SDP.
+
+ These procedures do not necessarily protect against denial of service
+ attacks by misbehaving gateways or misbehaving call agents. However,
+ they will provide an identification of these misbehaving entities,
+ which should then be deprived of their authorization through
+ maintenance procedures.
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 108]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+5.1. Protection of media connections
+
+ MGCP allows call agent to provide gateways with "session keys" that
+ can be used to encrypt the audio messages, protecting against
+ eavesdropping.
+
+ A specific problem of packet networks is "uncontrolled barge-in."
+ This attack can be performed by directing media packets to the IP
+ address and UDP port used by a connection. If no protection is
+ implemented, the packets will be decompressed and the signals will be
+ played on the "line side".
+
+ A basic protection against this attack is to only accept packets from
+ known sources, checking for example that the IP source address and
+ UDP source port match the values announced in the "remote session
+ description." But this has two inconveniences: it slows down
+ connection establishment and it can be fooled by source spoofing:
+
+ * To enable the address-based protection, the call agent must obtain
+ the remote session description of the e-gress gateway and pass it
+ to the in-gress gateway. This requires at least one network round
+ trip, and leaves us with a dilemma: either allow the call to
+ proceed without waiting for the round trip to complete, and risk
+ for example "clipping" a remote announcement, or wait for the full
+ round trip and settle for slower call-set-up procedures.
+
+ * Source spoofing is only effective if the attacker can obtain valid
+ pairs of source destination addresses and ports, for example by
+ listening to a fraction of the traffic. To fight source spoofing,
+ one could try to control all access points to the network. But
+ this is in practice very hard to achieve.
+
+ An alternative to checking the source address is to encrypt and
+ authenticate the packets, using a secret key that is conveyed during
+ the call set-up procedure. This will no slow down the call set-up,
+ and provides strong protection against address spoofing.
+
+6. Event packages and end point types
+
+ This section provides an initial definition of packages and event
+ names. More packages can be defined in additional documents.
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 109]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+6.1. Basic packages
+
+ The list of basic packages includes the following:
+
+ _________________________________________
+ | Package | name |
+ |______________________________|_________|
+ | Generic Media Package | G |
+ | DTMF package | D |
+ | MF Package | M |
+ | Trunk Package | T |
+ | Line Package | L |
+ | Handset Package | H |
+ | RTP Package | R |
+ | Network Access Server Package| N |
+ | Announcement Server Package | A |
+ | Script Package | Script|
+ |______________________________|_________|
+
+
+ In the tables of events for each package, there are five columns:
+
+ Symbol: the unique symbol used for the event
+ Definition: a short description of the event
+
+ R: an x appears in this column is the event can be Requested by
+ the call agent.
+
+ S: if nothing appears in this column for an event, then the event
+ cannot be signaled on command by the call agent. Otherwise, the
+ following symbols identify the type of event:
+
+ OO On/Off signal. The signal is turned on until commanded by the
+ call agent to turn it off, and vice versa.
+
+ TO Timeout signal. The signal lasts for a given duration unless
+ it is superseded by a new signal.
+
+ BR Brief signal. The event has a short, known duration.
+
+ Duration: specifies the duration of TO signals.
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 110]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+6.1.1. Generic Media Package
+
+ Package Name: G
+
+ The generic media package group the events and signals that can be
+ observed on several types of endpoints, such as trunking gateways,
+ access gateways or residential gateways.
+
+ _____________________________________________________________________
+ | Symbol | Definition | R | S Duration |
+ |__________|____________________________|_____|______________________|
+ | mt | Modem detected | x | |
+ | ft | Fax tone detected | x | |
+ | ld | Long duration connection | x | |
+ | pat(###) | Pattern ### detected | x | OO |
+ | rt | Ringback tone | | TO |
+ | rbk(###) | ring back on connection | | TO 180 seconds |
+ | cf | Confirm tone | | BR |
+ | cg | Network Congestion tone | | TO |
+ | it | Intercept tone | | OO |
+ | pt | Preemption tone | | OO |
+ | of | report failure | x | |
+ |__________|____________________________|_____|______________________|
+
+ The signals are defined as follows:
+
+ The pattern definition can be used for specific algorithms such as
+ answering machine detection, tone detection, and the like.
+
+ Ring back tone (rt)
+ an Audible Ring Tone, a combination of two AC tones with
+ frequencies of 440 and 480 Hertz and levels of -19 dBm each, to
+ give a combined level of -16 dBm. The cadence for Audible Ring
+ Tone is 2 seconds on followed by 4 seconds off. See GR- 506-CORE -
+ LSSGR: SIGNALING, Section 17.2.5.
+
+ Ring back on connection
+ A ring back tone, applied to the connection whose identifier is
+ passed as a parameter.
+
+ The "long duration connection" is detected when a connection has been
+ established for more than 1 hour.
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 111]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+6.1.2. DTMF package
+
+ Package name: D
+
+ _______________________________________________________________
+ | Symbol | Definition | R | S Duration |
+ |________|___________________________|_____|___________________|
+ | 0 | DTMF 0 | x | BR |
+ | 1 | DTMF 1 | x | BR |
+ | 2 | DTMF 2 | x | BR |
+ | 3 | DTMF 3 | x | BR |
+ | 4 | DTMF 4 | x | BR |
+ | 5 | DTMF 5 | x | BR |
+ | 6 | DTMF 6 | x | BR |
+ | 7 | DTMF 7 | x | BR |
+ | 8 | DTMF 8 | x | BR |
+ | 9 | DTMF 9 | x | BR |
+ | # | DTMF # | x | BR |
+ | * | DTMF * | x | BR |
+ | A | DTMF A | x | BR |
+ | B | DTMF B | x | BR |
+ | C | DTMF C | x | BR |
+ | D | DTMF D | x | BR |
+ | L | long duration indicator | x | 2 seconds|
+ | X | Wildcard, match | x | |
+ | | any digit 0-9 | | |
+ | T | Interdigit timer | x | 4 seconds|
+ | of | report failure | x | |
+ |________|___________________________|_____|___________________|
+
+ The "interdigit timer" T is a digit input timer that can be used in
+ two ways:
+
+ * When timer T is used with a digit map, the timer is not started
+ until the first digit is entered, and the timer is restarted after
+ each new digit is entered until either a digit map match or
+ mismatch occurs. In this case, timer T functions as an inter-digit
+ timer.
+
+ * When timer T is used without a digit map, the timer is started
+ immediately and simply cancelled (but not restarted) as soon as a
+ digit is entered. In this case, timer T can be used as an
+ interdigit timer when overlap sending is used.
+
+ When used with a digit map, timer T takes on one of two values,
+ T(partial) or T(critical). When at least one more digit is
+ required for the digit string to match any of the patterns in the
+ digit map, timer T takes on the value T(partial), corresponding to
+
+
+
+Arango, et al. Informational [Page 112]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ partial dial timing. If a timer is all that is required to produce
+ a match, timer T takes on the value T(critical) corresponding to
+ critical timing. When timer T is used without a digit map, timer T
+ takes on the value T(critical). The default value for T(partial)
+ is 16 seconds and the default value for T(critical) is 4 seconds.
+ The provisioning process may alter both of these.
+
+ The "long duration indicator" is observed when a DTMF signal is
+ produced for a duration larger than two seconds. In this case,
+ the gateway will detect two successive events: first, when the
+ signal has been recognized, the DTMF signal, and then, 2 seconds
+ later, the long duration signal.
+
+6.1.3. MF Package
+
+ Package Name: M
+
+ ________________________________________________________
+ | Symbol | Definition | R | S Duration |
+ |________|____________________|_____|___________________|
+ | 0 | MF 0 | x | BR |
+ | 1 | MF 1 | x | BR |
+ | 2 | MF 2 | x | BR |
+ | 3 | MF 3 | x | BR |
+ | 4 | MF 4 | x | BR |
+ | 5 | MF 5 | x | BR |
+ | 6 | MF 6 | x | BR |
+ | 7 | MF 7 | x | BR |
+ | 8 | MF 8 | x | BR |
+ | 9 | MF 9 | x | BR |
+ | X | Wildcard, match | x | |
+ | | any digit 0-9 | | |
+ | T | Interdigit timer | x | 4 seconds|
+ | K0 | MF K0 or KP | x | BR |
+ | K1 | MF K1 | x | BR |
+ | K2 | MF K2 | x | BR |
+ | S0 | MF S0 or ST | x | BR |
+ | S1 | MF S1 | x | BR |
+ | S2 | MF S2 | x | BR |
+ | S3 | MF S3 | x | BR |
+ | wk | Wink | x | BR |
+ | wko | Wink off | x | BR |
+ | is | Incoming seizure | x | OO |
+ | rs | Return seizure | x | OO |
+ | us | Unseize circuit | x | OO |
+ | of | report failure | x | |
+ |________|____________________|_____|___________________|
+
+
+
+
+Arango, et al. Informational [Page 113]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The definition of the MF package events is as follows:
+
+ Wink
+ A transition from unseized to seized to unseized trunk states
+ within a specified period. Typical seizure period is 100-350
+ msec.)
+
+ Incoming seizure
+ Incoming indication of call attempt.
+
+ Return seizure:
+ Seizure in response to outgoing seizure.
+
+ Unseize circuit:
+ Unseizure of a circuit at the end of a call.
+
+ Wink off:
+ A signal used in operator services trunks. A transition from
+ seized to unseized to seized trunk states within a specified
+ period of 100-350 ms. (To be checked)
+
+6.1.4. Trunk Package
+
+ Package Name: T
+
+ _____________________________________________________________________
+ | Symbol | Definition | R | S Duration |
+ |________|________________________________|_____|____________________|
+ | co1 | Continuity tone (single tone,| x | OO |
+ | | or return tone) | | |
+ | co2 | Continuity test (go tone, | x | OO |
+ | | in dual tone procedures) | | |
+ | lb | Loopback | | OO |
+ | om | Old Milliwatt Tone (1000 Hz) | x | OO |
+ | nm | New Milliwatt Tone (1004 Hz) | x | OO |
+ | tl | Test Line | x | OO |
+ | zz | No circuit | x | OO |
+ | as | Answer Supervision | x | OO |
+ | ro | Reorder Tone | x | TO 30 seconds|
+ | of | report failure | x | |
+ | bl | Blocking | | OO |
+ |________|________________________________|_____|____________________|
+
+ The definition of the trunk package signal events is as follows:
+
+ Continuity Tone (co1):
+ A tone at 2010 + or - 30 Hz.
+
+
+
+
+Arango, et al. Informational [Page 114]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Continuity Test (co2):
+ A tone at the 1780 + or - 30 Hz.
+
+ Milliwatt Tones:
+ Old Milliwatt Tone (1000 Hz), New Milliwatt Tone (1004 Hz)
+
+ Line Test:
+ 105 Test Line test progress tone (2225 Hz + or - 25 Hz at -10 dBm0
+ + or -- 0.5dB).
+
+ No circuit:
+ (that annoying tri-tone, low to high)
+
+ Answer Supervision:
+
+ Reorder Tone:
+ Reorder tone is a combination of two AC tones with frequencies of
+ 480 and 620 Hertz and levels of -24 dBm each, to give a combined
+ level of -21 dBm. The cadence for Station Busy Tone is 0.25
+ seconds on followed by 0.25 seconds off, repeating continuously.
+ See GR-506-CORE - LSSGR: SIGNALING, Section 17.2.7.
+
+ Blocking:
+ The call agent can place the circuit in a blocked state by
+ applying the "bl(+)" signal to the endpoint. It can unblock it by
+ applying the "bl(-)" signal.
+
+ The continuity tones are used when the call agent wants to initiate a
+ continuity test. There are two types of tests, single tone and dual
+ tone. The Call agent is expected to know, through provisioning
+ information, which test should be applied to a given endpoint. For
+ example, the call agent that wants to initiate a single frequency
+ test will send to the gateway a command of the form:
+
+ RQNT 1234 epx-t1/17@tgw2.example.net
+ X: AB123FE0
+ S: co1
+ R: co1
+
+ If it wanted instead to initiate a dual-tone test, it would send the
+ command:
+
+ RQNT 1234 epx-t1/17@tgw2.example.net
+ X: AB123FE0
+ S: co2
+ R: co1
+
+
+
+
+
+Arango, et al. Informational [Page 115]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The gateway would send the requested signal, and in both cases would
+ look for the return of the 2010 Hz tone (co1). When it detects that
+ tone, it will send the corresponding notification.
+
+ The tones are of type OO: the gateway will keep sending them until it
+ receives a new notification request.
+
+6.1.5. Line Package
+
+ Package Name: L
+
+________________________________________________________________________
+|Symbol | Definition | R | S Duration |
+|_____________|______________________________|_____|___________________|
+|adsi(string) | adsi display | | BR |
+|vmwi | visual message | | OO |
+| | waiting indicator | | |
+|hd | Off hook transition | x | |
+|hu | On hook transition | x | |
+|hf | Flash hook | x | |
+|aw | Answer tone | x | OO |
+|bz | Busy tone | | TO 30 seconds |
+|ci(ti,nu,na) | Caller-id | | BR |
+|wt | Call Waiting tone | | TO 30 seconds |
+|wt1, wt2, | Alternative call | | |
+|wt3, wt4 | waiting tones | | |
+|dl | Dial tone | | TO 16 seconds |
+|mwi | Message waiting ind. | | TO 16 seconds |
+|nbz | Network busy | x | OO |
+| | (fast cycle busy) | | |
+|ro | Reorder tone | | TO 30 seconds |
+|rg | Ringing | | TO 180 seconds|
+|r0, r1, r2, | Distinctive ringing | | TO 180 seconds|
+|r3, r4, r5, | | | |
+|r6 or r7 | | | |
+|rs | Ringsplash | | BR |
+|p | Prompt tone | x | BR |
+|e | Error tone | x | BR |
+|sl | Stutter dialtone | | TO 16 seconds |
+|v | Alerting Tone | | OO |
+|y | Recorder Warning Tone | | OO |
+|sit | SIT tone | | |
+|z | Calling Card Service Tone | | OO |
+|oc | Report on completion | x | |
+|ot | Off hook warning tone | | TO indefinite |
+|s(###) | Distinctive tone pattern | x | BR |
+|of | report failure | x | |
+|_____________|______________________________|_____|___________________|
+
+
+
+Arango, et al. Informational [Page 116]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The definition of the tones is as follows:
+
+ Dial tone:
+ A combined 350 + 440 Hz tone.
+
+ Visual Message Waiting Indicator
+ The transmission of the VMWI messages will conform to the
+ requirements in Section 2.3.2, "On-hook Data Transmission Not
+ Associated with Ringing" in TR-H-000030 and the CPE guidelines in
+ SR-TSV-002476. VMWI messages will only be sent from the SPCS when
+ the line is idle. If new messages arrive while the line is busy,
+ the VMWI indicator message will be delayed until the line goes
+ back to the idle state. The CA should periodically refresh the
+ CPE's visual indicator. See TR-NWT-001401 - Visual Message Waiting
+ Indicator Generic Requirements; and GR- 30-CORE - Voiceband Data
+ Transmission Interface.
+
+ Message waiting Indicator
+ See GR-506-CORE, 17.2.3.
+
+ Alerting Tone:
+ a 440 Hz Tone of 2 second duration followed by 1/2 second of tone
+ every 10 seconds.
+
+ Ring splash
+ Ringsplash, also known as "Reminder ring" is a burst of ringing
+ that may be applied to the physical forwarding line (when idle) to
+ indicate that a call has been forwarded and to remind the user
+ that a CF subfeature is active. In the US, it is defined to be a
+ 0.5(-0,+0.1) second burst of power ringing. See TR-TSY-000586 -
+ Call Forwarding Subfeatures.
+
+ Call waiting tone
+ Call Waiting tone is defined in GR-506-CORE, 14.2. Call Waiting
+ feature is defined in TR-TSY-000571. By defining "wt" as a TO
+ signal you are really defining the feature which seems wrong to me
+ (given the spirit of MGCP), hence the definition of "wt" as a BR
+ signal in ECS, per GR-506-CORE. Also, it turns out that there is
+ actually four different call waiting tone patterns (see GR-506-
+ CORE, 14.2) so we have wt1, wt2, wt3, wt4.
+
+ Caller Id (ci(time, number, name)):
+ The caller-id event carries three parameters, the time of the
+ call, the calling number and the calling name. Each of the three
+ fields are optional, however each of the commas will always be
+ included. See TR-NWT-001188, GR-30-CORE, and TR-NWT-000031.
+
+
+
+
+
+Arango, et al. Informational [Page 117]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Recorder Warning Tone:
+ 1400 Hz of Tone of 0.5 second duration every 15 seconds.
+
+ SIT tone:
+ used for indicating a line is out of service.
+
+ Calling Card Service Tone:
+ 60 ms of 941 + 1477 Hz and 940 ms of 350 + 440 Hz (dial tone),
+ decaying exponentially with a time constant of 200 ms.
+
+ Distinctive tone pattern:
+ where ### is any number between 000 and 999, inclusive. Can be
+ used for distinctive ringing, customized dial tone, etc.
+
+ Report on completion
+ The report on completion event is detected when the gateway was
+ asked to perform one or several signals of type TO on the
+ endpoint, and when these signals were completed without being
+ stopped by the detection of a requested event such as off-hook
+ transition or dialed digit. The completion report may carry as
+ parameter the name of the signal that came to the end of its live
+ time, as in:
+
+ O: L/oc(L/dl)
+
+ Ring back on connection
+ A ring back tone, applied to the connection wghose identifier is
+ passed as a parameter.
+
+ We should note that many of these definitions vary from country to
+ country. The frequencies listed above are the one in use in North
+ America. There is a need to accommodate different tone sets in
+ different countries, and there is still an ongoing debate on the best
+ way to meet that requirement:
+
+ * One solution is to define different event packages specifying for
+ example the German dialtone as "L-DE/DL".
+
+ * Another solution is to use a management interface to specify on an
+ endpoint basis which frequency shall be associated to what tone.
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 118]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+6.1.6. Handset emulation package
+
+ Package Name: H
+
+________________________________________________________________________
+|Symbol | Definition | R | S Duration |
+|_____________|______________________________|_____|___________________|
+|adsi(string) | adsi display | x | BR |
+|tdd | | | |
+|vmwi | | | |
+|hd | Off hook transition | x | OO |
+|hu | On hook transition | x | OO |
+|hf | Flash hook | x | BR |
+|aw | Answer tone | x | OO |
+|bz | Busy tone | x | OO |
+|wt | Call Waiting tone | x | TO 30 seconds |
+|dl | Dial tone (350 + 440 Hz) | x | TO 120 seconds|
+|nbz | Network busy | x | OO |
+| | (fast cycle busy) | | |
+|rg | Ringing | x | TO 30 seconds |
+|r0, r1, r2, | Distinctive ringing | x | TO 30 seconds |
+|r3, r4, r5, | | | |
+|r6 or r7 | | | |
+|p | Prompt tone | x | BR |
+|e | Error tone | x | BR |
+|sdl | Stutter dialtone | x | TO 16 seconds |
+|v | Alerting Tone | x | OO |
+|y | Recorder Warning Tone | x | OO |
+|t | SIT tone | x | |
+|z | Calling Card Service Tone | x | OO |
+|oc | Report on completion | x | |
+|ot | Off hook warning tone | x | OO |
+|s(###) | Distinctive tone pattern | x | BR |
+|of | report failure | x | |
+|_____________|______________________________|_____|___________________|
+
+
+ The handset emulation package is an extension of the line package, to
+ be used when the gateway is capable of emulating a handset. The
+ difference with the line package is that events such as "off hook"
+ can be signalled as well as detected.
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 119]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+6.1.7. RTP Package
+
+ Package Name: R
+
+ ____________________________________________________________________
+ | Symbol | Definition | R | S Duration|
+ |_________|________________________________|_____|__________________|
+ | UC | Used codec changed | x | |
+ | SR(###) | Sampling rate changed | x | |
+ | JI(###) | Jitter buffer size changed | x | |
+ | PL(###) | Packet loss exceeded | x | |
+ | qa | Quality alert | x | |
+ | co1 | Continuity tone (single tone,| x | OO |
+ | | or return tone) | | |
+ | co2 | Continuity test (go tone, | x | OO |
+ | | in dual tone procedures) | | |
+ | of | report failure | x | |
+ |_________|________________________________|_____|__________________|
+
+ Codec Changed:
+ Codec changed to hexadecimal codec number enclosed in parenthesis,
+ as in UC(15), to indicate the codec was changed to PCM mu-law.
+ Codec Numbers are specified in RFC 1890, or in a new definition of
+ the audio profiles for RTP that replaces this RFC. Some
+ implementations of media gateways may not allow the codec to be
+ changed upon command from the call agent. codec changed to codec
+ hexadecimal ##.
+
+ Sampling Rate Changed:
+ Sampling rate changed to decimal number in milliseconds enclosed
+ in parenthesis, as in SR(20), to indicate the sampling rate was
+ changed to 20 milliseconds. Some implementations of media
+ gateways may not allow the sampling rate to be changed upon
+ command from a call agent.
+
+ Jitter Buffer Size Changed:
+ When the media gateway has the ability to automatically adjust the
+ depth of the jitter buffer for received RTP streams, it is useful
+ for the media gateway controller to receive notification that the
+ media gateway has automatically increased its jitter buffer size
+ to accomodate increased or decreased variability in network
+ latency. The syntax for requesting notification is "JI", which
+ tells the media gateway that the controller wants notification of
+ any jitter buffer size changes. The syntax for notification from
+ the media gateway to the controller is "JI(####)", where the ####
+ is the new size of the jitter buffer, in milliseconds.
+
+
+
+
+
+Arango, et al. Informational [Page 120]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Packet Loss Exceeded:
+ Packet loss rate exceed the threshold of the specified decimal
+ number of packets per 100,000 packets, where the packet loss
+ number is contained in parenthesis. For example, PL(10) indicates
+ packets are being dropped at a rate of 1 in 10,000 packets.
+
+ Quality alert
+ The packet loss rate or the combination of delay and jitter exceed
+ a specified quality threshold.
+
+ The continuity tones are the same as those defined in the Trunk
+ package. They can be use in conjunction with the Network LoopBack or
+ Network Continuity Test modes to test the continuity of an RTP
+ circuit.
+
+ The "operation failure" code can be used to report problems such as
+ the loss of underlying connectivity. The observed event can include
+ as parameter the reason code of the failure.
+
+6.1.8. Network Access Server Package
+
+ Package Name: N
+
+ ____________________________________________________________
+ | Symbol | Definition | R | S Duration|
+ |________|__________________________|_____|_________________|
+ | pa | Packet arrival | x | |
+ | cbk | Call back request | x | |
+ | cl | Carrier lost | x | |
+ | au | Authorization succeeded| x | |
+ | ax | Authorization denied | x | |
+ | of | Report failure | x | |
+ |________|__________________________|_____|_________________|
+
+
+ The packet arrival event is used to notify that at least one packet
+ was recently sent to an Internet address that is observed by an
+ endpoint. The event report includes the Internet address, in
+ standard ASCII encoding, between parenthesis:
+
+ O: pa(192.96.41.1)
+
+ The call back event is used to notify that a call back has been
+ requested during the initial phase of a data connection. The event
+ report includes the identification of the user that should be called
+ back, between parenthesis:
+
+ O: cbk(user25)
+
+
+
+Arango, et al. Informational [Page 121]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+6.1.9. Announcement Server Package
+
+ Package Name: A
+
+ ___________________________________________________________________
+ | Symbol | Definition | R | S Duration|
+ |________________|________________________|_____|__________________|
+ | ann(url,parms) | Play an announcement | | TO variable|
+ | oc | Report on completion | x | |
+ | of | Report failure | x | |
+ |________________|________________________|_____|__________________|
+
+ The announcement action is qualified by an URL name and by a set of
+ initial parameters as in for example:
+
+ S: ann(http://scripts.example.net/all-lines-busy.au)
+
+ The "operation complete" event will be detected when the announcement
+ is played out. If the announcement cannot be played out, an operation
+ failure event can be returned. The failure may be explained by a
+ commentary, as in:
+
+ O: A/of(file not found)
+
+6.1.10. Script Package
+
+ Package Name: Script
+
+ ______________________________________________________________
+ | Symbol | Definition | R | S | Duration|
+ |___________|________________________|_____|______|___________|
+ | java(url) | Load a java script | | TO | variable|
+ | perl(url) | Load a perl script | | TO | variable|
+ | tcl(url) | Load a TCL script | | TO | variable|
+ | xml(url) | Load an XML script | | TO | variable|
+ | oc | Report on completion | x | | |
+ | of | Report failure | x | | |
+ |___________|________________________|_____|______|___________|
+
+ The "language" action define is qualified by an URL name and by a set
+ of initial parameters as in for example:
+
+ S: script/java(http://scripts.example.net/credit-
+ card.java,long,1234)
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 122]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ The current definition defines keywords for the most common
+ languages. More languages may be defined in further version of this
+ documents. For each language, an API specification will describe how
+ the scripts can issue local "notificationRequest" commands, and
+ receive the corresponding notifications.
+
+ The script produces an output which consists of one or several text
+ string, separated by commas. The text string are reported as a
+ commentary in the report on completion, as in for example:
+
+ O: script/oc(21223456794567,9738234567)
+
+ The failure report may also return a string, as in:
+
+ O: script/oc(21223456794567,9738234567)
+
+ The definition of the script environment and the specific actions in
+ that environment are for further study.
+
+6.2. Basic endpoint types and profiles
+
+ We define the following basic endpoint types and profiles:
+
+ * Trunk gateway (ISUP)
+
+ * Trunk gateway (MF)
+
+ * Network Access Server (NAS)
+
+ * Combined NAS/VOIP gateway
+
+ * Access Gateway
+
+ * Residential Gateway
+
+ * Announcement servers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 123]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ These gateways are supposed to implement the following packages
+
+ ___________________________________________________________
+ | Gateway | Supported packages |
+ |____________________________|_____________________________|
+ | Trunk gateway (ISUP) | GM, DTMF, TK, RTP |
+ | Trunk gateway (MF) | GM, MF, DTMF, TK, RTP |
+ | Network Access Server (NAS)| GM, MF, TK, NAS |
+ | Combined NAS/VOIP gateway | GM, MF, DTMF, TK, NAS, RTP|
+ | Access Gateway (VOIP) | GM, DTMF, MF, RTP |
+ | Access Gateway (VOIP+NAS) | GM, DTMF, MF, NAS, RTP |
+ | Residential Gateway | GM, DTMF, Line, RTP |
+ | Announcement Server | ANN, RTP |
+ |____________________________|_____________________________|
+
+
+ Advanced announcement servers may also support the Script package.
+
+ Advanced trunking servers may support the ANN package, the Script
+ package, and in some cases the Line and Handset package as well.
+
+7. Versions and compatibility
+
+7.1. Differences between version 1.0 and draft 0.5
+
+ Draft 0-5 was issued in February 1999, as the last update of draft
+ version 0.1. Version 1.0 benefits from implementation experience, and
+ also aligns as much as possible with the CableLabs' NCS project. The
+ main differences between the February draft and version 1.0 are:
+
+ * Specified more clearly that the encoding of three
+ LocalConnectionOptions parameters, Encoding Method, Packetization
+ Period and Bandwidth, shall follow the conventions laid out in
+ SDP.
+
+ * Specified how the quarantine handling parameter governs the
+ handling of detected but not yet specified events.
+
+ * Specified that unexpected timers or digits should trigger
+ transmission of the dialed string.
+
+ * Removed the digit map syntax description from section 2.1.5 (it
+ was redundant with section 3.4.)
+
+ * Corrected miscellaneous bugs in the formal syntax description.
+
+ * Aligned specification of commands with the CableLabs NCS
+ specification. This mostly affects the AuditEndpoint and
+
+
+
+Arango, et al. Informational [Page 124]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ RestartInProgress commands.
+
+ * Aligned the handling of retransmission with the CableLabs NCS
+ specification.
+
+ * Added the provisional response return code and corresponding
+ behavior description.
+
+ * Added an optional reason code parameter to restart in progress.
+
+ * Added the possibility to audit the restart method, restart delay
+ and reason code.
+
+7.2. Differences between draft-04 and draft-05
+
+ Differences are minor: corrected the copyright statement, and
+ corrected a bug in the formal description.
+
+7.3. Differences between draft-03 and draft-04
+
+ Draft 04 corrects a number of minor editing mistakes that were
+ pointed out during the review of draft 03, issued on February 1.
+
+7.4. Differences between draft-02 and draft-03
+
+ The main differences between draft-02, issued in January 22 1998, and
+ draft 03 are:
+
+ * Introduced a discussion on endpoint types,
+
+ * Introduced a discussion of the connection set-up procedure, and of
+ the role of connection parameters,
+
+ * Introduced a notation of the connection identifier within event
+ names,
+
+ * Documented the extension procedure for the LocalConnectionOptions
+ parameter and for the ConnectionParameters parameter,
+
+ * Introduced a three-way handshake procedure, using a ResponseAck
+ parameter, in order to allow gateways to delete copies of old
+ responses without waiting for a 30 seconds timer,
+
+ * Expanded the security section to include a discussion of
+ "uncontrolled barge-in."
+
+ * Propsed a "create two connections" command, as an appendix.
+
+
+
+
+Arango, et al. Informational [Page 125]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+7.5. Differences between draft-01 and draft-02
+
+ The main differences between draft-01, issued in November 1998, and
+ draft 02 are:
+
+ * Added an ABNF description of the protocol.
+
+ * Specification of an EndpointConfiguration command,
+
+ * Addition of a "two endpoints" mode in the create connection
+ command,
+
+ * Modification of the package wildcards from "$/$" to "*/all" at the
+ Request of early implementors,
+
+ * Revision of some package definitions to better align with external
+ specifications.
+
+ * Addition of a specification for the handling of "failover."
+
+ * Revision of the section on race conditions.
+
+7.6. The making of MGCP from IPDC and SGCP
+
+ MGCP version 0.1 results from the fusion of the SGCP and IPDC
+ proposals.
+
+7.7. Changes between MGCP and initial versions of SGCP
+
+ MGCP version 0.1 (which subsumes SGCP version 1.2) introduces the
+ following changes from SGCP version 1.1:
+
+ * Protocol name changed to MGCP.
+
+ * Introduce a formal wildcarding structure in the name of endpoints,
+ inspired from IPDC, and detailed the usage of wildcard names in
+ each operation.
+
+ * Naming scheme for events, introducing a package structure inspired
+ from IPDC.
+
+ * New operations for audit endpoint, audit connection (requested by
+ the Cablelabs) and restart (inspired from IPDC).
+
+ * New parameter to control the behavior of the notification request.
+
+ * Improved text on the detection and handling of race conditions.
+
+
+
+
+Arango, et al. Informational [Page 126]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * Syntax modification for event reporting, to incorporate package
+ names.
+
+ * Definition of basic event packages (inspired from IPDC).
+
+ * Incorporation of mandatory and optional extension parameters,
+ inspired by IPDC.
+
+ SGCP version 1.1 introduces the following changes from version SGCP
+ 1.0:
+
+ * Extension parameters (X-??:)
+
+ * Error Code 511 (Unrecognized extension).
+
+ * All event codes can be used in RequestEvent, SignalRequest and
+ ObservedEvent parameters.
+
+ * Error Code 512 (Not equipped to detect requested event).
+
+ * Error Code 513 (Not equipped to generate requested signal).
+
+ * Error Code 514 (Unrecognized announcement).
+
+ * Specific Endpoint-ID can be returned in creation commands.
+
+ * Changed the code for the ASDI display from "ad" to "asdi" to avoid
+ conflict with the digits A and D.
+
+ * Changed the code for the answer tone from "at" to "aw" to avoid
+ conflict with the digit A and the timer mark T
+
+ * Changed the code for the busy tone from "bt" to "bz" to avoid
+ conflict with the digit B and the timer mark T
+
+ * Specified that the continuity tone value is "co" (CT was
+ incorrectly used in several instances; CT conflicts with .)
+
+ * Changed the code for the dial tone from "dt" to "dl" to avoid
+ conflict with the digit D and the timer mark T
+
+ * Added a code point for announcement requests.
+
+ * Added a code point for the "wink" event.
+
+ * Set the "octet received" code in the "Connection Parameters" to
+ "OR" (was set to RO, but then "OR" was used throughout all
+ examples.)
+
+
+
+Arango, et al. Informational [Page 127]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * Added a "data" mode.
+
+ * Added a description of SDP parameters for the network access mode
+ (NAS).
+
+ * Added four flow diagrams for the network access mode.
+
+ * Incorporated numerous editing suggestions to make the description
+ easier to understand. In particular, cleared the confusion between
+ requests, queries, functions and commands.
+
+ * Defined the continuity test mode as specifying a dual-tone
+ transponder, while the loopback mode can be used for a single tone
+ test.
+
+ * Added event code "OC", operation completed.
+
+ * Added the specification of the "quarantine list", which clarifies
+ the expected handling of events and notifications.
+
+ * Added the specification of a "wildcard delete" operation.
+
+8. Security Considerations
+
+ Security issues are discussed in section 5.
+
+9. Acknowledgements
+
+ We want to thank here the many reviewers who provided us with advice
+ on the design of SGCP and then MGCP, notably Flemming Andreasen,
+ Sankar Ardhanari, Francois Berard, David Auerbach, Bob Biskner, David
+ Bukovinsky, Jerry Kamitses, Oren Kudevitzki, Barry Hoffner, Troy
+ Morley, Dave Oran, Jeff Orwick, John Pickens, Lou Rubin, Chip Sharp,
+ Paul Sijben, Kurt Steinbrenner, Joe Stone and Stuart Wray.
+
+ The version 0.1 of MGCP is heavily inspired by the "Internet Protocol
+ Device Control" (IPDC) designed by the Technical Advisory Committee
+ set up by Level 3 Communications. Whole sets of text have been
+ retrieved from the IP Connection Control protocol, IP Media Control
+ protocol, and IP Device Management. The authors wish to acknowledge
+ the contribution to these protocols made by Ilya Akramovich, Bob
+ Bell, Dan Brendes, Peter Chung, John Clark, Russ Dehlinger, Andrew
+ Dugan, Isaac Elliott, Cary FitzGerald, Jan Gronski, Tom Hess, Geoff
+ Jordan, Tony Lam, Shawn Lewis, Dave Mazik, Alan Mikhak, Pete
+ O'Connell, Scott Pickett, Shyamal Prasad, Eric Presworsky, Paul
+ Richards, Dale Skran, Louise Spergel, David Sprague, Raj Srinivasan,
+ Tom Taylor and Michael Thomas.
+
+
+
+
+Arango, et al. Informational [Page 128]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+10. References
+
+ * Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
+ A Transport Protocol for Real-Time Applications", RFC 1889,
+ January 1996.
+
+ * Schulzrinne, H., "RTP Profile for Audio and Video Conferences with
+ Minimal Control", RFC 1890, January 1996.
+
+ * Handley, M and V. Jacobson, "SDP: Session Description Protocol",
+ RFC 2327, April 1998.
+
+ * Handley, M., "SAP - Session Announcement Protocol", Work in
+ Progress.
+
+ * Handley, M., Schulzrinne, H. and E. Schooler, "Session Initiation
+ Protocol (SIP)", RFC 2543, March 1999.
+
+ * Schulzrinne, H., Rao, A. and R. Lanphier, "Real Time Streaming
+ Protocol (RTSP)", RFC 2326, April 1998.
+
+ * ITU-T, Recommendation Q.761, "FUNCTIONAL DESCRIPTION OF THE ISDN
+ USER PART OF SIGNALLING SYSTEM No. 7", (Malaga-Torremolinos, 1984;
+ modified at Helsinki, 1993)
+
+ * ITU-T, Recommendation Q.762, "GENERAL FUNCTION OF MESSAGES AND
+ SIGNALS OF THE ISDN USER PART OF SIGNALLING SYSTEM No. 7",
+ (MalagaTorremolinos, 1984; modified at Helsinki, 1993)
+
+ * ITU-T, Recommendation H.323 (02/98), "PACKET-BASED MULTIMEDIA
+ COMMUNICATIONS SYSTEMS."
+
+ * ITU-T, Recommendation H.225, "Call Signaling Protocols and Media
+ Stream Packetization for Packet Based Multimedia Communications
+ Systems."
+
+ * ITU-T, Recommendation H.245 (02/98), "CONTROL PROTOCOL FOR
+ MULTIMEDIA COMMUNICATION."
+
+ * Kent, S. and R. Atkinson, "Security Architecture for the Internet
+ Protocol", RFC 2401, November 1998.
+
+ * Kent, S. and R. Atkinson, "IP Authentication Header", RFC 2402,
+ November 1998.
+
+ * Kent, S. and R. Atkinson, "IP Encapsulating Security Payload
+ (ESP)", RFC 2406, November 1998.
+
+
+
+
+Arango, et al. Informational [Page 129]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ * Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+11. Authors' Addresses
+
+ Mauricio Arango
+ RSL COM Latin America
+ 6300 N.W. 5th Way, Suite 100
+ Ft. Lauderdale, FL 33309
+
+ Phone: (954) 492-0913
+ EMail: marango@rslcom.com
+
+
+ Andrew Dugan
+ Level3 Communications
+ 1450 Infinite Drive
+ Louisville, CO 80027
+
+ Phone: (303)926 3123
+ EMail: andrew.dugan@l3.com
+
+
+ Isaac Elliott
+ Level3 Communications
+ 1450 Infinite Drive
+ Louisville, CO 80027
+
+ Phone: (303)926 3123
+ EMail: ike.elliott@l3.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 130]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ Christian Huitema
+ Telcordia Technologies
+ MCC 1J236B
+ 445 South Street
+ Morristown, NJ 07960
+ U.S.A.
+
+ Phone: +1 973-829-4266
+ EMail: huitema@research.telcordia.com
+
+
+ Scott Pickett
+ Vertical Networks
+ 1148 East Arques Ave
+ Sunnyvale, CA 94086
+
+ Phone: (408) 523-9700 extension 200
+ EMail: ScottP@vertical.com
+
+
+ Further information is available on the SGCP web site:
+
+ http://www.argreenhouse.com/SGCP/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 131]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+12. Appendix A: Proposed "MoveConnection" command
+
+ It has been proposed to create a new command, that would move an
+ existing connection from one endpoint to another, on the same
+ gateway. This command would be specially useful for handling certain
+ call services, such as call forwarding between endpoints served by
+ the same gateway.
+
+ [SecondEndPointId,]
+ [ConnectionId,]
+ [LocalConnectionDescriptor]
+ <--- ModifyConnection(CallId,
+ EndpointId,
+ ConnectionId,
+ SecondEndPointId,
+ [NotifiedEntity,]
+ [LocalConnectionOptions,]
+ [Mode,]
+ [RemoteConnectionDescriptor,]
+ [Encapsulated NotificationRequest,]
+ [Encapsulated EndpointConfiguration])
+
+
+ The parameters used are the same as in the ModifyConnection command,
+ with the addition of a SecondEndpointId that identifies the endpoint
+ towards which the connection is moved.
+
+ The EndpointId should be the fully qualified endpoint identifier of
+ the endpoint on which the connection has been created. The local name
+ shall not use the wildcard convention.
+
+ The SecondEndpointId shall be the endpoint identifier of the endpoint
+ towards which the connection has been created. The "any of" wildcard
+ convention can be used, but not the "all of" convention. If the
+ SecondEndpointId parameter is unqualified, the gateway will choose a
+ value, that will be returned to the call agent as a response
+ parameter.
+
+ The command will result in the "move" of the existing connection to
+ the second endpoint. Depending on gateway implementations, the
+ connection identifier of the connection after the move may or may not
+ be the same as the connection identifier before the move. If it is
+ not the same, the new value is returned as a response parameter.
+
+ The intent of the command is to effect a local relocation of the
+ connection, without having to modify such transmission parameters as
+ IP addresses and port, and thus without forcing the call agent to
+ signal the change of parameters to the remote gateway, at the other
+
+
+
+Arango, et al. Informational [Page 132]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+ end of the connection. However, gateway architectures may not always
+ allow such transparent moves. For example, some architectures could
+ allow specific IP addresses to different boards that handles specific
+ group of endpoints. If for any reason the transmission parameters
+ have to be changed as a result of the move, the new
+ LocalConnectionDescriptor is returned as a response parameter.
+
+ The LocalConnectionOptions, Mode, and RemoteConnectionDescriptor,
+ when present, are applied after the move.
+
+ The RequestedEvents, RequestIdentifier, DigitMap, SignalRequests,
+ QuarantineHandling and DetectEvents parameters are optional. They
+ can be used by the Call Agent to transmit a NotificationRequest that
+ is executed simultaneously with the move of the connection. When
+ these parameters are present, the NotificationRequest applies to the
+ second endpoint.
+
+ When these parameters are present, the move and the
+ NotificationRequests should be synchronized, which means that both
+ should be accepted, or both refused. The NotifiedEntity parameter,
+ if present, applies to both the ModifyConnection and the
+ NotificationRequest command.
+
+ The command may carry an encapsulated EndpointConfiguration command,
+ that will also apply to the second endpoint. When this command is
+ present, the parameters of the EndpointConfiguration command are
+ inserted after the normal parameters of the MoveConnection with the
+ exception of the SecondEndpointId, which is not replicated. The End-
+ pointConfiguration command may be encapsulated together with an
+ encapsulated NotificationRequest command.
+
+ The encapsulated EndpointConfiguration command shares the fate of the
+ MoveConnection command. If the MoveConnection is rejected, the End-
+ pointConfiguration is not executed.
+
+12.1. Proposed syntax modification
+
+ The only syntax modification necessary for the addition of the
+ moveConnection command is the addition of the keyword MOVE to the
+ authorized values in the MGCPVerb clause of the formal syntax.
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 133]
+
+RFC 2705 Media Gateway Control Protocol (MGCP) October 1999
+
+
+13. Full Copyright Statement
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arango, et al. Informational [Page 134]
+