Section E.6.2 and that digit map completion event contains an eventDM
field in the requested actions as defined in Section 7.1.9. Other
parameters such as KeepActive or embedded events of signals
descriptors may also be present in the events descriptor and do not
affect the activation of digit map processing.
E.7 Call Progress Tones Generator Package
PackageID: cg, 0x0007
Version: 1
Extends: tonegen version 1
This package defines the basic call progress tones as signals and
extends the allowed values of the tl parameter of playtone in
tonegen.
E.7.1 Properties
None.
E.7.2 Events
None.
E.7.3 Signals
Dial Tone
SignalID: dt (0x0030)
Generate dial tone. The physical characteristic of dial tone is
available in the gateway.
Signal Type: TimeOut
Duration: Provisioned
Additional parameters:
None.
Additional values:
dt (0x0030) is defined as a tone id for playtone
The other tones of this package are defined in exactly the same way.
A table with all signal names and signal IDs is included. Note that
each tone is defined as both a signal and a tone id, thus extending
the basic tone generation package.
Signal Name Signal ID/tone id
Dial Tone dt (0x0030)
Ringing Tone rt (0x0031)
Busy Tone bt (0x0032)
Congestion Tone ct (0x0033)
Special Information Tone sit(0x0034)
Warning Tone wt (0x0035)
Payphone Recognition Tone prt (0x0036)
Call Waiting Tone cw (0x0037)
Caller Waiting Tone cr (0x0038)
E.7.4 Statistics
None.
E.7.5 Procedures
NOTE - The required set of tone ids corresponds to those defined
in Recommendation E.180/Q.35. See Recommendation E.180/Q.35 for
definition of the meanings of these tones.
E.8 Call Progress Tones Detection Package
PackageID: cd (0x0008)
Version: 1
Extends: tonedet version 1
This package defines the basic call progress detection tones. This
package extends the possible values of tone id in the "start tone
detected", "end tone detected" and "long tone detected" events.
Additional values
toneID values are defined for start tone detected, end tone
detected and long tone detected with the same values as those in
package cg (call progress tones generation package).
The required set of tone ids corresponds to Recommendation
E.180/Q.35. See Recommendation E.180/Q.35 for definition of the
meanings of these tones.
E.8.1 Properties
None.
E.8.2 Events
Events are defined as in the call progress tones generator package
(cg) for the tones listed in the table of E.7.3.
E.8.3 Signals
None.
E.8.4 Statistics
None.
E.8.5 Procedures
None.
E.9 Analog Line Supervision Package
PackageID: al, 0x0009
Version: 1
Extends: None
This package defines events and signals for an analog line.
E.9.1 Properties
None.
E.9.2 Events
onhook
EventID: on (0x0004)
Detects handset going on hook. Whenever an events descriptor is
activated that requests monitoring for an on-hook event and the
line is already on-hook, then the MG shall behave according to the
setting of the "strict" parameter.
EventDescriptor parameters:
Strict Transition
ParameterID: strict (0x0001)
Type: enumeration
Possible values: "exact" (0x00), "state" (0x01), "failWrong"
(0x02)
"exact" means that only an actual hook state transition to
on-hook is to be recognized;
"state" means that the event is to be recognized either if
the hook state transition is detected or if the hook state
is already on-hook;
"failWrong" means that if the hook state is already
on-hook, the command fails and an error is reported.
ObservedEventsDescriptor parameters:
Initial State
ParameterID: init (0x0002)
Type: Boolean
Possible values:
"True" means that the event was reported because the line
was already on-hook when the events descriptor containing
this event was activated;
"False" means that the event represents an actual state
transition to on-hook.
offhook
EventID: of (0x0005)
Detects handset going off hook. Whenever an events descriptor is
activated that requests monitoring for an off-hook event and the
line is already off-hook, then the MG shall behave according to
the setting of the "strict" parameter.
EventDescriptor parameters:
Strict Transition
ParameterID: strict (0x0001)
Type: enumeration
Possible values: "exact" (0x00), "state" (0x01), "failWrong"
(0x02)
"exact" means that only an actual hook state transition
to off-hook is to be recognized;
"state" means that the event is to be recognized either
if the hook state transition is detected or if the hook
state is already off-hook;
"failWrong" means that if the hook state is already off-
hook, the command fails and an error is reported.
ObservedEventsDescriptor parameters
Initial State
ParameterID: init (0x0002)
Type: Boolean
Possible values:
"True" means that the event was reported because the line
was already off-hook when the events descriptor
containing this event was activated;
"False" means that the event represents an actual state
transition to off-hook.
flashhook
EventID: fl, 0x0006
Detects handset flash. A flash occurs when an onhook is followed
by an offhook between a minimum and maximum duration.
EventDescriptor parameters:
Minimum duration
ParameterID: mindur (0x0004)
Type: integer in milliseconds
Default value is provisioned.
Maximum duration
ParameterID: maxdur (0x0005)
Type: integer in milliseconds
Default value is provisioned.
ObservedEventsDescriptor parameters:
None
E.9.3 Signals
ring
SignalID: ri, 0x0002
Applies ringing on the line
Signal Type: TimeOut
Duration: Provisioned
Additional parameters:
Cadence
ParameterID: cad (0x0006)
Type: list of integers representing durations of alternating
on and off segments, constituting a complete ringing cycle
starting with an on. Units in milliseconds
Default is fixed or provisioned. Restricted function MGs
may ignore cadence values they are incapable of generating.
Frequency
ParameterID: freq (0x0007)
Type: integer in Hz
Default is fixed or provisioned. Restricted function MGs
may ignore frequency values they are incapable of
generating.
E.9.4 Statistics
None.
E.9.5 Procedures
If the MGC sets an EventsDescriptor containing a hook state
transition event (on-hook or off-hook) with the "strict" (0x0001)
parameter set to "failWrong", and the hook state is already what the
transition implies, the execution of the command containing that
EventsDescriptor fails. The MG SHALL include error code 540
"Unexpected initial hook state" in its reponse.
E.9.6 Error code
This package defines a new error code:
540 - Unexpected initial hook state
The procedure for use of this code is given in E.9.5.
E.10 Basic Continuity Package
PackageID: ct (0x000a)
Version: 1
Extends: None
This package defines events and signals for continuity test. The
continuity test includes provision of either a loopback or
transceiver functionality.
E.10.1 Properties
None.
E.10.2 Events
Completion
EventID: cmp, 0x0005
This event detects test completion of continuity test.
EventDescriptor parameters
None.
ObservedEventsDescriptor parameters
Result
ParameterID: res (0x0008)
Type: enumeration
Possible values: success (0x0001), failure (0x0000)
E.10.3 Signals
Continuity test
SignalID: ct (0x0003)
Initiates sending of continuity test tone on the termination to
which it is applied.
Signal Type: TimeOut
Default value is provisioned
Additional parameters:
None.
Respond
SignalID: rsp (0x0004)
The signal is used to respond to a continuity test. See E.10.5
for further explanation.
Signal Type: On/Off
Default duration is provisioned
Additional parameters:
None.
E.10.4 Statistics
None.
E.10.5 Procedures
When a MGC wants to initiate a continuity test, it sends a command to
the MG containing:
- a signals descriptor with the ct signal; and
- an events descriptor containing the cmp event.
Upon reception of a command containing the ct signal and cmp event,
the MG initiates the continuity test tone for the specified
Termination. If the return tone is detected and any other required
conditions are satisfied before the signal times out, the cmp event
shall be generated with the value of the result parameter equal to
success. In all other cases, the cmp event shall be generated with
the value of the result parameter equal to failure.
When a MGC wants the MG to respond to a continuity test, it sends a
command to the MG containing a signals descriptor with the rsp
signal. Upon reception of a command with the rsp signal, the MG
either applies a loopback or (for 2-wire circuits) awaits reception
of a continuity test tone. In the loopback case, any incoming
information shall be reflected back as outgoing information. In the
2-wire case, any time the appropriate test tone is received, the
appropriate response tone should be sent. The MGC determines when to
remove the rsp signal.
When a continuity test is performed on a Termination, no echo devices
or codecs shall be active on that Termination.
Performing voice path assurance as part of continuity testing is
provisioned by bilateral agreement between network operators.
(Informative Note) Example tones and test procedure details are
given in Q.724 sections 7 and 8, Q.764 section 2.1.8 and Q.1902.4.
E.11 Network Package
PackageID: nt (0x000b)
Version: 1
Extends: None
This package defines properties of network terminations independent
of network type.
E.11.1 Properties
Maximum Jitter Buffer
PropertyID: jit (0x0007)
This property puts a maximum size on the jitter buffer.
Type: integer in milliseconds
Possible values: This property is specified in milliseconds.
Defined in: LocalControlDescriptor
Characteristics: read/write
E.11.2 Events
network failure
EventID: netfail, 0x0005
The termination generates this event upon detection of a failure
due to external or internal network reasons.
EventDescriptor parameters
None.
ObservedEventsDescriptor parameters
cause
ParameterID: cs (0x0001)
Type: string
Possible values: any text string
This parameter may be included with the failure event to
provide diagnostic information on the reason of failure.
quality alert
EventID: qualert, 0x0006
This property allows the MG to indicate a loss of quality of the
network connection. The MG may do this by measuring packet loss,
interarrival jitter, propagation delay and then indicating this
using a percentage of quality loss.
EventDescriptor parameters
Threshold
ParameterId: th (0x0001)
Type: integer
Possible values: 0 to 99
Description: threshold for percent of quality loss measured,
calculated based on a provisioned method, that could take
into consideration packet loss, jitter, and delay for
example. Event is triggered when calculation exceeds the
threshold.
ObservedEventsDescriptor parameters
Threshold
ParameterId: th (0x0001)
Type: integer
Possible values: 0 to 99
Description: percent of quality loss measured, calculated
based on a provisioned method, that could take into
consideration packet loss, jitter, and delay for example.
E.11.3 Signals
None.
E.11.4 Statistics
Duration
StatisticsID: dur (0x0001)
Description: provides duration of time the termination has been in
the Context.
Type: double, in milliseconds
Octets Sent
StatisticID: os (0x0002)
Type: double
Possible values: any 64-bit integer
Octets Received
StatisticID: or (0x0003)
Type: double
Possible values: any 64-bit integer
E.11.5 Procedures
None.
E.12 RTP Package
PackageID: rtp (0x000c)
Version: 1
Extends: Network Package version 1
This package is used to support packet-based multimedia data transfer
by means of the Real-time Transport Protocol (RTP) [RFC1889].
E.12.1 Properties
None.
E.12.2 Events
Payload Transition
EventID: pltrans, 0x0001
This event detects and notifies when there is a transition of the
RTP payload format from one format to another.
EventDescriptor parameters
None.
ObservedEventsDescriptor parameters
ParameterName: rtppayload
ParameterID: rtppltype, 0x01
Type: list of enumerated types.
Possible values: The encoding method shall be specified by
using one or several valid encoding names, as defined in the
RTP AV Profile or registered with IANA.
E.12.3 Signals
None.
E.12.4 Statistics
Packets Sent
StatisticID: ps (0x0004)
Type: double
Possible values: any 64-bit integer
Packets Received
StatisticID: pr (0x0005)
Type: double
Possible values: any 64-bit integer
Packet Loss
StatisticID: pl (0x0006)
Describes the current rate of packet loss on an RTP stream, as
defined in IETF RFC1889. Packet loss is expressed as percentage
value: number of packets lost in the interval between two
reception reports, divided by the number of packets expected
during that interval.
Type: double
Possible values: a 32-bit whole number and a 32-bit fraction.
Jitter
StatisticID: jit (0x0007)
Requests the current value of the interarrival jitter on an RTP
stream as defined in IETF RFC1889. Jitter measures the variation
in interarrival time for RTP data packets.
Delay
StatisticID:delay (0x0008)
Requests the current value of packet propagation delay expressed
in timestamp units. Same as average latency.
E.12.5 Procedures
None.
E.13 TDM Circuit Package
PackageID: tdmc (0x000d)
Version: 1
Extends: Network Package version 1
This package may be used by any termination that supports gain and
echo control. It was originally intended for use on TDM circuits
but may be more widely used.
New versions or extensions of this package should take non-TDM use
into account.
E.13.1 Properties
Echo Cancellation
PropertyID: ec (0x0008)
Type: boolean
Possible values:
"on" (when the echo cancellation is requested) and
"off" (when it is turned off.)
The default is provisioned.
Defined in: LocalControlDescriptor
Characteristics: read/write
Gain Control
PropertyID: gain (0x000a)
Gain control, or usage of of signal level adaptation and
noise level reduction is used to adapt the level of the signal.
However, it is necessary, for example for modem calls, to turn
off this function.
Type: integer
Possible values:
The gain control parameter may either be specified as
"automatic" (0xffffffff), or as an explicit number of decibels
of gain (any other integer value). The default is provisioned
in the MG.
Defined in: LocalControlDescriptor
Characteristics: read/write
E.13.2 Events
None.
E.13.3 Signals
None.
E.13.4 Statistics
None.
E.13.5 Procedures
None.
APPENDIX I EXAMPLE CALL FLOWS (INFORMATIVE)
All H.248.1 implementors must read the normative part of this RFC
carefully before implementing from it. The examples in this appendix
should not be used as stand-alone explanations of how to create
protocol messages.
The examples in this appendix use SDP for encoding of the Local and
and Remote stream descriptors. SDP is defined in RFC2327. If there
is is any discrepancy between the SDP in the examples, and RFC2327,
the the RFCshould be consulted for correctness. Audio profiles used
are are those defined in IETF RFC1890, and others registered with
IANA. For example, G.711 A-law is called PCMA in SDP, and is
assigned profile 0. G.723.1 is called G723 and is profile 4; H.263 is
called H263 and is profile 34. See also
http://www.iana.org/assignments/rtp-parameters.
A.1 Residential Gateway to Residential Gateway Call
This example scenario illustrates the use of the elements of the
protocol to set up a Residential Gateway to Residential Gateway call
over an IP-based network. For simplicity, this example assumes that
both Residential Gateways involved in the call are controlled by the
same Media Gateway Controller.
A.1.1 Programming Residential GW Analog Line Terminations for Idle
Behavior
The following illustrates the API invocations from the Media Gateway
Controller and Media Gateways to get the Terminations in this
scenario programmed for idle behavior. Both the originating and
terminating Media Gateways have idle AnalogLine Terminations
programmed to look for call initiation events (i.e., -offhook) by
using the Modify Command with the appropriate parameters. The null
Context is used to indicate that the Terminations are not yet
involved in a Context. The ROOT termination is used to indicate the
entire MG instead of a termination within the MG.
In this example, MG1 has the IP address 124.124.124.222, MG2 is
125.125.125.111, and the MGC is 123.123.123.4. The default Megaco
port is 55555 for all three.
1. An MG registers with an MGC using the ServiceChange command:
MG1 to MGC:
MEGACO/1 [124.124.124.222] Transaction = 9998 {
Context = - {
ServiceChange = ROOT {Services {
Method=Restart,
ServiceChangeAddress=55555, Profile=ResGW/1}
}
} }
2. The MGC sends a reply:
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Reply = 9998 {
Context = - {ServiceChange = ROOT {
Services {ServiceChangeAddress=55555, Profile=ResGW/1} } } }
3. The MGC programs a Termination in the NULL context. The
terminationId is A4444, the streamId is 1, the requestId in the
Events descriptor is 2222. The mId is the identifier of the sender
of this message, in this case, it is the IP address and port
[123.123.123.4]:55555. Mode for this stream is set to SendReceive.
"al" is the analog line supervision package. Local and Remote are
assumed to be provisioned.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Transaction = 9999 {
Context = - {
Modify = A4444 {
Media { Stream = 1 {
LocalControl {
Mode = SendReceive,
tdmc/gain=2, ; in dB,
tdmc/ec=on
},
}
},
Events = 2222 {al/of(strict=state)}
}
} }
The dialplan script could have been loaded into the MG previously.
Its function would be to wait for the OffHook, turn on dialtone and
start collecting DTMF digits. However in this example, we use the
digit map, which is put into place after the offhook is detected
(step 5 below).
Note that the embedded EventsDescriptor could have been used to
combine steps 3 and 4 with steps 8 and 9, eliminating steps 6 and 7.
4. The MG1 accepts the Modify with this reply:
MG1 to MGC:
MEGACO/1 [124.124.124.222]:55555
Reply = 9999 {
Context = - {Modify = A4444} }
5. A similar exchange happens between MG2 and the MGC, resulting in
an idle Termination called A5555.
A.1.2 Collecting Originator Digits and Initiating Termination
The following builds upon the previously shown conditions. It
illustrates the transactions from the Media Gateway Controller and
originating Media Gateway (MG1) to get the originating Termination
(A4444) through the stages of digit collection required to initiate a
connection to the terminating Media Gateway (MG2).
6. MG1 detects an offhook event from User 1 and reports it to the
Media Gateway Controller via the Notify Command.
MG1 to MGC:
MEGACO/1 [124.124.124.222]:55555 Transaction = 10000 {
Context = - {
Notify = A4444 {ObservedEvents =2222 {
19990729T22000000:al/of(init=false)}}
} }
7. And the Notify is acknowledged.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Reply = 10000 {
Context = - {Notify = A4444} }
8. The MGC Modifies the termination to play dial tone, to look for
digits according to Dialplan0 and to look for the on-hook event now.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Transaction = 10001 {
Context = - {
Modify = A4444 {
Events = 2223 {
al/on(strict=state), dd/ce {DigitMap=Dialplan0}
},
Signals {cg/dt},
DigitMap= Dialplan0{ (0| 00|[1-
7]xxx|8xxxxxxx|Fxxxxxxx|Exx|91xxxxxxxxxx|9011x.)}
}
} }
9. And the Modify is acknowledged.
MG1 to MGC:
MEGACO/1 [124.124.124.222]:55555 Reply = 10001 {
Context = - {Modify = A4444} }
10. Next, digits are accumulated by MG1 as they are dialed by User
1. Dialtone is stopped upon detection of the first digit. When an
appropriate match is made of collected digits against the currently
programmed Dialplan for A4444, another Notify is sent to the Media
Gateway Controller.
MG1 to MGC:
MEGACO/1 [124.124.124.222]:55555 Transaction = 10002 {
Context = - {
Notify = A4444 {ObservedEvents =2223 {
19990729T22010001:dd/ce{ds="916135551212",Meth=UM}}}
} }
11. And the Notify is acknowledged.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Reply = 10002 {
Context = - {Notify = A4444} }
12. The controller then analyses the digits and determines that a
connection needs to be made from MG1 to MG2. Both the TDM
termination A4444, and an RTP termination are added to a new context
in MG1. Mode is ReceiveOnly since Remote descriptor values are not
yet specified. Preferred codecs are in the MGC's preferred order of
choice.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Transaction = 10003 {
Context = $ {
Add = A4444,
Add = $ {
Media {
Stream = 1 {
LocalControl {
Mode = ReceiveOnly,
nt/jit=40 ; in ms
},
Local { v=0 c=IN IP4 $ m=audio $ RTP/AVP 4
a=ptime:30 v=0 c=IN IP4 $ m=audio $ RTP/AVP 0
}
}
}
}
} }
NOTE - The MGC states its preferred parameter values as a series
of SDP blocks in Local. The MG fills in the Local Descriptor in
the Reply.
13. MG1 acknowledges the new Termination and fills in the Local IP
address and UDP port. It also makes a choice for the codec based on
the MGC preferences in Local. MG1 sets the RTP port to 2222.
MG1 -> MGC:
MEGACO/1 [124.124.124.222]:55555 Reply = 10003 {
Context = 2000 {
Add = A4444,
Add=A4445{
Media {
Stream = 1 {
Local { v=0 o=- 2890844526 2890842807 IN IP4
124.124.124.222 s=- t= 0 0 c=IN IP4 124.124.124.222 m=audio 2222
RTP/AVP 4 a=ptime:30 a=recvonly
} ; RTP profile for G.723.1 is 4
}
}
}
} }
14. The MGC will now associate A5555 with a new Context on MG2, and
establish an RTP Stream (i.e., A5556 will be assigned), SendReceive
connection through to the originating user, User 1. The MGC also
sets ring on A5555.
MGC to MG2:
MEGACO/1 [123.123.123.4]:55555 Transaction = 50003 {
Context = $ {
Add = A5555 { Media {
Stream = 1 {
LocalControl {Mode = SendReceive} }},
Events=1234{al/of(strict=state)},
Signals {al/ri}
},
Add = $ {Media {
Stream = 1 {
LocalControl {
Mode = SendReceive,
nt/jit=40 ; in ms
},
Local { v=0 c=IN IP4 $ m=audio $ RTP/AVP 4
a=ptime:30
},
Remote { v=0 c=IN IP4 124.124.124.222 m=audio 2222
RTP/AVP 4 a=ptime:30
} ; RTP profile for G.723.1 is 4
}
}
}
} }
15. This is acknowledged. The stream port number is different from
the control port number. In this case it is 1111 (in the SDP).
MG2 to MGC:
MEGACO/1 [125.125.125.111]:55555 Reply = 50003 {
Context = 5000 {
Add = A5555,
Add = A5556{
Media {
Stream = 1 {
Local { v=0 o=- 7736844526 7736842807 IN IP4
125.125.125.111 s=- t= 0 0 c=IN IP4 125.125.125.111 m=audio 1111
RTP/AVP 4 }
} ; RTP profile for G723.1 is 4
}
}
} }
16. The above IPAddr and UDPport need to be given to MG1 now.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Transaction = 10005 {
Context = 2000 {
Modify = A4444 {
Signals {cg/rt}
},
Modify = A4445 {
Media {
Stream = 1 {
Remote { v=0 o=- 7736844526 7736842807 IN IP4
125.125.125.111 s=- t= 0 0 c=IN IP4 125.125.125.111 m=audio 1111
RTP/AVP 4
}
} ; RTP profile for G723.1 is 4
}
}
} }
MG1 to MGC:
MEGACO/1 [124.124.124.222]:55555 Reply = 10005 {
Context = 2000 {Modify = A4444, Modify = A4445} }
17. The two gateways are now connected and User 1 hears the
RingBack. The MG2 now waits until User2 picks up the receiver and
then the two-way call is established.
From MG2 to MGC:
MEGACO/1 [125.125.125.111]:55555 Transaction = 50005 {
Context = 5000 {
Notify = A5555 {ObservedEvents =1234 {
19990729T22020002:al/of(init=false)}}
} }
From MGC to MG2:
MEGACO/1 [123.123.123.4]:55555 Reply = 50005 {
Context = - {Notify = A5555} }
From MGC to MG2:
MEGACO/1 [123.123.123.4]:55555 Transaction = 50006 {
Context = 5000 {
Modify = A5555 {
Events = 1235 {al/on(strict=state)},
Signals { } ; to turn off ringing
}
} }
From MG2 to MGC:
MEGACO/1 [125.125.125.111]:55555 Reply = 50006 {
Context = 5000 {Modify = A4445} }
18. Change mode on MG1 to SendReceive, and stop the ringback.
MGC to MG1:
MEGACO/1 [123.123.123.4]:55555 Transaction = 10006 {
Context = 2000 {
Modify = A4445 {
Media {
Stream = 1 {
LocalControl {
Mode=SendReceive
}
}
}
},
Modify = A4444 {
Signals { }
}
} }
from MG1 to MGC:
MEGACO/1 [124.124.124.222]:55555 Reply = 10006 {
Context = 2000 {Modify = A4445, Modify = A4444}}
19. The MGC decides to Audit the RTP termination on MG2.
MGC -> MG2:
MEGACO/1 [123.123.123.4]:55555 Transaction = 50007 {
Context = - {AuditValue = A5556{
Audit{Media, DigitMap, Events, Signals, Packages, Statistics }}
} }
20. The MG2 replies.
MG2 -> MGC:
MEGACO/1 [125.125.125.111]:55555 Reply = 50007 {
Context = - { AuditValue = A5556 {
Media {
TerminationState { ServiceStates = InService,
Buffer = OFF },
Stream = 1 {
LocalControl { Mode = SendReceive,
nt/jit=40 },
Local { v=0 o=- 7736844526 7736842807 IN IP4
125.125.125.111 s=- t= 0 0 c=IN IP4 125.125.125.111 m=audio 1111
RTP/AVP 4 a=ptime:30
},
Remote { v=0 o=- 2890844526 2890842807 IN IP4
124.124.124.222 s=- t= 0 0 c=IN IP4 124.124.124.222 m=audio 2222
RTP/AVP 4 a=ptime:30
} } },
Events,
Signals,
DigitMap,
Packages {nt-1, rtp-1},
Statistics { rtp/ps=1200, ; packets sent
nt/os=62300, ; octets sent
rtp/pr=700, ; packets received
nt/or=45100, ; octets received
rtp/pl=0.2, ; % packet loss
rtp/jit=20,
rtp/delay=40 } ; avg latency
}
} }
21. When the MGC receives an onhook signal from one of the MGs, it
brings down the call. In this example, the user at MG2 hangs up
first.
From MG2 to MGC:
MEGACO/1 [125.125.125.111]:55555 Transaction = 50008 {
Context = 5000 {
Notify = A5555 {ObservedEvents =1235 {
19990729T24020002:al/on(init=false)}
}
} }
From MGC to MG2:
MEGACO/1 [123.123.123.4]:55555 Reply = 50008 {
Context = - {Notify = A5555} }
22. The MGC now sends both MGs a Subtract to take down the call.
Only the subtracts to MG2 are shown here. Each termination has its
own set of statistics that it gathers. An MGC may not need to
request both to be returned. A5555 is a physical termination, and
A5556 is an RTP termination.
From MGC to MG2:
MEGACO/1 [123.123.123.4]:55555 Transaction = 50009 {
Context = 5000 {
Subtract = A5555 {Audit{Statistics}},
Subtract = A5556 {Audit{Statistics}}
} }
From MG2 to MGC:
MEGACO/1 [125.125.125.111]:55555 Reply = 50009 {
Context = 5000 {
Subtract = A5555 {
Statistics {
nt/os=45123, ; Octets Sent
nt/dur=40 ; in seconds
}
},
Subtract = A5556 {
Statistics {
rtp/ps=1245, ; packets sent
nt/os=62345, ; octets sent
rtp/pr=780, ; packets received
nt/or=45123, ; octets received
rtp/pl=10, ; % packets lost
rtp/jit=27,
rtp/delay=48 ; average latency
}
}
} }
23. The MGC now sets up both MG1 and MG2 to be ready to detect the
next off-hook event. See step 1. Note that this could be the
default state of a termination in the null context, and if this were
the case, no message need be sent from the MGC to the MG. Once a
termination returns to the null context, it goes back to the default
termination values for that termination.
APPENDIX II Changes From RFC3015
In the following table, "source" indicates when the change was first
approved. It has the following values:
IG1100: H.248 Implementor's Guide approved in November, 2000 (as TD
Plen-39, Christian Groves, editor).
IG0601: H.248 Implementor's Guide approved in June, 2001 (as TD
Plen-15, Christian Groves, editor).
IGDUB: Draft H.248 Implementor's Guide approved at the Q.3
Rapporteur's meeting held near Dublin, October 2001 (as TD-28, Terry
Anderson, editor).
GEN0202: added at the Geneva meeting, February 2002, which consented
to H.248 v1 Amendment 1 (as TD Plen-36r1, Marcello Pantaleo, editor).
ITUPOST: added in post-Geneva editing by the ITU-T.
TTPOST: added in post-approval editing by the Megaco Chair, Tom
Taylor, who assembled this document for submission.
Section Source Change
1 ITUPOST Reference changed from H.248 to H.248.1.
2.1 ITUPOST Reference added for error codes, changed from
H.248 Annex L to H.248.8 (2002).
2.1 IG1100 Corrected Q.765 reference to Q.765.5.
2.1 GEN0202 Added reference to X.690.
2.2 GEN0202 Added reference to H.226.
2.2 IGDUB Added informative references to Q.724, Q.764,
and Q.1902.4.
4 IG0601 Added expansion of ALF.
5 TTPOST Gave priority to IETF conventions (added at
start of document).
6.1.1 IG0601 Added text regarding use of wildcards for
context identifiers. (This information
already appeared in section 8.1.2. The IG
change subsequently disappeared.)
6.1.1 IG1100 Added ranking of priority values.
6.2 IGDUB Deleted definition of signals.
6.2 GEN0202 Expanded text and diagrams describing
multiplexing terminations.
6.2 TTPOST Added asterisks to multiplexing diagrams to
indicate centre of context. Added Figure 6a
showing cascading of multiplexes.
6.2.2 IG0601 Added text indicating that ALL does not
include ROOT.
6.2.3 IG1100 Added text clarifying what must be supported
to claim support of a package.
6.2.3 IG1100 Added text indicating what packages a peer can
indicate support for, when some of them are
extensions of others.
6.2.4 IG0601 Added text on ability of provisioning to
override default values, and need for MGC to
audit to learn the provisioned defaults.
6.2.4 IG0601 Added text indicating effect of omitting
specific properties from Descriptors in
commands modifying a termination.
Contradicted original text saying that omitted
properties retain their prior values (still
true for entirely-omitted Descriptors).
6.2.4 GEN0202 Modified above text to restrict it to
read/write properties, allow for default
behaviour in place of default values if so
specified in the property definition.
6.2.4 IGDUB Trimmed definition of signals Descriptor in
table and inserted cross-reference to section
7.1.11.
6.2.4 IG1100 Added Topology and Error Descriptors to table.
6.2.5 IGDUB Specified error code to return if ROOT used
inappropriately.
7.1.1 IG1100 Added qualification to explanation of effect
of missing Audit Descriptor, excepting
Subtract.
7.1.3 GEN0202 Changed "inputs" to "bearers" to be consistent
with terminology in 6.2.
7.1.4 IG0601 Small change to make clear that more than one
of Local, Remote, and LocalControl can be
included in the default streamId.
7.1.7 IG0601 Default value for Mode specified to be
Inactive.
7.1.7 GEN0202 Added text requiring processing of media in
any of the reserved formats, where more than
one has been reserved in a given stream.
7.1.8 IGDUB Added restriction to at most one m= line per
session description.
7.1.9 IG0601 Text added to omit request identifier if the
EventsDescriptor is empty. Further text added
at end to indicate the effects of an empty
EventsDescriptor and an empty
EventBufferDescriptor.
7.1.9 IG0601 Fixed typo for destination of a Notify.
7.1.9 IG1100 Added note to say event remains active after
it has been notified, so long as it is still
present in the active Events Descriptor.
7.1.11 IGDUB Added definition of signals.
7.1.11 GEN0202 Modified definition to include example of more
complex signal, and added role of signal in
media preparation for future signals.
7.1.11 IGDUB The timeout completion reason was broadened to
include other circumstances where the signal
completed on its own. Text added to indicate
that if default signal type changed to TO,
duration parameter must be provided.
7.1.11 GEN0202 Removed reference to BR signal being "so
short" it will stop on its own. Added text
indicating that if the type of a signal is
changed to TO, the Duration parameter must be
supplied.
7.1.11 IG1100 Deleted text discussing type of Signals List.
7.1.12 GEN0202 Improved wording of introductory paragraph and
added text making content of returned
Descriptor clear.
7.1.14.2 GEN0202 Added text indicating that when the start
timer is set to 0, initial digit timing is
disabled and the MG waits indefinitely for
digits.
7.1.14.2 GEN0202 Added text pointing out that default digit
timer values should be provisioned, but can be
overridden in the digit map.
7.1.14.3 GEN0202 Changed result of long-short digit timer
conflict from undefined to long.
7.1.14.6 IG1100 Clarified that the digit map is provided by
the eventDM parameter, which must be present.
7.1.14.7 GEN0202 Added text clarifying that events covered by
the digit map completion event have no side-
effects unless separately enabled.
7.1.14.8 IG0601 Added requirement that the event specification
include the eventDM parameter.
7.1.17 IGDUB Added text to indicate timestamp is optional
and to include observed event parameters in
reported content.
7.1.17 GEN0202 Deleted provision that time is expressed in
UTC (since intention was to use format, not
time zone).
7.1.18 IGDUB Added text indicating error to return if
topology option not supported.
7.1.18 IG1100 Added text clarifying effect of not mentioning
TTPOST a termination in a topology Descriptor, and
default topology for a new termination. (This
text got lost between the Dublin meeting and
the production of H.248 Amendment 1 out of the
Geneva 02/02 meeting. It has been added back
to the present document.)
7.1.19 IG1100 New section to describe Error Descriptor.
GEN0202 Slightly edited in Geneva 02/02 meeting.
ITUPOST Reference for error code documentation updated
to H.248.8.
7.1.19 IG0601 Added paragraph giving guidance on level at
which errors should be reported.
7.2 IG1100 Noted possibility of Error Descriptor in reply
to any command.
7.2.1 IG1100 Added EventBufferDescriptor as Add parameter.
7.2.1 IG1100 Removed restriction on use of CHOOSE wildcard.
7.2.2 IG1100 Added EventBufferDescriptor as Modify
parameter.
7.2.2 GEN0202 Added text on side-effects of Modify of a
multiplexing termination.
7.2.3 IG1100 Added prohibition against subtracting from the
NULL context.
7.2.3 GEN0202 Added text on side-effects of Subtract of a
multiplexing termination.
7.2.3 IGDUB Added text clarifying effect of empty
AuditDescriptor in Subtract.
7.2.4 IG1100 Added EventBufferDescriptor as Move parameter.
7.2.4 GEN0202 Removed misleading statement that Move acts as
subtract from original context.
7.2.4 IG1100 Clarified effect of Move on properties of the
moved termination.
7.2.4 GEN0202 Added text on side-effects of Move of a
multiplexing termination.
7.2.5 IG1100 Added examples showing W- wildcard usage.
7.2.5 IG1100 Noted that returning a list of all contextIDs
requires that they be returned one per
ActionReply.
7.2.5 IG1100 Added table entry (ALL, specific) to determine
context in which termination currently
resides.
7.2.6 GEN0202 Added table similar to that in 7.2.5.
7.2.7 IG0601 Added TerminationID to API.
7.2.7 IGDUB Indicated timestamp was optional in Notify, to
accord with syntax.
7.2.7 IG1100 Noted possibility of sending Error Descriptor
in Notify.
7.2.8 IG0601 Added text to description of Forced method to
indicate that Forced on ROOT indicates a cold
restart (all context state lost).
7.2.8 IGDUB Amplified explanation of Disconnected method
to emphasize return to the previously
controlling MGC.
7.2.8 IG0601 Added text for MG use of Failover method when
it detects MGC failure.
7.2.8 IG1100 Added notes discouraging use of
ServiceChangeAddress and warning that it could
be either a full address or just a port
number.
7.2.8 IG0601 Added text indicating that timestamp does not
necessarily represent absolute time, only
local clock reading.
7.2.8 IGDUB Corrected "gateway" to "MGC" in discussion of
returned ServiceChangeMgcId parameter.
7.3 IG0601 Removed error code documentation to Annex L
ITUPOST (now H.248.8).
8 IG1100 Added requirement that an Action be non-empty.
8 GEN0202 Added context properties and context property
audit requests to commands as potential
contents of actions.
8.1.2 GEN0202 Added prohibition on using partial contextIDs
with ALL wildcards.
8.2.2 IG1100 Added text clarifying when in transaction
processing the requested actions have been
completed and a reply can be sent.
8.2.2 IG1100 Added ALL as allowed contextID in
TransactionReply.
8.2.2 GEN0202 Provided general reference to section 7.1.19
for generation of error Descriptors.
8.2.2 IG0601 Corrected Actions to Commands when discussing
partially-understood action.
8.3 IG0601 Added text specifying that the same MId value
must be used by a given entity throughout the
life of a control association.
8.3 IG0601 Added text expanding on independence of
transactions from messages.
9 ITUPOST Indicated that additional transports may be
defined in separate Recommendations as well as
annexes to the primary specification.
9 IG0601 Gave specific example of "request source
address" for IP.
9.1 IG1100 Deleted restriction to one outstanding Notify
command on a termination at one time, since
this is transport-specific.
9.1 IG0601 Restored restriction, but noted that it
applied only to transport not guaranteeing
ordered delivery.
10.2 IG1100 Corrected length of synthesized address field
from 10 to 20 hex digits and indicated that
calculation should be over entire message, not
just one transaction.
11.2 IG1100 Corrected text in first two paragraphs
describing use of ServiceChangeMgcId
parameter.
11.2 IG1100 Corrected "Transaction Accept" to "Transaction
Reply".
11.4 IG0601 Noted that support of redundant MGs requires
GEN0202 use of a reliable transport and support in the
MGC. Added more explanation in Geneva.
11.5 IG0601 Added text clarifying procedure if MG unable
to establish a control relationship with any
of its eligible MGCs.
11.5 IGDUB Added text indicating that when trying to
reestablish contact with the previously
controlling MGC the MG uses the Disconnected
method.
11.5 IG1100 Clarified handoff procedure.
11.5 GEN0202 Changed text on replies to transactions in
progress during handoff. Replies now
discarded when the service relationship with
the old MGC has ended, rather than sent to the
new MGC. The new MGC could still send replies
to requests sent to the old MGC.
12.1.1 GEN0202 Added optional package designation as
"designed to be extended only".
12.1.1 IG1100 Made prohibition on overloading of identifiers
in extended packages transitive through all
ancestors of the extended package.
12.1.2 IGDUB Clarified the set of types allowed for
properties.
12.1.2 GEN0202 Added requirement to specify the base type of
a sub-list.
12.1.2 GEN0202 Provided requirements for content of the
"Possible Values" template item, including
specification of default values or behaviour.
12.1.4 GEN0202 Added requirement to specify the default
signal type, and specify a default duration
for TO signals. Also noted that duration is
meaningless for BR, and that the signal type
might be dependent on the values of other
signal parameters.
12.2 GEN0202 Fixed section title (covers only event and
signal parameters, not properties or
statistics).
12.2 IG1100 Reserved SPA and EPA prefixes, so they are not
to be used for signal and event parameter
tokens.
12.2 IG0601 Expanded list of reserved prefixes.
12.2 IGDUB Clarified the set of types allowed for signal
and event parameters.
12.2 GEN0202 Added requirement to specify the base type of
a sub-list.
12.2 GEN0202 Provided requirements for content of the
"Possible Values" template item, including
specification of default values or behaviour.
12.4 IGDUB Corrected to indicate identifiers must start
with alphabetic rather than alphanumeric
character.
13.1 IG0601 Changed private range of binary package
identifiers to convenient hex values.
A GEN0202 Removed versions from X.680 and X.690
references.
A.2 IGDUB Added note warning that the syntax alone does
not provide a complete description of the
constraints, but must be supplemented by a
reading of the text and comments.
A.2 IG0601 Added description of double wrapping of
parameters declared as OCTET STRING.
A.2 GEN0202 Some editing of double wrapping description to
use ASN.1, BER in their proper places. Added
possibility of encoding strings as UTF8String,
but only if they contain non-ASCII characters.
A.2 IGDUB Added line in table on double wrapping of true
octet strings.
A.2 IG1100 Corrected and expanded comments describing
mtpAddress form of MId. Fixed maximum length
of mtpAddress both here and in
ServiceChangeAddress.
A.2 IG0601 Inserted missing lines in IP4Address
production.
A.2 IG0601 Modified TransactionResponseAck to allow
acknowledgement of multiple ranges of
transactionIds.
A.2 IG0601 Corrected numerical value of CHOOSE as a
context identifier.
A.2 IGDUB Added missing extension marker in
TopologyRequest.
A.2 IG1100 AuditReply and AuditResult modified to bring
binary functionality into line with text
functionality.
A.2 IG0601 Removed OPTIONAL tag from terminationID in
NotifyReply.
A.2 IG0601 Added extraInfo substructure to EventParameter
and SigParameter.
A.2 IG0601 Modified MediaDescriptor to make it optional
to specify a stream.
A.2 IG0601 Added OPTIONAL tags to reserveValue and
reserveGroup.
A.2 IGDUB Added to comments for pkgdName to indicate
applicability to event names, signal names,
and statisticIds as well as property.
A.2 IG0601 RequestID made optional in EventsDescriptor
and SecondEventsDescriptor and comment added
saying it must be present if events are
present.
A.2 IG1100 Added OPTIONAL tags on RequestActions and
SecondRequestedActions keepActive BOOLEANs.
A.2 IG1100 Added comment to indicate requestID value to
use in an AuditCapReply.
A.2 GEN0202 Added comment to DigitMapValue indicating time
units for timers.
A.2 IG0601 Added comment indicating coding of Value for
GEN0202 ServiceChangeReason. Cleaned up in Geneva to
use ASN.1 and BER in their proper places.
A.2 IG0601 Inserted missing extension marker in
ServiceChangeParm production.
A.2 IG0601 Aligned definition of mtpAddress in
ServiceChangeAddress with that in MId.
A.2 IG0601 Added timestamp to ServiceChangeResParm.
A.2 IGDUB Changed type of profileName in
ServiceChangeProfile to IA5String.
A.2 IG0601 Made returned value optional in
statisticsParameter, to support
auditCapability result.
A.2 GEN0202 Added reference to ISO 8601:1988 for
TimeNotation.
A.2 IG1100 Value production modified to support the
sublist parameter type.
A.3 IG1100 Corrected ABNF for digitStringlisT, replacing
"/" with "|".
A.3 IG1100 Added parentheses to digitMapRange production.
A.3 IG1100 Replaced more abbreviated syntax for pathName
with fuller definition and constraints copied
from B.2.
B.2 IGDUB Added note warning that the syntax alone does
not provide a complete description of the
constraints, but must be supplemented by a
reading of the text and comments.
B.2 IG0601 Added note warning that the interpretation of
symbols is context-dependent.
B.2 IG1100 Added comment to indicate case insensitivity
of protocol (excepting SDP) and ABNF.
B.2 IG0601 Expanded upon and capitalized this comment.
B.2 IG0601 Lengthy note added on the coding of the VALUE
construct.
B.2 IGDUB Deleted sentence in note suggesting that
packages could add new types for properties,
parameters, or statistics.
B.2 IG0601 Added note indicating that parsers should
allow for white space preceding the first line
of SDP in Local or Remote.
B.2 IGDUB Added comments identifying the O- and W- tags.
B.2 IG1100 Moved wildcard tag up from individual commands
to commandRequestList.
B.2 GEN0202 Added additional error case to actionReply.
B.2 IG0601 Modified syntax of auditOther to allow return
of terminationID only.
B.2 IGDUB Corrected upper limit for V4hex.
B.2 IG1100 Corrected and expanded comments describing
mtpAddress form of MId.
B.2 IG0601 Modified comment to mediaParm to make
streamParms and StreamDescriptor mutually
exclusive.
B.2 GEN0202 Modified comment further to indicate at most
one instance of terminationStateDescriptor.
B.2 GEN0202 Expanded comment for streamParm to indicate
the restriction on repetition is per item.
B.2 IG0601 Modified "at most once" comments to localParm,
terminationStateParm, and modemType, to allow
multiple instances of propertyParm in the
first two cases and extensionParameter in the
last one.
B.2 IG0601 Added note before description of Local and
Remote, pointing out that the octet value x00
is not allowed in octetString.
B.2 IG0601 Syntax for eventsDescriptor, embedFirst, and
eventBufferDescriptor modified to make
contents beyond token optional.
B.2 IGDUB Replaced "event" by "item" in comment to
pkgdName because pkgdName applies to
properties, signals, and statistics as well.
B.2 IG0601 Corrected placement of EQUAL in eventDM
production.
B.2 IG1100 Added comment and syntax to indicate requestID
value to use in an AuditCapReply.
B.2 IG1100 Corrected Modem Descriptor to allow package
items as properties.