<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="no"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->

<rfc category="info" 
docName="draft-ravi-ccn-forwarding-label-02" 
ipr="trust200902"> 
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902
     pre5378Trust200902
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="Forwarding-label support in CCN">Forwarding-Label support in CCN Protocol</title>

    <author fullname="Ravishankar Ravindran" initials="R." surname="Ravindran">
     <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>

          <!-- Reorder these if your country does things differently -->

          <city>Santa Clara</city>

          <region>CA</region>

          <code>95050</code>

          <country>USA</country>
        </postal>

        <phone></phone>

        <email>ravi.ravindran@huawei.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

	<author fullname="Asit Chakraborti" initials="A." surname="Chakraborti">
     <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>

          <!-- Reorder these if your country does things differently -->

          <city>Santa Clara</city>

          <region>CA</region>

          <code>95050</code>

          <country>USA</country>
        </postal>

        <phone></phone>

        <email>asit.chakraborti@huawei.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Aytac Azgin" initials="A." surname="Azgin">
     <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>

          <!-- Reorder these if your country does things differently -->

          <city>Santa Clara</city>

          <region>CA</region>

          <code>95050</code>

          <country>USA</country>
        </postal>

        <phone></phone>

        <email>aytac.azgin@huawei.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
   
    <date year="2016" />

    <!-- If the month and year are both specified and are the current ones,
    xml2rfc will fill in the current day for you. If only the current year is
    specified, xml2rfc will fill in the current day and month for you. If the
    year is not the current one, it is necessary to specify at least a month
    (xml2rfc assumes day="1" if not specified for the purpose of calculating
    the expiry date).  With drafts it is normally sufficient to specify just
    the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <!--workgroup>Network Working Group</workgroup> -->
    <workgroup>ICN Research Group</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
    If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>Information-Centric Networking</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

	<abstract>
		
		<t> 
     <!-- This document provides several considerations towards CCN wire packet
   format with the goal of allowing more flexibility, scalability, and
   expressiveness for efficient application support.  The considerations
   include: 1) Forwarding Label support to handle producer mobility,
   this optional header can also be used for other specialized
   forwarding needs ; 2) Interest Notification to distinctly handle Push based
   notification traffic for efficient forwarding handling and
   differentiation in the forwarding plane to handle it as multicast
   traffic; 3) Make provision for large MTU handling through elastic
   payload definition or a new packet type with larger payload length.-->

The objective of this proposal is to enable ID and Locator namespace split in the CCN protocol that has several applications such as towards Interest routing optimization, mobility, handling indirections in manifests, and routing scalability. We enable this through the notion of forwarding-label (FL) object, which is an optional hop-by-hop payload in the Interest message with a locator name which identifies a network domain, router, or a host. Depending on the application and trust context, an FL object can be subjected to policy based actions by the forwarders such as invoking security verification or enabling other service-centric actions such as FL object replacement.  FL object can be inserted by the applications or by the network. To enable dynamic name resolution FL objects can also be modified in the network by designated points such as the edge routers.  <!--Networks can also process FL inserted by applications with the option of validating the binding between the producer namespace and locator information in the FL.-->


		</t>
		<t>
  
		</t>
    </abstract>

  </front>

 <middle>


<section anchor="intro" title="ID-Locator Namespace Split in CCN">
<t>
 <!--Packet format as proposed in <xref target="ccnx1" /> aims for core protocol machinery for
   efficient content distribution and line speed forwarding.  This proposal makes
   the case for other desirable objectives considering the flexibility
   that would be afforded to the applications.  We lay out the following
   wire format considerations for discussion through this draft, which
   include mobility support, support for notification traffic, and large
   MTU support.-->

In the context of ICN/CCN, we define identifier and locator as follows:

<list style="symbols">

<t>
Identifier (ID) is a persistent secure or non-secure flat-ID or a hierarchical name assigned to a content, device or service. If the ID is secure, then trust relationship can be derived from it. Generally the identifier space is managed by applications.
</t>

<t>

Locator (LID) is a routeable topological name assigned to a network entity such as a router, a server, or an end device. Generally the locator space is managed and assigned by the network administrators.
</t>

</list>

We discuss here the motivations behind the need for separation between persistent name (ID) and a locator (LID) in the Interest message in the context of CCN  and a proposal to achieve this. 

The advantages of ID/Locator have been extensively studied and it has been part of many host-centric protocols such as HIP<xref target="HIP" />, ILNP <xref target="ILNP" />, and LISP <xref target="LISP" /> and is also part of FIA architectures such as MobilityFirst<xref target="MobilityFirst" />. Specifically in CCN, ID based routing is not efficient considering the need to dynamically replicate content and handle mobile entities, and the problem to address routing scalability <xref target="mapencap"/>. Hence providing this distinct ID-LID separation in the protocol offers the following advantages:

<list style="symbols">


<t>
Today CCN applications bind to persistent IDs, while their resolution is handled through per-hop name-based routing by a CCN forwarder using unicast/anycast/broadcast mechanisms, with routing scalability handled through its namespace aggregation. This model can introduce problems when the named entity is mobile, migrated, or replicated, as the names have to be announced in the routing control plane which can in turn introduce routing instability and scalability challenges (as the name aggregation to topological binding cannot be satisfied anymore). Enabling ID/Locator split and managing this mapping in a separate name resolution service shall address the routing churn introduced by dynamic entities. CCN is unique in the sense that both name-based routing and resolution service can operate simultaneously driven by their use based on a given context. For e.g. while inter-domain routing can be handled using a name resolution service, intra-domain routing can be based on name-based routing.  <!--In routing by name is feasible because of hierarchical and aggregatable names, in that sense the locator primitive in an Interest message is optional. This also requires clear processing steps for a forwarder to follow if a locator is also present in an Interest message.-->
</t>
<t>
 ID and Locator namespaces are managed by different entities. IDs are managed by applications, hence relevant only to consumers, producers and intermediate service points, while locator names are managed by a network administrator. Locators map to network domains or specific network elements through which the named entity is reachable. The relationship between the two is established during the namespace publishing phase, and managed by a separate name resolution service. ID/Locator distinction in CCN allows applications to manage its own namespace and not be restricted by the naming rules imposed by the network.
</t>


 <t>
Affording ID/Locator split in an Interest message offers many advantages in CCN especially when a centralized control is applied such as using NFV/SDN frameworks, enabling efficiency and flexibility in name resolution, routing, mobility, service chaining, and routing scalability. <!--Handling dynamism at a rate greater than what can be afforded by the applications requires sufficient capability in the network layer to modify the network layer state, this requires the locators to be modifiable by the network for efficient name resolution.-->
</t>
</list>

Considering the above requirements, we propose a Forwarding-label (FL) object, which acts as a locator and provides the flexibility to forward Interests on a name other than the one provided within the original Interest message with the ability to modify it within the network. Handling ID/Locator mapping requires a control plane infrastructure and appropriate network layer state with security functions to prevent malicious usage. Specific control plane or security mechanism of ID/Locator mapping is out of the scope of this document as many techniques can be used towards achieving this. This draft presents various considerations towards FL object management such as: FL object insertion/modification/deletion, FL object processing by a CCN forwarder, PIT/CS implications for FL object carrying Interests, FL object Interest packet format, and security/trust considerations. We then discuss the application of FL object in various scenarios.<!--he use of FL can be applied in different scenarios with forwarder enhancements and suitable control/service plane to manage the forwarder state.-->
</t>

<!--
<t>
Each of these use cases requires a control plane infrastructure to use the forwarding-label feature appropriately and avoid malicious usage, we provide a discussion of its use in the case of producer mobility in Section 9.
</t>

-->
</section>

<section anchor="Management" title="Forwarding-Label Object Proposal">
<t>
The use of FL is required when routing by ID is inefficient in scenarios such as replicated content, device mobility, or scalability challenges when ID based routing is employed. FL objects are subjected to processing and modification in the network depending on the specific use case scenario. Following we discuss various aspects of FL related to its semantics and management. <!--Employing two names in an Interest packet also raises questions of what to be used while forwarding, and its exploitation by users to inject malicious content in the router cache. In this draft the discussion assumes such closed trusted environments like provider networks, where forwarding-label are inserted, swapped, or removed at designated points in the network.  -->
</t>

<section anchor="Naming" title="FL Object Naming">
<t>
FL objects are container objects that include LID, service specific metadata, and security attributes for authentication. LIDs are hierarchically structured topologically names where the names follow the definition in <xref target="ccnx1" />. The security attributes are optional and may include validation payload and algorithm as discussed in  <xref target="ccnx1" />.

</t>
</section>

<section anchor="Insertion" title="FL Object Insertion">

<t>
An FL object can be inserted in an Interest message by the consuming application or by the network. 
</t>
<t>
In certain situations, the application logic may use an FL object in addition to the ID in the Interest message or this action may also be triggered because of feedback from the network, for instance due to failure of routing the Interest message based on the ID. In such situations, forwarders which process traffic from applications outside the trust domain require a way to validate the FL object. A possible approach to ensure trust in such situations is discussed in <xref target="mapencap" /> where a trust binding is provided between the ID and the LID as a link object which can be validated by the forwarder. To avoid the possibility of a misuse of an FL object, a default policy of the network may be to ignore it from untrusted applications and only choose to route by the content ID.
</t>
<t>
In the case where the FL object is inserted by the network,  FL object insertion is triggered at the ingress service routers of the network domain. For instance, network may insert an FL object to an incoming Interest message, if the Interest message satisfies the flow service profiles that are imposed by the network administrator at the ingress edge routers.  The service profile matching actions may include matching an Interest name to a set of service prefixes or triggered by certain markings such as context-ID  (for e.g. contexts may include service, trust, location) in the Interest message. FL objects inserted within the trust domain may not require security validation.
</t>

