RFC 2805

Media Gateway Control Protocol Architecture and Requirements

๐Ÿ“… published April 2000, from ietf

RFC 2805: Media Gateway Control Protocol Architecture and Requirements ๐ŸŽ€

Okay bestie, the paperwork first ๐Ÿ“‹. This is from the Network Working Group and it's an Informational doc, so it's not a standard ๐Ÿ™ˆ. It was written by N. Greene (Nortel Networks), M. Ramalho (Cisco Systems), and B. Rosen (Marconi), and it's dated April 2000. The title block doesn't list anything it obsoletes or updates, so there's no drama there ๐Ÿ’….

Status of this Memo โœจ

This memo is just here to inform the Internet community ๐Ÿ’œ. It is not a specification for an Internet standard of any kind, and it can be shared freely with no limits on distribution ๐Ÿฆ‹.

Copyright (C) The Internet Society (2000). All Rights Reserved.

Abstract ๐Ÿงš

This doc lays out the protocol requirements for the Media Gateway Control Protocol, which runs between a Media Gateway Controller and a Media Gateway. It's the whole vibe of how these two need to talk ๐Ÿซถ.

Table of Contents ๐Ÿ“‘

1.  Introduction ..............................................  3
2.  Terminology ...............................................  3
3.  Definitions ...............................................  3
4.  Specific functions assumed within the MG ..................  5
5.  Per-Call Requirements .....................................  6
   5.1.  Resource Reservation .................................  6
   5.2.  Connection Requirements ..............................  7
   5.3.  Media Transformations ................................  8
   5.4.  Signal/Event Processing and Scripting ................  9
   5.5.  QoS/CoS .............................................. 10
   5.6.  Test Support ......................................... 11
   5.7.  Accounting ........................................... 11
   5.8.  Signalling Control ................................... 11
6.  Resource Control .......................................... 12
   6.1.  Resource Status Management ........................... 12
   6.2.  Resource Assignment .................................. 13
7.  Operational/Management Requirements ....................... 13
   7.1.  Assurance of Control/Connectivity .................... 13
   7.2.  Error Control ........................................ 14
   7.3.  MIB Requirements ..................................... 15
8.  General Protocol Requirements ............................. 15
   8.1.  MG-MGC Association Requirements ...................... 16
   8.2.  Performance Requirements ............................. 17
9.  Transport ................................................. 17
   9.1.  Assumptions made for underlying network .............. 17
   9.2.  Transport Requirements ............................... 18
10.  Security Requirements .................................... 18
11.  Requirements specific to particular bearer types ......... 19
   11.1.  Media-specific Bearer types ......................... 20
      11.1.1.  Requirements for TDM PSTN (Circuit) ............ 20
      11.1.2.  Packet Bearer type ............................. 22
      11.1.3.  Bearer type requirements for ATM ............... 23
   11.2.  Application-Specific Requirements ................... 26
      11.2.1.  Trunking Gateway ............................... 26
      11.2.2.  Access Gateway ................................. 27
      11.2.3.  Trunking/Access Gateway with fax ports ......... 27
      11.2.4.  Trunking/Access Gateway with text telephone .... 28
      11.2.5.  Network Access Server .......................... 29
      11.2.6.  Restricted Capability Gateway .................. 30
      11.2.7.  Multimedia Gateway ............................. 31
      11.2.8.  Audio Resource Function ........................ 32
      11.2.9. Multipoint Control Units ........................ 42
12.  References ............................................... 43
13.  Acknowledgements ......................................... 43
14.  Authors' Addresses ....................................... 44
15.  Full Copyright Statement ................................. 45

1. Introduction โœจ

This doc is all about the requirements that get placed on the Media Gateway Control Protocol ๐ŸŽ€. Whenever you see the word "protocol" on its own in here, it's shorthand for the Media Gateway Control Protocol, so no confusion allowed ๐Ÿ’….

2. Terminology ๐Ÿ’–

In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in RFC 2119 [1] and indicate requirement levels for the protocol. These are the official strength words, so read them carefully ๐Ÿ”ฅ.

3. Definitions ๐Ÿงš

  • Connection

Okay so under the control of a Media Gateway Controller (MGC), the Media Gateway (MG) sets up connections. In this doc, a connection is an association of resources hosted by the MG ๐Ÿฆ‹. It usually involves two terminations, but it can involve more.

  • Line or Loop

An analogue or digital access connection from a user terminal that carries user media content and telephony access signalling (DP, DTMF, BRI, proprietary business set) ๐Ÿ“ž.

  • Media Gateway (MG) function

The MG function handles the media mapping and/or transcoding between networks that are potentially very different from each other, where one of them is presumed to be a packet, frame or cell network ๐ŸŒˆ. For example, an MG might terminate switched circuit network (SCN) facilities (trunks, loops), packetize the media stream if it isn't already packetized, and then deliver that packetized traffic to a packet network ๐Ÿ“ฆ. It does these same jobs in reverse for media streams flowing from the packet network to the SCN ๐Ÿ”„.

MGs are not limited to SCN <-> packet/frame/cell stuff, btw ๐Ÿ‘‘. A conference bridge with all packet interfaces could be an MG, and so could an (IVR) interactive voice recognition unit, an audio resource function, or a voice recognition system with a cell interface ๐ŸŽ™๏ธ.

  • Media Gateway unit (MG-unit)

An MG-unit is a physical entity that contains an MG function and may also contain other functions, for example an SG function ๐Ÿ”ง.

  • Media Gateway Controller (MGC) function

An MGC function controls an MG ๐ŸŽฎ.

  • Media Resource

Examples of media resources are codecs, announcements, tones, modems, interactive voice response (IVR) units, bridges, and so on ๐ŸŽถ.

  • Signaling Gateway (SG) function

An SG function receives and sends SCN native signalling at the edge of a data network ๐Ÿšช. For example, the SG function may relay, translate or terminate SS7 signaling in an SS7-Internet Gateway ๐ŸŒ‰. It may also be co-resident with the MG function so it can process SCN signalling tied to line or trunk terminations controlled by the MG, such as the "D" channel of an ISDN PRI trunk ๐Ÿ’œ.

  • Termination

A termination is a point where media flows enter and/or leave relative to the MG ๐Ÿšชโœจ. When an MG is asked to connect two or more terminations, it understands how the flows entering and leaving each termination relate to each other ๐Ÿง .

Terminations are things like DS0's, ATM VCs and RTP ports ๐ŸŽ€. Another name for this is bearer point ๐Ÿ’….

  • Trunk

An analog or digital connection from a circuit switch that carries user media content and may carry telephony signalling (MF, R2, etc.) โ˜Ž๏ธ. Digital trunks may be transported and may show up at the Media Gateway as channels within a framed bit stream, or as an ATM cell stream ๐ŸŒŠ. Trunks are usually provisioned in groups, and each member provides equivalent routing and service ๐Ÿ‘ฏ.

  • Type of Bearer

A Type of Bearer definition gives the detailed requirements for its particular application/bearer type ๐Ÿ“. A particular class of Media Gateway, for example, would support a particular set of Bearer types ๐ŸŽ.

4. Specific functions assumed within the MG ๐ŸŒธ

This section sets up the environment for defining the general Media Gateway Control Protocol requirements ๐Ÿซถ.

MGs can be architected in lots of different ways, depending on where the media conversions and transcoding (if required) happen, how programmable the resources are, how conferences get supported, and how the associated signalling is treated ๐Ÿงฉ. The functions assumed to be within the MG must not be biased towards any particular architecture ๐Ÿ™…โ€โ™€๏ธ.

For instance, announcements in an MG could be provided by media resources, or by the bearer point resource or termination itself ๐Ÿ“ข. Further, this difference must not be visible to the MGC: the MGC must be able to issue the identical request to two different implementations and achieve the identical functionality ๐Ÿ’ฏ.

Depending on the application of the MG (e.g., trunking, residential), some functions listed below will be more prominent than others, and in some cases, functions may even disappear ๐ŸŽญ.

Although media adaptation is the essence of the MG, it is not necessary for it to be involved every time. An MG may join two terminations/resources of the same type (i.e., the MG behaves as a switch) ๐Ÿ”€. The required media conversion depends on the media type supported by the resources being joined together ๐ŸŽฏ.

In addition to the media adaptation function, resources have a number of unique properties, for instance:

  • certain types of resources have associated signalling capabilities (e.g., PRI signalling, DTMF),
  • some resources perform maintenance functions (e.g., continuity tests),
  • the MGC needs to know the state changes of resources (e.g., a trunk group going out of service),
  • the MG retains some control over the allocation and control of some resources (e.g., resource name space: RTP port numbers).

So an MG realizes point-to-point connections and conferences, and supports several resource functions ๐ŸŒˆ. These functions include media conversion, resource allocation and management, and event notifications ๐Ÿ“Š. Handling termination associated signalling is either done using event notifications, or is handled by the signalling backhaul part of a MG-unit (i.e. NOT directly handled by the MG) ๐Ÿ›ค๏ธ.

MGs must also support some level of system related functions, such as establishing and maintaining some kind of MG-MGC association. This is essential for MGC redundancy, fail-over and resource sharing ๐Ÿ”.

