Internet Engineering Task Force (IETF) M-K. Shin
Internet-Draft ETRI
Intended status: Informational M-J. Choi
Expires: April 21, 2016 KNU
S. Lee
ETRI
October 19, 2015

Yang Data Model for Service Function Chaining Control Plane
draft-shin-sfc-control-plane-yang-00

Abstract

This document defines Yang data model for control plane management of service function chaining based on [I-D.ietf-sfc-control-plane], which describes components and requirements of SFC control plane.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on April 21, 2016.

Copyright Notice

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.


Table of Contents

1. Introduction

Service Function Chaining (SFC) consists of SFC data plane and control plane from the aspect of architecture [I-D.ietf-sfc-architecture]. The document [I-D.ietf-sfc-control-plane] describes requirements for delivering information between SFC control elements and SFC functional elements. By capturing the information conveyed via a set of control interfaces in [I-D.ietf-sfc-control-plane], this document defines Yang data model of management operations performed in a SFC control plane. Note that the base Yang data model for the SFC data plane is already covered in [I-D.penno-sfc-yang].

2. Terminology

This document uses the following terms and most of them were reproduced from [I-D.ietf-sfc-architecture] and [I-D.ietf-sfc-control-plane].

3. Overall Module Structure

Ahead to defining separate sub-modules, overall module structure for the management of SFC control plane is examined. The overall modules consist of 8 sub-modules (groups). The overall module is devised on the basis of the requirements for conveying information between SFC control elements and SFC functional elements described in the document [I-D.ietf-sfc-control-plane].

Module: SFC-control-planes

3.1. SFC-Control-Planes Configuration Model

module sfc-control-planes {
  namespace "urn:etri:params:xml:ns:yang:sfc-cp";
  prefix sfc-cp;
  include path-maintenance {
    revision-date 2015-10-15;
  }
  include path-optimization {
    revision-date 2015-10-15;
  }
  include load-balancing {
    revision-date 2015-10-15;
  }
  include sfc-topology {
    revision-date 2015-10-15;
  }
  include policy {
    revision-date 2015-10-15;
  }
  include history {
    revision-date 2015-10-15;
  }
  include fault-handling {
    revision-date 2015-10-15;
  }
  include event {
    revision-date 2015-10-15;
  }
  organization "ETRI.";
  contact
  "M-K. Shin mkshin@etri.re.kr
  M-J Choi mjchoi@kangwon.ac.kr";
  revision-date 2015-10-15;
}

          

4. Path Maintenance

This module checks the aliveness of a SFP. This receives SFP name and returns aliveness result which is true or false value.

4.1. Path Maintenance Configuration Model

submodule path-maintenance {
  belongs-to sfc-control-planes {
    prefix sfc-pm;
  }
  description
  "This module checks the aliveness of a SFP. This receives SFP
  name and returns aliveness result which is true or false value."
  revision 2015-10-15;
  container path-maintenance {
    leaf sfp-name {
      type string;
      description
      "The name of service function path.";
    }
    leaf aliveness-of-sfp {
      type boolean;
      description
      "Aliveness flag of the service function.";
    }
  }
  rpc check-path-aliveness {
    description "Check a path aliveness.";
    input {
      leaf sfc-name {
        type string;
        description
        "The name of service function path.";
      }
    }
    output {
      leaf aliveness {
        type boolean;
        description
        "Aliveness flag of the service function.";
      }
    }
  }
}

          

5. Path Optimization

This module constructs and maintains a SFP with a low stretch considering the topological locations and properties (e.g., latency, bandwidth) of SFI

5.1. Path Optimization Configuration Model

submodule path-optimization {
  belongs-to sfc-control-planes {
    prefix sfc-po;
  }
  description
  "This module constructs and maintains a SFP with a low stretch
  considering the topological locations and properties (e.g.,
  latency, bandwidth) of SF.";
  revision 2015-10-15;
  container path-optimization {
    leaf sfp-name {
      type string;
      description
      "The name of service function path to be changed for
      optimization.";
    }
    leaf optimized-sfp {
      type string;
      description
      "The name of optimized service function path.";
    }
    leaf sfp-availability {
      type boolean;
      description
      "The availability of the optimized service function path:
      true or false.";
    }
    leaf load-status {
      type uint8;
      description
      "A percentage value of load status.";
    }
  }
  rpc find-optimized-sfp {
    description
    "Find an optimized service function path.";
    input {
      leaf sfp-name {
        type string;
        description
        "The name of service function path to be changed for
        optimization.";
      }
    }
    output {
      leaf optimized-sfp {
        type string;
        description
        "The name of optimized service function path.";
      }
      leaf sfp-availability {
        type string;
        description
        "The availability of the optimized service function path:
        true or false.";
      }
    }
  }
}

          

6. Load Balancing

This module constructs and maintains SFPs to localize the traffic in the network considering load and administrative domain of SFIs.

6.1. Load Balancing Configuration Model

submodule load-balancing {
  belongs-to sfc-control-planes{
    prefix sfc-lb;
  }
  description
  "This module constructs and maintains SFPs to localize the
  traffic in the network considering load and administrative
  domain of SFIs.";
  revision 2015-10-15;
  container load-balancing {
    leaf load-type {
      type enumeration {
        enum traffic;
        enum cpu;
        enum memory;
      }
      description
      "A resource type for load balancing.";
    }
    leaf source-sfp-name {
      type string;
      description
      "The name of service function path with heavy load.";
    }
    leaf target-sfp-name {
      type string;
      description
      "Another name of service function path for load
      distribution.";
    }
  }
  rpc perform-load-balance {
    description
    "Perform a load balancing.";
    input {
      leaf load-type {
        type enumeration {
          enum traffic;
          enum cpu;
          enum memory;
        }
        description
        "A resource type for load balancing.";
      }
      leaf source-sfp-name {
        type string;
        description
        "The name of service function path with heavy load.";
      }
    }
    output {
      leaf target-sfp-name {
        type string;
        description
        "Another name of service function path for load
        distribution.";
      }
    }
  }
}
          

7. SFC Topology

This module shows the connectivity map of currently working SFCs, SFPs and SFIs.

7.1. SFC Topology Configuration Model

submodule sfc-topology {
  belongs-to sfc-control-planes {
    prefix sfc-st;
  }
  description
  "This module shows the connectivity map of currently working
  SFCs, SFPs and SFIs.";
  revision 2015-10-15;
  container sfc-topology {
    leaf name {
      type string;
      description
      "The name of service function chain or service function
      path or service function instances.";
    }
    list lists-of-sf-node {
      key name;
      description
      "A list of service functions that compose the service
      chain.";
      leaf name {
        type string;
        description
        "A list of service functions that compose the service
        chain.";

      }
      leaf order {
        type uint8;
        description
        "The order of the service functions.";

      }
    }
  }
  rpc show-sfc-topology {
    description
    "Display the topology of service function chain.";
    input {
      leaf sfc-name {
        type string;
        description
        "The name of service function chain.";
      }
    }
    output {
      list lists-of-sf-node {
        key name;
        description
        "A list of service functions that compose the service
        chain.";
        leaf name {
          type string;
          description
          "A list of service functions that compose the service
          chain.";
        }
        leaf order {
          type uint8;
          description
          "The order of the service functions.";
        }
      }
    }
  }
}

          

8. Policy

Policies are used to bind an incoming flow to an appropriate SFP.

8.1. Policy Configuration Model

submodule policy {
  belongs-to sfc-control-planes {
    prefix sfc-p;
  }
  description
  "Policies are used to bind an incoming flow to an appropriate
  SFP.";
  revision 2015-10-15;
  container classification-policy-table {
    description
    "One SFC is selected by classification function according to
    the defined policy. The classification means service profile
    matching of traffic flows for identification of appropriate
    outbound forwarding actions.";
    list classification-policy-table {
      key flow-identifier;
      description
      "To classify the flow, flow identification is necessary.";
      leaf flow-identifier {
        type string;
        description
        "The flow identifier.";
      }
      leaf matching-condition {
        type string;
        description
        "The flow matching condition.";
      }
      leaf priority {
        type int32;
        description
        "Policy priority. The low value is high priority.";
      }
      leaf mapping-sfc-name {
        type string;
        description
        "The mapped service function name of the flow.";
      }
    }
  }
  container forwarding-policy-table {
    description
    "This policy is used to select SFIs defined in SFC and
    connect them. This policy is used in Service Function
    Forwarder (SFF). A SFF is responsible for delivering traffic
    received from the network to one or more connected service
    functions according to the policy table.";
    list Forwarding-Policy-Table {
      key index;
      description
      "The index of forwarding policy table.";
      leaf index {
        type int32;
        description
        "The index of forwarding policy table.";
      }
      leaf sff-name {
        type string;
        description
        "The name of service function forwarder.";
      }
      leaf sfc-name {
        type string;
        description
        "The name of service function chain.";
      }
      leaf condition {
        type string;
        description
        "The mapping condition.";
      }
      leaf sfp-name {
        type string;
        description
        "The name of service function path.";
      }
    }
  }
}
          

9. History

This module shows statistical information related performance and faults in accordance with SFCs and SFPs.

9.1. History Configuration Model

