Skip to main content

IP Traffic Flow Security
draft-ietf-ipsecme-iptfs-00

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 9347.
Author Christian Hopps
Last updated 2019-12-16
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state WG Document
Document shepherd (None)
IESG IESG state Became RFC 9347 (Proposed Standard)
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-ietf-ipsecme-iptfs-00

   D:
      Don't Fragment bit, if set indicates the sender of the notify
      message does not support receiving packet fragments (i.e., inner
      packets MUST be sent using a single "Data Block").  This value
      only applies to what the sender is capable of receiving; the
      sender MAY still send packet fragments unless similarly restricted
      by the receiver in it's IPTFS_REQUIREMENTS notification.

6.  Packet and Data Formats

6.1.  ESP IP-TFS Payload

   An ESP IP-TFS payload is identified by the IP protocol number
   IPTFS_PROTOCOL (TBD1).  This payload begins with a fixed 4 or 16
   octet header followed by a variable amount of "DataBlocks" data.  The
   exact payload format and fields are defined in the following
   sections.

6.1.1.  Non-Congestion Control IPTFS_PROTOCOL Payload Format

   The non-congestion control IPTFS_PROTOCOL payload is comprised of a 4
   octet header followed by a variable amount of "DataBlocks" data as
   shown below.

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |V|C|        Reserved           |          BlockOffset          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       DataBlocks ...
    +-+-+-+-+-+-+-+-+-+-+-

   V:
      A 1 bit version field that MUST be set to zero.  If received as
      one the packet MUST be dropped.

   C:
      A 1 bit value that MUST be set to 0 to indicate no congestion
      control information is present.

   Reserved:
      A 14 bit field set to 0 and ignored on receipt.

   BlockOffset:
      A 16 bit unsigned integer counting the number of octets of
      "DataBlocks" data before the start of a new data block.
      "BlockOffset" can count past the end of the "DataBlocks" data in
      which case all the "DataBlocks" data belongs to the previous data

Hopps                     Expires June 18, 2020                [Page 12]
Internet-Draft          IP Traffic Flow Security           December 2019

      block being re-assembled.  If the "BlockOffset" extends into
      subsequent packets it continues to only count subsequent
      "DataBlocks" data (i.e., it does not count subsequent packets
      non-"DataBlocks" octets).

   DataBlocks:
      Variable number of octets that begins with the start of a data
      block, or the continuation of a previous data block, followed by
      zero or more additional data blocks.

6.1.2.  Congestion Control IPTFS_PROTOCOL Payload Format

   The congestion control IPTFS_PROTOCOL payload is comprised of a 16
   octet header followed by a variable amount of "DataBlocks" data as
   shown below.

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |V|C|E|        Reserved         |          BlockOffset          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              RTT              |             Delay             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          LossEventRate                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                           LastSeqNum                          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       DataBlocks ...
    +-+-+-+-+-+-+-+-+-+-+-

   V:
      A 1 bit version field that MUST be set to zero.  If received as
      one the packet MUST be dropped.

   C:
      A 1 bit value that MUST be set to 1 which indicates the presence
      of the congestion information header fields "RTT", "Delay",
      "LossEventRate" and "LastSeqNum".

   E:
      A 1 bit value if set indicates that Congestion Experienced (CE)
      ECN bits were received and used in deriving the reported
      "LossEventRate".

   Reserved:
      A 13 bit field set to 0 and ignored on receipt.

   BlockOffset:

Hopps                     Expires June 18, 2020                [Page 13]
Internet-Draft          IP Traffic Flow Security           December 2019

      The same value as the non-congestion controlled payload format
      value.

   RTT:
      A 16 bit value specifying the sender's current round-trip time
      estimate in milliseconds.  The value MAY be zero prior to the
      sender having calculated a round-trip time estimate.  The value
      SHOULD be set to zero on non-IP-TFS enabled SAs.

   Delay:
      A 16 bit value specifying the delay in milliseconds incurred
      between the receiver receiving the "LastSeqNum" packet and the
      sending of this acknowledgement of it.

   LossEventRate:
      A 32 bit value specifying the inverse of the current loss event
      rate as calculated by the receiver.  A value of zero indicates no
      loss.  Otherwise the loss event rate is "1/LossEventRate".

   LastSeqNum:
      A 32 bit value containing the lower 32 bits of the largest
      sequence number last received.  This is the latest in the sequence
      not necessarily the most recent (in the case of re-ordering of
      packets it may be less recent).  When determining largest and 64
      bit extended sequence numbers are in use, the upper 32 bits should
      be used during the comparison.

   DataBlocks:
      Variable number of octets that begins with the start of a data
      block, or the continuation of a previous data block, followed by
      zero or more additional data blocks.  For the special case of
      sending congestion control information on an non-IP-TFS enabled SA
      this value MUST be empty (i.e., be zero octets long).