So an MG is assumed to contain these functions ๐Ÿ‘‘:

  • Reservation and release, of resources
  • Ability to provide state of resources
  • Maintenance of resources - It must be possible to make maintenance operations independent of other termination functions, for instance, some maintenance states should not affect the resources associated with that resource. Examples of maintenance functions are loopbacks and continuity tests ๐Ÿ”ง.
  • Connection management, including connection state
  • Media processing, using media resources: these provide services such as transcoding, conferencing, interactive voice recognition units, audio resource function units. Media resources may or may not be directly part of other resources ๐ŸŽฌ.
  • Incoming digit analysis for terminations, interpretation of scripts for terminations
  • Event detection and signal insertion for per-channel signalling
  • Ability to configure signalling backhauls (for example, a Sigtran backhaul)
  • Management of the association between the MGC and MG, or between the MGC and MG resources ๐Ÿค.

5. Per-Call Requirements โœจ

5.1. Resource Reservation โœจ

okay bestie, so the protocol MUST do three things here ๐Ÿ’…

  • a. Support reserving bearer terminations and media resources for a particular call, and support releasing them later. The release can be implicit or explicit, so no drama there ๐Ÿฆ‹
  • b. Allow releasing all the resources tied to a particular set of connectivity and/or associations between a given number of terminations in a single exchange of messages. One message exchange, all cleaned up, iconic ๐Ÿงนโœจ
  • c. The MG is not required (or allowed) by the protocol to keep track of future time. Ngl this is so important ๐Ÿ™ˆ A reservation stays in effect until the MGC explicitly releases it. The MG doesn't get to decide it's over just because time passed ๐Ÿ’€

5.2. Connection Requirements ๐ŸŽ€

okay so the protocol MUST be super flexible with connections, and it's giving main character energy ๐Ÿ‘‘

  • a. Support connections that mix packet and circuit bearer terminations in any combination. That includes "hairpin" connections, which are connections between two circuit connections inside the same MG ๐Ÿ”
  • b. Support connections using TDM, Analogue, ATM, IP, or FR transport in any combination. Mix and match, bestie ๐ŸŒˆ
  • c. Allow the bearer plane (e.g. Frame Relay, IP, etc.) to be specified on a call-by-call basis. Every call can have its own vibe ๐Ÿฆ‹
  • d. Support unidirectional, symmetric bi-directional, and asymmetric bi-directional media flows. All the flow styles, all the time ๐Ÿ’œ
  • e. Support multiple media types (e.g. audio, text, video, T.120). Audio, text, video, and T.120 all get a seat at the table ๐ŸŒธ
  • f. Support point-to-point and point-to-multipoint connections ๐Ÿงš
  • g. Support creating and modifying more complex flow topologies, e.g. conference bridge capabilities. The protocol MUST also be able to add or delete media streams during a call or session, and add or subtract participants to/from a call or session. Group chat energy, literally ๐Ÿ’–
  • h. Support including media resources in a call or session as required. Depending on the protocol and resource type, media resources may be implicitly included, class-assigned, or individually assigned. Each resource gets its own little moment ๐ŸŒท
  • i. Provide unambiguous specification of which media flows pass through a point and which are blocked at a given point in time, if the protocol permits multiple flows to pass through the same point. No confusion allowed, fr fr ๐Ÿซถ
  • j. Allow modifications of an existing termination, for example using higher compression to compensate for insufficient bandwidth, or changing transport network connections. Glow-up on demand โœจ
  • k. Allow the MGC to specify that a given connection has higher priority than other connections. VIP section only ๐Ÿ‘‘
  • l. Allow a reference to a port/termination on the MG to be a logical identifier,

with a one-to-one mapping between a logical identifier and a physical port. Logical name, physical port, one-to-one, no mix-ups ๐Ÿ“

  • m. Allow the MG to report events such as resource reservation and connection completion ๐Ÿ”ฅ

5.3. Media Transformations ๐Ÿฆ‹

okay so the Protocol MUST handle all kinds of transformations, it's giving shapeshifter ๐Ÿฆ‹

  • a. Support mediation/adaptation of flows between different types of transport ๐Ÿ”„
  • b. Support invocation of additional processing such as echo cancellation ๐ŸŽง
  • c. Support mediation of flows between different content encodings (codecs, encryption/decryption) ๐Ÿ”
  • d. Allow the MGC to specify whether text telephony/FAX/data modem traffic is to be terminated at the MG, modulated/demodulated, and converted to packets, or forwarded by the MG in the media flow as voice band traffic. Options galore ๐Ÿ“ 
  • e. Allow the MGC to specify that Dual-Tone MultiFrequency (DTMF) digits or other line and trunk signals and general Multi-Frequency (MF) tones are to be processed in the MG, and how these digits/signals/tones are to be handled. The MGC MUST be able to specify any of the following handling of such digits/signals/tones:
    1. The digits/signals/tones are to be encoded normally in the audio RTP stream (e.g., no analysis of the digits/signals/tones).
    2. Analyzed and sent to the MGC.
    3. Received from the MGC and inserted in the line-side audio stream.
    4. Analyzed and sent as part of a separate RTP stream (e.g., DTMF digits sent via a RTP payload separate from the audio RTP stream).
    5. Taken from a separate RTP stream and inserted in the line-side audio stream.
    6. Handled according to a script of instructions. For all but the first case, an option to mute the digits/signals/tones with silence, comfort noise, or other means (e.g., notch filtering of some telephony tones) MUST be provided. As detection of these events may take up to tens of milliseconds, the first few milliseconds of such digit/signal/tone may be encoded and sent in the audio RTP stream before the digit/signal/tone can be verified. Therefore muting of such digits/signals/tones in the audio RTP stream with silence or comfort noise is understood to occur at the earliest opportunity after the digit/signal/tone is verified.

Lots of options, bestie. Each one is its own little plot twist ๐ŸŽญ

  • f. Allow the MGC to specify signalled flow characteristics on circuit as well as on packet bearer connections, e.g. u-law/a-law ๐Ÿ“ž
  • g. Allow for packet/cell transport adaptation only (no media adaptation), e.g. mid-stream (packet-to-packet) transpacketization/transcoding, or ATM AAL5 to and from ATM AAL2 adaptation. Transport glow-up, no media changes ๐Ÿ’…
  • h. Allow the transport of audio normalization levels as a setup parameter, e.g. for conference bridging ๐ŸŽš๏ธ
  • i. Allow conversion to take place between media types, e.g. text to speech and speech to text. Words to sound, sound to words, ngl so cool ๐Ÿ—ฃ๏ธ

5.4. Signal/Event Processing and Scripting ๐Ÿ””

okay so the Protocol MUST keep track of events and signals like a detective ๐Ÿ•ต๏ธโ€โ™€๏ธ

  • a. Allow the MGC to enable/disable monitoring for specific supervision events at specific circuit terminations ๐Ÿ‘€
  • b. Allow the MGC to enable/disable monitoring for specific events within specified media streams ๐ŸŽถ
  • c. Allow reporting of detected events on the MG to the MGC. The protocol SHOULD provide the means to minimize the messaging required to report commonly-occurring event sequences. Less chatter, more vibes ๐Ÿคซ
  • d. Allow the MGC to specify other actions (besides reporting) that the MG should take upon detection of specified events ๐ŸŽฌ
  • e. Allow the MGC to enable and/or mask events ๐Ÿ™ˆ
  • f. Provide a way for the MGC to positively acknowledge event notification. Got it, bestie, message received โœ…
  • g. Allow the MGC to specify signals (e.g., supervision, ringing) to be applied at circuit terminations ๐Ÿ””
  • h. Allow the MGC to specify content of extended duration (announcements, continuous tones) to be inserted into specified media flows ๐Ÿ“ข
  • i. Allow the MGC to specify alternative conditions (detection of specific events, timeouts) under which the insertion of extended-duration signals should cease. Know when to stop, periodt ๐Ÿ›‘
  • j. Allow the MGC to download, and specify a script to be invoked on the occurrence of an event ๐Ÿ“œ
  • k. Specify common events and signals to maximize MG/MGC interworking ๐Ÿค
  • l. Provide an extension mechanism for implementation-defined events and signals with, for example, IANA registration procedures. It may be useful to have an Organizational Identifier (i.e. ITU, ETSI, ANSI, ) as part of the registration mechanism ๐Ÿงฉ
  • m. The protocol SHALL allow the MGC to request the arming of a mid-call trigger even after the call has been set up. Surprise plot twists, still allowed ๐ŸŽ

5.5. QoS/CoS ๐Ÿ’Ž

okay so the Protocol MUST keep the call quality iconic ๐Ÿ’Ž

  • a. Support the establishment of a bearer channel with a specified QoS/CoS ๐Ÿ›ฃ๏ธ
  • b. Support the ability to specify QoS for the connection between MGs, and by direction โ†”๏ธ
  • c. Support a means to change QoS during a connection, as a whole and by direction ๐Ÿ”€
  • d. Allow the MGC to set QoS thresholds and receive notification when such thresholds cannot be maintained. Alerts, bestie, alerts ๐Ÿšจ
  • e. Allow the jitter buffer parameters on RTP channels to be specified at connection setup ๐Ÿซง

5.6. Test Support ๐Ÿงช

the protocol MUST be ready for testing, like a whole lab moment ๐Ÿงช

  • a. Support the different types of PSTN Continuity Testing (COT) for both the originating and terminating ends of the circuit connection (2-wire and 4-wire) ๐Ÿ”ฌ
  • b. Specifically support test line operation (e.g. 103, 105, 108) โ˜Ž๏ธ

