netconfcentral logo

ietf-softwire-br

HTML

ietf-softwire-br@2017-11-14



  module ietf-softwire-br {

    yang-version 1.1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-softwire-br";

    prefix softwire-br;

    import ietf-inet-types {
      prefix inet;
    }
    import ietf-yang-types {
      prefix yang;
    }
    import ietf-softwire-common {
      prefix softwire-common;
    }

    organization "Softwire Working Group";

    contact
      "
    Qi Sun <sunqi.ietf@gmail.com>
    Hao Wang <wangh13@mails.tsinghua.edu.cn>
    Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
    Ian <Farrer ian.farrer@telekom.de>
    Sladjana Zoric <sladjana.zoric@telekom.de>
    Mohamed Boucadair <mohamed.boucadair@orange.com>
    Rajiv <Asati rajiva@cisco.com>
    ";

    description
      "This document defines a YANG data module for the configuration and
    management of A+P Softwire Border Routers. It covers Lightweight
    4over6, MAP-E, and MAP-T mechanisms.

    Copyright (c) 2017 IETF Trust and the persons identified
    as authors of the code. All rights reserved.
    This version of this YANG module is part of RFC XXX; see the RFC
    itself for full legal notices.";

    revision "2017-11-14" {
      description "Initial revision.";
      reference
        "RFC XXXX: YANG Modules for IPv4-in-IPv6 Address plus Port
        Softwires";

    }


    feature binding {
      description
        "Binding is used for configuring Lightweight 4over6 mechanism.

      Binding softwire mechanisms are IPv4-over-IPv6 tunnelling
      transition mechanisms specifically for complete independence
      between IPv6 subnet prefix (and /128 IPv6 address) and IPv4
      address with or without IPv4 address sharing.

      This is accomplished by maintaining state for each softwire
      (per-subscriber state) in the central Border Relay (BR) and a
      hub-and-spoke forwarding architecture. In order to delegate the
      NAPT function and achieve IPv4 address sharing, port-restricted
      IPv4 addresses needs to be allocated to CEs.";
      reference
        "RFC7596, RFC7597 & RFC7599";

    }

    feature algorithm {
      description
        "MAP-E is an IPv6 transition mechanism for transporting IPv4
      packets across an IPv6 network using IP encapsulation. MAP-E
      allows for a reduction of the amount of centralized state using
      rules to express IPv4/IPv6 address mappings. This introduces an
      algorithmic relationship between the IPv6 subnet and IPv4 address.

      MAP-T is an IPv6 transition mechanism for transporting IPv4
      packets across an IPv6 network using IP translation. It leverages
      double stateless NAT64 based solution as well as the stateless
      algorithmic address & transport layer port mapping algorithm
      defined for MAP-E.

      This feature indicates the instance functions as a MAP-E or
      MAP-T instance.";
      reference
        "RFC7597 & RFC7599";

    }

    container br-instances {
      description "BR Instances";
      choice br-type {
        description
          "Select binding or algorithmic BR functionality.";
        case binding {
          if-feature binding;
          container binding {
            if-feature binding;
            description
              "lw4over6 (binding table) configuration.";
            list br-instance {
              key "id";
              description
                "A set of lwAFTRs to be configured.";
              container binding-table-versioning {
                description
                  "binding table's version";
                leaf version {
                  type uint64;
                  description
                    "Incremental version number of the binding
                  table";
                }

                leaf date {
                  type yang:date-and-time;
                  description
                    "Timestamp of the binding
                  table";
                }
              }  // container binding-table-versioning

              leaf id {
                type uint32;
                mandatory true;
                description
                  "An instance identifier.";
              }

              leaf name {
                type string;
                description
                  "The name for the lwaftr.";
              }

              leaf softwire-num-threshold {
                type uint32;
                mandatory true;
                description
                  "The maximum number of softwires that can be created on
                the lwAFTR.";
              }

              leaf softwires-payload-mtu {
                type uint16;
                units "bytes";
                mandatory true;
                description
                  "The payload MTU for Lightweight 4over6 softwire.";
              }

              leaf softwire-path-mru {
                type uint16;
                units "bytes";
                mandatory true;
                description
                  "The path MRU for Lightweight 4over6 softwire.";
              }

              leaf enable-hairpinning {
                type boolean;
                default 'true';
                description
                  "Enables/disables support for locally forwarding
                (hairpinning) traffic between two CEs";
                reference
                  "RFC7596 Section 6.2";

              }

              container binding-table {
                description "binding table";
                list binding-entry {
                  key "binding-ipv6info";
                  description
                    "binding entry";
                  uses softwire-common:binding-entry;
                }  // list binding-entry
              }  // container binding-table

              container icmp-policy {
                description
                  "The lwAFTR can be configured to process or drop
                incoming ICMP messages, and to generate outgoing ICMP
                error messages or not.";
                container icmpv4-errors {
                  description
                    "ICMPv4 error processing configuration";
                  leaf allow-incoming-icmpv4 {
                    type boolean;
                    default 'true';
                    description
                      "Whether to allow processing of incoming ICMPv4
                    packets.";
                    reference
                      "RFC7596";

                  }

                  leaf generate-icmpv4-errors {
                    type boolean;
                    default 'true';
                    description
                      "Whether to generate outgoing ICMP error messages on
                    receipt of an inbound IPv4 packet with no matching
                    binding table entry.";
                    reference
                      "RFC7596 Seciton 5.2";

                  }
                }  // container icmpv4-errors

                container icmpv6-errors {
                  description
                    "ICMPv6 error processing configuration";
                  leaf generate-icmpv6-errors {
                    type boolean;
                    default 'true';
                    description
                      "Whether to generate ICMPv6 errors messages if no
                    matching binding table entry is found.";
                    reference
                      "RFC7596 Section 6.2";

                  }

                  leaf icmpv6-errors-rate {
                    type uint32;
                    description
                      "Rate limit threshold in messages per-second
                    for sending ICMPv6 errors messages";
                    reference
                      "RFC7596 Section 9";

                  }
                }  // container icmpv6-errors
              }  // container icmp-policy

              container traffic-stat {
                config false;
                description
                  "Traffic statistics information for the BR.";
                uses softwire-common:traffic-stat;

                leaf hairpin-ipv4-bytes {
                  type yang:zero-based-counter64;
                  description
                    "IPv4 packets locally routed between two CEs
                  (hairpinned).";
                }

                leaf hairpin-ipv4-packets {
                  type yang:zero-based-counter64;
                  description
                    "IPv4 bytes locally routed between two CEs
                  (hairpinned).";
                }

                leaf active-softwire-num {
                  type uint32;
                  config false;
                  description
                    "The number of currently active softwires on the
                  lw4over6 (binding) instance.";
                }
              }  // container traffic-stat
            }  // list br-instance
          }  // container binding
        }  // case binding

        case algorithm {
          if-feature algorithm;
          container algorithm {
            if-feature algorithm;
            description
              "Indicate the instances support the MAP-E and MAP-T
            function. The instances advertise the map-e/map-t feature
            through the capability exchange mechanism when a NETCONF
            session is established.";
            list algo-instance {
              key "id";
              description
                "Instances of algorithm";
              leaf id {
                type uint32;
                mandatory true;
                description "id";
              }

              leaf name {
                type string;
                description
                  "The MAP instance name.";
              }

              uses softwire-common:algorithm {
                augment algo-instances/algo-instance {
                  description
                    "Augments the port-set group for the
                algorithm.";
                  uses softwire-common:port-set;
                }
              }

              container traffic-stat {
                config false;
                description
                  "Traffic statistics information for the BR.";
                uses softwire-common:traffic-stat;
              }  // container traffic-stat
            }  // list algo-instance
          }  // container algorithm
        }  // case algorithm
      }  // choice br-type
    }  // container br-instances

    notification softwire-br-event {
      if-feature binding;
      description "Notifications for BR.";
      leaf br-id {
        type leafref {
          path "/br-instances/binding/br-instance/id";
        }
        description "...";
      }

      leaf-list invalid-entry {
        type leafref {
          path "/br-instances/binding/br-instance[id=current()/../br-id]/binding-table/binding-entry/binding-ipv6info";
        }
        description
          "Notify the client that a specific binding entry has been
        expired/invalid. The binding-ipv6info identifies an entry.";
      }

      leaf-list added-entry {
        type inet:ipv6-address;
        description
          "Notify the client that a binding entry has been added.
        The ipv6 address of that entry is the index. The client
        get other information from the lwaftr about the entry
        indexed by that ipv6 address.
        ";
      }

      leaf-list modified-entry {
        type leafref {
          path "/br-instances/binding/br-instance[id=current()/../br-id]/binding-table/binding-entry/binding-ipv6info";
        }
        description "...";
      }
    }  // notification softwire-br-event

    notification softwire-algorithm-instance-event {
      if-feature algorithm;
      description
        "Notifications for MAP-E or MAP-T.";
      leaf algo-id {
        type leafref {
          path "/br-instances/algorithm/algo-instance/id";
        }
        mandatory true;
        description "MAP-E or MAP-T event.";
      }

      leaf-list invalid-entry-id {
        type leafref {
          path "/br-instances/algorithm/algo-instance/id";
        }
        description "Invalid entry event.";
      }

      leaf-list added-entry {
        type leafref {
          path "/br-instances/algorithm/algo-instance/id";
        }
        description "Added entry.";
      }

      leaf-list modified-entry {
        type leafref {
          path "/br-instances/algorithm/algo-instance/id";
        }
        description "Modified entry.";
      }
    }  // notification softwire-algorithm-instance-event
  }  // module ietf-softwire-br

