<?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-lv-homenet-service-centric-architecture-00" 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="Service Centric Homenet">Service Centric Networking Architecture for Smart Homes</title>

    <author fullname="Bo Lv" initials="B." surname="Lv">
      <organization>CAEIT</organization>
      <address>
        <postal>
          <street>11 Shuangyuan Road</street>

          <!-- Reorder these if your country does things differently -->

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100041</code>

          <country>China</country>
        </postal>

        <phone></phone>

        <email>lv1985bo@163.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    
    <author fullname="Yue Jia" initials="Y." surname="Jia">
      <organization>CAEIT</organization>
      <address>
        <postal>
          <street>11 Shuangyuan Road</street>

          <!-- Reorder these if your country does things differently -->

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100041</code>

          <country>China</country>
	
	</postal>

        <phone></phone>

        <email>jiayuebupt@163.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    
    <author fullname="Min Liang" initials="M." surname="Liang">
      <organization>CAEIT</organization>
      <address>
        <postal>
          <street>11 Shuangyuan Road</street>

          <!-- Reorder these if your country does things differently -->

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100041</code>

          <country>China</country>
	
	</postal>

        <phone></phone>

        <email>liangmin82@163.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
   
    <author fullname="Yaiyong Xie" initials="H.Y." surname="Xie">
      <organization>CAEIT</organization>
      <address>
        <postal>
          <street>11 Shuangyuan Road</street>

          <!-- Reorder these if your country does things differently -->

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100041</code>

          <country>China</country>
	
	</postal>

        <phone></phone>

        <email>caeitic@163..com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
   
    <date year="2015" />

    <!-- 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>Internet Engineering Task Force</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>service centric network</keyword>
    <keyword>smart home</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>
			
			Content centric networking (CCN) is a novel and popular paradigm for data dissemination in contrast to host centric IP networking, which suitable to internet of things (IoT) scenario especially. However, CCN is not perfectly fit for smart home network (homnet) as there are lots of service message, other than purely data packet, need to be handed. We propose to use a Service Centric Network (SCN) scheme to support homnet.
		</t--> 
		<t>	
			We propose a general service centric homenet architecture, which can handle the diversity of devices, services, applications and context. Especially, we focus on building an overall home network topology, routing and naming structures, to fit SCN into a home network. In the future, we will discuss homenet caching, mobility and security in details.

		</t>
    </abstract>

  </front>

  <middle>


<section anchor="intro" title="Introduction">

	<t>Many researchers believe that the legacy IP network architecture is not suitable for Internet of Things due to IPv4 address depletion and various concerns such as security, overhead and efficiency. Smart home networking is a special scenario of Internet of Things. We believe that the legacy IP network architecture is not suitable. Inspired by the recently proposed concept of the content centric network, we strongly believe that a simpler but more appropriate networking architecture is necessary and important for the success of homenets. </t>

	<t>In the homenet, the networked devices have heterogeneous ways of connecting to the Internet, often with severe resource constraints and many of which are mobile. Interactions between the applications and devices are often real-time and dynamic, requiring strong security and privacy protections. In order to address these challenges, we propose a service-centric networking architecture to achieve efficient, secure, and reliable networking services for smart homes.</t>


	<section anchor="term" title="Terminology and Abbreviations">
	<t>Region router: inner routers to deliver contents.</t>
	<t>Homnet gateway: a connection between homenet and outside networks. It also performs pre-processing and aggregation of contents.</t>
	<t>ISP gateway: An entity that provides access to the Internet.</t>
	<t>Device: in a smart home network scenario, there are two main kinds of devices. Some of the devices can generate instant content or stream content like smoke sensor and surveillance. The rest devices can only perform commands from users or application and change their states such as lights, air conditions and fridge.</t>
	<t>CCN: Content Centric Network</t>
	<t>SCN: Service Centric Network</t>
	<t>ISP: Internet Service Provider</t>
	<t>PIT: Pending Interest Table</t>
	<t>CS:  Content Storage</t>
	<t>APP: application</t>
	<t>MAC: Media Access Control</t>
	</section>  <!-- term -->

</section>  <!-- intro -->