5.7. Accounting ๐Ÿงพ

okay so the protocol MUST keep receipts, bestie ๐Ÿงพ

  • a. Support a common identifier to mark resources related to one connection ๐Ÿท๏ธ
  • b. Support collection of specified accounting information from MGs ๐Ÿ“Š
  • c. Provide the mechanism for the MGC to specify that the MG report accounting information automatically at end of call, in mid-call upon request, at specific time intervals as specified by the MGC, and at unit usage thresholds as specified by the MGC. Timing is everything โฐ
  • d. Specifically support collection of:
    • start and stop time, by media flow,
    • volume of content carried (e.g. number of packets/cells transmitted, number received with and without error, inter-arrival jitter), by media flow,
    • QoS statistics, by media flow.
  • e. Allow the MGC to have some control over which statistics are reported, to enable it to manage the amount of information transferred. Only the tea you need, no oversharing โ˜•

5.8. Signalling Control ๐Ÿ“ก

establishment and provisioning of signalling backhaul channels (via SIGTRAN for example) is out of scope. ngl that's a different friend group ๐Ÿ™…โ€โ™€๏ธ However, the MG MUST be capable of supporting detection of events, and application of signals associated with basic analogue line and CAS type signalling. The protocol MUST do the following:

  • a. Support the signalling requirements of analogue lines and Channel Associated Signaling (CAS) ๐Ÿ“Ÿ
  • b. Support national variations of such signalling ๐ŸŒ
  • c. Provide mechanisms to support signalling without requiring MG-MGC timing constraints beyond that specified in this document โฑ๏ธ
  • d. MUST NOT create a situation where the MGC and the MG must be homologated together as a mandatory requirement of using the protocol;

i. i.e. it MUST be possible to optionally conceal signaling type variation from the MGC. Hide the drama, keep the peace ๐Ÿซฃ

6. Resource Control ๐ŸŽ€

6.1. Resource Status Management ๐Ÿ’…

okay so the protocol must:

  • a. Let the MG report when the status of the physical stuff behind bearer terminations, media resources, and facility-associated signalling channels changes, whether that's from failures, recovery, or administrative action. It must be able to say whether a termination is in service or out of service. ๐Ÿ”ฅ
  • b. Support administrative blocking and release of TDM circuit terminations. ๐Ÿซถ

Note: this only really matters for ISUP-controlled circuits, so requiring it might be unnecessary since the MGC is already the one controlling their use. It could still be meaningful for MF and R2-signalled trunks, where supervisory states get set to make the trunks unavailable at the far end. ๐Ÿค”

  • c. Provide a way for the MGC to ask the MG to release all resources currently in use, or reserved, under that MGC's control, for any or all connections. ๐Ÿงน
  • d. Provide an MG Resource Discovery mechanism that must let an MGC find out what resources the MG has. Expressing resources can be an arbitrarily difficult problem, so the first release of the protocol may have a simple view of resource discovery. ๐Ÿ”

At a minimum, resource discovery must list the names of available circuit terminations and the allowed values for parameters supported by terminations. ๐Ÿ“‹

The protocol should be designed so that simple gateways can answer the discovery request with a relatively short, pre-stored response. In general, if the protocol has a mechanism that lets the MGC set a value or parameter for a resource or connection in the MG, and MGs aren't required to support every possible value for that setting or parameter, then the discovery mechanism should give the MGC a way to figure out which values a particular MG actually supports. ๐Ÿง 

  • e. Provide a mechanism to discover the current available resources in the MG. Resources get used up dynamically by connections, and the MGC can't reasonably or reliably keep track of that consumption. It should also be possible to discover resources currently in use, so the MGC and MG can reconcile any inconsistencies. โš–๏ธ
  • f. Not require an MGC to implement an SNMP manager function just to discover capabilities of an MG that may be specified during context establishment. ๐Ÿ™…โ€โ™€๏ธ

6.2. Resource Assignment ๐ŸŽ€

The protocol must:

  • a. Provide a way for the MG to indicate that it couldn't perform a requested action because of resource exhaustion, or because of temporary resource unavailability. ๐Ÿ˜ญ
  • b. Provide a way for the MGC to tell an MG exactly which resource to use for a call (e.g. DS0), or to indicate a set of resources (e.g. pick a DS0 on a T1 line or a list of codec types) through a "wild card" mechanism, so the MG can select a specific resource for the call (e.g. the 16th timeslot, or G.723). ๐ŸŽฏ
  • c. Allow the use of DNS names and IP addresses to identify MGs and MGCs. This shall not preclude using other identifiers for MGs or MGCs when other non IP transport technologies are used for the protocol. ๐ŸŒ

7. Operational/Management Requirements โœจ

7.1. Assurance of Control/Connectivity ๐Ÿ›ก๏ธ

To provide assurance of control and connectivity, the protocol must provide the means to minimize the duration of loss of control due to loss of contact, or state mismatches. ๐Ÿ’–

The protocol must:

  • a. Support detection and recovery from loss of contact due to failure or congestion of communication links, or due to MG or MGC failure.

Note that failover arrangements are one of the mechanisms that could be used to meet this requirement. ๐Ÿ”„

  • b. Support detection and recovery from loss of a synchronized view of resource and connection states between MGCs and MGs (e.g. through the use of audits). ๐Ÿ”Ž
  • c. Provide a means for the MGC and MG to give each other booting and reboot indications, and to say what the MG's configuration is. ๐Ÿš€
  • d. Permit more than one backup MGC, and provide an orderly way for the MG to contact one of its backups. ๐Ÿ‘ฏโ€โ™€๏ธ
  • e. Provide for an orderly switchback to the primary MGC after it recovers. How MGCs coordinate resources between themselves is outside the scope of the protocol. ๐ŸŒธ
  • f. Provide a mechanism so that when an MGC fails, connections already established can be maintained. The protocol does not have to provide a capability to maintain connections that are in the process of being connected but not actually connected when the failure occurs. ๐Ÿงท
  • g. The Protocol must allow the recovery or redistribution of traffic without call loss. ๐Ÿซง

7.2. Error Control ๐Ÿšจ

The protocol must:

  • a. Allow the MG to report reasons for abnormal failure of lower layer connections (e.g. TDM circuit failure, ATM VCC failure). ๐Ÿงฏ
  • b. Allow the MG to report Usage Parameter Control (UPC) events. ๐Ÿ“Š
  • c. Provide means to ease potential synchronization or focused overload of supervisory/signaling events that could be harmful to either MG or MGC operation. Power restoration or signaling transport re-establishment are typical sources of these potentially harmful signaling showers, flowing from MG to MGC or vice-versa. ๐ŸŒŠ
  • d. Allow the MG to notify the MGC that a termination was terminated, and communicate a reason, when a termination is taken out-of-service unilaterally by the MG due to abnormal events. ๐Ÿ™ˆ
  • e. Allow the MGC to acknowledge that a termination has been taken out-of-service. ๐Ÿค
  • f. Allow the MG to ask the MGC to release a termination, and communicate a reason. ๐Ÿ™‹โ€โ™€๏ธ
  • g. Allow the MGC to specify, as a result of such a request, whether it decides to take the termination down, leave it as is, or modify it. ๐Ÿ“

7.3. MIB Requirements ๐Ÿ“š

The Protocol must define a common MG MIB. It must be extensible, but must:

  • a. Provide information on:
    • mapping between resources and supporting physical entities.
    • statistics on quality of service on the control and signalling backhaul interfaces.
    • statistics required for traffic engineering within the MG.
  • b. The protocol must allow the MG to provide to the MGC all information the MGC needs to provide in its MIB. ๐ŸŽ
  • c. The MG MIB must support implementation of H.341 by either the MG, the MGC, or both acting together. ๐Ÿ’œ

8. General Protocol Requirements ๐Ÿ‘‘

The protocol must:

  • a. Support multiple operations invoked in one message and treated as a single transaction. ๐Ÿงฉ
  • b. Be both modular and extensible. Not all implementations may want to support every possible extension for the protocol. This lets lightweight implementations handle specialized tasks where processing resources are constrained. It could be done by defining particular profiles for particular uses of the protocol. ๐Ÿชถ
  • c. Be flexible about how intelligence is split between MG and MGC. For example, an MGC may want to let the MG assign particular MG resources in some implementations, while in others the MGC may want to be the one that assigns MG resources for use. ๐Ÿคนโ€โ™€๏ธ
  • d. Support scalability from very small to very large MGs. The protocol must support MGs with capacities ranging from one to millions of terminations. ๐Ÿ“ˆ
  • e. Support scalability from very small to very large MGC span of control. The protocol should support MGCs that control anywhere from one MG to a few tens of thousands of MGs. ๐Ÿ—บ๏ธ
  • f. Support the needs of a residential gateway that supports one to a few lines, and the needs of a large PSTN gateway supporting tens of thousands of lines. Protocol mechanisms that favour one extreme or the other should be minimized in favour of more general purpose mechanisms that apply to a wide range of MGs. Where special purpose mechanisms are proposed to optimize a subset of implementations, such mechanisms should be defined as optional, and should have minimal impact on the rest of the protocol. ๐Ÿ ๐Ÿข
  • g. Facilitate MG and MGC version upgrades independently of one another. The protocol must include a version identifier in the initial message exchange. ๐Ÿ”–
  • h. Facilitate the discovery of the protocol capabilities of one entity by the other. ๐Ÿ•ต๏ธโ€โ™€๏ธ
  • i. Specify commands as optional (they can be ignored) or mandatory (the command must be rejected), and within a command, specify parameters as optional (they can be ignored) or mandatory (the command must be rejected). โšก

