Subject: Re: [MEDIACTRL] Review of draft-ietf-mediactrl-call-flows-10

From: Eric Burger <[email-masked]>
Date: Sat, 13 Apr 2013 02:57:23 -0400

Are we done yet?

On Dec 26, 2012, at 7:11 AM, Lorenzo Miniero <[email-masked]> wrote:

> Hello Dale,
> 
> first of all, thanks for your detailed review! I'm answering to this
> mail first, leaving the extracted issue of the previous issue to later,
> since, as you pointed out, that's a more general issue.
> 
> I've added my replies inline prefixed by a [LM].
> 
> 
> On Wed, 19 Dec 2012 15:09:45 -0500 (EST)
> [email-masked] (Dale R. Worley) wrote:
> 
>> Review of draft-ietf-mediactrl-call-flows-10
>> 
>> The first thing that comes to mind is that this is a massive body of
>> work, and tremendously useful for the implementer!
>> 
> 
> 
> [LM] Thanks! That's exactly what we wanted to achieve.
> 
> 
>> I've listed the items in the order they appear in the draft.  Almost
>> all of them are editorial rather than technical.  The technical
>> questions are:
>> 
>> item 15 (is the listing of control packages in the SDP important or not)
>> item 17 (the negotiation of the timeout value is vague)
>> item 35 (mixing of playback of two recordings)
>> item 38 (semantics of setgain)
>> item 53 (how does AS send media INVITE to the correct MS)
>> item 55 (how does the MS know which AS sent each request)
>> 
>> item 1) various
>> 
>> The indentation of the header lines identifying various messages is
>> inconsistent.  I can find the following lines in various places:
>> 
>> 1. AS -> MS (SIP INVITE)
>> A1. AS -> MS (CFW CONTROL, createconference)
>>  A1. AS1 -> MS (CFW CONTROL, audit IVR)
>>   1. AS -> MS (CFW SYNC)
>> 
>> However, it may be easiest to have the RFC Editor fix that by giving
>> them an appropriate instruction, as they are likely to manually adjust
>> the indentation of the examples anyway.
>> 
> 
> 
> [LM] You're right, the indentation often varies, and the logic behind
> this currently is according to whether or not the example fits the page.
> Instructions about this would be welcome!
> 
> 
>> item 2) various
>> 
>> There are a lot of places where an arrow seems to go from a network
>> entity to itself, such as "create conf and its ID" below:
>> 
>>                    AS                                 MS
>>                    |                                  |
>>                    | 1. CONTROL (create conference)   |
>>                    |++++++++++++++++++++++++++++++++>>|
>>                    |                                  |--+ create
>>                    |                                  |  | conf and
>>                    |       2. 200 OK (conferenceid=Y) |<-+ its ID
>>                    |<<++++++++++++++++++++++++++++++++|
>> 
>> However, the event described on the label, "create conf and its ID",
>> is not the transmission of a message, and so it doesn't seem like it
>> should be represented by an arrow.  A more accurate alternative would
>> be:
>> 
>>                    AS                                 MS
>>                    |                                  |
>>                    | 1. CONTROL (create conference)   |
>>                    |++++++++++++++++++++++++++++++++>>|
>>                    |                                  | create
>>                    |                                  | conf and
>>                    |       2. 200 OK (conferenceid=Y) | its ID
>>                    |<<++++++++++++++++++++++++++++++++|
>> 
> 
> 
> [LM] Yes, in that case the arrow was not meant as a network connection,
> but as a further step in the sequence diagram, that is what that
> CONTROL message triggers in the MS application logic. The same applies
> to all the examples where this happens. If you think the arrowless
> diagram is clearer to the reader we might remove them: the problem with
> this is that, without arrows, some diagrams might be harder to read,
> i.e., in terms of who does what in diagrams with several components
> interacting with each other. As an alternative, we might clarify what
> those arrows are and what they are not. What do you think about this?
> 
> 
> 
>> item 3) section 1
>> 
>> "self-sustained" should be "self-contained".
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 4) section 2
>> 
>>   Note that due to RFC formatting conventions, this document often
>>   splits SIP/SDP and CFW across lines whose content would exceed 72
>>   characters.
>> 
>> "whose content ..." is applied to the wrong referent, a "lines", but
>> those lines are the post-split lines, not the pre-split lines.
>> Perhaps:
>> 
>>   Note that due to RFC formatting conventions, SIP/SDP and CFW lines
>>   whose content exceeds 72 characters are split across lines.  This
>>   line folding is marked by a backslash at the end of the first line.
>>   This backslash, the preceding whitespace, the following CRLF, and
>>   the whitespace beginning the next line would not appear in the
>>   actual protocol contents.
>> 
> 
> 
> [LM] Thanks, we'll change the sentence.
> 
> 
>> item 5) section 2
>> 
>>   Due to the same 72 characters limitation, this document also
>>   sometimes splits the content of XML elements across lines: please
>>   beware that, when this happens, no whitespace is actually meant to
>>   be neither at the beginning nor at the end of the element content.
>> 
>> This seems to be incorrect, as in many places, an XML *element*, that
>> is, everything from the start tag to the end tag (see XML spec, rule
>> "element"), is quite long and is necessarily split across lines, but
>> is also valid.  (However, that interpretation depends on entities
>> respecting the common convention that whitespace character content is
>> to be ignored if it appears immediately within an element that does
>> not admit immediate character content.)
>> 
>> I believe you meant "start tag" instead of "element".  But in that
>> case, line breaks between the attributes of a start tag are valid in
>> XML (see XML spec, rule "STag").  If this is correct, the above
>> sentence can be omitted.
>> 
>> However, the message B1 in section 7.1 may be an exception.  See the
>> appropriate item.
>> 
> 
> 
> [LM] We actually added this line after a comment of yours on the MRB
> document examples, which exhibited a similar behaviour. Since we wanted
> to clarify that the examples didn't include pre and post whitespaces,
> we added the text to make this clearer. If that's unneeded we can
> remove the sentence again.
> 
> 
>> item 6) section 3
>> 
>>   This document makes use of the same terminology as the one that can
>>   be found in the referenced documents.
>> 
>> This is awkward.  Perhaps:
>> 
>>   This document makes use of the same terminology as the referenced
>>   documents [RFC6230] [RFC6231] [RFC6505] [I-D.ietf-mediactrl-mrb].
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 7) section 4
>> 
>> This section starts with a paragraph over one page long.  Could it be
>> broken into multiple paragraphs?
>> 
> 
> 
> [LM] Did you mean section 4.1? Section 4 starts with just a few lines.
> 
> 
>> item 8) section 4
>> 
>> It seems overly complicated to explicitly describe "categories" to
>> contain only four things.  Also, the text needs to mention that Figure
>> 3 contains *two* diagrams, otherwise the accounting seems to be
>> incorrect.  Perhaps:
>> 
>>   Four diagrams are provided.  Two of them (Figure 1 and Figure 2)
>>   describe normal operation of the framework.  Figure 3 contains two
>>   diagrams describing asynchronous event notifications.  Figure 1
>>   embraces the MS perspective, whereas Figure 2 is on on the AS side.
>>   The upper part of Figure 3 shows how events are generated, on the
>>   MS side, by issuing a CONTROL message addressed to the AS; events
>>   are acknowledged by the AS through standard 200 responses.  Hence,
>>   the behavior of the AS, which mirrors that of the MS, is depicted
>>   in the lower part of the figure.
>> 
> 
> 
> [LM] Good point, we'll fix this.
> 
> 
>> item 9) section 4 figure 1
>> 
>> I think the state machine could be clarified:
>> 
>> - Replace the event "API 200" in "API 200/200" with "API terminate",
>>  which is how the API termination is described on other arcs.
>> 
>> - Replace the event "API 202" in "API 202/202" with "API update",
>>  which is how the API non-termination is described on other arcs.
>> 
>> - Further, change "API update" to "timer" or something like that, to
>>  indicate that the MS CFW state machine must generate a 202 *based on
>>  the passage of time*, not based on the API providing some sort of
>>  "update".  If these time intervals are globally fixed for the CFW
>>  protocol, their fixed values could be written in.
>> 
> 
> 
> [LM] Ok, we'll make this clearer.
> 
> 
>> - The states "'202' sent" and "'update' sent" have the same outgoing
>>  transitions, so they should probably be merged.
>> 
> 
> 
> [LM] I'm not sure about this: 202 is only sent after the first CONTROL
> message to tell the AS it may take a while to process the request, after
> which you can either have further 202 messages should the processing
> take even more time, or one or more UPDATE messages related to that
> CONTROL request after that. They're two different messages in the
> protocol semantics. Nevertheless, it's also true that, according to
> RFC6230, a 202 is basically a pre-REPORT message... any feedback on
> this?
> 
> 
>> - Is there truly an "Error" message that is comparable to the "200"
>>  and "202" messages?  Or is sending "Error" a shorthand for a cluster
>>  of numeric response codes?  If the latter, it would help to make
>>  that clearer here in the introductory material.
>> 
> 
> 
> [LM] Yes, errors are numeric codes (Section 7. in RFC6230). We'll fix
> the text.
> 
> 
>> - What happens if the API detects an error after 202 has been sent?
>>  There is no "API Error" arc from "'202' sent"/"'update' confirmed".
>> 
> 
> 
> [LM] Good point. The idea is that, once the MS sends a 202, the request
> has been correctly processed, and so is supposed to be fine as far as
> the protocol is concerned. I guess there could be circumstances when an
> errors occurs after that, e.g., in retrieving an audio file to be played
> to a UAC: in that case, the AS would be informed of the termination of
> the dialog/request in a REPORT terminate, including details on the issue
> which are Control Package specific. Do you think explaining this in the
> text may help readers?
> 
> 
>> item 10) section 4 figure 2
>> 
>> Clarifications of the state machine:
>> 
>> - There is no "Error" arc from the "202 received" and "'update'"
>>  states.  Are errors impossible here?
>> 
>> - The states "202 received" and "'update'" have the same outward arcs
>>  and so could be merged.
>> 
>> - The two figures are inconsistent regarding whether response numbers
>>  (200, 202) are within quotes '...'.
>> 
>> - The two figures are inconsistent regarding whether report categories
>>  (update, terminate) are within quotes '...'.
>> 
>> - The two figures are inconsistent regarding whether the sending of a
>>  request or response in an arc's label is indicated using "send" or
>>  not.
>> 
>> item 11) section 4 figure 3
>> 
>> There are similar inconsistencies between figure 3 and figures 1 and 2.
>> 
>> item 12) section 5
>> 
>> The term "COMEDIA" is used, and a reference is given to RFC 4145.  But
>> that RFC does not use the term "COMEDIA" at all.  The framework I-D
>> also uses "COMEDIA" without explicitly defining it.  It would be
>> helpful to insert here a definition of "COMEDIA", which seems to be
>> synonymous with "media of type application/cfw".
>> 
> 
> 
> [LM] I thought COMEDIA actually came from RFC4145, standing for
> "connection-oriented media". Even the MSRP RFC refers to it that way. If
> that's incorrect or incomplete we'll fix this in the next version.
> 
> 
>> item 13) section 5.1
>> 
>>   If the request is fine, the MS answers with its own offer,
>> 
>> shouldn't this be:
>> 
>>   If the request is fine, the MS answers with its answer,
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 14) section 5.1
>> 
>>   The MS replies with the list of packages it supports, by
>>   adding a dummy example package to the list provided by the AS.
>> 
>> The "by" should be removed, as the replying is not done "by adding";
>> instead, the MS replies and also adds.
>> 
> 
> 
> [LM] OK.
> 
> 
>> item 15) section 5.1
>> 
>>   It is worth noting that this exchange of information is not meant
>>   as a strict or formal negotiation of packages: in case the AS
>>   realizes that one or more packages it needs are not supported
>>   according to the indications sent by the MS, it may, or may not,
>>   choose not to open a control channel with the MS at all, if its
>>   application logic leads to such a decision.  The actual negotiation
>>   of control packages is done subsequently through the use of the
>>   framework SYNC transaction.
>> 
>> This confuses me:  Either the list of packages in the SDP offer/answer
>> is significant or it is not.  If it is not, why is it provided?
>> 
>> In particular, if the MS may support packages that it does not admit
>> to in the answer, then when the AS sees an answer that does not
>> contain the needed packages, it will have to continue with the control
>> channel connection in order to determine if the MS *actually* supports
>> the needed packages or not.  Thus, the MS could omit all ctrl-package
>> attributes in its answers all the time.
>> 
>> Also, it's not clear whether the AS is required to provide the list of
>> packages it will need.  If it is required, then the SDP can be used to
>> choose the correct MS based on MS capabilities.  If it is not
>> required, a different architectural mechanism is needed.
>> 
> 
> 
> [LM] That section refers to a draft Chris submitted to the MMUSIC WG
> some time ago:
> 
> http://tools.ietf.org/html/draft-boulton-mmusic-sdp-control-package-attribute-07
> 
> so any clarification about the purpose and constraints of such a
> mechanism should be addressed in the specification. Chris, do you think
> this behaviour could be clarified in the draft, in order to have it
> reflected in the Call Flows as a consequence?
> 
> 
>> item 16) section 5.3
>> 
>> Whether "keep alive" is hyphenated is not consistent.
>> 
> 
> 
> [LM] The right word is "keep-alive", we'll make this consistent.
> 
> 
>> item 17) section 5.3
>> 
>>   In the previous section it has been described how a timeout value for
>>   the keep alive mechanism is negotiated.  Specifically, in the example
>>   the AS and the MS agreed on a value of 100 seconds.  
>> 
>> In fact, that section does not describe how the value is negotiated
>> (since it is not clear what happens if the MS dislikes the value
>> proposed by the AS).  However, this is correct:
>> 
>>   In example in the previous section, the AS and the MS agreed on a
>>   value of 100 seconds.
>> 
> 
> 
> [LM] According to RFC6230, the 200 to the SYNC MUST have the same
> keep-alive value proposed in the original SYNC. Who sends the SYNC can
> change according to the COMEDIA negotiation. Specifically, "The previous
> steps ensure that the entity initiating the Control Channel connection
> is always the one specifying the keep-alive timeout period.". So, to
> answer your question, I guess that if a MS dislikes the value, it can
> just pick the active role and send a new SYNC with a new keep-alive
> value.
> 
> 
>> 
>> item 18) section 6
>> 
>>   Besides, unless stated otherwise, the same UAC session is referenced
>>   in all the above mentioned examples.
>> 
>> Is "above mentioned" the correct modifier?  The previous paragraph
>> refers to "the following scenarios".
>> 
> 
> 
> [LM] You're right, it's a bit unclear, we'll fix this.
> 
> 
>> item 19) section 6 figure 10
>> 
>> It would be useful at this point to make it clear that the two INVITEs
>> are different SIP dialogs (as these scenarios are constructed).  (Or,
>> if the AS may be inline and acting as a proxy, describe that there may
>> be two dialogs or only one.)  Including, replace the second "INVITE
>> (X)" with "INVITE (Y)" to show that the URIs need not be the same.
>> 
> 
> 
> [LM] OK.
> 
> 
>> Also, why not include the establishment of the Control Channel in the
>> figure, as that will not need to be duplicated in any further figure.
>> 
> 
> 
> [LM] It's not there as the Control Channel may already have been
> negotiated and synced in advance. That is, the AS may be redirecting
> calls to a MS it has already been already "talking with" for a while.
> We explained this at the beginning of the section, "All the examples
> assume that a Control Channel has already been correctly established
> and SYNCed between the reference AS and MS", as that was already
> addressed in the previous section.
> 
> 
>> item 20) section 6 figure 11
>> 
>> Figure 11 appears to be only a caption.  Or is it the SIP signaling?
>> Expositions of protocol messages are rarely considered to be figures.
>> 
> 
> 
> [LM] You're right, we made use of figures to simplify the formatting
> of the messages, we'll remove te caption.
> 
> 
>> item 21) section 6
>> 
>> The phrase "These three identifiers" is confusing because the text has
>> just introduced four identifiers.
>> 
> 
> 
> [LM] Oops, right.
> 
> 
>> I assume that if the SDP from AS to MS also contains label attributes,
>> the Mediactrl framework specifies how they will be used (or ignored),
>> so that the "addressing" of media streams is not made ambiguous.
>> 
>> item 22) section 6.1.2
>> 
>>   The 202+REPORT(s) mechanism is used whenever the MS wants to tell
>>   the AS that the requested operation might take some more time than
>>   expected.
>> 
>> This is probably incorrect.  What you mean is, "the requested
>> operation might take more than *** seconds".  The fixed or variable
>> time limit should be specified here.
>> 
> 
> 
> [LM] Actually, the time is Control Package dependent. Different packages
> may have different timeouts. Quoting the framework, "A Control Package
> MUST explicitly define the circumstances under which the server sends
> 200 and 202 messages."
> 
> 
>>   In this example, the preparation ends before the
>>   timeout, and so the transaction is concluded with a 'REPORT
>>   terminate', which acts as the 200 message in the previous example.
>> 
>> The last clause is rather confusing, as 'REPORT terminate' is a
>> request, not a response, and thus doesn't "act like" a 200 message.
>> Perhaps: "which reports the end of the transaction (as did the 200
>> message in the previous example)".
>> 
> 
> 
> [LM] OK.
> 
> 
>> item 23) section 6.2 figure 18
>> 
>> It might be useful to distinguish the four(?) SIP dialogs involved.
>> 
> 
> 
> [LM] Do you mean as in different figures? or clearer text?
> 
> 
>> item 24) section 6.2.2
>> 
>> Three hours is 10,800 seconds, not 1,800 seconds.  I think the easiest
>> fix is to replace "3 hours" with "30 minutes".
>> 
> 
> 
> [LM] Oops, ugly typo, will fix this (and good thing my math teacher is
> not reading this :-) )
> 
> 
>> RFC 6230 section 6.2
>> 
>>   An entity acting as a Control Server, on receiving a request, MUST
>>   generate a response [...].  The response MUST conform to the ABNF
>>   Responses MUST NOT include the 'Status' or 'Timeout' message
>>   headers, [...]
>> 
>> RFC 6230 section 6.3.2.1
>> 
>>   A Control Server issuing a 202 response MUST ensure the message
>>   contains a 'Timeout' message header.
>> 
>> item 25) section 6.2.3
>> 
>> This section is rather difficult to follow.  I'm not sure why, but
>> partly it's because the text doesn't rigorously make clear what events
>> are "before", that is, when the two audio channels of the original
>> conference are being recorded, and "after", when the two recordings
>> are being played back.  For instance, in the second paragraph, the last
>> sentence is "after", but the first two sentences are "before".
>> Instead, there should be a paragraph break there, and starting "Later,
>> when we desire to play the whole conversation to UAC, the AS may
>> take...".
>> 
> 
> 
> [LM] You're right, we'll try to make this clearer.
> 
> 
>> It would help if the UAC which is listening to the playback was called
>> "UAC3" or something like that, as "UAC" is also a generic term, and
>> it's not immediately clear that it is unrelated to UAC1 and UAC2.
>> 
>> It would also help if the two *recordings* had names different from
>> the UACs during the recording.  In particular "play UAC1 on confY" is
>> hard for the naive reader to understand until he realizes that "UAC1"
>> means the recording file of the audio generated by UAC1.
>> 
> 
> 
> [LM] Good points.
> 
> 
>> item 26) section 6.3
>> 
>>   o  The AS invokes the creation of a new conference instance by means
>>      of a CONTROL request (1); this request is addressed to the
>>      conferencing package (msc-mixer/1.0) and contains in the body the
>>      directive (createconference) with all the desired settings for it;
>> 
>> The antecedent of "it" is not particularly clear.  The antecedent is
>> "a new conference", which is the 6th preceding noun phrase, which is
>> only determined because it is the first preceding noun phrase which
>> has settings.  Better to say "... the desired settings for the new
>> conference instance".
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 27) section 6.3.1 figure 30
>> 
>> This figure uses "UAC1" and "UAC2", but the other figures in 6.3 use
>> "UAC A", "UAC B", and "UAC C".  Ditto for figure 31 and some of the
>> text.
>> 
> 
> 
> [LM] Nice catch, we'll fix this.
> 
> 
>> item 28) section 6.3.4 figure 38
>> 
>> The notation "D+[a+c]" is clever, but "D+(A+C)/2" would be more
>> accurate.  (And see the following item regarding the volume level.)
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 29) section 6.3.4
>> 
>> The volume level at which the main conference is heard in the sidebar
>> is not stated consistently:
>> 
>>   the main conference.  The mix of the conference, instead, must be
>>   attached to the sidebar, but with a lower volume (50%), being just a
>>   background to the actual conversation.  This would allow both B and D
>> 
>>   2.  then, the main conference mix is attached to it as 'sendonly' and
>>       with a -5dB gain to limit the volume of its own contribution to
>>       30% (so that B and D can hear each other louder, while still
>>       listening to what's happening in the main conference in
>>       background);
>> 
>>  |         |         | B1. CONTROL (join confX-->confY) |
>>  |         |         |++++++++++++++++++++++++++++++++>>|
>>  |         |         |                                  |--+ join confX
>>  |         |         |                                  |  | & confY
>>  |         |         |                       B2. 200 OK |<-+ sendonly
>>  |         |         |<<++++++++++++++++++++++++++++++++|    (50% vol)
>> 
>>      <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer">
>>         <join id1="2f5ad43" id2="519c1b9">
>>            <stream media="audio" direction="sendonly">
>>               <volume controltype="setgain" value="-5"/>
>>            </stream>
>>         </join>
>>      </mscmixer>
>> 
>> Of these, two references say 50% (-3dB) and two references say 30% or
>> -5dB.
>> 
> 
> 
> [LM] You're right, we'll make this consistent.
> 
> 
>> item 30) section 6.3.5 figure 43
>> 
>> Is it intended that UAC (FCC) does not have any RTP going to the MS?
>> (Indeed, is it necessarily a UAC?  But perhaps SIP is needed to set up
>> BFCP.)
>> 
> 
> 
> [LM] Yes, to clarify the distinction between a simple participant and a
> chair we chose to only display RTP for the participant, with the chair
> moderating what happens on it. Whether or not the FCC has any RTP
> flowing is not relevant to the example and that's why we omitted it.
> That said, the chair does not need to be a UAC, you're right, and SIP is
> not mandated to set up BFCP (RFC4583 is only a way to do so, BFCP just
> talks of out of band mechanisms generally). We will remove the UAC for
> the FCC in the figure to make this clearer.
> 
> 
>> item 31) section 6.3.5
>> 
>> The participant UAC is labeled inconsistently as "UAC", "UAC (FCP)",
>> and "UAC1".  ("UAC" may be correct, as the context for that term my be
>> describing a generic or abstract UAC.)  Similarly, "UAC (FCC)" and
>> "UAC2" are used for the chair UAC.
>> 
> 
> 
> [LM] We'll fix the diagrams accordingly.
> 
> 
>> item 32) section 6.3.5
>> 
>> It might be desirable to mention that the previous speaker should be
>> muted before UAC1 can be un-muted.  Usually, this muting will happen
>> between the Accepted and Granted BFCP messages, so it probably should
>> be illustrated in the sequence of events.
>> 
> 
> 
> [LM] That's actually not needed, as BFCP does not force an exclusive
> access to the resources it moderates. According to the policy in use,
> several participants may be granted the same resource (e.g., ability to
> talk) at the same time (e.g., in a conference bridge).
> 
> 
>> item 33) section 6.4
>> 
>> It might be helpful to expand "VCR" the first time it is used.
>> (Apparently it does not mean "video cassette recorder", and I see no
>> suitable meaning on the Wikipedia "disambiguation" page for "VCR".)
>> 
> 
> 
> [LM] We borrowed this terminology from RFC6231, the IVR Control Package.
> The idea is to have "video cassette recorder"-lie controls, right, like
> the ability to play, pause, stop, rewind, etc. We'll expand this.
> 
> 
>> item 34) section 6.4.2
>> 
>>   In fact,
>>   rather than having the AS build different framework messages
>>   according to the current time to build an announcement, 
>> 
>> This is difficult to read.  Perhaps
>> 
>>   In fact, rather than having the AS build an announcement according
>>   to the current time using different framework messages,
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 35) section 6.4
>> 
>> The discussion of mixing in the background music should be contrasted
>> with the mixing of the two recordings during playback in section
>> 6.2.3.  Naively, it would seem that the same mixing techniques could
>> be used in both cases, but the two sections implement mixing in
>> entirely different ways.
>> 
> 
> 
> [LM] Are you talking of 6.4.2 (current time example)? If so, this was
> done on purpose, to exploit two different scenarios to showcase the use
> of two different techniques. You're right in saying that the same could
> be applied to both cases, nothing naive in this :-)
> 
> 
>> item 36) section 6.4.3
>> 
>> An example contains XML elements that seem to be unnecessarily
>> complex:
>> 
>>       <rule id="action" scope="public">
>>         <item>
>>           *
>>           <item><ruleref uri="#digit"/></item>
>>         </item>
>>       </rule>
>> 
>> As far as I can tell from the SRGS specification, <item> functions
>> more-or-less as a type of parenthesis, and is needed only when (1) a
>> "weight" or "repeat" attribute needs to be applied to the group, (2)
>> delimiting one alternative of a <one-of> element, or (3) constructing
>> the "null" regular expression (that consumes no input and always
>> matches).  Thus, these examples can be simplified to:
>> 
>>       <rule id="action" scope="public">
>>         *
>>         <ruleref uri="#digit"/>
>>       </rule>
>> 
>> Then again, if the example is taken from a real interaction, perhaps
>> it is best to leave it as it really happened.
>> 
> 
> 
> [LM] I'm not an expert of SRGS, so I'm not sure about this. This is how
> we implemented it in our Media Server, and it works this way, but it
> would be nice to hear from other implementers to see if they usually
> realize similar scenarios in a different way!
> 
> 
>> item 37) section 6.4.3
>> 
>>      to implement is a <collect>, and we are only interested in two-
>>      digits DTMF strings (maxdigits); the AS is not interested in a
>> 
>> "two-digits" should be "two-digit".  (Because this phrase is used as a
>> modifier of "DTMF strings", the "digit" is not plural.)
>> 
> 
> 
> [LM] Ok.
> 
> 
>>      instructs the MS into modifying the volume of the UAC-->conference
>> 
>> "into modifying" would better be "to modify".
>> 
> 
> 
> [LM] Ok.
> 
> 
>>      audio flow (setgain=-5dB sendonly); notice how the request also
>> 
>> This is probably intended to be "-3dB", as all other uses of setgain
>> in this section (including the displayed messages) use a 3 dB
>> increment.
>> 
> 
> 
> [LM] Right, we0ll make this consistent.
> 
> 
>> item 38) section 6.4.3
>> 
>> This section leads to a question about the semantics of the <volume
>> controltype="setgain" ...> operation:  Clearly, initially the stream
>> is output at the same volume as the input media.  But when "<volume
>> controltype='setgain' value='+1'>" is applied, does that cause the
>> stream's output volume to be set to +1 dB *relative to the input
>> media* or to +1 dB *relative to the previous volume setting*?
>> 
>> E.g., if I apply that operation twice, does the second application
>> leave the amplification at +1 dB or raise it to +2 dB?
>> 
>> The examples in section 6.4.3 suggest the second interpretation.
>> 
>> The text in draft-ietf-mediactrl-mixer-control-package-14 is not clear
>> on this point: "setgain" is only discussed in section 4.2.2.5.1, and
>> it says "use the value of the "value" attribute as a specific gain
>> measured in dB to apply".  That would be most likely to mean "as a
>> specific gain measured in dB to apply to the input", which suggests
>> the first interpretation.
>> 
>> In any case, the semantics of this need to be clarified and the
>> example adjusted accordingly.
>> 
> 
> 
> [LM] If I recall correctly, when we first implemented this we discussed
> it with the IVR authors during a meeting. If I'm not wrong the
> conclusion was that setgain *sets* the gain, and does not modify the
> previous value. I don't have the MS code in front of me right now,
> though, I'll have to double check how we implemented this and let you
> know.
> 
> IVR authors, any insight on this from a specification point of view?
> 
> 
>> item 39) section 7.1
>> 
>>   Each MS makes use of the publishing interface to provide an MRB with
>>   relevant information.
>> 
>> In the relationship between the MRB and MS, the MRB initiates the
>> relationship.  Thus, it would be clearer to express this:
>> 
>>   An MRB makes use of the MS's publishing interface to acquire
>>   relevant information.
>> 
>>   It is
>>   enough to point out that, in this case, the MRB adds a new voice to
>>   the 'Packages' it needs support for (mrb-publish/1.0).
>> 
>> "voice" should be "item".
>> 
>>   All
>>   this messages flow through the control channel as all the messages in
>> ---^^^^
>> should be "these"
>> ----------------------------------------------------^
>> insert "do"
>>   this document.
>> 
> 
> 
> [LM] Ok.
> 
> 
>> item 40) section 7.1 message B1
>> 
>> This seems to be the only place in the draft where whitespace has been
>> introduced where character content is valid, and so there is a
>> question whether the draft needs to indicate that the whitespace would
>> not be present on the wire.  The relevant elements are:
>> 
>>        <mixing-modes>
>>            <audio-mixing-modes>
>>                <audio-mixing-mode package="msc-ivr/1.0">
>>                     nbest
>>                </audio-mixing-mode>
>>            </audio-mixing-modes>
>>            <video-mixing-modes activespeakermix="true" vas="true">
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     single-view
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     dual-view
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     dual-view-crop
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     dual-view-2x1
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     dual-view-2x1-crop
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     quad-view
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     multiple-5x1
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     multiple-3x3
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0">
>>                     multiple-4x4
>>                </video-mixing-mode>
>>            </video-mixing-modes>
>>        </mixing-modes>
>> 
>> I'm not sure if the schema defining urn:ietf:params:xml:ns:mrb-publish
>> indicates that the whitespace before and after the mixing mode names
>> is to be ignored.  But this might be a place to use the
>> backslash-line-folding convention specified in section 2:
>> 
>>        <mixing-modes>
>>            <audio-mixing-modes>
>>                <audio-mixing-mode package="msc-ivr/1.0"> \
>>                     nbest \
>>                </audio-mixing-mode>
>>            </audio-mixing-modes>
>>            <video-mixing-modes activespeakermix="true" vas="true">
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     single-view \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     dual-view \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     dual-view-crop \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     dual-view-2x1 \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     dual-view-2x1-crop \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     quad-view \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     multiple-5x1 \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     multiple-3x3 \
>>                </video-mixing-mode>
>>                <video-mixing-mode package="msc-mixer/1.0"> \
>>                     multiple-4x4 \
>>                </video-mixing-mode>
>>            </video-mixing-modes>
>>        </mixing-modes>
>> 
> 
> 
> [LM] Yes, as I anticipated, we added that text to reflect a similar
> comment you made when reviewing the MRB draft. This fix you suggest
> makes sense, so we'll add it to the draft.
> 
> 
>> item 41) section 7.1, section 7.2, section 7.2.1
>> 
>>   In the Inline mode, instead, the MRB is in the
>>   path between the AS and the pool of MSs it is handling.
>> 
>>   Anyway, the MRB is also
>>   conceived to work with ASs that are unaware of its functionality,
>> 
>>   and the SIP addresses of the chosen MSs.
>> 
>> Generally, "AS" and "MS" are used as the plurals of "AS" and "MS", but
>> in these instances, "ASs" and "MSs" are used.
>> 
> 
> 
> [LM] You're right, I fixed this in the MRB and not here, sorry. Besides,
> ASs sounds really bad... :-)
> 
> 
>> item 42) section 7.1
>> 
>>   request itself and an SDP related to related to either the creation
>> -----------------------------^^^^^^^^^^^^^^^^^^^^^
>> "related to" is duplicated.
>> 
>> item 43) section 7.2.1
>> 
>>   MS the MRB has deemed better capable to fulfill the AS requirements),
>> -------------------------^^^^^^
>> This should be "best".
>> -------------------------------------------------------^^
>> This should be "AS's" or "AS'" (depending on which spelling convention
>> we are using).
>> 
>>      targeting the request, and as a consequence picks up two MS which
>> --------------------------------------------------^^^^^^^^
>> I think you want "picks" here.
>> 
>>   after the Query the AS<->interaction becomes 1:1, UAC media dialogs
>> ----------------------------^
>> Something appears to be missing here.
>> 
> 
> 
> [LM] We'll fix them all.
> 
> 
>> item 44) section 7.2.2.1, section 7.2.2.2, section 7.2.3
>> 
>> I think it would make the diagrams a little easier for the naive
>> reader to follow if the media types specified in the SDP of the
>> message bodies were given.  E.g., if an INVITE or 200 carries an
>> application/sdp body for audio media, that is shown on the diagram.
>> This would be particularly helpful in 7.2.3, where it takes the reader
>> more consideration to deduce what the media types must be.  Updated in
>> this way, the diagrams are as follows.  (But this has removed the
>> comments noting where the SDP has been copied from one message to
>> another.  That may need to be improved.)
> 
> 
> [LM] Ok, we'll try and improve this to make it clearer.
> 
> 
>> 
>> 7.2.2.1.  Inline-aware Mode: CFW-based approach
>> 
>>   AS                      MRB                          MS
>>    |                       |                           |
>>    | 1. INVITE             |                           |
>>    | (multipart/mixed:     |                           |
>>    |  audio,               |                           |
>>    |  application/mrb-consumer+xml)                    |
>>    |---------------------->|                           |
>>    |       2. 100 (Trying) |                           |
>>    |<----------------------|                           |
>>    |                       |--+ Extract SDP and        |
>>    |                       |  | MRB payloads; handle   |
>>    |                       |<-+ Consumer request to    |
>>    |                       |    pick MS                |
>>    |                       |                           |
>>    |                       | 3. INVITE                 |
>>    |                       | (audio)                   |
>>    |                       |-------------------------->|
>>    |                       |           4. 100 (Trying) |
>>    |                       |<--------------------------|
>>    |                       |                           |--+ Negotiate
>>    |                       |                           |  | CFW Control
>>    |                       |                           |<-+ Channel
>>    |                       |                 5. 200 OK |
>>    |                       |                   (audio) |
>>    |                       |<--------------------------|
>>    |                       | 6. ACK                    |
>>    |                       |-------------------------->|
>>    |        Prepare new +--|                           |
>>    |       payload with |  |                           |
>>    |    SDP from MS and +->|                           |
>>    |     Consumer reply    |                           |
>>    |                       |                           |
>>    |             7. 200 OK |                           |
>>    |     (multipart/mixed: |                           |
>>    |      audio,           |                           |
>>    |      application/mrb-consumer+xml)                |
>>    |<----------------------|                           |
>>    | 8. ACK                |                           |
>>    |---------------------->|                           |
>>    |                       |                           |
>>    |--+ Read Cons. reply   |                           |
>>    |  | and use SDP to     |                           |
>>    |<-+ create CFW Chn.    |                           |
>>    |                       |                           |
>>    |                                                   |
>>    |<<############## TCP CONNECTION #################>>|
>>    |                                                   |
>>    | CFW SYNC                                          |
>>    |++++++++++++++++++++++++++++++++++++++++++++++++++>|
>>    |                                                   |
>> 
>> 7.2.2.2.  Inline-aware Mode: Media dialog-based approach
>> 
>>   UAC              AS                     MRB                        MS
>>    |               |                       |                          |
>>    | 1. INVITE     |                       |                          |
>>    | (audio)       |                       |                          |
>>    |-------------->|                       |                          |
>>    | 2. 100 Trying |                       |                          |
>>    |<--------------|                       |                          |
>>    |               | 3. INVITE             |                          |
>>    |               | (multipart/mixed:     |                          |
>>    |               |  audio,               |                          |
>>    |               |  application/mrb-consumer_xml)                   |
>>    |               |---------------------->|                          |
>>    |               |       4. 100 (Trying) |                          |
>>    |               |<----------------------|                          |
>>    |               |                       |--+ Extract SDP and       |
>>    |               |                       |  | MRB payloads; handle  |
>>    |               |                       |<-+ Consumer request to   |
>>    |               |                       |    pick Media Servers    |
>>    |               |                       |                          |
>>    |               |                       | 5. INVITE                |
>>    |               |                       | (audio)                  |
>>    |               |                       |------------------------->|
>>    |               |                       |          6. 100 (Trying) |
>>    |               |                       |<-------------------------|
>>    |               |                       |                       +--|
>>    |               |                       |   Handle media dialog |  |
>>    |               |                       |       (connection-id) +->|
>>    |               |                       |                          |
>>    |               |                       |                7. 200 OK |       
>>    |               |                       |                  (audio) |
>>    |               |                       |<-------------------------|
>>    |               |                       | 8. ACK                   |
>>    |               |                       |------------------------->|
>>    |               |        Prepare new +--|                          |
>>    |               |       payload with |  |                          |
>>    |               |    SDP from MS and +->|                          |
>>    |               |     Consumer reply    |                          |
>>    |               |                       |                          |
>>    |               |             9. 200 OK |                          |
>>    |               |     (multipart/mixed: |                          |
>>    |               |      audio,           |                          |
>>    |               |      application/mrb-consumer+xml)               |
>>    |               |<----------------------|                          |
>>    |               | 10. ACK               |                          |
>>    |               |---------------------->|                          |
>>    |               |                       |                          |
>>    |               |--+ Read Cons. reply   |                          |
>>    |               |  | and send SDP       |                          |
>>    |               |<-+ back to UAC        |                          |
>>    |    11. 200 OK |                       |                          |
>>    |       (audio) |                       |                          |
>>    |<--------------|                       |                          |
>>    | 12. ACK       |                       |                          |
>>    |-------------->|                       |                          |
>>    |               |                       |                          |
>>    |<<*************************** RTP ******************************>>|
>>    |               |                       |                          |
>>    |               |--+ Negotiate          |                          |
>>    |               |  | CFW channel        |                          |
>>    |               |<-+ towards MS         |                          |
>>    |               |    (if needed)        |                          |
>>    |               |                       |                          |
>>    |               |<<############## TCP CONNECTION ################>>|
>>    |               |                                                  |
>>    |               | CFW SYNC                                         |
>>    |               |+++++++++++++++++++++++++++++++++++++++++++++++++>|
>>    |               |                                                  |
>> 
>> 7.2.3.  Inline-unaware Mode
>> 
>>   AS                      MRB                          MS
>>    |                       |                           |
>>    | 1. INVITE             |                           |
>>    | (application/cfw)     |                           |
>>    |---------------------->|                           |
>>    |       2. 100 (Trying) |                           |
>>    |<----------------------|                           |
>>    |                       |--+ Pick a MS              |
>>    |                       |  | and redirect           |
>>    |                       |<-+ INVITE there           |
>>    |                       |                           |
>>    |                       | 3. INVITE                 |
>>    |                       | (application/cfw)         |
>>    |                       |-------------------------->|
>>    |                       |           4. 100 (Trying) |
>>    |                       |<--------------------------|
>>    |                       |                           |--+ Negotiate
>>    |                       |                           |  | CFW Control
>>    |                       |                           |<-+ Channel
>>    |                       |                 5. 200 OK |
>>    |                       |         (application/cfw) |
>>    |                       |<--------------------------|
>>    |                       | 6. ACK                    |
>>    |                       |-------------------------->|
>>    |                       |                           |
>>    |             7. 200 OK |                           |
>>    |     (application/cfw) |                           |
>>    |<----------------------|                           |
>>    | 8. ACK                |                           |
>>    |---------------------->|                           |
>>    |                       |                           |
>>    |                                                   |
>>    |<<############## TCP CONNECTION #################>>|
>>    |                                                   |
>>    | CFW SYNC                                          |
>>    |++++++++++++++++++++++++++++++++++++++++++++++++++>|
>>    |                                                   |
>> 
>> item 45) section 7.2.2
>> 
>>   An AS willing to issue a Concumer request by means of SIP, has to do
>> ----------------------------^
>> This should be "Consumer".
>> 
>>   envisages two kind of SIP dialogs a Consumer request may be sent
>> -----------------^
>> This should be "kinds".
>> 
>>   setup a control channel) or a UAC media dialog (a SIP dialog the AS
>> ---^
>> This should be "set up".  ("set up" functions like a verb; "setup"
>> functions like a noun.)
>> 
>>   The behaviour in the two cases, which are called respectively CFW-
>> -------^
>> Probably better to say "behaviours" here.
>>   based and Media dialog-based approach, is only slightly different,
>> ------------------------------------------^
>> Use "are", to go with "behaviors".
>> 
> 
> 
> [LM] OK.
> 
> 
>> item 46) section 7.2.2.1, section 7.2.2.2
>> 
>>   Please note that, to ease the reading of the protocol contents, a
>>   simple '=_Part' is used whenever a boundary for a 'multipart/mixed'
>>   payload is provided, instead of the actual boundary that would be
>>   inserted in the SIP messages.
>> 
>> This seems like a poor strategy, as the resulting figures are not
>> strictly correct.  Perhaps use "Part" as the boundary value, which
>> would result in figures that look like the following, which strictly
>> correct and are just as easy to read:
>> 
>>   [..]
>>   Content-Type: multipart/mixed;boundary="Part"
>> 
>>   --Part
>>   Content-Type: application/sdp
>> 
>>   v=0
>>   o=- 2890844526 2890842807 IN IP4 as.example.com
>>   [...]
>> 
>>   --Part
>>   Content-Type: application/mrb-consumer+xml
>> 
>>   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>>   <mrbconsumer version="1.0"
>>                xmlns="urn:ietf:params:xml:ns:mrb-consumer">
>>      [...]
>>   </mrbconsumer>
>> 
>>   --Part--
>> 
> 
> 
> [LM] I think we did it this way after a comment received on the list:
> Chris and I did the same for the examples in the MRB draft, for instance.
> If you think it might improve the readibility of the document we'll
> change this.
> 
> 
>> In both of these sections, just before the message listings, there is
>> a line containing only:
>> 
>>   o
>> 
> 
> 
> [LM] Probably a leftover, we'll remove it.
> 
> 
>> In the following message titles, "SDP" appears in lower case:
>> 
>> section 7.2.2.1:
>>    3. MRB -> MS (INVITE sdp only)
>>    5. MRB <- MS (200 OK sdp)
>> section 7.2.2.2:
>>    5. MRB -> MS (INVITE sdp only)
>>    7. MRB <- MS (200 OK sdp)
>>    11. UAC <- AS (200 OK sdp)
>> 
>> item 47) section 7.2.3
>> 
>>   pick a MS rather than another.
>> --------^
>> Probably should be "one", to contrast with "another".
>> 
> 
> 
> [LM] OK.
> 
> 
>> item 48) section 7.2.3
>> 
>> This example does not give the content of the messages, unlike the
>> previous two examples.
>> 
> 
> 
> [LM] It's because in the IUMM mode no Consumer transaction is involved.
> It's a normal RFC6230 Control Channel negotiation where the MRB acts
> as an intermediary, that is, picking a MS for the AS according to some
> logic. In this case, in fact, the AS does not support the MRB
> specification, and so just tries to set up a control channel the way
> it knows.
> 
> 
>> item 49) section 7.3.1
>> 
>> This section is titled "Query/IAMM".  The call flow does mesh with the
>> call flow in section 7.2.1, "Query Mode", but it does not mesh with
>> the call flow in section 7.2.2.1, "Inline-aware Mode: CFW-based
>> approach" nor with the call flow in section 7.2.2.2, "Inline-aware
>> Mode: Media dialog-based approach".
>> 
>> It would probably be best to change the title of the section to
>> "Query".  If necessary, an additional section should be added giving
>> examples relevant to inline-aware mode.
>> 
>> item 50) section 7.3.1, section 7.3.2
>> 
>> The use of "IAMM" and "IUMM" is a bit opaque here, as those acronyms
>> are not explicitly expanded anywhere in this document.  They seem to
>> mean what is called "inline-aware mode" and "inline-unaware mode", but
>> the acronyms of those phrases aren't the same as the acronyms used.
>> 
>> Perhaps these section titles could be changed to resemble those of
>> 7.2.*, "7.3.1. Query and Inline-aware Mode" and "7.3.2. Inline-unaware
>> Mode".  That doesn't fix the problem with the acronyms per se but does
>> make the titles clearer.
>> 
> 
> 
> [LM] You're right about both comments, we'll try to make this clearer
> and more consistent across the document.
> 
> 
>> item 51) section 7.3.1
>> 
>> We might want to mention that in this scenario, the AS obtains
>> assignment of an MS *before* any UAC makes a request, in order to have
>> facilities to satisfy future SIP requests.  That is probably how AS's
>> operate in practice, but a naive reader might expect that the AS will
>> make the consumer request only after the AS receives a demand for its
>> services.
> 
> 
> [LM] Actually both Fig.53 and 54 show the AS creating a control channel
> before receiving an INVITE from the UAC. Or was your point about a
> different aspect?
> 
> 
>> 
>>   Nevertheless, there are cases when having an MRB in the signalling
>>   path ...
>> 
>> You might want to say "the SIP signalling path" here.  By my count,
>> there are *three* different signalling paths:  the COMEDIA negotiation
>> (INVITE with application/cfw SDP), the CFW connection, and the SIP
>> signalling (INVITE with audio/etc. SDP).
>> 
> 
> 
> [LM] OK.
> 
> 
>> item 52) section 7.3.2
>> 
>>   As mentioned previously, in such a case the AS would interact with
>> What case is "in such a case"?  (This is the first sentence of a
>> section.)  It seems that this paragraph is trying to contrast "such a
>> case" with "IUMM", but it's not clear what is going on.
>> 
> 
> 
> [LM] It's referring to the case described by the section title, which is
> a poor editing choice. We'll make this more explicit.
> 
> 
>>   That said, the IUMM case is also very interesting with respect to the
>>   media dialogs management.  In fact, in the MRB-unaware mode there
>> ---------^
>> This should be "dialog".
> 
> 
> [LM] OK.
> 
> 
>>   would be no Consumer request and an AS would actually see the MRB as
>>   an MS.  This means that, unlike the previous scenarios, there is
>>   actually no choice, meaning the MRB would likely be in the signaling
>> ------------^
>> What is there "no choice" of?  The obvious choice is that of a MS, but
>> the MRB clearly can choose which MS to sent the request to.
> 
> 
> [LM] Probably a poorly translated sentence, as this makes more sense in
> Italian. The sentence is trying to say that there is no active selection
> process driven by an AS<->MRB interaction so yes, something eventually
> leading to choosing a specific MS according to that. That's why the
> document then explains a potential approach to take care of this.
> 
> 
>>   path anyway.  The MRB could either redirect the AS to a MS directly
>>   or transparently act a proxy/B2BUA and contact a MS (according to
>>   implementation-specific policies) on behalf of the unaware AS.
>> 
>>   To overcome the scalability limitations of such an approach, the MR
>> --------------------------------------------------------------^
>> You should add here "at least in regard to the MRB being in the SIP
>> signalling path for all calls" -- as far as I can tell, this is the
>> only scaling problem this approach removes.  (The major one is that
>> all calls handled by the AS have to be handled by only one MS.)
>> 
> 
> 
> [LM] OK.
> 
> 
>>   Rather than recurring to explicit redirection, or always
>> ---------------^
>> This isn't the right word.  Perhaps "resorting" was intended?
>> 
> 
> 
> [LM] Yes, we'll fix this.
> 
> 
>> item 53) section 7.3.2
>> 
>>   While apparently not a problem, this raises an issue when the same
>>   unaware AS has several sessions with different MS: the AS would only
>>   see one "virtual" MS (the MRB) and so it would relay all calls there,
>>   making it hard for the MRB to understand where these media dialogs
>>   should belong: specifically, whether the UAC calling belongs to the
>>   AS application logic leading to MS1 or MS2, or wherever else.
>> 
>> This seems to be a deficiency in the CFW protocol:  If the AS
>> establishes a CFW channel with the MS (via a SIP URI to an MRB), and
>> then later the AS wants to addresses a SIP INVITE to the MS, it has no
>> choice but to use the same SIP URI (which routes to the MRB).  This
>> makes it impossible for the MRB to associate the SIP INVITE with the
>> CFW connection, and thus it is difficult for the MRB to route the
>> INVITE to the same MS.
>> 
>> What seems to be needed is for either the COMEDIA response
>> (application/cfw) or CFW connection to provide a SIP URI that is the
>> "real" SIP URI of the far-end of the CFW channel.
>> 
>> Actually, this seems to be a problem even if an AS is addressing an MS
>> URI, but the URI resolves to a redundant set of MSs:  There seems to
>> be no way to ensure that when a CFW channel is established that a
>> subsequent SIP INVITE can be sent to the same MS.  This issue seems to
>> be discussed in RFC 6230 section 3, but I can't find any solution
>> there.
>> 
> 
> 
> [LM] The way it works now is that, for a specific MS, the same SIP URI
> is used for both negotiating a control channel and attaching media
> dialogs, yes. A way to overcome this may having the MS redirect media
> dialogs to a different SIP URI when it receives them (that is, treat
> control and media dialogs differently) but I realize how this sounds
> like an implementation hack rather than a real solution.
> 
> 
>> item 54) section 8
>> 
>>   receiving requests that may cross the bounds each AS is constrained
>>   into.
>> ---^
>> Probably better as "within".
>> 
> 
> 
> [LM] OK.
> 
> 
>> item 55) section 8
>> 
>> The detailed discussion of how the MS enforces security against the
>> ASs is helpful, but it does not mention how the MS discerns which
>> requests come from AS1 and which come from AS2.
>> 
>> Dale
> 
> 
> [LM] Thanks again for your detailed review: this is exactly the kind of
> thorough feedback we were looking for, as so far we had to rely on our
> own, a bit biased and probably not very objective review process :-)
> 
> Lorenzo
> 
> 
>> _______________________________________________
>> MEDIACTRL mailing list
>> [email-masked]
>> https://www.ietf.org/mailman/listinfo/mediactrl
>> Supplemental Web Site:
>> http://www.standardstrack.com/ietf/mediactrl
> 
> 
> -- 
> Lorenzo Miniero, COB
> 
> Meetecho s.r.l.
> Web Conferencing and Collaboration Tools
> http://www.meetecho.com
> _______________________________________________
> MEDIACTRL mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/mediactrl
> Supplemental Web Site:
> http://www.standardstrack.com/ietf/mediactrl