6.1.3.  Data Blocks

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Type  | IPv4, IPv6 or pad...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

   Type:
      A 4 bit field where 0x0 identifies a pad data block, 0x4 indicates
      an IPv4 data block, and 0x6 indicates an IPv6 data block.

Hopps                     Expires June 18, 2020                [Page 14]
Internet-Draft          IP Traffic Flow Security           December 2019

6.1.3.1.  IPv4 Data Block

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  0x4  |  IHL  |  TypeOfService  |         TotalLength         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Rest of the inner packet ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

   These values are the actual values within the encapsulated IPv4
   header.  In other words, the start of this data block is the start of
   the encapsulated IP packet.

   Type:
      A 4 bit value of 0x4 indicating IPv4 (i.e., first nibble of the
      IPv4 packet).

   TotalLength:
      The 16 bit unsigned integer length field of the IPv4 inner packet.

6.1.3.2.  IPv6 Data Block

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  0x6  | TrafficClass  |               FlowLabel               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          TotalLength          | Rest of the inner packet ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

   These values are the actual values within the encapsulated IPv6
   header.  In other words, the start of this data block is the start of
   the encapsulated IP packet.

   Type:
      A 4 bit value of 0x6 indicating IPv6 (i.e., first nibble of the
      IPv6 packet).

   TotalLength:
      The 16 bit unsigned integer length field of the inner IPv6 inner
      packet.

6.1.3.3.  Pad Data Block

Hopps                     Expires June 18, 2020                [Page 15]
Internet-Draft          IP Traffic Flow Security           December 2019

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  0x0  | Padding ...
    +-+-+-+-+-+-+-+-+-+-+-

   Type:
      A 4 bit value of 0x0 indicating a padding data block.

   Padding:
      extends to end of the encapsulating packet.

7.  IANA Considerations

7.1.  IPTFS_PROTOCOL Type

   This document requests a protocol number IPTFS_PROTOCOL be allocated
   by IANA from "Assigned Internet Protocol Numbers" registry for
   identifying the IP-TFS ESP payload format.

   Type:
      TBD1

   Description:
      IP-TFS ESP payload format.

   Reference:
      This document

7.2.  IKEv2 Transform Type TFS Type

   This document requests an IKEv2 Transform Type "TFS Type" be
   allocated by IANA from the "Transform Type Values" registry.

   Type:
      TBD2

   Description:
      TFS Type

   Used In:
      (optional in ESP)

   Reference:
      This document

Hopps                     Expires June 18, 2020                [Page 16]
Internet-Draft          IP Traffic Flow Security           December 2019

7.3.  TFS Type Transform IDs Registry

   This document requests a "Transform Type TBD3 - TFS Type Transform
   IDs" registry be created.  The registration procedure is Expert
   Review.  The initial values are as follows:

     Number  Name            Reference
   ----------------------------------------
          0  NONE            This document
          1  TFS_IPTFS_CC    This document
          2  TFS_IPTFS_NOCC  This document
    3-65535  Reserved        This document

7.4.  IPTFS_REQUIREMENTS Notify Message Status Type

   This document requests a status type IPTFS_REQUIREMENTS be allocated
   from the "IKEv2 Notify Message Types - Status Types" registry.

   Value:
      TBD3

   Name:
      IPTFS_REQUIREMENTS

   Reference:
      This document

8.  Security Considerations

   This document describes a mechanism to add Traffic Flow
   Confidentiality to IP traffic.  Use of this mechanism is expected to
   increase the security of the traffic being transported.  Other than
   the additional security afforded by using this mechanism, IP-TFS
   utilizes the security protocols [RFC4303] and [RFC7296] and so their
   security considerations apply to IP-TFS as well.

   As noted previously in Section 2.5.2, for TFC to be fully maintained
   the encapsulated traffic flow should not be affecting network
   congestion in a predictable way, and if it would be then non-
   congestion controlled mode use should be considered instead.

9.  References

