using H245 tunneling flag in H323V3

ssrivastava at ssrivastava at
Tue Sep 16 07:27:53 EDT 2003

To address there V0/V2 interop problem, I agree that something like the
syntax2002 would be useful.  In fact, to answer your question about
other H.245 fields that are unknown to the other side... that's
precisely how things get quite naturally "dropped out" in the replies
back.  It's an indicator to the originator.
Looking past v2 to the subsequent revisions, what else might change?
Perhaps the syntax will remain unchanged or at least compatible, but
perhaps something else in the procedures might changes.  This is what
I'm wondering if we should insert rules into H.323 (and Annex D would be
the candidate for fax) that says that you shall not accept a proposal in
Fast Connect for a version you do not support?
The proper solution to this general problem, in my opinion, is to
advertise termcaps in the Setup (perhaps the parallelH245Control field),
along with Fast Connect, and then use either H.460.6 to re-negotiate
offered channels or use H.245 logical channel signaling.   There's
certainly nothing wrong with not using Fast Connect at all, but it seems
to be quite popular and probably something I would not want to disallow.

----- Original Message ----- 
From: Peter  <mailto:PeterP at> Price 
To: 'Paul E. Jones' <mailto:paulej at>  ;
itu-sg16 at <mailto:itu-sg16 at>  ;
tsg16q14 at <mailto:tsg16q14 at>  
Sent: Tuesday, September 16, 2003 5:00 AM
Subject: RE: H.323 Fast Connect and Versioning

I appreciate that Version 3, 4 etc don't exist yet but the issue we are
talking about here is a specific problem caused by an editorial error
when T.38 was first published that has resulted in an incompatible
payload.  The problem is that if  a V0/V1 endpoint accepts a V2 offer it
will not send a payload that is decodable by the V2 endpoint (and the V2
endpoint will send undecodable packets to the other endpoint). T.38 is
At this stage we have to assume that such an incompatibility would be
avoided in future versions.  If a future change to the standard resulted
in a new incompatibility with V2 then again it is effectively a new
codec and that future version would have to be protected in some way
from V2 or older versions.  Since (nearly) all the fields are now
extensible unless someone decides we need a third error recovery
mechanism it's hard to see how T.38 can be broken again.
It may well be that the Fast Connect rules should be reviewed but I do
not think this is the scenario that should drive the thinking.  You say
that the video options can't be changed but what happens when your
endpoint doesn't understand them (ie can't decode them).  What will the
calling endpoint do when it receives a response that has probably been
I suspect that this changing of extended options will be the real issue
in the future as this will (should) be where differences between
versions will exist and any modifications to the Fast Connect rules can
usefully address this type of predictable issue.   I still haven't seen
any response from video endpoint implementors who must have encountered
this scenario and must have views on how it should be handled.  Maybe
they are not looking at this list and the question needs to be asked on
the implementors list.

The T.38 problem does not fall into this category, it is a result of an
error in the standard and there is no way of of trying to anticipate
future problems caused by errors (and no point or gain).  The errors
won't be the same (I hope) and will almost certainly require unique

I am not convinced about your suggestion for changing Annex D.  This is
an interoperability issue between new implementations and old ones.
Changing the standard in this way isn't going to stop existing endpoints
accepting the channels [ unless you have some very interesting
paranormal capabilities in your gateway - in which case why do you need
H.323 at all!  Or have you have achieved the ultimate goal - a computer
that does what you want it to do, not what you tell it to do ;-) ]
I still believe that the syntax2002 suggestion by itself is the best
solution for this problem.  
1. It allows the calling endpoint to identify which version of the ASN.1
it should use for both receive and transmit. 
2. It does not require any knowledge of the problem in existing V0/V1
endpoints (a very important factor)
3. It is an isolated change that resolves the current problem and does
not have any consequences for any other application area.  
4. Trying to engineer a solution that can anticipate the unforeseeable
future will continue to make your head hurt ;-)
Incidentally,  since syntax2002 would be an extended option in
T38FaxProfile it would be covered by Fast Connect changes that allowed
such options to be dropped.
BTW I agree that not using Fast Connect at all is the best solution.
H.245 tunneling or even an H.245 address in the Setup message typically
allows the media to be established before any useful data can be
transmitted - even a purely electronic IVR system is going to delay
before transmitting a message to us poor slow humans. In fact, media can
be established more quickly because it does not require any call
progress messages - not many endpoints accept Fast Connect in Facility

