<?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-notification-01" 
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="Interest Notification">Support for Notifications in CCN</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="Syed Obaid Amin" initials="S." surname="Amin">
     <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>obaid.amin@huawei.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Marc Mosko" initials="M.E." surname="Mosko">
      <organization>PARC</organization>

      <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city>Palo Alto</city>

         <region>California</region>

         <code>94304</code>

         <country>USA</country>
       </postal>

       <phone>+01 650-812-4405</phone>

       <email>marc.mosko@parc.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
   
    <author fullname="Ignacio Solis " initials="I" surname="Solis">
      <organization>PARC</organization>

      <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city>Palo Alto</city>

         <region>California</region>

         <code>94304</code>

         <country>USA</country>
       </postal>

       <phone>+01 650-812-4405</phone>

       <email>ignacio.solis@parc.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.-->

This draft proposes a new packet primitive called Notification for CCN. Notification is a PUSH primitive and can be unicast or multicast to multiple listening points. Notifications do not expect a Content Object response hence only requires the use of FIB state in the CCN forwarder. Emulating Notification as a PULL has performance and forwarding implications. The draft proposes a new fixed header primitive called Notification and a CCN message encoding using Content Object primitive to transport Notifications. These discussions are presented in the context of CCNx1.0 <xref target="ccnx1" /> proposal. <!-- As an extension, notifications can also piggyback content-objects to improve application reliability. The draft motivates the need for such a primitive and provides a packet format considering .-->


		</t>
		<t>
  
		</t>
    </abstract>

  </front>

 <middle>


<section anchor="intro" title="Introduction">
<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.-->
Notification is a PUSH primitive used in the Internet today by many IoT and social applications. The nature of notifications varies with the application scenario, ranging from being mission critical to one that is best effort. Notifications can be unicast or multicast depending on whether the notification service is aware of all the consumers or not. A notification service is preceded by a consumer subscribing to a specific event such as, subscription to hash-tag feeds, health emergency notification service, or temperature sensor reading from a room in a building; following this subscription the service pushes notifications to consuming entities. It has to be noted that certain IoT applications expects notification end-to-end latency of few milliseconds <xref target="fiveG" />. Industrial IoT applications have more stringent requirement in terms of QoS, timeliness, and reliability of message delivery. Though we term it as a Notification, this primitive can also be used for transactional exchange between two points.
</t>

<t>

CCN optimizes networking around efficiently distributing already published content which the consumers learn through mechanisms like  manifests containing the names of published content chunks and their locations. Applications relying on notifications requires event driven data to be pushed from multiple producers to multiple subscribers for which the current Interest/Data primitive is inefficient. This draft proposes to extend CCN's current primitives set with a new notification primitive that can be processed in a new way by the CCN forwarder to serve notification objectives. Notification here implies a PUSH semantic that is available with IP today and supported by other FIA architectures like MobilityFirst <xref target="mobilityfirst" /> and XIA <xref target="xia" />.

</t>
</section>

<section anchor="requirements" title="Notification Requirements in CCN">
<t>
General notification requirements have been discussed in CoAP's Observe proposal <xref target="observe" /> to push notifications from the server to the clients. Here we discuss basic notification requirements from CCN's network layer perspective. Other requirements related to reliability, low latency, flow control can be engineered by the application or through more network layer state once the following requirements are met.  

<list style="symbols">

<t>
Supporting PUSH Intent: CCN should provide efficient support for PUSH, where application's intent is able to PUSH content to listening application without expecting any data in return.
</t>

<t>
Support Multicast: CCN network should be able to handle multicast notifications from a producer to multiple consumers for any service.
</t>

<t>
Security: Just as a content object in the context of Interest/Data primitive provides data authentication and privacy, similar features should also be offered to notification objects.
</t>

<t>
Routing/Forwarding Support: Name prefixes over which multicast notifications are managed should be handled in a different manner from the name prefixes over which Interest/Data primitive is used for content distribution. This differentiation applies both to the control as well as the forwarding plane.
</t>

<t>
Minimizing Processing: Notification processing in the forwarder should be minimized considering the application's intent  to PUSH data to listening consumers. 
</t>

</list>

</t>

</section>



<section anchor="Current" title="Current Approaches">
<t>
Recent CCN and NDN research  <xref target="COPS" /> <xref target="push" /> have studied the problem of handling notifications and have proposed several solutions to handle this. However these approaches are not satisfactory as they use the current Interest and Data primitive to achieve notification objectives. These approaches are:

