Overview of H.245
Recommendation H.245 is the control protocol for multimedia communication. It is designed for conference communication. H.245 is the control protocol in H.323 stack, and controls the establishment, maintenance and release of channels.
In H.245, there are two kinds of channels defined as follows:
1) Control channel: also called H.245 channel. Through this channel, two H.245 peer signaling entities in different H.323 entities transmit H.245 messages to control the establishment and release of media channel. Control channel is a reliable channel, which corresponds to a TCP connection in IP network, and the numbers of the connected ports are allocated dynamically. In the H.225.0 call setup procedure, the calling and called endpoints (or GK) use Setup and Connect messages to exchange the allocated H.245 port address. After the call is set up, H.245 control channel is established. Each call has only one H.245 control channel, which exists during the call and will be released after the call is over.
2) Communication channel: also called media channel. In H.245, it is defined as logical channel, used to transmit user communication information. Generally, there might be multiple logical channels between two entities, and they can be established or released when necessary. In H.245, establishment is called Open and release is called Close. Logical channels are opened or closed by H.245, and each logical channel is assigned with an identifier when opened. Control channel can be regarded as a special permanent logical channel, whose channel number is 0.
In H.323, most of logical channels are uni-directional channels, especially those in conference call. However, T.120 data communication protocol and ordinary point-to-point telephone communication require bi-directional channel, which is composed of a pair of uni-directional logical channels occupying two logical channel numbers. The H.245 OpenLogicalChannel procedure supports uni-directional channel establishment and bi-directional channel establishment. The logical channels used to transmit audio and video signals are unreliable channels (such as UDP channels), the logical channels used to transmit data are reliable channels (such as TCP channel). Their port numbers are allocated dynamically. Logical channel establishment is actually that both parties use OLC and OLCA messages to exchange their allocated port numbers.
Each logical channel use a specific coding algorithm and bandwidth to transmit a specific kind of media information. In this case, both parties must negotiate these parameters before a logical channel is established, to determine the acceptable parameter ranges. This is the capability exchange procedure of H.245. H.245 establishes logical channel according to receiving party controlling principle, and the sending party determines channel characteristics parameters within the range defined by receiving party. The purpose of capability exchange procedure is to tell the other end the receive capability of the local end through proper messages. The message can also be used to notify send capability, for the purpose of indicating a selection option of the local end, and providing a condition when the peer end determines its receive capability. After getting the receive capability of the peer end, the local end determines its send mode within the range of the peer end, and start the OpenLogicalChannel procedure.
The following describes the control procedure of H.245.
3) Capability exchange
The capability exchange procedures are intended to ensure that the only multimedia signals to be transmitted are those that can be received and treated appropriately by the receive terminal. This requires that the capabilities of each terminal to receive and decode be known to the other terminal. It is not necessary that a terminal understand or store all in-coming capabilities; those that are not understood, or can not be used shall be ignored, and no fault shall be considered to have occurred.
The total capability of a terminal to receive and decode various signals is made known to the other terminal by transmission of its capability set.
Receive capabilities describe the terminal's ability to receive and process in-coming media streams. Transmitters shall limit the content of their transmitted information to that which the receiver has indicated it is capable of receiving. The absence of a receive capability indicates that the terminal cannot receive (is a transmitter only).
Transmit capabilities describe the terminal's ability to transmit media streams. Transmit capabilities serve to offer receivers a choice of possible modes of operation, so that the receiver may request the mode which it prefers to receive. The absence of a transmit capability indicates that the terminal is not offering a choice of preferred modes to the receiver (but it may still transmit anything within the capability of the receiver).
These capability sets provide for more than one stream of a given medium type to be sent simultaneously. For example, a terminal may declare its ability to receive (or send) two independent H.262 video streams and two independent G.722 audio streams at the same time. Capability messages have been defined to allow a terminal to indicate that it does not have fixed capabilities, but that they depend on which other modes are being used simultaneously. For example, it is possible to indicate that higher resolution video can be decoded when a simpler audio algorithm is used; or that either two low resolution video sequences can be decoded or a single high resolution one. It is also possible to indicate trade-offs between the capability to transmit and the capability to receive.
Non-standard capabilities and control messages may be issued using the NonStandardParameter structure. Note that while the meaning of non-standard messages is defined by individual organizations, equipment built by any manufacturer may signal any non-standard message, if the meaning is known.
4) Logical channel signaling procedures
An acknowledged protocol is defined for the opening and closing of logical channels which carry the audiovisual and data information. The aim of these procedures is to ensure that a terminal is capable of receiving and decoding the data that will be transmitted on a logical channel at the time the logical channel is opened rather than at the time the first data is transmitted on it and to ensure that the receive terminal is ready to receive and decode the data that will be transmitted on the logical channel before that transmission starts. Logical channels should only be opened when there is sufficient capability to receive data on all open logical channels simultaneously.
A part of this protocol is concerned with the opening of bidirectional channels. To avoid conflicts which may arise when two terminals initiate similar events simultaneously, one terminal is defined as the master terminal, and the other as the slave terminal. A protocol is defined to establish which terminal is the master and which is the slave. However, systems that use this Recommendation may specify the procedure specified in this Recommendation or another means of determining which terminal is the master and which is the slave.
5) Receive terminal request logical channel closure
A logical channel is opened and closed from the transmitter side. A mechanism is defined which allows a receive terminal to request the closure of an incoming logical channel. The transmit terminal may accept or reject the logical channel closure request. A terminal may, for example, use these procedures to request the closure of an incoming logical channel which, for whatever reason, cannot be decoded. These procedures may also be used to request the closure of a bidirectional logical channel by the terminal that did not open the channel. Note that the receive terminal can only request, and the closing of a channel is initiated by the transmitter side.
6) Master-slave determination
Conflicts may arise when two terminals involved in a call initiate similar events simultaneously and only one such event is possible or desired, for example, when resources are available for only one occurrence of the event. To resolve such conflicts, one terminal shall act as a master and the other terminal shall act as a slave terminal. Rules specify how the master and slave terminal shall respond at times of conflict.
7) Round-trip delay determination
It may be useful in some applications to have knowledge of the round-trip delay between a transmit terminal and a receive terminal. A mechanism is provided to measure this round-trip delay. This mechanism is very simple, only containing two messages without parameters, delay measure request and response. The delay value is measured by the requester according to the delay between the request and response. This mechanism may also be useful as a means to detect whether the remote terminal is still functioning
8) Maintenance loops
Procedures are specified to establish maintenance loops. It is possible to specify the loop of a single logical channel either as a digital loop or decoded loop, and the loop of the whole multiplex. This procedure is a mandatory function of gateway.
9) Commands and indications
Commands and indications are provided for various purposes: video/audio, active/inactive signals to inform the user; fast update request for source switching in multipoint applications are some examples. They are not related to general procedures. The common commands and indications include flow control command, multi-point mode command, communication mode command, and user input indication.
H.245 Messages
Messages defined in this Recommendation are classified as request, response, command and indication messages. Request messages and response messages are used by protocol entity, comprising the protocol procedures. A request message results in an action by the remote terminal and requires an immediate response from it. A response message is the response to a request message. A command message requires action but no explicit response. An indication contains information that does not require action or response.
I. Message type
The messages used during H.245 procedures are as follows:
l Terminal capability messages
Message name | Message type |
Terminal Capability Set | Request |
Terminal Capability Set Acknowledge | Response |
Terminal Capability Set Reject | Response |
Terminal Capability Set Release | Indication |
l Logical channel signaling messages
Message name | Message type |
Open Logical Channel | Request |
Open Logical Channel Acknowledge | Response |
Open Logical Channel Reject | Response |
Open Logical Channel Confirm | Indication |
Close Logical Channel | Request |
Close Logical Channel Acknowledge | Response |
Message name | Message type |
Request Channel Close | Request |
Request Channel Close Acknowledge | Response |
Request Channel Close Reject | Response |
Request Channel Close Release | Indication |
l Master Slave Determination messages
This set of messages is used by a protocol to determine which terminal is the master terminal and which is the slave terminal. They can be either used or not used during H.245 channel establishment. For IP services, it is not recommended.
Message name | Message type |
Master Slave Determination | Request |
Master Slave Determination Acknowledge | Response |
Master Slave Determination Reject | Response |
Master Slave Determination Release | Indication |
l Round Trip Delay messages
Message name | Message type |
Round Trip Delay Request | Request |
Round Trip Delay Response | Response |
l Maintenance Loop messages
Message name | Message type |
Maintenance | Request |
Maintenance | Response |
Maintenance | Response |
Maintenance Loop Command off | Command |
1) Commands
Message name |
Flow Control |
Send Terminal Capability Set |
Encryption |
End Session |
(Miscellaneous Commands) |
It is used to request the far-end terminal to indicate its transmit and receive capabilities by sending one or more TerminalCapabilitySets that contain the information requested. This command is not sent repeatedly if not necessary. This command is used to exchange encryption capabilities and to command the transmission of an initialization vector (IV). This command indicates the end of the H.245 session. After transmitting EndSessionCommand, the terminal shall not send any more of the messages defined in this Recommendation. This is used for a variety of commands, some of which are present in Recommendations H.221 and H.230 [5] and [10], respectively.
2) Basic indication messages
Message name |
Function Not Understood |
Jitter Indication |
H.225.0 Maximum Skew Indication |
User Input |
(Miscellaneous Indication) |
“Function Not Understood” is used to return requests, responses and commands that are not understood to the transmitter of them. “Jitter Indication” is used to indicate the amount of jitter, as estimated by the receive terminal, of a logical channel. It may be useful for choice of bit-rate and buffer control in video channels, or to determine an appropriate rate of transmission of timing information. “H.225.0 Maximum Skew Indication” is used to indicate to the far-end terminal the average amount of time skew between two logical channels. It is used to indicate synchronous delay of audio and video in conference call. The delay causes are sampling time, codec delay and send buffer delay. "User Input” is used to transmit DTMF signals, namely 0 to 9, * and #. It is used for interworking with SCN. “Miscellaneous Indication” is used for a variety of indications.
3) Conference call related messages
Message name | Message type |
Conference Request | Request |
Conference Response | Response |
Conference Command | Command |
Communication Mode Request | Request |
Communication Mode Response | Response |
Communication Command | Command |
MCLocation Indication | Indication |
(Miscellaneous Conference Indication) | Indication |
Conference call related messages are used to control conference related operations, such as requesting participant terminal lists, terminal ID, and conference ID, becoming conference chairman, or exit conference. The conference exit command is used to end a conference. After the command is executed, all involved calls of the conference will be released. Communication messages are used by MC to indicate type, communication mode (unicast or multicast) and communication address of media channels. “MC location indication” is used by main MC to tell other endpoints its address, so that it can control the conference. “Miscellaneous conference indication” is used to indicate the status of receive terminal or other terminals, for example, that the receive terminal graphics is being playing, a terminal joins or exits the conference, or the terminal number is being allocated.
II. Message format
H.245 messages are of tree type, and they are coded in text format. The upper three layers of an H.245 message determines the message type, and the following layers define the specific parameters of the type. Figure 4-14 illustrates the generic format of an H.245 message.
Figure 4-14 Generic format of H.245 message
III. Message elements
This section takes several procedures to describe the common parameters in the message.
1) Capability exchange
The TerminalCapabilitySet messages describing transmit and/or receive capabilities of terminal are used to list media signal operation modes supported by the terminal and combined operation mode for processing multiple media signals at the same time.
TerminalCapabilitySet messages are of nested structure, as shown in Figure 4-15.
Figure 4-15 Data structure of TerminalCapabilitySet message
l Sequence number
It is used to label instances of TerminalCapabilitySet so that the corresponding response can be identified.
l Protocol identifier
It is used to indicate the version of Recommendation H.245.
l Multiplex capability
it is used to indicate capabilities relating to multiplexing and network adaptation.
l Capability table
A Capability Table is a numbered list of capabilities, such as G.723 audio, G.728 audio, and CIF H.263 video. Each capability corresponds to a table entity, which has its own sequence number (capability number).
A capability table is shown in Figure 4-14.
Table 4-14 Capability table format
CapabilityTableEntryNumbers | Capability |
0 | Capability 0 |
1 | Capability 1 |
…… | ……. |
The contents of each entity contains coding/decoding standards and many related parameters. For example, each H.263 capability contains the supported image formats and capability of any coding mode.
l Alternative capability set
These capability numbers are grouped into AlternativeCapabilitySet structures. Each AlternativeCapabilitySet indicates that the terminal is capable of operating in exactly one mode listed in the set. For example, an AlternativeCapabilitySet listing {G.711, G.723.1, G.728} means that the terminal can operate in any one of those audio modes, but not more than one.
An alternative capability set shows a range of capabilities that can be selected.
{CapabilityTableEntryNumber0, CapabilityTableEntryNumber 1, ……}
l Simultaneous capabilities
These AlternativeCapabilitySet structures are grouped into simultaneousCapabilities structures. For example, a simultaneousCapabilities structure containing the two AlternativeCapabilitySet structures {H.261, H.263} and {G.711, G.723.1, G.728} means that the terminal can operate either of the video codecs simultaneously with any one of the audio codecs. The simultaneousCapabilities set {{H.261}, {H.261, H.263}, {G.711, G.723.1, G.728}} means the terminal can operate two video channels and one audio channel simultaneously: one video channel per H.261, another video channel per either H.261 or H.263, and one audio channel per either G.711, G.723.1, or G.728.
Simultaneous capabilities are the capabilities that can be performed at the same time.
{Alternative capability 0, Alternative capability 1, ……}
l Capability descriptors
The terminal’s total capabilities are described by a set of CapabilityDescriptor structures, each of which is a single simultaneousCapabilities structure and a capabilityDescriptorNumber. By sending more than one CapabilityDescriptor, the terminal may signal dependencies between operating modes by describing different sets of modes which it can simultaneously use. For example, a terminal issuing two CapabilityDescriptor structures, one {{H.261, H.263}, {G.711, G.723.1, G.728} } as in the previous example, and the other {{H.262}, {G.711}}, means the terminal can also operate the H.262 video codec, but only with the low-complexity G.711 audio codec.
Capability descriptors are shown in Table 4-15.
Table 4-15 Capability descriptors
CapabilityDescriptorNumbers | SimultaneousCapabilities |
0 | Simultaneous capability 0 |
1 | Simultaneous capability 1 |
…… | ……. |
2) Master-slave determination
The H.245 Master-slave determination procedures are used to resolve conflicts between two endpoints which can both be the MC for a conference, or between two endpoints which are attempting to open a bidirectional channel. Before a channel is established, it is required to determine the master-slave relations.
Either terminal may initiate the master slave determination process by issuing the DETERMINE.request. The message contains two parameters, StatusDeterminationNumber and TerminalType.
l Status determination number
Each endpoint can only select one random number as the status determination number in each call, and the value ranges from 0 to 224-1.
l Terminal type
TerminalType is a number that identifies different types of terminal
Entity function | H.323 entity | |||
Terminal | Gateway | GK | MCU | |
Entity with No MC | 50 | 60 | / | / |
Entity contains an MC but no MP | 70 | 80 | 120 | 160 |
Entity contains MC with data MP | / | 90 | 130 | 170 |
Entity contains MC with data and audio MP | / | 100 | 140 | 180 |
Entity contains MC with data, audio and video MP | / | 110 | 150 | 190 |
After the peer end receives the masterSlaveDetermination message, it starts the determination calculation procedure. The determination principle is: the endpoint with larger terminaltype value is "Master". If the terminaltype values are the same, the endpoint with larger StatusDeterminationNumber is “Master”. If the StatusDeterminationNumbers are still the same, “undetermined” will be resulted. Generally, the status can be determined. Then, the peer terminal sends back determination acknowledge message to tell the determination result. If the status cannot be determined, the peer terminal sends back determination reject message, with rejection reason as “same number”. Then, the local terminal regenerates a StatusDeterminationNumber, and starts master-slave determination procedure again.
Besides, in a conference call, if an MC becomes the active MC, its terminaltype value becomes 240. An MC that is already acting as an MC shall always remain the active MC. Therefore, once an MC has been selected as the active MC in a conference, it shall use the Active MC value for all subsequent connections to the conference.
3) Logical channel signaling procedure
Logical channel is opened by transmitter side. It sends a OpenLogicalChannel message to the receive terminal, and the message contains ForwardLogicalChannelNumber and channel parameters.
l ForwardLogicalChannelNumber
ForwardLogicalChannelNumber must be assigned by the transmitter side, and the acknowledge message carries this value to match the request message.
l Channel parameters
The parameters define whether data type and media information are transmitted surely, whether silence suppression is performed, and destination terminal tag.
If the channel is used to transmit RTP encapsulated real-time media information, such as audio or video, the channel parameters also include the following three parameters:
Session ID
RTP session ID. An RTP session is the communication of a group of participants through RTP. For each participant, the session is defined by a pair of transmission layer addresses (network layer address plus RTP and RTCP ports numbers). In IP multicast mode, the transmission layer addresses of the participants might be the same. In unicast mode, the transmission layer addresses of the participants are different because their network addresses are different. In a multimedia session, each media signal is transmitted by an individual RTP session, and has its own RTCP group. The RTP sessions are distinguished by different port pair and/or different multicast addresses.
Media channel
Used to transmit the IP address and port number of RTP encapsulated real-time media messages, and other transmission QoS parameters.
Media control channel
Used to transmit the IP address and port number of QoS parameter messages of RTCP encapsulated real-time signal transmission.
For more information about the above parameters, see RTP related documents.
IV. Example of H.245 message
An example of OpenLogicalChannel message is shown as follows:
ITU-T Recommendation H.245
request
openLogicalChannel
forwardLogicalChannelNumber: 1
forwardLogicalChannelParameters (OpenLogicalChannel-forwardLogicalChannelParameters)
dataType (audioData)
audioData
g7231
maxAl_sduAudioFrames: 1
silenceSuppression: False
multiplexParameters (h2250LogicalChannelParameters)
h2250LogicalChannelParameters
sessionID: 1
mediaChannel (unicastAddress)
unicastAddress
iPAddress
network: 191.169.150.171 (191.169.150.171)
tsapIdentifier: 40000
mediaGuaranteedDelivery: False
mediaControlChannel (unicastAddress)
unicastAddress
iPAddress
network: 191.169.150.171 (191.169.150.171)
tsapIdentifier: 40001
mediaControlGuaranteedDelivery: False
Line 1 indicates that the message is an H.245 message.
Line 2 indicates that the message is a request message.
Line 3 indicates that the message name is openLogicalChannel.
Line 4: Forward logical channel number. Here the value is 1. This parameter must be assigned by transmit party, and the acknowledge message returns this value to match the request message.
Lines 5 and 6: Forward logical channel parameters. The parameters define whether data type and media information are transmitted surely, whether silence suppression is performed, and destination terminal tag.
Lines 7 to 11: Data type. Here, the data type is G.723 audio data, without silence suppression.
Lines 12 to 13: H.225 logical channel parameter, which is mandatory because the channel is used to transmit RTP encapsulated real-time media information, such as audio or video.
Line 14: RTP session ID. Here the value is 1.
Lines 15 to 21: Media channel parameters. That is, the IP address and port number used by the endpoint to transmit RTP encapsulated real-time media information. Here, the IP address is 191,169,150,171, and the port number is 40000.
Lines 22 to s8: Media control channel parameters. That is, the IP address and port number used by the endpoint to transmit QoS parameter message of RTCP encapsulated real-time signal transmission. Here, the IP address is 191,169,150,171, and the port number is 40001.
4.4.3 Basic Procedures
I. Capability Exchange
Figure 4-16 Capability exchange procedure
II. Master Slave Determination
Figure 4-17 Master slave determination procedure
III. Open Logical Channel
Figure 4-18 Open logical channel procedure
IV. Close Logical Channel
Figure 4-19 Close logical channel
V. End Session
Figure 4-20 End session
2 comments:
The above statement "If the terminalType values are the same, the endpoint with larger StatusDeterminationNumber is “Master”." is incorrect.
According to the the H.245 Spec (05/2006) Figure C4, the calculation is as follows:
MAX_SDN = (2^24)-1
SDN_DIFF = (remoteSDN - localSDN)
if ((SDN_DIFF MOD MAX_SND ) < 2^23 )
{
MASTER
} else {
SLAVE
}
Hi.. I am facing a problem to establish video call using symphony mobile handset. The problem is - after total negotiation the handset doesnt send video. But audio is sent. Can you please help me or give any idea?
Post a Comment