Internet-Draft YANG for Traffic Statistics March 2026
Zhao, et al. Expires 3 September 2026 [Page]
Workgroup:
nmop
Internet-Draft:
draft-zhao-nmop-e2e-traffic-stats-yang-00
Published:
Intended Status:
Standards Track
Expires:
Authors:
J. Zhao, Ed.
China Unicom
W. Lv, Ed.
China Unicom
S. Zhang, Ed.
China Unicom
R. Pang, Ed.
China Unicom

YANG Data Model for End-to-End Internet Traffic Operational Statistics

Abstract

This document defines a YANG data model for end-to-end (E2E) Internet traffic operational statistics, supporting cross-domain correlation and network performance analysis.

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 3 September 2026.

Table of Contents

1. Introduction

As network architectures become increasingly complex and multilayered, maintaining end-to-end operational statistics is a significant challenge for service providers. Current telemetry data is often fragmented across siloed management systems, making it difficult to trace traffic flows from the access edge to the service egress.

This document specifies a standardized YANG data model that bridges these statistical gaps. Unlike models focused on single-node performance, this model emphasizes inter-domain correlation, mapping traffic statistics and quality metrics (such as delay and loss) to a unified organizational and geographical hierarchy. This "single pane of glass" approach enables operators to provide service assurance and ensure consistent service delivery across heterogeneous network environments.

2. Architecture for End-to-End Internet Traffic Statistics

2.1. System Architecture

The E2E traffic operational statistics framework bridges fragmented telemetry sources by mapping domain-specific statistics into a unified model, using network metadata as the common correlation key.

+----------------------------------------------------------------------------------+
|                       Central Statistics & Analysis Platform                     |
|              (E2E Correlation, Visualization & Root Cause Analysis)             |
+----------------------------------------------------------------------------------+
                                      ^                                       ^
                                      |                                       |
                      Configuration / |                                       | Telemetry /
                      Task Sync (RW)  |                                       | State (RO)
                                      v                                       v
+----------------------------------------------------------------------------------+
|                            Standardized YANG Interface                           |
+----------------------------------------------------------------------------------+
        |                  |                  |                 |
+-------+-------+  +-------+-------+  +------+------+   +------+------+  +------+------+
| Network       |  | Fixed         |  | Mobile      |   | IP          |  | Active      |
| Metadata      |  | Access        |  | Access      |   | Bearer      |  | Probes      |
+---------------+  +---------------+  +-------------+   +-------------+  +-------------+

        |                  |                  |                 |
+-------+-------+  +-------+-------+
| Service       |  | Campus        |
| Points (IDC)  |  | Enterprise    |
+---------------+  +---------------+
Figure 1: End-to-End Traffic Statistics System Architecture

2.2. Functional Interfaces

To achieve holistic operational traffic statistics, the model integrates seven distinct functional sources:

  • Network Metadata: Acts as the "Source of Truth," providing a hierarchical inventory and asset classification. It uses anonymized codes to map physical infrastructure to logical geographical and organizational entities without exposing Personally Identifiable Information (PII).

  • Fixed Access: Captures aggregated throughput, connection status, and port-level statistics per access node (e.g., OLT). This defines the "Fixed-line Intake" of the E2E path.

  • Mobile Access: Monitors Radio Access Network (RAN) performance and generates application-category rankings (e.g., Video, Social, Gaming) to reflect mobile user experience.

  • IP Bearer: Focuses on metro and core network flow analysis. It provides critical dual-stack (IPv4/IPv6) statistics and cross-domain transit metrics to identify backbone bottlenecks.

  • Active Probes: Perform synthetic measurements of reachability and latency toward key service domains. This provides an objective "heartbeat" for critical Internet services.

  • Service Points (IDC): Monitor egress traffic from data centers (IDC) per tenant group. It identifies the "Application Source" performance for hosted services and cloud applications.

  • Campus/Enterprise: Provide statistics into local flow patterns and infrastructure health for enterprise-controlled segments, completing the statistical chain for private/managed networks.

2.3. End-to-End Data Correlation

The architecture ensures that traffic can be traced across these interfaces using the Network Metadata as the common key. For instance, a performance drop detected by Active Probes can be correlated with congestion metrics in the IP Bearer or status changes in Fixed Access, enabling rapid end-to-end fault demarcation.

2.4. Design Principles

  • Vendor-Agnostic: The model abstracts underlying hardware differences to provide a consistent view of the E2E path.

  • Privacy-First: No raw user identifiers cross the management interface; only aggregated and hashed data is permitted.

  • Modularity: Each network domain is represented as a distinct container, allowing for partial implementation based on the operator's needs.

3. YANG Model Definition

3.1. Tree Diagram

The following tree diagram provides a concise view of the ietf-internet-traffic-statistics module.

```
  module: ietf-internet-traffic-statistics
  +--rw statistics-system
     +--rw config
     |  +--rw network-planning
     |  |  +--list organization* [org-code]
     |  |     +--leaf org-code          string
     |  |     +--leaf-list levels*      string
     |  |     +--leaf province-code     string
     |  |     +--leaf city-code         string
     |  +--rw app-probe
     |     +--list target* [target-id]
     |        +--leaf target-id         string
     |        +--leaf domain            inet:host
     |        +--leaf protocol          enumeration
     +--ro state
        +--ro home-fixed-network
        |  +--list access-node-stats* [node-id]
        |     +--leaf node-id                  string
        |     +--container traffic
        |     |  +--leaf ipv4-in?    uint64
        |     |  +--leaf ipv4-out?   uint64
        |     |  +--leaf ipv6-in?    uint64
        |     |  +--leaf ipv6-out?   uint64
        |     +--list app-category-summary* [category]
        |        +--leaf category           string
        |        +--leaf ipv4-in?           uint64
        |        +--leaf ipv4-out?          uint64
        |        +--leaf ipv6-in?           uint64
        |        +--leaf ipv6-out?          uint64
        |        +--leaf ipv4-delay?        uint32
        |        +--leaf ipv4-loss-rate?    percentage
        |        +--leaf ipv6-delay?        uint32
        |        +--leaf ipv6-loss-rate?    percentage
        +--ro mobile-network
        |  +--container regional-summary
        |  |  +--list region* [region-code radio-type]
        |  |     +--leaf region-code       string
        |  |     +--leaf radio-type        radio-access-type
        |  |     +--leaf ipv4-in?          uint64
        |  |     +--leaf ipv4-out?         uint64
        |  |     +--leaf ipv6-in?          uint64
        |  |     +--leaf ipv6-out?         uint64
        |  +--list app-rankings* [app-group radio-type]
        |     +--leaf app-group         string
        |     +--leaf radio-type        radio-access-type
        |     +--leaf ipv4-in?          uint64
        |     +--leaf ipv4-out?         uint64
        |     +--leaf ipv6-in?          uint64
        |     +--leaf ipv6-out?         uint64
        |     +--leaf ipv4-delay?       uint32
        |     +--leaf ipv4-loss-rate?   percentage
        |     +--leaf ipv6-delay?       uint32
        |     +--leaf ipv6-loss-rate?   percentage
        +--ro ip-network
        |  +--list biz-flow* [direction ip-type]
        |     +--leaf direction           enumeration
        |     +--leaf ip-type             enumeration
        |     +--leaf intl-traffic?       uint64
        |     +--leaf peering-traffic?    uint64
        +--ro idc-network
        |  +--list tenant-summary* [hashed-tenant-id]
        |     +--leaf hashed-tenant-id     string
        |     +--leaf ipv4-in?            uint64
        |     +--leaf ipv4-out?           uint64
        |     +--leaf ipv6-in?            uint64
        |     +--leaf ipv6-out?           uint64
        +--ro campus-network
        |  +--list enterprise-stats* [hashed-ent-id]
        |     +--leaf hashed-ent-id     string
        |     +--leaf ipv4-in?          uint64
        |     +--leaf ipv4-out?         uint64
        |     +--leaf ipv6-in?          uint64
        |     +--leaf ipv6-out?         uint64
        |     +--leaf ipv4-delay?       uint32
        |     +--leaf ipv4-loss-rate?   percentage
        |     +--leaf ipv6-delay?       uint32
        |     +--leaf ipv6-loss-rate?   percentage
        +--ro app-probe-results
           +--list probe-stat* [target-id]
              +--leaf target-id           leafref
              +--leaf ipv4-delay?         uint32
              +--leaf ipv4-loss-rate?     percentage
              +--leaf ipv6-delay?         uint32
              +--leaf ipv6-loss-rate?     percentage
```

3.2. Main Module

The following is the formal YANG definition for ietf-internet-traffic-statistics.