---

From: Lorenzo Miniero <[email-masked]>
Date: Sat, 13 Apr 2013 09:51:42 +0200

Hello Eric,

there were some points in that thread where I asked for some more feedback, as I wasn't sure about the most apt way to go on. Anyway, I've already integrated the other comments, so I'll just publish that new version ASAP and take it from there.

L.

On Sat, 13 Apr 2013 02:57:23 -0400

-- 
Lorenzo Miniero, COB

Meetecho s.r.l.

---

From: Lorenzo Miniero <[email-masked]>
Date: Sat, 13 Apr 2013 19:28:48 +0200

Eric,

I just published a new version of the draft. I take the opportunity to thank Dale again for his tremendous work on reviewing the document!

What should be the way forward for the document now?

Thanks,
Lorenzo

On Sat, 13 Apr 2013 09:51:42 +0200

-- 
Lorenzo Miniero, COB

Meetecho s.r.l.

---

From: [email-masked] (Dale R. Worley)
Date: Mon, 15 Apr 2013 17:48:20 -0400 (EDT)

> From: Eric Burger <[email-masked]>
> 
> Are we done yet?

Looking over the messages, I see that I should have responded to
Lorenzo's message of 26 Dec
(http://www.ietf.org/mail-archive/web/mediactrl/current/msg01781.html).
Of course, most of the items have already been resolved, but there are
a few that need more discussion.

> Instructions about this would be welcome!

I think leaving it to the Editor may be the best, and the Editor will
have to worry about fitting the lines on the page anyway.  The Editor
probably as style conventions about indenting.

> those arrows are and what they are not. What do you think about this?

We might be able to choose a syntax that less resembles the
propagation of a message.  Perhaps this:

                     AS                                 MS
                     |                                  |
                     | 1. CONTROL (create conference)   |
                     |++++++++++++++++++++++++++++++++>>|
                     |                                  |-- create
                     |                                  |   conf and
                     |                                  |   its ID
                     |       2. 200 OK (conferenceid=Y) |
                     |<<++++++++++++++++++++++++++++++++|

That makes it clear that the MS is performing an action, but it does
not look like generating a message.

> [LM] Did you mean section 4.1? Section 4 starts with just a few lines.

Yes, you are right, I meant section 4.1.

> RFC6230, a 202 is basically a pre-REPORT message... any feedback on

The idea is that the MS is in the same state after sending the 202 as
it is after sending a subsequent update, because what it can do next
is the same, and so at least theoretically, the two states do not need
to be distinguished.

My idea is that the diagram could be simplified to look like this:

   +------------------+  CONTROL/-  +------------------+ API 202/202
   | Idle/'terminate' |------------>| CONTROL received |---------+
   +------------------+             +------------------+         |
     ^          ^   ^                  |     |                   |
     |          |   |   API 200/200    |     |                   |
     |          |   +------------------+     |                   |
     | 200/-    |      API Error/Error       |                   |
     |          +----------------------------+                   |
     |                                                           |
     |                                                           |
     |                      API terminate/                       v
   +------------------+     REPORT terminate      +-------------------+
   | 'terminate' sent |<--------------------------| command executing |
   +------------------+                           +-------------------+
                                                       ^        |     
                                                       |        | API update/
                                                       |        | REPORT update
                                                       |        |
                                                       |        |
                                                       |        |
                                                 200/- |        | 
                                                       |        v
                                                     +---------------+
                                                     | 'update' sent |
                                                     +---------------+

> which are Control Package specific. Do you think explaining this in the

I think an explanation in the text would be helpful, although if the
reader has a thorough understanding of what information is carried in
REPORT terminate they would deduce the answer.  Perhaps this
explanation would help those who are not completely familiar:

   The MS may send a 202 response after it determines that the request
   request contains no errors that cannot be reported in a later REPORT
   terminate request.  After the MS sends a 202 response, any error that
   it (or the API) finds in the request is reported in the final REPORT
   terminate request.

> that's incorrect or incomplete we'll fix this in the next version.

I've searched through all the RFCs for the term "comedia".  (The
results are summarized at the end of this message.)  What seems to
have happened is that "comedia" has become an abbreviation for
"connection-oriented media" (i.e., TCP and TLS) and also for two RFCs
regarding support for connection-oriented media (RFC 4145 and RFC
4572).

