Folks,
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):
- 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
- 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
devices.
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.
Thanks,
Paul