8.1. MG-MGC Association Requirements ๐Ÿค

The Protocol must:

  • a. Support the establishment of a control relationship between an MGC and an MG. ๐Ÿ’ž
  • b. Allow multiple MGCs to send control messages to an MG. Thus, the protocol must allow control messages from multiple signalling addresses to a single MG. ๐Ÿ“จ
  • c. Provide a method for the MG to tell an MGC that the MG received a command for a resource that is under the control of a different MGC. ๐Ÿšซ
  • d. Support a method for the MG to control the rate of requests it receives from the MGC (e.g. windowing techniques, exponential back-off). ๐Ÿข
  • e. Support a method for the MG to tell an MGC that it cannot handle any more requests. ๐Ÿ›‘

8.2. Performance Requirements โฑ๏ธ

The protocol must:

  • a. Minimize message exchanges between MG and MGC, for example during boot/reboot, and during continuity tests. ๐Ÿƒโ€โ™€๏ธ
  • b. Support Continuity test constraints, which are a maximum of 200ms cross-MGC IAM (IAM is the name given to an SS7 connection setup msg) propagation delay, and a maximum of 200ms from end of dialing to IAM emission. โฐ
  • c. Make efficient use of the underlying transport mechanism. For example, protocol PDU sizes versus transport MTU sizes need to be considered when designing the protocol. ๐Ÿ“ฆ
  • d. Not contain inherent architectural or signaling constraints that would prohibit peak calling rates on the order of 140 calls/second on a moderately loaded network. ๐Ÿ“ž
  • e. Allow for default or provisioned settings, so that commands need only contain non-default parameters. ๐Ÿงƒ

9. Transport ๐Ÿšš

9.1. Assumptions made for underlying network ๐ŸŒ

The protocol must assume that the underlying network:

  • a. May be over large shared networks, so proximity assumptions are not allowed. ๐Ÿ—บ๏ธ
  • b. Does not assure reliable delivery of messages. ๐Ÿ“ญ
  • c. Does not guarantee ordering of messages, so sequenced delivery of messages associated with the same source of events is not assumed. ๐Ÿ”€
  • d. Does not prevent duplicate transmissions. ๐Ÿ‘ฏ

9.2. Transport Requirements ๐Ÿšš

okay bestie, so the protocol must: โœจ

a. Provide the ability to abort delivery of obsolete messages at the sending end if their transmission has not been successfully completed. Think aborting a command that's been totally overtaken by events ๐Ÿ’€

b. Support priority messages: The protocol shall allow a command precedence to allow priority messages to supercede non-priority messages. Priority messages get to cut the line, periodt ๐Ÿ‘‘

c. Support of large fan-out at the MGC. ๐Ÿ“ฃ

d. Provide a way for one entity to correlate commands and responses with the other entity. Matching up who said what, so nobody's left on read ๐Ÿซถ

e. Provide a reason for any command failure. No ghosting, just tell me why it failed ๐Ÿ˜ญ

f. Provide that loss of a packet not stall messages not related to the message(s) contained in the packet lost. So one lost packet doesn't freeze the whole group chat ๐Ÿฆ‹

Note that there may be enough protocol reliability requirements here to warrant a separate reliable transport layer be written apart from the Media Gateway Control Protocol. Also need to compare Megaco reliable transport requirements with similar Sigtran requirements. ๐Ÿงš


10. Security Requirements ๐Ÿ”

Security mechanisms may be specified as provided in underlying transport mechanisms, such as IPSEC. The protocol, or such mechanisms, must:

a. Allow for mutual authentication at the start of an MGC-MG association. Both sides prove who they are before the vibes begin ๐Ÿค

b. Allow for preservation of the of control messages once the association has been established. Keep those control messages safe once the association is up ๐Ÿ›ก๏ธ

c. Allow for optional confidentiality protection of control messages. The mechanism should allow a choice in the algorithm to be used. Optional privacy, and you get to pick the algorithm ๐Ÿ’œ

d. Operate across untrusted domains in a secure fashion. Even when the neighbourhood is sketchy, stay secure ๐ŸŒˆ

e. Support non-repudiation for a customer-located MG talking to a network operator's MGC. So nobody can deny what they said later ๐Ÿ™ˆ

f. Define mechanisms to mitigate denial of service attacks. Protect the group chat from getting spammed into oblivion, and seriously, this one's a big deal ๐Ÿšจ

Note: the protocol document will need to include an extended discussion of security requirements, offering more precision on each threat and giving a complete picture of the defense including non-protocol measures such as configuration. The full threat picture needs more detail, and configuration counts as part of the defense too ๐Ÿง 

g. It would be desirable for the protocol to be able to pass through commonly-used firewalls. Getting past the bouncer is a nice bonus ๐Ÿ“


11. Requirements specific to particular bearer types ๐ŸŽ€

The bearer types listed in Table 1 can be packaged into different types of MGs. Examples are listed in the following sections. How they are packaged is outside the scope of the general Media Gateway control protocol. The protocol must support all types of bearer types listed in Table 1. So many bearer types, but the protocol has to support every single one of them โœจ

             Table 1: Bearer Types and Applications

 Bearer Type                   Applications       Transit Network
 ================================================================
 Trunk+ISUP                    trunking/access    IP, ATM, FR
                               Voice,Fax,NAS,
                               Multimedia

 Trunk+MF                      trunking/access    IP, ATM, FR
                               Voice,Fax,NAS,
                               Multimedia

 ISDN                          trunking/access    IP, ATM, FR
                               Voice,Fax,NAS,
                               Multimedia

 Analogue                      Voice,Fax,         IP, ATM, FR
                               Text Telephony

 Termination in a Restricted   Voice,Fax,         IP, ATM, FR
 Capability Gateway            Text Telephony

 Application Termination       IVR,ARF, Announcement Server,
                               Voice Recognition Server,...

 Multimedia H.323              H.323 Multimedia   IP, ATM, FR
                               Gateway and MCU

 Multimedia H.320              H.323 GW and MCU   ISDN, IP, ATM, FR

11.1. Media-specific Bearer Types ๐Ÿ“ป

This section describes requirements for handling terminations attached to specific types of networks. Each network type gets its own little spotlight ๐ŸŒธ

11.1.1. Requirements for TDM PSTN (Circuit) โ˜Ž๏ธ

This bearer type is applicable to a Trunking GW, Access GW, ... The classic phone-network crew ๐Ÿ“ž

The protocol must allow:

a. the MGC to specify the encoding to use on the attached circuit. The MGC picks the encoding for the circuit ๐Ÿ’…

b. In general, if something is set by a global signalling protocol (e.g. ISUP allows mu-Law or A-Law to be signaled using ISUP) then it must be settable by the protocol. If the signalling protocol already sets it, the protocol has to be able to set it too ๐Ÿ”

c. TDM attributes:

  • Echo cancellation,
  • PCM encoding or other voice compression (e.g. mu-law or A-law),
  • encryption,
  • rate adaptation (e.g. V.110, or V.120).

d. for incoming calls, identification of a specific TDM circuit (timeslot and facility). Knowing exactly which timeslot and facility the call came in on ๐ŸŽฏ

e. for calls outgoing to the circuit network, identification of a specific circuit or identification of a circuit group with the indication that the MG must select and return the identification of an available member of that group. Either name the exact circuit, or name the group and let the MG grab a free one and report back ๐Ÿฆ‹

f. specification of the default encoding of content passing to and from a given circuit, possibly on a logical or physical circuit group basis. A default encoding, set per circuit or per circuit group ๐ŸŒˆ

g. specification at any point during the life of a connection of variable aspects of the content encoding, particularly including channel information capacity. You can change the encoding mid-call, especially the channel capacity ๐Ÿ”„

h. specification at any point during the life of a connection of loss padding to be applied to incoming and outgoing media streams at the circuit termination. Loss padding can be set at any point in the call, on both incoming and outgoing streams ๐ŸŽš๏ธ

i. specification at any point during the life of a connection of the applicability of echo cancellation to the outgoing media stream. Echo cancellation on the outgoing stream can be specified at any point in the call ๐Ÿ”‡

j. Multi-rate calls to/from the SCN. Multi-rate calls in both directions with the switched network โšก

k. H-channel (n x 64K) calls to/from the SCN. H-channel calls in both directions, n x 64K ๐Ÿ’ซ

l. B channel aggregation protocols for creating high speed channels for multimedia over the SCN. Bundling B channels together for fast multimedia ๐Ÿš€

m. Modem terminations and negotiations. Modem handshakes and terminations, all in ๐Ÿ“ 

The protocol may also allow:

n. specification of sub-channel media streams, ๐Ÿงฉ

o. specification of multi-channel media streams. ๐ŸŽถ

11.1.2. Packet Bearer Type ๐Ÿ“ฆ

The protocol must be able to specify:

a. ingress and egress coding (i.e. the way packets coming in and out are encoded) (including encryption). How packets get encoded on the way in and out, encryption included ๐Ÿ”

b. near and far-end ports and other session parameters for RTP and RTCP. The ports and session settings for both ends of RTP and RTCP ๐ŸŽ€

The protocol must support reporting of:

c. re-negotiation of codec for cause - for further study. Codec re-negotiation is still being figured out, so this one's a work in progress ๐Ÿšง

d. on Trunking and Access Gateways, resources capable of more than one active connection at a time must also be capable of mixing and packet duplication. Gateways juggling multiple connections also have to be able to mix and duplicate packets ๐ŸŽ›๏ธ

The protocol must allow:

e. specification of parameters for outgoing and incoming packet flows at separate points in the life of the connection (because far-end port addresses are typically obtained through a separate signalling exchange before or after the near-end port addresses are assigned). Flow parameters can be set at different moments, since the far-end ports often show up through a separate signalling exchange, before or after the near-end ports are assigned ๐Ÿ•ฐ๏ธ

f. the possibility for each Media Gateway to allocate the ports on which it will receive packet flows (including RTCP as well as media streams) and report its allocations to the Media Gateway Controller for signalling to the far end. Note that support of different IP backbone providers on a per call basis would require that the ports on which packets flow be selected by the MGC. (but only if the IP address of the MG is different for each backbone provider). Each MG picks its own receive ports, including RTCP, then reports them to the MGC. If you're juggling different IP backbone providers per call, the MGC has to pick the ports, but only if the MG's IP address changes for each provider ๐Ÿงญ

g. the specification at any point during the life of a connection of RTP payload type and RTP session number for each RTP-encapsulated media flow. RTP payload type and session number can be specified at any point in the call ๐ŸŽถ

h. the ability to specify whether outgoing flows are to be uni-cast or multi-cast. Note that on an IP network this information is implicit in the destination address, but in other networks this is a connection parameter. Outgoing flows can be unicast or multicast, though on IP it's already baked into the destination address ๐Ÿ“ก

i. invoking of encryption/decryption on media flows and specification of the associated algorithm and key. Turning encryption on and off for media, plus picking the algorithm and key ๐Ÿ”‘

The protocol should also allow:

j. the MGC to configure non-RTP (proprietary or other) encapsulated packet flows. The MGC can configure non-RTP flows too, even the proprietary ones ๐Ÿง

11.1.3. Bearer type requirements for ATM ๐ŸŒ

This bearer type is applicable to Trunking GW, Access GW, .... ATM gateways, the high-speed crew ๐ŸŽ๏ธ

11.1.3.1. Addressing ๐Ÿ“

a. The protocol must be able to specify the following termination attributes:

  • VC identifier,
  • VC identifier plus AAL2 slot, and variant of these allowing the gateway to choose (part of) the identifier,
  • remote termination network address, remote MG name.

The protocol must be able to name the termination attributes above, including the variant that lets the gateway pick part of the identifier ๐Ÿ—‚๏ธ

b. Allow specification of an ATM termination which is to be assigned to an MG connection as a VC identifier, a VC identifier plus AAL2 slot, a wild-carded variant of either of these. A remote termination network address, or a remote MG name could also be used when the MG can select the VC and change the VC during the life of the connection by using ATM signalling. You can assign a termination using a VC identifier, a VC plus AAL2 slot, or a wildcarded version. A remote address or remote MG name works too, if the MG can pick and swap the VC mid-call through ATM signalling ๐Ÿ”€

c. Provide an indication by the MG of the VC identifier and possibly AAL2 slot of the termination actually assigned to a connection. The MG tells you which VC identifier, and maybe AAL2 slot, actually got assigned ๐Ÿ“ฃ

d. Provide a means to refer subsequently to that termination. A way to point back at that termination later ๐Ÿ‘ˆ

e. Refer to an existing VCC as the physical interface + Virtual Path Identifier (VPI) + Virtual Circuit Identifier (VCI). An existing VCC is named by the physical interface, VPI and VCI together ๐Ÿงพ

f. Where the VCC is locally established (SVCs signalled by the Gateway through UNI or PNNI signalling or similar), the VCC must be indirectly referred to in terms which are of significance to both ends of the VCC. For example, a global name or the ATM address of the ATM devices at each end of the VCC. However, it is possible/probable that there may be several VCCs between a given pair of ATM devices. Therefore the ATM address pair must be further resolved by a VCC identifier unambiguous within the context of the ATM address pair. When the Gateway sets up the VCC itself, it gets referred to indirectly, using something both ends understand, like a global name or the ATM addresses. Since a pair of devices can share several VCCs, the address pair also needs a VCC identifier that's unique within that pair ๐Ÿซ 

g. refer to a VCC as the Remote GW ATM End System Address + VCCI. A VCC can be named by the remote gateway's ATM End System Address plus its VCCI ๐Ÿท๏ธ

h. allow the VCCI to be selected by the MG or imposed on the MG. The VCCI can be picked by the MG, or handed to it ๐ŸŽ

i. support all ATM addressing variants (e.g. ATM End System Address (AESA) and E.164). Every ATM addressing variant is on the list, AESA and E.164 included ๐ŸŒ

The protocol must:

a. Allow for the de-coupling of creation/deletion of the narrow-band connection from the creation/deletion of the underlying VCC. Narrow-band connections can be created and deleted separately from the VCC underneath them โœ‚๏ธ

b. Allow for efficient disconnection of all connections associated with a physical port or VCC. As an example, this could aggregate disconnections across a broadband circuit which experienced a physical error. Disconnecting everything tied to a port or VCC should be efficient, like batching the drops when a broadband circuit hits a physical error ๐Ÿ’ฅ

c. Allow the connection established using this protocol to be carried over a VCC, which may be a:

  • PVC or SPVC,
  • an SVC established on demand, either by the MGC itself or by a broker acting on its behalf or,
  • an SVC originated as required by the local MG, or by the remote end to the local MG through UNI or PNNI signalling.

The connection can ride on a VCC that's a PVC or SPVC, an on-demand SVC set up by the MGC or its broker, or an SVC started by the local MG or the remote end through UNI or PNNI signalling ๐Ÿ›ฃ๏ธ

d. Allow ATM transport parameters and QoS parameters to be passed to the MG. ATM transport and QoS parameters get handed down to the MG ๐Ÿ“Š

e. Allow blocking and unblocking of a physical interface, a VCC or an AAL1/AAL2 channel. You can block and unblock a physical interface, a VCC, or an AAL1/AAL2 channel ๐Ÿšง

The protocol should:

f. Where a VCC is required to be established on a per narrow-band call basis, allow all necessary information to be passed in one message. If a VCC gets set up for each narrow-band call, all the info should fit in one message, so it's a one-and-done ๐Ÿ’Œ

11.1.3.3. Media adaptation ๐ŸŽ€

Okay bestie, so the protocol MUST:

  • a. let AAL parameters get passed along to the MG ๐Ÿ’…
  • b. let AAL1/AAL2 multiple narrow-band calls get mapped onto a single VCC ๐Ÿฆ‹ For AAL2, the calls get told apart inside each VCC by an AAL2 channel identifier. An AAL2 connection MAY span more than 1 VCC and transit AAL2 switching devices. ITU Q.2630.1 [2] defines an end-to-end identifier called the Served User Generated Reference (SUGR) ๐Ÿงš It carries info from the originating user of the AAL2 signalling protocol to the terminating user transparently and unmodified, no cap.
  • c. let a narrow band call get unambiguously bound to an AAL2 connection identifier, or AAL1 channel, inside the specified VCC ๐ŸŒธ
  • d. let the AAL2 connection identifier, or AAL1 channel, be selected by the MG or imposed on the MG โœจ
  • e. let the AAL2 channel identifier (cid) be used instead of the AAL2 connection identifier ๐Ÿ’œ
  • f. let the AAL2 voice profile be imposed or negotiated before the connection starts ๐ŸŒˆ AAL2 allows for variable length packets and varying packet rates, with multiple codecs possible within a given profile. So a call MAY upgrade or downgrade its codec during its lifetime, which is so iconic ๐Ÿ˜ญ Idle channels MAY generate zero bandwidth. So an AAL2 VCC MAY vary in bandwidth and possibly exceed its contract ๐Ÿ™ˆ Congestion controls within a gateway MAY react to congestion by modifying codec rates or types.
  • g. let the MGC tell the MG how individual narrow-band calls behave under congestion ๐Ÿ”ฅ
  • h. let the MGC specify an AAL5 bearer, with these choices:
    • Per ATM Forum standard AF-VTOA-0083 [4],
    • RTP with IP/UDP,
    • RTP without IP/IDP per H.323v2 Annex C [5],
    • Compressed RTP per ATM Forum AF-SAA-0124.000 [6].
  • i. let a narrow band call get unambiguously bound to an AAL1 channel within the specified VCC. (In AAL1, multiple narrow-band calls MAY be mapped to a single VCC ๐Ÿ‘‘)

11.1.3.4. Reporting requirements ๐Ÿ“ฃ

The protocol SHOULD:

  • a. let any end-of-call statistics show loss and restoration of the underlying VCC within the call's duration, along with how long the loss lasted ๐Ÿฅน
  • b. let the MGC request notification of any congestion avoidance actions taken by the MG ๐Ÿ“

The protocol MUST:

  • c. let ATM VCCs or AAL2 channels be audited by the MGC ๐Ÿซถ
  • d. let changes in status of ATM VCCs or AAL2 channels be notified when the MGC asks for it ๐Ÿ’€
  • e. let the MGC query the resource and endpoint availability. Resources MAY include VCCs and DSPs. VCCs MAY be up or down. End-points MAY be connection-free, connected or unavailable. The vibes are very much "know your stuff" ๐Ÿ’…