<section anchor="homenet_arch" title="Homenet Architecture">
	<section anchor="arch_princ" title="General Principles">
		<t> Home network has driven a huge amount of attentions from both researchers and industries. While home network grows in complexity as more smart appliances, sensor and network devices join in, we would like to use SCN to fit into home network's scenario which has plenty of control information as well as data information.</t>
	</section>  <!-- arch_princ -->

	<section anchor="homenet_topo" title="Homenet Architecture">
		<t>Based on a state-of-the-art study, we propose following homenet topology as a basic model.</t>
 
	<t>Homenet Gateway has the ability to pre-process and aggregation data and then sending to those interested devices. Homenet gateway will hold PIT, FIB and CS tables for sending corresponding message to region routers, consumers and outside networks.</t>
	<t>Region routers are located at different regions which could be different rooms or floors. Normally one region will have one sub controller as long as the total number of devices is under the capacity of the region router. Region routers only perform the role of collecting information and then send them all to the homenet gateway for further processing. They will have PIT, FIB and CS tables for sending corresponding message to devices.</t>
						<figure src='v-arch.png' alt='[The Vertical Architecture]'>
							<!--preamble>This is the preamble.</preamble-->
							<artwork>

      +--------+   +--------+ 
      | Device |   | Device |
      +--------+   +--------+
            \       /
             \     /
            +----------+                                      +--------+	
            |  Region  |                                      |  End   |
            | Router_1 |                                      |  User  |
            +----------+                                      +--------+
                 \                                                |
                  \                               Firewall        |
                +----------+       +-----------+            +-----------+