<t>
In situations where a forwarder handles both of these scenarios, policies can be applied at the ingress router to handle the two cases accordingly. These policies may include the face on which the Interests arrives on, or the Interest IDs etc.
</t>



</section>

<section anchor="Modification" title="FL Object Swapping">
<t>
An FL object can be swapped by another within the network in the context of a given service at designated points, such as the service edge routers, in the network. As an FL object carries a LID, and with appropriate representation and security considerations in the Interest message, FL objects also can be potentially stacked if the Interest message has to be tunneled through a domain, where routing based on the top level FL object is not feasible.
</t>
</section>

<section anchor="Termination" title="FL Object Termination">
<t>
FL objects are terminated by a forwarder when the LID in it matches its own LID. Here we assume a forwarder to possibly have many LIDs such as domain-IDs or router-IDs. For e.g. a forwarder (in a domain) identified as /att/santaclara can process an FL object with its LID set to this router's domain name or to a forwarder ID such as /att/santaclara/pop-x. Whenever an FL object is terminated by the forwarder, depending on the service context, it can attach a new FL object, or conduct additional processing (e.g. re-resolution of the name to a new FL object) based on the Interest parameters. The FL object can also include optional policy metadata based on which FL objects can be swapped in the network.
</t>
</section>

<!--
<t>
Forwarding-label being a network feature, edge routers shouldn't anticipate Interests with forwarding-label over its user-to-network interface (UNI). If it does, the network policy dictates if it trusts such re-directions or not. At the same time we don't exclude the case of use of forwarding-label by end applications. 
</t>
-->

<!-- In such situations policies shall dictate if the forwarder may or may not use the forwarding-label for forwarding based on the trust association with these applications and services. This scenario is beyond the scope of this document.
</t>

<t>
The security considerations towards using the forwarding-label depends on its purpose of implementation. We provide a high level security discussion for its use towards producer mobility in Section 10.
</t>

</section>

<section anchor="Forwarding" title="Forwarding Label Format">
<t>
We propose forwarding-label as an optional field with reference to CCNX1.0 <xref target="ccnx1" />. Forwarding-label is a name that can be processed by a CCN forwarder, hence can be a hierarchical structured variable ID or a single flat-ID component.
-->

</section>


<section anchor="Wire" title="FL Object Message Format">
  <t>
As FL objects are swappable in the network, it is proposed as a hop-by-hop field in the optional body of the fixed header as shown in Figure 1. The optional FL container includes attribute of type FL-Object, which contains a name TLV identifying the LID (Figure 2). LID is a hierarchically structured variable length name as defined in <xref target="ccnx1" />. A LID implies a locator such as an AS-ID, Gateway-ID, Router-ID or Host-ID. In addition to the LID, optional FL metadata includes contextual information on the application or the service  to aid the network for invoking an appropriate FL processing, such as trust validation of the FL object. Optional security attributes, such as authentication information, can be included depending on the specific use case scenarios, such as secure name delegation information as discussed in <xref target="mapencap" />, or signature of the consumer.<!--As a forwarding-label can be used for multiple purposes, a sub-TLV of type Forwarding-Label-Type is used to identify the type of forwarding-label.-->
  </t>

<?rfc needLines="15" ?>
  <figure>
  <artwork>
  <![CDATA[
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                       |                   CCN Fixed Header                          |
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                       |              <Optional Hop-by-Hop TLVs>                     |
                       /                                                             / 
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
                       |         Type = FL-Object    |      Length                   |
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      
                       |                        LID TLV                              |       
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                       /                      Optional FL Object Metadata            /   
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
                       /               Optional FL Object Security Attributes        /
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                       /                       Interest Message Body                 /
                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 1: Interest message with hop-by-hop Optional Forwarding-Label TLV
     ]]>                  
  </artwork>
  </figure>
<!--<t>
As forwarding-labels can be used for other purposes too, future extensions may introduce more such types of forwarding-labels.
</t>-->