9.1.  Normative References

Hopps                     Expires June 18, 2020                [Page 17]
Internet-Draft          IP Traffic Flow Security           December 2019

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, DOI 10.17487/RFC4303, December 2005,
              <https://www.rfc-editor.org/info/rfc4303>.

   [RFC7296]  Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
              Kivinen, "Internet Key Exchange Protocol Version 2
              (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
              2014, <https://www.rfc-editor.org/info/rfc7296>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

9.2.  Informative References

   [AppCrypt]
              Schneier, B., "Applied Cryptography: Protocols,
              Algorithms, and Source Code in C", 11 2017.

   [I-D.iab-wire-image]
              Trammell, B. and M. Kuehlewind, "The Wire Image of a
              Network Protocol", draft-iab-wire-image-01 (work in
              progress), November 2018.

   [IKEV2IANA]
              IANA, "Internet Key Exchange Version 2 (IKEv2)
              Parameters",
              <http://www.iana.org/assignments/ikev2-parameters/>.

   [RFC0791]  Postel, J., "Internet Protocol", STD 5, RFC 791,
              DOI 10.17487/RFC0791, September 1981,
              <https://www.rfc-editor.org/info/rfc791>.

   [RFC1191]  Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
              DOI 10.17487/RFC1191, November 1990,
              <https://www.rfc-editor.org/info/rfc1191>.

   [RFC2474]  Nichols, K., Blake, S., Baker, F., and D. Black,
              "Definition of the Differentiated Services Field (DS
              Field) in the IPv4 and IPv6 Headers", RFC 2474,
              DOI 10.17487/RFC2474, December 1998,
              <https://www.rfc-editor.org/info/rfc2474>.

Hopps                     Expires June 18, 2020                [Page 18]
Internet-Draft          IP Traffic Flow Security           December 2019

   [RFC2914]  Floyd, S., "Congestion Control Principles", BCP 41,
              RFC 2914, DOI 10.17487/RFC2914, September 2000,
              <https://www.rfc-editor.org/info/rfc2914>.

   [RFC3168]  Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
              of Explicit Congestion Notification (ECN) to IP",
              RFC 3168, DOI 10.17487/RFC3168, September 2001,
              <https://www.rfc-editor.org/info/rfc3168>.

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
              December 2005, <https://www.rfc-editor.org/info/rfc4301>.

   [RFC4342]  Floyd, S., Kohler, E., and J. Padhye, "Profile for
              Datagram Congestion Control Protocol (DCCP) Congestion
              Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342,
              DOI 10.17487/RFC4342, March 2006,
              <https://www.rfc-editor.org/info/rfc4342>.

   [RFC5348]  Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP
              Friendly Rate Control (TFRC): Protocol Specification",
              RFC 5348, DOI 10.17487/RFC5348, September 2008,
              <https://www.rfc-editor.org/info/rfc5348>.

   [RFC7510]  Xu, X., Sheth, N., Yong, L., Callon, R., and D. Black,
              "Encapsulating MPLS in UDP", RFC 7510,
              DOI 10.17487/RFC7510, April 2015,
              <https://www.rfc-editor.org/info/rfc7510>.

   [RFC8084]  Fairhurst, G., "Network Transport Circuit Breakers",
              BCP 208, RFC 8084, DOI 10.17487/RFC8084, March 2017,
              <https://www.rfc-editor.org/info/rfc8084>.

   [RFC8200]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", STD 86, RFC 8200,
              DOI 10.17487/RFC8200, July 2017,
              <https://www.rfc-editor.org/info/rfc8200>.

   [RFC8201]  McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed.,
              "Path MTU Discovery for IP version 6", STD 87, RFC 8201,
              DOI 10.17487/RFC8201, July 2017,
              <https://www.rfc-editor.org/info/rfc8201>.

Appendix A.  Example Of An Encapsulated IP Packet Flow

   Below we show an example inner IP packet flow within the
   encapsulating tunnel packet stream.  Notice how encapsulated IP