+--------+      |  Region  |       |   Home    |     ||     |           |
| Device |------| Router_2 |-------|  Gateway  |-----||-----|    ISP	|
+--------+      +----------+       +-----------+     ||     |           |
                   /                    |                   +-----------+
                  /                     |			
             +----------+            +------+
             |  Region  |            | End  |
             | Router_3 |            | User |
             +----------+            +------+
              /       \
             /         \
        +--------+   +--------+
        | Device |   | Device |
        +--------+   +--------+
							</artwork>
							<!--postamble>This is the postamble.</postamble-->
						</figure>
	<t>Devices (sensors, applications, users, actuator and so on) are connected to their nearest region routers. Some of them, like sensors and users, will produce real time data packet and push them to their region routers. Some of the devices, such as applications and users which have special concern, will register their interests to region routers and home gateway. The rest kinds of end devices, like furniture and electric appliances, will wait for commands to adjust their behaviours. An end device can perform several roles, take a user as an example, the user can push heart beat rate as well as ask for room temperature information and then send control information to manipulate air condition.</t>
	<t>ISP gateway: The homenet gateway connects to the Internet service provider (ISP) gateway, through which the homnet can connect to application and end users, who have been authorized, at outside internet.</t>
	<t>Devices that generate real time data, such as smoke sensor and temperature sensor, will be configured to periodically upload their data to a neighbouring region router. At the same time, those sensors can also respond to an interest massage to report their current readings.</t>
	<t>Other devices that generate stream content, such as surveillance, will store stream data with sequence numbers and waiting for command from end user or application.</t>
	<t>A client or application sends interests messages for services to be invoked and the results from service execution or state transitions are returned in data packet.</t>
	</section>  <!-- homenet_topo -->

	<section anchor="arch_name" title="Homenet Naming">
	<t>In smart home network scenario, data is not just retrieved, but can be processed before being presented to the user. Also end users and applications can deliver command content. So we propose to extent names not only for content but also for services to be invoked. Information generated inside a smart home has finite kinds of types. So it is sensible to tailor the naming strategy into the following structure:</t>
	<t>'Access scope/service type/device scope/service API/'</t>
	<t>In a service centric network, services may be restricted to only local access and/or set for global access through the Internet. Also, a service may have strict access control, and temporal or physical restrictions in terms of where it can accessed in the smart home network. So the first segment 'access scope' indicates who can access this service. The second level 'service type' shows the type of data and it can be instant content, stream content and command content. The third level 'device scope' can accurately locate device or a group of devices that provide this service. The final scope 'service API' identifies the functional primitives and attributes used to interact with the service which can be upload(), switch_on(), mode_1() and so on.</t>
	<t>Following are examples of naming messages.</t>
	<t>In order to collect all the smoke condition in the house, Fire Alarm broadcasts an instant content interest packet to the network with the name of </t> 
	<t>'/smarthome/instance/smoke/'</t>
	<t>Smart home Application wants to get access to all the cameras on the second floor, a stream content interest is broadcasted to Router B with the name of</t> 
	<t>'/smarthome/stream/camera/2F'</t>
	<t>Smart home Application wants to send a command to turn off all the lights on the second floor</t>
	<t>'/smarthome/command/light/2F/set_state{OFF}';</t>
	</section>  <!-- arch_name -->

	<section anchor="arch_routing" title="Homenet Routing">
	<t>In this architecture, a router maintains a pending interest table (PIT) for outstanding forwarded requests, which enables request aggregation, to make sure that a router would normally not forward a second interest for a specific content in a particular time span. The PIT maintains state for all interests and maps them to MAC addresses, which are used as unique node identifiers. Data is then routed back on the reverse request path using this state. Service centric network architecture also supports on-path caching and name-based security.</t>
	<t>The novelty of this architecture's routing is reflected in the following aspects:</t>
	<t>(1) Content pushing is more important than content pulling in some smart home scenarios, such as periodically uploading humidity data collected by sensors or flooding emergency messages triggered by fire alarms. These contents must be quickly disseminated toward the intended locations even though there is no request. Assuming that some sensors lack of storage capacity, the data collected by sensors are sent to the nearest router periodically via wire or wireless channel to leverage the large storage space of routers.</t>
	<t>(2) A consumer uses interest packet to request content from the network. Following the naming scheme, the consumer declares the service type in the name of the interest. Interest packet is broadcasted to all the neighbouring routers. Different service types do not influence the maintenance of PIT table and the forwarding scheme, so the architecture has a good compatibility with other information centric architectures.</t>
	<t>(3) To solve the problem of control message delivering, a novel mechanism is introduced. A command message generated by a controller is seen as an interest packet, known as command content interest. The name of the interest is the device name which intends to be controlled. The content requested by the controller is the state of the device after the command is successfully delivered. The command content interest follows the same procedure as an ordinary interest to realize the delivery of a command. The command content can also be seen as the acknowledgement of a command message.</t>
	</section>  <!-- arch_routing -->

	<section anchor="use_case" title="Use Cases">
		<t>Three scenarios are discussed to demonstrate the feature of SCN when handling different services.</t>
		<section anchor="use_case1" title="Smoke Monitering Service">
						<figure src='v-arch.png' alt='[The Vertical Architecture]'>
							<!--preamble>This is the preamble.</preamble-->
							<artwork>
     +----------+              +-------------+
     |  Smoke   |              |  Smart home |
     | Sensor B |              |     APP     |
     +----------+              +-------------+
          \                       /
           \                  (7)/(6)
            \                   /
        +----------+  (3)  +----------+        +----------+
        | Router A |-------| Router B |--------|   Home   |
        |   [CS]   |  (4)  |   [CS]   |        |  Gateway |
        +----------+       +----------+        +----------+
            /                    \
        (1)/                   (5)\(2)
          /                        \
     +----------+              +----------+
     |  Smoke   |              |   Fire   |
     | Sensor A |              |  Alarm   |
     +----------+              +----------+
							</artwork>
							<!--postamble>This is the postamble.</postamble-->
						</figure>
		<t>STEP 1: Smoke Sensor A periodically uploads the instant smoke data to its neighbouring router to leverage the large storage space of Router A;</t>
		<t>STEP 2: In order to collect all the smoke condition in the house, Fire Alarm broadcasts an instant content interest packet to the network with the name of '/smarthome/instance/smoke/';</t>
		<t>STEP 3: On receiving the interest packet from Fire Alarm, Router B updates its PIT table and forwards it to Router A;</t>
		<t>STEP 4 and 5: After Router A receives the interest packet from Router B, the instant smoke content is forwarded to Router B and Fire Alarm using the backward route;</t>
		<t>STEP 6 and 7: Suppose that Smart home APP want to request all the instant monitoring data in the house, an interest packet is sent to Router B with the name of '/smarthome/instance/'. The smoke content data uploaded by Smoke Sensor A is forwarded to APP directly from Router B, thanks to the caching scheme of SCN.</t>
		</section>  <!-- use_case1 -->

		<section anchor="use_case2" title="Video Streaming Service">
						<figure src='v-arch.png' alt='[The Vertical Architecture]'>
							<!--preamble>This is the preamble.</preamble-->
							<artwork>
     +----------+              +-------------+
     | Camera A |              |  Smart home |
     | (Floor1) |              |     APP     |
     +----------+              +-------------+
          \                       /
           \                  (6)/(1)
            \                   /
        +----------+  (2)  +----------+        +----------+
        | Router A |-------| Router B |--------|   Home   |
        |   [CS]   |  (5)  |   [CS]   |        |  Gateway |    
        +----------+       +----------+        +----------+
            /                  
        (4)/(3)                   
          /                       
     +----------+
     | Camera B |
     | (Floor2) |     
     +----------+ 
							</artwork>
							<!--postamble>This is the postamble.</postamble-->
						</figure>
	<t>STEP 1: Smart home Application wants to get access to all the cameras on the second floor, a stream content interest is broadcasted to Router B with the name of '/smarthome/stream/camera/2F';</t>
	<t>STEP 2: On receiving the interest packet, Router B updates its PIT table and forwards it to Router A;</t>
	<t>STEP 3 and 4: On receiving the interest packet, Camera B send video stream content to Router with the name of '/smarthome/stream/camera/2F/caremaB' and an increasing sequence number;</t>
	<t>STEP 5 and 6: The stream content is forwarded to Smart home Application using the backward route and is saved by Router A and Router B.</t>
		</section>  <!-- use_case2 -->

		<section anchor="use_case3" title="Command Delivering Service">
						<figure src='v-arch.png' alt='[The Vertical Architecture]'>
							<!--preamble>This is the preamble.</preamble-->
							<artwork>
     +----------+              +-------------+
     | Light A  |              |  Smart home |
     | (Floor1) |              |     APP     |
     +----------+              +-------------+
          \                       /
           \                  (6)/(1)
            \                   /
        +----------+  (2)  +----------+        +----------+
        | Router A |-------| Router B |--------|   Home   |
        |   [CS]   |  (5)  |   [CS]   |        |  Gateway |    
        +----------+       +----------+        +----------+
            /                   \
        (4)/(3)               (8)\(7)              
          /                       \
     +----------+              +----------+
     | Light B  |              |  Central |
     | (Floor2) |              |  Monitor |
     +----------+              +----------+
							</artwork>
							<!--postamble>This is the postamble.</postamble-->
						</figure>
	<t>STEP 1: Smart home Application wants to send a command (eg. turn off) to all the lights on the second floor, a command content interest is broadcasted to Router B with the name of '/smarthome/command/light/2F/' and with the service API's value of 'set_state{OFF}';</t>
	<t>STEP 2: On receiving the interest packet, Router B updates its PIT table and forwards it to Router A;</t>
	<t>STEP 3: On receiving the interest packet, Light B changes its state into OFF and return a content packet with the name of '/smarthome/command/light/2F/lightB' and with the service API's value of state{OFF}';</t>
	<t>STEP 4, 5 and 6: The content packet is forwarded to Smart home Application using the backward route and is saved by Router A and B;</t>
	<t>STEP 7 and 8: If the Central Monitor want to know the state of all the lights in the house, an interest packet is broadcasted with the name of '/smarthome/command/light/'. The state of Light B is forwarded to Central Monitor directly from Router B, thanks to the caching scheme of SCN.</t>
		</section>  <!-- use_case3 -->


	</section>  <!-- use_case -->

	<section anchor="arch_other" title="Other Considerations">
		<t>Mobility:</t>
		<t> Sensor or end user move around (step between different networks or move between different regions), they may need to connect to different region routers. Mobility support for both service producers and consumers is required to ensure best connectivity at all times. This includes nomadic movement, seamless mobility to handle real-time applications, and vertical handovers between different access networks as residents move in and out of their region premise.</t>
		<t>Scalability:</t> 
		<t>One of the benefits for applying SCN rather than IP is that SCN could support as many devices as needed, while IPV4 or IPV6 could run out of available addresses.</t>
		<t>Security:</t>
		<t>A new device joins in (public key encrypt, private key decrypt to guarantee authority), information or data generated inside the smart home should keep confidential and private, and accessible through strict access control; it is safer to use SCN than IP architecture.</t> 
	</section>  <!-- arch_other -->

</section>  <!-- homenet_arch -->

<!--section anchor="secur" title="Security Considerations">

   <t>TBD.</t>

</section -->  <!-- secur -->


<section anchor="IANA" title="IANA Considerations">

   <t>This document makes no specific request of IANA.</t>
   
   <t>Note to RFC Editor: this section may be removed on publication as an RFC.</t>

</section>  <!-- IANA -->

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

<references title="Informative References">

   <reference anchor="abstr">
      <front>
          <title>Service-Centric Network</title>
         <author initials="T." surname="Braun" fullname="T. Braun">
            <organization></organization>
         </author>
         <author initials="V." surname="Hilt" fullname="V. Hilt">
            <organization></organization>
         </author>
         <date month="June" year="2011"/>
      </front>
   </reference>

   <reference anchor="onix">
       <front>
          <title>Home Networking Architecture for IPv6 (RFC7368)</title>
         <author initials="T." surname="Chown" fullname="T. Chown">
      <organization></organization>
         </author>
         <date month="October" year="2014"/>
      </front>
   </reference>

</references>

  </back>
</rfc>