<?rfc needLines="15" ?>
  <figure>
  <artwork>
  <![CDATA[
                     +----------------------+------------------+-----------------+
                     | Forwarding-Label     |     Meaning      |      Value      |
                     +----------------------+------------------+-----------------+ 
                     | LID TLV              | Identifies an    |    Name TLV     |
                     |                      | AS-ID/Gateway-ID/|                 |
                     |                      | Host-ID          |                 |
                     +----------------------+------------------+-----------------+


                                  Figure 2: Locator-ID (LID) Definition
     ]]>                  
  </artwork>
  </figure>

</section>



<section anchor="Processing" title="FL Object Processing Rules">
<t>

The following discussion is based on the assumption that all forwarders must process the optional header fields. In the context of CCN packet processing, FL object is only relevant when the decision to forward the Interest message is to be made. At this stage, multiple options exist, assuming consistent policies exists throughout the domain: 1) In the first scenario, the rule may be that if an FL object is included in an Interest message, then it should be given preference over the ID. This is under the assumption that FL objects are trusted indirections within the Interest message, and can be validated by the router if required;  2) In the second scenario, the forwarder could prioritize forwarding on the ID, and then forward on the LID at every hop; 3) In the third scenario, where policy based routing is involved, more complex routing approaches can be considered at the network edge, such as the forwarder could apply service policy on the Interest ID and choose to remove or swap it with a new FL object irrespective of the current FL object inserted in the Interest message, while the core nodes could use a more simpler approach, such as approach 1 or 2. Following are the steps when approach 1 is applied.

<list style="symbols">

<t>
During Interest packet processing, while a forwarding decision is being made, if an LID is available then it should be preferred for forwarding over the name in the Interest message irrespective of the  feasibility of ID based routing. 
</t>

<t>
  The validation of FL depends on the trust context. In trusted scenarios, where the applications and the network are managed by the same authority, the forwarder can bypass the validation. In untrusted scenarios, the edge router may validate the FL that is inserted by the sender, and to avoid re-validations by successive forwarders, these Interests can be marked to have been validated at the ingress point. <!--In situations where the FL is inserted by the network, the forwarders can implement a light weight security check such as matching shared-keyID in the FL to authenticate the FL inserted by the network.-->
</t>


<t>
If FL object is trusted and validated and the lookup based on LID in the FL object succeeds, then two possibilities exist: 1) for a non-terminating flow, the LID FIB lookup results in a next hop towards which the Interest is forwarded ; 2) for a terminating flow, LID lookup invokes a service logic wherein the service either re-resolves the Interest ID to another LID resulting in a new FL object or removes the current FL object and subjects the Interest to regular processing based on the ID in the Interest message.
</t>

<t>
If the FL object is trusted and validated and the LID lookup fails, then the router can try to forward the Interest based on the Interest ID. However if routing based on the Interest ID fails, then the router could raise an error condition and feedback the message to the previous hop, in the same or a different domain, with the appropriate error code.
</t>


<!--We assume the forwarding-label are inserted by the network at the edge for specific purposes, such as to handle mobility, hence builds on the assumption that forwarding-label is managed by a dedicated control plane. -->
<!--This draft doesn't address the case when a forwarder encounters Interests with stacked forwarding-labels, even though there may be services that can use this feature to leverage multi-path route towards the producer(s), or to tunnel the Interest to another point in the network.--> <!--A forwarder treats this case as an error condition and notifies the previous hop. This issue can also be addressed at the first router inserting the forwarding-label, i.e. if the router performing the Interest name to forwarding-label mapping has a set of labels to choose from, it only inserts one of them considering routing policies or other service requirements. In such cases should be treated like a error condition and notified to the previous hop.-->


<!--
<t>
If the Forwarding-Label-Type is of type locater-name. The Interest packet is forwarded based on the locater-name. Two possibilities exist: for non-terminating flows, if the locater-name resolves to a local service, it may re-resolve the Interest name to another locater-name; for terminating flows, it may remove the forwarding label and subject the Interest to regular processing based on the name in the Interest message.
</t>

-->
  
</list>

 <!--Following solutions have been proposed to handle producer mobility in CCN/NDN: 1) Kite <xref target="kite" /> proposal enhances NDN with new Interest primitives which allows mobile producer to issue traced-interests attracting the tracing-interests to its current location. This scheme has forwarding sclability issues considering the forwarding state introduced due to mobile entities, and routing efficiency challenge, where traffic has to be re-directed from designated anchor points ; 2) Forwarding label based proposal <xref target="scalable-ndn" /> stresses on routing efficiency achieved by network-based name resolution system. The proposal supports inter- session/domain mobility, while intra-session mobility can be supported through signalling indication during the Interest/Data exchange. The discussion here is based on the latter proposal.The need for name resolution by the network can be signalled by the client in the Interest packet. The discussion here is based on the latter proposal.-->

</t>

