Packetizer Logo
 

Encoding Fast Connect OLCs (Q111)

The information in this article applies to:

The text in H.323 that describes how to encode the OpenLogicalChannel structure for Fast Connect is kind of confusing. The tables, below, show how the fastStart component in a typical Setup and response, e.g., Connect, is encoded. In this example, the calling EP proposes several alternatives for primary audio in the outgoing direction on channels 5 through 17, including, for example, G.723.1 with silence suppression at a maximum of 3 frames per packet, and analogous alternatives in the incoming direction (see Table 2a). Note that H.323 requires these outgoing channels to use different logical channel numbers (8.1.7.1/H.323v4: "Each such OpenLogicalChannel structure shall have a unique forwardLogicalChannelNumber value."). For the proposed incoming direction, it does not matter what value is encoded for the logical-channel number, so 65535 is used here. In this example, the called EP accepts both channels by filling in the indicated media-channel fields, encoding a logical-channel number for the calling EP's incoming channel, and returning the selected OpenLogicalChannel structures in Connect (see Table 2b).

This list defines the meaning of transport addresses, A, B, C, and D, used in the tables, below.

This is what it looks like graphically:

Outgoing Media
Calling EP   Called EP
 
------RTP----->
A
B
<-----RTCP-----
 
Incoming Media
Calling EP   Called EP
C
<-----RTP-----
 
 
------RTCP----->
D
Table 2a — Proposed channels sent by calling EP in Setup
  forwardLogicalChannelParameters reverseLogicalChannelParameters
fwdLogChanNum dataType sesID mediaChan mediaControlChan dataType sesID mediaChan mediaControlChan
5 G.723.1 3 SS 1 (absent) B (absent)
6 G.723.1 3 1 (absent) B (absent)
7 G.723.1 1 1 (absent) B (absent)
8 G.711A 200 1 (absent) B (absent)
9 G.711A 10 1 (absent) B (absent)
10 G.711A 20 1 (absent) B (absent)
11 G.711A 30 1 (absent) B (absent)
12 G.711A 60 1 (absent) B (absent)
13 G.711U 200 1 (absent) B (absent)
14 G.711U 10 1 (absent) B (absent)
15 G.711U 20 1 (absent) B (absent)
16 G.711U 30 1 (absent) B (absent)
17 G.711U 60 1 (absent) B (absent)
65535 nullData G.723.1 4 SS 1 C B
65535 nullData G.711A 200 1 C B
65535 nullData G.711U 200 1 C B
Table 2b — Accepted channels returned by called EP in Connect
  forwardLogicalChannelParameters reverseLogicalChannelParameters
fwdLogChanNum dataType sesID mediaChan mediaControlChan dataType sesID mediaChan mediaControlChan
6 G.723.1 3 1 A D (absent)
64 nullData G.723.1 4 SS 1 (absent) D

The Recommendation does not define what the called EP puts in the mediaChannel element of the reverseLogicalChannelParameters. Considering the following passage, the called EP is technically required to leave it alone and pass back whatever the calling EP put there. Per section 8.1.7.1/H.323v4: "The called endpoint is only allowed to alter fields in a proposed OpenLogicalChannel structure as specified in this section." However, this is obviously an oversight and to be symmetric with how Fast Connect works for the other direction the mediaChannel could be removed. In practice, it probably doesn't matter what the called EP puts in that field because there is no reason for the calling EP to look there.

By contrast, here are the OLC and OLCAcks that might be exchanged for the same resulting media without Fast Connect.

Table 3a — OLC sent by calling EP
  forwardLogicalChannelParameters reverseLogicalChannelParameters
fwdLogChanNum dataType sesID mediaChan mediaControlChan
6 G.723.1 3 1 (absent) B (absent)
Table 3b — OLCAck sent by called EP
  reverseLogicalChannelParameters forwardMultiplexAckParameters
fwdLogChanNum sesID mediaChan mediaControlChan
6 (absent) 1 A D
Table 3c -- OLC sent by called EP
  forwardLogicalChannelParameters reverseLogicalChannelParameters
fwdLogChanNum dataType sesID mediaChan mediaControlChan
64 G.723.1 3 1 (absent) D (absent)
Table 3d -- OLCAck sent by calling EP
  reverseLogicalChannelParameters forwardMultiplexAckParameters
fwdLogChanNum sesID mediaChan mediaControlChan
64 (absent) 1 C B