<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<?rfc toc="yes"?>
<?rfc compact="no"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>
<rfc ipr="trust200902"
     category="std"
     docName="draft-ietf-ipsecme-yang-iptfs-00"     submissionType="IETF">
  <front>
    <title abbrev="IP Traffic Flow Security YANG Module">IP Traffic Flow Security YANG Module</title>
<author initials='D.' surname='Fedyk' fullname='Don Fedyk'><organization>LabN Consulting, L.L.C.</organization><address><email>dfedyk@labn.net</email></address></author>
<author initials='C.' surname='Hopps' fullname='Christian Hopps'><organization>LabN Consulting, L.L.C.</organization><address><email>chopps@chopps.org</email></address></author>  <date/><abstract><t>This document describes a yang module for the management of IP
Traffic Flow Security additions to IKEv2 and IPsec.</t></abstract>  </front>  <middle>

<section title="Introduction">
<t>This document defines a YANG module <xref target="RFC7950"/> for the management of the IP
Traffic Flow Security (IP-TFS) extensions as defined in
<xref target="I-D.ietf-ipsecme-iptfs"/>.  IP-TFS provides enhancements to an IPsec tunnel
Security Association to provide improved traffic confidentiality. Traffic
confidentiality reduces the ability of traffic analysis to determine identity
and correlate observable traffic patterns.  IP-TFS offers efficiency when
aggregating traffic in fixed size IPsec tunnel packets.</t>

<t>The YANG data model in this document conforms to the Network
Management Datastore Architecture defined in <xref target="RFC8342"/>.</t>

<t>The only actively published YANG modules for IPsec are found in
<xref target="I-D.ietf-i2nsf-sdn-ipsec-flow-protection"/>. This document 
uses these models as a general IPsec model that can be augmented.
The models in <xref target="I-D.ietf-i2nsf-sdn-ipsec-flow-protection"/> provide for an ike and an ikeless model.</t>

<section title="Terminology &amp; Concepts">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals,
as shown here.</t>

</section>

</section>


<section title="Overview">
<t>This document defines configuration and operational parameters of IP traffic
flow security (IP-TFS).  IP-TFS, defined in <xref target="I-D.ietf-ipsecme-iptfs"/>,
defines a security association for tunnel mode IPsec with characteristics
that improve traffic confidentiality and reduce bandwidth efficiency loss.
These documents assume familiarity with IP security concepts described
in <xref target="RFC4301"/>.</t>

<t>IP-TFS uses tunnel mode to improve confidentiality by hiding inner packet
identifiable information, packet size and packet timing.  IP-TFS provides a
general capability allowing aggregation of multiple packets in uniform 
size outer tunnel ipsec packets. It maintains the outer packet size 
by utilizing combinations of aggregating, padding and fragmentating inner
packets to fll out the IPsec outer tunnel packet.
Zero byte padding is used to fill the packet when no data is available to send.</t>

<t>This document specifies an extensible configuration model for IP-TFS.  This
version utilizes the capabilities of IP-TFS to configure fixed size IP-TFS
Packets that are transmitted at a constant rate.  This model is structured to
allow for different types of operation through future augmentation.</t>

<t>IP-TFS YANG augments IPsec YANG model from
<xref target="I-D.ietf-i2nsf-sdn-ipsec-flow-protection"/>.  IP-TFS makes use of IPsec tunnel
mode and adds a small number configuration items to tunnel mode IPsec.  As
defined in <xref target="I-D.ietf-ipsecme-iptfs"/>, any SA configured to use IP-TFS supports
only IP-TFS packets i.e. no mixed IPsec modes.</t>

<t>The behavior for IP-TFS is controlled by the source.
The self-describing format of an IP-TFS packets allows a sending side to adjust
the packet-size and timing independently from any receiver.  Both directions
are also independent, e.g. IP-TFS may be run only in one direction.
This means that counters, which are created here for both directions may 
be 0 or not updated in the case of an SA that uses IP-TFS only in on direction.</t>

<t>Cases where IP-TFS statistics are active for one direction:</t>
<t><list style="symbols">
<t>SA one direction - IP-TFS enabled</t>
<t>SA both directions - IP-TFS only enabled in one direction</t>
</list></t>

<t>Case where IP-TFS statistics are for both directions:</t>
<t><list style="symbols">
<t>SA both directions - IP-TFS enable for both directions</t>
</list></t>

<t>The data model uses following constructs for configuration and
   management:</t>

<t>o  Configuration</t>

<t>o  Operational State</t>


<t>This YANG module supports configuration of fixed size and fixed rate packets,
and elements that may be augmented to support future configuration.   The
protocol specification <xref target="I-D.ietf-ipsecme-iptfs"/>, goes beyond this simple
fixed mode of operation by defining a general format for any type of scheme.
In this document the outer IPsec packets can be sent with fixed or variable
size (without padding). The configuration allows the fixed packet size to be
determined by the path MTU. The fixed packet size can also be configured if a
value lower than the path MTU is desired.</t>

<t>Other configuration items include:</t>
<t><list style="symbols">
<t>Congestion Control. A congestion control setting to allow IP-TFS 
to reduce the packet rate when congestion is detected.</t>
<t>Fixed Rate configuration. The IP-TFS tunnel rate can be configured taking
into account either layer 2 overhead or layer 3 overhead. Layer 3 overhead
is the IP data rate and layer 2 overhead is the rate of bits on the link. 
The combination of packet size and rate determines the
nominal maximum bandwidth and the transmission interval when fixed size packets
are used.</t>
<t>User packet Fragmentation Control. While fragmentation is recommended
for improved efficiency, a 
configuration is provided if users wish to observe
the effect no-fragmentation on their data flows.</t>
</list></t>

<t>The YANG operational data allows the readout of the configured parameters as
well as the per SA statistics and error counters for IP-TFS.  Per SA IPsec packet
statistics are provided as a feature and per SA IP-TFS specific statistics 
as another feature.
Both sets of statistics augment the IPsec YANG models with
counters that allow observation of IP-TFS packet efficiency.</t>


<t>Draft <xref target="I-D.ietf-i2nsf-sdn-ipsec-flow-protection"/> has a mature set of IPsec YANG
management objects.</t>

<t>IP-TFS YANG augments:</t>

<t><list style="symbols">
<t>Yang catalog entry for ietf-i2nsf-ike@2020-10-30.yang</t>
<t>Yang catalog entry for ietf-i2nsf-ikeless@20202-10-30.yang</t>
</list></t>

<t>The Security Policy database entry and Security Association entry for an IPsec
Tunnel can be augmented with IP-TFS.</t>

</section>

<section title="YANG Management">
<section title="YANG Tree">
<t>The following is the YANG tree diagram (<xref target="RFC8340"/>) for the IP-TFS
extensions.</t>

<figure><artwork><![CDATA[

module: ietf-ipsecme-iptfs
  augment /nsfike:ipsec-ike/nsfike:conn-entry/nsfike:spd
            /nsfike:spd-entry/nsfike:ipsec-policy-config
            /nsfike:processing-info/nsfike:ipsec-sa-cfg:
    +--rw traffic-flow-security
       +--rw congestion-control?     boolean
       +--rw packet-size
       |  +--rw use-path-mtu-discovery?   boolean
       |  +--rw outer-packet-size?        uint16
       +--rw (tunnel-rate)?
       |  +--:(l2-fixed-rate)
       |  |  +--rw l2-fixed-rate?    uint64
       |  +--:(l3-fixed-rate)
       |     +--rw l3-fixed-rate?    uint64
       +--rw dont-fragment?          boolean
       +--rw max-aggregation-time?   decimal64
  augment /nsfike:ipsec-ike/nsfike:conn-entry/nsfike:child-sa-info:
    +--ro traffic-flow-security
       +--ro congestion-control?     boolean
       +--ro packet-size
       |  +--ro use-path-mtu-discovery?   boolean
       |  +--ro outer-packet-size?        uint16
       +--ro (tunnel-rate)?
       |  +--:(l2-fixed-rate)
       |  |  +--ro l2-fixed-rate?    uint64
       |  +--:(l3-fixed-rate)
       |     +--ro l3-fixed-rate?    uint64
       +--ro dont-fragment?          boolean
       +--ro max-aggregation-time?   decimal64
  augment /nsfikels:ipsec-ikeless/nsfikels:spd/nsfikels:spd-entry
            /nsfikels:ipsec-policy-config/nsfikels:processing-info
            /nsfikels:ipsec-sa-cfg:
    +--rw traffic-flow-security
       +--rw congestion-control?     boolean
       +--rw packet-size
       |  +--rw use-path-mtu-discovery?   boolean
       |  +--rw outer-packet-size?        uint16
       +--rw (tunnel-rate)?
       |  +--:(l2-fixed-rate)
       |  |  +--rw l2-fixed-rate?    uint64
       |  +--:(l3-fixed-rate)
       |     +--rw l3-fixed-rate?    uint64
       +--rw dont-fragment?          boolean
       +--rw max-aggregation-time?   decimal64
  augment /nsfikels:ipsec-ikeless/nsfikels:sad/nsfikels:sad-entry:
    +--ro traffic-flow-security
       +--ro congestion-control?     boolean
       +--ro packet-size
       |  +--ro use-path-mtu-discovery?   boolean
       |  +--ro outer-packet-size?        uint16
       +--ro (tunnel-rate)?
       |  +--:(l2-fixed-rate)
       |  |  +--ro l2-fixed-rate?    uint64
       |  +--:(l3-fixed-rate)
       |     +--ro l3-fixed-rate?    uint64
       +--ro dont-fragment?          boolean
       +--ro max-aggregation-time?   decimal64
  augment /nsfike:ipsec-ike/nsfike:conn-entry/nsfike:child-sa-info:
    +--ro ipsec-stats {ipsec-stats}?
    |  +--ro tx-pkts?        uint64
    |  +--ro tx-octets?      uint64
    |  +--ro tx-drop-pkts?   uint64
    |  +--ro rx-pkts?        uint64
    |  +--ro rx-octets?      uint64
    |  +--ro rx-drop-pkts?   uint64
    +--ro iptfs-inner-pkt-stats {iptfs-stats}?
    |  +--ro tx-pkts?              uint64
    |  +--ro tx-octets?            uint64
    |  +--ro rx-pkts?              uint64
    |  +--ro rx-octets?            uint64
    |  +--ro rx-incomplete-pkts?   uint64
    +--ro iptfs-outer-pkt-stats {iptfs-stats}?
       +--ro tx-all-pad-pkts?       uint64
       +--ro tx-all-pad-octets?     uint64
       +--ro tx-extra-pad-pkts?     uint64
       +--ro tx-extra-pad-octets?   uint64
       +--ro rx-all-pad-pkts?       uint64
       +--ro rx-all-pad-octets?     uint64
       +--ro rx-extra-pad-pkts?     uint64
       +--ro rx-extra-pad-octets?   uint64
       +--ro rx-errored-pkts?       uint64
       +--ro rx-missed-pkts?        uint64
  augment /nsfikels:ipsec-ikeless/nsfikels:sad/nsfikels:sad-entry:
    +--rw ipsec-stats {ipsec-stats}?
    |  +--ro tx-pkts?        uint64
    |  +--ro tx-octets?      uint64
    |  +--ro tx-drop-pkts?   uint64
    |  +--ro rx-pkts?        uint64
    |  +--ro rx-octets?      uint64
    |  +--ro rx-drop-pkts?   uint64
    +--ro iptfs-inner-pkt-stats {iptfs-stats}?
    |  +--ro tx-pkts?              uint64
    |  +--ro tx-octets?            uint64
    |  +--ro rx-pkts?              uint64
    |  +--ro rx-octets?            uint64
    |  +--ro rx-incomplete-pkts?   uint64
    +--ro iptfs-outer-pkt-stats {iptfs-stats}?
       +--ro tx-all-pad-pkts?       uint64
       +--ro tx-all-pad-octets?     uint64
       +--ro tx-extra-pad-pkts?     uint64
       +--ro tx-extra-pad-octets?   uint64
       +--ro rx-all-pad-pkts?       uint64
       +--ro rx-all-pad-octets?     uint64
       +--ro rx-extra-pad-pkts?     uint64
       +--ro rx-extra-pad-octets?   uint64
       +--ro rx-errored-pkts?       uint64
       +--ro rx-missed-pkts?        uint64
]]></artwork></figure>

</section>

<section title="YANG Module">
<t>The following is the YANG module for managing the IP-TFS extensions.</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-ipsecme-iptfs@2021-03-08.yang"
module ietf-ipsecme-iptfs {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ipsecme-iptfs";
  prefix iptfs;

  import ietf-i2nsf-ike {
    prefix nsfike;
  }
  import ietf-i2nsf-ikeless {
    prefix nsfikels;
  }

  organization
    "IETF IPSECME Working Group (IPSECME)";
  contact
    "WG Web:  <https://tools.ietf.org/wg/ipsecme/>
     WG List: <mailto:ipsecme@ietf.org>

     Author: Don Fedyk
	     <mailto:dfedyk@labn.net>

     Author: Christian Hopps
	     <mailto:chopps@chopps.org>";

  // RFC Ed.: replace XXXX with actual RFC number and
  // remove this note.

  description
    "This module defines the configuration and operational state for
     managing the IP Traffic Flow Security functionality [RFC XXXX].

     Copyright (c) 2020 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
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://tools.ietf.org/html/rfcXXXX); see the RFC itself for
     full legal notices.";

  revision 2021-03-08 {
    description
      "Initial Revision";
    reference
      "RFC XXXX: IP Traffic Flow Security YANG Module";
  }

  feature ipsec-stats {
    description
      "This feature indicates the device supports
       per SA IPsec statistics";
  }

  feature iptfs-stats {
    description
      "This feature indicates the device supports
       per SA IP Traffic Flow Security statistics";
  }

  /*--------------------*/
  /*   groupings        */
  /*--------------------*/

  grouping ipsec-tx-stat-grouping {
    description
      "IPsec outbound statistics";
    leaf tx-pkts {
      type uint64;
      config false;
      description
	"Outbound Packet count";
    }
    leaf tx-octets {
      type uint64;
      config false;
      description
	"Outbound Packet bytes";
    }
    leaf tx-drop-pkts {
      type uint64;
      config false;
      description
	"Outbound dropped packets count";
    }
  }

  grouping ipsec-rx-stat-grouping {
    description
      "IPsec inbound statistics";
    leaf rx-pkts {
      type uint64;
      config false;
      description
	"Inbound Packet count";
    }
    leaf rx-octets {
      type uint64;
      config false;
      description
	"Inbound Packet bytes";
    }
    leaf rx-drop-pkts {
      type uint64;
      config false;
      description
	"Inbound dropped packets count";
    }
  }

  grouping iptfs-inner-tx-stat-grouping {
    description
      "IP-TFS outbound inner packet statistics";
    leaf tx-pkts {
      type uint64;
      config false;
      description
	"Total number of IP-TFS inner packets sent. This
	 count is whole packets only.  A fragmented packet
	 counts as one packet";
      reference
	"draft-ietf-ipsecme-iptfs";
    }
    leaf tx-octets {
      type uint64;
      config false;
      description
	"Total number of IP-TFS inner octets sent.  This is
	 inner packet octets only.  Does not count padding.";
      reference
	"draft-ietf-ipsecme-iptfs";
    }
  }

