[XCON] Review of draft-ietf-xcon-ccmp-03
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XCON] Review of draft-ietf-xcon-ccmp-03



Hi all,

In my effort to get up to speed on XCON, I'm in the process of reviewing the active working group drafts (in addition to the other relevant background). My review of draft-ietf-xcon-ccmp-03 is below.

--Richard


-----
Draft:  draft-ietf-xcon-common-data-model-13
Reviewer: Richard Barnes
Review Date: 18 Aug 09

General comments:
1. The protocol seems pretty well thought out. Most of the below comments are focused on clarity, but there are also a couple of technical issues to be addressed.

2. It seems like this document and the data model should both use the same specification language, either XSD or RelaxNG, to facilitate parsing/validation.

3. The document uses a mixture of single (') and double (") quotes around things like element names. Might be nice to standardize on one or the other.


Specific comments:
Abstract
The abstract says that CCMP is stateless, but that seems a little weird given that the whole point of the protocol is to modify the state of the conference server. I understand the intent (the protocol itself is stateless), but you might think about rewording.

Section 4/5
These two sections could probably stand to be merged. I think it would be helpful to have the content of Section 5 (especially Figure 1) before most of Section 4, except maybe the first paragraph.

Section 5
Make sure that the label for Figure 1 stays with the figure.

Section 6
This section seems to be a little confused about what its purpose is. The stated purpose is to give an overview of the conference and user objects, but it has several tangential comments about how these objects are handled in certain cases. Think about tightening the scope (see below).

Section 6.1, Paragraph 1
It might be helpful to provide a reference to Section 7.1 (Cloning Tree) of RFC 5239 here.

Section 6.1, Paragraph 2, "A client MAY specify a parent element..."
The phrase "parent element" is a little confusing here, since we're talking about XML objects, and the "parent" relationship is not in terms of XML elements, but rather objects in the cloning tree. Suggest changing this sentence to "A client MAY specify a parent object (a conference or blueprint) from which to inherit values."

Section 6.1, Paragraph 2, "When creating conferences..."
This sentence seems like it belongs in Section 7.2.3.4 instead of here.

Section 6.2, Paragraph 1, "Users are inherited as well..."
For clarity, suggest adding "When a conference is cloned from a parent object..."

Section 6.2, Paragraph 3
This paragraph seems like it belongs elsewhere, e.g., in Section 7.2.3.4 or 7.2.3.6.

Section 7.2
It took me a little while to figure out why all the messages in the example are doubled up: "<ccmpRequest><ccmpRequest>..." It would be helpful here to explain the general design methodology being followed that leads to that. As I understand it, the idea is that you can carry multiple request and response messages within a single request or response. This idea would be helpful to note, as well as some idea of how request and response messages are correlated. Also, since you define elements for the detailed messages types, it would be clearer to use those types in the examples (in Section 8), rather than casting with xsi:type.

Section 7.2.1, confUserId, "This attribute is required ..."
Should there be RFC 2119 requirement here? "This attribute is REQUIRED..."

Section 7.2.1, password
I'm confused about how this parameter interacts with the <conference-password> element in the data model: In the data model, conference passwords are only scoped within a given <conf-uri>, whereas a password for a CCMP request would presumably need to be scoped at the level of the conference. Or is the CCMP password an independent value not reflected in the conference object?

Section 7.2.1, Figure 2
It was helpful to have this structure here. It would be even better if a brief example could be provided as well. Likewise for other sections below.

Section 7.2.2.1
It's a little confusing to have the error messages introduced at this point in the document, since the actions themselves haven't been defined. Perhaps Table 2 (probably with the introductory text to Section 7.2.3) could be moved up to Section 7.2.1 to give a clearer idea of what the operations do.

Section 7.2.3, Paragraph 3 (counting the bulleted list as 1 para)
You need a different symbol than "N/A*" here, since * is also used with a different meaning in the table.

Section 7.2.3.3, Paragraph 3
The first sentence seems odd -- it's not clear in general that it another blueprint would be useful to the conference client, so why would it be RECOMMENDED to try another? Suggest changing to the following: "If a response code fo "objectNotFound" is received in a 'blueprintResponse' message, a conference control client may attempt to retrieve another conference blueprint if more than one had been received in the "blueprintsResponse" message."

Section 7.2.3.4, Paragraph 6 (counting 2 bullets as 1 para)
The following phrase is confusing:
"
The 'confInfo' represents an object of type "conference-type" containing all the changes to be applied...
"
"Conference-type" object, i.e., conference objects, represent conference state, not changes. I see in the example (Section 8) that the intent is to allow clients to send only a fragment of the conference object, rather than the whole thing. There should be more discussion here about how the client constructs the right fragment to express his changes, and how the server interprets the fragment it gets.

Section 7.2.3.5-10
Since users and sidebars are both sub-elements of the conferene object, what's the rationale for handling them via separate CCMP requests? Is the idea that it simplifies permissions management for the server (in the case where some users are only allowed to access users/sidebars), since the server doesn't have to look at what's in the changes to check permissions?

Section 7.2.3.5-10
Also, it seems like these messages should follow the pattern of the blueprint[s] and conf[s] messages above: The plural messages should be retreive-only, while the singular messages should allow other operations.

Section 7.2.3.5-6
How do these CCMP operations interact with the signaling protocols? Presumably when a user joins via a CSP, he is added to the conference object; is this equivalent to a userRequest/create operation?

Section 7.2.3.5, Paragraph 2
s/userInfo/usersInfo/

Section 7.2.3.5, Bullet 1 (retreive)
Change SHOULD NOT to MUST NOT, since it is ignored anyway.

Section 7.2.3.5, Bullet 2 (update)
Same concern here as with 7.2.3.4 above -- how do you represent changes with a users-type object?

Section 7.2.3.6, Paragraph 1, "Note that a user..."
This sentence seems like a non-sequitur: If a client is not XCON-aware, then it's not going to generate these messages. Recommend saying instead that some CSP operations might have the same effect as these operations, i.e., that when a user joins/leaves/etc, the conference server might perform an action that would otherwise be performed via a userRequest.

Section 7.2.3.6, 'update' paragraph
Same concern here as with 7.2.3.4 above -- how do you represent changes with a user-type object?

Section 7.2.3.8, 'update' paragraph
Same concern here as with 7.2.3.4 above -- how do you represent changes with a conference-type object?

Section 7.2.3.10, 'update' paragraph
Same concern here as with 7.2.3.4 above -- how do you represent changes with a conference-type object?

Section 9
Is this the process for dereferencing an XCON-URI? If so, you should say so.

Section 11, Paragraph 3
The second sentence here ("Because the conferencing client...") doesn't make sense. The reason you're not requiring HTTP authentication and cookies is that CCMP has its own authentication. Suggest replacing with
"
A conferencing client that conforms to this specification is not required to support HTTP authentication [RFC2617] or cookies [RFC2965]. These mechanisms are unnecessary because CCMP requests carry their own authentication information (in the 'confUserId' and 'password' fields; see Section 7.2.1).
"

Section 11, Paragraphs 4 and 7
Change first sentence to "CCMP requests MUST be carried in the body of an HTTP POST request. If a CCMP server receives an HTTP request using a method other than POST, it must respond with an error message, e.g., 404 (not found)." In light of this change, paragraph 7 could be deleted. On the other hand, it seems like it wouldn't be unreasonable for the server to respond to a HEAD request. In which case: "CCMP requests MUST be carried in the body of an HTTP POST request. A CCMP server MAY respond to HEAD requests. If a CCMP server receives an HTTP request using a method other than POST or HEAD, it must respond with an error message, e.g., 404 (not found)."

Section 12
The security considerations here are relatively comprehensive, but a little scatter-shot. I will provide a more thorough review of this section later.

Section 14.4.1-2
I'm guessing you mean to register "Conference Server" tags rather than "Location Server" tags, and for CCMP rather than HELD.




Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.