```
module ietf-internet-traffic-statistics {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-internet-traffic-statistics";
  prefix itv;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }

  organization
    "IETF NMOP Working Group";

  contact
    "Editor: Jing Zhao <zhaoj501@chinaunicom.cn>";

  description
    "This module defines a YANG data model for end-to-end Internet traffic
     statistics. It provides a standardized structure for collecting
     telemetry across fixed, mobile, and backbone network segments.

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

  revision 2026-03-02 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: Internet traffic statistics";
  }

  /* --- Typedefs --- */

  typedef radio-access-type {
    type enumeration {
      enum GSM { description "2G - Global System for Mobile Communications."; }
      enum UMTS { description "3G - Universal Mobile Telecommunications System."; }
      enum LTE { description "4G - Long Term Evolution."; }
      enum NR { description "5G - New Radio."; }
      enum WLAN { description "Wireless Local Area Network (Wi-Fi)."; }
      enum UNKNOWN {
        description "Unknown or unidentified radio access technology.";
      }
    }
    description
      "Comprehensive enumeration of supported radio access technologies.";
  }

  typedef percentage {
    type decimal64 {
      fraction-digits 4;
      range "0.0000 .. 100.0000";
    }
    units "percent";
    description
      "Percentage value with four decimal places of precision.";
  }

  /* --- Groupings --- */

  grouping common-counters {
    description
      "Standard traffic volume counters with numerical defaults.";
    leaf ipv4-in {
      type uint64;
      units "octets";
      default 0;
    }
    leaf ipv4-out {
      type uint64;
      units "octets";
      default 0;
    }
    leaf ipv6-in {
      type uint64;
      units "octets";
      default 0;
    }
    leaf ipv6-out {
      type uint64;
      units "octets";
      default 0;
    }
  }

  grouping performance-stats {
    description
      "Key quality of service (QoS) metrics with mandatory defaults.";
    leaf ipv4-delay {
      type uint32;
      units "ms";
      default 0;
    }
    leaf ipv4-loss-rate {
      type percentage;
      default 0.0000;
    }
    leaf ipv6-delay {
      type uint32;
      units "ms";
      default 0;
    }
    leaf ipv6-loss-rate {
      type percentage;
      default 0.0000;
    }
  }

  /* --- Core Data Nodes --- */

  container statistics-system {
    description
      "Top-level anchor for the traffic statistics system.";

    container config {
      description "Task configurations and network planning metadata.";

      container network-planning {
        description "Organizational and geographic hierarchy configuration.";
        list organization {
          key "org-code";
          description "Mapping of anonymized codes to network hierarchy.";
          leaf org-code {
            type string;
            description "Anonymized organization code for local inventory.";
          }
          leaf-list levels {
            type string;
            max-elements 5;
            ordered-by user;
            description "Hierarchical levels of the organization.";
          }
          leaf province-code {
            type string;
            description "Anonymized province identifier.";
          }
          leaf city-code {
            type string;
            description "Anonymized city identifier.";
          }
        }
      }

      container app-probe {
        description "Configuration for active service probing tasks.";
        list target {
          key "target-id";
          description "List of domains or IPs to be monitored via probes.";
          leaf target-id {
            type string;
            description "Unique identifier for the probe target.";
          }
          leaf domain {
            type inet:host;
            description "Target domain name or IP address.";
          }
          leaf protocol {
            type enumeration {
              enum TCP;
              enum UDP;
              enum ICMP;
              enum HTTP;
              enum HTTPS;
            }
            description "Protocol used for measurement.";
          }
        }
      }
    }

    container state {
      config false;
      description
        "Real-time operational telemetry and statistics.";

      container home-fixed-network {
        description "Fixed-line access network statistics.";
        list access-node-stats {
          key "node-id";
          leaf node-id {
            type string;
            description "ID of the OLT/Access node.";
          }
          container traffic {
            uses common-counters;
          }
          list app-category-summary {
            key "category";
            leaf category {
              type string;
              description "Service category (Video, Web).";
            }
            uses common-counters;
            uses performance-stats;
          }
        }
      }

      container mobile-network {
        description "Mobile RAN performance data.";
        container regional-summary {
          list region {
            key "region-code radio-type";
            leaf region-code {
              type string;
              description "Anonymized region ID.";
            }
            leaf radio-type {
              type radio-access-type;
            }
            uses common-counters;
          }
        }
        list app-rankings {
          key "app-group radio-type";
          leaf app-group {
            type string;
            description "App group name.";
          }
          leaf radio-type {
            type radio-access-type;
            description "Radio access technology type.";
          }
          uses common-counters;
          uses performance-stats;
        }
      }

      container ip-network {
        description "Backbone/Bearer network traffic flows.";
        list biz-flow {
          key "direction ip-type";
          leaf direction {
            type enumeration {
              enum inflow;
              enum outflow;
            }
          }
          leaf ip-type {
            type enumeration {
              enum ipv4;
              enum ipv6;
            }
          }
          leaf intl-traffic {
            type uint64;
            units "octets";
            default 0;
          }
          leaf peering-traffic {
            type uint64;
            units "octets";
            default 0;
          }
        }
      }

      container idc-network {
        description "Data center egress statistics.";
        list tenant-summary {
          key "hashed-tenant-id";
          leaf hashed-tenant-id {
            type string;
            description "Anonymized tenant ID.";
          }
          uses common-counters;
        }
      }

      container campus-network {
        description "Enterprise/Campus network quality.";
        list enterprise-stats {
          key "hashed-ent-id";
          leaf hashed-ent-id {
            type string;
            description "Anonymized enterprise ID.";
          }
          uses common-counters;
          uses performance-stats;
        }
      }

      container app-probe-results {
        description "Results of active application probing.";
        list probe-stat {
          key "target-id";
          leaf target-id {
            type leafref {
              path "/itv:statistics-system/itv:config/itv:app-probe/itv:target/itv:target-id";
            }
            description
              "Reference to the corresponding probe target in config.";
          }
          uses performance-stats;
        }
      }
    }
  }
}

```

4. Security Considerations

The YANG module defined in this document is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040].

5. IANA Considerations

TBD.

6. References

6.1. Normative References

[RFC6991]
Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, , <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/info/rfc7950>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/info/rfc8341>.
[RFC8342]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, , <https://www.rfc-editor.org/info/rfc8342>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.

6.2. Informative References

[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.

Authors' Addresses

Jing Zhao (editor)
China Unicom
Beijing
China
Wenxiang Lv (editor)
China Unicom
Beijing
China
Shuai Zhang (editor)
China Unicom
Beijing
China
Ran Pang (editor)
China Unicom
Beijing
China