<list style="symbols">

 <t>
 Polling: This is a straight forward application of the Interest and Data primitive, where consumers periodically checks the producers for any new information. The efficiency of this approach depends on the frequency of polling. In this case, very low frequency may result in missing critical updates, and large frequency could result in high PIT occupancy by such polling Interests and overall higher traffic overhead. This scheme is inefficient particularly for event driven and asynchronous updates. 
</t> 

<t>
 Long lived Interests: As the name suggests, applications can issue Interests set to a high lifetime to the producing nodes. Considering the increasing social networking and IoT application traffic, the number of such PIT Interests can be very large occupying valuable resources. 
</t>

<t>
Interest overloading: Small notifications such as actuating commands can be send by overloading the Interest primitive by adding information as suffixes to the name or including signed and/or encrypted data as a Interest payload <xref target="ccnx1" />. As these Interests are used as notifications, their lifetime is set to zero. Overloading Interests to convey notifications may not be desirable, as today the Interests are treated as a content request primitive by forwarders incurring unnecessary PIT/CS incurring unnecessary overhead. This also opens the possibility of new attack vectors, such as the notifications can be blocked by malicious consumers who may express Interests with the same name (assuming names are easily derivable). 
</t>
<t>
Interest Trigger: Another way to use Interest is to first notify the consumers about a produced data, and then have the data pulled by the consumers. This use of Interest for notification is also inefficient as Interest (that intends notification) is processed as a content fetch request by the router, incurring  additional round trip delay before the produced data arrives at the listening consumer. To be more specific it incurs a minimum of 4 messages, but more messages for the same reliability and robustness as TCP.
</t>


</list>

</t>

<t>
To summarize CCN and NDN operates on PULL primitive optimized for content distribution applications. Emulating PUSH operation over PULL has the following issues: 1) it is a mismatch between an application's intent  to PUSH data and the PULL APIs currently available; 2) unless Interests are marked distinctly, overloading Interests with notification data will undergo PIT/CS processing and are also subjected to similar routing and forwarding policies as regular Interests which is inefficient; 3) another concern in treating PUSH as PULL is with respect to the effect of local strategy layer routing policies, where applying the intent to experiment with multiple faces to fetch content is not required for notification messages. 
</t>

<t>
This motivates the need for treating notifications as a separate class of traffic which would allow a forwarder to apply the appropriate processing, routing and forwarding processing in the network. 
</t>

</section>


<section anchor="Primitive" title=" Proposed Notification Primitive in CCN">

<t>
 Notification is a new type of packet hence can be subjected to different processing logic by a forwarder. By definition, a notification message is a PUSH primitive,  hence is not subjected to PIT/CS processing.  This primitive can also be used by any other transactional or content distribution application towards service authentication or exchanging contextual information between end points and the service. <!--Notifications transport content objects which shouldn't be cached by the forwarders. However to improve notification content reliability, we propose that an Interest-notification can piggyback a cacheable content object which can be cached in intermediate routers, but which also has security implications which we discuss later.-->
</t>

</section>

<section anchor="Wire" title="Notification Message Encoding">

 <t>
The wire packet format for a Notification is shown in Fig. 1 and Fig. 2. Fig. 1 shows the Notification fixed header considering the CCNx1.0 encoding, and Fig. 2 shows the format for the CCN Notification message, which is used to transport the notification data. We next discuss these two packet segments of the Notification message.
</t>

<?rfc needLines="17" ?>
  <figure>
  <artwork>
  <![CDATA[
                                             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
                        +---------------+---------------+---------------+--------------+
                        |    Version    |  PacketType=  |                              |
                        |               | Notification  |         PacketLength         |
                        +---------------+---------------+---------------+--------------+
                        |   HopLimit    |   Reserved    |     Flags     | HeaderLength |
                        +---------------+---------------+---------------+--------------+
                        /                  Optional Hop-by-hop header TLVs             /
                        +---------------+---------------+---------------+--------------+
                        /              Content Object as Notification Message          /
                        +---------------+---------------+---------------+--------------+

                                  Figure 1: CCN Notification fixed header
     ]]>                  
  </artwork>
  </figure>


  <?rfc needLines="17" ?>
  <figure>
  <artwork>
  <![CDATA[
                                              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
                         +---------------+---------------+---------------+--------------+
                         |MessageType = Content Object   |         MessageLength        |
                         +---------------+---------------+---------------+--------------+
                         |                    Name TLV                                  |
                         +---------------+---------------+---------------+--------------+
                         |                    Optional MetaData TLVs                    |
                         +---------------+---------------+---------------+--------------+
                         | Message Payload Type          |         Message Type Length  |
                         +---------------+---------------+---------------+--------------+    
                         |                    Payload or Optional Content Object        |
                         +---------------+---------------+---------------+--------------+
                         /         Optional CCNx ValidationAlgorithm TLV                /
                         +---------------+---------------+---------------+--------------+
                         / Optional CCNx ValidationPayload TLV (ValidationAlg required) /
                         +---------------+---------------+---------------+--------------+
                       
                                    Figure 2: CCN Notification Message 
     ]]>                  
  </artwork>
  </figure>