Hopps                     Expires June 18, 2020                [Page 19]
Internet-Draft          IP Traffic Flow Security           December 2019

   packets can start and end anywhere, and more than one or less than 1
   may occur in a single encapsulating packet.

     Offset: 0        Offset: 100    Offset: 2900    Offset: 1400
    [ ESP1  (1500) ][ ESP2  (1500) ][ ESP3  (1500) ][ ESP4  (1500) ]
    [--800--][--800--][60][-240-][--4000----------------------][pad]

                   Figure 3: Inner and Outer Packet Flow

   The encapsulated IP packet flow (lengths include IP header and
   payload) is as follows: an 800 octet packet, an 800 octet packet, a
   60 octet packet, a 240 octet packet, a 4000 octet packet.

   The "BlockOffset" values in the 4 IP-TFS payload headers for this
   packet flow would thus be: 0, 100, 2900, 1400 respectively.  The
   first encapsulating packet ESP1 has a zero "BlockOffset" which points
   at the IP data block immediately following the IP-TFS header.  The
   following packet ESP2s "BlockOffset" points inward 100 octets to the
   start of the 60 octet data block.  The third encapsulating packet
   ESP3 contains the middle portion of the 4000 octet data block so the
   offset points past its end and into the forth encapsulating packet.
   The fourth packet ESP4s offset is 1400 pointing at the padding which
   follows the completion of the continued 4000 octet packet.

Appendix B.  A Send and Loss Event Rate Calculation

   The current best practice indicates that congestion control should be
   done in a TCP friendly way.  A TCP friendly congestion control
   algorithm is described in [RFC5348].  For our use case (as with
   [RFC4342]) we consider our (fixed) packet size the segment size for
   the algorithm.  The formula for the send rate is then as follows:

                                   1
      X_Pps = -----------------------------------------------
              R * (sqrt(2*p/3) + 12*sqrt(3*p/8)*p*(1+32*p^2))

   Where "X_Pps" is the send rate in packets per second, "R" is the
   round trip time estimate and "p" is the loss event rate (the inverse
   of which is provided by the receiver).

   The IP-TFS receiver, having the RTT estimate from the sender MAY use
   the same method as described in [RFC4342] to collect the loss
   intervals and calculate the loss event rate value using the weighted
   average as indicated.  The receiver communicates the inverse of this
   value back to the sender in the IPTFS_PROTOCOL payload header field
   "LossEventRate".

Hopps                     Expires June 18, 2020                [Page 20]
Internet-Draft          IP Traffic Flow Security           December 2019

   The IP-TFS sender now has both the "R" and "p" values and can
   calculate the correct sending rate ("X_Pps").  If following [RFC5348]
   the sender SHOULD also use the slow start mechanism described therein
   when the IP-TFS SA is first established.

Appendix C.  Comparisons of IP-TFS

C.1.  Comparing Overhead

C.1.1.  IP-TFS Overhead

   The overhead of IP-TFS is 40 bytes per outer packet.  Therefore the
   octet overhead per inner packet is 40 divided by the number of outer
   packets required (fractional allowed).  The overhead as a percentage
   of inner packet size is a constant based on the Outer MTU size.

      OH = 40 / Outer Payload Size / Inner Packet Size
      OH % of Inner Packet Size = 100 * OH / Inner Packet Size
      OH % of Inner Packet Size = 4000 / Outer Payload Size

                        Type  IP-TFS  IP-TFS  IP-TFS
                         MTU     576    1500    9000
                       PSize     536    1460    8960
                      -------------------------------
                          40   7.46%   2.74%   0.45%
                         576   7.46%   2.74%   0.45%
                        1500   7.46%   2.74%   0.45%
                        9000   7.46%   2.74%   0.45%

       Figure 4: IP-TFS Overhead as Percentage of Inner Packet Size

C.1.2.  ESP with Padding Overhead

   The overhead per inner packet for constant-send-rate padded ESP
   (i.e., traditional IPsec TFC) is 36 octets plus any padding, unless
   fragmentation is required.

   When fragmentation of the inner packet is required to fit in the
   outer IPsec packet, overhead is the number of outer packets required
   to carry the fragmented inner packet times both the inner IP overhead
   (20) and the outer packet overhead (36) minus the initial inner IP
   overhead plus any required tail padding in the last encapsulation
   packet.  The required tail padding is the number of required packets
   times the difference of the Outer Payload Size and the IP Overhead
   minus the Inner Payload Size.  So:

Hopps                     Expires June 18, 2020                [Page 21]
Internet-Draft          IP Traffic Flow Security           December 2019

     Inner Paylaod Size = IP Packet Size - IP Overhead
     Outer Payload Size = MTU - IPsec Overhead

                   Inner Payload Size
     NF0 = ----------------------------------
            Outer Payload Size - IP Overhead

     NF = CEILING(NF0)

     OH = NF * (IP Overhead + IPsec Overhead)
          - IP Overhead
          + NF * (Outer Payload Size - IP Overhead)
          - Inner Payload Size

     OH = NF * (IPsec Overhead + Outer Payload Size)
          - (IP Overhead + Inner Payload Size)

     OH = NF * (IPsec Overhead + Outer Payload Size)
          - Inner Packet Size

C.2.  Overhead Comparison

   The following tables collect the overhead values for some common L3
   MTU sizes in order to compare them.  The first table is the number of
   octets of overhead for a given L3 MTU sized packet.  The second table
   is the percentage of overhead in the same MTU sized packet.

           Type  ESP+Pad  ESP+Pad  ESP+Pad  IP-TFS  IP-TFS  IP-TFS
         L3 MTU      576     1500     9000     576    1500    9000
          PSize      540     1464     8964     536    1460    8960
        -----------------------------------------------------------
             40      500     1424     8924     3.0     1.1     0.2
            128      412     1336     8836     9.6     3.5     0.6
            256      284     1208     8708    19.1     7.0     1.1
            536        4      928     8428    40.0    14.7     2.4
            576      576      888     8388    43.0    15.8     2.6
           1460      268        4     7504   109.0    40.0     6.5
           1500      228     1500     7464   111.9    41.1     6.7
           8960     1408     1540        4   668.7   245.5    40.0
           9000     1368     1500     9000   671.6   246.6    40.2

                  Figure 5: Overhead comparison in octets

Hopps                     Expires June 18, 2020                [Page 22]
Internet-Draft          IP Traffic Flow Security           December 2019

          Type  ESP+Pad  ESP+Pad   ESP+Pad  IP-TFS  IP-TFS  IP-TFS
           MTU      576     1500      9000     576    1500    9000
         PSize      540     1464      8964     536    1460    8960
        -----------------------------------------------------------
            40  1250.0%  3560.0%  22310.0%   7.46%   2.74%   0.45%
           128   321.9%  1043.8%   6903.1%   7.46%   2.74%   0.45%
           256   110.9%   471.9%   3401.6%   7.46%   2.74%   0.45%
           536     0.7%   173.1%   1572.4%   7.46%   2.74%   0.45%
           576   100.0%   154.2%   1456.2%   7.46%   2.74%   0.45%
          1460    18.4%     0.3%    514.0%   7.46%   2.74%   0.45%
          1500    15.2%   100.0%    497.6%   7.46%   2.74%   0.45%
          8960    15.7%    17.2%      0.0%   7.46%   2.74%   0.45%
          9000    15.2%    16.7%    100.0%   7.46%   2.74%   0.45%

           Figure 6: Overhead as Percentage of Inner Packet Size

C.3.  Comparing Available Bandwidth

   Another way to compare the two solutions is to look at the amount of
   available bandwidth each solution provides.  The following sections
   consider and compare the percentage of available bandwidth.  For the
   sake of providing a well understood baseline we will also include
   normal (unencrypted) Ethernet as well as normal ESP values.

C.3.1.  Ethernet

   In order to calculate the available bandwidth we first calculate the
   per packet overhead in bits.  The total overhead of Ethernet is 14+4
   octets of header and CRC plus and additional 20 octets of framing
   (preamble, start, and inter-packet gap) for a total of 48 octets.
   Additionally the minimum payload is 46 octets.

         Size  E + P  E + P  E + P  IPTFS  IPTFS  IPTFS  Enet   ESP
          MTU    590   1514   9014    590   1514   9014   any   any
           OH     74     74     74     78     78     78    38    74
        ------------------------------------------------------------
           40    614   1538   9038     45     42     40    84   114
          128    614   1538   9038    146    134    129   166   202
          256    614   1538   9038    293    269    258   294   330
          536    614   1538   9038    614    564    540   574   610
          576   1228   1538   9038    659    606    581   614   650
         1460   1842   1538   9038   1672   1538   1472  1498  1534
         1500   1842   3076   9038   1718   1580   1513  1538  1574
         8960  11052  10766   9038  10263   9438   9038  8998  9034
         9000  11052  10766  18076  10309   9480   9078  9038  9074

                      Figure 7: L2 Octets Per Packet

