Re: [sipcore] draft-ietf-sipcore-location-conveyance-04

"James M. Polk" <jmpolk@cisco.com> Wed, 27 October 2010 18:30 UTC

Return-Path: <jmpolk@cisco.com>
X-Original-To: sipcore@core3.amsl.com
Delivered-To: sipcore@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 787793A6844 for <sipcore@core3.amsl.com>; Wed, 27 Oct 2010 11:30:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.541
X-Spam-Level:
X-Spam-Status: No, score=-110.541 tagged_above=-999 required=5 tests=[AWL=0.058, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Yxoa1hJD2qgL for <sipcore@core3.amsl.com>; Wed, 27 Oct 2010 11:30:20 -0700 (PDT)
Received: from sj-iport-2.cisco.com (sj-iport-2.cisco.com [171.71.176.71]) by core3.amsl.com (Postfix) with ESMTP id C31F43A6828 for <sipcore@ietf.org>; Wed, 27 Oct 2010 11:30:20 -0700 (PDT)
Authentication-Results: sj-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-AV: E=Sophos;i="4.58,247,1286150400"; d="scan'208";a="287416747"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-2.cisco.com with ESMTP; 27 Oct 2010 18:32:11 +0000
Received: from jmpolk-wxp01.cisco.com (rcdn-jmpolk-8715.cisco.com [10.99.80.22]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o9RIWAKi005558; Wed, 27 Oct 2010 18:32:10 GMT
Message-Id: <201010271832.o9RIWAKi005558@sj-core-2.cisco.com>
X-Mailer: QUALCOMM Windows Eudora Version 7.1.0.9
Date: Wed, 27 Oct 2010 13:32:09 -0500
To: Paul Kyzivat <pkyzivat@cisco.com>, "James M. Polk (E-mail)" <jmpolk@cisco.com>, Jon Peterson <jon.peterson@neustar.biz>
From: "James M. Polk" <jmpolk@cisco.com>
In-Reply-To: <4CC78202.6090700@cisco.com>
References: <20101025195020.1DA5A3A68E5@core3.amsl.com> <4CC78202.6090700@cisco.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Cc: SIPCORE <sipcore@ietf.org>
Subject: Re: [sipcore] draft-ietf-sipcore-location-conveyance-04
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sipcore>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Oct 2010 18:30:22 -0000

Paul

in-line

At 08:36 PM 10/26/2010, Paul Kyzivat wrote:
>I took a quick look at the new version, and it seems to have cleanup 
>a lot. But there *still* seems to be a problem with the syntax. 
>(Interplay between ABNF and text.) From the text, I find:
>
>    The placement of the "routing-allowed" header field parameter,
>    strongly encouraged by [RFC5606], is outside the locationValue, and
>    MUST always be last in the header field value. The routing-allowed
>    parameter MUST be present, even when no locationValue is present.
>
>This is questionably supported by the ABNF:
>
>    Geolocation-header = "Geolocation" HCOLON Geolocation-value
>    Geolocation-value  = ( locationValue [ COMMA locationValue ] )
>                         / routing-param

the above, I believe - but am open to be corrected by those better at 
ABNF syntax that I, says

- the Geolocation header can optionally have one or more locationValues
        - which are where the location URIs go

- but that the Geolocation header *will* have a routing-param
        - which is the "routing-allowed" paramter that RFC 5606 wanted included

The text of the ID then says that only zero, one or two 
locationValues are allowed, which we all agreed to in Maastricht (in 
SIPCORE and ECRIT/GEOPRIV).

>    locationValue      =  LAQUOT locationURI RAQUOT
>                           *(SEMI geoloc-param)
>    locationURI        =  sip-URI / sips-URI / pres-URI
>                           / http-URI / HTTPS-URI
>                           / cid-url ; (from RFC 2392)
>                           / absoluteURI ; (from RFC 3261)
>    geoloc-param       =  generic-param;  (from RFC 3261)
>    routing-param      =  "routing-allowed" EQUAL "yes" / "no"
>
>It only works if you presume that there are separate occurrences of 
>GeoLocation-header in the message, one with just locations, another 
>with just the routing-param.

I don't get that part of your point, but I guess Martin's next 
message says I need to add a "COMMA" after the ']' but before the 
')'. Would this satisfy your issue?

>The routing-param certainly can't be "last in the header field 
>value" except in the degenerate sense, since it must be first and 
>only in a Geolocation-header.

If the routing-param was intended to be first, wouldn't it appear 
first on this line?

>    Geolocation-value  = ( locationValue [ COMMA locationValue ] )
>                         / routing-param

but it doesn't, so I'm confused.


>Below are some specific cases - both valid and invalid. In each case 
>I show some headers bracketed by "...". That is intended to mean 
>other headers in a message, but all in the same message. (And when I 
>show multiple headers, there could be other non-geoloc headers interleaved.)
>
>* The following are legal according to the above, and probably 
>within expected usage:
>
>...
>Geolocation: cid:foo@example.com
>Geolocation: routing-allowed=yes
>...
>
>...
>Geolocation: cid:foo@example.com,cid:bar@example.com
>Geolocation: routing-allowed=yes
>...
>
>...
>Geolocation: routing-allowed=no
>...
>
>* IIUC the following are allowed by the above both syntactically and 
>according to the text, but is presumably not *intended* to be valid. 
>(Its legal because the in each instance of Geolocation-header its last.)
>
>...
>Geolocation: routing-allowed=no
>Geolocation: routing-allowed=yes
>...
>
>The following is also allowed - I don't know if its intended or not:
>
>...
>Geolocation: routing-allowed=yes
>Geolocation: cid:foo@example.com,cid:bar@example.com
>...
>
>* The following is allowed by the ABNF though disallowed by the text:
>
>...
>Geolocation: cid:foo@example.com,cid:bar@example.com
>Geolocation: cid:baz@example.com
>...
>
>* The following is *not* allowed by the ABNF. I suspect it might be 
>intended to be valid, but I'm far from sure about it:
>
>...
>Geolocation: cid:foo@example.com,routing-allowed=yes
>...

to get this above example "allowed", would I correct the existing ABNF to be

>    Geolocation-value  = ( locationValue [ COMMA locationValue ] COMMA )
>                         / routing-param

?


>In addition to that, the text is very explicit that:
>
>    The routing-allowed
>    parameter MUST be present, even when no locationValue is present.
>
>but then it says:
>
>    If no routing-allowed parameter
>    is present in a SIP request, a SIP intermediary MAY insert this
>    value with a RECOMMENDED value of "no" by default.
>
>So its required, but we have rules to follow if its missing. But I 
>don't understand how it *can* be required, since the sender of the 
>request may not understand/support Geolocation and so won't include it.

What we're trying to do here is explicitly give instructions to SIP 
intermediary implementers to include the routing-allowed parameter if 
one isn't present, with a default value of =no.

>ISTM that in reality its only *required* if the is a locationValue 
>present, and is otherwise optional.

which is how most would read it if ...

>    If no routing-allowed parameter
>    is present in a SIP request, a SIP intermediary MAY insert this
>    value with a RECOMMENDED value of "no" by default.

... weren't present in the document. But, there is no permission to 
allow SIP intermediaries to add the routing-allowed parameter, which 
we wanted to cover.

>In that case, an intermediary that adds a locationValue not only 
>MAY, but presumably MUST add a missing routing-param if it adds a 
>locationValue.

We can get there (i.e., allow this) without stating this is a MUST, can't we?


>I have never understood why the routing-param is required to be last.

maybe it doesn't need to be, but it certainly is easier for 
monitoring/reading human to find if it is last when looking at a decode.

>  And as my examples show, its difficult/impossible to enforce this in ABNF.
>
>         Thanks,
>         Paul