  grouping iptfs-outer-tx-stat-grouping {
    description
      "IP-TFS outbound inner packet statistics";
    leaf tx-all-pad-pkts {
      type uint64;
      config false;
      description
	"Total number of transmitted IP-TFS packets that
	 were all padding with no inner packet data.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3";
    }
    leaf tx-all-pad-octets {
      type uint64;
      config false;
      description
	"Total number transmitted octets of padding added to
	 IP-TFS packets with no inner packet data.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3";
    }
    leaf tx-extra-pad-pkts {
      type uint64;
      config false;
      description
	"Total number of transmitted outer IP-TFS packets
	 that included some padding.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3.1";
    }
    leaf tx-extra-pad-octets {
      type uint64;
      config false;
      description
	"Total number of transmitted octets of padding added
	 to outer IP-TFS packets with data.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3.1";
    }
  }

  grouping iptfs-inner-rx-stat-grouping {
    description
      "IP-TFS inner packet inbound statistics";
    leaf rx-pkts {
      type uint64;
      config false;
      description
	"Total number of IP-TFS inner packets received.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2";
    }
    leaf rx-octets {
      type uint64;
      config false;
      description
	"Total number of IP-TFS inner octets received.  Does
	 not include padding or overhead";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2";
    }
    leaf rx-incomplete-pkts {
      type uint64;
      config false;
      description
	"Total number of IP-TFS inner packets that were
	 incomplete.  Usually this is due to fragments not
	 received. Also, this may be due to misordering or
	 errors in received outer packets.";
      reference
	"draft-ietf-ipsecme-iptfs";
    }
  }

  grouping iptfs-outer-rx-stat-grouping {
    description
      "IP-TFS outer packet inbound statistics";
    leaf rx-all-pad-pkts {
      type uint64;
      config false;
      description
	"Total number of received IP-TFS packets that were
	 all padding with no inner packet data.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3";
    }
    leaf rx-all-pad-octets {
      type uint64;
      config false;
      description
	"Total number received octets of padding added to
	 IP-TFS packets with no inner packet data.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3";
    }
    leaf rx-extra-pad-pkts {
      type uint64;
      config false;
      description
	"Total number of received outer IP-TFS packets that
	 included some padding.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3.1";
    }
    leaf rx-extra-pad-octets {
      type uint64;
      config false;
      description
	"Total number of received octets of padding added to
	 outer IP-TFS packets with data.";
      reference
	"draft-ietf-ipsecme-iptfs section 2.2.3.1";
    }
    leaf rx-errored-pkts {
      type uint64;
      config false;
      description
	"Total number of IP-TFS outer packets dropped due to
	 errors.";
      reference
	"draft-ietf-ipsecme-iptfs";
    }
    leaf rx-missed-pkts {
      type uint64;
      config false;
      description
	"Total number of IP-TFS outer packets missing
	 indicated by missing sequence number.";
      reference
	"draft-ietf-ipsecme-iptfs";
    }
  }