</section>

<section anchor="PIT" title="PIT Processing Implications">
<t>
To maintain the simplicity of the forwarding logic, the purpose of an FL object should be to guide the Interest towards the closest source of the resource entity, hence FL object may only be used for the forwarding decision and not be required for content object processing. However there may be usage scenarios where the FL object state is required to be saved in the PIT and even piggybacked in the content object (CO).
</t>

<t>
For example, in the case when there is no binding between the ID and the LID in the Interest expressed by a consumer, and multiple Interests arrive carrying the same ID but with different LIDs, then the expected outcome is to forward all such Interests with unique LIDs. In this case the forwarder  is required to save the LID along with the Interest ID in the PIT and forward the duplicate Interest whose LIDs differ from ID to LIDs state saved in the PIT. <!--In another situation, where secure binding exists between Interest name and FL-Name, it may be required to return the CO with this binding as well; in such situations the Interests are not aggregated and the embedded FL object in the CO (as a hop-by-hop header) is matched against the FL in the saved state in the PIT. This also implies that PIT entries should also save the forwarding-label associated with them.This is particularly useful in situations like mobility. Default way to achieve this is for the application to re-express a new Interest after the expiry of the previous one.-->
</t>

<t>
In another application, it may be required to decouple the choice of one consumer's LID from another consumer's LID, i.e, when a secure binding exists between the ID and the LID. In this case, the forwarder stores the FL object in the PIT, and the returning CO should piggyback the Interest's FL object as long as the CO is from the location intended in the LID, which is matched against the pending PIT entry before continuing with the reverse path forwarding. In cases, where the FL object is swapped by the intermediate routers, the CO should be updated with the appropriate FL to ensure matching of the PIT entries along the previous hops. These considerations are similar to those elaborated in <xref target="ccnx-label" />. <!-- and   where applications are free to One would keep the impact on PIT processing as minimal a possible, this is true if forwarding-label operates within trusted domain boundaries.-->
</t>

</section>

<section anchor="cache" title="Caching Implications">

<t>
The considerations here follow our previous discussion, where the FL object is piggybacked in the CO. If there is an implicit security binding between the Interest ID and the LID, then the FL object state is piggybacked along with the CO, and the FL object in the incoming Interest should be matched against the CO's FL object before the cached content object is returned.
</t>

</section>

<section anchor="multi-domain" title="Multiple Domain Scenario">

<t>
In wide area network scenarios, Interests cross multiple domains. If an FL object is only trusted within the domain boundaries, then the FL object is removed before the Interest is forwarded to the next domain, which then, upon entry inserts a new forwarding label with the associated security attributes at the ingress of the next domain. But if trust exists between domains, such as one through a trusted third party (validated based on the FL object security binding), to use the FL inserted by the previous domain, then the intermediate domains can avoid further FL processing and use the FL object passed on by the previous domains.
</t>
<!--
<t>
The domain level scope of the labels also comes at a cost of performing Interest name to forwarding-label lookup in each domain. But if sufficient trust exists between domains to use the forwarding-label inserted by the previous domain, then the intermediate domains could avoid name lookup to determine the appropriate forwarding-label.
</t>
-->

</section>


<section anchor="sec" title="FL Object Security ">
  <t>
FL object security is related to the purpose it is used for and the control plane mechanism used to manage it. Depending on the use case scenario of the FL, appropriate security mechanisms should be applied to secure the control and data planes to avoid exploitation of this feature. 

  <!--Several levels of security can be enabled to ensure security over the name resolution process and forwarding label inclusion, also incurring additional cost. First, the local controller can authenticate the routers designated to set or re-set the forwarding label, this is verified every time a router requests name resolution to the local controller; Second, a signature can be appended to the forwarding label which can be verified by the successive router to ensure it was set by a router authorized by the local controller. -->
  </t>

  <t>
  Generally, the major threats against the FL object approach is to manipulate the relationship between the name and the FL object.  Such manipulations can happen in various scenarios, some of which are listed as follows: (i) a malicious interceptor (acting as a publisher) intentionally injecting an incorrect mapping into the name resolution system; (ii)  a malicious interceptor (between the edge router and the resolution server) manipulating the mapping sent back from the name resolution system when the edge router queries the mapping system ; (iii) a compromised intermediate router maliciously changing the FL object, e.g., with the wrong  FL object or an out-dated FL object; (iv) an untrusted application injecting invalid FL object into the Interest message.
</t>