-----Original Message-----
From: Paul E. Jones [mailto:paulej at]
Sent: 12 September 2003 21:53
To: Peter Price; itu-sg16 at; tsg16q14 at
Subject: Re: H.323 Fast Connect and Versioning

The danger with adding the codepoint for "syntax2002" is that it does
not necessarily encompass all of the rules for version 2, 3, etc.  Since
those future versions do not exist, it presents us with certain
Perhaps the right solution is two-fold:

1.	Add a new "syntax2002" field 

2.	Allow the called endpoint to modify the version number field in
the Fast Connect proposal.  It could *not* change it if the calling
device is version 0 or not using the new "syntax2002" field, but we
could add a rule that says that if the calling device included
"syntax2002", it also means that the called device may change the
version number in the reply to indicate the actual supported version.

If we do (2), then we need to change the language in H.323 to say that
parameters shall not be changed, unless explicitly allowed by the
particular "controlling media profile document".  For T.38, that would
be Annex D/H.323.  For V.150.1, that would be Annex P/H.323.
The video codec issue is an interesting one... several options can be
proposed with various capabilities, but they can't be changed.
There is an implementation approach that could be used to solve these
kinds of issues, but some folks don't like it.  That is: don't use Fast
Connect at all-- just do termcap exchange and only open media channels
and ring the remote phone once caps are exchanged and media is opened.
Regardless of whether H.245 is tunneled or on a separate connection, the
exchange of all required messages can be done in about 3 TCP packets per
As for the requirement that H.245 tunneling be used with Fast Connect---
yes, the requirement is there, but folks ignore that like they do other
requirements in the standard ;-)  The wording might be "must support
tunneling", which does not mean it has to be used.
Fast Connect certainly has certain advantages over H.245, but if we had
never introduced Fast Connect in the first place, I suspect nobody would
think something is missing.  Most likely, folks would have engineered
their products to send TCS right away, would not have alerted the user
until media was established, etc.  They would have optimized their code
to send TCS,MSDet,OLC in the first outgoing message, replied with
TCS,TCSAck,MSDet,OLCAck,OLC in the reply TCP packet, and then
TCSAck,OLCAck in the sender's second TCP packet.  In the rare case where
the proposed OLC is not acceptable, it would require an extra exchange
of messages, but certainly no worse than Fast Connect today.
I'm actually working on a new extension to H.323 to allowing the calling
endpoint to explicitly request that the call establishment be delayed
until a certain point (e.g., bi-directional media channels are opened).
The calling side can control when it lets the call proceed.  Likewise,
the called side can control it by not acknowledging that the requested
"delay point" has been reached.  This might be the better way to handle
T.38.... except that, as you point out, there are Fast Connect-only T.38
My head hurts...
I really hate to break the rules about changing the attributes of a Fast
Connect proposal.
Here's another thought:  What if we add text to Annex D/H.323 that says
that if the proposed version is not supported, then it shall not accept
the proposal.  If it wants to offer a "counter proposal", it has two
means: H.245 signaling or H.460.6 (Extended Fast Connect).

----- Original Message ----- 
From: Peter  <mailto:PeterP at> Price 
To: 'Paul E. Jones' <mailto:paulej at>  ;
itu-sg16 at <mailto:itu-sg16 at>  ;
tsg16q14 at <mailto:tsg16q14 at>  
Sent: Thursday, September 11, 2003 3:53 AM
Subject: RE: H.323 Fast Connect and Versioning

