Re: [bfcpbis] I-D Action: draft-ietf-bfcpbis-rfc4582bis-10.txt

"Charles Eckel (eckelcu)" <> Fri, 14 February 2014 22:28 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 789BD1A0252 for <>; Fri, 14 Feb 2014 14:28:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -15.048
X-Spam-Status: No, score=-15.048 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.548, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id kcGKEafSihdp for <>; Fri, 14 Feb 2014 14:28:37 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 74AD51A02C6 for <>; Fri, 14 Feb 2014 14:28:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=24345; q=dns/txt; s=iport; t=1392416905; x=1393626505; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=nvf57ULevgBGKHnmo/Sj2SXwDLWGcAGqO4xOWOhwNSI=; b=jw34dzU3Ejh5rLIwhBIbCXoDw1Pp/RWXheaSvYp9YP/gP2ETJtNJEexy QESyECQFeTDgSoQrPtuJNr0uDKc5yQ0oGJkO0m+DTz8g3dbYb2zcuBQ02 hlJi55YZpcGeRVOEpdvtgKBsd+UoxK9YlOYVmizWYmcej22Ey7dO7t/o6 k=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos; i="4.95,847,1384300800"; d="scan'208,217"; a="304209436"
Received: from ([]) by with ESMTP; 14 Feb 2014 22:28:24 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id s1EMSO1D009570 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Fri, 14 Feb 2014 22:28:24 GMT
Received: from ([]) by ([]) with mapi id 14.03.0123.003; Fri, 14 Feb 2014 16:28:23 -0600
From: "Charles Eckel (eckelcu)" <>
To: Tom Kristensen <>
Thread-Topic: [bfcpbis] I-D Action: draft-ietf-bfcpbis-rfc4582bis-10.txt
Thread-Index: AQHO2UtQ49CFBHKOV0uSdd6Uxkz0ApoVSW6AgCEbPYCATn30AIAxaYoA//+H3AA=
Date: Fri, 14 Feb 2014 22:28:23 +0000
Message-ID: <>
References: <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
user-agent: Microsoft-MacOutlook/
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_CF23D77E1F021eckelcuciscocom_"
MIME-Version: 1.0
Cc: "" <>, Gonzalo Camarillo <>, "Tom Kristensen \(tomkrist\)" <>
Subject: Re: [bfcpbis] I-D Action: draft-ietf-bfcpbis-rfc4582bis-10.txt
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: BFCPBIS working group discussion list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 14 Feb 2014 22:28:42 -0000

Editorial nits inline in case you have not submitted yet.

From: Tom Kristensen <<>>
Date: Friday, February 14, 2014 1:38 PM
To: Charles Eckel <<>>
Cc: Gonzalo Camarillo <<>>, Tom Kristensen <<>>, "<>" <<>>
Subject: Re: [bfcpbis] I-D Action: draft-ietf-bfcpbis-rfc4582bis-10.txt

On 14 January 2014 20:03, Charles Eckel (eckelcu) <<>> wrote:
Hi Gonzalo,

I was looking through the archives and did not see any response to you
comments. Sorry for the delay. Please see inline.

On 11/25/13 4:24 AM, "Gonzalo Camarillo" <<>>

>Hi Tom,
>thanks for keeping the draft alive. I have had q quick look at Section 6
>and I have a few comments.
>The first paragraph of Section 6 states that an entity can choose TCP or
>UDP depending on the environment. Lately, the IESG is asking authors to
>be a bit more explicit about operational issues. So, I think we should
>add a few sentences explaining (briefly) who makes that decision. Is it
>the implementation that first tries TCP and, if it does not work, it
>falls back to UDP? Or do we expect administrators to configure this
>depending on the environment? We can describe several potential
>different deployment scenarios as well.

In practice I have typically seen this configured as either use TCP first
and fallback to UDP or vice versa. Depending on the product and
environment, the choose of defaulting to TCP vs. UDP is made. The text in
Appendix B describes the challenges with using TCP in some environments.
In such environments, UDP would be typically be configured as the default.

I have added an informational note in Section 6, it reads as follows:

     "Informational note: In practice products is configured to try one

In practice, products are …

      transport initially and use the other one as a fallback.  Whether
      TCP or UDP is chosen as underlying transport depends on type of
      product and the nature of the environment it is deployed, here the

deployed. Here …

      considerations in Appendix B is an important input."'

… Appendix B are important to consider.