<t>
  To achieve network level FL security, appropriate  mechanisms should be applied to provide mapping provenance, mapping integrity and to prevent replay attack to address these issues.  The security mechanisms applicable to the above discussed scenarios (i) and (ii) are similar to ones applied to secure other mapping systems such as LISP <xref target="LISP-SEC" /> and DNS<xref target="DNS-SEC" />. Scenario (iii) requires new security mechanisms, one such way is to enable a domain level trust infrastructure so that the mapping between the name and the FL object can be authenticated by the successive routers.
  
  </t>

<t>
  In untrusted environments, when an FL object is inserted in the  Interest message by the end hosts,  appropriate authentication information should also be included in the FL object to allow ingress routers to optionally validate the delegation of the Interest ID to LID <xref target="mapencap" />. Furthermore, additional security policies can be enabled by the network to handle FL objects outside its trust domain. 
</t>

</section>


<section anchor="UseCase" title="Use Case Scenarios">
<t>
Here we provide the discussions related to using FL objects in different scenarios.
</t>

<section anchor="case1 " title="Handling Producer Mobility">

<!-- 
  1. Approaches for handling producer mobility
  2. Pros/Cons
  3. Late binding approach for CCN

-->
<t>
In the literature the different techniques to handle producer mobility can be classified into the following two types: 
<list style="symbols">

<t>
Application-based approach, where the application takes the responsibility for announcing its reacheability to the network  and triggering a network state change to enable Interest routing towards the mobile producer.  Most of the current proposals fall under this category, and these include the following two approaches: 1)The Kite proposal <xref target="kite" /> implements an anchor based approach where consumers and producers agree on an anchor point based on external mechanisms and uses application initiated (traced and tracing) Interests to handle the  producer mobility; 2)The anchor-less proposal <xref target="anchorless"/> is another application-based approach wherein enhanced name-based routing is used to track the mobile producer.

While these approaches allow consumers and producers to work on a single name space, it raises scalability concerns with increasing number of mobile nodes and number of applications signaling into the network. As these approaches introduce more signaling in the network, the operational efficiency of packet forwarding is negatively affected due to the state changes that have to be applied to maintain the sanity of the Interest packet processing logic. Another potential security issue with these approaches is that it can be prone to flooding attacks by malicious applications targeting specific application names and impeding their normal operation. 
</t>

<t>
Network-based approach uses the late-binding technique <xref target="scalable-ndn" />, wherein the reachability of the mobile node is handled by the network. In this case applications can explicitly request mobility for a given name space <xref target="mas"/>, with the network handling the mobility by tracking its latest location in the network through a name resolution system. At the same time, through coordination of the old and new point-of-attachments (PoA) and in-band signaling one can achieve zero loss for a given Interest flow. The late-binding technique uses ID/Locator split that is only applied at the PoAs, thereby avoiding any routing churn in the network due to producer mobility, while offering better scalability when the number of mobile producers increases.

Here the mobile entity (ME) registers a persistent name that requires mobility with its current point-of-attachment (PoA). The PoA then registers the mapping between the name and the PoA's locator in its local name resolution system. Then the domain updates the ME's home domain name resolution system with its current domain LID. When a correspondent nodes expresses Interest for the name, it is first resolved to the current ME domain by the home domain. When the Interest enters the domain offering mobility service, it is resolved again to the ME's current location. Furthermore PoA-to-PoA signaling can be enabled to offer seamless forwarding of Interests whenever an ME changes its PoA. In addition to correcting the path stretch the Interests re-routed from the old PoA can be marked and re-routed to the new PoA with the new FL. On the return path, the CO are also marked, this in-band marking is used by the ingress PoA at the consumer's end to re-resolve the mobile prefix to a new forwarding locater that would correct the path stretch. 
</t>

</list>

</t>

</section>


 <!--Manifests <xref target="Manifests" /> may contain indirections to named content objects.In this case, FL object can be used to indicate its location while hierarchical or flat name ID map to the named object.-->
<section anchor="case2 " title="Manifests">
<t>
The FL objects can also be used to support the retrieval of nameless objects <xref target="nameless" />. Using the current manifest proposal <xref target="Manifests" /> a consumer receives a manifest with the ContentObjectHashIDs and their respective locator information. A consuming application uses the locater as a routeable content name, while the ContentObjectHashID  is used as a HashID restriction parameter. Multiplexing the Interest name field as an ID and also as an LID has the following consequences: (1) a forwarder cannot  distinguish between Interest packets containing ID or LID in the name field, as the protocol doesn't differentiate these two constructs; (2) it complicates Interest processing when LID is used as a name, by first requiring to check for the presence of ContentObjectHashID, and to use it to index the Interest based on it instead of the locator name; (3) more complications arise if an Interest packet arrives with two IDs i.e. a ContentObjectHashID as the hash restriction and the ID as the content name, in which case, one of them may seek precedence over the other. 
</t>
<t>
The above issues can be avoided through the use of the ContentObjectHashID as the content name and the locater in the FL object. In this case, a forwarder will always index the pending Interest table based on the content name. The routing decision then would be based on the FL object depending on the routing policy in the forwarder. This also avoids the situation of dealing with two IDs in the Interest packet, i.e. the application has to choose either ID or ContentObjectHashID as the content ID. This use of FL object can be enforced in a straight forward manner by identifying flat-ID, e.g. ContentObjectHashID, and routeable name as different typed name objects in the Interest packet.
</t>