<t>
Notification Fixed Header: The fields in the fixed header that have new meaning in the context of notifications are discussed next, while the other fields follow the definition in <xref target="ccnx1" />.
</t>

<t>
<list style="symbols">

<t>
Packet Type: This new type code identifies that the packet is of type Notification [TBD]. 
</t>

<t>
Optional Hop-by-hop header TLVs : Encodes any new hop-by-hop headers relevant to notifications [TBD].
</t>

</list>

</t>


<t>
CCN Notification message: The CCN Notification message is a Content Object as in <xref target="ccnx1" />. Notifications are always routed on the top level Content Object (outer CO) name. Notification itself can be encoded in two forms depending on the application requirement:

<list style ="symbols">
 <t>
Notification with single name: In this case the notification contains a single content object. Here the producer generates notification using the same name used by consumers on which they listen on. <!--The notion of encapsulation was earlier proposed in the context of a Selector protocol in [Marc-Selector, should we include this reference ?].--> 
</t>

<t>
Notification with two names: In this case the notification contains a top level Content Object (outer CO), that encapsulates another Content Object (inner CO). With an encapsulated Content Object, the meaning is that notification producers and consumers operate on different name-spaces requiring separate name-data security binding. A good application of the encapsulation format is a PUB/SUB service, where the consumer learns about the notification service name offline, and the producer who is decoupled from the consumer generates a new Content Object using its own name and pushes the notification to the consumer.
</t>

</list>
</t>

 <t>
The interpretation of the fields shown in Fig. 2 are as follows:

<list style="symbols">

<t>
MessageType : The CCN message type is of type Content Object. <!--, which optionally carries a payload of type T_ENCAP [TBD] to encapsulate a Content Object.--> 
</t>

<t>
Name TLV : Name TLV in the Content Object is used to route the Notification. <!--he name identifies the consuming end points.-->
</t>

<t>
Optional Metadata TLV: These TLVs carry metadata used to describe the Notification payload. <!-- such as a new payload type to indicate of type Notification with or without encapsulated Content Object [TBD].-->
</t>

<t>
Message Payload Type: This is of type T_PAYLOADTYPE defined in CCNx.1.0 or a new encapsulation type (T_ENCAP) that indicates the presence of another encapsulated Content Object [TBD].
</t>

<t>
Optional Encapsulated Content Object: This is an optional encapsulated Content Object newly defined for the Notification primitive. The name in the encapsulated Content Object corresponds to the producer's name-space, or anything else based on the application logic. The rational for an encapsulated Content Object was discussed earlier.
</t>

<t>
Optional Security Validation data: The Content Object optionally carries security validation payload as per CCNx1.0.
</t>

</list>

</t>


</section>

<section anchor="Processing" title="Notification Processing">
<t>
The following steps are followed by a CCN forwarder to process the Notification packet.

<list style="symbols">
<t>
Notification packet type is identified in the fixed header of a CCN packet with a new type code. The Notification carries a Content Object, whose name is used for routing. This name is matched against the FIB entries to determine the next hop(s). Novel strategy layer routing techniques catering to the notification traffic can be applied here. 
</t>
<t>
CCN forwarder also processes the optional metadata associated with the Notification meant for the network to help with the forwarding strategy, for e.g., mission critical notifications can be given priority over all other traffic.
</t>
<t>
As mentioned earlier, CCN forwarder MUST NOT cache the Content Objects in the notifications.  <!--This feature caters to the set of consumers who want to PULL content from the intermediate routers rather than be notified. The name of the content object can be learned through other means by the consuming applications, e.g through a control channel with the notification service. In this case, the forwarder shall identify such a content-object in the Interest-Notification and cache it. The cache management for content-object obtained from notification traffic can be subjected to different policy from those from Interest PULL.-->
</t>

</list>

</t>

</section>




<section anchor="sec" title="Security Considerations">
<t>
The proposed processing logic of Notifications that bypass the processing of PIT/CS has the following security implications:
</t>

	<t>
