Internet-Draft YANG Model for AMM January 2023
Wang, et al. Expires 22 July 2023 [Page]
Workgroup:
IPPM Working Group
Internet-Draft:
draft-wang-ippm-alt-mark-yang-01
Published:
Intended Status:
Standards Track
Expires:
Authors:
M. Wang
China Mobile
L. Han
China Mobile
X. Min
ZTE Corporation
J. Guo
ZTE Corporation
M. Nilo
Telecom Italia

A YANG Data Model for Alternate Marking Method

Abstract

Alternate-Marking Method (AMM) is a technique used to perform packet loss, delay, and jitter measurements on live traffic. This document defines a YANG data model for Alternate Marking Method.

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 https://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 22 July 2023.

Table of Contents

1. Introduction

Alternate-Marking Method ([RFC9341] [RFC9342]) is a technique used to perform packet loss, delay, and jitter measurements on live traffic. [RFC9343] defines how to encode Alternate-Marking information in IPv6 Extension Header. [I-D.ietf-mpls-inband-pm-encapsulation] defines how to encode Alternate-Marking information in MPLS Label Stack. This document defines a YANG data model for alternate marking method.

2. Tree Diagram

This section presents a simplified graphical representation of the AMM data model using a YANG tree diagram [RFC8340].

module: ietf-alternate-marking
  +--rw configuration
     +--rw alternate-marking
        +--rw global
        |  +--rw label?      uint32
        |  +--rw fii-mode?   enumeration
        +--rw head-node
        |  +--rw flow* [flow-id]
        |     +--rw flow-id              uint32
        |     +--rw alternate-status?    enable-status
        |     +--rw period?              alternate-marking-period
        |     +--rw hop-by-hop-status?   enable-status
        |     +--rw source-mac?          yang:mac-address
        |     +--rw dest-mac?            yang:mac-address
        |     +--rw vlan-id?             uint16
        |     +--rw internal-vlan-id?    uint16
        |     +--rw priority-8021p?      uint8
        |     +--rw sip?                 inet:ip-prefix
        |     +--rw dip?                 inet:ip-prefix
        |     +--rw protocol?            uint8
        |     +--rw source-port?         uint16
        |     +--rw dest-port?           uint16
        |     +--rw vpn-type?            enumeration
        |     +--rw vpn-name?            string
        |     +--rw if-name              string
        |     +--rw member-port?         string
        +--rw end-node
           +--rw relation* [flow-id]
              +--rw flow-id              uint32
              +--rw (vpn-type)?
              |  +--:(vrf)
              |  |  +--rw vrf-name       string
              |  +--:(vpws)
              |  |  +--rw vpws-name      string
              |  +--:(vpls)
              |     +--rw vpls-name      string
              +--rw period?              alternate-marking-period
              +--rw hop-by-hop-status?   enable-status
              +--rw if-name?             string

3. Alternate Marking Method YANG Data Model

<CODE BEGINS> file "ietf-alternate-marking@2022-07-08.yang"

module ietf-alternate-marking {
  yang-version "1.1";
  namespace "urn:ietf:params:xml:ns:yang:ietf-alternate-marking";

  prefix alternate-marking;

  import ietf-inet-types {
    prefix inet ;
    reference "RFC 6991: Common YANG Data Types";
    revision-date 2013-07-15 ;
  }
  import ietf-yang-types {
    prefix yang ;
    reference "RFC 6991: Common YANG Data Types";
    revision-date 2013-07-15 ;
  }

  organization
    "IETF IPPM (IP Performance Measurement) Working Group";

  contact
    "WG Web:   <http://datatracker.ietf.org/group/ippm/>
     WG List:  <mailto:ippm@ietf.org>

     Author:   Minxue Wang
               <mailto:wangminxue@chinamobile.com>
     Author:   Liuyan Han
               <mailto:hanliuyan@chinamobile.com>
     Author:   Xiao Min
               <mailto:xiao.min2@zte.com.cn>
     Author:   Jun Guo
               <mailto:guo.jun2@zte.com.cn>
     Author:   Massimo Nilo
               <mailto:massimo.nilo@telecomitalia.it>";

  description
    "This document defines a YANG data model used for alternate
     marking method.

     This YANG model conforms to the Network Management
     Datastore Architecture (NDMA) as described in RFC 8342.