  grouping iptfs-config {
    description
      "This is the grouping for iptfs configuration";
    container traffic-flow-security {
      // config true; want this so we can refine?
      description
	"Configure the IPSec TFS in Security
	 Association Database (SAD)";
      leaf congestion-control {
	type boolean;
	default "true";
	description
	  "Congestion Control With the congestion controlled
	   mode, IP-TFS adapts to network congestion by
	   lowering the packet send rate to accommodate the
	   congestion, as well as raising the rate when
	   congestion subsides.";
	reference
	  "draft-ietf-ipsecme-iptfs section 2.5.2";
      }
      container packet-size {
	description
	  "Packet size is either auto-discovered or manually
	   configured.";
	leaf use-path-mtu-discovery {
	  type boolean;
	  default "true";
	  description
	    "Utilize path mtu discovery to determine maximum IP-TFS 
	     packet size. If the packet size is explicitly 
	     configured, then it will only be adjusted downward 
	     if use-path-mtu-discovery is set.";
	  reference
	    "draft-ietf-ipsecme-iptfs section 4.2";
	}
	leaf outer-packet-size {
	  type uint16;
	  description
	    "The size of the outer encapsulating tunnel packet (i.e.,
	     the IP packet containing the ESP payload).";
	  reference
	    "draft-ietf-ipsecme-iptfs section 4.2";
	}
      }
      choice tunnel-rate {
	description
	  "TFS bit rate may be specified at layer 2 wire
	   rate or layer 3 packet rate";
	leaf l2-fixed-rate {
	  type uint64;
	  description
	    "Target bandwidth/bit rate in bps for iptfs tunnel. This
	     fixed rate is the nominal timing for the fixed size packet.
	     If congestion control is enabled the rate may be adjusted
	     down (or up if unset).";
	  reference
	    "draft-ietf-ipsecme-iptfs section 4.1";
	}
	leaf l3-fixed-rate {
	  type uint64;
	  description
	    "Target bandwidth/bit rate in bps for iptfs tunnel. This
	     fixed rate is the nominal timing for the fixed size packet.
	     If congestion control is enabled the rate may be adjusted
	     down (or up if unset).";
	  reference
	    "draft-ietf-ipsecme-iptfs section 4.1";
	}
      }
      leaf dont-fragment {
	type boolean;
	default "false";
	description
	  "Disable packet fragmentation across consecutive iptfs
	   tunnel packets";
	reference
	  "draft-ietf-ipsecme-iptfs section 2.2.4 and 6.4.1";
      }
      leaf max-aggregation-time {
	type decimal64 {
	  fraction-digits 6;
	}
	units "milliseconds";
	description
	  "Maximum Aggregation Time in  Milliseconds 
	   or fractional milliseconds down to 1 nanosecond";
      }
    }
  }

  /*
   * IP-TFS ike configuration
   */

  augment "/nsfike:ipsec-ike/nsfike:conn-entry/nsfike:spd/"
	+ "nsfike:spd-entry/"
	+ "nsfike:ipsec-policy-config/"
	+ "nsfike:processing-info/"
	+ "nsfike:ipsec-sa-cfg" {
    description
      "IP-TFS configuration for this policy.";
    uses iptfs-config;
  }

  augment "/nsfike:ipsec-ike/nsfike:conn-entry/"
	+ "nsfike:child-sa-info" {
    description
      "IP-TFS configured on this SA.";
    uses iptfs-config {
      refine "traffic-flow-security" {
	config false;
      }
    }
  }

  /*
   * IP-TFS ikeless configuration
   */

  augment "/nsfikels:ipsec-ikeless/nsfikels:spd/"
	+ "nsfikels:spd-entry/"
	+ "nsfikels:ipsec-policy-config/"
	+ "nsfikels:processing-info/"
	+ "nsfikels:ipsec-sa-cfg" {
    description
      "IP-TFS configuration for this policy.";
    uses iptfs-config;
  }

  augment "/nsfikels:ipsec-ikeless/nsfikels:sad/"
	+ "nsfikels:sad-entry" {
    description
      "IP-TFS configured on this SA.";
    uses iptfs-config {
      refine "traffic-flow-security" {
	config false;
      }
    }
  }

  /*
   * packet counters
   */

  augment "/nsfike:ipsec-ike/nsfike:conn-entry/"
	+ "nsfike:child-sa-info" {
    description
      "Per SA Counters";
    container ipsec-stats {
      if-feature "ipsec-stats";
      config false;
      description
	"IPsec per SA packet counters.";
      uses ipsec-tx-stat-grouping {
	//when "direction = 'outbound'";
      }
      uses ipsec-rx-stat-grouping {
	//when "direction = 'inbound'";
      }
    }
    container iptfs-inner-pkt-stats {
      if-feature "iptfs-stats";
      config false;
      description
	"IPTFS per SA inner packet counters.";
      uses iptfs-inner-tx-stat-grouping {
	//when "direction = 'outbound'";
      }
      uses iptfs-inner-rx-stat-grouping {
	//when "direction = 'inbound'";
      }
    }
    container iptfs-outer-pkt-stats {
      if-feature "iptfs-stats";
      config false;
      description
	"IPTFS per SA outer packets counters.";
      uses iptfs-outer-tx-stat-grouping {
	//when "direction = 'outbound'";
      }
      uses iptfs-outer-rx-stat-grouping {
	//when "direction = 'inbound'";
      }
    }
  }

  /*
   * packet counters
   */

  augment "/nsfikels:ipsec-ikeless/nsfikels:sad/"
	+ "nsfikels:sad-entry" {
    description
      "Per SA Counters";
    container ipsec-stats {
      if-feature "ipsec-stats";
      description
	"IPsec per SA packet counters.";
      uses ipsec-tx-stat-grouping {
	//when "direction = 'outbound'";
      }
      uses ipsec-rx-stat-grouping {
	//when "direction = 'inbound'";
      }
    }
    container iptfs-inner-pkt-stats {
      if-feature "iptfs-stats";
      config false;
      description
	"IPTFS per SA inner packet counters.";
      uses iptfs-inner-tx-stat-grouping {
	//when "direction = 'outbound'";
      }
      uses iptfs-inner-rx-stat-grouping {
	//when "direction = 'inbound'";
      }
    }
    container iptfs-outer-pkt-stats {
      if-feature "iptfs-stats";
      config false;
      description
	"IPTFS per SA outer packets counters.";
      uses iptfs-outer-tx-stat-grouping {
	//when "direction = 'outbound'";
      }
      uses iptfs-outer-rx-stat-grouping {
	//when "direction = 'inbound'";
      }
    }

  }
}
<CODE ENDS>
]]></artwork></figure>

</section>

</section>

<section title="IANA Considerations">
<section title="Updates to the IETF XML Registry">
<t>This document registers a URI in the "IETF XML Registry" <xref target="RFC3688"/>.
Following the format in <xref target="RFC3688"/>, the following registration has been
made:</t>

<t><list style="hanging">
<t hangText="URI:"><vspace/>urn:ietf:params:xml:ns:yang:ietf-ipsecme-iptfs</t>
<t hangText="Registrant Contact:"><vspace/>The IESG.</t>
<t hangText="XML:"><vspace/>N/A; the requested URI is an XML namespace.</t>
</list></t>

</section>

<section title="Updates to the YANG Module Names Registry">
<t>This document registers one YANG module in the "YANG Module Names"
registry <xref target="RFC6020"/>. Following the format in <xref target="RFC6020"/>, the following
registration has been made:</t>

<t><list style="hanging">
<t hangText="name:"><vspace/>ietf-ipsecme-iptfs</t>
<t hangText="namespace:"><vspace/>urn:ietf:params:xml:ns:yang:ietf-ipsecme-iptfs</t>
<t hangText="prefix:"><vspace/>iptfs</t>
<t hangText="reference:"><vspace/>RFC XXXX (RFC Ed.: replace XXXX with actual RFC number and remove this note.)</t>
</list></t>

</section>

</section>