>The second paragraph of Section 6.2 explains that the floor control
>server is considered present and available upon receiving a HelloAck
>message. We should also explain the circumstances in which the service
>is considered to have become unavailable (e.g., ICMP messages or

The ICMP behaviour is defined in 6.2.2. Also, the behaviour when timers fire are described in Section 8.

are described -> is described


>The following is the last sentence of the 3rd paragraph of Section 6.2:
>>    Concordantly, messages sent by the floor
>>    control server that are not transaction-completing (e.g., FloorStatus
>>    announcements as part of a FloorQuery subscription) are server-
>>    initiated transactions that require acknowledgement messages from the
>>    floor participant and chair entities to which they were sent.
>I do not think the term "transaction-completing" have been defined in
>the document. We should use a different term or, even better, explain
>explicitly what we mean. Also, I do not understand the point the
>sentence is intended to make. We should rephrase.

How about:
Concordantly, messages sent by the floor control server that initiate new
transactions (e.g., FloorStatus announcements as part of a FloorQuery
subscription) require acknowledgement messages from the floor participant
and chair entities to which they were sent

A better explanation and we avoid introducing a term (transaction-completing), that is not defined or even needed.

>The 4th paragraph of Section 6.2 talks about the "Unable to parse"
>message in the context of unreliable transports. Why don't we use that
>with TCP as well? Is it because of backward compatibility issues? If so,
>we should add a clarifying note.

RFC 4582 stated the following, "If a BFCP entity (a client or a floor
control server) receives data from TCP that cannot be parsed, the entity
MUST close the TCP connection, and the connection SHOULD be reestablished."
As there is no concept of a connection with UDP, we decided to handle by
defining the new error code.

Right. And there's no need for an explanation of that rationale in the draft I assume.

>The following sentence appears in the first paragraph of page 41:
>>    The subsequent changes in state for
>>    the request are new transactions whose Transaction ID is determined
>>    by the floor control server and whose receipt by the client
>>    participant shall be acknowledged with a FloorRequestStatusAck
>>    message.
>Instead of "shall be", we should write "MUST be" if this behavior has
>not been normatively defined anywhere else, or "is" if the behavior has
>been normatively defined somewhere else.

The normative language for this situation is in section 10.1.3, "When
communicating over an unreliable transport and upon receiving a
   FloorRequestStatus message from a floor control server, the
   participant MUST respond with a FloorRequestStatusAck message within
   the transaction failure window to complete the transaction."
I think replacing "shall be" with "is" is fine.

Yes, fixed to avoid "confusion" as normative statements are provided for this elsewhere.

>The following paragraph appears later in Section 6.2:
>>    If a client wishes to end its BFCP connection with a floor control
>>    server, it is RECOMMENDED that the client send a Goodbye message to
>>    dissociate itself from any allocated resources.  If a floor control
>>    server wishes to end its BFCP connection with a client (e.g., the
>>    Focus of the conference informs the floor control server that the
>>    client has been kicked out from the conference), it is RECOMMENDED
>>    that the floor control server send a Goodbye message towards the
>>    client.
>Why is it RECOMMENDED (i.e., SHOULD level) instead of REQUIRED (i.e.,
>MUST level)? This comment is also somewhat related to my first comment
>above about BFCP entities considering other entities gone. Have we
>defined at which point can they forget their state information? This
>also relates to the last paragraph of Section 6.2.2 that talks about
>using STUN connectivity checks for this. We should probably talk about
>all this somewhere.

I cannot think of good reason for not sending a Goodbye. It may be that
the Goodbye fails, and I think there may be existing implementations that
do not send the Goodbye, but from a protocol perspective MUST/REQUIRED
strength seems appropriate.

I agree. I'm not quite sure, but it might be that the SHOULD level stems from earlier versions where Goodbye also was an option specified for TCP in a common section. Will change to REQUIRED in that paragraph.

>The following paragraph appears in Section 6.2.3:
>>    When a BFCP implementation receives a BFCP message fragment, it MUST
>>    buffer the fragment until it has received the entire BFCP message.
>>    The state machine should handle the BFCP message only after all the
>>    fragments for the message have been received.
>However, the paragraph after that seems to contradict the "MUST" above
>because it allows receivers to discard incomplete buffers.

I think it needs to read as follows, "When a BFCP implementation receives
a BFCP message fragment, it MUST buffer the fragment until either it has
received the entire BFCP message, or until the Response Retransmission
Timer expires."
There is also a "must" that should be changed to "MUST" in the paragraph
describing the retransmission timer.

Yes, fixed accordingly.

-- Tom

# Cisco                         |
##<>  |
###                               |