<t>
A possible high level forwarding logic for the edge/core router to support nameless objects based on the above discussion is presented in Figure 3. Here edge router can also be a gateway node.
 

 <?rfc needLines="15" ?>
  <figure>
  <artwork>
  <![CDATA[

  Begin 

  if Edge_Router
     If Interest arrives on a face with a flat-ID
        Then check for the presence of FL object
          If FL object is present, use the LID in the FL object for Interest forwarding
            
        If there no FL Object
          If policy allows, resolve the flat-ID with a NRS to obtain an FL object
            Use the FL object to route the Interest

     End
  
    If the Interest arrives with a routeable ID
      If there is FL object
        Then use the ID for forwarding and Remove the FL object

      If there is no FL object
        Match Interest ID with name policy for e.g. mobility or interest routing optimization
          If a name policy for resolution exists
            Then network resolution service is invoked on the ID  which returns an FL object
             Use the FL object to direct the Interest to the appropriate next hop
    End
  End

  if Core_Router
      if Interest arrives with an FL Object
        Use the LID for forwarding
      Else if Interest is with a Routeable ID
        Use the name for forwarding
  End

        Figure 3: Forwarding logic to support flat-ID and routeable ID at the edge router
  


  ]]>                  
  </artwork>
  </figure>
 



</t>



<t>
We discuss security implications of using ID and FL object in the Interest message depending on the ID type and 
</t>

<t>
<list style="symbols">

<t>
Case 1 - ContentObjectHashId with FL object: This use case is a straight forward simplification of what is being proposed in <xref target="nameless" />. Here the locator is included within the FL object and the ContentObjectHashId is used as the name, so this shouldn't introduce any new security concerns. This holds good for both application and network based FL object insertion.

</t>

<t>
Case 2 - Routeable ID with FL object: For UE based FL object insertion, this scenario can cause cache poisoning in the absence of signature check enforcement in the forwarders. For the case when FL object is managed within a trusted domain, the security implications are discussed in Section 8.
</t>


</list>

</t>




</section>

<section anchor="case3 " title="Interest Routing Optimization">
<t>
Networks which hosts its own or third party content/service can benefit from the ability to handle Interest routing logic in its domain opportunistically. When a Interest seeking a specific content or service enters a network domain, the ingress router can redirect the Interest to the closest cache point or service location.
</t>

</section>

<section anchor="case4 " title="Routing Scalability">
<t>
As discussed in <xref target="mapencap" />, locator based routing can address routing scalability as the number of ASs are many orders less than the number of information objects. This reduces the forwarding table in the DFZ zone in the order of number of ASs in the Internet.
</t>

</section>

</section>


</middle>

<back>

<references title="Informative References">

<reference anchor="ccnx1">
      <front>
          <title>http://www.ietf.org/id/draft-mosko-icnrg-ccnxmessages-00.txt.</title>
         <author  initials="CCNX1.0" surname="CCN Wire format" fullname=" CCN Wire Format (CCNX1.0)"> 
     </author>
     <date year="2013"></date>
        </front>
   </reference>


   <reference anchor="HIP">
      <front>
          <title>Host identity protocol (HIP): Connectivity, mobility, multi-homing, security, and privacy over IPv4 and IPv6 networks</title>
      <author initials="P" surname="Nikander" fullname="P, Nikander">
      </author>
      <author initials="A" surname="Gurtov" fullname="A, Gurtov">
      </author>
      <author initials="T.R." surname="Henderson" fullname="T.R, Henderson">
      </author>
      <date year="IEEE Communications Surveys and Tutorials, pp: 186-204, 2010"></date>
     </front>
  </reference> 

  <reference anchor="ILNP">
      <front>
          <title>An Overview of the Identifier-Locator Network Protocol (ILNP)</title>
      <author initials="R" surname="Atkinson" fullname="R, Atkinson">
      </author>
      <date year="Technical Report, University College London,  2005"></date>
     </front>
  </reference> 

  <reference anchor="LISP">
      <front>
          <title>https://tools.ietf.org/html/draft-ietf-lisp-sec-07.</title>
         <author  initials="RFC6380" surname="LISP" fullname=" LISP"> 
     </author>
     <date year="2014"></date>
        </front>
   </reference>

   <reference anchor="LISP-SEC">
      <front>
          <title>https://tools.ietf.org/html/draft-ietf-lisp-sec-07.</title>
         <author  initials="LISP-SEC" surname="LISP-Security" fullname=" LISP-Security"> 
     </author>
     <date year="2014"></date>
        </front>
   </reference>

   <reference anchor="Manifests">
      <front>
          <title>http://www.ccnx.org/pubs/draft-wood-icnrg-ccnxmanifests-00.html.</title>
         <author  initials="Manifest" surname="CCNx" fullname="CCNx Manifest Specification"> 
     </author>
     <date year="2015"></date>
        </front>
   </reference>

   <reference anchor="DNS-SEC">
      <front>
          <title>DNS Security Introduction and Requirements.</title>
         <author  initials="RFC4033" surname="DNS-SEC" fullname="DNS-SEC"> 
     </author>
     <date year="2005"></date>
        </front>
   </reference>