submodule history {
  belongs-to sfc-control-planes {
    prefix sfc-h;
  }
  import ietf-yang-types {
    prefix yang;
    revision-date 2013-07-15;
  }
  description
  "This module shows statistical information related performance
  and faults in accordance with SFCs and SFPs."
  revision 2015-10-15;
  container performance {
    description
    "It monitors and stores time series data related performance."
    list Performance {
      key name
      description
      "The name of service function.";
      leaf name {
        type string;
        description
        "The name of service function.";
      }
      leaf time {
        type yang:date-and-time;
        description
        "The performance monitoring date.";
      }
      leaf aliveness {
        type Boolean;
        description
        "The aliveness flag of the service function.";
      }
      container resource-utilization {
        description
        "To be defined.";
        leaf packet-rate {
          type uint8;
          description
          "Percentage of current package rate utilization.";
        }
        leaf bandwidth {
          type uint8;
          description
          "Percentage of bandwidth utilization.";
        }
        leaf cpu-usage {
          type uint8;
          description
          "Percentage of CPU utilization.";
        }
        leaf memory-usage {
          type uint8;
          description
          "Percentage of memory utilization.";
        }
        leaf available-memory {
          type uint8;
          description
          "Available memory size of the service function in MB.";
        }
        leaf rib {
          type uint8;
          description
          "Percentage of Routing Information Table utilization.";
        }
        leaf fib {
          type uint8;
          description
          "Percentage of Forwarding Information Table
          utilization.";
        }
        leaf sf-ports-bandwidth {
          type uint8;
          description
          "Percentage of the port's supported bandwidth
          utilization.";
        }
      }
    }
  }
  container fault {
    description
    "It monitors and stores time series data related to faults
    and events."
    list fault {
      key fault-name;
      description
      "The name occurred fault.";
      leaf fault-name {
        type string;
        description
        "The name occurred fault.";
      }
      leaf fault-occurrence-time {
      type yang:date-and-time;
        description
        "The time of the fault occurrence.";
      }
      leaf fault-type {
        type string;
        description
        "The type of occurred fault.";
      }
      leaf fault-occurrence-location {
        type string;
        description
        "The location of fault occurrence.";
      }
      leaf fault-handling-action {
        type string;
        description
        "The fault handing action: drop, bypass, use alternate
        node.";
      }
    }
  }
}

          

10. Fault Handling

This module first detects faults and handles the detected faults in accordance with the fault handling action.

10.1. Fault Handling Configuration Model

submodule fault-handling {
  belongs-to sfc-control-planes {
    prefix sfc-fh
  }
  description
  "This module first detects faults and handles the detected
  faults in accordance with the fault handling action. ";
  revision 2015-10-15;
  container fault-handling {
    list fault-handling {
      key fault-name;
      description
      "The name of occurred fault.";
      leaf fault-name {
        type string;
        description
        "The fault handing action: drop, bypass, use alternate
        node.";
      }
      leaf fault-type {
        type enumeration {
          enum node;
          enum link;
          enum path-failures;
        }
        description
        "The type of occurred fault.";
      }
      leaf fault-handling-action
        type enumeration {
          enum bypass;
          enum use-alternate-node;
          enum use-alternate-chain;
          enum drop-traffic;
        }
        description
        "The fault handing action: drop, bypass, use alternate
        node.";
      }
    }
  }
}

          

11. Event

Events such as loops detection, long unavailable forwarding path time, out of service of SFIs are defined.

11.1. Event Configuration Model

submodule event {
  belong-to sfc-control-planes {
    prefix sfc-e;
  }
  revision 2015-10-15;
  notification event {
    description
    "Events such as loops detection, long unavailable forwarding
    path time, out of service of SFIs.";
    leaf event-type {
      type string;
      description
      "Event type.";
    }
    leaf severity {
      type string;
      description
      "The severity of the event.";
    }
    leaf event-explanation {
      type string;
      description
      "The detailed explanation of the event.";
    }
  }
}
          

12. Security Considerations

TBD.

13. IANA Considerations

TBD.

14. References

14.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.

14.2. Informative References

[I-D.ietf-sfc-architecture] Halpern, J. and C. Pignataro, "Service Function Chaining (SFC) Architecture", Internet-Draft draft-ietf-sfc-architecture-11, July 2015.
[I-D.ietf-sfc-control-plane] Li, H., Wu, Q., Huang, O., Boucadair, M., Jacquenet, C., Haeffner, W., Lee, S., Parker, R., Dunbar, L., Malis, A., Halpern, J., Reddy, T. and P. Patil, "Service Function Chaining (SFC) Control Plane Components & Requirements", Internet-Draft draft-ietf-sfc-control-plane-00, August 2015.
[I-D.lee-sfc-dynamic-instantiation] Lee, S., Pack, S., Shin, M. and E. Paik, "SFC dynamic instantiation", Internet-Draft draft-lee-sfc-dynamic-instantiation-01, October 2014.
[I-D.penno-sfc-yang] Penno, R., Quinn, P., Zhou, D. and J. Li, "Yang Data Model for Service Function Chaining", Internet-Draft draft-penno-sfc-yang-13, March 2015.

Authors' Addresses

Myung-Ki Shin ETRI 218 Gajeong-ro Yuseung-Gu Daejeon, 305-700 Korea Phone: +82 42 860 4847 EMail: mkshin@etri.re.kr
Mi-Jung Choi Kangwon National University 1 Kangwondaehak-gil Chuncheon-si, Gangwon-do, 24341 Korea Phone: +82 33 250 8442 EMail: mjchoi@kangwon.ac.kr
Seungik Lee ETRI 218 Gajeong-ro Yuseung-Gu Daejeon, 305-700 Korea Phone: +82 42 860 1483 EMail: seungiklee@etri.re.kr