Flow Balance : PIT state maintains the per-hop flow balance over all the available faces by enforcing a simple rule, that is, one Content Object is send over a face for a single Interest. Bypassing PIT processing compromises this flow balancing property. For scenarios where the notification traffic volume is not high such as for IoT applications, the impact may not be significant. However, this may not be the case considering the plethora of social networking and emerging IoT applications in a general Internet scenario. This flow balance tradeoff has to be understood considering an application's intent to PUSH data and the latency introduced by processing such traffic if a PULL primitive is used. Also PIT offers a natural defense mechanism by throttling traffic at the network edge, considering the provisioned PIT size, and bypassing it could exacerbate DDOS attacks on producing end points. 

  <!--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>
Cache Poisoning: This draft doesn't recommend the caching of the Content Object in the Notification payload, though doing so might help in increasing the availability of notification information in the network. A possible exception would be if the inner CO is a nameless object <xref target="nameless"/>. as those can only be fetched from CS by hash  We leave this possibility of applying policy-based caching of Notification Content Objects for future exploration. The recommendation for not caching these Content objects is that, in a regular Interest/Content Object exchange, content arrives at the forwarder and is cached as a result of per-hop active Interest expression. Unsolicited Content Objects, as in the case of the Notification, violates this rule, which could be exploited by malicious producers to generate DDOS attack against the cache resource of a CCN infrastructure. <!--This however can be mitigated mandating the use of signature in the Interest-Notification messages. Also local router policy can determine the cacheability of such content-objects. This tradeoff comes with the benefit of increasing the availability of content to benefit the applications, hence other light weight mechanisms to mitigate this issue can also be envisioned.-->

</t>

	</section>

<section anchor ="Annex" title="Annex">

<section anchor="Routing" title="Routing Notifications">
<t>
Appropriate routing policies should be employed to ensure reliable forwarding of a notification to its one or many intended receivers. The name in the notification identifies a host or a multicast service being listened to by the multiple intended receivers. Two types of routing strategies can be adopted to handle notifications, depending on whether or not an explicit pub/sub state is maintained in the forwarder.

<list style="symbols">

<t>
Stateless forwarding: In this case the notification only relies on the CCN FIB state to route the notification. The FIB entries are populated through a routing control plane, which distinguishes the FIB states for the notification service from the content fetching FIB entries. Through this logical separation, Notifications can be routed by matching its name with the matching FIB policy in the CCN forwarder, hence processed as notification multicast. 
</t>

<t>
Stateful forwarding: In this case, specific subscription state is managed in the forwarder to aid notification delivery. This is required to scale notifications at the same time apply notification policies, such as filter notifications or to improve notification reliability and efficiency to subscribing users <xref target="pushccn" />.

<!--<t>
As suggested earlier, Content Objects in the notifications shouldn't be cached by the intermediate forwarders.  This feature caters to the set of consumers who want to PULL content from the intermediate routers rather than be notified. The name of the content object can be learned through other means by the consuming applications, e.g through a control channel with the notification service. In this case, the forwarder shall identify such a content-object in the Interest-Notification and cache it. The cache management for content-object obtained from notification traffic can be subjected to different policy from those from Interest PULL.
</t>
-->
</t>

</list>



<!--It could match multiple destinations
A new primitive could specify if routers should forward it only on one face (single destination) or on all matching faces (all possible destinations)
Notifications with the same name are not idempotent, same notification name with differing encapsulated content name is also allowed
Rate limit can be imposed by intermediate routers to mitigate flood of unsolicited traffic
PIT entries can help unreliable networks, however, with the simple notification scheme PIT entries are not allowed
There is not Notification acknowledgement proposed
A Notification acknowledgement would not work with multiple destinations anyway-->

</t>
</section>




<section anchor="Reliability" title="Notification reliability">

<t>
This proposal doesn't provide any form of reliability. Reliability can be realized by the specific application using the proposed notification primitive, for instance using the following potential approaches:
</t>

<t>
Caching: This proposal doesn't propose any form of caching. But caching feature can be explored to improve notification reliability, and this is a subject of future study. For instance, consumers, which expect notifications and use external means (such as periodic updates or by receiving manifests) to track notifications, can recover the lost notifications using the PULL feature of CCN.
</t>

<t>
Notification Acknowledgment: If the producer maintains per-receiver state, then the consumer can send back notification ACK or NACK to the producer of having received or not received them.
</t>

<t>

</t>

</section>

<section anchor="UseCase" title="Use Case Scenarios">
<t>
Here we provide the discussions related to the use of Notification in different scenarios.
</t>

<section anchor="PUB-SUB" title="Realizing PUB/SUB System">