11.1.3.5. Functional requirements โญ

The protocol MUST:

  • a. let an MGC reserve a bearer and specify a route for it through the network ๐Ÿงš

11.2. Application-Specific Requirements ๐ŸŒˆ

11.2.1. Trunking Gateway ๐Ÿฐ

Okay so a Trunking Gateway is the interface between SCN networks and Voice over IP or Voice over ATM networks. These gateways usually connect to SS7 or other NNI signalling on the SCN and manage a huge number of digital circuits, which is giving main character energy ๐Ÿ‘‘

The protocol MUST:

  • a. provide circuit-side and packet-side loopback ๐Ÿ”
  • b. provide circuit-side n x 64kbs connections ๐Ÿฆ‹
  • c. provide subrate and multirate connections, which is for further study ๐Ÿ™ˆ
  • d. provide the capability to support reporting and generation of per-trunk CAS signalling (DP, DTMF, MF, R2, J2, and national variants) ๐Ÿ“ž
  • e. provide the capability to support reporting of detected DTMF events either digit-by-digit, as a sequence of detected digits with a flexible mechanism For the MG to determine the likely end of dial string, or in a separate RTP stream ๐Ÿซถ
  • f. provide the capability to support ANI and DNIS generation and reception โœจ

11.2.2. Access Gateway ๐Ÿšช

An Access Gateway connects UNI interfaces like ISDN (PRI and BRI) or traditional analog voice terminal interfaces to a Voice over IP, Voice over ATM, or Voice over Frame Relay network. Honestly it's the bridge everyone needs ๐ŸŒ‰

The Protocol MUST:

  • a. support detection and generation of analog line signaling (hook-state, ring generation) ๐Ÿ“ฑ
  • b. provide the capability to support reporting of detected DTMF events either digit-by-digit, as a sequence of detected digits with a flexible mechanism For the MG to determine the likely end of dial string, or in a separate RTP stream ๐Ÿ’–
  • c. not require scripting mechanisms, event buffering, or digit map storage when implementing restricted function (1-2 line) gateways with very limited capabilities. Small gateways, small needs, no drama ๐ŸŒธ
  • d. provide the capability to support CallerID generation and reception ๐ŸŽ€

Proxying of the protocol is for further study ๐Ÿซ 

11.2.3. Trunking/Access Gateway with fax ports ๐Ÿ“ 

  • a. the protocol MUST be able to indicate detection of fax media ๐Ÿ‘€
  • b. the protocol MUST be able to specify T.38 for the transport of the fax ๐Ÿ’œ
  • c. the protocol MUST be able to specify G.711 encoding for transport of fax tones across a packet network ๐Ÿ”ฅ

11.2.4. Trunking/Access Gateway with text telephone access ports ๐Ÿ“Ÿ

An access gateway with ports capable of text telephone communication MUST provide communication between text telephones in the SCN and text conversation channels in the packet network. It's giving "bridge the gap" ๐ŸŒˆ

Text telephone capability of ports is assumed to be possible to combine with other options for calls, as described in section 11.2.6 (e.) on "Adaptable NASes" โœจ

The port is assumed to adjust for the differences in the supported text telephone protocols, so that the text media stream can be communicated T.140 coded in the packet network without further transcoding [7] ๐Ÿงš

The protocol MUST be capable of reporting the type of text telephone that is connected to the SCN port. The foreseen types are the same as the ones supported by ITU-T V.18: DTMF, EDT, Baudot-45, Baudot-50, Bell, V.21, Minitel and V.18. It SHOULD be possible to control which protocols are supported. The SCN port is assumed to contain ITU-T V.18 functionality [8] ๐Ÿ“ 

The protocol MUST be able to control the following functionality levels of text telephone support:

  • a. Simple text-only support: The call is set into text mode from the beginning of the call, in order to conduct a text-only conversation ๐Ÿ’ฌ
  • b. Alternating text-voice support: The call MAY begin in voice mode or text mode and, at any moment during the call, MAY change mode on request by the SCN user. On the packet side, the two media streams for voice and text MUST be opened, and it MUST be possible to control the feeding of each stream by the protocol ๐Ÿฆ‹
  • c. Simultaneous text and voice support: The call is performed in a mode when simultaneous text and voice streams are supported. The call MAY start in voice mode and during the call change state to a text-and-voice call ๐ŸŒธ

A port MAY implement only level a, or any level combination of a, b and c, always including level a ๐Ÿ’…

The protocol MUST support:

  • d. A text based alternative to the interactive voice response, or audio resource functionality of the gateway when the port is used in text telephone mode ๐Ÿซถ
  • e. Selection of what national translation table to be used between the Unicode based T.140 and the 5-7 bit based text telephone protocols ๐ŸŒ
  • f. Control of the V.18 probe message to be used on incoming calls ๐Ÿ“ž

11.2.5. Network Access Server ๐Ÿ›œ

A NAS is an access gateway, or Media Gateway (MG), which terminates modem signals or synchronous HDLC connections from a network (e.g. SCN or xDSL network) and provides data access to the packet network. Only those requirements specific to a NAS are described here, so let's get into it ๐Ÿซถ

Figure 1 gives you a reference architecture for a Network Access Server (NAS). Signaling comes into the MGC and the MGC controls the NAS ๐Ÿ‘€

                      +-------+        +-------+
           Signaling  |       |        |       |
           -----------+  MGC  +        |  AAA  |
                      |       |        |       |
                      +---+---+        +--+----+
                          |               |
                    Megaco|_______________|
                                          |
                                          |
                      +---+---+         ~~|~~~
            Bearer    |       |        (      )
           -----------+  NAS  +-------(   IP   )
                      |       |        (      )
                      +-------+         ~~~~~~

              Figure 1: NAS reference architecture

The Protocol MUST support:

  • a. Callback capabilities:
    • Callback
  • b. Modem calls. The protocol MUST be able to specify the modem type(s) to be used for the call ๐Ÿ“ž
  • c. Carriage of bearer information. The protocol MUST be able to specify the data rate of the TDM connection (e.g., 64 kbit/s, 56 kbit/s, 384 kbit/s), if this is available from the SCN โšก
  • d. Rate Adaptation: The protocol MUST be able to specify the type of rate adaptation to be used for the call, including indicating the subrate, if this is available from the SCN (e.g. 56K, or V.110 signaled in Bearer capabilities with subrate connection of 19.2kbit/s) ๐ŸŒˆ
  • e. Adaptable NASes: The protocol MUST be able to support multiple options for an incoming call to allow the NAS to dynamically select the proper type of call. For example, an incoming ISDN call coded for "Speech" Bearer Capability could actually be a voice, modem, fax, text telephone, or 56 kbit/s synchronous call. The protocol SHOULD allow the NAS to report back to the MGC the actual type of call once it is detected ๐ŸฆŽ

The 4 basic types of bearer for a NAS are:

  1. Circuit Mode, 64-kbps, 8-khz structured, Speech ๐Ÿ—ฃ๏ธ
  2. Circuit Mode, 64-kbps, 8-khz structured, 3.1-khz, Audio ๐ŸŽง
  3. Circuit Mode, 64-kbps, 8-khz structured, Unrestricted Digital Transmission-Rate Adapted from 56-kbps ๐Ÿ”„
  4. Circuit Mode, 64-kbps, 8-khz structure, Unrestricted Digital Transmission ๐Ÿ’Ž
  • f. Passage of Called and Calling Party Number information to the NAS from the MGC. Also, passage of Charge Number/Billing Number, Redirecting Number, and Original Call Number, if known, to the NAS from the MGC. If there are other Q.931 fields that need to be passed from the MGC to the MG, then it SHOULD be possible to pass them [9] ๐Ÿ“‡
  • g. Ability for the MGC to direct the NAS to connect to a specific tunnel, for example to an LNS, or to an AAA server ๐Ÿš‡
  • h. When asked by the MGC, be able to report capability information, for example, connection types (V.34/V90/Synch ISDN..), AAA mechanism (RADIUS/DIAMETER/..), access type (PPP/SLIP/..) after restart or upgrade ๐Ÿ”‹

11.2.6. Restricted Capability Gateway โœจ

okay so these requirements can also be applied to small analog gateways and cable/xDSL modems ๐Ÿฆ‹ see also the section on access gateways, bestie.

The Protocol must support:

a. The ability to provide a scaled down version of the protocol. When features of the protocol are not supported, an appropriate error message must be sent. Appropriate default action must be defined. Where this is defined may be outside the scope of the protocol. ๐Ÿ’…

b. The ability to provide device capability information to the MGC with respect to the use of the protocol. ๐Ÿซถ

11.2.7. Multimedia Gateway ๐ŸŽ€

the protocol must have enough capability to support a multimedia gateway, and this is a big deal. H.320 and H.324 are characterized by a single data stream with multiple media streams multiplexed on it, so it's giving layers ๐ŸŒˆ

If the mapping is from H.320 or H.324 on the circuit side, and H.323 on the packet side, it is assumed that the MG knows how to map respective subchannels from the H.320/H.324 side to streams on the packet side. If extra information is required when connecting two terminations, then it must be supplied so that the connections are not ambiguous. ๐Ÿงš