Summary

  
  
Organization Softwire Working Group
  
Module ietf-softwire-br
Version 2017-11-14
File ietf-softwire-br@2017-11-14.yang
  
Prefix softwire-br
Namespace urn:ietf:params:xml:ns:yang:ietf-softwire-br
  
Cooked /cookedmodules/ietf-softwire-br/2017-11-14
YANG /src/ietf-softwire-br@2017-11-14.yang
XSD /xsd/ietf-softwire-br@2017-11-14.xsd
  
Abstract This document defines a YANG data module for the configuration and management of A+P Softwire Border Routers. It covers Lightwei...
  
Contact
Qi Sun <sunqi.ietf@gmail.com>
Hao Wang <wangh13@mails.tsinghua.edu.cn>
Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Ian <Farrer ian.farrer@telekom.de>
Sladjana Zoric <sladjana.zoric@telekom.de>
Mohamed Boucadair <mohamed.boucadair@orange.com>
Rajiv <Asati rajiva@cisco.com>

Description

 
This document defines a YANG data module for the configuration and
management of A+P Softwire Border Routers. It covers Lightweight
4over6, MAP-E, and MAP-T mechanisms.

Copyright (c) 2017 IETF Trust and the persons identified
as authors of the code. All rights reserved.
This version of this YANG module is part of RFC XXX; see the RFC
itself for full legal notices.