<t>
A PUB/SUB system provides a service infrastructure for subscribers to request update on a set of topics of interest, and with multicast publishers publishing content on those topics. A PUB/SUB system maps the subscribers' interests to published contents and pushes them as Notifications to the subscribers. A PUB/SUB system has many requirements as discussed in <xref target="COPS" /> which include low latency, reliability, fast recovery, scalability, security, minimizing false (positive/negative) notifications. 
</t>

<t>
Current IP based PUB/SUB systems suffer from interoperability challenges because of application-defined naming approach and lack of support of multicast in the data plane. The proposed Notification primitive can be used to realize large scale PUB/SUB system, as it unifies naming in the network layer and support for name-based multicasting.
</t>

<t>
Depending on the routing strategy discussed earlier, two kind of PUB/SUB approaches can be realized : 1) Rendezvous style approach ; 2) Distributed approach. Each of these approaches can use the Notification primitive to implement their PUSH service.
</t>

<t>
In the Rendezvous style approach, a logically centralized service maps subscriber's topic interest with the publisher's content and pushes it as notifications. If stateless forwarding is used, the routing entries contain specific application-ID's requesting a given notification, to handle scalability, a group of these application can share a multicast-ID reducing the state in the FIB.
</t>

<t>
In the Distributed approach, the CCN/NDN protocol is further enhanced with new subscription primitive for the subscription interested consumers. When a consumer explicitly susbcribes to a multicast topic, its subscription request is forwarded to the upstream forwarder which manages this state mapping between subscription names to the downstream faces which has expressed interest for Notifications being pushed under that prefix. An example of the network layer based approach is the COPSS notification proposal <xref target="COPS" />. Here a PUB/SUB multi-cast state state, called the subscribers interest table, is managed in the forwarders. When a Notification arrives at a forwarder, the content descriptor in the notification is matched to the PUB/SUB state in the forwarder to decide the faces over which the Notification has to be forwarded. 
</t>

</section>



</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="fiveG">
      <front>
          <title>Scenarios for 5G Mobile and Wireless Communications: The Vision of the METIS Project.</title>
          <author initials="A et al" surname="Osseiran" fullname="A.Osseiran"></author>
     <date year="2014"></date>
        </front>
        <seriesInfo name="IEEE Communication Magazine" value="" />
   </reference>

   <reference anchor="DNS-SEC">
      <front>
          <title>http://www.ietf.org/rfc/rfc4033.txt.</title>
         <author  initials="DNS-SEC" surname="DNS Security Introduction and Requirements" fullname=" DNS-SEC"> 
     </author>
     <date year="2005"></date>
        </front>
   </reference>

<reference anchor="observe">
      <front>
          <title>https://tools.ietf.org/html/draft-ietf-core-observe-16.</title>
         <author  initials="observe" surname="Observing Resources in CoAp" fullname="COAP-Observe"> 
     </author>
     <date year="2015"></date>
        </front>
   </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="COPS">
      <front>
          <title>COPS: An Efficient Content Oriented Publish/Subscribe System.</title>
         <author initials="J" surname="Chen"  fullname="Jiachen Chen">
      </author>
     <author initials="M" surname="Arumaithurai" fullname="Mayutan Arumaithurai"></author>
     <author initials="L" surname="Jiao" fullname="Lei Jiao"></author>
     <author initials="X" surname="Fu" fullname="Xiaoming Fu"></author>
     <author initials="K" surname="Ramakrishnan" fullname="K. Ramakrishnan"></author>
     <date year="2011"/>
        </front>
        <seriesInfo name="ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS 2011)" value="" />
   </reference>


   <reference anchor="push">
      <front>
          <title>Internet of Things via Named Data Networking: The Support of Push Traffic</title>
         <author initials="M" surname="Amadeo"  fullname="Marcia Amadeo"></author>
     <author initials="C" surname="Campolo" fullname="Claudia Campolo"></author>
     <author initials="A" surname="Molinaro" fullname="Antonella Molinaro"></author>
     <date year="2014"/>
        </front>
        <seriesInfo name="Network of the Future (NOF), 2014 International Conference and Workshop on the" value="" />
   </reference>

   <reference anchor="pushccn">
      <front>
          <title>CCN Traffic Optimization for IoT</title>
         <author initials="J" surname="Francois et al"  fullname="J Francois"></author>
     <date year="2013"/>
        </front>
        <seriesInfo name="Proc. of NoF" 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="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> 
<reference anchor="xia">
      <front>
          <title>https://www.cs.cmu.edu/~xia/</title>
      <author initials="XIA" surname="NSF FIA project" fullname="XIA: NSF FIA project">
      </author>
      <date year="2010"/>
     </front>
        
   </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>
  
   </references>
   

</back>
</rfc>