The problem is that the term seems to be very common among a small
audience centered on Mediactrl, but only among that audience, and
people inside that audience do not take care to define it clearly for
the benefit of people outside that audience.  For instance, RFC 5567
is "An Architectural Framework for Media Server Control" and uses
"comedia" in "... exploit floor control by means of a
Connection-Oriented Media (COMEDIA) [RFC4145] negotiation." but
"comedia" is not listed in its section 2, "Terminology".

I think this would be solved if "comedia" was listed in section 3,
"Terminology":

   COMEDIA:  connection-oriented media (i.e., TCP and TLS).  Also used to
      signify the support in SDP for connection-oriented media, and the
      RFCs that define that support (RFC 4145 and RFC 4572).

> reflected in the Call Flows as a consequence?

This looks complicated.  It seems that
draft-boulton-mmusic-sdp-control-package-attribute has not been
adopted as a working group draft and has expired.  If that is the
case, there will be no definition of the ctrl-package attribute, and
it shouldn't be used in the call-flows.

But if that is fixed, it seems that we can copy some text from
draft-boulton-mmusic-sdp-control-package-attribute to clarify this
paragraph.  I suggest splitting the paragraph, and amending the second
half like this:

   Note that the provided example also includes the indication, from
   both the AS and the MS, of the supported control packages.  This is
   achieved by means of a series of 'ctrl-package' attributes as
   specified in [I-D.boulton-mmusic-sdp-control-package-attribute].  In
   the example, the AS supports (or is only interested to) two packages:
   IVR (Interactive Voice Response) and Mixer (Conferencing and
   Bridging).  The MS replies with the list of packages it supports,
   adding a dummy example package to the list provided by the AS.

   It is worth noting that this exchange of information is only
   advisory and neither endpoint is committing to support the packages
   that are listed or to not supporting the packages that are not
   listed.  The actual negotiation of control packages is done
   subsequently through the use of the framework SYNC transaction
   within the control channel.  Nonetheless, the use of 'ctrl-package'
   attributes can be beneficial both from a resource allocation
   perspective and it could also result in two clients identifying
   they are not capable of successful control channel interactions.
   This would lead to early abandonment of control channel setup (for
   example, a client may choose to terminate the associated SIP dialog
   and not attempt to make the connection).

