<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc linkmailto="no" ?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-references-in-index="yes" ?>
<rfc category="exp" docName="draft-gundogan-icnrg-pub-iot-01"
     ipr="trust200902" submissionType="IRTF">
  <front>
    <title abbrev="NDN Pub-Sub in the IoT">Publish-Subscribe Deployment Option
    for NDN in the Constrained Internet of Things</title>

    <author fullname="Cenk Gundogan" initials="C." surname="Gundogan">
      <organization abbrev="HAW Hamburg">HAW Hamburg</organization>

      <address>
        <postal>
          <street>Berliner Tor 7</street>

          <city>Hamburg</city>

          <code>D-20099</code>

          <country>Germany</country>
        </postal>

        <phone>+4940428758067</phone>

        <email>Cenk.Guendogan@haw-hamburg.de</email>

        <uri></uri>
      </address>
    </author>

    <author fullname="Thomas C. Schmidt" initials="T C." surname="Schmidt">
      <organization abbrev="HAW Hamburg">HAW Hamburg</organization>

      <address>
        <postal>
          <street>Berliner Tor 7</street>

          <city>Hamburg</city>

          <code>D-20099</code>

          <country>Germany</country>
        </postal>

        <email>t.schmidt@haw-hamburg.de</email>

        <uri>http://inet.haw-hamburg.de/members/schmidt</uri>
      </address>
    </author>

    <author fullname="Matthias Waehlisch" initials="M." surname="Waehlisch">
      <organization abbrev="link-lab &amp; FU Berlin">link-lab &amp; FU
      Berlin</organization>

      <address>
        <postal>
          <street>Hoenower Str. 35</street>

          <city>Berlin</city>

          <code>D-10318</code>

          <country>Germany</country>
        </postal>

        <email>mw@link-lab.net</email>

        <uri>http://www.inf.fu-berlin.de/~waehl</uri>
      </address>
    </author>

    <date />

    <workgroup>ICN Research Group</workgroup>

    <abstract>
      <t>Constrained IoT devices often operate more efficiently in a loosely
      coupled environment without maintaining end-to-end connectivity between
      nodes. Information Centric Networking naturally supports this demand by
      replicated data distribution and hop wise forwarding. This document
      outlines a deployment option for NDN in low-power and lossy networks
      (LLNs) that follows a publish-subscribe pattern. The proposed protocol
      scheme simplifies name-based routing significantly and facilitates even
      large off-duty cycles for constrained nodes.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>In the emerging Internet of Things (IoT), it is expected that large
      quantities of very constrained sensors and actuators collect,
      communicate, and process massive amounts of machine data. Early
      experiments with constrained nodes show promising results for different
      deployments of ICN communication <xref target="NDN-EXP"></xref>.</t>

      <t>Characteristics of constrained nodes:</t>

      <t><list style="symbols">
          <t>Battery-powered with sleep cycles</t>

          <t>Failing nodes</t>

          <t>Low power lossy networks</t>
        </list></t>

      <t>Challenges of NDN deployment <xref target="RFC7927"></xref></t>

      <t><list style="symbols">
          <t>Complexity of name-based routing</t>

          <t>State management at nodes</t>

          <t>Clear separation between control and data plane</t>

          <t>Adaptation to constrained wireless transmission</t>

          <t>Mobility management</t>
        </list></t>

      <section anchor="intro.scenarios" title="Baseline Scenarios">
        <t>Multiple scenarios have been discussed in <xref
        target="RFC7476"></xref> and <xref target="IWMT"></xref> that evaluate
        the applicability of ICN in IoT.</t>

        <t>We consider two characteristic constrained IoT scenarios with the
        enumerated challenges: <list style="hanging">
            <t
            hangText="Stationary IoT nodes within reach of fixed uplinks">for
            home, building, and factory automation, stationary monitoring,
            ...<list style="symbols">
                <t>Reliability, resilience of operation</t>

                <t>Radio coordination, coverage</t>

                <t>Energy constraints, device lifetime</t>

                <t>Interference with rivaling appliances</t>
              </list></t>

            <t
            hangText="Mobile IoT nodes with sparse coverage or intermittent connectivity">for
            urban or rural mobility and sensing, industrial Internet in
            widespread environments, disaster recovery and rescue ...<list
                style="symbols">
                <t>Exploit connectivity when available</t>

                <t>Large off-duty cycles of nodes</t>

                <t>Partitioned networks</t>

                <t>Limited dependability </t>

                <t>Environmental impact and disturbance</t>
              </list></t>
          </list> IoT scenarios usually impose routing requirements to support
        mobile nodes, handle failing links and to be resilient against
        attacks. A secure and autonomous bootstrapping is essential,
        especially for large-scale IoT deployments.</t>
      </section>

      <section anchor="intro.pub_sub"
               title="Benefits of Loose Coupling in the IoT">
        <t>ICN decouples content consumers from data producers (decoupling in
        space). A more sophisticated decoupling can be provided with the
        publish-subscribe messaging pattern that further adds a decoupling in
        time and synchronization. Constrained devices in LLNs can leverage
        this loose coupling to increase sleep cycles and delegate the
        authority over as much information as possible to more powerful
        devices that act as content proxies. In <xref
        target="f:intro.pub_sub_topo"></xref>, once content is published to
        the content proxy (CP) by a producer (P), consumers (C) can retrieve
        this content from (CP) without interacting with the producer. This
        indirection when retrieving information allows (P) to align sleep
        cycles accordingly to the period of generating new sensor readings,
        instead of handling content requests from any consumers (C).</t>

        <figure anchor="f:intro.pub_sub_topo"
                title="Content Proxy (CP) - Producer (P) - Consumer (C)">
          <artwork align="center"><![CDATA[
     (CP)
    / | \
   /  |  `-----.
  /   |   |  |  \
(P)  (C) ...... (C)
                    ]]></artwork>
        </figure>

        <t></t>

        <t>TODO: The problem of PUSH</t>
      </section>
    </section>

    <section title="Terminology">
      <t>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 RFC 2119 <xref
      target="RFC2119"></xref>. The use of the term, "silently ignore" is not
      defined in RFC 2119. However, the term is used in this document and can
      be similarly construed.</t>

      <t>This document uses the terminology of <xref target="RFC7476"></xref>,
      <xref target="RFC7927"></xref>, and <xref target="RFC7945"></xref> for
      ICN entities.</t>

      <t>The following terms are used in the document and defined as
      follows:</t>

      <t><list style="hanging">
          <t hangText="Converge Cast">Many-to-One communication pattern, where
          multiple devices send sensor readings to one gateway.</t>

          <t hangText="Content Proxy">Stable node for replicating content.</t>

          <t hangText="Cloud Gateway">A Gateway that enables content transfer
          to and from a remote cloud storage, possibly by performing some kind
          of protocol translation.</t>

          <t hangText="PAM">Prefix Advertisement Message.</t>

          <t hangText="NAM">Name Advertisement Message.</t>
        </list></t>
    </section>

    <section anchor="pub_sub" title="Publish-Subscribe in IoT Edge Networks">
      <t>The publish-subscribe system is centered around prefix-specific
      content proxies (CPs) that are deployed in IoT edge networks. Such proxy
      function can be hosted on the Cloud- or Internet Gateway, or may reside
      on a stable, less constrained node within the IoT infrastructure. It is
      assumed that a CP is present for each prefix covering publishable
      content.</t>

      <t>Implementing a pub-sub NDN involves several steps that are bound to
      the tight requirements of resource-constrained devices. These steps
      include: <list style="numbers">
          <t>Building the prefix-specific routing topology tailored to
          constrained networks</t>

          <t>Mapping <spanx>Publish</spanx> to NDN semantics</t>

          <t>Mapping <spanx>Subscribe</spanx> to NDN semantics</t>
        </list></t>

      <section anchor="pub_sub.topology"
               title="Topology Maintenance and Routing">
        <t>A (sensor) node that wants to publish a data item needs to rely on
        path information towards the Content Proxy. Following the approach of
        PANINI <xref target="PANINI"></xref>, default routes will be
        established as follows.</t>

        <t>Each CP in the local IoT sub-network advertises the prefix(es) it
        represents to the routing system. It does so by broadcasting Prefix
        Advertisement Messages (PAMs) on the link layer (see <xref
        target="messaging"></xref> for the corresponding protocol details).
        Nodes that newly receive PAM advertisements will add or refresh a
        prefix-specific default route in their FIB. Intermediate nodes in a
        multi-hop environment also re-broadcast PAMs, so that the entire
        sub-network is flooded and default route entries build a shortest path
        tree (SPT) towards the CP as shown in <xref
        target="t:pub_sub.topology.fib"></xref> (alternatively, a DODAG w.r.t.
        a gateway for redundant CPs).</t>

        <figure anchor="f:pub_sub.topology.dodag"
                title="SPT building by Prefix Advertisement Messages (PAMs)">
          <artwork align="center"><![CDATA[
    (CP)
PAM /  \
   /    \ PAM
 (A)    (B)
 /|\    /|\
: : :  : : : PAM
                        ]]></artwork>
        </figure>

        <t>Information flowing from constrained sensor nodes towards a gateway
        is the prevalent communication pattern in the IoT (converge cast).
        The publish-subscribe system hence establishes a default routing (see
        sample FIB in <xref target="t:pub_sub.topology.fib"></xref>) and uses
        the tree topology with default routes towards the CP as a
        first step of content aggregation. Content replication towards other
        CPs, an Internet gateway, or into a cloud can follow subsequently.</t>

        <texttable anchor="t:pub_sub.topology.fib"
                   title="FIB with a prefix-specific default route">
          <ttcol>Prefix</ttcol>

          <ttcol align="center">Face</ttcol>

          <ttcol align="center">Lifetime</ttcol>

          <c>/P/</c>

          <c>Fx</c>

          <c>Ft</c>

          <c>...</c>

          <c>...</c>

          <c>...</c>
        </texttable>

        <t>It is noteworthy that the role of the new PAM message remains
        orthogonal to the existing Interest or Data semantics. A PAM never
        carries data nor requests, but persists on the control plane of
        name-based routing. User applications stay unaffected, and continue to
        rely on the NDN-specific request-response paradigm.</t>

        <t>Each node in the tree calculates a rank based on the rank of its
        parent and a routing metric. Hence, the rank is an indication for the
        position within the tree and is strictly monotonically increasing in
        the downwards direction from root to leaf. For simplicity, this
        document uses the hop-count routing metric to calculate the rank.
        Future work can focus on more elaborate routing metrics, e.g., to
        reduce packet retransmissions or improve load balancing for publish
        operations.
        </t>

        <t>The Routing Information Base (RIB) contains the following
        information:
        <list style="hanging">
          <t hangText="SPT">
            <list style="hanging">
              <t hangText="Prefix:"><vspace />
                Variable length prefix to configure a prefix-specific default
                route</t>
              <t hangText="Rank:"><vspace />
                16-bit unsigned integer indicating a node's rank</t>
              <t hangText="Flags:"><vspace />
                8-bit unsigned integer to store SPT related flags</t>
              <t hangText="Parent"><vspace />
                The appropriate face towards the parent node is stored.
              </t>
            </list>
          </t>
          <t hangText="NAM Cache (NC)"><vspace />
            Entries in the NAM Cache are <spanx style="verbatim">
            &lt;name,downstream_face&gt;</spanx> tuples. The NC is consolidated
            when propagating name advertisements.
          </t>
        </list>
        </t>
      </section>

      <section anchor="pub_sub.publish" title="Mapping Publish to NDN">
        <t>In classical publish-subscribe systems, a <spanx>Publish</spanx> is
        typically implemented as a push mechanism on the data plane. However,
        this contradicts the request-response paradigm employed by NDN. To
        adapt the <spanx>Publish</spanx> operation to NDN semantics, it is
        split into two phases and the required push mechanism is performed on
        the control plane with a link-local scope. The two phases consist of:

        <list style="numbers">
          <t>Announcing names of Named Data Objects (NDO) on the
          control plane</t>

          <t>Requesting NDOs on the data plane</t>
        </list></t>

        <t>
        In the first phase, the name of the NDO to publish is advertised to the
        prefix-specific upstream neighbor by encoding it with TLV format in a
        unicast link-local Name Advertisement Message (NAM) adopted from PANINI
        <xref target="PANINI"/>. Once an upstream neighbor receives an
        unsolicited NAM, the name is extracted and along with the incoming face
        stored in the NAM Cache (NC) as a <spanx style="verbatim">
        &lt;name,downstream_face&gt;</spanx> tuple. This link-local content
        signaling does not establish any data paths in the PIT, nor does it
        modify the FIB or the Content Store (CS).
        </t>

        <t>
        In the second phase and as a result of an unsolicited NAM, the content
        is requested from the downstream neighbor accordingly to the standard
        NDN scheme with an Interest message for the name recorded in the NC on
        the recorded face. When a downstream neighbor replies with the content
        (Data message), this neighbor removes the corresponding NC entry and
        the NDO to publish is successfully replicated one hop closer towards
        the content proxy. NC entries are thus short-lived for hop-wise
        replication only.
        </t>
        <t>
        Both phases are iteratively repeated hop-wise until the content proxy
        is reached. Being the root of this prefix-specific spanning tree, the
        content proxy has no further prefix-specific upstream neighbor and the
        replication terminates. It is noteworthy, that both phases can be
        interleaved, so that NAMs are signaled to the upstream neighbor, while
        the content is requested from the downstream neighbor.
        </t>
        <t><xref target="f:pub_sub.publish.phases"></xref> (a) depicts the
            hop-wise replication of a published content on the gradient towards
            the (CP). In this example, the name <spanx>/HAW/temp_t</spanx> is
            advertised by the producer (P) to its parent node (A). (A) extracts
            the name from the NAM and stores it along with the incoming face
            in its NC. (A) then propagates the NAM further to its parent (CP)
            and simultaneously requests the content from (P) as depicted in
            <xref target="f:pub_sub.publish.phases"></xref> (b). Likewise in
            <xref target="f:pub_sub.publish.phases"></xref> (c), (CP) reacts to
            the incoming NAM by requesting the content from (A). NC states from
            (A) and (P) are removed as soon as they respond to the request.
            </t>

        <figure anchor="f:pub_sub.publish.phases" title="Publish">
          <artwork align="center"><![CDATA[
+-------------+   +------------------------+   +-------------------+
|             |   |                        |   | Interest          |
|    (CP)     |   |            ,->(CP)     |   |    ,----(CP)<-,   |
|    /        |   |        NAM |  /        |   |    |    /    /    |
|   /         |   |            | /         |   |    |   /    /     |
| (A)<-,      |   |          ,-(A)<-,      |   |    `>(A)---' Data |
|   \  | NAM  |   |          |   \  | Data |   |        \          |
|    \ |      |   |          |    \ |      |   |         \         |
|    (P)      |   | Interest `--->(P)      |   |         (P)       |
| /HAW/temp_t |   |            /HAW/temp_t |   |      /HAW/temp_t  |
+-------------+   +------------------------+   +-------------------+
 (a) Adv. Name      (b) Replicate Content       (c) Finish publish
       ]]></artwork>
        </figure>

        <!--
        <t>In addition to a FIB, the (CP) maintains another data structure
        <spanx>Mt</spanx> (Meta-Table) to store all announced names annotated
        with additional context information and a lifetime. Upon receipt of a
        NAM, the <spanx>Mt</spanx> is updated accordingly. Context information
        consists of generic properties attached to a name (e.g. topic names
        and content freshness indicators) and are out of scope of this
        document. The <spanx>Mt</spanx> has its own name and can be requested
        by other devices.</t>
        -->
      </section>

      <section anchor="pub_sub.subscribe" title="Mapping Subscribe to NDN">
        <t>

        In the proposed publish-subscribe system, the <spanx>Subscribe</spanx>
        operation is equivalent to an Interest-based request of previously
        learned content names. A device can learn about new content in various
        ways:

        <list style="letters">
          <t>Name Advertisements of the CP via dedicated prefix path
            (TODO) or broadcast.</t>
          <t>By polling a dedicated data structure at the CP that records
             publishings and updates. Such a data structure may contain
             indicators about the periodicity of sensor readings to align
             periodic polling schemes to sensor reading intervals.</t>
          <t>By encoding topics into a hierarchical naming scheme of the form
            <spanx>routing prefix / topic / unique_part</spanx>. Inerest
            timeouts for these names serve as subscription periods and must be
            refreshed or retriggered for every publishing to adhere to the flow
            control approach of NDN / CCNx.</t>
        </list>
        </t>

        <t>
        TODO
        </t>
      </section>

      <section title="Content Replication in partitioned networks">
        <t>The hop-wise replication described in
          <xref target="pub_sub.publish"></xref> transparently supports publish
          operations in partitioned networks. When a publish operation fails to
          replicate content and no backup parent is in the vicinity (<xref
          target="f:partitioned"></xref> (b)), the node marks its sub-DAG as
          <spanx>floating</spanx> by propagating PAMs with the floating bit set
          and the NC entry is preserved. Once a sub-DAG becomes connected to
          another parent, the publishing is resumed (<xref
          target="f:partitioned" /> (c)).
        </t>
        <figure anchor="f:partitioned" title="Publish in partitioned network">
          <artwork align="center"><![CDATA[
  +-------------+       +-------------+       +-------------+
  |             |       |             |       |             |
  |    (CP)     |       |    (CP)     |       |    (CP)<-,  |
  |             |       |             |       |    /    /   |
  |             |       |        X    |       |   /    /    |
  | (A)<-,      |       | (A)---'     |       | (A)---'     |
  |   \  | PUB  |       |   \   PUB   |       |   \   PUB   |
  |    \ |      |       |    \        |       |    \        |
  |    (P)      |       |    (P)      |       |    (P)      |
  | /HAW/temp_t |       | /HAW/temp_t |       | /HAW/temp_t |
  +-------------+       +-------------+       +-------------+
(a) Publish content    (b) Publish fails    (c) Finish Publish
       ]]></artwork>
        </figure>
        <t>
          A node receiving a PAM from its parent with the floating bit set may
          rejoin the tree using another parent in the neighborhood that is
          connected to the content proxy. Rejoining the tree may result in a
          worse rank.
        </t>
      </section>

      <section title="Content Replication between Proxy Instances">
        <t>TODO</t>
      </section>

      <section title="Alerting and group communication">
        <t>TODO</t>
      </section>
    </section>

    <section anchor="messaging" title="Control Plane Messaging">
      <t>TODO: add ABNF</t>
      <t>TODO: add mappings of PAM and NAM to the NDN and CCNx dialects</t>
      <section title="Prefix Advertisement Message (PAM)">
        <figure anchor="f:message_formats.PAM" title="Prefix Advertisement Message (PAM)">
          <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = PAM   |F|  Reserved   |             Rank              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Prefix Length         |            Prefix ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       ]]></artwork>
        </figure>
        <t>
          <list style="hanging" hangIndent="12">
            <t hangText="Message type:"><vspace />
              8-bit unsigned integer. Indicates a PAM.</t>
            <t hangText="Floating (F):"><vspace />
              1-bit floating flag. Indicates that a sub-tree is not connected
              to the content proxy, when set.</t>
            <t hangText="Reserved:"><vspace />
              7-bit unused field. It MUST be initialized to zero by the
              sender and MUST be ignored by the receiver.</t>
            <t hangText="Rank:"><vspace />
              16-bit unsigned integer. Indicates a node's position
              in the SPT.</t>
            <t hangText="Prefix Length:"><vspace />
              16-bit unsigned integer. Indicates the length of the following
              prefix in bytes.</t>
            <t hangText="Prefix:"><vspace />
              Variable length prefix used to configure a default route within
              the SPT.</t>
          </list>
        </t>
      </section>
      <section title="Name Advertisement Message (NAM)">
        <figure anchor="f:message_formats.NAM" title="Name Advertisement Message (NAM)">
          <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = NAM   |   Reserved    |        Options Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                            Options                            :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       ]]></artwork>
        </figure>
        <t>
          <list style="hanging" hangIndent="12">
            <t hangText="Type:"><vspace />
              8-bit unsigned integer. Indicates a NAM.</t>
            <t hangText="Reserved:"><vspace />
              8-bit unused field. It MUST be initialized to zero by the
              sender and MUST be ignored by the receiver.</t>
            <t hangText="Length:"><vspace />
              16-bit unsigned integer. Indicates the accumulated length of
              all options.</t>
          </list>
        </t>
        <section title="Name Option">
          <figure anchor="f:message_formats.NAM.name_option"
                  title="Name option format">
            <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x00  |          Name Length          |   Name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         ]]></artwork>
          </figure>
          <t>
            <list style="hanging" hangIndent="12">
              <t hangText="Type:"><vspace />
                8-bit unsigned integer. Indicates the name option (0x00).</t>
              <t hangText="Name Length:"><vspace />
                16-bit unsigned integer. Indicates the length of the name,
                excluding the type and length field.</t>
              <t hangText="Name:"><vspace />
                  Variable length name.</t>
            </list>
          </t>
        </section>
      </section>
    </section>

    <section anchor="security.considerations" title="Security Considerations">
      <t>TODO</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.7476"?>

      <?rfc include="reference.RFC.7927"?>

      <?rfc include="reference.RFC.7945"?>

      <reference anchor="NDN-EXP">
        <front>
          <title>Information Centric Networking in the IoT: Experiments with
          NDN in the Wild</title>

          <author initials="E." surname="Baccelli">
            <organization>INRIA</organization>
          </author>

          <author initials="C." surname="Mehlis">
            <organization>FU Berlin</organization>
          </author>

          <author initials="O." surname="Hahm">
            <organization>INRIA</organization>
          </author>

          <author initials="TC." surname="Schmidt">
            <organization>HAW Hamburg</organization>
          </author>

          <author initials="M." surname="Waehlisch">
            <organization>FU Berlin</organization>
          </author>

          <date month="September" year="2014" />
        </front>

        <seriesInfo name="Proc. of 1st ACM Conf. on Information-Centric Networking (ICN-2014)"
                    value="ACM DL, pp. 77-86" />

        <format target="http://dx.doi.org/10.1145/2660129.2660144" type="PDF" />
      </reference>

      <reference anchor="PANINI">
        <front>
          <title>Let's Collect Names: How PANINI Limits FIB Tables in Name
          Based Routing</title>

          <author initials="TC." surname="Schmidt">
            <organization>HAW Hamburg</organization>
          </author>

          <author initials="S." surname="Woelke">
            <organization>HAW Hamburg</organization>
          </author>

          <author initials="N." surname="Berg">
            <organization>HAW Hamburg</organization>
          </author>

          <author initials="M." surname="Waehlisch">
            <organization>FU Berlin</organization>
          </author>

          <date month="Mai" year="2016" />
        </front>

        <seriesInfo name="Proc. of 15th IFIP Networking Conference"
                    value="IEEE Press, pp. 458-466" />

        <format target="http://dx.doi.org/10.1109/IFIPNetworking.2016.7497240"
                type="PDF" />
      </reference>

      <reference anchor="IWMT">
        <front>
          <title>Towards an Information-Centric Internet with more
          Things</title>

          <author initials="D." surname="Kutscher"></author>

          <author initials="S." surname="Farrell"></author>

          <date year="2011" />
        </front>

        <seriesInfo name="Position Paper, Interconnecting Smart Objects with the Internet Workshop"
                    value="IAB" />
      </reference>
    </references>

    <section numbered="no" title="Acknowledgments">
      <t>This work was stimulated by fruitful discussions ... We would like to
      thank all active members for constructive thoughts and feedback. In
      particular, the authors would like to thank (in alphabetical order)
      Emmanuel Baccelli, Michael Frey, Oliver Hahm, Peter Kietzmann, Dirk
      Kutscher, Martine Lenders, Joerg Ott, Hauke Petersen, and Felix
      Shzu-Juraschek. This work was partly funded by the German Federal
      Ministry of Education and Research, project I3.</t>
    </section>
  </back>
</rfc>
