Tim, Raji, & Harsh,
Thanks for doing this review. See my comments below.
Thanks,
Alan
*From: *"Ross, Timothy I (Tim)" <[email protected]
<mailto:[email protected]>>
*Date: *July 3, 2009 12:47:20 AM JST
*To: *<[email protected] <mailto:[email protected]>>,
<[email protected] <mailto:[email protected]>>
*Cc: *"Chinnappa, Raji (Raji)" <[email protected]
<mailto:[email protected]>>, "Mendiratta, Harsh V (Harsh)"
<[email protected] <mailto:[email protected]>>
*Subject: **Review of draft-bliss-shared-appearances*
Hi Jason and Shida,
Alan asked if I would like to review the shared appearance draft.
Three of us got together and came up with these comments. Hope they help.
Generally the shared appearance looks good. We spent a couple of
weeks seeing how we would adopt it into our system, and it is a pretty
natural fit. There were a few places where we struggled a bit, and in
all but one (comment 3) we found solutions. The comments under “Main
Comments” address these struggles.
Main Comments:
1) The draft does not discuss Alice and Bob being on separate Proxies
(SIP trapezoid). This has a few subtleties:
a) If Bob is using TLS and his UA only accepts connections
from his own Proxy, then his UA will need to use a gruu (obtained from
Bob’s Proxy) when registering to Alice's Appearance Group. This means
that Bob's UA would need to register twice, once with his own proxy to
get a gruu, then again with Alice's proxy, passing the gruu as the
contact. The gruu would also be needed if Bob’s UA is non-routable.
b) Sip Messages to Bob's Bridged Appearance of Alice'
Appearance Group need to go through Alice's Proxy, so that Alice's
Proxy can see these calls and report their state to the Appearance
Agent. Separate Proxies need to be considered. Some cases:
i) INVITEs to Alice's AOR – no problem here
ii) INVITEwJoin from Alice to Bob -- This message is to Bob’s Contact
so would not normally go through Alice’s Proxy. This looks ok at
first, because this scenario requires that Alice’s UA PUBLISHes to the
Appearance Group before sending the INVITEwJoin. But this runs in to
trouble in later stages of the call where the Appearance Agent will
not receive a DSE PUBLISH ( 180 Ringing, 200 OK, BYE). In these later
stages, the Appearance Agent needs to get call state from the Alice’s
Proxy so it can send the DSE NOTIFYs to the appearance group UAs. This
can be solved with Bob obtaining a gruu from Alice’s Proxy, or by
Alice’s UA inserting a route header to route the call through Alice’s
Proxy.
iii) INVITEwReplaces from Alice to Carol – this is pretty much the
same problem as INVITEwJoin except here if Carol was on a separate
Proxy, her UA would not obtain a gruu from Alice’s Proxy, so a gruu
won’t make the INVITE traverse Alice’s Proxy. This has to use a route
header (at least that is all we can see)
iv) INVITE sent from Carol to Bob’s contact that was discovered
through Reg Event Package Subscription for Alice’s AOR -- Again the
same sort of problem, but this time, Carol’s UA would not know to add
a route header for Alice’s Proxy. Carol is not part of the Appearance
Group. Here if Bob’s Contact is a gruu from Alice’s Proxy, then
Alice’s Proxy would see the INVITE.
If Bob’s UA needs a gruu from Alice’s Proxy to solve 1.a.iv above, and
if Bob's UA is using TLS, then Bob’s UA will need to nest the gruus so
that an INVITE to his contact/gruu would go through both Alice's Proxy
and Bob's Proxy. This looks ok in the gruu draft. Bob would get a
gruu from his own Proxy, and then register with that gruu to Alice's
Proxy, asking for another gruu. The gruus should then nest. Then all
INVITES that end up on Bob’s Shared Appearance for Alice will traverse
Alice’s then Bob’s Proxy.
c) With separate proxies, we assume that when Bob's UA
registers with Alice's Appearance Group, Bob's proxy will authenticate
Bob's credentials, not Alice's, so that the REGISTER should traverse
Bob's proxy first. The REGISTER message can add a route header to
Bob's Proxy, but is this enough to ensure that Bob's Proxy does the
authentication, and that Alice's Proxy trusts it? Does authentication
on a trapezoidal REGISTER work the same way as a trapezoidal INVITE?
d) When Bob sends an INVITE on his shared appearance for
Alice’s Appearance Group the INVITE needs to go through Bob’s Proxy,
then Alice’s. Bob’s Proxy is needed to challenge Bob’s credentials,
and Alice’s Proxy is needed to report Call events to the Appearance
Agent. Bob’s Proxy can be traversed with a route header. Alice’s
Proxy is a bit trickier, and Bob’s Proxy would have to route the call
to Alice’s Proxy based on the “From” header or Contact (if a contact
parameter is defined to identify the contact as a Shared Appearance to
Alice (see end of comment 2))
I think that this all does work as long as Alice and Bob use GRUUs and
they use their GRUU from the initial registration as the Contact for
their 3rd party registration.
We should probably include some text in the draft about this.
2) The draft does not discuss (or we missed it) how Bob's
UA distinguishes its own calls from Alice's Appearance Group's calls.
We assume the "To" header is used, but this may lead to trouble.
Consider a call to "[email protected] <mailto:[email protected]>"
that is forwarded to Alice. When Bob's UA gets the call, the "To"
header will be "[email protected] <mailto:[email protected]>", and not
"[email protected] <mailto:[email protected]>". Bob's UA may then
need then to rely on history-info.
If it is legitimate for Carol to INVITE Bob's contact discovered
through a Registration Event Package Subscription to Alice’s AOR, then
it is difficult for Bob's UA to know that this is an INVITE to the
Shared Appearance, and not his regular appearance. The "To" header
would be for Bob's contact, and history-info would not mention Alice's
AOR.
A gruu could solve this problem because it contains Alice’s AOR, but
only if it is a public gruu.
Instead of relying on a combination of “To” header, history-info and
public gruu, Bob's UA could tag his Contact with a contact parameter
distinguishing the Contact as an "Alice Appearance Group" Contact (ex.
Contact: <[email protected]
<mailto:[email protected]>;[email protected]
<mailto:[email protected]>). This would put Bob's UA
in control of distinguishing incoming INVITES and not have it rely on
the rest of system. Adding an Appearance Group parameter to the
Contact does not have same problems that adding an appearance number
parameter has.
I think that either the From or the use of a different Contact URI (or
GRUU) should solve this.
3) The draft leverages the Dialog State Event ESC but restricts the
DSE PUBLISHes sent by the UAs. This terse PUBLISHing seems to
conflict with the ESC/PUBLISH RFC (3903). The Shared Appearance draft
states that "In some cases, the Appearance Agent may not have full
access to the complete dialog state of some or all of the UAs in the
group. If this is the case, the Appearance Agent will subscribe to the
dialog state of individual UAs in the group to obtain this
information." This seems to require that the appearance agent (an
extended DSE ESC) subscribe to the group UAs, while our reading of
3903 for DSEs would have the UAs publish all these events by default.
This is not the normal mode for this feature. The normal mode is that
UAs PUBLISH, but not for every dialog state event.
Reducing the PUBLISH traffic is a great idea, but I think it belongs
within the definition of DSE ESCs and not just in the shared
appearance draft. All DSE ESC’s have this same traffic problem.
There also may need to be some sort of query to allow UAs and
Appearance Agents to go into this terse mode, allowing default DSE
ESCs/UAs to work.
Does it help to think of this feature as having an implied filter for
dialog state events? This filter is such that most PUBLISHes don't get
sent, just the ones we are interested in.
This is really the only part of the draft that is giving us trouble.
We have already defined a DSE Event State Compositor, and all UAs
PUBLISH DSE events to it. Extending our DSE ECS to be an Appearance
Agent is a very natural fit, except that the terse PULISING in the
Shared Appearance draft seems to conflict with our interpretation of
what a DSE ESC and supporting UAs should be. We don’t know how to
resolve this while still following both RFC 3903 and the shared
appearance draft.
Less Main Comments:
4) Starting Appearance numbers with 0 confused me. When first seeing
this, I thought “0” may have special meaning like "no appearance". It
became clear that this was not so after further reading. I think
starting appearance numbers with “1” would be clearer.
I don't know - this draft has been around for many years, starting at
0. It might cause backwards compatibility problems if we change it now.
5) Example 10.1
In example 10.1, it would have been more interesting to
see Bob's registration/subscriptions to the Appearance Group
identified with Alice's AOR instead of seeing Alice’s
registrations/subscriptions. Bob’s registration (I think) would look
like a third party registration. And I assume it should challenge for
Bob's credentials, and not Alice's.
Yes, I have made this change, and it has created a discussion about 3rd
party registration.
6) Example 10.2
What happens if some one else, maybe another proxy adds an
alert-info to the message. Does the "Proxy" then add the "appearance"
parameter to that alert-info? Does it remove the previous alert-info
and add its own?
I added some text to cover this case. I think the proxy applies normal
Alert-Info policies - that is, keeps ones it trusts, strips ones it does
not.
6a) Example 10.2
"However, if Carol answers both Alice and Bob and keeps
both dialogs active, then the Appearance Agent will need to resolve
the situation by moving either Alice or Bob's dialog to a different
appearance." --> Shouldn't this end up being a joined call between
Alice, Bob and Carol?. Same as if Bob answered the call, the Alice
sent and INVITEwJoin?
This would be true if the media were mixed. However, if Carol does not
mix the media but keeps the two calls separate (i.e. one on hold, one
active), then this is different from the Join case.
7) Several of the examples are missing the dashed special
communications line between the proxy and the appearance agent
(<------>: like the dashed line between F1 and F2 in example 10.2).
Putting these in would clarify the examples. When reading it at
first, I was not sure if this special communication was missing, or
the PUBLISHes were missing. These are missing in Examples 10.3, 10.4,
10.5?, 10.6, 10.7, 10.9, 10.10, 10.11?, 10.13.
I tried to add them all in - let me know if I missed any.
8) Example 10.6
"Bob and Carol are in a dialog, created in one of the
previous two call flows" --> Previous example (10.5, one of the
“previous two call flows”) does not allocate appearance number, but
10.6 de-allocates it.
Right - fixed the reference.
9) Example 10.8.
I think this call from Bob is from a regular appearance,
not his shared appearance to Alice. I think this should be made
clear. I wasn't sure if it was from Bob’s shared appearance, or Bob’s
regular appearance.
Good catch - this was a mistake which has been fixed.
9a) Example 10.8
Shouldn't the DSE NOTIFY F16 be from [email protected]
<mailto:[email protected]> and not [email protected]
<mailto:[email protected]>?
I'm not sure if this is fixed or not with the renumbering of the
examples. Can you check?
10) Example 10.12 discusses outgoing/outgoing race condition.
Examples for the other two race conditions would be good.
Outgoing/Incoming and Incoming/Incoming. Depending on the
Proxy<--->Appearance agent link, outgoing/incoming may have problems
Good idea - I added the Incoming/Outgoing. The Incoming/Incoming one I
think would only happen if the Alert-Info appearance didn't match the
NOTIFY appearance, and this is mentioned in the text.
11) Appendix A
"For example, the proxy could fetch this information by
initiating a
SUBSCRIBE request with Expires: 0 to the Appearance Agent
for the AOR
to fetch the list of lines that are in use.
Alternatively, it could
act like a UA that is a part of the appearance group and
SUBSCRIBE to
the State-Agent like any other UA. " --> This has a small
outgoing/incoming race condition. Just after the proxy polls for a
free appearance number on an incoming INVITE, another UA could request
an appearance number with a DSE PUBLISH. That UA could pick and get
the same appearance number as the Proxy chooses from the DSE poll.
We got rid of this section.
12) Example 10.7
When Carol hangs up F48, does NOTIFY 52 show "terminated"
but strip out the appearance number? The appearance number is now in
use between Alice and Carol. I worry that if NOTIFY F52 shows
terminated with the same used appearance number, UAs may mistakenly
think the number is free.
I think we dealt with this race condition using the joined-dialog and
replaced-dialog elements. Let me know if you still think this is a problem.
Questions
Q1) Example 10.2
Can the Notifies F2 - F4 come after the INVITE F7? I
assume both ways work, and both are possible.
Yes, I included text saying this.
Trivial Comments
T1) Section 13.1 refers to 5.1.1 and 5.1.2. Neither one exists. Think
they actually mean 13.1.1 and 13.1.2
T2) page 5 (wording)
"The sharing or appearance of these lines between a number
of phones is what gives this feature its." -> its name.
T3) page 9 (wording)
"The Appearance Agent learns the group state
either dialog state publications from members." -> missing words
Thanks for the nits.
Harsh, Raji, Tim
Tim Ross
1-732-852-2104
[email protected] <mailto:[email protected]>
_______________________________________________
BLISS mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/bliss