Hopps                     Expires June 18, 2020                [Page 23]
Internet-Draft          IP Traffic Flow Security           December 2019

        Size  E + P  E + P  E + P  IPTFS  IPTFS  IPTFS  Enet   ESP
         MTU  590    1514   9014   590    1514   9014   any    any
          OH  74     74     74     78     78     78     38     74
       --------------------------------------------------------------
          40  2.0M   0.8M   0.1M   27.3M  29.7M  31.0M  14.9M  11.0M
         128  2.0M   0.8M   0.1M   8.5M   9.3M   9.7M   7.5M   6.2M
         256  2.0M   0.8M   0.1M   4.3M   4.6M   4.8M   4.3M   3.8M
         536  2.0M   0.8M   0.1M   2.0M   2.2M   2.3M   2.2M   2.0M
         576  1.0M   0.8M   0.1M   1.9M   2.1M   2.2M   2.0M   1.9M
        1460  678K   812K   138K   747K   812K   848K   834K   814K
        1500  678K   406K   138K   727K   791K   826K   812K   794K
        8960  113K   116K   138K   121K   132K   138K   138K   138K
        9000  113K   116K   69K    121K   131K   137K   138K   137K

               Figure 8: Packets Per Second on 10G Ethernet

   Size   E + P   E + P   E + P   IPTFS   IPTFS   IPTFS    Enet     ESP
            590    1514    9014     590    1514    9014     any     any
             74      74      74      78      78      78      38      74
  ----------------------------------------------------------------------
     40   6.51%   2.60%   0.44%  87.30%  94.93%  99.14%  47.62%  35.09%
    128  20.85%   8.32%   1.42%  87.30%  94.93%  99.14%  77.11%  63.37%
    256  41.69%  16.64%   2.83%  87.30%  94.93%  99.14%  87.07%  77.58%
    536  87.30%  34.85%   5.93%  87.30%  94.93%  99.14%  93.38%  87.87%
    576  46.91%  37.45%   6.37%  87.30%  94.93%  99.14%  93.81%  88.62%
   1460  79.26%  94.93%  16.15%  87.30%  94.93%  99.14%  97.46%  95.18%
   1500  81.43%  48.76%  16.60%  87.30%  94.93%  99.14%  97.53%  95.30%
   8960  81.07%  83.22%  99.14%  87.30%  94.93%  99.14%  99.58%  99.18%
   9000  81.43%  83.60%  49.79%  87.30%  94.93%  99.14%  99.58%  99.18%

             Figure 9: Percentage of Bandwidth on 10G Ethernet

   A sometimes unexpected result of using IP-TFS (or any packet
   aggregating tunnel) is that, for small to medium sized packets, the
   available bandwidth is actually greater than native Ethernet.  This
   is due to the reduction in Ethernet framing overhead.  This increased
   bandwidth is paid for with an increase in latency.  This latency is
   the time to send the unrelated octets in the outer tunnel frame.  The
   following table illustrates the latency for some common values on a
   10G Ethernet link.  The table also includes latency introduced by
   padding if using ESP with padding.

Hopps                     Expires June 18, 2020                [Page 24]
Internet-Draft          IP Traffic Flow Security           December 2019

                        ESP+Pad  ESP+Pad  IP-TFS   IP-TFS
                        1500     9000     1500     9000

                 ------------------------------------------
                    40  1.14 us  7.14 us  1.17 us  7.17 us
                   128  1.07 us  7.07 us  1.10 us  7.10 us
                   256  0.97 us  6.97 us  1.00 us  7.00 us
                   536  0.74 us  6.74 us  0.77 us  6.77 us
                   576  0.71 us  6.71 us  0.74 us  6.74 us
                  1460  0.00 us  6.00 us  0.04 us  6.04 us
                  1500  1.20 us  5.97 us  0.00 us  6.00 us

                         Figure 10: Added Latency

   Notice that the latency values are very similar between the two
   solutions; however, whereas IP-TFS provides for constant high
   bandwidth, in some cases even exceeding native Ethernet, ESP with
   padding often greatly reduces available bandwidth.

Appendix D.  Acknowledgements

   We would like to thank Don Fedyk for help in reviewing this work.

Appendix E.  Contributors

   The following people made significant contributions to this document.

      Lou Berger
      LabN Consulting, L.L.C.

      Email: lberger@labn.net

Author's Address

   Christian Hopps
   LabN Consulting, L.L.C.

   Email: chopps@chopps.org

Hopps                     Expires June 18, 2020                [Page 25]