INTERNET DRAFT Isaac K. Elliott Level 3 Communications Title: draft-elliott-ipdc-media-00.txt Date: August 1998 IPDC Media Control Protocol Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as ``work in progress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). Abstract The protocol described in this document is a member of the IP Device Control (IPDC) family of protocols. The IPDC protocols are proposed as a protocol suite, components of which can be used individually or together to perform connection control, media control, and signaling transport for environments where the service control logic is separated from the network access server. Please see the references section for other IPDC documents. The protocol specification presented here is intended for use between a media gateway controller and a media gateway. The media gateway may be capable of acting as a voice over IP gateway, voice over ATM gateway, dialup modem media gateway, circuit switch, or cross- connect. Using the IP Media Control protocol presented here, the Elliott expires February 1999 [Page 1] INTERNET DRAFT IPDC Media Control Protocol August 1998 media gateway controller can send messages to the media gateway to cause events such as tones to be generated or detected within a media stream. Table of Contents 1 INTRODUCTION 1.1 BACKGROUND 2 IP MEDIA CONTROL FRAMEWORK OVERVIEW 3 PROTOCOL DEFINITION 3.1 SPECIFICATION OF REQUIREMENTS 3.2 MESSAGES 3.2.1 RQST - Media Control Request 3.2.2 NOTI - Media Event Notification 3.2.3 Reset 3.2.4 Script Query 3.2.5 Script Query Response 3.3 ATTRIBUTE VALUE PAIRS 3.3.1 Event Script AVP 3.3.2 Script Type AVP 3.3.3 Symbol Set AVP 3.3.4 Buffer Size AVP 3.3.5 Event Buffer AVP 3.3.6 Correlator ID AVP 3.3.7 Source Endpoint AVP 3.3.8 Correlator ID List AVP 3.4 SCRIPTING LANGUAGE 3.5 SYMBOL SET 3.6 EXAMPLES 3.6.1 Patterns 3.6.2 Pattern and Action Pairs 4 SECURITY CONSIDERATIONS 5 RIGHTS AND PERMISSIONS 6 REFERENCES 7 ACKNOWLEDGMENTS 8 AUTHOR'S ADDRESS 1 Introduction The protocol specification presented here is intended for use between a media gateway controller and a media gateway. The media gateway may be capable of acting as a voice over IP gateway, voice over ATM gateway, dialup modem media gateway, circuit switch, or cross- connect. Using the IP Media Control protocol presented here, the media gateway controller can send messages to the media gateway to cause events to be generated or detected within a media stream. Elliott expires February 1999 [Page 2] INTERNET DRAFT IPDC Media Control Protocol August 1998 1.1 Background This protocol is part of the IP Device Control (IPDC) family of protocols. The IPDC protocols have been proposed as a protocol suite which can be used individually or together to perform connection control, media control, and signaling transport for environments where the service control logic is separated from the network media gateway . Please see the references section for other IPDC documents. In many public and private telecommunications environments in-band media events and other events associated with bearer channels are used to signal actions of significance to the service logic layer. Examples include: * Ringing * Busy Signals * Call Waiting Tones * Flash-hook * DTMF Tone Dialing * MF Tone Dialing * Circuit Seizure * On Hook * Off Hook * Fax Tones * Modem Tones If service logic is removed from the device which processes the media path for a telephone, fax, or modem call, then a protocol must be introduced for controlling the detection and generation of events in the device. IPMC proposes a protocol to fill this need. 2 IP Media Control Framework Overview The IPMC Framework consists of three parts: * Messages for sending and receiving media control information between the controller and the media gateway. * A scripting language for creating instructions for the media gateway to detect or generate events. Scripts are sent to the media gateway from the controller within an IPMC message. The scripts instruct the media gateway to do anything from detecting a single event to executing an entire call model. Also, scripts can instruct the media gateway to find a URL representing a Java applet to execute, which allows scripts to reach an almost infinite level of control and specificity. Elliott expires February 1999 [Page 3] INTERNET DRAFT IPDC Media Control Protocol August 1998 * Symbols used in the scripting language and in event reporting to represent media events detected or generated. Although an introductory symbol set is presented in this document, the protocol defined here allows for different symbol sets to be used. Because there are many different in-band signaling environments presently in use in telecommunications networks around the world, the IPMC framework also contains a concept of packages. Packages are groupings of all of the symbols required for a particular kind of line interface. Packages can also be adapted to represent ISDN signaling in terms of media events, if an interworking function is implemented in an media gateway to convert the ISDN messages to media event reports. 3 Protocol Definition 3.1 Specification of Requirements In this document, several words are used to signify the requirements of the specification. These words are often capitalized. MUST THIS WORD, OR THE ADJECTIVE "REQUIRED", MEANS THAT THE DEFINITION IS AN ABSOLUTE REQUIREMENT OF THE SPECIFICATION. MUST NOT This phrase means that the definition is an absolute prohibition of the specification. SHOULD This word, or the adjective "recommended", means there may exist valid reasons in particular circumstances to ignore this item, but the full implications must be understood and carefully weighed before choosing a different course. MAY This word, or the adjective "optional", means that this item is one of an allowed set of alternatives. An implementation which does not include this option MUST be prepared to interoperate with another implementation which does include the option. Elliott expires February 1999 [Page 4] INTERNET DRAFT IPDC Media Control Protocol August 1998 3.2 Messages There are only five new messages in IP Media Control: * Request - sent from the controller to the media gateway to define the events which the media gateway should detect and report, and also to instruct the media gateway to generate events. Events to generate and detect are defined in terms of the scripting language * Notification - sent from the media gateway to the controller to indicate a requested event has been detected. * Reset - sent from the media gateway controller to media gateway to halt execution for all scripts on an endpoint or set of endpoints. * Script Query - sent from the media gateway controller to media gateway to ask for the list of scripts executing on an endpoint. * Script Query Response - sent from the media gateway to the media gateway controller to provide the list of scripts executing on an endpoint. Query and Query Response are useful in situations where the primary media gateway controller has failed and a secondary media gateway controller is taking over control responsibility. IPMC messages are constructed in the same way as any IPDC message, using a standard header followed by Attribute-Value pairs. The standard header and required AVP information may be found in the IPDC Base Protocol Document [3]. Note that many of the IPMC messages must be acknowledged using a standard IPDC acknowledgment. The Command Acknowledge message is described in more detail in the IPDC Base Protocol document [3]. 3.2.1 RQST - Media Control Request Description This message is sent from the media gateway controller to the media gateway to indicate that the media gateway should notify the media gateway controller of the events indicated by the Event Script parameter. The media gateway MUST stop an executing script when the media gateway conroller sends a Request message with the same correlator ID and an empty (zero length) Event Script AVP. The media gateway MUST replace an executing script with a different script when the media gateway controller sends a Request message with the same correlator ID and a new script. Elliott expires February 1999 [Page 5] INTERNET DRAFT IPDC Media Control Protocol August 1998 The Request message initiates a transaction, and the transaction is completed when the media gateway sends an IPDC Command Ack or Message Reject with the same transaction ID to the media gateway controller. If the media gateway can execute the script given in the Event Script AVP of a Request message, then the media gateway MUST respond by sending a Command Ack message to the media gateway controller. If the media gateway cannot execute the script given in the Event Script AVP of a Request message, then the media gateway MUST respond by sending a Message Reject message to the media gateway controller. Multiple Request messages may be sent for the same endpoint at the same time. The responses are indexed according to the correlation Ids of the Request message. If the media gateway cannot support multiple simultaneous requests for the same endpoint, then the media gateway MUST send a Message Reject in response to a redundant Request. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Message Header | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | Diameter Command AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Media Control Request Command Code | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Transaction Originator AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Source Endpoint AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Event Script AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Correlator ID AVP | Elliott expires February 1999 [Page 6] INTERNET DRAFT IPDC Media Control Protocol August 1998 | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Script Type AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Symbol Set AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Maximum Buffer Size AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Connection ID AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 256 DIAMETER-Command AVP Length The length of this attribute MUST be at exactly 12. Reserved The Reserved field MUST be set to zero (0). AVP Flags As per IPDC defaults. Command Code 1400 Media Control Request Transaction Originator AVP The identity of the initiator of the transaction. This is a required parameter for all IPDC protocol messages. Source Endpoint AVP For the source endpoint(s) which this command will control. This AVP is of type IPDC-Reference, in the format specified in [3]. This is a required parameter. Event Script AVP The script is an ASCII text string of variable length, formatted according to the scripting language defined by the script type parameter. This is a required parameter. Elliott expires February 1999 [Page 7] INTERNET DRAFT IPDC Media Control Protocol August 1998 Correlator ID AVP The Correlator ID AVP is a unique number assigned by the Media Gateway Controller which allows the matching of Requests with corresponding Notifications. This is a required parameter. Script Type AVP This parameter specifies the script type used in the event script. The script type presented in this document is script type 1, and is the default if this parameter is not specified. This is an optional parameter. Symbol Set AVP The symbol set used in the script may be specified as well. The symbol set defined in this document is symbol set 1, and is the default if this parameter is not specified. This is an optional parameter. Maximum Buffer Size AVP The Buffer Size AVP is an optional parameter which specifies the maximum size of the event buffer to be sent to the media gateway controller. If the media gateway has filled the event buffer before the script indicates that the buffer should be reported, then the expected media gateway behavior is to report the full buffer to the soft switch and then start a new event buffer to hold any new event indications. If parameter is not specified, default buffer size is 512 bytes. Connection ID AVP If a connection is active for the endpoint then the media gateway controller MAY include the connection ID field in the Media Control Request message. Note that the Connection ID field is optional in the RQST. In many cases, a request is made when a connection has not been created, and in other cases more than one Connection ID may be open for the endpoint. If the media gateway sends a Notification message in the context of a connection, the connection ID MAY be sent with the notification message. 3.2.2 NOTI - Media Event Notification Description This message is sent from the media gateway to the media gateway controller to indicate the occurrence of requested events. The Notification message initiates a transaction, and the transaction is completed when the media gateway controller sends an IPDC Command Ack or Message Reject with the same transaction ID to the media Elliott expires February 1999 [Page 8] INTERNET DRAFT IPDC Media Control Protocol August 1998 gateway. If the media gateway controller can accept the Notification message, then the media gateway controller MUST respond by sending a Command Ack message to the media gateway. If the media gateway controller cannot accept the Notification message, then the media gateway controller MUST respond by sending a Message Reject message to the media gateway. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Message Header | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | Diameter Command AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Media Event Notification Command Code | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Transaction Originator AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Source Endpoint AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Event Buffer AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Correlator ID AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Connection ID AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 256 DIAMETER-Command AVP Length The length of this attribute MUST be at exactly 12. Reserved Elliott expires February 1999 [Page 9] INTERNET DRAFT IPDC Media Control Protocol August 1998 The Reserved field MUST be set to zero (0). AVP Flags As per IPDC defaults. Command Code 1401 Media Event Notification Transaction Originator AVP The identity of the initiator of the transaction. This is a required parameter for all IPDC protocol messages. Source Endpoint AVP The source endpoint for which this event notification is being sent. This AVP is of type IPDC-Reference, in the format specified in [3]. This is a required parameter. Event Buffer AVP The event buffer is an ASCII text string of variable length, formatted according to reportable symbol set defined by the symbol set parameter from the Media Control Request message. This is a required parameter Correlator ID AVP The Correlator ID AVP matches the Correlator ID given in the corresponding Media Control Request message, so that each notification may be matched with the request. This is a required parameter. Connection ID AVP If a connection is active for the endpoint then the media gateway MAY include the connection ID field in the Media Event Notification message. The Connection ID field is optional in the NOTI. In many cases, a notification is sent when a connection has not been created, and in other cases more than one Connection ID may be open for the endpoint. If the media gateway sends a Notification message in the context of a connection, the connection ID MAY be sent with the notification message. 3.2.3 Reset Description This message is sent from the media gateway controller to the media gateway to cause all running scripts on the given endpoint(s) to stop executing. Elliott expires February 1999 [Page 10] INTERNET DRAFT IPDC Media Control Protocol August 1998 The Reset message initiates a transaction, and the transaction is completed when the media gateway sends an IPDC Command Ack or Message Reject with the same transaction ID to the media gateway controller. If the media gateway can accept the Reset message, then the media gateway MUST respond by sending a Command Ack message to the media gateway controller. If the media gateway cannot accept the Reset message, then the media gateway MUST respond by sending a Message Reject message to the media gateway controller. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Message Header | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | Diameter Command AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reset Command Code | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Transaction Originator Host-Name AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Source Endpoint AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 256 DIAMETER-Command AVP Length The length of this attribute MUST be at exactly 12. Reserved The Reserved field MUST be set to zero (0). AVP Flags As per IPDC defaults. Command Code 1402 Reset Transaction Originator Host Name AVP Elliott expires February 1999 [Page 11] INTERNET DRAFT IPDC Media Control Protocol August 1998 The host name of the initiator of the transaction. This is a required parameter for all IPDC protocol messages. Source Endpoint AVP The source endpoint for which executing scripts should be stopped. This AVP is of type IPDC-Reference, in the format specified in [3]. This is a required parameter. 3.2.4 Script Query Description This message is sent from the media gateway controller to the media gateway to query running script correlator IDs for the scripts running on an endpoint. The Script Query message initiates a transaction, and the transaction is completed when the media gateway sends an IPDC Script Query Response or Message Reject with the same transaction ID to the media gateway controller. If the media gateway can accept the Query message, then the media gateway MUST respond by sending a Script Query Response message to the media gateway controller. If the media gateway cannot accept the Script Query message, then the media gateway MUST respond by sending a Message Reject message to the media gateway controller. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Message Header | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | Diameter Command AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Script Query Command Code | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Transaction Originator Host-Name AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Source Endpoint AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Elliott expires February 1999 [Page 12] INTERNET DRAFT IPDC Media Control Protocol August 1998 AVP Code 256 DIAMETER-Command AVP Length The length of this attribute MUST be at exactly 12. Reserved The Reserved field MUST be set to zero (0). AVP Flags As per IPDC defaults. Command Code 1403 Script Query Transaction Originator Host Name AVP The host name of the initiator of the transaction. This is a required parameter for all IPDC protocol messages. Source Endpoint AVP The source endpoint for which executing scripts should be reported. This AVP is of type IPDC-Reference, in the format specified in [3]. The use of wild-carding in the Script Query message is for further study. This is a required parameter. 3.2.5 Script Query Response Description This message is sent from the media gateway to the media gateway controller to return running script correlator IDs for the scripts running on an endpoint. The Script Query message initiates a transaction, and the transaction is completed when the media gateway sends an IPDC Script Query Response or Message Reject with the same transaction ID to the media gateway controller. If the media gateway can accept the Script Query message, then the media gateway MUST respond by sending a Script Query Response message to the media gateway controller. If the media gateway cannot accept the Script Query message, then the media gateway MUST respond by sending a Message Reject message to the media gateway controller. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | Elliott expires February 1999 [Page 13] INTERNET DRAFT IPDC Media Control Protocol August 1998 | Message Header | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | Diameter Command AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Script Query Response Command Code | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Transaction Originator Host-Name AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Source Endpoint AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | | Correlator ID List AVP | | | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 256 DIAMETER-Command AVP Length The length of this attribute MUST be at exactly 12. Reserved The Reserved field MUST be set to zero (0). AVP Flags As per IPDC defaults. Command Code 1404 Script Query Response Transaction Originator Host Name AVP The host name of the initiator of the transaction. This is a required parameter for all IPDC protocol messages. Source Endpoint AVP The source endpoint for which executing scripts should be reported. This AVP is of type IPDC-Reference, in the format specified in [3]. This is a required parameter. Correlator ID List AVP This parameter contains one or more Correlator Ids for the scripts Elliott expires February 1999 [Page 14] INTERNET DRAFT IPDC Media Control Protocol August 1998 running on the endpoint. This is a required parameter. 3.3 Attribute Value Pairs 3.3.1 Event Script AVP Description The Event Script AVP contains a media control script for execution at one or more specified endpoints within the media gateway. This AVP is passed to the media gateway along with AVPs which specify the scripting language and symbol set used by the script. AVP Format +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Event Script ... +=+=+=+=+=+=+=+=+=+ AVP Code 1500 Event Script AVP Length The length of this attribute MUST be at least 8 bytes to accommodate 8 bytes of AVP header information. AVP Flags As per IPDC defaults. Event Script The Event Script field is of type String and contains an endpoint media control script which uses a given scripting language and symbol set. 3.3.2 Script Type AVP Description The Script Type AVP indicates the scripting language used for a media control script. This AVP is passed to the media gateway along with Elliott expires February 1999 [Page 15] INTERNET DRAFT IPDC Media Control Protocol August 1998 AVPs which specify the script itself and the symbol set used by the script. AVP Format +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Script Type | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 1501 Script Type AVP Length The length of this attribute MUST be 12 bytes. AVP Flags As per IPDC defaults. Script Type The Script Type field is of type Integer32, and indicates the type of an event script. The only script type currently defined is: 1 IPMC scripting language The IPMC script type defined in this document in the section entitled "Scripting Language". 3.3.3 Symbol Set AVP Description The Symbol Set AVP indicates the scripting symbol set used for a media control script. This AVP is passed to the media gateway along with AVPs which specify the script itself and the scripting language used by the script. AVP Format +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Elliott expires February 1999 [Page 16] INTERNET DRAFT IPDC Media Control Protocol August 1998 | Symbol Set | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 1502 Symbol Set AVP Length The length of this attribute MUST be 12 bytes. AVP Flags As per IPDC defaults. Script Type The Symbol Set field is of type Integer32, and indicates the symbol set used in an event script. The only symbol set currently defined is: 1 IPMC symbol set The IPMC symbol set defined in this document in the section entitled "Symbol Set". 3.3.4 Buffer Size AVP Description The Buffer Size AVP is used to tell the media gateway the maximum size of the event buffer to be returned to the media gateway controller in an Event Notification message. It is passed to the media gateway along with the script which will generate those notifications. AVP Format +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Buffer Size | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 1503 Buffer Size AVP Length The length of this attribute MUST be 12 bytes. Elliott expires February 1999 [Page 17] INTERNET DRAFT IPDC Media Control Protocol August 1998 AVP Flags As per IPDC defaults. Buffer Size The Buffer Size field is of type Integer32, and contains the maximum size of the event buffer to be returned to the media gateway controller in an Event Notification message. 3.3.5 Event Buffer AVP Description The Event Buffer is used report to the media gateway controller signals detected in an media gateway in accordance with a previously downloaded script. It is returned to the media gateway controller in an Event Notification message. AVP Format +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Event Buffer ... +=+=+=+=+=+=+=+=+=+ AVP Code 1504 Event Buffer AVP Length The length of this attribute MUST be at least 8 bytes. AVP Flags As per IPDC defaults. Event Buffer The Event Buffer is of type String and contains a record of events detected at a specific endpoint within a media gateway. The symbol set used is that specified in the original request. The maximum extent of the contents of the Event Buffer were also passed in that request. 3.3.6 Correlator ID AVP Description Elliott expires February 1999 [Page 18] INTERNET DRAFT IPDC Media Control Protocol August 1998 The Correlator ID is used match Requests and corresponding Notifications in the IPMC protocol. Correlator IDs are expected to be unique within a session between a media gateway controller and a media gateway. AVP Format +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Correlator ID | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ AVP Code 1505 Correlator ID AVP Length The length of this attribute MUST be 12 bytes. AVP Flags As per IPDC defaults. Correlator ID The Correlator ID field is of type Integer32, and contains a value which identifies a specific media control request. 3.3.7 Source Endpoint AVP Description The Source Endpoint AVP identifies one or (through wild-carding) a set of endpoints within the media gateway, to which a given media control script. It is also used in Event Notification messages to identify the endpoint for which an event report is being returned. The Source Endpoint AVP is an instance of the IPDC Reference template documented in [3]. AVP Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Elliott expires February 1999 [Page 19] INTERNET DRAFT IPDC Media Control Protocol August 1998 | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Entity Type Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Endpoint Name ... +-+-+-+-+-+-+-+-+-+-+- AVP Code 1506 Source Endpoint AVP Length The length of this attribute MUST be at least 13 bytes. AVP Flags As per IPDC defaults. Entity Type Code See documentation of the IPDC Reference in [3]. The permitted IPDC Entity Type Codes for the Source Endpoint AVP are: ACCESS_TERMINATION (5) TRUNK_TERMINATION (6) DEVICE (8) MODEM (9) CONFERENCE_PORT (10) FAX_PORT (11) STREAM_SOURCE (12) STREAM_RECORDER (13) RTP_PORT (14) ATM_SPEC (15) Source Endpoint Name The Source Endpoint Name identifies the endpoint in the media gateway which is being addressed with an IPMC command. See [3] for IPDC Reference naming syntax. 3.3.8 Correlator ID List AVP Description The Correlator ID List is returned in a Script Query Response. It identifies the scripts running at the endpoint identified in the Script Query. AVP Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Elliott expires February 1999 [Page 20] INTERNET DRAFT IPDC Media Control Protocol August 1998 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|T|V|E|H|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ Correlator +-+-+-+-+-+-+-+-+ | IDs | +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ | ... | AVP Code 1507 Correlator ID List AVP Length The length of this attribute MUST be at least 8 bytes to accommodate 8 bytes of header information. The length of this attribute must be evenly divisible by 4. AVP Flags As per IPDC defaults. Correlator IDs The Correlator IDs field consists of a list of zero or more Integer32 Correlator Ids of scripts running on a given endpoint. The number of Correlator Ids in the list is (AVP Length - 8) / 4, assuming that the AVP Header is 8 bytes long. 3.4 Scripting Language The scripting language presented here is a text-based language consisting of very few command constructs. The language allows the specification of a pattern the media gateway is instructed to detect, followed by the list of actions the media gateway is to take once the pattern is detected. Additional detection patterns may be nested inside of an action list. Also, there is a loop construct, allowing entire call models to be delivered to an media gateway , so that a single Request for Notification message can download the entire "program" which will run for an endpoint continuously, until replaced. The basic operators are as follows: [ , ] Square brackets enclose a pattern and action pair. Everything prior to the comma is considered the pattern to be matched. Everything following the comma is considered the action to take once the pattern is matched. Elliott expires February 1999 [Page 21] INTERNET DRAFT IPDC Media Control Protocol August 1998 { } Anything appearing within the curved brackets will be repeated forever. _number{ } Anything appearing within the curved brackets will be repeated "number" times. => Exit the current Loop. ( ) Parenthesis are used for grouping sequences of patterns and actions which should be considered a unit. | The OR operator allows more than one pattern to be tried at the same time. [Possible side effects are for further study.] ! The NOT operator allows any action or pattern to be inverted. For example, !/M/ means to un-mute the channel. < specifies the incoming channel (default for pattern matching). > specifies the outgoing channel (default for actions). ^^ used within an action list to tell the media gateway to report the current event buffer to the soft switch. ^(event list)^ used within an action list to tell the media gateway to report the current event buffer but report only the items listed within the enclosed event list. ^!(event list)^ used within an action list to tell the media gateway to report the current event buffer but filter out the items in the enclosed event list. $ clear the event buffer. The basic form of a script employs the pattern and action operator only, as follows [ pattern list , action list ] The entire pattern and action pair may be repeated in an infinite loop by adding the curved brackets as follows { [ pattern list , action list ] } Elliott expires February 1999 [Page 22] INTERNET DRAFT IPDC Media Control Protocol August 1998 More than one pattern may be tried simultaneously as follows { [ pattern list , action list ] | [ pattern list , action list ] } Whitespace characters (space, carriage return, line feed, and tab) are ignored in the language. They may be used to enhance readability wherever desired. 3.5 Symbol Set The IPMC protocol allows the media gateway controller to specify which symbol set is being used in the script that is being sent to the media gateway . If the media gateway controller sends a Request for Notification which specifies a symbol set that the media gateway does not support, then the Media gateway must respond with a standard IPDC Message Reject message. At present, one symbol set is defined. The symbols represent events that can be detected or events that can be generated. Symbol Packages The symbols used in the pattern grammar are described below. The symbols are divided into packages so that media gateway suppliers can easily state the subset of the symbol set supported by the media gateway. Quotation marks delimit each symbol for purposes of documentation. The symbols in this symbol set are case-sensitive. The usage column in the table indicates where the symbol can be used. The three options are: * Pattern: the symbol may be used in pattern section of a script, between the [ and the first comma. * Action: the symbol may be used in the action section of the script, between the comma and the ]. * Report: the symbol may be used in a reported event buffer in an Event Notification (NOTI) message. A media gateway MAY support any of the packages below, and MUST support at least one of the packages. Wildcard Package ================ Elliott expires February 1999 [Page 23] INTERNET DRAFT IPDC Media Control Protocol August 1998 Event Symbol: "." Description Match anything at all Usage: Pattern DTMF Package ============ Event Symbol: "0" through "9" Description DTMF digits 0 through 9 respectively. Usage: Pattern, Action, Report Event Symbol: "#" Description DTMF # Usage: Pattern, Action, Report Event Symbol: "*" Description DTMF * Usage: Pattern, Action, Report Event Symbol: "X" Description Wildcard for any numeric DTMF digit 0 through 9. Usage: Pattern Event Symbol: "A" through "D" Description DTMF digits A through D. Usage: Pattern, Action, Report MF Package ========== Elliott expires February 1999 [Page 24] INTERNET DRAFT IPDC Media Control Protocol August 1998 Event Symbol: "+0+ through "+9" Description MF digits 0 through 9. Usage: Pattern, Action, Report Event Symbol: "+K0" through "+K2" Description MF K0/KP, K1, or K2 respectively. Usage: Pattern, Action, Report Event Symbol: "+S0" through "+S3" Description MF S0/ST, S1, S2, or S3 respectively. Usage: Pattern, Action, Report Event Symbol: "+X" Description Wildcard for any numeric MF digit, 0 through 9. Usage: Pattern Trunk Package ============= Event Symbol: "&w" Description Wink (a transition from unseized to seized to unseized trunk states within a specified period. Typical seizure period is 100-350 msec.) Usage: Pattern, Action, Report Event Symbol: "&o" Description Wink off. Usage: Pattern, Action, Report Event Symbol: "&s" Elliott expires February 1999 [Page 25] INTERNET DRAFT IPDC Media Control Protocol August 1998 Description Incoming seizure (incoming indication of call attempt). Usage: Pattern, Action, Report Event Symbol: "&r" Description Return seizure (seizure in response to outgoing seizure). Usage: Pattern, Action, Report Event Symbol: "&c" Description Continuity Test using new tone. Usage: Pattern, Action, Report Event Symbol: "&l" Description Continuity Test using Loopback. Usage: Pattern, Action, Report Event Symbol: "&m" Description Old Milliwatt Tone (1000 Hz) Usage: Pattern, Action, Report Event Symbol: "&n" Description New Milliwatt Tone (1004 Hz) Usage: Pattern, Action, Report Event Symbol: "&t" Description 105 Test Line test progress tone (2225 Hz + or - 25 Hz at -10 dBm0 + or - 0.5dB) Usage: Pattern, Action, Report Elliott expires February 1999 [Page 26] INTERNET DRAFT IPDC Media Control Protocol August 1998 Event Symbol: "&z" Description No circuit (that annoying tri-tone, low to high). Usage: Pattern, Action, Report Event Symbol: "&a" Description Answer Supervision Usage: Pattern, Action, Report Event Symbol: "&k###" Description Announcement number ### Usage: Action Event Symbol: "&r" Description Reorder Tone (120 Impulses per minute tone) Usage: Pattern, Action, Report Line Package ============ Event Symbol: "o" Description Off hook Usage: Pattern, Action, Report Event Symbol: "h" Description On hook Usage: Pattern, Action, Report Event Symbol: "f" Description Elliott expires February 1999 [Page 27] INTERNET DRAFT IPDC Media Control Protocol August 1998 Flash hook Usage: Pattern, Action, Report Event Symbol: "a" Description Answer Usage: Pattern, Action, Report Event Symbol: "b" Description Busy Usage: Pattern, Action, Report Event Symbol: "c" Description Call Waiting tone Usage: Pattern, Action, Report Event Symbol: "d" Description Dial tone (350 + 440 Hz) Usage: Pattern, Action, Report Event Symbol: "n" Description Network busy (fast cycle busy) Usage: Pattern, Action, Report Event Symbol: "r" Description Ringing Usage: Pattern, Action, Report Event Symbol: "w" Elliott expires February 1999 [Page 28] INTERNET DRAFT IPDC Media Control Protocol August 1998 Description Ringback Usage: Pattern, Action, Report Event Symbol: "p" Description Prompt tone Usage: Pattern, Action, Report Event Symbol: "e" Description Error tone Usage: Pattern, Action, Report Event Symbol: "u" Description Stutter dialtone Usage: Pattern, Action, Report Event Symbol: "v" Description Alerting Tone (440 Hz Tone of 2 second duration followed by 1/2 second of tone every 10 seconds) Usage: Pattern, Action, Report Event Symbol: "y" Description Recorder Warning Tone (1400 Hz of Tone of 0.5 second duration every 15 seconds) Usage: Pattern, Action, Report Event Symbol: "t" Description SIT tone, used for indicating a line is out of service Usage: Pattern, Action, Report Elliott expires February 1999 [Page 29] INTERNET DRAFT IPDC Media Control Protocol August 1998 Event Symbol: "z" Description 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. Usage: Pattern, Action, Report Event Symbol: "s###" Description Distinctive tone pattern where ### is any number between 000 and 999, inclusive. Can be used for distinctive ringing, customized dial tone, etc. Usage: Pattern, Action, Report Generic Media Package ===================== Event Symbol: "/modem/" Description Modem detected Usage: Pattern, Report Event Symbol: "/fax/" Description Fax tone detected Usage: Pattern, Report Event Symbol: "/###/" Description Pattern ### detected (can be used for specific algorithms such as answering machine detection, tone detection, and the like) Usage: Pattern, Action, Report RTP Package =========== Event Symbol: "/C##/" Elliott expires February 1999 [Page 30] INTERNET DRAFT IPDC Media Control Protocol August 1998 Description Codec changed to codec hexadecimal ##. Codec Numbers are specified in ietf-avt-profile-new-02.txt, dated November 20, 1997. For reference, the values are reproduced here: 01 1016 02 DVI4 03 G722 04 G723 05 G726-16 06 G726-24 07 G726-32 08 G726-40 09 G727-16 0A G727-24 0B G727-32 0C G727-40 0D G728 0E G729 0F GSM 10 L8 11 L16 12 LPC 13 MPA 14 PCMA (G.711 A-law) 15 PCMU (G.711 mu-law) 16 RED 17 SX7300P 18 00P 19 VDVI Usage: Action, Report Event Symbol: "/C/" Description Detect changes in codec used Usage: Pattern Event Symbol: "/D/" Description Dynamically negotiate payload type Usage: Action Event Symbol: "/S###/" Elliott expires February 1999 [Page 31] INTERNET DRAFT IPDC Media Control Protocol August 1998 Description Sampling rate changed to ### samples per second Usage: Action, Report Event Symbol: "/S/" Description Detect sampling rate changes Usage: Pattern Event Symbol: "/J###/" Description Jitter buffer size changed to ### milliseconds Usage: Action, Report Event Symbol: "/J/" Description Detect jitter buffer size changes Usage: Pattern Event Symbol: "/L####/" Description Packet loss exceeded #### packets per 100,000 Usage: Report Event Symbol: "/L####&/" Description Detect packet loss threshold of #### per 100,000 exceeded Usage: Pattern, Action Audio Package ============= Event Symbol: "/P/" or "/P###.###?####/ Description Turn on silence suppression (note that the inverse of any of these actions can be achieved using the ! operator). ###.### value indicates the dB threshold beneath which the signal is considered silence. ?#### value indicates the length of time in milliseconds before silence suppression kicks in. Elliott expires February 1999 [Page 32] INTERNET DRAFT IPDC Media Control Protocol August 1998 Usage: Action, Report Event Symbol: "/N/" Description Turn on comfort noise generation Usage: Action Usage: Action Event Symbol: "/E/" Description Turn on echo cancellation Usage: Action Event Symbol: "/M/" Description Mute channel Usage: Pattern, Action, Report RADIUS Package ============== Event Symbol: "/R/" Description Detect or report RADIUS Authentication. When used as an action, the media gateway controller is requesting the media gateway to initiate RADIUS authentication processes Usage: Pattern, Action, Report Event Symbol: "/R-/" Description Detect or report RADIUS Rejection Usage: Pattern, Report Event Symbol: "/RC##########/" Description Detect or report RADIUS request for Callback and Callback Elliott expires February 1999 [Page 33] INTERNET DRAFT IPDC Media Control Protocol August 1998 number ##########. The callback number may be any length. Usage: Pattern, Report Timer Package ============= Event Symbol: "/T##?######/" Description Timer number ## set to expire in ###### milliseconds. This pattern is used in conjunction with the OR operator to allow a pattern to be detected with a certain time period or the timer will expire. Usage: Pattern, Report Event Symbol: "/P#####/" Description Pause for exactly ##### milliseconds Usage: Action IP Connection Control Package ============================= Event Symbol: "/ACR/" Description Detects "release channel completed" message sent from media gateway to media gateway controller. This provides a branch point for a release action on connection. Usage: Pattern, Report Event Symbol: "/ACON/" Description Detects "accept connection" message sent from media gateway to media gateway controller. This provides a branch point for a connection acceptance action on a connection. Usage: Pattern, Report Event Symbol: "/AMCN/" Description Elliott expires February 1999 [Page 34] INTERNET DRAFT IPDC Media Control Protocol August 1998 Detects "accept modify connection" message sent from media gateway to media gateway controller. This provides a branch point for a modify connection acceptance action on a connection. Usage: Pattern, Report ISDN Package ============ For further study. Java Package ============ Event Symbol: "@http://urlspec@" Description Tells the media gateway to retrieve a Java applet from the specified location and execute it on the specified endpoint or endpoints. Usage: Action Comment Package =============== Event Symbol: quotation marks (") enclosing text. Description Any text may appear between the quotes. The quotes and the comment are written into the event buffer wherever the comment appears within a script. The comment is included in the event buffer and reported to the media gateway controller along with the rest of the detected events. Usage: Action, Report Escape Character ================ Event Symbol: " Description Backslash used to tell the script execution engine in the media gateway to interpret the following character literally instead of as a command delimiter. Elliott expires February 1999 [Page 35] INTERNET DRAFT IPDC Media Control Protocol August 1998 Usage: Pattern, Action, Report Execution Control Package ========================= Event Symbol: "'LABEL'" Description Labels an entry point for a subroutine Usage: Pattern, Action Event Symbol: "~" Description Starts a script over from the beginning. Usage: Action Event Symbol: "@script-type://scriptname/optional-label@" Description Tells the media gateway to execute another script of the specified name. The optional label allows the calling of subroutines within the named script. Entry points for subroutines are indicated with the 'LABEL' construct. Definition of script-type is for further study. Usage: Action 3.6 Examples 3.6.1 Patterns Examples of legal patterns are: * 1234 The sequence of DTMF digits 1, 2, 3, and 4 must be detected * 555XXXX Three occurrences of DTMF digit 5, followed by any four DTMF digits, must be detected. A repeat count may be specified for a signal by the expression _num{pattern}, where num is a positive integer representing the number of repetitions. For example, _3{5} _4{X} describes the same pattern as the second bullet list pattern given Elliott expires February 1999 [Page 36] INTERNET DRAFT IPDC Media Control Protocol August 1998 above. A set of alternatives is represented by the expression alt1|alt2|alt3, where alt1, alt2, alt3 are signals or signal strings. For example, _7{(0|1|2|3|4|5|6|7|8|9)} represents 7 occurrences of any of the DTMF digits between 0 and 9, in any order. Another way to represent the same pattern is: _7{X} 3.6.2 Pattern and Action Pairs Example 1: The pattern and action pair given below rings an analog line. [ , r ] Notice that no pattern is given prior to the comma, and only an action is given after the comma. If this pattern is sent to an media gateway in a Request command, then the media gateway simply plays ringing down the requested line or lines. Example 2: The pattern and action pair given below detects an analog line going off hook and reports it to the requesting media gateway controller. [ o , ^^ ] The pattern part (prior to the comma lists the off hook event, followed by the report operator in the action part of the script. Example 3: The media gateway controller requests call origination from an analog station connected to an media gateway which acts like a PBX, where dialing 9 selects an "outside line", and dialing any other initial digit assumes an internal 4-digit extension is being dialed. [ o , d [ 9 , !d [ (1XXXXXXXXXX) | (XXXXXXX) , ^^ ] ] | [ 0|1|2|3|4|5|6|7|8 , !d [XXX, ^^ ] ] ] This script nests multiple pattern and action pairs within a single script. New pattern/action pairs are nested within the action Elliott expires February 1999 [Page 37] INTERNET DRAFT IPDC Media Control Protocol August 1998 portions of the script. The first pattern to be matched is the off- hook pattern, o. Once this pattern is detected, the requested action is to play dialtone, d. Then the next action is to detect one of two possible patterns: if DTMF 9 is detected, the first pattern will be matched, but if any other DTMF Digit is detected, the second pattern will be matched. If DTMF 9 is detected, then dialtone is turned off with a !d. then, either a long distance or local number is collected, and the entire event buffer is reported to the media gateway controller. In this case, the event buffer will contain something like "o13035551212" where o represents off hook, and 13035551212 represents the long distance phone number dialed. If a DTMF digit other than 9 is detected, then three additional digits are collected, and the entire event buffer is reported to the media gateway controller. In this case, the event buffer will contain something like "o2321" where o represents the off hook event, and 2321 is the extension dialed. If you want to prevent the off hook event from being reported, then you can filter specific events from the event buffer using the ! command. To remove the off hook event, modify the script as follows: [ o , d [ 9 , !d [ (1XXXXXXXXXX) | (XXXXXXX) , ^!(o)^ ] ] | [ 0|1|2|3|4|5|6|7|8 , !d [XXX, ^!(o)^ ] ] ] Another way of expressing this pattern more compactly is to use the repetition operator as follows: [ o , d [ 9 , !d [ (1_10{X}) | (_7{X}) , ^!(o)^ ] ] | [0|1|2|3|4|5|6|7|8 , !d [_3{X}, ^!(o)^ ] ] ] Example 4: Call origination on a DTMF signaled digital trunk, where first circuit seizure is detected, then an 11-digit DTMF dialed number is collected with a * delimiter, then a 10 digit ANI. Elliott expires February 1999 [Page 38] INTERNET DRAFT IPDC Media Control Protocol August 1998 [ &s_11{X}* , ^^ [_10{X}, ^^] ] First, the circuit seizure pattern &s is shown, followed by the DTMF digit wildcard X, followed by the repetition operator _11{X}, followed by the DTMF *. This pattern collects the circuit seizure followed by 11 DTMF digits and a *. The action section reports the 11 digits to the media gateway controller using the ^^ operator, followed by a new pattern/action pair. The second pattern/action pair collects 10 DTMF digits using _10{X}, then reports the 10 digits. Example 5: A call has already been placed between two telephone users through an media gateway using SS7 signaling on the origination side of a carrier network, and using analog station signaling through a PBX gateway on the other side of the carrier network. Another call arrives at the carrier network bound for the analog station, and the subscriber using the analog station has subscribed to call waiting. The example below shows the pattern/action strings to first - play a call waiting tone, - detect of flash hook, and - report the action to the media gateway controller and next, the media gateway controller sends to the media gateway an IPCC request for connection (RCON) to connection the endpoint to another endpoint, with piggy-backed attribute-value pairs which request notification of another flash. [ , c [ f , ^^ ] ] [ f , ^^ ] Example 6: An entire analog station call model for the PBX-style media gateway is presented. { [ o , d [ 9 , !d [ (1_10{X} | (_7{X} , ^!(o)^ [ /ACR/ , $ ] | [ h , ^^ ] ] ] | [0|1|2|3|4|5|6|7|8 , !d [ _3{X}, ^!(o)^ [ /ACR/ , $ ] | [ h , ^^ ] ] Elliott expires February 1999 [Page 39] INTERNET DRAFT IPDC Media Control Protocol August 1998 ] | [ /T01?015000/ , !d e [ h , !e $ ] ] ] } This script is nearly identical to the one presented in Example 3, except that new event detection sections are added to detect hangup from the far end represented by /ACR/, or hangup by the analog station, represented by h. /ACR/ is the detection of the "release channel completed" message sent from the media gateway to the media gateway controller. This event need not be reported to the media gateway controller since the media gateway controller requested the channel release. The $ operator clears the event buffer so that the script can repeat with an empty event buffer. Also, a timer has been added to the example, so that if dialtone is played for more than 15 seconds without a digit being dialed, error tone will be played until hangup is detected, and the event buffer will be cleared. Example 7: Originating Signaling Sequence for a Feature Group D interface from an Access Tandem Switch to an Interexchange Carrier Media gateway emulating a switch, using MF signaling. [ &s, &w [ +K0 _12{+X} S0 +K0 +0 _10{+X}S0 , &w ^^] ] In this case, the media gateway detects seizure, and returns a wink to the access tandem. After that, the media gateway collects information digits and ANI (the 12 digits collected between K0 and S0), then collects the dialed number (a 0 then 10 digits, also delimited by K0 and S0). Last, the media gateway returns wink to the access tandem. If the digits sent over the trunk are 121234567890 and 00987654321, then the event buffer will contain "&s+K0+1+2+1+2+3+4+5+6+7+8+9+0+K0+0+0+9+8+7+6+5+4+3+2+1+S0". Example 8: In this example, 7 DTMF digits are collected with an inter-digit timer of 10 seconds. If the inter-digit timer expires at any point the pattern is matched and any digits collected so far are reported. _7{ [X , ] | [/T01?10000/ ,^^ => ] } In this case, if the user enters "12345" then waits ten seconds, the Elliott expires February 1999 [Page 40] INTERNET DRAFT IPDC Media Control Protocol August 1998 event buffer will contain: "12345/T01?10000/". Example 9: In this example, the media gateway is requested to collect 10 MF digits and send them to the media gateway controller one at a time. _10{ [+X, ^^] } 4 Security Considerations Security issues are not discussed in this memo. The security mechanisms recommended are those specified in [3]. 5 Rights and Permissions The contributors to this document are listed in the author's address and acknowledgement sections of the document. All contributors to this document and the organizations we represent grant an unlimited perpetual, non-exclusive, royalty-free, world-wide right and license to any party under the copyrights in the contribution. This license includes the right to copy, publish and distribute the contribution in any way, and to prepare derivative works that are based on or incorporate all or part of the contribution, the license to such derivative works to be of the same scope as the license of the original contribution. The contributors grant permission to reference the names and addresses of the contributors and of the organizations we represent. We agree that no information in the contribution is confidential and that the any party may freely disclose any information in the contribution. The contributors to this document believe that the organizations we represent have the authority to grant the rights stated herein. The contributors to this document will grant any party a perpetual, non- exclusive, royalty-free, world-wide right to implement, use and distribute the technology or works when implementing, using or distributing technology based upon the specific specification. The contributors represent that we have disclosed the existence of any proprietary or intellectual property rights in the contribution that are reasonably and personally known to the contributors. The contributors do not represent that we personally know of all potentially pertinent proprietary and intellectual property rights owned or claimed by the organization he represents (if any) or third parties. Elliott expires February 1999 [Page 41] INTERNET DRAFT IPDC Media Control Protocol August 1998 The contributors represent that there are no limits to the contributors' ability to make the grants, acknowledgments and agreements above that are reasonably and personally known to the contributors. 6 References [1] Calhoun, Rubens, "DIAMETER Base Protocol", Internet-Draft, draft-calhoun-diameter-04.txt, July 1998. [2] Calhoun, Zorn, Pan, "DIAMETER Framework", Internet-Draft, draft- calhoun-diameter-framework-00.txt, May 1998. [3] Taylor, "IP Device Control Base Protocol", Internet-Draft, draft-taylor-ipdc-00.txt, August 1998. [4] Dugan, "IP Connection Control Protocol", Internet-Draft, draft- dugan-ipdc-conn-00.txt, August 1998. [5] Skran, "IP Device Control Framework", Internet-Draft, draft- skran-ipdc-frame-00.txt, August 1998. [6] Pickett, "IP Device Management Protocol", Internet-Draft, draft- pickett-ipdc-mgmt-00.txt, August 1998. [7] Bell, "IP Signaling Protocol", Internet-Draft, draft-bell-ipdc- sig-00.txt, August 1998. 7 Acknowledgments The author wishes to acknowledge the following individuals for their contribution to the IP Media Control protocol: Ilya Akramovich, Bob Bell, Dan Brendes, Russ Dehlinger, Andrew Dugan, Peter Chung, Cary FitzGerald, Jan Gronski, Tom Hess, Geoff Jordan, Tony Lam, Shawn Lewis, Dave Mazik, Alan Mikhak, Pete O'Connell, Scott Pickett, Shyamal Prasad, Paul Richards, Dale Skran, Louise Spergel, Raj Srinivasan, Tom Taylor, Michael Thomas. 8 Author's Address Questions about this memo can be directed to: Isaac K. Elliott Level 3 Communications Elliott expires February 1999 [Page 42] INTERNET DRAFT IPDC Media Control Protocol August 1998 1450 Infinite Drive Louisville, CO 80027 Phone: 1-303-926-3123 Fax: 1-303-926-3406 Email: ike.elliott@L3.com Elliott expires February 1999 [Page 43]