> just pick the active role and send a new SYNC with a new keep-alive

OK, that was my mistake, as I was confusing how the MRB mechanism
works with the more complicated SIP timeout mechanism.  But I think it
could be clarified by changing the two sentences to:

    In the previous section it has been described that the timeout
    value for the keep-alive mechanism is set by the SYNC request.
    Specifically, in the example the AS specified a value of 100
    seconds.

In particular, the timeout value is not *negotiated* between the AS
and MS, it is simply specified by whichever endpoint takes the active
role.

> MUST explicitly define the circumstances under which the server sends

Then the situation could be made clearer by writing:

    The 202+REPORT(s) mechanism is used whenever the MS wants to tell
    the AS that the requested operation might take more time than
    the limit specified in the definition of the Control Package.

> [LM] Do you mean as in different figures? or clearer text?

I made a mistake there; I should have said "figure 17".

The figure is a bit confusing, as there are either 3 or 4 SIP dialogs
involved, and the SIP messages are not marked to show which dialog
they are within.  (Depending on how the AS functions, the SIP from
UAC2 to AS may or may not be within the same dialog as the SIP from
UAC1 to AS.)  Someone familiar with AS/MS operation can guess which
messages are part of which dialogs, but it may be confusing for those
who are not familiar.  It might not be important in this context, but
in RFCs that come out of the SIP WGs, in a situation like this, the
different SIP dialogs are distinguished by specifying Call-Id values.
In this case, figure 17 would look like this:

   UAC(1)        UAC(2)                  AS                          MS
     |             |                     |                           |
     | INVITE (offer A)                  |                           |
     | Call-Id: A  |                     |                           |
     |---------------------------------->|                           |
     |             |          100 Trying |                           |
     |             |          Call-Id: A |                           |
     |<----------------------------------|                           |
     |             |   INVITE (no offer) |                           |
     |             |   Call-Id: B        |                           |
     |             |<--------------------|                           |
     |             | 180 Ringing         |                           |
     |             | Call-Id: B          |                           |
     |             |-------------------->|                           |
     |             |         180 Ringing |                           |
     |             |          Call-Id: A |                           |
     |<----------------------------------|                           |
     |             |                     | INVITE (offer A)          |
     |             |                     | Call-Id: C                |
     |             |                     |-------------------------->|
     |             |                     |         200 OK (offer A') |
     |             |                     |         Call-Id: C        |
     |             |                     |<--------------------------|
     |             |                     | ACK                       |
     |             |                     | Call-Id: C                |
     |             |                     |-------------------------->|
     |             | 200 OK (offer B)    |                           |
     |             | Call-Id: B          |                           |
     |             |-------------------->|                           |
     |             |                     | INVITE (offer B)          |
     |             |                     | Call-Id: D                |
     |             |                     |-------------------------->|
     |             |                     |         200 OK (offer B') |
     |             |                     |         Call-Id: D        |
     |             |                     |<--------------------------|
     |             |                     | ACK                       |
     |             |                     | Call-Id: D                |
     |             |                     |-------------------------->|
     |             |      ACK (offer B') |                           |
     |             |      Call-Id: B     |                           |
     |             |<--------------------|                           |
     |             |   200 OK (offer A') |                           |
     |             |   Call-Id: A        |                           |
     |<----------------------------------|                           |
     | ACK         |                     |                           |
     | Call-Id: A  |                     |                           |
     |---------------------------------->|                           |
     |             |                     |                           |
     .             .                     .                           .
     .             .                     .                           .

(If the AS acts like a proxy between UAC1 and UAC2 rather than a
B2BUA, then "Call-Id: B" is replaced with "Call-Id: A" throughout.)

> be applied to both cases, nothing naive in this :-)

OK, I see the point of the example.

But I see another issue:  It might help to add to section 3:

   VCR controls:  runtime control of aspects of an audio playback like
      speed and volume, via DTMF signals sent by the user, in a manner that
      resembles the functions of a VCR (video cassette recorder) controller.

> realize similar scenarios in a different way!

Yes, let us ask implementers what they think is clearer.

> IVR authors, any insight on this from a specification point of view?

Now that I think about it more, I think the usual terminology is that
the gain is seen as the difference between the input and the output,
and "setting" it means fixing the gain at a specific number.  However,
in many usages, a number prefixed by "+" or "-" is used to mean an
increment/decrement relative to the previous value.  What misleads me
is that the setgain operations are shown as implementations of the *1
and *9 requests, which are *incremental*.  The possibility of
misunderstanding could be removed by adding a comment.

(Also, I think that each bullet point should be shown as sentences,
that is, starting with a capital letter and ending with a period,
rather than many clauses separated by ";".  Here, I have left the
paragraphs un-filled to make my change clearer; you probably want to
fill the entire bullet point.)

   o  The AS ACKs the event (B2), and in its business logic understands
      that the code '*1' means that the UAC wants its own volume to be
      lowered in the conference mix.  The AS is able to associate the
      event with the right UAC by referring to the attached dialogid
      (01d1b38).  It then acts accordingly, by sending a <modifyjoin>
      (C1) which does exactly this: the provided <stream> child element
      instructs the MS to modify the volume of the UAC-->conference
      audio flow (setgain=-5dB sendonly).
      Notice that the "setgain" value is the absolute volume level; if
      the user's request is to lower the volume level, the AS must
      remember the previously set volume level and from it calculate
      the new volume level.
      Notice how the request also
      includes directives upon the inverse direction.  This verbose
      approach is needed, since otherwise the MS would not only change
      the volume in the requested direction, but also disable the media
      flow in the other direction; having a proper <stream> addressing
      the UAC<--conf media flow as well ensures that this doesn't
      happen.

Since we have clarified the situation with the first "setgain", there
is no need to repeat the clarification for the second "setgain".

> [LM] [...] Besides, ASs sounds really bad... :-)

Ah, yes, I overlooked that.  :-)

> If you think it might improve the readability of the document we'll
> change this.

I can't find the message that you mention, although the change is
clear between draft-ietf-mediactrl-mrb-03 and -04.  For example:

   1. AS -> MRB (INVITE multipart/mixed)
   -------------------------------------
      [..]
      Content-Type: multipart/mixed; \
			     boundary="----=_Part_0_19138361.1261662356915"

      ------=_Part_0_19138361.1261662356915
      Content-Type: application/sdp

      v=0

becomes

   1. AS -> MRB (INVITE multipart/mixed)
   -------------------------------------
      [..]
      Content-Type: multipart/mixed;boundary="=_Part"

      =_Part

      v=0

But you could make the example both easy to read and formally correct
by just using "Part" as the boundary value (because no body line
starts with "--Part"):

   1. AS -> MRB (INVITE multipart/mixed)
   -------------------------------------
      [..]
      Content-Type: multipart/mixed;boundary="Part"

      --Part

      v=0

> before receiving an INVITE from the UAC. Or was your point about a

I think my point was that you might want to call out in the text that
the AS creates a control channel to a chosen MS *before* it has any
requests to service.

> like an implementation hack rather than a real solution.

If an AS is contacting an MS directly, then there is not much of a
problem with the AS using the same URI for negotiating CFW and for
establishing SIP dialogs.  But if the AS is contacting an MRB and the
MRB is contacting an MS, when the MRB receives the SIP INVITE, it must
be able to determine that the AS wants to have the INVITE forwarded to
the same MS to which the MRB forwarded the CFW previously.  How does
the MRB determine that the AS intends the INVITE to go to the same
destination as a particular CFW channel?

> > requests come from AS1 and which come from AS2.

I did not see a response to this issue.

----------------------------------------------------------------------

Summary of uses of "comedia" in published RFCs

RFC 4145 does not contain the term "comedia" at all, although its
short title is "Connection-Oriented Media".

RFC 4571 uses "comedia" only as the name of a Normative Reference to
RFC 4145.

RFC 4572 uses "comedia" only in the short title, "Comedia over TLS in
SDP".

RFC 4975 uses "comedia" only in this sentence:

   The mechanism was loosely based on the Connection-Oriented Media
   (COMEDIA) [26] work done by the MMUSIC working group.

Reference [26] is RFC 4145.

RFC 5567 uses "comedia" only in this sentence:

   [RFC4583] provides a way for SIP UAs to set up a BFCP connection
   towards the Floor Control Server and exploit floor control by means
   of a Connection-Oriented Media (COMEDIA) [RFC4145] negotiation.

RFC 5631 uses "comedia" only in these two sentences:

   This problem could be solved through the use of Connection-Oriented
   Media (COMEDIA) [26], which specifies the "setup" SDP attribute to
   negotiate these roles.

   Assuming it agreed to such a session, it responds with a "setup"
   attribute, as per the COMEDIA specifications.

Reference [26] is RFC 4145.

RFC 6135 uses "comedia" in many places, and includes a definition of
it in the abstract:

   [...] this model uses the connection-oriented media (COMEDIA)
   mechanism in order to create the MSRP transport connection.  The
   model allows MSRP UAs behind Network

RFC 6193 uses "comedia" only within the term "comedia-tls", which is
defined as:

   [...]  "Connection-Oriented Media Transport over the Transport
   Layer Security (TLS) Protocol in the Session Description Protocol
   (SDP)" [RFC4572] (hereafter referred to as comedia-tls) [...]

RFC 6230 uses "comedia" to refer to RFC 4145, and to the SDP attribute
"a=setup".

   The Connection-Oriented Media (COMEDIA) [RFC4145] specification for
   setting up and maintaining reliable connections is used as part of
   the negotiation mechanism (more detail available in later
   sections).

   If the Client initiating the SDP offer has a COMEDIA 'setup'
   attribute equal to active, [...]

RFC 6787 uses "comedia" to refer to RFC 4572:

   When using TLS, the SDP "m=" line for the control stream MUST
   conform to Connection-Oriented Media (COMEDIA) over TLS [RFC4572],
   which specifies the usage of SDP for establishing a secure
   connection-oriented transport over TLS.

RFC 6917 uses "comedia" in two places to refer to SDP support for
connection-oriented media.

----------------------------------------------------------------------

Dale

---

From: Lorenzo Miniero <[email-masked]>
Date: Wed, 17 Apr 2013 17:24:04 +0200

Hello Dale,

thanks for the additional comments, I've added some replies inline
prefixed by [LM2],

L.

Il giorno Mon, 15 Apr 2013 17:48:20 -0400 (EDT)
[email-masked] (Dale R. Worley) ha scritto:

> > > The indentation of the header lines identifying various messages
> > > is inconsistent.  I can find the following lines in various
> > > places:
> > [...]
> >
> > [LM] You're right, the indentation often varies, and the logic
> > behind this currently is according to whether or not the example
> > fits the page. Instructions about this would be welcome!
> 

[LM2] Ok.

> > > item 2) various
> > > 
> > > There are a lot of places where an arrow seems to go from a
> > > network entity to itself, such as "create conf and its ID" below:
> > > 
> > >                     AS                                 MS
> > >                     |                                  |
> > >                     |                                  |  | conf
> > > and |       2. 200 OK (conferenceid=Y) |<-+ its ID
> > [LM] Yes, in that case the arrow was not meant as a network
> > connection, but as a further step in the sequence diagram, that is
> > what that CONTROL message triggers in the MS application logic. The
> > same applies to all the examples where this happens. If you think
> > the arrowless diagram is clearer to the reader we might remove
> > them: the problem with this is that, without arrows, some diagrams
> > might be harder to read, i.e., in terms of who does what in
> > diagrams with several components interacting with each other. As an
> > alternative, we might clarify what those arrows are and what they
> > are not. What do you think about this?
> 

