[Geopriv] GEOPRIV Event Package Drafts (draft-ietf-geopriv-loc-filters, draft-polk-sip-location-get, and draft-winterbottom-sip-location-package)
Adam Roach <adam@nostrum.com> Thu, 24 July 2008 05:30 UTC
Return-Path: <geopriv-bounces@ietf.org>
X-Original-To: geopriv-archive@megatron.ietf.org
Delivered-To: ietfarch-geopriv-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 5A1963A681B; Wed, 23 Jul 2008 22:30:25 -0700 (PDT)
X-Original-To: geopriv@core3.amsl.com
Delivered-To: geopriv@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 3F43C3A67EF for <geopriv@core3.amsl.com>; Wed, 23 Jul 2008 22:30:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, SPF_PASS=-0.001]
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 J1OV-Kf7r8RG for <geopriv@core3.amsl.com>; Wed, 23 Jul 2008 22:30:22 -0700 (PDT)
Received: from nostrum.com (unknown [IPv6:2001:470:1f03:267::2]) by core3.amsl.com (Postfix) with ESMTP id 9BBAA3A681B for <geopriv@ietf.org>; Wed, 23 Jul 2008 22:30:21 -0700 (PDT)
Received: from hydra.local (ppp-70-249-155-253.dsl.rcsntx.swbell.net [70.249.155.253]) (authenticated bits=0) by nostrum.com (8.14.2/8.14.1) with ESMTP id m6O5UZtQ028552 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 24 Jul 2008 00:30:36 -0500 (CDT) (envelope-from adam@nostrum.com)
Message-ID: <48881375.3070701@nostrum.com>
Date: Thu, 24 Jul 2008 00:30:29 -0500
From: Adam Roach <adam@nostrum.com>
User-Agent: Thunderbird 2.0.0.14 (Macintosh/20080421)
MIME-Version: 1.0
To: GEOPRIV Working Group <geopriv@ietf.org>
Received-SPF: pass (nostrum.com: 70.249.155.253 is authenticated by a trusted mechanism)
X-Virus-Scanned: ClamAV 0.93.3/7808/Wed Jul 23 21:32:26 2008 on shaman.nostrum.com
X-Virus-Status: Clean
Cc: Rohan Mahy <rohan@ekabal.com>, James Polk <jmpolk@cisco.com>, James Winterbottom <james.winterbottom@andrew.com>
Subject: [Geopriv] GEOPRIV Event Package Drafts (draft-ietf-geopriv-loc-filters, draft-polk-sip-location-get, and draft-winterbottom-sip-location-package)
X-BeenThere: geopriv@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Geographic Location/Privacy <geopriv.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/geopriv>, <mailto:geopriv-request@ietf.org?subject=unsubscribe>
List-Archive: <https://www.ietf.org/mailman/private/geopriv>
List-Post: <mailto:geopriv@ietf.org>
List-Help: <mailto:geopriv-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/geopriv>, <mailto:geopriv-request@ietf.org?subject=subscribe>
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
Sender: geopriv-bounces@ietf.org
Errors-To: geopriv-bounces@ietf.org
Robert has asked me to review the RFC3265-related work currently underway in GEOPRIV, and to provide feedback where necessary. I'll preface this by saying that I am only dimly aware of the overall state of GEOPRIV and its documents, and I have not been following list discussion. Forgive me if I show naïvité in GEOPRIV-specific matters. On the other hand, I believe I can render an informed opinion on the RFC3265-related aspects of this work. My general impression, on first read, is that there is a lot of work underway that is either re-inventing solutions that are under development elsewhere; or developing point-solutions that are laser-specific to GEOPRIV problems, when generalized solutions can be developed with little or no additional effort. In the first case, I believe (based on the constituents involved) that the re-invention is being done because the ongoing work elsewhere doesn't *quite* meet GEOPRIV's requirements. I would argue that a more fruitful approach would be ensuring that the mechanisms under development in the various SIP working groups take GEOPRIV's requirements into consideration (or, where RFCs are already published, extending those mechanisms instead of reinventing them). In the second case, I suspect that there has simply been no need to consider whether particular approaches can be made general, so the entire concept has simply been ignored. Some specific examples (forgive the lack of rigor in the XML): draft-ietf-geopriv-loc-filters defines a novel format for conveying event filtering, even though mechanisms developed and being developed elsewhere can accomplish most of what is desired. I'll take the "initial list of Interesting Events" as a starting point. ------------------------------------------------------------ 1. the resource moves more than a specific distance horizontally or vertically since the last notification This is currently proposed to use something like: <location-filter> <movedHoriz uom="urn:ogc:def:uom:EPSG::9001">20</movedHoriz> <movedVert uom="urn:ogc:def:uom:EPSG::9001">3</movedVert> </location-filter> However, use of RFC4660/4661 would appear to be sufficient for this purpose. Keep in mind that RFC4660/4661 is *intended* to be extended by specific event packages to accommodate the specific data associated with those event packages. I'm going to throw out a strawman based on 4660/4661: <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com"> <trigger> <changed component="latlong" by="20"> /gp:geopriv/gp:location-info/gml:location/gml:coordinates </changed> </trigger> <trigger> <changed component="altitude" by="3"> /gp:geopriv/gp:location-info/gml:location/gml:coordinates </changed> </trigger> </filter> </filter-set> Because <gml:coordinates> is effectively a compound type, we're having to define a new "component" attribute for <changed>, but this seems a reasonable package-specific extension. (This would be cleaner if we could use xpath to point at a specific component of the coordinates, but I'm pretty sure you can't refer to sub-portions of CDATA with xpath). ------------------------------------------------------------ 2. the resource exceeds a specific speed This requires just a touch of extra work which, I'm happy to notice, someone has already brought to the GEOPRIV working group. I would propose that you leverage the new elements defined in draft-singh-geopriv-pidf-lo-dynamic; and, define a new attribute for the <changed> element, called "toMoreThan": <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com"> <trigger> <changed toMoreThan="3"> /gp:geopriv/gp:location-info/gml:speed </changed> </trigger> </filter> </filter-set> ------------------------------------------------------------ 3. the resource enters or exits one or more GML objects (for example, a set of 2-dimensional or 3-dimensional regions) included or referenced in the filter. This one is, admittedly, more tricky than the rest. However, I wouldn't abandon the event filter framework altogether here -- it was specifically designed to be extended with new trigger types. So, instead of wrapping the <enterOrExit> in the GEOPRIV-specific <location-filter>, things would work just as well with: <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com"> <trigger> <gp:enterOrExit> <my:Building> <gml:name>Building 10</gml:name> <gml:extentOf> <gml:Polygon srsName="urn:ogc:def:crs:EPSG::4326" xmlns:gml="http://www.opengis.net/gml"> <gml:exterior> <gml:LinearRing> <gml:posList 37.41188 -121.93243 37.41142 -121.93243 37.41142 -121.93132 37.41188 -121.93132 37.41188 -121.93243 </gml:posLis> </gml:LinearRing> </gml:exterior> </gml:Polygon> </gml:extentOf> </my:Building> </gp:enterOrExit> </trigger> </filter> </filter-set> ------------------------------------------------------------ 4. one or more of the values of the specified address labels has changed for the resource (for example, the A1 value of the civilAddress has changed from California to Nevada) This is the _exact_ kind of use case that RFC 4660/4661 was defined for: <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com"> <trigger> <changed>/gp:geopriv/gp:location-info/c1:civilAddress/c1:A1</changed> </trigger> <trigger> <changed>/gp:geopriv/gp:location-info/c1:civilAddress/c1:A2</changed> </trigger> <trigger> <changed>/gp:geopriv/gp:location-info/c1:civilAddress/c1:A3</changed> </trigger> <trigger> <changed>/gp:geopriv/gp:location-info/c1:civilAddress/c1:PC</changed> </trigger> </filter> </filter-set> ------------------------------------------------------------ 5. a mininum and maximum rate of reports regardless of movement Here, we leave the 4660/4661 work behind, and start looking at throttling. Specifically, I point to draft-niemi-sipping-event-throttle-06. Admittedly, that work does not yet take into account the prospect of forcing a minimum rate of reports, but that is exactly the kind of requirement that can be added with very little effort. So, for example, if notifications were to be sent no more frequently than once every 10 seconds, the SUBSCRIBE message would contain an Event header field looking something like this: Event: presence;throttle=10 (or, if the event package name ends up changing -- I'll comment on this below) Event: loc-event;throttle=10 Now, if we wanted to force updates to be sent even when they wouldn't otherwise happen, we can add another requirement to the ongoing throttle work. I imagine the solution would end up looking something like this (no more frequently than once every 10 seconds, and no less frequently than once every 60 seconds): Event: presence;throttle=10;force=60 or Event: loc-event;throttle=10;force=60 ------------------------------------------------------------ Turning now to draft-polk-sip-location-get-00; I'll use the various filter types in section 6 to guide the use cases: Filter #1 - specifies that a watcher wants location from a specific presentity/target, or a group of presentities/targets (i.e., a bulk transfer). This is a list subscription (RFC4662) with an ad-hoc URI list (draft-ietf-sip-uri-list-subscribe-02) and list subscribe bodies (draft-roach-sip-list-subscribe-bodies-00). It doesn't need to be a filter at all. (This approach also gets around the some of the restrictions documented in draft-polk-sip-location-get, such as having the same triggers for all the resources in the subscription). ------------------------------------------------------------ Filter #2 - specifies which location format the watcher wants returned in the NOTIFY (coordinate, civic, or future location format). The watcher can place a wildcard 'any' format that is available to the presentity Any filter specifying more than one locationURI will have all other filters applied to it within a dialog. This appears to be a straightforward application of the <include> and <exclude> elements from RFC4661. I'm concerned by suggestions that we might define a new set of enumerated choices, such as "geo-only", "civic-only", etc, when you can achieve these just fine with: <!-- civic only --> <what> <include type="xpath">/gp:geopriv/gp:location-info/c1:civilAddress</include> <exclude type="xpath">/gp:geopriv/gp:location-info/gml:location</exclude> </what> (and obvious variations on the theme). This is particularly nice, because it extends naturally without having to define tokens for every combination of location types one might want. ------------------------------------------------------------ Filter #3 - a watcher could want to specify that it wants the subscription to last over a period of time, or for a specific number of updates. This would be creating a dialog, to have the subscription last longer than a one_time_only location reply. I don't have a specific proposal here. However, I feel rather strongly that any solution to this kind of filter should be crafted so as to be general to all event packages instead of specific to GEOPRIV. I can easily imagine other event packages needing to do this in the future, and it would be unfortunate to force them to reinvent this particular wheel. ------------------------------------------------------------ Filter #4 - a watcher could specify exactly which elements of location it needs to have in the reply. I think this is most appropriately an extension of 4661; something like: <what> <include mandatory="true" type="xpath"> /gp:geopriv/gp:location-info/c1:civilAddress/c1:PC </include> <what> (where we define a new "mandatory" attribute to the <include> element, or something similar). ------------------------------------------------------------ Filter #5 - a watcher could add specifically which elements of location it wants to have in the reply, in other words, which location elements are optional to include (based on availability and permissions), but not mandatory to include in the notification. This is the RFC4661 <include> usage straight up. ------------------------------------------------------------ Filter #6 - filter for periodic intervals See the discussion of draft-niemi-sipping-event-throttle-06, above. ------------------------------------------------------------ Filter #7 - filter for triggered notifications Filter #8 - filter for what constitutes 'movement' in Filter#7, for example, how many feet did a target move since the last notification, or how many fractions of a degree did a target move since the last notification. These two filter appear to refer to most of the "Interesting Events" from draft-ietf-geopriv-loc-filters-02, discussed above. There may be some additional work necessary to specify units on the <trigger> predicates, but that should be straightforward work. ------------------------------------------------------------ Turning finally to draft-winterbottom-sip-location-package-00 -- I'm a bit befuddled by this work, and I'm relatively sure it's a lack of background on my part. My initial reaction is, "Why are we defining a new event package for this? Why are we using a different MIME type?" As far as I am aware, the information that is being conveyed is precisely information about a user's presence, and the format being used is precisely PIDF. How is this not RFC 3856? I'm sure there are good answers to these questions -- or at least, to the one about MIME types. I don't necessarily want them given in response to this email (as I can imaging they may be elementary for most WG participants). These reasons should, however, be addressed in the sip-location-package document itself -- I would suggest a "relationship to RFC 3856" section in the document. Also, please keep in mind that the change of MIME type does not necessitate a change to the event package type. It would be eminently reasonable to simply define how application/held+xml is used with RFC 3856. This would help save you the trouble of re-inventing that part of the wheel. (A casual read of the proposed loc-event event package currently being proposed doesn't reveal any implied requirements that make 3856 unsuitable). /a P.S. If you'll forgive a curmudgeonly comment that is quite squarely in the "bike shed painting" category -- Assuming GEOPRIV sees reason to define a new event package, "loc-event event package" is awkward to say and to type. And context makes it clear that it's an event package, so "-event" is completely redundant. What's wrong with calling the event package "location"? _______________________________________________ Geopriv mailing list Geopriv@ietf.org https://www.ietf.org/mailman/listinfo/geopriv
- [Geopriv] GEOPRIV Event Package Drafts (draft-iet… Adam Roach
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… James M. Polk
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Hannes Tschofenig
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Brian Rosen
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Brian Rosen
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Adam Roach
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Salvatore Loreto
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Adam Roach
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Rohan Mahy
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Adam Roach
- Re: [Geopriv] GEOPRIV Event Package Drafts (draft… Rohan Mahy