     Copyright (c) 2023 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (http://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX;
     see the RFC itself for full legal notices.";

  revision 2022-05-11 {
    description 'First draft.'
                ;
  }

  typedef alternate-marking-period {
    type enumeration {
      enum 1s {
        value 1 ;
        description 'Alternate marking period is 1s.'
                    ;
      }
      enum 10s {
        value 2 ;
        description 'Alternate marking period is 10s.'
                    ;
      }
      enum 30s {
        value 3 ;
        description 'Alternate marking period is 30s.'
                    ;
      }
      enum 60s {
        value 4 ;
        description 'Alternate marking period is 60s.'
                    ;
      }
      enum 5min {
        value 5 ;
        description 'Alternate marking period is 5min.'
                    ;
      }
    }
    description 'Alternate marking period,including '
              + '1s,10s,30s,60s,5min.'
                ;
  }
  typedef enable-status {
    type enumeration {
      enum enable {
        value 1 ;
        description 'Enables the function.'
                    ;
      }
      enum disable {
        value 0 ;
        description 'Disables the function.'
                    ;
      }
    }
    description 'Enable status,including enable and disable.'
                ;
  }
  container configuration {
    description 'Configuration of alternate marking model Info.'
                ;
    container alternate-marking {
      description 'alternate-marking flow configuration.'
                  ;
      container global {
        description 'Global configuration.'
                    ;
        leaf label {
          description 'The label ranges from 4 to 6 and 8 '
                    + 'to 12(default:12).'
                      ;
          type uint32 {
            range '4..6 | 8..12'
                  {
              description 'The range of the label.'
                          ;
            }
          }
          default 12 ;
        }
        leaf fii-mode {
          description 'Position ID of the guide label.'
                      ;
          type enumeration {
            enum non-bottom {
              value 0 ;
            }
            enum bottom {
              value 1 ;
            }
          }
          default non-bottom ;
        }
      }
      container head-node {
        description 'Configure alternate-marking flow coloring.'
                    ;
        list flow {
          description 'Configure alternate-marking flow coloring.'
                      ;
          key flow-id ;
          leaf flow-id {
            description 'The flow id to identify a specific flow, '
                      + 'ranges from 1 to 1048575. In IPv6 '
                      + 'encoding it is called FlowMonID and in '
                      + 'MPLS encoding it is called Flow-ID.'
                        ;
            type uint32 {
              range 1..1048575 {
                description 'The range of flow id.'
                            ;
              }
            }
          }
          leaf alternate-status {
            description 'The status of flow alternate marking, '
                      + 'including enable and disable'
                      + '(default:enable).'
                        ;
            type enable-status ;
            default enable ;
          }
          leaf period {
            description 'The period of flow coloring,including '
                      + '1s,10s,30s,60s and 5min(default:30s).'
                        ;
            type alternate-marking-period ;
            default 30s ;
          }
          leaf hop-by-hop-status {
            description 'The status of hop-by-hop coloring, '
                      + 'including enable and '
                      + 'disable(default:enable).'
                        ;
            type enable-status ;
            default disable ;
          }
          leaf source-mac {
            description 'The source MAC address.'
                        ;
            type yang:mac-address ;
          }
          leaf dest-mac {
            description 'The destination MAC address.'
                        ;
            type yang:mac-address ;
          }
          leaf vlan-id {
            description 'The value of vlan ID,ranges from 1 '
                      + 'to 4094.'
                        ;
            type uint16 {
              range 1..4094 {
                description 'The range of VLAN ID.'
                            ;
              }
            }
          }
          leaf internal-vlan-id {
            description 'The value of internal vlan ID,ranges '
                      + 'from 1 to 4094.'
                        ;
            type uint16 {
              range 1..4094 {
                description 'The range of internal VLAN ID.'
                            ;
              }
            }
          }
          leaf priority-8021p {
            description 'The value of priority-8021p,ranges '
                      + 'from 0 to 7.'
                        ;
            type uint8 {
              range 0..7 {
                description 'The range of priority-8021p.'
                            ;
              }
            }
          }
          leaf sip {
            description 'The source ip address.'
                        ;
            type inet:ip-prefix ;
          }
          leaf dip {
            description 'The destination ip address.'
                        ;
            type inet:ip-prefix ;
          }
          leaf protocol {
            description 'The protocol number,ranges from 1 to 255.'
                        ;
            type uint8 {
              range 1..255 {
                description 'The range of protocol.'
                            ;
              }
            }
          }
          leaf source-port {
            description 'The source port,ranges from 1 to '
                      + '65535.'
                        ;
            type uint16 {
              range 1..65535 {
                description 'The range of port number.'
                            ;
              }
            }
          }
          leaf dest-port {
            description 'The destination port,ranges from '
                      + '1 to 65535.'
                        ;
            type uint16 {
              range 1..65535 {
                description 'The range of port number.'
                            ;
              }
            }
          }
          leaf vpn-type {
            description 'The VPN type of the UNI interface.'
                        ;
            type enumeration {
              enum l3vpn {
                value 0 ;
              }
              enum l2vpn {
                value 1 ;
              }
            }
            default l3vpn ;
          }
          leaf vpn-name {
            description 'The access VPN name of ip flow.'
                        ;
            type string {
              length 1..31 {
                description 'The range of VRF name length.'
                            ;
              }
            }
          }
          leaf if-name {
            description 'The UNI interface name of ip flow.'
                        ;
            type string {
              length 1..31 ;
            }
            mandatory true ;
          }
          leaf member-port {
            description 'The member port of the UNI interface.'
                        ;
            type string ;
          }
        }
      }
      container end-node {
        description 'Configure the relation between Flowid and VPN.'
                    ;
        list relation {
          description 'Configure the relation between Flowid '
                    + 'and VPN.'
                      ;
          key flow-id ;
          leaf flow-id {
            description 'The flow id to identify a specific flow, '
                      + 'ranges from 1 to 1048575.'
                        ;
            type uint32 {
              range 1..1048575 {
                description 'The range of flow-id.'
                            ;
              }
            }
          }
          choice vpn-type {
            description 'Choose one from vrf and vpws.'
                        ;
            case vrf {
              description 'Type is VRF.'
                          ;
              leaf vrf-name {
                description 'The name of VRF,this string length '
                          + 'ranges from 1 to 32.'
                            ;
                type string {
                  length 1..32 {
                    description 'This string length ranges from '
                              + '1 to 32.'
                                ;
                  }
                }
                mandatory true ;
              }
            }
            case vpws {
              description 'Type is vpws.'
                          ;
              leaf vpws-name {
                description 'The name of VPWS,this string length '
                          + 'ranges from 1 to 32.'
                            ;
                type string {
                  length 1..32 {
                    description 'This string length ranges from '
                              + '1 to 32.'
                                ;
                  }
                }
                mandatory true ;
              }
            }
            case vpls {
              description 'Type is VPLS.'
                          ;
              leaf vpls-name {
                description 'The name of VPLS,this string length '
                          + 'ranges from 1 to 32.'
                            ;
                type string {
                  length 1..32 {
                    description 'This string length ranges from '
                              + '1 to 32.'
                                ;
                  }
                }
                mandatory true ;
              }
            }
          }
          leaf period {
            description 'The flip period of relation,including '
                      + '1s,10s,30s,60s,5min(default:30s).'
                        ;
            type alternate-marking-period ;
            default 30s ;
          }
          leaf hop-by-hop-status {
            description 'The status of hop-by-hop,including enable '
                      + 'and disable(default:disable).'
                        ;
            type enable-status ;
            default disable ;
          }
          leaf if-name {
            description 'The UNI interface name of relation.'
                        ;
            type string {
              length 1..31 ;
            }
          }
        }
      }
    }
  }
}

<CODE ENDS>

4. Security Considerations

TBD.

5. IANA Considerations

TBD.

6. Acknowledgements

The authors would like to acknowledge Zhanwei Dou and Chuang Tang for their contribution to this document.

The authors would like to acknowledge Giuseppe Fioccola and Mauro Cociglio for their careful review and very helpful comments.

7. References

7.1. Normative References

[RFC9341]
Fioccola, G., Ed., Cociglio, M., Mirsky, G., Mizrahi, T., and T. Zhou, "Alternate-Marking Method", RFC 9341, DOI 10.17487/RFC9341, , <https://www.rfc-editor.org/info/rfc9341>.
[RFC9342]
Fioccola, G., Ed., Cociglio, M., Sapio, A., Sisto, R., and T. Zhou, "Clustered Alternate-Marking Method", RFC 9342, DOI 10.17487/RFC9342, , <https://www.rfc-editor.org/info/rfc9342>.

7.2. Informative References

[I-D.ietf-mpls-inband-pm-encapsulation]
Cheng, W., Min, X., Zhou, T., Dong, X., and Y. Peleg, "Encapsulation For MPLS Performance Measurement with Alternate Marking Method", Work in Progress, Internet-Draft, draft-ietf-mpls-inband-pm-encapsulation-04, , <https://www.ietf.org/archive/id/draft-ietf-mpls-inband-pm-encapsulation-04.txt>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/info/rfc8340>.
[RFC9343]
Fioccola, G., Zhou, T., Cociglio, M., Qin, F., and R. Pang, "IPv6 Application of the Alternate-Marking Method", RFC 9343, DOI 10.17487/RFC9343, , <https://www.rfc-editor.org/info/rfc9343>.

Authors' Addresses

Minxue Wang
China Mobile
No.32 Xuanwumen west street
Beijing
100053
China
Liuyan Han
China Mobile
No.32 Xuanwumen west street
Beijing
100053
China
Xiao Min
ZTE Corporation
Nanjing
China
Jun Guo
ZTE Corporation
Nanjing
China
Massimo Nilo
Telecom Italia
Torino
Italy