Objects

Type Key
Mandatory config
Optional config
Not config
Object Type Abstract
br-instances container BR Instances
   br-type choice Select binding or algorithmic BR functionality.
      algorithm case algorithm
         algorithm container Indicate the instances support the MAP-E and MAP-T function. The instances advertise the map-e/map-t feature through the capability exchange mechanism when a NETCONF session is established.
            algo-instance list Instances of algorithm
               algo-instances container A set of MAP-E or MAP-T instances to be configured, applying to BRs and CEs. A MAP-E/T instance defines a MAP domain comprising one or more MAP-CE and MAP-BR
                  algo-instance list MAP forwarding rule instance for MAP-E/MAP-T
                     algo-versioning container algorithm's version
                        date leaf Timestamp to the algorithm
                        version leaf Incremental version number for the algorithm
                     data-plane choice Selects MAP-E (encapsulation) or MAP-T (translation)
                        encapsulation case encapsulation for MAP-E
                           br-ipv6-addr leaf The IPv6 address of the MAP-E BR.
                        translation case translation for MAP-T
                           dmr-ipv6-prefix leaf The IPv6 prefix of the MAP-T BR.
                     ea-len leaf Embedded Address (EA) bits are the IPv4 EA-bits in the IPv6 address identify an IPv4 prefix/address (or part thereof) or a shared IPv4 address (or part thereof) and a port-set identifier. The length of the EA-bits is defined as part of a MAP rule for a MA...
                     enable leaf Enable/disable individual MAP-E or MAP-T rule.
                     forwarding leaf This parameter specifies whether the rule may be used for forwarding (FMR). If set, this rule is used as an FMR; if not set, this rule is a BMR only and must not be used for forwarding.
                     id leaf Algorithm Instance ID
                     name leaf The name for the instance.
                     rule-ipv4-prefix leaf The Rule IPv4 prefix defined in the mapping rule.
                     rule-ipv6-prefix leaf The Rule IPv6 prefix defined in the mapping rule.
               id leaf id
               name leaf The MAP instance name.
               traffic-stat container Traffic statistics information for the BR.
                  dropped-ipv4-bytes leaf IPv4traffic dropped, in bytes
                  dropped-ipv4-fragment-bytes leaf Fragmented IPv4 traffic dropped, in bytes
                  dropped-ipv4-fragments leaf Number of fragmented IPv4 packets dropped
                  dropped-ipv4-packets leaf Number of IPv4 packets dropped.
                  dropped-ipv6-bytes leaf IPv4 traffic dropped, in bytes
                  dropped-ipv6-packets leaf Number of IPv4 packets dropped.
                  ipv6-fragments-bytes-reassembled leaf IPv6 fragments successfully reassembled, in bytes
                  ipv6-fragments-reassembled leaf Number of IPv6 fragments successfully reassembled
                  out-icmpv4-error-packets leaf Internally generated ICMPv4 error packets.
                  out-icmpv6-error-packets leaf Internally generted ICMPv6 error packets.
                  rcvd-ipv4-bytes leaf IPv4 traffic received for processing, in bytes
                  rcvd-ipv4-packets leaf Number of IPv4 packets received for processing.
                  rcvd-ipv6-bytes leaf IPv6 traffic received for processing, in bytes
                  rcvd-ipv6-packets leaf Number of IPv6 packets received for processing.
                  sent-ipv4-bytes leaf Decapsulated/translated IPv4 traffic sent, in bytes
                  sent-ipv4-packets leaf Number of decapsulated/translated IPv4 packets sent.
                  sent-ipv6-bytes leaf Encapsulated/translated IPv6 traffic sent, in bytes
                  sent-ipv6-packets leaf Number of encapsulated/translated IPv6 packets sent.
      binding case binding
         binding container lw4over6 (binding table) configuration.
            br-instance list A set of lwAFTRs to be configured.
               binding-table container binding table
               binding-table-versioning container binding table's version
                  date leaf Timestamp of the binding table
                  version leaf Incremental version number of the binding table
                  binding-entry list binding entry
                     binding-ipv4-addr leaf The IPv4 address assigned to the lwB4, which is used as the IPv4 external address for lwB4 local NAPT44.
                     binding-ipv6info leaf The IPv6 information for a binding entry. If this is an IPv6 prefix, it indicates that the IPv6 source address of the CE is constructed according to the description in RFC7596; if it is an IPv6 address, it means the CE uses any /128 address from the assig...
                     br-ipv6-addr leaf The IPv6 address for lwaftr.
                     port-set container For Lightweight 4over6, the default value of offset should be 0, to configure one contiguous port range.
                        psid leaf Port Set Identifier (PSID) value, which identifies a set of ports algorithmically.
                        psid-len leaf The length of PSID, representing the sharing ratio for an IPv4 address. This, along with ea-len, also helps to calculate the number of contiguous ports per port range
                        psid-offset leaf The number of offset bits. In Lightweight 4over6, the default value is 0 for assigning one contiguous port range. In MAP-E/T, the default value is 6, which means the system ports (0-1023) are excluded by default and assigns port ranges distributed across ...
               enable-hairpinning leaf Enables/disables support for locally forwarding (hairpinning) traffic between two CEs
               icmp-policy container The lwAFTR can be configured to process or drop incoming ICMP messages, and to generate outgoing ICMP error messages or not.
                  icmpv4-errors container ICMPv4 error processing configuration
                     allow-incoming-icmpv4 leaf Whether to allow processing of incoming ICMPv4 packets.
                     generate-icmpv4-errors leaf Whether to generate outgoing ICMP error messages on receipt of an inbound IPv4 packet with no matching binding table entry.
                  icmpv6-errors container ICMPv6 error processing configuration
                     generate-icmpv6-errors leaf Whether to generate ICMPv6 errors messages if no matching binding table entry is found.
                     icmpv6-errors-rate leaf Rate limit threshold in messages per-second for sending ICMPv6 errors messages
               id leaf An instance identifier.
               name leaf The name for the lwaftr.
               softwire-num-threshold leaf The maximum number of softwires that can be created on the lwAFTR.
               softwire-path-mru leaf The path MRU for Lightweight 4over6 softwire.
               softwires-payload-mtu leaf The payload MTU for Lightweight 4over6 softwire.
               traffic-stat container Traffic statistics information for the BR.
                  active-softwire-num leaf The number of currently active softwires on the lw4over6 (binding) instance.
                  dropped-ipv4-bytes leaf IPv4traffic dropped, in bytes
                  dropped-ipv4-fragment-bytes leaf Fragmented IPv4 traffic dropped, in bytes
                  dropped-ipv4-fragments leaf Number of fragmented IPv4 packets dropped
                  dropped-ipv4-packets leaf Number of IPv4 packets dropped.
                  dropped-ipv6-bytes leaf IPv4 traffic dropped, in bytes
                  dropped-ipv6-packets leaf Number of IPv4 packets dropped.
                  hairpin-ipv4-bytes leaf IPv4 packets locally routed between two CEs (hairpinned).
                  hairpin-ipv4-packets leaf IPv4 bytes locally routed between two CEs (hairpinned).
                  ipv6-fragments-bytes-reassembled leaf IPv6 fragments successfully reassembled, in bytes
                  ipv6-fragments-reassembled leaf Number of IPv6 fragments successfully reassembled
                  out-icmpv4-error-packets leaf Internally generated ICMPv4 error packets.
                  out-icmpv6-error-packets leaf Internally generted ICMPv6 error packets.
                  rcvd-ipv4-bytes leaf IPv4 traffic received for processing, in bytes
                  rcvd-ipv4-packets leaf Number of IPv4 packets received for processing.
                  rcvd-ipv6-bytes leaf IPv6 traffic received for processing, in bytes
                  rcvd-ipv6-packets leaf Number of IPv6 packets received for processing.
                  sent-ipv4-bytes leaf Decapsulated/translated IPv4 traffic sent, in bytes
                  sent-ipv4-packets leaf Number of decapsulated/translated IPv4 packets sent.
                  sent-ipv6-bytes leaf Encapsulated/translated IPv6 traffic sent, in bytes
                  sent-ipv6-packets leaf Number of encapsulated/translated IPv6 packets sent.

Notifications

Notification Abstract
softwire-algorithm-instance-event Notifications for MAP-E or MAP-T.
softwire-br-event Notifications for BR.