as I said before any solution is likely to be a bit dirty because of the
nature of the problem.  I think your "syntax2002" suggestion is
perfectly valid - it is a smaller more localised change and, especially
given the reluctance to add new code points, is probably a better
alternative than t39faxV2.  It only requires a single change to
T38FaxProfile rather than changes to both DataApplicationCapability and
DataApplicationMode.  There is no danger that the change could affect
anything other than T.38 aware endpoints.
On the subject of H245 tunneling, the problem scenario we're discussing
is Fast Connect and I thought that H.323 V4 says that endpoints using
Fast Connect shall use H.245 tunneling!  It doesn't do much for pure
T.38 endpoints which don't do any H.245 though.

The thread has suggested two approaches 
1. resolve the issue  within the Fast Connect proposal (or any
subsequent requestMode/OLC etc)
2. resolve the issue by modifying some other part of the standard by
introducing "special cases"
As an implementor, I would prefer to see a solution within the Fast
Connect proposal rather than force other changes in the standard - the
danger of going that route is you don't know what the downstream
consequences are going to be.  Containing the solution in T38FaxProfile
keeps implementation simpler - you receive a message and you know
exactly what you are doing without having to go looking for other
information.  Logically, the tunneled H245 messages arrive after the
Setup message and its easier to process the Setup completely before
starting to look at the H.245.
Furthermore, if H.323 endpoints are to remain interoperable with pure
T.38 endpoints (are there any?) then the solution *must* be contained
within the Fast Connect proposal.
You suggest that "syntax002" is a bit of a kludge.  It probably is but
it does have the advantage of being isolated.  I think that "special
cases" in the standard that may have unforeseen consequences for
endpoints that are not interested in T.38 are very much worse.
A slight aside here (but related).
Your remark about the way that all endpoints appear to decode and
re-encode the Fast Connect proposals implies that the rule for not
changing the proposals is effectively impossible to maintain.
I only work with audio endpoints that use the basic audio codecs and
T.38 so until this discussion started hadn't really thought about this
issue.  It's easy to say you musn't change, say, the frame count of G729
but for codecs that are defined as extensible like T.38 (and all the
video codecs) there will always be a problem when new endpoints offer
new features to old endpoints.
Perhaps the Fast Connect rule needs some review to address the specific
issue of extensible capabilities.
Have video endpoints already encountered this problem? 
Do any video endpoint implementors have any relevent comments here?

-----Original Message-----
From: Paul E. Jones [mailto:paulej at]
Sent: 10 September 2003 23:35
To: Peter Price; itu-sg16 at; tsg16q14 at
Subject: Re: H.323 Fast Connect and Versioning

I've only seen this problem with fax.  To answer your last question,
I've only seen T.38 use this kind of version tag.  However, V.150.1 also
has versioning information as part of the object identifier that
identifies the capability.  This will be interesting to see if we
introduce the same kind of problem there.  In general, it's just not
good to advertise the version through an OLC... it's better to perform a
full caps exchange.  The trouble is that modem and (to some extent) fax
timings are such that we must open channels ASAP... before a caps
exchange.  (Actually, we could transmit the termcap set in the Setup
message, but few devices support that.)
We have had non-compatible payload specifications before and we resolved
that by adding new code points.  However, we've been trying to avoid
that.  Even so, we could do it again... it's just less desirable.
I had another idea.  What we could do is, within the t38faxProtocol
SEQUENCE, we could indicate which syntax is to be used.  Older devices
would not see this field and would not decode it.  So, when the reply is
re-encoded, it would not be present.  So, even if the version was set to
"2", the "Syntax2002" field, say, would not be present.  This would mean
that the 1998 syntax has to be used.  A newer endpoint would see the
field and would properly re-encode it in the reply.  This is a bit of a
kludge and works only because of the way the ASN.1 encoding/decoding
works with every device I've seen.
Another solution to the problem might be to require that endpoint use
H.245 tunneling and to advertise their capabilities in the Setup
message.  That could allow us to avoid this problem entirely.  I'm just
not sure how excited people would be to be forced to use H.245 tunneling
every time they use fax, modem, or text relay.

