John
Thanks for the excellent review. I have comments in-line below
At 10:38 AM 11/26/2008, Elwell, John wrote:
Apologies that these comments are rather late:
Technical comments:
1. Why do we permit Geolocation in a PRACK request?
because I couldn't come up with a good enough reason to prohibit it
in any Method except ACK and CANCEL. My preference is to not allow
it in a BYE either, but I've received more than one comment that this
shouldn't be prevented - as there may be a use down the road that we
cannot foresee now.
Suppose the UAS
considers the location to be essential, but has some problem with it and
returns a 424 response. Where does this leave the reliable provisional
response that the PRACK request was supposed to be acknowledging?
The thinking is that any 424 rejection, where Location is mandated
(i.e., essential), overrides subsequent requests (i.e., transactions)
within the same Call-ID until the problem about the Location (it's
bad, it's invalid, it's not present, it can't be parsed, it can't be
dereferenced, etc) is resolved.
Is this something you do not agree with.
Removing PRACK from being allowed to carry a Geolocation header is
easy, I just need a good enough reason to do it.
A
similar problem has been discussed with SDP in a PRACK request, and a
less-than-perfect solution has been found. However, for SDP we had to
find a solution because SDP has been permitted in a PRACK request since
RFC 3262. With Geolocation we have the opportunity to disallow it in a
PRACK request, thereby avoiding the problem.
2. In the example in 5.1:
";inserted-by="[EMAIL PROTECTED]""
I don't think [EMAIL PROTECTED] is a valid hostport.
I coped this from what's allowed in a Via header, therefore I believe
it should be.
We could
reduce it to "atlanta.example.com", which is the same as the domain part
of the From URI, but then it would not be possible for a recipient to
distinguish whether it was inserted by the UAC or the proxy
[EMAIL PROTECTED] proxy.
Exactly the problem with not identifying the exact host who inserted
the location in the first place. This is an identifier to a
particular host that inserted a particular location to inform the
location recipient that determined the location was bad in order to
target the return e2e message at a particular host in the signaling
path that their location was considered bad and understand that host
(and no other host) need pay attention to the error code in the
locationErrorValue.
Moreover, if both the UAC and the proxy
insert a location with the same inserted-by
this would not happen, if this spec is followed. Each inserter= would
be different. Pragmatically, if they are not, then each will have to
act according to the error code.
, they would not be able to
distinguish which error code relates to the location they inserted.
yep, but that's their problem. Each host needs to identify themselves
uniquely for this reason, otherwise they suffer not knowing which
host this error is for, but will have to act as if it were both hosts.
In
this particular case LbyV is used, so location must have been inserted
by the UAC. Wouldn't it be more appropriate to use the UAC's own host
name (i.e., from its contact URI)
I mentioned this is copied from the Via header, so this ought to be
good enough. Let me know if it is not.
, or if it doesn't have one, its IP
address?
IP addresses will be overwritten by SBCs, pragmatically, so I'm not
sure this is enough of an identifier, do you?
Of course, if the IP address is behind a NAT it might not be
unique, and I suppose there is potential for conflict if the UAC is
behind two NATs.
yes - this is a concern
Have there been any discussions on this?
yes
It might
require more than just fixing the example - it might require more text
on UAC behaviour to address this issue.
given what you and I have said above, what merger of text would you suggest?
There are other instances in the document of inappropriate inserted-by
values.
I believe, though, that they are all consistent now. Any change will
be global also.
3. "If a UAC has already conveyed location in the original request of a
transaction, and wants to update its location information (for
whatever reason) after the original request is sent, or after a
dialog is created (regardless of how the UAC conveyed location
previously, as an LbyV or LbyR) - this is done by a UAC sending an
UPDATE request [RFC3311]"
I think we should change "transaction" to "INVITE dialog usage".
"Transaction" is certainly wrong. The question is whether we change it
to "dialog" or "INVITE dialog usage". I think UPDATE applies only to
INVITE dialog usages.
I'll accept your correction, and change the text to "INVITE dialog
usage" to be completely clear here.
4. "Unless stated otherwise by future standards-track publication(s), a
LbyR URI only has meaning within the Geolocation header field and
MUST NOT appear in any other SIP header field."
This is a requirement on the UAC or proxy, yet it appears in the section
on UAS behaviour.
yes - to guide the UAS to not pay attention to a LbyR URI anywhere
else than a Geolocation header. The point here is to disallow usage
of a Location URI in any header except the Geolocation header (i.e.,
not stuffed into another header).
5. "A
"used-for-routing" parameter MUST NOT ever be removed from a
locationValue in a request."
This appears in the section on UAS behaviour, yet I don't see that it is
relevant to a UAS.
this provides the UAS with strong guidance that a locationValue has
been used to make a routing decision. Since more than one
locationValue can be in a request, having this indication inside each
locationValue that was used for routing decisions gives the UAS an
indication - call it a history - of the path of the request towards the UAS.
From a historical point of view, this provides an after-the-fact
account of how each routing entity made its decision to route the
request. This was requested specifically from the emergency calling
folks so they can figure out if a particular routing entity made a
bad decision - optimistically believing they can modify routing
decisions for future/similar locations in requests.
The UAS is the recipient, and any passing on of
location information is outside the scope of this document. Also I don't
see how it is testable. If we need to make such a statement, I think it
should be in the proxy section.
6. "Additional locationValues inserted into a request SHOULD be placed
the order they were generated, and not rearranged."
Again we have a normative statement on UAC/proxy behaviour in the
section dealing with UAS behaviour.
this is specific to the answer in bullet #5, to give the UAS a path
of entities the request passed through, in order, so the UAS can
learn which location the request was routed to first, then which was
second <and so on>.
7. "Individual header parameters in any received locationValue MUST NOT
be modified or deleted in transit to the ultimate destination."
Again this appears in the section on UAS behaviour, and we should not
specify the transiting of location information by a UAS to elsewhere,
since that is outside the scope of this document.
but this is a *hint* at those nasty things called B2BUAs and SBCs...
8. "A UAS MUST be prepared to receive subsequent location updates from
the UAC, either LbyV or LbyR (regardless of how the UAS received
location previously from this UAC). The UAC will convey location
using the UPDATE [RFC3311] method to the UAS."
See also my earlier comment about INVITE dialog usages. I think this
paragraph too is only concerned with updates within the context of an
INVITE dialog usage.
I'll make the same correction to "INVITE dialog usages"
9. "This document makes it clear that if when there are more than one
location, each in the same PIDF-LO MUST be about the same Target
(identifier) and point at the same position on the earth."
I think "MUST" should be "must", because the normative requirement is
stated elsewhere.
ok
I'll also correct the "...that if when there..." part of the
sentence, given that it doesn't make much sense (oops).
This section is concerned only with UAS behaviour, so
cannot make normative statements applicable to the UAC or a proxy.
10. "All other entities MUST
ignore any locationErrorValue not directed towards them."
Again, this is in the section on UAS behaviour, so we can't make
normative requirements on other entities. Change "MUST" to "must" or
"are required to".
good suggestion
11. "The above example says that the Location Recipient is
server42.example.com, and this entity believes it cannot route this
message without knowing the "inserter="'s location."
server42.example.com could be a UAS - there is nothing to say it is a
proxy. Since a UAS cannot route, then change "route" to "handle", which
is more general purpose.
good suggestion
12. "o there MUST NOT be more than one locationErrorValue to the same
"inserter=" in the request."
and then later:
"The
error codes destined for the same inserter MUST NOT contradict the
meaning of the problem the Location Recipient had with a particular
locationValue."
I found these two statements contradictory.
yeah - thanks for catching this.
This is an artifact from the old way I proposed doing the location
error messages to the newer (and simpler) way of doing location error
messages. The former text is true, and the latter needs to be
modified or deleted.
The first seems to say only
one locationErrorValue per inserter, and the second seems to suggest
that you can have more than one.
13. "It is allowed, but NOT RECOMMENDED, for more than one SIP element
to
insert location into a request along its path."
and later:
"However, if location is already in a SIP request, a SIP server
SHOULD NOT add another LbyR that identifies the same target in the
PIDF-LO (in the <tuple-id> element) to the same request."
Isn't one of these statements redundant?
yep
In fact the first statement is
broader than the second statement, so I guess the second statement is
redundant. In other words, if it is not recommended that more than one
SIP element can insert location, then it follows that a second SIP
element should not add a second location identifying the same target.
correct
14. "However, if
the Geolocation header parameter "routing-allowed" is present and
set to "no", or is not present (knowing the default behavior is "no"
if not present, with or without a Geolocation header), SIP servers
MUST NOT view the contents of the LbyV message body."
Anything that receives a request is a SIP server, including a UAS. I
think "proxies" is intended here, or perhaps B2BUAs too. This is only
one example of "SIP server" or "SIP servers" throughout the document,
all of which need checking to see whether they are really intended to
include UASs.
yes, if any location recipient intermediary wants to view a location,
it *must* first look to see *if* it has permission to do so, and that
permission is in the "routing-allowed" header parameter. Is this not
clear? Does it need to be reworded to get this meaning across?
15. It is not clear to me that "MUST NOT view" is a testable
requirement. "MUST NOT route on" would be more appropriate.
Geopriv wants this to mean "MUST NOT view" fully knowing their are no
IETF police. The aim is to prevent viewing and then the potential
for storing and sending to a non-signaling path 3rd party would be
prevented (if the intermediary obeyed this spec).
Perhaps this is testable by demonstrating that if
"routing-allowed=no", that the message's location is immediately
removed from the intermediary's cache...?
16. "No type of SIP server can delete a "Routing-allowed" header
parameter,"
Should this be a MUST NOT statement?
fair point, I'll change the text
17. "but if one is not yet present, any SIP server MAY add a
"Routing-allowed" header parameter with the value set to "no" only."
This seems a rather pointless thing to do.
the intent from the Geopriv ID is to mandate the default behavior at
each intermediary (that follows this spec) to consider the policy
imposed by the originator of the request to be "no" unless the flag
is set to yes.
Why can't it be set to "yes"
if there was no location there previously (and therefore upstream
entities had not already used location for routing)?
This indication is meant to dissuade any location inserted by any
intermediary (meaning the UAC did not insert location in the first
place) from using its own policy to inform downstream entities of the
UAC's location. In other words, this text is meant to allow a UAC to
tell everyone downstream that "I don't want my location used for
routing, even if I did not include my location in this request - but
someone else did".
Does this make sense?
Does the text need to be changed to reflect this meaning (if the
existing text doesn't make this clear)?
18. "If there are any errors during dereferencing, or in
the PIDF-LO itself, the proxy will error the original request to the
UAC with a locationErrorValue indicating what the proxy concluded
was wrong with the location."
What does "will error" mean here? Does it mean return a 4xx/5xx/6xx
response code
a 424 only, but with a LocationErrorValue that's in section 4.3 of
the existing version.
, or does it mean wait for a downstream entity to return a
response code and insert a Geolocation-Error?
no, it does not mean this.
Nits
19. "The cid-url is defined in [RFC2392] to locate message body
parts. This URI type MUST be present in a SIP request if location
is transmitted LbyV only."
I think "only" should be deleted.
fair
20. In 4.3.5 on the subject of error 500:
"Action(s) to be taken by Geolocation-Error receiver to a 1XX:"
Change 1XX to 5XX.
good catch, thanks
21. In the example in 5.1:
"Contact: <sips:[EMAIL PROTECTED]>"
This is Alice's AOR (identical to what is in From) - it should be
different, i.e., a contact URI.
thanks, I'll change it
22. "understanding
that there are no IETF police"
Is this really an appropriate statement for an RFC? Delete.
<mumble> .... but I want to make a point here that this is what's going on....
Do you have an alternate text suggestion that conveys this meaning,
but isn't so blatant?
John
_______________________________________________
Sip mailing list https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip