ietf-dots-mapping

This module contains YANG definitions for the sharing of DDoS attack mapping details between a DOTS client and a DOTS server by ...

  • Version: 2022-06-20

    ietf-dots-mapping@2022-06-20


    
      module ietf-dots-mapping {
    
        yang-version 1.1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-dots-mapping";
    
        prefix dots-mapping;
    
        import ietf-dots-data-channel {
          prefix data-channel;
          reference
            "RFC 8783: Distributed Denial-of-Service Open Threat
            	  Signaling (DOTS) Data Channel Specification";
    
    
        }
    
        organization
          "IETF DDoS Open Threat Signaling (DOTS) Working Group";
    
        contact
          "WG Web:   <https://datatracker.ietf.org/wg/dots/>
         WG List:  <mailto:dots@ietf.org>
    
         Author:   Mohamed Boucadair
                   <mailto:mohamed.boucadair@orange.com>
    
         Author:   Jon Shallow
                   <mailto:supjps-ietf@jpshallow.com>";
    
        description
          "This module contains YANG definitions for the sharing
         of DDoS attack mapping details between a DOTS client and
         a DOTS server by means of the DOTS data channel.
    
         Copyright (c) 2022 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 Revised BSD License set
         forth in Section 4.c of the IETF Trust's Legal Provisions
         Relating to IETF Documents
         (https://trustee.ietf.org/license-info).
    
         This version of this YANG module is part of RFC 9244; see the
         RFC itself for full legal notices.";
    
        revision "2022-06-20" {
          description "Initial revision.";
          reference
            "RFC 9244: Distributed Denial-of-Service Open Threat
            	  Signaling (DOTS) Telemetry";
    
        }
    
    
        feature dots-telemetry {
          description
            "This feature indicates that DOTS telemetry data can be
           shared between DOTS clients and servers.";
        }
    
        grouping attack-mapping {
          description
            "A set of information used for sharing vendor attack mapping
           information with a peer.";
          list vendor {
            key "vendor-id";
            description
              "Vendor attack mapping information related to the
             client/server.";
            leaf vendor-id {
              type uint32;
              description
                "The Vendor ID is a security vendor's Private Enterprise
               Number as registered with IANA.";
              reference
                "IANA: Private Enterprise Numbers
                (https://www.iana.org/assignments/enterprise-numbers/)";
    
            }
    
            leaf vendor-name {
              type string;
              description
                "The name of the vendor (e.g., company A).";
            }
    
            leaf description-lang {
              type string {
                pattern
                  '((([A-Za-z]{2,3}(-[A-Za-z]{3}(-[A-Za-z]{3})'
                    + '{0,2})?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-[A-Za-z]{4})'
                    + '?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}'
                    + '|([0-9][A-Za-z0-9]{3})))*(-[0-9A-WYZa-wyz]'
                    + '(-([A-Za-z0-9]{2,8}))+)*(-[Xx](-([A-Za-z0-9]'
                    + '{1,8}))+)?|[Xx](-([A-Za-z0-9]{1,8}))+|'
                    + '(([Ee][Nn]-[Gg][Bb]-[Oo][Ee][Dd]|[Ii]-'
                    + '[Aa][Mm][Ii]|[Ii]-[Bb][Nn][Nn]|[Ii]-'
                    + '[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Ii]-'
                    + '[Ee][Nn][Oo][Cc][Hh][Ii][Aa][Nn]'
                    + '|[Ii]-[Hh][Aa][Kk]|'
                    + '[Ii]-[Kk][Ll][Ii][Nn][Gg][Oo][Nn]|'
                    + '[Ii]-[Ll][Uu][Xx]|[Ii]-[Mm][Ii][Nn][Gg][Oo]|'
                    + '[Ii]-[Nn][Aa][Vv][Aa][Jj][Oo]|[Ii]-[Pp][Ww][Nn]|'
                    + '[Ii]-[Tt][Aa][Oo]|[Ii]-[Tt][Aa][Yy]|'
                    + '[Ii]-[Tt][Ss][Uu]|[Ss][Gg][Nn]-[Bb][Ee]-[Ff][Rr]|'
                    + '[Ss][Gg][Nn]-[Bb][Ee]-[Nn][Ll]|[Ss][Gg][Nn]-'
                    + '[Cc][Hh]-[Dd][Ee])|([Aa][Rr][Tt]-'
                    + '[Ll][Oo][Jj][Bb][Aa][Nn]|[Cc][Ee][Ll]-'
                    + '[Gg][Aa][Uu][Ll][Ii][Ss][Hh]|'
                    + '[Nn][Oo]-[Bb][Oo][Kk]|[Nn][Oo]-'
                    + '[Nn][Yy][Nn]|[Zz][Hh]-[Gg][Uu][Oo][Yy][Uu]|'
                    + '[Zz][Hh]-[Hh][Aa][Kk][Kk][Aa]|[Zz][Hh]-'
                    + '[Mm][Ii][Nn]|[Zz][Hh]-[Mm][Ii][Nn]-'
                    + '[Nn][Aa][Nn]|[Zz][Hh]-[Xx][Ii][Aa][Nn][Gg])))';
              }
              default "en-US";
              description
                "Indicates the language tag that is used for
               'attack-description'.";
              reference
                "RFC 5646: Tags for Identifying Languages, Section 2.1";
    
            }
    
            leaf last-updated {
              type uint64;
              mandatory true;
              description
                "The time the mapping table was updated.  It is
               represented in seconds relative to
               1970-01-01T00:00:00Z.";
            }
    
            list attack-mapping {
              key "attack-id";
              description
                "Attack mapping details.";
              leaf attack-id {
                type uint32;
                description
                  "Unique identifier assigned by the vendor for the
                 attack.";
              }
    
              leaf attack-description {
                type string;
                mandatory true;
                description
                  "Textual representation of the attack description.
                 Natural Language Processing techniques (e.g.,
                 word embedding) might provide some utility in
                 mapping the attack description to an attack type.";
              }
            }  // list attack-mapping
          }  // list vendor
        }  // grouping attack-mapping
    
        augment /data-channel:dots-data/data-channel:dots-client {
          if-feature dots-telemetry;
          description
            "Augments the data channel with a vendor attack
           mapping table of the DOTS client.";
          container vendor-mapping {
            description
              "Used by DOTS clients to share their vendor
             attack mapping information with DOTS servers.";
            uses attack-mapping;
          }  // container vendor-mapping
        }
    
        augment /data-channel:dots-data/data-channel:capabilities {
          if-feature dots-telemetry;
          description
            "Augments the DOTS server capabilities with a
           parameter to indicate whether they can share
           attack mapping details.";
          leaf vendor-mapping-enabled {
            type boolean;
            config false;
            description
              "Indicates that the DOTS server supports sharing
             attack vendor mapping details with DOTS clients.";
          }
        }
    
        augment /data-channel:dots-data {
          if-feature dots-telemetry;
          description
            "Augments the data channel with a vendor attack
           mapping table of the DOTS server.";
          container vendor-mapping {
            config false;
            description
              "Includes the list of vendor attack mapping details
             that will be shared with DOTS clients upon request.";
            uses attack-mapping;
          }  // container vendor-mapping
        }
      }  // module ietf-dots-mapping
    

© 2023 YumaWorks, Inc. All rights reserved.