----- Original Message ----- 
From: Peter Price <mailto:PeterP at>  
To: 'Paul  <mailto:paulej at> E. Jones' ;
itu-sg16 at <mailto:itu-sg16 at>  ;
tsg16q14 at <mailto:tsg16q14 at>  
Sent: Wednesday, September 10, 2003 12:34 PM
Subject: RE: H.323 Fast Connect and Versioning

I wrote the first part of this email and then reread yours - I was
bogged down in the fax issue but I think you are actually raising a
wider issue aren't you?  See part 2 below.
-------------------------- Part 1 
I don't believe that 5 versions of T38 would result in 5 offered

The need for the different capability is due to the fact that what you
are offering is a payload that is encoded in a different and
incompatible way.  ie its a bit like offering G.729 and the sending
packets encoded according to G.723.1,  they both represent speech but
they are not going to be played out properly.  The single extra bit
introduced into the T.38 payload packet by the 2002 ASN.1 is backwards
The problem only exists for endpoints that only know about the 1998
ASN.1 and are unaware of the incompatibility - it is important that they
do not think they can accept the offered channel.
Once an endpoint is aware of the problem (ie it knows about the 2002
ASN.1) then it can handle versions >= V2 (as well as V0 and V1).  Of
course, this does assume that a similar incompatibilty does not creep
into the payload ASN.1 in future versions - but that's down to careful
work in the standard development and editing stage.
I still think adding t38faxV2 (say) to DataApplicationCapability and
DataApplicationMode is the simplest solution 
[ t38faxV2 would use the same definitions for t38FaxProtocol and
t38FaxProfile - its only the payload that has changed ].  This protects
the existing T.38 implementations and avoids the need to break the rule
about modifying Fast Connect proposals.
The change in the T.38 payload ASN.1 breaks the fundamental backwards
compatibility that ASN.1 is supposed to guarantee and thus whatever the
final solution there has to be an element of a hack involved - I think
that this change would isolate the change and protect the rest of the

-------------------------- Part 2
The versioning issue applies to any form of payload,
The problem is still going to exist in early versions of endpoints that
don't understand the consequence of accepting versions that they do not
understand fully.  If a new version of a codec's payload is not
backwards compatible then I would assert that it is a new codec and must
be signalled as a different capability.
The issue of multiple variations already exists anyway although not (to
my knowledge) with version numbers.
Endpoints already offer multiple packet sizes for exactly the reason
that you are not supposed to alter the Fast Connect proposal.  What
happens when somebody starts to offer g729Extensions and has to offer
all the combinations of Annexes because they don't know what the other
end can use ( I make that 64 proposals in each direction without adding
further annexes! )?

I don't see that relaxing the rule about modifying the version in a Fast
Connect channel will help resolve the problem of having to offer
multiple proposals.  You either have to allow *anything* to be modified
or stick to the current rule. Exceptions allowing certain fields to be
modified just makes life much more difficult and confusing.

T.38 is the only codec I am aware of that actually uses a version number
in this manner.  Are there any others? Why was it introduced in T.38?
Perhaps this is a lesson for the future about the value of introducing
of such a field in other codecs.

-----Original Message-----
From: Paul E. Jones [mailto:paulej at]
Sent: 10 September 2003 16:01
To: Peter Price; itu-sg16 at; tsg16q14 at
Subject: Re: H.323 Fast Connect and Versioning

I think you're on the right track.  We could avoid ASN.1 changes by
introducing the new capability as a generic data capability, but a new
capability is required here, I think.
The problem, as I see it, is that when we use Fast Connect, we can't
alert the calling side as to what version the called side actually
supports.  This suggests that if we have 5 versions of T.38, the calling
side would have to propose a channel for each version independently.
That's horrible.  It's only complicated further by the fact that T.38
may not be signaled by itself-- it might be part of audio proposals that
also include modem, text over IP, VBD, or other media.  It might even be
that there are several versions of the modem (V.150.1) protocol
I think the only real solution to this problem is to allow the Fast
Connect proposals to be altered by the called endpoint such that they
can change the version number.. and nothing else.  H.323 has an explicit
statement that says that the proposals can't be modified before
returning them, but perhaps this simple exception might resolve these
issues.  I think without such, it's going to be terrible complicated.