The Multimedia Gateway:

  1. should support Bonding Bearer channel aggregation,
  2. must support 2xB (and possibly higher rates) aggregation via H.221,
  3. must be able to dynamically change the size of audio, video and data channels within the h.320 multiplex,
  4. must react to changes in the H.320 multiplex on 20 msec boundaries,
  5. must support TCS4/IIS BAS commands,
  6. must support detection and creation of DTMF tones,
  7. should support SNMP MIBS as specified in H.341 [3]

a. If some of the above cannot be handled by the MGC to MG protocol due to timing constraints, then it is likely that the H.245 to H.242 processing must take place in the MG. Otherwise, support for this functionality in the multimedia gateway are protocol requirements. ๐Ÿ˜ญ

b. It must be possible on a call by call basis for the protocol to specify different applications. Thus, one call might be PSTN to PSTN under SS7 control, while the next might be ISDN/H.320 under SS7 control to H.323. This is only one example; the key requirement is that the protocol not prevent such applications. ๐Ÿ“

11.2.8. Audio Resource Function ๐ŸŽง

okay so an Audio Resource Function (ARF) is made of one or more functional modules, and these can be deployed on a stand alone media gateway server, an IVR, an Intelligent Peripheral, a speech/speaker recognition unit, etc., or a traditional media gateway. ๐Ÿ’– Such a media gateway is known as an Audio Enabled Gateway (AEG) if it performs tasks defined in one or more of the following ARF functional modules:

  • Play Audio,
  • DTMF Collect,
  • Record Audio,
  • Speech Recognition,
  • Speaker Verification/Identification,
  • Auditory Feature Extraction/Recognition, or
  • Audio Conferencing.

Additional ARF function modules that support human to machine communications through the use of telephony tones (e.g., DTMF) or auditory means (e.g. speech) may be appended to the AEG definition in future versions of these requirements. ๐Ÿ”ฎ

Generic scripting packages for any module must support all the requirements for that module. Any package extension for a given module must include, by inheritance or explicit reference, the requirements for that given module. ๐Ÿซ 

The protocol requirements for each of the ARF modules are provided in the following subsections. ๐ŸŒธ

11.2.8.1. Play Audio Module ๐Ÿ”Š

a. Be able to provide the following basic operation:

  • request an ARF MG to play an announcement.

b. Be able to specify these play characteristics:

  • Play volume
  • Play speed
  • Play iterations
  • Interval between play iterations
  • Play duration

c. Permit the specification of voice variables such as DN, number, date, time, etc. The protocol must allow specification of both the value (eg 234-3456), and well as the type (Directory number). ๐Ÿ“ž

d. Using the terminology that a segment is a unit of playable speech, or is an abstraction that is resolvable to a unit of playable speech, permit specification of the following segment types:

  • A provisioned recording.
  • A block of text to be converted to speech.
  • A block of text to be displayed on a device.
  • A length of silence qualified by duration.
  • An algorithmically generated tone.
  • A voice variable, specified by type and value. Given a variable type and value, the IVR/ARF unit would dynamically assemble the phrases required for its playback.
  • An abstraction that represents a sequence of audio segments. Nesting of these abstractions must also be permitted.

An example of this abstraction is a sequence of audio segments, the first of which is a recording of the words "The number you have dialed", followed by a Directory Number variable, followed by a recording of the words "is no longer in service". ๐ŸŽฌ

  • An abstraction that represents a set of audio segments and which is resolved to a single segment by a qualifier. Nesting of these abstractions must be permitted.

For example, take a set of audio segments recorded in different languages, all of which express the semantic concept "The number you have dialed is no longer in service". The set is resolved by a language qualifier. If the qualifier is "French", the set resolves to the French version of this announcement. ๐Ÿฅ–

In the case of a nested abstraction consisting of a set qualified by language at one level and a set qualified by gender at another level, it would be possible to specify that an announcement be played in French and spoken by a female voice. ๐Ÿ‘‘

e. Provide two different methods of audio specification:

  • Direct specification of the audio components to be played by specifying the sequence of segments in the command itself.
  • Indirect specification of the audio components to be played by reference to a single identifier that resolves to a provisioned sequence of audio segments.

11.2.8.2. DTMF Collect Module ๐ŸŽน

The DTMF Collect Module must support all of the requirements in the Play Module, in addition to the following requirements:

a. Be able to provide the following basic operation:

  • request an AEG to play an announcement, which may optionally be terminated by DTMF, and then collect DTMF

b. Be able to specify these event collection characteristics:

  • The number of attempts to give the user to enter a valid DTMF pattern.

c. With respect to digit timers, allow the specification of:

  • Time allowed to enter the first digit.
  • Time allowed for the user to enter each digit subsequent to the first digit.
  • Time allowed for the user to enter a digit once the maximum expected number of digits has been entered.

d. To be able to allow multiple prompt operations, DTMF digit collection, voice recording (if supported), and/or speech recognition analysis (if supported), provide the following types of prompts:

  • Initial Prompt
  • Reprompt
  • Error prompt
  • Failure announcement
  • Success announcement.

e. To allow digit pattern matching, allow the specification of:

  • maximum number of digits to collect.
  • minimum number of digits to collect.
  • a digit pattern using a regular expression.

f. To allow digit buffer control, allow the specification of:

  • Ability to clear digit buffer prior to playing initial prompt (default is not to clear buffer).
  • Default clearing of buffer following playing of un-interruptible announcement segment.
  • Default clearing of buffer before playing a re-prompt in response to previous invalid input.

g. Provide a method to specify DTMF interruptibility on a per audio segment basis. โฏ๏ธ

h. Allow the specification of definable key sequences for DTMF digit collection to:

  • Discard collected digits in progress, replay the prompt, and resume DTMF digit collection.
  • Discard collected digits in progress and resume DTMF digit collection.
  • Terminate the current operation and return the terminating key sequence to the MGC.

i. Provide a way to ask the ARF MG to support the following definable keys for digit collection and recording. These keys would then be able to be acted upon by the ARF MG:

  • A key to terminate playing of an announcement in progress.
  • A set of one or more keys that can be accepted as the first digit to be collected.
  • A key that signals the end of user input. The key may or may not be returned to the MGC along with the input already collected.
  • Keys to stop playing the current announcement and resume playing at the beginning of the first segment of the announcement, last segment of the announcement, previous segment of the announcement, next segment of the announcement, or the current announcement segment. ๐ŸŒˆ

11.2.8.3. Record Audio Module ๐ŸŽ€

okay so the Record Module must support everything in the Play Module, and then it gets its own extra stuff on top ๐Ÿ’…

a. It has to be able to do this basic move: ask an AEG to play an announcement and then record voice ๐ŸŽ™๏ธ

b. It has to let you set these event collection settings:

  • how many attempts the user gets to make a recording

c. For the recording timers, you have to be able to set:

  • how long to wait for the user to start speaking
  • how much silence after the last speech segment means the recording is finished
  • the longest allowed recording length (pre- and post-speech silence not counted) โฑ๏ธ

d. It has to allow multiple prompt operations for DTMF digit collection (if supported), voice recording (if supported), speech recognition analysis (if supported), and/or speech verification/identification (if supported). Then it has to give you these kinds of prompts:

  • Initial Prompt
  • Reprompt
  • Error prompt
  • Failure announcement
  • Success announcement

e. You should be able to define key sequences for digit recording or speech recognition analysis (if supported) that do one of these:

  • throw away the recording in progress, replay the prompt, and start recording again ๐Ÿ”
  • throw away the recording in progress and start recording again
  • end the current operation and send the ending key sequence back to the MGC

f. You need a way to ask the ARF MG to support these custom keys for recording, so the ARF MG can actually act on them โŒจ๏ธ

  • a key that stops an announcement that's currently playing
  • a key that says "I'm done talking" (end of user input). That key may or may not get sent back to the MGC along with the input that was already collected.
  • keys that stop the current announcement and jump back to the start of the first segment, the start of the last segment, the previous segment, the next segment, or the start of the current segment

g. Audio prompts usually live in the IVR/ARF MGs already, but this part is about changing them during a voice session instead of a data session. ๐ŸŒธ For audio management, it needs:

  • a way to swap provisioned audio for audio recorded during a call. The new recording has to be reachable using the identifier of the audio it replaced.
  • a way to go back from the replaced audio to the original provisioned audio
  • a way to take audio recorded during a call and store it so only the current call can reach it, using its own brand-new unique identifier
  • a way to take audio recorded during a call and store it so any later call can reach it, using its own brand-new identifier ๐Ÿฆ‹

11.2.8.4. Speech Recognition Module ๐Ÿงš

the speech recognition module is giving a lot, bestie ๐Ÿคญ it can be used for stuff like:

  • Limited Vocabulary Isolated Speech Recognition (e.g., "yes", "no", the number "four")
  • Limited Vocabulary Continuous Speech Feature Recognition (e.g., the utterance "four hundred twenty-three dollars"), and/or
  • Continuous Speech Recognition (e.g., unconstrained speech recognition tasks) ๐ŸŒˆ

The Speech Recognition Module must support everything in the Play Module too, plus these extras:

a. It has to be able to do this basic move: ask an AEG to play an announcement and then do speech recognition analysis.

b. It has to let you set these event collection settings:

  • how many attempts to give the speech recognition task

c. For the speech recognition analysis timers, you need to be able to set:

  • how long to wait for the user to start speaking
  • how much silence after the last speech segment means the analysis segment is finished
  • the longest allowed speech recognition analysis (pre- and post-speech silence not counted) โณ

