One document matched: draft-xia-sdnrg-nemo-language-00.xml


<?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" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
]>
<?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. -->
<?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="3"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- 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="std" docName="draft-xia-sdnrg-nemo-language-00"
     ipr="trust200902">
  <front>
    <title abbrev="NEtwork MOdeling Language">NEMO (NEtwork MOdeling)
    Language</title>

    <author fullname="Yinben Xia" initials="Y." role="editor" surname="Xia">
      <organization>Huawei Technologies Co., Ltd</organization>

      <address>
        <postal>
          <street>Q14, Huawei Campus, No.156 Beiqing Road</street>

          <city>Hai-Dian District, Beijing, 100095</city>

          <country>P.R. China</country>
        </postal>

        <email>xiayinben@huawei.com</email>
      </address>
    </author>

    <author fullname="Sheng Jiang" initials="S." role="editor" surname="Jiang">
      <organization>Huawei Technologies Co., Ltd</organization>

      <address>
        <postal>
          <street>Q14, Huawei Campus, No.156 Beiqing Road</street>

          <city>Hai-Dian District, Beijing, 100095</city>

          <country>P.R. China</country>
        </postal>

        <email>jiangsheng@huawei.com</email>
      </address>
    </author>

    <author fullname="Tianran Zhou" initials="T." role="editor" surname="Zhou">
      <organization>Huawei Technologies Co., Ltd</organization>

      <address>
        <postal>
          <street>Q14, Huawei Campus, No.156 Beiqing Road</street>

          <city>Hai-Dian District, Beijing, 100095</city>

          <country>P.R. China</country>
        </postal>

        <email>zhoutianran@huawei.com</email>
      </address>
    </author>

    <author fullname="Susan Hares" initials="S." surname="Hares">
      <organization>Huawei Technologies Co., Ltd</organization>

      <address>
        <postal>
          <street>7453 Hickory Hill</street>

          <!-- Reorder these if your country does things differently -->

          <city>Saline</city>

          <region>CA</region>

          <code>48176</code>

          <country>USA</country>
        </postal>

        <email>shares@ndzh.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <!--<Sheng> It is actually network service orchestration interface.-->

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

    <area>IRTF</area>

    <workgroup>SDNRG</workgroup>

    <keyword>SDN Controller Northbound Interface, NEtwork MOdeling
    Language</keyword>

    <abstract>
      <t>The North-Bound Interface (NBI), located between the network control
      plane and the applications, is essential to enable the application
      innovations and nourish the eco-system of SDN. </t>

      <t>While most of the NBIs are provided in the form of API, this document
      proposes the NEtwork MOdeling (NEMO) language which is anther NBI
      fashion. Concept, model and syntax are introduced in the document. </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>While SDN (Software Defined Network) is becoming one of the most
      important directions of network evolution, the essence of SDN is to make
      the network more flexible and easy to use. The North-Bound Interface
      (NBI), located between the control plane and the applications, is
      essential to enable the application innovations and nourish the
      eco-system of SDN by abstracting the network capabilities/information
      and opening the abstract/logic network to applications.</t>

      <t>The NBI is usually provided in the form of API (Application
      Programming Interface). Different vendors provide self-defined API sets.
      Each API set, such as OnePK from Cisco and OPS from Huawei, often
      contains hundreds of specific APIs. Diverse APIs without consistent
      style are hard to remember and use, and nearly impossible to be
      standardized.</t>

      <t>Most of those APIs are designed by network domain experts, who are
      used to thinking from the network system perspective. The interface
      designer does not know how the users will use the device and exposes
      information details as much as possible. It enables better control of
      devices, but leaves huge burden of selecting useful information to users
      without well training. Since the NBI is used by network users, a more
      appropriate design is to think from the user perspective and abstract
      the network from the top down. <xref
      target="I-D.sdnrg-service-description-language"></xref> describe the
      requirements for a service description language and the design
      considerations.</t>

      <t>A top-down NBI design contains following features:</t>

      <t><list style="symbols">
          <t>Express user intent<vspace blankLines="1" />To simplify the
          operation, applications or users can use the NBI directly to
          describe their requirements for the network without taking care of
          the implementation. All the parameters without user concern will be
          concealed by the NBI.</t>

          <t>Platform independent<vspace blankLines="1" />With the NBI, the
          application or user can describe network demand in a generic way, so
          that any platform or system can get the identical knowledge and
          consequently execute to the same result. Any low-level and
          device/vendor specific configurations and dependencies should be
          avoided.</t>

          <t>Intuitive domain specific language (DSL) for network<vspace
          blankLines="1" />The expression of the DSL should be human-friendly
          and be easily understood by network operators. DSL should be
          directly used by the system.</t>

          <t>Privilege control<vspace blankLines="1" />Every application or
          user is authorized within a specific network domain, which can be
          physical or virtual. While different network domains are isolated
          without impact, the application or user may have access to all the
          resource and capabilities within its domain. The user perception of
          the network does not have to be the same as the network operators.
          The proposed NEtwork MOdeling (NEMO) language works on the user's
          view so the users can create topologies based on the resources the
          network-operators allow them to have.</t>

          <t>Declarative style<vspace blankLines="1" />As described above,
          NEMO language is designed to help defining service requirement to
          network, detailed configurations and instructions performed by
          network devices are opaque to network operators. So NEMO language
          should be declarative rather than imperative. </t>
        </list>To implement such an NBI design, we can learn from the
      successful case of SQL (Structured Query Language), which simplified the
      complicated data operation to a unified and intuitive way in the form of
      language. Applications do not care about the way of data storage and
      data operation, but to describe the demand for the data storage and
      operation and then get the result. As a data domain DSL, SQL is simple
      and intuitive, and can be embedded in applications. So what we need for
      the network NBI is a set of "network domain SQL". </t>
    </section>

    <section title="Terminology">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in <xref
      target="RFC2119"></xref> when they appear in ALL CAPS. When these words
      are not in ALL CAPS (such as "should" or "Should"), they have their
      usual English meanings, and are not to be interpreted as <xref
      target="RFC2119"></xref> key words.<list hangIndent="5" style="hanging">
          <t hangText="Network service">also "service" for short, is the
          service logic that contains network operation requirements;</t>

          <t hangText="Network APP">also "APP" for short, is the application
          to implement the network service;</t>

          <t hangText="Network user">also "user" for short, is the network
          administrator or operator.</t>
        </list></t>
    </section>

    <section title="Related work">
      <t>YANG is a data modeling language used to model configuration and
      state data manipulated by the Network Configuration Protocol (NETCONF),
      NETCONF remote procedure calls, and NETCONF notifications <xref
      target="RFC6020"></xref>. Although it is extensible for more data
      modeling in addition to NETCONF, YANG is not capable of describing high
      level network requirements, such as SLA (Service Level Agreement). YANG
      is designed for north-bound interfaces of the device, which is also the
      south-bound of the controller. It is not proper to model the north-bound
      interface of the controller, aka the NBI. Moreover, the YANG is not
      capable of describing the service processing logic, which typically
      includes transition of conditions and states.</t>

      <t>UML (Unified Modeling Language) is a powerful modeling language,
      which is domain agnostic. It is hard to describe the network demand, and
      cannot be embedded in network applications. UML is appropriate to
      describe the model behind the NBI language not the NBI itself.</t>

      <t>With the emergence of the SDN concept, it is a consensus to simplify
      the network operation, which leads to many cutting-edge explorations in
      the academic area.</t>

      <t>Nick McKeown from Stanford University proposed the SFNet <xref
      target="TSFNet"></xref>, which translated the high level network demand
      to the underlying controller interfaces. By concealing the low level
      network details, the controller simplified the operation of resource,
      flow, and information for applications. The SFNet is used for the SDN
      architecture design, and does not go into the NBI design.</t>

      <t>Jennifer from Princeton University designed the Frenetic <xref
      target="Frenetic"></xref> based on the OpenFlow protocol. It is an
      advanced language for flow programming, and systematically defines the
      operating model and mode for the flow. However, the network requirement
      from the service is not only the flow operations, but also includes
      operations of resource, service conditions, and service logic.</t>

      <t>In the book <xref target="PBNM"></xref>, John Strassner defined the
      policy concept and proposed the formal description for network
      operations by using the policy. The method for querying network
      information is absent in the book. Virtual tenant network and operations
      to the tenant network are not considered.</t>

      <t>All these investigations direct to the future SDN that use simple and
      intuitive interfaces to describe the network demands without complex
      programming.</t>
    </section>

    <section title="The NEMO Language overview">
      <t>NEMO language is a domain specific language (DSL) based on
      abstraction of network models and conclusion of operation patterns. It
      provides NBI fashion in the form of language. With limited number of key
      words and expressions, NEMO language defines the entity and capability
      models for users with different view of network abstraction, and enables
      network users/applications to describe their demands for network
      resources, services and logical operations in an intuitive expression.
      And finally the NEMO language description can be explained and executed
      by a language engine.</t>

      <section title="Network Model of the NEMO Language">
        <t>Behind the NEMO language, there is a set of meta-models abstracting
        the network demands from the top down according to the service
        requirement. Those demands can be divided into two types: the demand
        for network resources and the demands for network behaviors.</t>

        <t>The network resource is composed of three kinds of entities: node,
        link and flow. Each entity contains property and statistic
        information. With a globally unique identifier, the network entity is
        the basic object for operation.</t>

        <t><list style="symbols">
            <t>Node model: describes the entity with the capability of packet
            processing. According to the functionality, there are three types
            of node<list style="symbols">
                <t>The forwarding node (FN) only deals with L2/3 forwarding.
                It forwards packets according to the forwarding table and
                modifies packet heads.</t>

                <t>The processing node (PN) provides L4-7 network services,
                and will modify the body of packets.</t>

                <t>The logical node (LN) describes a set of network elements
                and their links, such as subnet, autonomous system, and
                internet. It conceals the internal topology and exposes
                properties as one entity. It also enables iteration, i.e., a
                network entity may include other network entities.</t>
              </list></t>

            <t>Link model: describes the connectivity between node entities.
            According to the forwarding capability, links are usually divided
            into layer 2 and layer 3 types</t>

            <t>Flow model: describes a sequence of packets with certain common
            characters, such as source/destination IP address, port, and
            protocol. From the northbound perspective, flow is the special
            traffic with user concern, which may be per device or across many
            devices. So the flow characters also include ingress/egress node,
            and so on.</t>
          </list>Network behavior includes the information and control
        operations.</t>

        <t>The information operation provides two methods to get the network
        information for users.</t>

        <t><list style="symbols">
            <t>Query: a synchronous mode to get the information, i.e., one can
            get the response when a request is sent out.</t>

            <t>Notification: an asynchronous mode to get the information,
            i.e., with one request, one or multiple responses will be sent to
            the subscriber automatically whenever trigger conditions meet.</t>
          </list>The NEMO language uses policy to describe the control
        operation.</t>

        <t><list style="symbols">
            <t>Policy: control the behavior of specific entities by APP, such
            as flow policy, node policy. All the policies follow the same
            pattern "with <condition>, to execute <action>", and
            can be applied to any entity</t>
          </list></t>
      </section>

      <section title="Primitives">
        <t>The primitives of NEMO language are derived from the network model,
        and fall into four categories.</t>

        <t><list style="letters">
            <t>Resource access primitives<figure>
                <artwork><![CDATA[Node/UnNode  entity_id  Type {FN|PN|LN} 
                        Owner node_id 
                        Properties  key1 ,value1

Node/UnNode:   create/delete a node
Entity id:     system allocated URI for the node entity 
Type:          Node type of FN (forwarding node), PN (processing node) 
               or LN (logical node) 
Owner:         since the node can be nested, this primitive figures 
               out which node the new one belongs to
Properties:    other properties to describe the node in the form of 
               (key, value).


Link/UnLink  entity_id   Endnodes (node1_id,node2_id) 
                         SLA key,value 
                         Properties  key1 ,value1 

Link/UnLink:   create/delete a link.
Entity id:     system allocated URI for the link entity
Endnodes:      two end-node IDs of the link
SLA:           SLA description for the link
Properties:    other properties to describe the link in the form of 
               (key, value).


Flow/UnFlow  entity_id  Match/UnMatch key1, value1|
                        Range(value, value) |
                        Mask(value, value) 
                        Properties  key1 ,value1 

Flow/UnFlow:   create/delete a flow.
Match/UnMatch: create/delete match items for the flow
Range:         describe the range of the value
Mask:          use mask to describe a range of the value
Properties:    other properties to describe the flow in the form of 
               (key, value).
]]></artwork>
              </figure></t>

            <t>Behavior primitives<figure>
                <artwork><![CDATA[Query   key  Value {value}
             From entity_id

Query:         generate a synchronously query
key:           the parameter name to be queried 
Value:         the return value for the query
From:          the entity to be queried (define entity_id). 


Policy/UnPolicy  policy_id  Appliesto  entity_id  
                            Condition {expression}       
                            Action {"forwardto"|"drop"|"gothrough"|
                            "bypass"|"guaranteeSLA"|"Set"|
                            "Packetout"|Node|UnNode|Link|Unlink}

Policy/UnPolicy: create/delete a policy
Appliesto:     apply the policy to an entity  
Condition:     condition to execute the policy
Action:        actions to be executed when conditions are met


Notification/UnNotification    entity_id   On  key  
                                           Every  period  
                                           RegisterListener
                                              callbackfunc 

Notification/UnNotification: create/delete a notification for an 
               entity
On:            the notification will monitor the state change of a 
               parameter identified by the "key"
Every:         time period at which to report the state 
RegisterListener: the callback function that is used to process the 
               notification.
]]></artwork>
              </figure></t>

            <t>Connection management primitives<figure>
                <artwork><![CDATA[Connect   conn_id     Address  ip_address  
                      Port port_num
Disconnect  conn_id 

Connect:       set up a connection to the controller
Address:       IP address of the controller to connect to
Port:          port of the controller to connect to
Disconnect:    disconnect to the controller.
]]></artwork>
              </figure></t>

            <t>Transaction primitives<figure>
                <artwork><![CDATA[Transaction
Commit

Transaction:   indicate the beginning of a transaction
Commit:        commit to execute the transaction
]]></artwork>
              </figure></t>
          </list></t>
      </section>
    </section>

    <section title="The NEMO Language Examples">
      <t>A tenant needs two connections to carry different service flows
      between two datacenters.</t>

      <t>one connection of the tenant is 40G bandwidth with less than 400ms
      delay, another connection is 100M bandwidth with less than 50ms
      delay.<figure>
          <artwork><![CDATA[{
   Link Link1_id 
      Endnodes (DC1_node_id, DC2_node_id) 
      Property "NAME","DC1_DC2_link_one","Bandwith",40G,"Delay",400ms 
   Link Link2_id 
      Endnodes (DC1_node_id, DC2_node_id) 
      Property "NAME","DC1_DC2_link_two","Bandwith",100M,"Delay",50ms 
}
]]></artwork>
        </figure>The tenant has two types of traffic, CDN sync traffic uses
      high bandwidth connection and online game traffic uses low latency
      connection.</t>

      <t><figure>
          <artwork><![CDATA[{
   Flow flow1_id
      Match "srcip","10.0.1.1/24","dstip","20.0.1.1/24","Port","55555" 
      Property "NAME","CDN sync flow","Bidirection","true"
   Flow flow2_id
      Match "srcip","10.0.1.1/24","dstip","20.0.1.1/24","Port","56663" 
      Property "NAME","online Game","Bidirection","true"
   Policy  policy1_id  
      Appliesto flow1_id 
      Action "forwardto",link1_id
   Policy  policy2_id  
      Appliesto flow2_id 
      Action "gothrough",link2_id
}
]]></artwork>
        </figure>The tenant wants the online game traffic to go through WOC in
      nighttime before it is carried by low latency connection.</t>

      <t><figure>
          <artwork><![CDATA[{
   Policy  policy3_id  
      Appliesto flow2_id 
      Condition {Time>18:00 or Time< 2:00} 
      Action "gothrough",{woc_node_id ,link2_id}
}
]]></artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Because the network customers are allowed to customize their own
      services, they may bring potentially big impacts to a running IP
      network. A strong user authentication mechanism is needed for the
      northbound interface of the SDN controller. User authorization should be
      carefully managed by the network administrator to avoid any dangerous
      operations and prevent any abuse of network resources.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes no request to IANA.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thanks the valuable comments made by Wei
      Cao, Xiaofei Xu, Fuyou Miao and Wenyang Lei.</t>

      <t>This document was produced using the xml2rfc tool <xref
      target="RFC2629"></xref>.</t>
    </section>
  </middle>

  <back>
    <references title="Informative References">
      <?rfc include='reference.RFC.2629'?>

      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.6020'?>

      <reference anchor="TSFNet">
        <front>
          <title>Towards Software-Friendly Networks, APSys 2010, pp:49-54,
          2010, New Delhi, India.</title>

          <author fullname="Kok-Kiong Yap" initials="K." surname=" Yap">
            <organization></organization>
          </author>

          <author fullname="Te-Yuan" initials="T." surname=" Huang">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Ben" initials="B. " surname="Dodson">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Monica S." initials="M. " surname="Lam">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Nick" initials="N." surname="McKeown">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <date />
        </front>
      </reference>

      <reference anchor="Frenetic">
        <front>
          <title>Frenetic: A Network Programming Languages, ICFP' 11</title>

          <author fullname="Nate" initials="N." surname="Foster">
            <organization></organization>
          </author>

          <author fullname="Rob" initials="R." surname="Harrison">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Michael J." initials="M. " surname="Freedman">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Christopher" initials="C." surname="Monsanto">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Jennifer" initials="J." surname="Rexford">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="Alec " initials="A." surname="Story">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <author fullname="David" initials="D." surname="Walker">
            <organization></organization>

            <address>
              <postal>
                <street></street>

                <city></city>

                <region></region>

                <code></code>

                <country></country>
              </postal>

              <phone></phone>

              <facsimile></facsimile>

              <email></email>

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

          <date />
        </front>
      </reference>

      <reference anchor="PBNM">
        <front>
          <title>Policy-Based Network Management: Solutions for the Next
          Generation, Morgan Kaufmann Publishers Inc. San Francisco, CA,
          USA.</title>

          <author fullname="John" initials="J." surname="Strassner">
            <organization></organization>
          </author>

          <date year="2003" />
        </front>
      </reference>

      <reference anchor="I-D.sdnrg-service-description-language">
        <front>
          <title abbrev="draft-xia-nai-modeling-language-00">Requirements for
          a Service Description Language and Design Considerations,
          draft-xia-sdnrg-service-description-language-00, Work in
          progress</title>

          <author fullname="Yinben" initials="Y." surname="Xia">
            <organization>Huawei Technologies Co., Ltd</organization>
          </author>

          <author fullname="Sheng" initials="S." surname="Jiang">
            <organization>Huawei Technologies Co., Ltd</organization>
          </author>

          <author fullname="Susan Hares" initials="S." surname="Hares">
            <organization>Huawei Technologies Co., Ltd</organization>
          </author>

          <date month="July" year="2014" />
        </front>
      </reference>
    </references>
  </back>
</rfc>

PAFTECH AB 2003-20262026-04-24 06:44:30