[LM2] I've added some text in the "Conventions" section to clarify what
those arrows mean:

	Besides, also note that a few diagrams present arrows that go
	from a network entity to itself. It's worth pointing out that
	such arrows do not represent any transaction message, but are
	rather meant as an indication to the reader that the involved
	network entity took a decision, within its application logic,
	according to the input it previously received.

Do you think that may suffice?

> > > item 7) section 4
> > > 
> > > This section starts with a paragraph over one page long.  Could
> > > it be broken into multiple paragraphs?
> > 

[LM2] Ok, I'll try and make it more readable.

> > > - The states "'202' sent" and "'update' sent" have the same
> > > outgoing transitions, so they should probably be merged.
> > 
> > [LM] I'm not sure about this: 202 is only sent after the first
> > CONTROL message to tell the AS it may take a while to process the
> > request, after which you can either have further 202 messages
> > should the processing take even more time, or one or more UPDATE
> > messages related to that CONTROL request after that. They're two
> > different messages in the protocol semantics. Nevertheless, it's
> > also true that, according to RFC6230, a 202 is basically a
> > pre-REPORT message... any feedback on this?
> 
>    +------------------+     REPORT terminate
> +-------------------+ | 'terminate' sent
> |<--------------------------| command executing |
> ^        | |        | API update/
> REPORT update |        |