d. It has to allow multiple prompt operations for DTMF digit collection (if supported), voice recording (if supported), and/or speech recognition analysis, and then provide these prompts:

  • Initial Prompt
  • Reprompt
  • Error prompt
  • Failure announcement
  • Success announcement

e. You should be able to define key sequences for digit recording (if supported) or speech recognition analysis that do one of these:

  • throw away the analysis in process, replay the prompt, and resume analysis
  • throw away the recording in progress and resume analysis
  • end the current operation and send the ending key sequence back to the MGC

f. You need a way to ask the ARF MG to support these custom keys for speech recognition analysis, so the ARF MG can act on them ๐Ÿ”‘

  • a key that stops an announcement that's currently playing
  • a key that says "I'm done talking" (end of user input). That key may or may not get sent back to the MGC along with the input that was already collected.
  • keys that stop the current announcement and jump back to the start of the first segment, the start of the last segment, the previous segment, the next segment, or the start of the current segment

11.2.8.5. Speaker Verification/Identification Module ๐Ÿ’œ

the speech verification/identification module hands back parameters that tell you how likely it is that the speaker is the person they say they are (verification task), or how likely it is that the speaker is one of the people in a set of previously characterized speakers (identification task). ๐Ÿ•ต๏ธโ€โ™€๏ธ

The Speaker Verification/Identification Module must support everything in the Play Module, plus:

a. You need to be able to download parameters, like speaker templates (verification task) or sets of potential speaker templates (identification task), either before the session or in the middle of one. ๐Ÿ“ฅ

b. You need to be able to download application-specific software to the ARF either before the session or in the middle of one.

c. It has to be able to return parameters that show either how likely the speaker is to be the person they claim to be (verification task) or how likely the speaker is to be one of the people in a set of previously characterized speakers (identification task).

d. It has to be able to do this basic move: ask an AEG to play an announcement and then do speech verification/identification analysis.

e. It has to let you set these event collection settings: how many attempts to give the speech verification/identification task.

f. For the speech verification/identification analysis timers, you need to be able to set:

  • how long to wait for the user to start speaking
  • how much silence after the last speech segment means the analysis segment is finished
  • the longest allowed speech verification/identification analysis (pre- and post-speech silence not counted)

g. It has to allow multiple prompt operations for DTMF digit collection (if supported), voice recording (if supported), speech recognition analysis (if supported), and/or speech verification/identification, and provide these prompts:

  • Initial Prompt
  • Reprompt
  • Error prompt
  • Failure announcement
  • Success announcement

h. You should be able to define key sequences for digit recording (if supported) or speech recognition (if supported) during speech verification/identification analysis that do one of these:

  • throw away the verification/identification analysis, replay the prompt, and resume analysis
  • throw away the verification/identification analysis in progress and resume analysis
  • end the current operation and send the ending key sequence back to the MGC

i. You need a way to ask the ARF MG to support these custom keys for speech verification/identification analysis, so the ARF MG can act on them ๐Ÿ›ก๏ธ

  • a key that stops an announcement that's currently playing
  • a key that says "I'm done talking" (end of user input). That key may or may not get sent back to the MGC along with the input that was already collected.
  • keys that stop the current announcement and jump back to the start of the first segment, the start of the last segment, the previous segment, the next segment, or the start of the current segment, picking up speech verification/identification from there

11.2.8.6. Auditory Feature Extraction/Recognition Module ๐Ÿฆ„

the auditory feature extraction/recognition module is built to keep listening to the audio stream for particular sounds or speech utterances of interest. When it hears them, it reports the events (and can optionally report a signal feature representation of those events) to network servers or MGCs. ๐Ÿ‘‚โœจ

The Auditory Feature Extraction/Recognition Module must support these:

a. You need to be able to download application-specific software to the ARF either before the session or in the middle of one.

b. You need to be able to download parameters, like a representation of the auditory feature to extract or recognize, before the session or in the middle of one.

c. It has to be able to return parameters that show the auditory event it found, or a representation of the feature it found (i.e., the auditory feature). ๐ŸŽถ

11.2.8.7. Audio Conferencing Module ๐ŸŽ‰

The protocol must support:

a. a mechanism to create multi-point conferences of audio-only and multimedia conferences in the MG.

b. audio mixing, which means mixing multiple audio streams into one new composite audio stream ๐ŸŽš๏ธ

c. audio switching, which means picking the incoming audio stream that gets sent out to all conference participants ๐Ÿ”€

11.2.9. Multipoint Control Units ๐ŸŽ€

okay bestie, the protocol must support all of this for multipoint conferences ๐Ÿซถ

  • a. a mechanism to create multi-point conferences of audio only and multimedia conferences in the MG ๐ŸŒธ
  • b. audio mixing, which means mixing multiple audio streams into a new composite audio stream ๐ŸŽถ
  • c. audio switching, which is picking the incoming audio stream that gets sent out to all conference participants ๐Ÿ“ฃ
  • d. video switching, which is picking the video stream that gets sent out to all conference participants ๐Ÿ“บ
  • e. lecture video mode, a video selection option where one video source gets sent out to all conference users ๐ŸŽค
  • f. multi-point T.120 data conferencing ๐Ÿ’ป
  • g. The ability for the MG to function as an H.323 MP, and for the MGC to function as an H.323 MC, connected by this protocol (MEGACOP/H.248). It should be possible for audio, data, and video MG/MPs to be physically separate while still being under the control of a single MGC/H.323 MC. It's giving modular ๐Ÿ‘‘

12. References ๐Ÿ“š

okay here's the reading list, every single source is listed so nobody gets lost ๐Ÿงš

  • [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. ๐Ÿ’œ
  • [2] ITU-T Recommendation Q.2630.1, AAL type 2 Signalling Protocol (Capability Set 1), December 1999. ๐Ÿฆ‹
  • [3] ITU-T Recommendation H.341, Line Transmission of Non-Telephone Signals, May 1999. ๐ŸŒˆ
  • [4] ATM Forum Technical Committee, af-vtoa-0083.001, Voice and Telephony Over ATM to the Desktop Specification, March 1999. โœจ
  • [5] ITU-T Recommendation H.323v3, Packet-based Multimedia Communications Systems (includes Annex C - H.323 on ATM), September 1999. ๐Ÿ”ฅ
  • [6] ATM Forum Technical Committee, af-saa-0124.000, Gateway for H.323 Media Transport Over ATM, May 1999. ๐Ÿ“
  • [7] ITU-T Recommendation T.140, Protocol for Multimedia Application Text Conversation, February 1998. ๐Ÿซง
  • [8] ITU-T Recommendation V.18, Operational and Interworking Requirements for DCEs Operating in Text Telephone Mode, February 1998. ๐ŸŽ€
  • [9] ITU-T Recommendation Q.931, Digital Subscriber Signalling System No. 1 (DSS 1) - ISDN User - Network Interface Layer 3 Specification for Basic Call Control, May 1998. ๐Ÿ’…

14. Acknowledgements ๐Ÿ’Œ

the authors gave a huge shoutout to all the people who argued about the Media Gateway Control Architecture and Requirements on the IETF Megaco and Sigtran mailing lists. You literally kept this thing going ๐Ÿซถ Extra thanks to the folks who contributed through internet-drafts and discussions with members of ETSI Tiphon, ITU-T SG16, TIA TR41.3.4, the ATM Forum, and the Multiservice Switching Forum. You're all iconic ๐Ÿ‘‘


15. Authors' Addresses ๐Ÿฆ‹

here are the people who wrote this, with their contact info ๐Ÿ’–

Nancy Greene
Nortel Networks
P.O. Box 3511 Stn C
Ottawa, ON, Canada K1Y 4H7

Phone: (514) 271-7221
EMail: ngreene@nortelnetworks.com


Michael A. Ramalho
Cisco Systems
1802 Rue de la Port
Wall Township, NJ

Phone: +1.732.449.5762
EMail: mramalho@cisco.com


Brian Rosen
Marconi
1000 FORE Drive, Warrendale, PA 15086

Phone: (724) 742-6826
EMail: brosen@eng.fore.com

Copyright (C) The Internet Society (2000). All Rights Reserved. ๐Ÿ’œ

okay the legal part, but make it cute ๐ŸŽ€ You can copy and share this document, and translate it, and you can write derivative works that comment on or explain it or help people implement it. You can publish and distribute all of that, in whole or in part, with no restrictions, as long as the copyright notice and this paragraph stay on every copy and derivative work. The one catch is that the document itself can't be changed in any way, like removing the copyright notice or the references to the Internet Society or other Internet organizations. The exceptions are when it's needed to develop Internet standards, in which case the copyright procedures in the Internet Standards process must be followed, or when it's translated into languages other than English. ๐ŸŒธ

These limited permissions are perpetual and won't be revoked by the Internet Society or its successors or assigns. Forever and ever ๐Ÿงš

This document and the information in it is provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED. That includes, but isn't limited to, any warranty that using the information here won't infringe any rights, and any implied warranties of merchantability or fitness for a particular purpose. Not gonna lie, that's a lot of disclaimer energy ๐Ÿ’€

Acknowledgement ๐ŸŒธ

Funding for the RFC Editor function is currently provided by the Internet Society. Thank you, Internet Society ๐Ÿซถ

๐Ÿ“ฆ where this page comes from