----- Original Message ----- 
From: Peter Price <mailto:PeterP at>  
To: 'paulej at PACKETIZER.COM' <mailto:'paulej at PACKETIZER.COM'>  ;
itu-sg16 at <mailto:itu-sg16 at>  
Sent: Wednesday, September 10, 2003 3:23 AM
Subject: RE: H.323 Fast Connect and Versioning

Paul wrote
"Perhaps we can require the calling device to not transmit any data
until it receives at least one IFP packet from the called side and
determines the ASN.1 version used to encode the message."
Unfortunately this won't work - although typically the called endpoint
will provide the first IFP (Probably a CED) this doesn't work when you
poll for a fax - in that case the calling endpoint will probably want to
send the first IFP.
The only way I can see out of this is to add a new data application
(say, t38faxV2) to DataApplicationCapability etc in the H.245 ASN.1.
t38fax would use the 1998 ASN.1 and t38faxV2 would use the 2002 ASN.1 -
and future carefully checked modifications ;-).  Now there's no problem,
a 2002 aware endpoint can offer both versions and a 1998 aware endpoint
can only accept the ASN.1 it understands.
Pete Price
Vegastream Limited

-----Original Message-----
From: paulej at PACKETIZER.COM [mailto:paulej at PACKETIZER.COM]
Sent: 09 September 2003 20:32
To: itu-sg16 at
Subject: H.323 Fast Connect and Versioning

Today, I was exchanging e-mail with somebody over the fax version number
issue and the different syntax that is used (1998 vs 2002).
If we open H.245 and exchange a full set of capabilities, and H.323
endpoint could determine the version supported by the other side and
open a channel supporting that particular version.  However, I don't
think any text is explicitly clear on that.
Another scenario-- and one I have more trouble with-- is Fast Connect.
If a calling endpoint populates the fastStart element with "version 2"
proposals, for example, the called side (say, a version 0 device) might
accept the proposal and return the response.  However, it is not allowed
to modify the version field.  The reason is that Fast Connect proposals
are not ordered in a way such that replies must be ordered the same way.
Rather, the calling device determines which proposals are accepted based
on characteristics of the proposals returned (e.g., codec type, samples
per packet, or other information).  In some cases, a calling endpoint
will actually not try to "match" the proposal returned, but just accept
it as a proposal and run with it.
The problem is that if a calling device proposes version 2 and the
called device returns version 2 (but is actually a v0 device), then the
wrong syntax will be transmitted on the wire.  Thus, the text needs to
state somewhere one of these options (or something similar):

1.	The calling device must offer a proposal for each version it
wants to potentially use and the called device must accept the first
proposal it can accept (in order of the proposals) and the called device
must not accept any proposal for a version it does not support 

2.	The calling device must wait for capability exchange to complete
to determine the actual supported version of the other device

Alternatively, we could make an allowance for the endpoint to change the
version number in the Fast Connect proposal, but I don't think that's a
good idea, as it would quite possibly break interoperability with some
What would a version 0 device do today if it received a Fast Connect
proposal advertising version 2?  Would it accept it?  I suspect so and
I'm afraid that we might have some interop problems regardless of the
direction we go.
Perhaps we can require the calling device to not transmit any data until
it receives at least one IFP packet from the called side and determines
the ASN.1 version used to encode the message.  As much as we can push
onto the shoulders of a v2 device, the better, as I don't think we have
any real deployments in the field (yet)... might be wrong, but I think
it would be a far less significant impact on that side.
I'm open to suggestions.  Perhaps this issue is even addressed and I've
simply overlooked it.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the sg16-avd mailing list