Subject: [bfcpbis] Version Negotiation

From: "Alan Ford (alanford)" <[email-masked]>
Date: Wed, 27 Feb 2013 12:09:29 +0000

Hi all,

Some recent interop testing and discussions has raised concerns over how
we determine the BFCP version to use, for both now and for future versions.

At the moment, we don't say much about this in the drafts. We define an
"Unsupported Version" error, but that's about it. The implication
therefore is that a UA would try sending BFCP version=2, and if no
response is received, it would try again with version=1 if it supported
it. This is unreliable and slow.

It would seem much better to declare supported versions in an SDP
attribute. I propose something in 4583bis that specifies an attribute like
this:

  bfcp-version-attribute = "a=bfcpver:" bfcp-version *(SP bfcp-version)
  bfcp-version           = token

Which can then be responded to in the answer, much like RTP payload types.
(At the moment that's not restricted to numeric values only, so we don't
restrict future things here.) Essentially by declaring support for a
version in the SDP, a sender is saying they are willing to speak this
version if it is received.

I also think we also need to tighten the text in the drafts slightly. In
S13.7 of 4582bis, we should say that a HelloAck MUST echo the version
presented in a Hello message (otherwise Unsupported Version MUST be sent).

Thoughts?

Regards,
Alan