[LM2] That indeed looks much "cleaner" than what we have now. I'll have
to check whether it actually addresses all the transitions we envisaged
when first drawing the diagram that ended up in the draft.

> > > - What happens if the API detects an error after 202 has been
> > > sent? There is no "API Error" arc from "'202' sent"/"'update'
> > > confirmed".
> > 
> > [LM] Good point. The idea is that, once the MS sends a 202, the
> > request has been correctly processed, and so is supposed to be fine
> > as far as the protocol is concerned. I guess there could be
> > circumstances when an errors occurs after that, e.g., in retrieving
> > an audio file to be played to a UAC: in that case, the AS would be
> > informed of the termination of the dialog/request in a REPORT
> > terminate, including details on the issue which are Control Package
> > specific. Do you think explaining this in the text may help readers?
> 
>    request contains no errors that cannot be reported in a later
> REPORT terminate request.  After the MS sends a 202 response, any
> error that it (or the API) finds in the request is reported in the
> final REPORT terminate request.
> 

[LM2] Thanks, I've added the explaination in place of the text I put
there in the latest version, as yours is clearer.

> > > item 12) section 5
> > > 
> > > The term "COMEDIA" is used, and a reference is given to RFC
> > > 4145.  But that RFC does not use the term "COMEDIA" at all.  The
> > > framework I-D also uses "COMEDIA" without explicitly defining
> > > it.  It would be helpful to insert here a definition of
> > > "COMEDIA", which seems to be synonymous with "media of type
> > > application/cfw".
> > 
> > "connection-oriented media". Even the MSRP RFC refers to it that
> > way. If that's incorrect or incomplete we'll fix this in the next
> > version.
> 
>    COMEDIA:  connection-oriented media (i.e., TCP and TLS).  Also
> used to signify the support in SDP for connection-oriented media, and
> the RFCs that define that support (RFC 4145 and RFC 4572).
> 