<reference anchor="scalable-ndn">
      <front>
          <title>Map-and-Encap for Scaling NDN Routing.</title>
         <author initials="A" surname="Afanasyev"  fullname="A. Afanasyev">
      </author>
     <date year="2015"/>
        </front>
        <seriesInfo name="NDN Technical Report" value="ndn-004-02" />
   </reference>

   <reference anchor="mas">
      <front>
          <title>Realizing Mobility as a Service in CCN.</title>
         <author initials="R" surname="Ravidran"  fullname="R. Ravindran">
      </author>
     <date year="2016"/>
        </front>
        <seriesInfo name="IETF/ICNRG, Paris Interim" value="2016" />
   </reference>

   <reference anchor="nameless">
      <front>
          <title>Nameless Objects.</title>
         <author initials="M" surname="Mosko"  fullname="Mark Mosko">
      </author>
     <date year="2016"/>
        </front>
        <seriesInfo name="IETF/ICNRG, Paris Interim" value="2016" />
   </reference>

   <reference anchor="mapencap">
      <front>
          <title>A Scalable Mobility-Centric Architecture for Named Data Networking.</title>
         <author initials="A" surname="Azgin"  fullname="A. Azgin">
      </author>
     <author initials="R" surname="Ravindran" fullname="R.Ravindran"></author>
     <author initials="G.Q." surname="Wang" fullname="G.Q.Wang"></author>
     <date year="2014"/>
        </front>
        <seriesInfo name="ICCCN (Scene Workshop)" value="" />
   </reference>

    <reference anchor="cisco">
      <front>
          <title>Cisco visual networking index: Global mobile data traffic forecast update.</title>
         <author initials="CISCO" surname="Cisco System Inc." > </author>
     <date year="2009-2014"/>
        </front>
   </reference>

<reference anchor="kite">
      <front>
          <title>Kite: A Mobility Support Scheme for NDN.</title>
         <author initials="Y" surname="Zhang"  fullname="Yu Zhang">
      </author>
     <author initials="H" surname="Zhang" fullname="Hongli Zhang"></author>
     <author initials="L." surname="Zhang" fullname="Lixia Zhang"></author>
     <date year="2014"/>
        </front>
        <seriesInfo name="NDN, Technical Report NDN-0020" value="" />
   </reference>

<reference anchor="ccnx-label">
      <front>
          <title>http://www.ccnx.org/pubs/ccnx-mosko-labelforwarding-01.txt.</title>
         <author  initials="CCNLF" surname="CCNx Label Forwarding" fullname=" CCNx Label Forwarding (CCNLF)"> 
     </author>
     <date year="2013"></date>
        </front>
   </reference>

<reference anchor="anchorless">
      <front>
          <title>Anchor-less Producer Mobility in ICN.</title>
         <author initials="J" surname="Auge"  fullname="J Auge">
      </author>
     <author initials="G" surname="Carofiglio" fullname="G Carofiglio"></author>
     <author initials="G." surname="Grassi" fullname="G. Grassi"></author>
     <author initials="L." surname="Muscariello" fullname="Luca Muscariello"></author>
     <author initials="G." surname="Pau" fullname="G Pau"></author>
     <author initials="X." surname="Zeng" fullname="X Zeng"></author>
     <date year="2015"/>
        </front>
        <seriesInfo name="ICN, Sigcomm, 2015" value="" />
   </reference>


  <reference anchor="MobilityFirst">
      <front>
          <title>http://www.nets-fia.net/</title>
      <author initials="MobilityFirst" surname="NSF FIA project" fullname="MobilityFirst: NSF FIA project">
      </author>
      <date year="2010"/>
     </front>
     </reference>  


  
   </references>
   

</back>
</rfc>