<section title="Security Considerations">
<t>The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols such
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is
the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF layer is
HTTPS, and the mandatory-to-implement secure transport is TLS
<xref target="RFC8446"/>.</t>

<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content.</t>

<t>The YANG module defined in this document can enable, disable and
modify the behavior of IP traffic flow security, for the implications
regarding these types of changes consult the <xref target="I-D.ietf-ipsecme-iptfs"/>
which defines the functionality.</t>

</section>

<section title="Acknowledgements">
<t>The authors would like to thank Eric Kinzie for his feedback on the 
YANG model.</t>

</section>

</middle>
<back>
<references title="Normative References">


<reference  anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>


<reference  anchor='RFC4301' target='https://www.rfc-editor.org/info/rfc4301'>
<front>
<title>Security Architecture for the Internet Protocol</title>
<author initials='S.' surname='Kent' fullname='S. Kent'><organization /></author>
<author initials='K.' surname='Seo' fullname='K. Seo'><organization /></author>
<date year='2005' month='December' />
<abstract><t>This document describes an updated version of the &quot;Security Architecture for IP&quot;, which is designed to provide security services for traffic at the IP layer.  This document obsoletes RFC 2401 (November 1998).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4301'/>
<seriesInfo name='DOI' value='10.17487/RFC4301'/>
</reference>


<reference  anchor='RFC6020' target='https://www.rfc-editor.org/info/rfc6020'>
<front>
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<date year='2010' month='October' />
<abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6020'/>
<seriesInfo name='DOI' value='10.17487/RFC6020'/>
</reference>


<reference  anchor='RFC7950' target='https://www.rfc-editor.org/info/rfc7950'>
<front>
<title>The YANG 1.1 Data Modeling Language</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<date year='2016' month='August' />
<abstract><t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols.  This document describes the syntax and semantics of version 1.1 of the YANG language.  YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification.  There are a small number of backward incompatibilities from YANG version 1.  This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='7950'/>
<seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>


<reference  anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>


<reference  anchor='RFC8342' target='https://www.rfc-editor.org/info/rfc8342'>
<front>
<title>Network Management Datastore Architecture (NMDA)</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author>
<author initials='J.' surname='Schoenwaelder' fullname='J. Schoenwaelder'><organization /></author>
<author initials='P.' surname='Shafer' fullname='P. Shafer'><organization /></author>
<author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></author>
<author initials='R.' surname='Wilton' fullname='R. Wilton'><organization /></author>
<date year='2018' month='March' />
<abstract><t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t></abstract>
</front>
<seriesInfo name='RFC' value='8342'/>
<seriesInfo name='DOI' value='10.17487/RFC8342'/>
</reference>


<reference anchor='I-D.ietf-ipsecme-iptfs'>
<front>
<title>IP-TFS: IP Traffic Flow Security Using Aggregation and Fragmentation</title>

<author initials='C' surname='Hopps' fullname='Christian Hopps'>
    <organization />
</author>

<date month='January' day='19' year='2021' />

<abstract><t>This document describes a mechanism to enhance IPsec traffic flow security by adding traffic flow confidentiality to encrypted IP encapsulated traffic.  Traffic flow confidentiality is provided by obscuring the size and frequency of IP traffic using a fixed-sized, constant-send-rate IPsec tunnel.  The solution allows for congestion control as well as non-constant send-rate usage.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-ipsecme-iptfs-06' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipsecme-iptfs-06.txt' />
</reference>


<reference anchor='I-D.ietf-i2nsf-sdn-ipsec-flow-protection'>
<front>
<title>Software-Defined Networking (SDN)-based IPsec Flow Protection</title>

<author initials='R' surname='Marin-Lopez' fullname='Rafael Marin-Lopez'>
    <organization />
</author>

<author initials='G' surname='Lopez-Millan' fullname='Gabriel Lopez-Millan'>
    <organization />
</author>

<author initials='F' surname='Pereniguez-Garcia' fullname='Fernando Pereniguez-Garcia'>
    <organization />
</author>

<date month='October' day='30' year='2020' />

<abstract><t>This document describes how to provide IPsec-based flow protection (integrity and confidentiality) by means of an Interface to Network Security Function (I2NSF) controller.  It considers two main well- known scenarios in IPsec: (i) gateway-to-gateway and (ii) host-to- host.  The service described in this document allows the configuration and monitoring of IPsec Security Associations (SAs) from a I2NSF Controller to one or several flow-based Network Security Functions (NSFs) that rely on IPsec to protect data traffic.  The document focuses on the I2NSF NSF-facing interface by providing YANG data models for configuring the IPsec databases (SPD, SAD, PAD) and IKEv2.  This allows IPsec SA establishment with minimal intervention by the network administrator.  It does not define any new protocol.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-i2nsf-sdn-ipsec-flow-protection-12' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-i2nsf-sdn-ipsec-flow-protection-12.txt' />
</reference>
</references>
<references title="Informative References">


<reference  anchor='RFC3688' target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author initials='M.' surname='Mealling' fullname='M. Mealling'><organization /></author>
<date year='2004' month='January' />
<abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract>
</front>
<seriesInfo name='BCP' value='81'/>
<seriesInfo name='RFC' value='3688'/>
<seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>