[LM2] Ok, I already expanded COMEDIA upon its first occurrence, but
also specifying it in the terminology is probably better.

> > > item 15) section 5.1
> > > > [...]
> > > This confuses me:  Either the list of packages in the SDP
> > > offer/answer is significant or it is not.  If it is not, why is
> > > it provided? [...]
> > 
> > mechanism should be addressed in the specification. Chris, do you
> > think this behaviour could be clarified in the draft, in order to
> > have it reflected in the Call Flows as a consequence?
> 
>    specified in [I-D.boulton-mmusic-sdp-control-package-attribute].
> In the example, the AS supports (or is only interested to) two
> packages: IVR (Interactive Voice Response) and Mixer (Conferencing and

[LM2] Ok, I'll do something like that should the issue with the expired
document be fixed.

> > > item 17) section 5.3
> > > 
> > >    In the previous section it has been described how a timeout
> > > value for the keep alive mechanism is negotiated.  Specifically,
> > > in the example the AS and the MS agreed on a value of 100
> > > seconds.  
> > > 
> > > In fact, that section does not describe how the value is
> > > negotiated (since it is not clear what happens if the MS dislikes
> > > the value proposed by the AS).  However, this is correct:
> > > 
> > >    In example in the previous section, the AS and the MS agreed
> > > on a value of 100 seconds.
> > 
> > keep-alive value proposed in the original SYNC. Who sends the SYNC
> > can change according to the COMEDIA negotiation. Specifically, "The
> > previous steps ensure that the entity initiating the Control
> > Channel connection is always the one specifying the keep-alive
> > timeout period.". So, to answer your question, I guess that if a MS
> > dislikes the value, it can just pick the active role and send a new
> > SYNC with a new keep-alive value.
> 

[LM2] Ok.

> > > item 22) section 6.1.2
> > > 
> > >    The 202+REPORT(s) mechanism is used whenever the MS wants to
> > > tell the AS that the requested operation might take some more
> > > time than expected.
> > 
> > [LM] Actually, the time is Control Package dependent. Different
> > packages may have different timeouts. Quoting the framework, "A
> > Control Package MUST explicitly define the circumstances under
> > which the server sends 200 and 202 messages."
> 

[LM2] Ok.

>    UAC(1)        UAC(2)                  AS
> MS |             |                     |                           |

[LM2] Thanks for the hint, I've updated the diagram.

> > > item 35) section 6.4
> > > 
> > > The discussion of mixing in the background music should be
> > > contrasted with the mixing of the two recordings during playback
> > > in section 6.2.3.  Naively, it would seem that the same mixing
> > > techniques could be used in both cases, but the two sections
> > > implement mixing in entirely different ways.
> > 
> > [LM] Are you talking of 6.4.2 (current time example)? If so, this
> > was done on purpose, to exploit two different scenarios to showcase
> > the use of two different techniques. You're right in saying that
> > the same could be applied to both cases, nothing naive in this :-)
> 
>       speed and volume, via DTMF signals sent by the user, in a
> manner that resembles the functions of a VCR (video cassette
> recorder) controller.
> 

[LM2] Ok.

> > > more-or-less as a type of parenthesis, and is needed only when
> > > (1) a "weight" or "repeat" attribute needs to be applied to the
> > > group, (2) delimiting one alternative of a <one-of> element, or
> > > (3) constructing the "null" regular expression (that consumes no
> > > input and always matches).  Thus, these examples can be
> > > simplified to:
> > > 
> > > Then again, if the example is taken from a real interaction,
> > > perhaps it is best to leave it as it really happened.
> > 
> > [LM] I'm not an expert of SRGS, so I'm not sure about this. This is
> > how we implemented it in our Media Server, and it works this way,
> > but it would be nice to hear from other implementers to see if they
> > usually realize similar scenarios in a different way!
> 
> > > This section leads to a question about the semantics of the
> > > <volume controltype="setgain" ...> operation:  Clearly, initially
> > > the stream is output at the same volume as the input media.  But
> > > when "<volume controltype='setgain' value='+1'>" is applied, does
> > > that cause the stream's output volume to be set to +1 dB
> > > *relative to the input media* or to +1 dB *relative to the
> > > previous volume setting*?
> > > 
> > > The text in draft-ietf-mediactrl-mixer-control-package-14 is not
> > > clear on this point: "setgain" is only discussed in section
> > > 4.2.2.5.1, and it says "use the value of the "value" attribute as
> > > a specific gain measured in dB to apply".  That would be most
> > > likely to mean "as a specific gain measured in dB to apply to the
> > > input", which suggests the first interpretation.
> > > 
> > [LM] If I recall correctly, when we first implemented this we
> > discussed it with the IVR authors during a meeting. If I'm not
> > wrong the conclusion was that setgain *sets* the gain, and does not
> > modify the previous value. I don't have the MS code in front of me
> > right now, though, I'll have to double check how we implemented
> > this and let you know.
> > 

[LM2] Good point, especially as I checked our implementation and it
works how I thought, that is, by setting the gain instead of
incrementing/decrementing it. I'll clarify that, to map it to an
incremental operation, it's up to the AS to remember the current
status and modify it accordingly when needed.

>    o  The AS ACKs the event (B2), and in its business logic
> understands that the code '*1' means that the UAC wants its own
> volume to be lowered in the conference mix.  The AS is able to
> associate the event with the right UAC by referring to the attached
> dialogid (01d1b38).  It then acts accordingly, by sending a
> <modifyjoin> (C1) which does exactly this: the provided <stream>
> child element instructs the MS to modify the volume of the
> UAC-->conference audio flow (setgain=-5dB sendonly).
>       the volume in the requested direction, but also disable the
> media flow in the other direction; having a proper <stream> addressing

[LM2] Ok.

> > > Generally, "AS" and "MS" are used as the plurals of "AS" and
> > > "MS", but in these instances, "ASs" and "MSs" are used.
> > 
> > >    Please note that, to ease the reading of the protocol
> > > contents, a simple '=_Part' is used whenever a boundary for a
> > > 'multipart/mixed' payload is provided, instead of the actual
> > > boundary that would be inserted in the SIP messages.
> > > 
> > > would result in figures that look like the following, which
> > > strictly correct and are just as easy to read:
> > > 
> > >    [..]
> > [LM] I think we did it this way after a comment received on the
> > list: Chris and I did the same for the examples in the MRB draft,
> > for instance. If you think it might improve the readability of the
> > document we'll change this.
> 

[LM2] Ok, I'll fix the boundary in all the examples.

> > > assignment of an MS *before* any UAC makes a request, in order to
> > > have facilities to satisfy future SIP requests.  That is probably
> > > how AS's operate in practice, but a naive reader might expect
> > > that the AS will make the consumer request only after the AS
> > > receives a demand for its services.
> > 
> > [LM] Actually both Fig.53 and 54 show the AS creating a control
> > channel before receiving an INVITE from the UAC. Or was your point
> > about a different aspect?
> 

[LM2] Ok, I'll clarify this at the beginning of the section.

> > > item 53) section 7.3.2
> > > 
> > >    While apparently not a problem, this raises an issue when the
> > > same unaware AS has several sessions with different MS: the AS
> > > would only see one "virtual" MS (the MRB) and so it would relay
> > > all calls there, making it hard for the MRB to understand where
> > > these media dialogs should belong: specifically, whether the UAC
> > > calling belongs to the AS application logic leading to MS1 or
> > > MS2, or wherever else.
> > > 
> > > establishes a CFW channel with the MS (via a SIP URI to an MRB),
> > > and then later the AS wants to addresses a SIP INVITE to the MS,
> > > it has no choice but to use the same SIP URI (which routes to the
> > > MRB).  This makes it impossible for the MRB to associate the SIP
> > > INVITE with the CFW connection, and thus it is difficult for the
> > > MRB to route the INVITE to the same MS.
> > > 
> > > (application/cfw) or CFW connection to provide a SIP URI that is
> > > the "real" SIP URI of the far-end of the CFW channel.
> > > 
> > > Actually, this seems to be a problem even if an AS is addressing
> > > an MS URI, but the URI resolves to a redundant set of MSs:  There
> > > seems to be no way to ensure that when a CFW channel is
> > > established that a subsequent SIP INVITE can be sent to the same
> > > MS.  This issue seems to be discussed in RFC 6230 section 3, but
> > > I can't find any solution there.
> > 
> > [LM] The way it works now is that, for a specific MS, the same SIP
> > URI is used for both negotiating a control channel and attaching
> > media dialogs, yes. A way to overcome this may having the MS
> > redirect media dialogs to a different SIP URI when it receives them
> > (that is, treat control and media dialogs differently) but I
> > realize how this sounds like an implementation hack rather than a
> > real solution.
> 

[LM2] If I recall correctly, we discussed this a few meetings ago, in
Anaheim, when I presented the MRB draft. The discussion eventually
resulted in sections 5.3 and 6 of the new MRB RFC
(http://tools.ietf.org/html/rfc6917). This is a link to the minutes:

   http://www.ietf.org/proceedings/77/minutes/mediactrl.htm

Considering it's the MRB that sends back the addresses to use to reach
the MS, if it wants to be in the signalling path, it can return
different SIP URIs, all managed by the MRB, that internally map to the
actual MS endpoints. If I'm not wrong, you also suggested using
something like SIP URI tags to make this work, but I can't find a match
in the minutes. Anyway, the issue is broader when you have the MRB
acting as a B2BUA rather than a proxy, as in that case you risk ending
up messing the connectionid identifiers that are used to address media
connections.

> > > item 55) section 8
> > > 
> > > The detailed discussion of how the MS enforces security against
> > > the ASs is helpful, but it does not mention how the MS discerns
> > > which requests come from AS1 and which come from AS2.
> 

[LM2] The AS and MS do a SYNC when they first set up the control
channel, and since it involves info coming from the SDP that allows a MS
to know that TCP connection comes from an AS in particular. Do you think
this needs to be clarified in the document? I'll add some brief text to
make this clearer.

Thanks!
Lorenzo

---

From: Lorenzo Miniero <[email-masked]>
Date: Tue, 23 Apr 2013 12:42:36 +0200

Hello Dale and all,

I published a revised version of the document, which incorporates all
the suggestions and fixes by Dale: the only thing I left out was the
revised state diagram, as I felt that, although the one by Dale was
cleaner, the one we had made it clearer that the fact that some
messages are actually sent, and there isn't only an internal API
transition within the node (e.g., "202 sent").

Lorenzo

Il giorno Wed, 17 Apr 2013 17:24:04 +0200
Lorenzo Miniero <[email-masked]> ha scritto:

