RFC 6915

Flow Identity Extension for HTTP-Enabled Location Delivery (HELD)

πŸ“… published April 2013, from ietf

RFC 6915: Flow Identity Extension for HTTP-Enabled Location Delivery (HELD) πŸŽ€

Okay bestie, this one is by R. Bellis from Nominet UK, and it's a Standards Track doc dated April 2013 🌸 It's part of the ISSN 2070-1721 family. It updates RFC 6155 and doesn't list anything it obsoletes. Let's get into it πŸ’…

Abstract ✨

RFC 6155 gives HELD (HTTP-Enabled Location Delivery) an extension where you can use an IP address and port number to ask for a Device's location based on one individual packet flow πŸ¦‹

But some kinds of NAT need identifiers for both ends of the packet flow before the location request can be pinned down with no confusion at all 😭

So this document brings in an XML Schema and a URN Sub-Namespace for a Flow Identity Extension for HELD that handles that. It also updates RFC 6155 by deprecating the port number elements from that spec πŸ’–

Status of This Memo

This is an Internet Standards Track document πŸ”₯

It's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). More info on Internet Standards is in Section 2 of RFC 5741 ✨

For the current status, any errata, and how to give feedback, check http://www.rfc-editor.org/info/rfc6915 🧚

Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved 🌈

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stood on the publication date. Please read these carefully, because they're literally your rights and restrictions for this doc 🫢 Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License πŸ’œ

Table of Contents

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
2.  Conventions Used in This Document  . . . . . . . . . . . . . .  3
3.  Usage  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
4.  XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . .  5
5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  6
  5.1.  URN Sub-Namespace Registration for
        urn:ietf:params:xml:ns:geopriv:held:flow . . . . . . . . .  6
  5.2.  XML Schema Registration  . . . . . . . . . . . . . . . . .  7
6.  Privacy Considerations . . . . . . . . . . . . . . . . . . . .  7
7.  Security Considerations  . . . . . . . . . . . . . . . . . . .  8
8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  8
9.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  8
  9.1. Normative References  . . . . . . . . . . . . . . . . . . .  8
  9.2. Informative References  . . . . . . . . . . . . . . . . . .  8

1. Introduction ✨

Okay so the Emergency Location Task Group at NICC Standards Limited (the UK's telecoms industry standards body) is the reason port number identifiers got added to HELD Identity [RFC6155]. That lets HELD [RFC5985] requests work for Devices that sit behind NAT devices 🌸

Then later analysis showed that with certain NAT devices, especially Carrier Grade NATs, you need the whole tuple of (Layer 3 protocol, Layer 4 protocol, source address, source port, destination address, destination port) to uniquely identify a flow, and from there the actual Device 😳

So this document specifies an XML Schema and a URN Sub-Namespace for a Flow Identity Extension that covers this need. It also gives a more general way to identify a Device from the parameters of a network flow it's an endpoint of πŸ¦‹

Here's the tea: the Location Recipient might not know ahead of time whether the Device is behind a NAT device. So the port number elements from Section 3.3 of [RFC6155] are deprecated and MUST NOT be used in new client implementations πŸ™ˆ Server implementations of this specification might still get requests from clients that only implemented [RFC6155], and those requests could contain the deprecated port element, so keep that in mind πŸ’…

For implementation details this document doesn't cover, go check [RFC6155] and [RFC5985] πŸ’–

2. Conventions Used in This Document πŸŽ€

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] 🧚

The terms "Device" and "Target" are used as defined in [RFC6280] ✨

3. Usage 🌈

Here's an example HELD request, bestie πŸ‘‘

<locationRequest xmlns="urn:ietf:params:xml:ns:geopriv:held"
                      responseTime="8">
  <locationType exact="true">geodetic</locationType>
  <flow xmlns="urn:ietf:params:xml:ns:geopriv:held:flow"
    layer4="tcp" layer3="ipv4">
    <src>
      <address>192.0.2.25</address>
      <port>1024</port>
    </src>
    <dst>
      <address>198.51.100.238</address>
      <port>80</port>
    </dst>
  </flow>
</locationRequest>

The <flow> element MUST contain:

  • a layer3 attribute with a value of "ipv4" or "ipv6".
  • a layer4 attribute with a value of "udp" [RFC0768], "tcp" [RFC0793], "sctp" [RFC4960], "dccp" [RFC4340], or a decimal integer representing any applicable protocol from the IANA Assigned Internet Protocol Numbers Registry.
  • a <src> element and a <dst> element whose child elements contain the Layer 3 address (which MUST conform to the relevant "IPv4address" or "IPv6address" grammar as defined in [RFC3986]) and the Layer 4 port number of each end of the flow.

and MAY optionally contain:

  • a target attribute with a value of "src" (default) or "dst" to indicate which end of the flow corresponds to the Target of the <locationRequest> with respect to the HELD protocol πŸ’œ

4. XML Schema πŸ’…

Here's the whole schema, no cap πŸ”₯

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="urn:ietf:params:xml:ns:geopriv:held:flow"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:flow="urn:ietf:params:xml:ns:geopriv:held:flow"
  elementFormDefault="qualified">

  <xs:annotation>
    <xs:appinfo
      source="urn:ietf:params:xml:schema:geopriv:held:flow">
      HELD Flow Identity</xs:appinfo>
    <xs:documentation
      source="http://www.rfc-editor.org/rfc/rfc6915.txt">
      This document defines Flow Identity elements for HELD.
    </xs:documentation>
  </xs:annotation>

  <xs:element name="flow" type="flow:flowIdentity"/>

  <xs:complexType name="flowIdentity">
    <xs:sequence>
      <xs:element name="src" type="flow:flowEndpoint"/>
      <xs:element name="dst" type="flow:flowEndpoint"/>
    </xs:sequence>
    <xs:attribute name="target" default="src">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="(src|dst)"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="layer3" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="(ipv4|ipv6)"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="layer4" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="(udp|tcp|sctp|dccp|\d+)"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="flowEndpoint">
    <xs:all>
      <xs:element name="address">
        <xs:simpleType>
          <xs:restriction base="xs:token"/>
        </xs:simpleType>
      </xs:element>
      <xs:element name="port">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedShort">
            <xs:minInclusive value="1"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:all>
  </xs:complexType>
</xs:schema>

9.2. Informative References πŸ“š

Okay bestie, these are the "nice to know" reads that back up the spec. Here they are, all five, no cap πŸ¦‹

  • [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980. 🌸
  • [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981. πŸ’–
  • [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram Congestion Control Protocol (DCCP)", RFC 4340, March 2006. ✨
  • [RFC4960] Stewart, R., "Stream Control Transmission Protocol", RFC 4960, September 2007. πŸ’œ
  • [RFC6280] Barnes, R., Lepinski, M., Cooper, A., Morris, J., Tschofenig, H., and H. Schulzrinne, "An Architecture for Location and Location Privacy in Internet Applications", BCP 160, RFC 6280, July 2011. πŸŽ€

Author's Address 🫢

Meet the author! This is who to ping about it, iykyk πŸ’…

Ray Bellis
Nominet UK
Edmund Halley Road
Oxford  OX4 4DQ
United Kingdom

Phone: +44 1865 332211
EMail: ray.bellis@nominet.org.uk
URI:   http://www.nominet.org.uk/

That's the whole RFC, babe! πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from