<reference  anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'>
<front>
<title>Network Configuration Protocol (NETCONF)</title>
<author initials='R.' surname='Enns' fullname='R. Enns' role='editor'><organization /></author>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<author initials='J.' surname='Schoenwaelder' fullname='J. Schoenwaelder' role='editor'><organization /></author>
<author initials='A.' surname='Bierman' fullname='A. Bierman' role='editor'><organization /></author>
<date year='2011' month='June' />
<abstract><t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6241'/>
<seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>


<reference  anchor='RFC6242' target='https://www.rfc-editor.org/info/rfc6242'>
<front>
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
<author initials='M.' surname='Wasserman' fullname='M. Wasserman'><organization /></author>
<date year='2011' month='June' />
<abstract><t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6242'/>
<seriesInfo name='DOI' value='10.17487/RFC6242'/>
</reference>


<reference  anchor='RFC8040' target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></author>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author>
<author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></author>
<date year='2017' month='January' />
<abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='8040'/>
<seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>


<reference  anchor='RFC8340' target='https://www.rfc-editor.org/info/rfc8340'>
<front>
<title>YANG Tree Diagrams</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author>
<author initials='L.' surname='Berger' fullname='L. Berger' role='editor'><organization /></author>
<date year='2018' month='March' />
<abstract><t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t></abstract>
</front>
<seriesInfo name='BCP' value='215'/>
<seriesInfo name='RFC' value='8340'/>
<seriesInfo name='DOI' value='10.17487/RFC8340'/>
</reference>


<reference  anchor='RFC8341' target='https://www.rfc-editor.org/info/rfc8341'>
<front>
<title>Network Configuration Access Control Model</title>
<author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></author>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author>
<date year='2018' month='March' />
<abstract><t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability.  There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.  This document defines such an access control model.</t><t>This document obsoletes RFC 6536.</t></abstract>
</front>
<seriesInfo name='STD' value='91'/>
<seriesInfo name='RFC' value='8341'/>
<seriesInfo name='DOI' value='10.17487/RFC8341'/>
</reference>


<reference  anchor='RFC8446' target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>
</references>
<section title="Examples">
<t>The following examples show configuration and operational data for the ikeless case 
in xml and ike case in json.  Also, the operational statistics for the ikeless case
 are shown using xml.</t>

<section title="Example XML Configuration">
<t>This example illustrates configuration for IP-TFS in the ikeless case.   
Note that since this augments the ipsec ikeless schema only minimal ikeless configuration 
to satisfy the schema has been populated.</t>
<figure title="Example IP-TFS XML configuration" anchor="sec-example-ip-tfs-xml-configuration"><artwork><![CDATA[
<i:ipsec-ikeless
  xmlns:i="urn:ietf:params:xml:ns:yang:ietf-i2nsf-ikeless"
  xmlns:tfs="urn:ietf:params:xml:ns:yang:ietf-ipsecme-iptfs">
  <i:spd>
    <i:spd-entry>
      <i:name>protect-policy-1</i:name>
      <i:direction>outbound</i:direction>
      <i:ipsec-policy-config>
	<i:traffic-selector>
	  <i:local-prefix>1.1.1.1/32</i:local-prefix>
	  <i:remote-prefix>2.2.2.2/32</i:remote-prefix>
	</i:traffic-selector>
	<i:processing-info>
	  <i:action>protect</i:action>
	  <i:ipsec-sa-cfg>
	    <tfs:traffic-flow-security>
	     <tfs:congestion-control>true</tfs:congestion-control>
	      <tfs:packet-size>
		<tfs:use-path-mtu-discovery
		   >true</tfs:use-path-mtu-discovery>
	      </tfs:packet-size>
	      <tfs:l2-fixed-rate>1000000000</tfs:l2-fixed-rate>
	      <tfs:max-aggregation-time
		 >0.1</tfs:max-aggregation-time>
	    </tfs:traffic-flow-security>
	  </i:ipsec-sa-cfg>
	</i:processing-info>
      </i:ipsec-policy-config>
    </i:spd-entry>
  </i:spd>
</i:ipsec-ikeless>
]]></artwork></figure>

</section>

<section title="Example XML Operational Data">
<t>This example illustrates operational data for IP-TFS in the ikeless case.   
Note that since this augments the ipsec ikeless schema only minimal ikeless configuration 
to satisfy the schema has been populated.</t>
<figure title="Example IP-TFS XML Operational data" anchor="sec-example-ip-tfs-xml-operational-data"><artwork><![CDATA[
<i:ipsec-ikeless
  xmlns:i="urn:ietf:params:xml:ns:yang:ietf-i2nsf-ikeless"
  xmlns:tfs="urn:ietf:params:xml:ns:yang:ietf-ipsecme-iptfs">
  <i:sad>
    <i:sad-entry>
      <i:name>sad-1</i:name>
      <i:ipsec-sa-config>
	<i:spi>1</i:spi>
	<i:traffic-selector>
	  <i:local-prefix>1.1.1.1/32</i:local-prefix>
	  <i:remote-prefix>2.2.2.2/32</i:remote-prefix>
	</i:traffic-selector>
      </i:ipsec-sa-config>
      <tfs:traffic-flow-security>
       <tfs:congestion-control>true</tfs:congestion-control>
	<tfs:packet-size>
	  <tfs:use-path-mtu-discovery>true</tfs:use-path-mtu-discovery>
	</tfs:packet-size>
	<tfs:l2-fixed-rate>1000000000</tfs:l2-fixed-rate>
	<tfs:max-aggregation-time>0.100</tfs::max-aggregation-time>
      </tfs:traffic-flow-security>
    </i:sad-entry>
  </i:sad>
</i:ipsec-ikeless>
]]></artwork></figure>