> > Of course, most of the items have already been resolved, but there
> > are a few that need more discussion.
> > 
> > > > item 1) various
> > > > 
> > I think leaving it to the Editor may be the best, and the Editor
> > will have to worry about fitting the lines on the page anyway.  The
> > Editor probably as style conventions about indenting.
> > 
> 
> 
> [LM2] Ok.
> 
> 
> > > > item 2) various
> > > > 
> > > >                     |                                  |--+
> > > > create |                                  |  | conf
> > > what that CONTROL message triggers in the MS application logic.
> > > The same applies to all the examples where this happens. If you
> > > think the arrowless diagram is clearer to the reader we might
> > > remove them: the problem with this is that, without arrows, some
> > > diagrams might be harder to read, i.e., in terms of who does what
> > > in diagrams with several components interacting with each other.
> > > As an alternative, we might clarify what those arrows are and
> > > what they are not. What do you think about this?
> > 
> [LM2] I've added some text in the "Conventions" section to clarify
> what those arrows mean:
> 
> > The idea is that the MS is in the same state after sending the 202
> > as it is after sending a subsequent update, because what it can do
> > next is the same, and so at least theoretically, the two states do
> > not need to be distinguished.
> > 
> >                                                      | 'update'
> > sent | +---------------+
> [LM2] That indeed looks much "cleaner" than what we have now. I'll
> have to check whether it actually addresses all the transitions we
> envisaged when first drawing the diagram that ended up in the draft.
> 
> 
> > > request has been correctly processed, and so is supposed to be
> > > fine as far as the protocol is concerned. I guess there could be
> > > circumstances when an errors occurs after that, e.g., in
> > > retrieving an audio file to be played to a UAC: in that case, the
> > > AS would be informed of the termination of the dialog/request in
> > > a REPORT terminate, including details on the issue which are
> > > Control Package specific. Do you think explaining this in the
> > > text may help readers?
> > 
> > reader has a thorough understanding of what information is carried
> > in REPORT terminate they would deduce the answer.  Perhaps this
> >    The MS may send a 202 response after it determines that the
> > request request contains no errors that cannot be reported in a
> > later REPORT terminate request.  After the MS sends a 202 response,
> > any error that it (or the API) finds in the request is reported in
> > the final REPORT terminate request.
> > 
> 
> 
> > "connection-oriented media" (i.e., TCP and TLS) and also for two
> > RFCs regarding support for connection-oriented media (RFC 4145 and
> > RFC 4572).
> > 
> > people inside that audience do not take care to define it clearly
> > for the benefit of people outside that audience.  For instance, RFC
> > 5567 is "An Architectural Framework for Media Server Control" and
> > uses "comedia" in "... exploit floor control by means of a
> > used to signify the support in SDP for connection-oriented media,
> > and the RFCs that define that support (RFC 4145 and RFC 4572).
> > 
> 
> 
> > > [LM] That section refers to a draft Chris submitted to the MMUSIC
> > > WG some time ago:
> > > 
> > paragraph.  I suggest splitting the paragraph, and amending the
> > second half like this:
> > 
> >    both the AS and the MS, of the supported control packages.  This
> > is achieved by means of a series of 'ctrl-package' attributes as
> > packages: IVR (Interactive Voice Response) and Mixer (Conferencing
> > and Bridging).  The MS replies with the list of packages it
> > supports, adding a dummy example package to the list provided by
> > the AS.
> > 
> >    advisory and neither endpoint is committing to support the
> > packages that are listed or to not supporting the packages that are
> > not listed.  The actual negotiation of control packages is done
> >    within the control channel.  Nonetheless, the use of
> > 'ctrl-package' attributes can be beneficial both from a resource
> > allocation perspective and it could also result in two clients
> > identifying they are not capable of successful control channel
> > interactions. This would lead to early abandonment of control
> > channel setup (for example, a client may choose to terminate the
> > associated SIP dialog and not attempt to make the connection).
> > 
> 
> 
> [LM2] Ok, I'll do something like that should the issue with the
> expired document be fixed.
> 
> 
> > > > item 17) section 5.3
> > > > 
> > > > negotiated (since it is not clear what happens if the MS
> > > > dislikes the value proposed by the AS).  However, this is
> > > > correct:
> > > > 
> > > can change according to the COMEDIA negotiation. Specifically,
> > > "The previous steps ensure that the entity initiating the Control
> > > timeout period.". So, to answer your question, I guess that if a
> > > MS dislikes the value, it can just pick the active role and send
> > > a new SYNC with a new keep-alive value.
> > 
> > works with the more complicated SIP timeout mechanism.  But I think
> > it could be clarified by changing the two sentences to:
> > 
> > and MS, it is simply specified by whichever endpoint takes the
> > active role.
> > 
> 
> 
> [LM2] Ok.
> 
> 
> > > > item 22) section 6.1.2
> > > > 
> > tell the AS that the requested operation might take more time than
> > The figure is a bit confusing, as there are either 3 or 4 SIP
> > dialogs involved, and the SIP messages are not marked to show which
> > dialog they are within.  (Depending on how the AS functions, the
> > SIP from UAC2 to AS may or may not be within the same dialog as the
> > SIP from UAC1 to AS.)  Someone familiar with AS/MS operation can
> > guess which messages are part of which dialogs, but it may be
> > confusing for those who are not familiar.  It might not be
> > important in this context, but in RFCs that come out of the SIP
> > WGs, in a situation like this, the different SIP dialogs are
> > distinguished by specifying Call-Id values. In this case, figure 17
> > would look like this:
> > 
> >    UAC(1)        UAC(2)                  AS
> > MS |             |                     |                           |
> >      | INVITE (offer A)
> > |                           | | Call-Id: A  |
> > |                           |
> > |<----------------------------------|                           | |
> > ACK         |                     |                           | |
> > Call-Id: A  |                     |                           |
> > | .             .                     .                           . .             .                     .                           .
> > > was done on purpose, to exploit two different scenarios to
> > > showcase the use of two different techniques. You're right in
> > > saying that the same could be applied to both cases, nothing
> > > naive in this :-)
> > 
> >    VCR controls:  runtime control of aspects of an audio playback
> > like speed and volume, via DTMF signals sent by the user, in a
> > > > As far as I can tell from the SRGS specification, <item>
> > > > functions more-or-less as a type of parenthesis, and is needed
> > > > only when (1) a "weight" or "repeat" attribute needs to be
> > > > applied to the group, (2) delimiting one alternative of a
> > > > <one-of> element, or (3) constructing the "null" regular
> > > > expression (that consumes no input and always matches).  Thus,
> > > > these examples can be simplified to:
> > > > 
> > > [LM] I'm not an expert of SRGS, so I'm not sure about this. This
> > > is how we implemented it in our Media Server, and it works this
> > > way, but it would be nice to hear from other implementers to see
> > > if they usually realize similar scenarios in a different way!
> > 
> > > > <volume controltype="setgain" ...> operation:  Clearly,
> > > > initially the stream is output at the same volume as the input
> > > > media.  But when "<volume controltype='setgain' value='+1'>" is
> > > > applied, does that cause the stream's output volume to be set
> > > > to +1 dB *relative to the input media* or to +1 dB *relative to
> > > > the previous volume setting*?
> > > > 
> > > > E.g., if I apply that operation twice, does the second
> > > > application leave the amplification at +1 dB or raise it to +2
> > > > dB?
> > > > 
> > > > 4.2.2.5.1, and it says "use the value of the "value" attribute
> > > > as a specific gain measured in dB to apply".  That would be most
> > > > likely to mean "as a specific gain measured in dB to apply to
> > > > the input", which suggests the first interpretation.
> > > > 
> > > wrong the conclusion was that setgain *sets* the gain, and does
> > > not modify the previous value. I don't have the MS code in front
> > > of me right now, though, I'll have to double check how we
> > > implemented this and let you know.
> > > 
> > Now that I think about it more, I think the usual terminology is
> > that the gain is seen as the difference between the input and the
> > output, and "setting" it means fixing the gain at a specific
> > number.  However, in many usages, a number prefixed by "+" or "-"
> > is used to mean an increment/decrement relative to the previous
> > value.  What misleads me is that the setgain operations are shown
> > as implementations of the *1 and *9 requests, which are
> > *incremental*.  The possibility of misunderstanding could be
> > removed by adding a comment.
> > 
> 
> 
> >       Notice that the "setgain" value is the absolute volume level;
> > if the user's request is to lower the volume level, the AS must
> >       approach is needed, since otherwise the MS would not only
> > change the volume in the requested direction, but also disable the
> > media flow in the other direction; having a proper <stream>
> > addressing the UAC<--conf media flow as well ensures that this
> > doesn't happen.
> > 
> > Since we have clarified the situation with the first "setgain",
> > there is no need to repeat the clarification for the second
> > "setgain".
> > 
> 
> 
> [LM2] Ok.
> 
> 
> > > > This seems like a poor strategy, as the resulting figures are
> > > > not strictly correct.  Perhaps use "Part" as the boundary
> > > > value, which would result in figures that look like the
> > > > following, which strictly correct and are just as easy to read:
> > > > 
> > > >    [..]
> > But you could make the example both easy to read and formally
> > correct by just using "Part" as the boundary value (because no body
> > line starts with "--Part"):
> > 
> > > > assignment of an MS *before* any UAC makes a request, in order
> > > > to have facilities to satisfy future SIP requests.  That is
> > > > probably how AS's operate in practice, but a naive reader might
> > > > expect that the AS will make the consumer request only after
> > > > the AS receives a demand for its services.
> > > 
> > I think my point was that you might want to call out in the text
> > that the AS creates a control channel to a chosen MS *before* it
> > has any requests to service.
> > 
> 
> 
> > > > it has no choice but to use the same SIP URI (which routes to
> > > > the MRB).  This makes it impossible for the MRB to associate
> > > > the SIP INVITE with the CFW connection, and thus it is
> > > > difficult for the MRB to route the INVITE to the same MS.
> > > > 
> > > > an MS URI, but the URI resolves to a redundant set of MSs:
> > > > There seems to be no way to ensure that when a CFW channel is
> > > redirect media dialogs to a different SIP URI when it receives
> > > them (that is, treat control and media dialogs differently) but I
> > establishing SIP dialogs.  But if the AS is contacting an MRB and
> > the MRB is contacting an MS, when the MRB receives the SIP INVITE,
> > it must be able to determine that the AS wants to have the INVITE
> > forwarded to the same MS to which the MRB forwarded the CFW
> > previously.  How does the MRB determine that the AS intends the
> > INVITE to go to the same destination as a particular CFW channel?
> > 
> 
> 
> something like SIP URI tags to make this work, but I can't find a
> match in the minutes. Anyway, the issue is broader when you have the
> MRB acting as a B2BUA rather than a proxy, as in that case you risk
> ending up messing the connectionid identifiers that are used to
> address media connections.
> 
> 
> > > > item 55) section 8
> > > > 
> channel, and since it involves info coming from the SDP that allows a
> MS to know that TCP connection comes from an AS in particular. Do you
> think this needs to be clarified in the document? I'll add some brief
> text to make this clearer.
> 
> 
> Thanks!
> Lorenzo
> 
> 
> > RFC 4572 uses "comedia" only in the short title, "Comedia over TLS
> > in SDP".
> > 
> >    towards the Floor Control Server and exploit floor control by
> > means of a Connection-Oriented Media (COMEDIA) [RFC4145]
> > negotiation.
> > 
> >    This problem could be solved through the use of
> > Connection-Oriented Media (COMEDIA) [26], which specifies the
> > "setup" SDP attribute to negotiate these roles.
> > 
> > RFC 6230 uses "comedia" to refer to RFC 4145, and to the SDP
> > attribute "a=setup".
> > 
> >    The Connection-Oriented Media (COMEDIA) [RFC4145] specification
> > for setting up and maintaining reliable connections is used as part
> > of the negotiation mechanism (more detail available in later
> >    sections).
> > 
> >    conform to Connection-Oriented Media (COMEDIA) over TLS
> > [RFC4572], which specifies the usage of SDP for establishing a
> > secure connection-oriented transport over TLS.
> >