</section>
<section title="Example JSON Configuration">
<t>This example illustrates config data for IP-TFS in the ike case.   
Note that since this augments the ipsec ike schema only minimal ike configuration 
to satisfy the schema has been populated.</t>
<figure title="Example IP-TFS JSON configuration" anchor="sec-example-ip-tfs-json-configuration"><artwork><![CDATA[
{
  "ietf-i2nsf-ike:ipsec-ike": {
    "ietf-i2nsf-ike:conn-entry": [
      {
	"name": "my-peer-connection",
	"ike-sa-encr-alg": [
	  {
	    "id": 1,
	    "algorithm-type": 12,
	    "key-length": 128
	  }
	  ],
	  "local": {
	    "local-pad-entry-name": "local-1"
	  },
	  "remote": {
	    "remote-pad-entry-name": "remote-1"
	  },
	  "ietf-i2nsf-ike:spd": {
	  "spd-entry": [
	    {
	      "name": "protect-policy-1",
	      "ipsec-policy-config": {
		"traffic-selector": {
		  "local-prefix": "1.1.1.1/32",
		  "remote-prefix": "2.2.2.2/32"
		},
		"processing-info": {
		  "action": "protect",
		  "ipsec-sa-cfg": {
		    "ietf-ipsecme-iptfs:traffic-flow-security": {
		      "congestion-control": "true",
		      "l2-fixed-rate": 1000000000,
		      "packet-size": {
			"use-path-mtu-discovery": "true"
		      },
		      "max-aggregation-time": "0.1"
		    }
		  }
		}
	      }
	    }
	  ]
	}
      }
    ]
  }
}
]]></artwork></figure>

</section>
<section title="Example JSON Operational Data">
<t>This example illustrates operational data for IP-TFS in the ike case.   
Note that since this augments the ipsec ike tree only minimal ike configuration 
to satisfy the schema has been populated.</t>
<figure title="Example IP-TFS JSON Operational data" anchor="sec-example-ip-tfs-json-operational-data"><artwork><![CDATA[
{
  "ietf-i2nsf-ike:ipsec-ike": {
    "ietf-i2nsf-ike:conn-entry": [
      {
	"name": "my-peer-connection",
	"ike-sa-encr-alg": [
	{
	  "id": 1,
	  "algorithm-type": 12,
	  "key-length": 128
	}
	],
	"local": {
	  "local-pad-entry-name": "local-1"
	},
	"remote": {
	  "remote-pad-entry-name": "remote-1"
	},
	"ietf-i2nsf-ike:child-sa-info": {
	  "ietf-ipsecme-iptfs:traffic-flow-security": {
	    "congestion-control": "true",
	    "l2-fixed-rate": 1000000000,
	    "packet-size": {
	      "use-path-mtu-discovery": "true"
	    },
	    "max-aggregation-time": "0.1"
	  }
	}
      }
    ]
  }
}
]]></artwork></figure>

</section>
<section title="Example JSON Operational Statistics">
<t>This example shows the json formated statistics for IP-TFS.
Note a unidirectional IP-TFS transmit side is illustrated, with arbitray numbers for transmit.</t>
<figure title="Example IP-TFS JSON Statistics" anchor="sec-example-ip-tfs-json-statistics"><artwork><![CDATA[
{
  "ietf-i2nsf-ikeless:ipsec-ikeless": {
    "sad": {
      "sad-entry": [
	{
	  "name": "sad-1",
	  "ipsec-sa-config": {
	    "spi": 1,
	    "traffic-selector": {
	      "local-prefix": "1.1.1.1/32",
	      "remote-prefix": "2.2.2.2/32"
	    }
	  },
	  "ietf-ipsecme-iptfs:ipsec-stats": {
	    "tx-pkts": "300",
	    "tx-octets": "80000",
	    "tx-drop-pkts": "2",
	    "rx-pkts": "0",
	    "rx-octets": "0",
	    "rx-drop-pkts": "0"
	  },
	  "ietf-ipsecme-iptfs:iptfs-inner-pkt-stats": {
	    "tx-pkts": "250",
	    "tx-octets": "75000",
	    "rx-pkts": "0",
	    "rx-octets": "0",
	    "rx-incomplete-pkts": "0"
	  },
	  "ietf-ipsecme-iptfs:iptfs-outer-pkt-stats": {
	    "tx-all-pad-pkts": "40",
	    "tx-all-pad-octets": "40000",
	    "tx-extra-pad-pkts": "200",
	    "tx-extra-pad-octets": "30000",
	    "rx-all-pad-pkts": "0",
	    "rx-all-pad-octets": "0",
	    "rx-extra-pad-pkts": "0",
	    "rx-extra-pad-octets": "0",
	    "rx-errored-pkts": "0",
	    "rx-missed-pkts": "0"
	  },
	  "ipsec-sa-state": {
	    "sa-lifetime-current": {
	      "time": 80000,
	      "bytes": 4000606,
	      "packets": 1000,
	      "idle": 5
	    }
	  }
	}
      ]
    }
  }
}
]]></artwork></figure>

</section>

</section>
  </back>
</rfc>
