| < draft-ietf-ipsecme-iptfs-07.txt | draft-ietf-ipsecme-iptfs-08.txt > | |||
|---|---|---|---|---|
| Network Working Group C. Hopps | Network Working Group C. Hopps | |||
| Internet-Draft LabN Consulting, L.L.C. | Internet-Draft LabN Consulting, L.L.C. | |||
| Intended status: Standards Track February 22, 2021 | Intended status: Standards Track March 30, 2021 | |||
| Expires: August 26, 2021 | Expires: October 1, 2021 | |||
| IP-TFS: IP Traffic Flow Security Using Aggregation and Fragmentation | IP-TFS: Aggregation and Fragmentation Mode for ESP and its Use for IP | |||
| draft-ietf-ipsecme-iptfs-07 | Traffic Flow Security | |||
| draft-ietf-ipsecme-iptfs-08 | ||||
| Abstract | Abstract | |||
| This document describes a mechanism to enhance IPsec traffic flow | This document describes a mechanism for aggregation and fragmentation | |||
| security (IP-TFS) by adding Traffic Flow Confidentiality (TFC) to | of IP packets when they are being encapsulated in ESP payload. This | |||
| encrypted IP encapsulated traffic. TFC is provided by obscuring the | new payload type can be used for various purposes such as decreasing | |||
| size and frequency of IP traffic using a fixed-sized, constant-send- | encapsulation overhead for small IP packets; however, the focus in | |||
| rate IPsec tunnel. The solution allows for congestion control as | this document is to enhance IPsec traffic flow security (IP-TFS) by | |||
| well as non-constant send-rate usage. The mechanisms defined in this | adding Traffic Flow Confidentiality (TFC) to encrypted IP | |||
| document are generic with the intent of allowing for non-TFS uses, | encapsulated traffic. TFC is provided by obscuring the size and | |||
| but such uses are outside the scope of this document. | 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. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 26, 2021. | This Internet-Draft will expire on October 1, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Terminology & Concepts . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology & Concepts . . . . . . . . . . . . . . . . . 4 | |||
| 2. The IP-TFS Tunnel . . . . . . . . . . . . . . . . . . . . . . 4 | 2. The AGGFRAG Tunnel . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. Tunnel Content . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Tunnel Content . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Payload Content . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Payload Content . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2.1. Data Blocks . . . . . . . . . . . . . . . . . . . . . 6 | 2.2.1. Data Blocks . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.2.2. End Padding . . . . . . . . . . . . . . . . . . . . . 6 | 2.2.2. End Padding . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.2.3. Fragmentation, Sequence Numbers and All-Pad Payloads 6 | 2.2.3. Fragmentation, Sequence Numbers and All-Pad Payloads 6 | |||
| 2.2.4. Empty Payload . . . . . . . . . . . . . . . . . . . . 8 | 2.2.4. Empty Payload . . . . . . . . . . . . . . . . . . . . 8 | |||
| 2.2.5. IP Header Value Mapping . . . . . . . . . . . . . . . 8 | 2.2.5. IP Header Value Mapping . . . . . . . . . . . . . . . 8 | |||
| 2.2.6. IP Time-To-Live (TTL) and Tunnel errors . . . . . . . 9 | 2.2.6. IP Time-To-Live (TTL) and Tunnel errors . . . . . . . 9 | |||
| 2.2.7. Effective MTU of the Tunnel . . . . . . . . . . . . . 9 | 2.2.7. Effective MTU of the Tunnel . . . . . . . . . . . . . 9 | |||
| 2.3. Exclusive SA Use . . . . . . . . . . . . . . . . . . . . 9 | 2.3. Exclusive SA Use . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.4. Modes of Operation . . . . . . . . . . . . . . . . . . . 10 | 2.4. Modes of Operation . . . . . . . . . . . . . . . . . . . 10 | |||
| 2.4.1. Non-Congestion Controlled Mode . . . . . . . . . . . 10 | 2.4.1. Non-Congestion Controlled Mode . . . . . . . . . . . 10 | |||
| 2.4.2. Congestion Controlled Mode . . . . . . . . . . . . . 10 | 2.4.2. Congestion Controlled Mode . . . . . . . . . . . . . 10 | |||
| 2.5. Summary of Receiver Processing . . . . . . . . . . . . . 12 | 2.5. Summary of Receiver Processing . . . . . . . . . . . . . 12 | |||
| 3. Congestion Information . . . . . . . . . . . . . . . . . . . 12 | 3. Congestion Information . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.1. ECN Support . . . . . . . . . . . . . . . . . . . . . . . 13 | 3.1. ECN Support . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4. Configuration of AGGFRAG Tunnels for IP-TFS . . . . . . . . . 14 | |||
| 4.1. Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.1. Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.2. Fixed Packet Size . . . . . . . . . . . . . . . . . . . . 14 | 4.2. Fixed Packet Size . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.3. Congestion Control . . . . . . . . . . . . . . . . . . . 14 | 4.3. Congestion Control . . . . . . . . . . . . . . . . . . . 14 | |||
| 5. IKEv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 5. IKEv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.1. USE_AGGFRAG Notification Message . . . . . . . . . . . . 14 | 5.1. USE_AGGFRAG Notification Message . . . . . . . . . . . . 14 | |||
| 6. Packet and Data Formats . . . . . . . . . . . . . . . . . . . 15 | 6. Packet and Data Formats . . . . . . . . . . . . . . . . . . . 15 | |||
| 6.1. AGGFRAG_PAYLOAD Payload . . . . . . . . . . . . . . . . . 15 | 6.1. AGGFRAG_PAYLOAD Payload . . . . . . . . . . . . . . . . . 15 | |||
| 6.1.1. Non-Congestion Control AGGFRAG_PAYLOAD Payload Format 16 | 6.1.1. Non-Congestion Control AGGFRAG_PAYLOAD Payload Format 16 | |||
| 6.1.2. Congestion Control AGGFRAG_PAYLOAD Payload Format . . 16 | 6.1.2. Congestion Control AGGFRAG_PAYLOAD Payload Format . . 16 | |||
| 6.1.3. Data Blocks . . . . . . . . . . . . . . . . . . . . . 18 | 6.1.3. Data Blocks . . . . . . . . . . . . . . . . . . . . . 18 | |||
| skipping to change at page 3, line 27 ¶ | skipping to change at page 3, line 30 ¶ | |||
| obscuring the data with encryption [RFC4303], the traffic pattern | obscuring the data with encryption [RFC4303], the traffic pattern | |||
| itself exposes information due to variations in its shape and timing | itself exposes information due to variations in its shape and timing | |||
| ([RFC8546], [AppCrypt]). Hiding the size and frequency of traffic is | ([RFC8546], [AppCrypt]). Hiding the size and frequency of traffic is | |||
| referred to as Traffic Flow Confidentiality (TFC) per [RFC4303]. | referred to as Traffic Flow Confidentiality (TFC) per [RFC4303]. | |||
| [RFC4303] provides for TFC by allowing padding to be added to | [RFC4303] provides for TFC by allowing padding to be added to | |||
| encrypted IP packets and allowing for transmission of all-pad packets | encrypted IP packets and allowing for transmission of all-pad packets | |||
| (indicated using protocol 59). This method has the major limitation | (indicated using protocol 59). This method has the major limitation | |||
| that it can significantly under-utilize the available bandwidth. | that it can significantly under-utilize the available bandwidth. | |||
| The IP-TFS (IP Traffic Flow Security) solution provides for full TFC | This document defines an aggregation and fragmentation (AGGFRAG) mode | |||
| without the aforementioned bandwidth limitation. This is | for ESP, and its use for IP Traffic Flow Security (IP-TFS). This | |||
| accomplished by using a constant-send-rate IPsec [RFC4303] tunnel | solution provides for full TFC without the aforementioned bandwidth | |||
| with fixed-sized encapsulating packets; however, these fixed-sized | limitation. This is accomplished by using a constant-send-rate IPsec | |||
| packets can contain partial, whole or multiple IP packets to maximize | [RFC4303] tunnel with fixed-sized encapsulating packets; however, | |||
| the bandwidth of the tunnel. A non-constant send-rate is allowed, | these fixed-sized packets can contain partial, whole or multiple IP | |||
| but the confidentiality properties of its use are outside the scope | packets to maximize the bandwidth of the tunnel. A non-constant | |||
| of this document. | send-rate is allowed, but the confidentiality properties of its use | |||
| are outside the scope of this document. | ||||
| For a comparison of the overhead of IP-TFS with the RFC4303 | For a comparison of the overhead of IP-TFS with the RFC4303 | |||
| prescribed TFC solution see Appendix C. | prescribed TFC solution see Appendix C. | |||
| Additionally, IP-TFS provides for operating fairly within congested | Additionally, IP-TFS provides for operating fairly within congested | |||
| networks [RFC2914]. This is important for when the IP-TFS user is | networks [RFC2914]. This is important for when the IP-TFS user is | |||
| not in full control of the domain through which the IP-TFS tunnel | not in full control of the domain through which the IP-TFS tunnel | |||
| path flows. | path flows. | |||
| The mechanisms defined in this document are generic with the intent | The mechanisms, such as the AGGFRAG mode, defined in this document | |||
| of allowing for non-TFS uses, but such uses are outside the scope of | are generic with the intent of allowing for non-TFS uses, but such | |||
| this document. | uses are outside the scope of this document. | |||
| 1.1. Terminology & Concepts | 1.1. Terminology & Concepts | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| This document assumes familiarity with IP security concepts including | This document assumes familiarity with IP security concepts including | |||
| TFC as described in [RFC4301]. | TFC as described in [RFC4301]. | |||
| 2. The IP-TFS Tunnel | 2. The AGGFRAG Tunnel | |||
| As mentioned in Section 1 IP-TFS utilizes an IPsec [RFC4303] tunnel | As mentioned in Section 1, AGGFRAG mode utilizes an IPsec [RFC4303] | |||
| as its transport. To provide for full TFC, fixed-sized encapsulating | tunnel as its transport. For the purpose of IP-TFS, fixed-sized | |||
| packets are sent at a constant rate on the tunnel. | encapsulating packets are sent at a constant rate on the AGGFRAG | |||
| tunnel. | ||||
| The primary input to the tunnel algorithm is the requested bandwidth | The primary input to the tunnel algorithm is the requested bandwidth | |||
| to be used by the tunnel. Two values are then required to provide | to be used by the tunnel. Two values are then required to provide | |||
| for this bandwidth use, the fixed size of the encapsulating packets, | for this bandwidth use, the fixed size of the encapsulating packets, | |||
| and rate at which to send them. | and rate at which to send them. | |||
| The fixed packet size MAY either be specified manually or be | The fixed packet size MAY either be specified manually or be | |||
| determined through other methods such as the Packetization Layer MTU | determined through other methods such as the Packetization Layer MTU | |||
| Discovery (PLMTUD) ([RFC4821], [RFC8899]) or Path MTU discovery | Discovery (PLMTUD) ([RFC4821], [RFC8899]) or Path MTU discovery | |||
| (PMTUD) ([RFC1191], [RFC8201]). PMTUD is known to have issues so | (PMTUD) ([RFC1191], [RFC8201]). PMTUD is known to have issues so | |||
| PLMTUD is considered the more robust option. For PLMTUD, congestion | PLMTUD is considered the more robust option. For PLMTUD, congestion | |||
| control payloads can be used as in-band probes (see Section 6.1.2 and | control payloads can be used as in-band probes (see Section 6.1.2 and | |||
| [RFC8899]). | [RFC8899]). | |||
| Given the encapsulating packet size and the requested bandwidth to be | Given the encapsulating packet size and the requested bandwidth to be | |||
| used, the corresponding packet send rate can be calculated. The | used, the corresponding packet send rate can be calculated. The | |||
| packet send rate is the requested bandwidth to be used divided by the | packet send rate is the requested bandwidth to be used divided by the | |||
| size of the encapsulating packet. | size of the encapsulating packet. | |||
| The egress (receiving) side of the IP-TFS tunnel MUST allow for and | The egress (receiving) side of the AGGFRAG tunnel MUST allow for and | |||
| expect the ingress (sending) side of the IP-TFS tunnel to vary the | expect the ingress (sending) side of the AGGFRAG tunnel to vary the | |||
| size and rate of sent encapsulating packets, unless constrained by | size and rate of sent encapsulating packets, unless constrained by | |||
| other policy. | other policy. | |||
| 2.1. Tunnel Content | 2.1. Tunnel Content | |||
| As previously mentioned, one issue with the TFC padding solution in | As previously mentioned, one issue with the TFC padding solution in | |||
| [RFC4303] is the large amount of wasted bandwidth as only one IP | [RFC4303] is the large amount of wasted bandwidth as only one IP | |||
| packet can be sent per encapsulating packet. In order to maximize | packet can be sent per encapsulating packet. In order to maximize | |||
| bandwidth, IP-TFS breaks this one-to-one association. | bandwidth, IP-TFS breaks this one-to-one association by introducing | |||
| an AGGFRAG mode for ESP. | ||||
| IP-TFS aggregates as well as fragments the inner IP traffic flow into | AGGFRAG mode aggregates as well as fragments the inner IP traffic | |||
| fixed-sized encapsulating IPsec tunnel packets. Padding is only | flow into encapsulating IPsec tunnel packets. For IP-TFS, the IPsec | |||
| added to the the tunnel packets if there is no data available to be | encapsulating tunnel packets are a fixed size. Padding is only added | |||
| sent at the time of tunnel packet transmission, or if fragmentation | to the the tunnel packets if there is no data available to be sent at | |||
| has been disabled by the receiver. | the time of tunnel packet transmission, or if fragmentation has been | |||
| disabled by the receiver. | ||||
| This is accomplished using a new Encapsulating Security Payload (ESP, | This is accomplished using a new Encapsulating Security Payload (ESP, | |||
| [RFC4303]) Next Header field value AGGFRAG_PAYLOAD (Section 6.1). | [RFC4303]) Next Header field value AGGFRAG_PAYLOAD (Section 6.1). | |||
| Other non-IP-TFS uses of this aggregation and fragmentation | Other non-IP-TFS uses of this AGGFRAG mode have been suggested, such | |||
| encapsulation have been identified, such as increased performance | as increased performance through packet aggregation, as well as | |||
| through packet aggregation, as well as handling MTU issues using | handling MTU issues using fragmentation. These uses are not defined | |||
| fragmentation. These uses are not defined here, but are also not | here, but are also not restricted by this document. | |||
| restricted by this document. | ||||
| 2.2. Payload Content | 2.2. Payload Content | |||
| The AGGFRAG_PAYLOAD payload content defined in this document is | The AGGFRAG_PAYLOAD payload content defined in this document is | |||
| comprised of a 4 or 24 octet header followed by either a partial | comprised of a 4 or 24 octet header followed by either a partial | |||
| datablock, a full datablock, or multiple partial or full datablocks. | datablock, a full datablock, or multiple partial or full datablocks. | |||
| The following diagram illustrates this payload within the ESP packet. | The following diagram illustrates this payload within the ESP packet. | |||
| See Section 6.1 for the exact formats of the AGGFRAG_PAYLOAD payload. | See Section 6.1 for the exact formats of the AGGFRAG_PAYLOAD payload. | |||
| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |||
| skipping to change at page 5, line 44 ¶ | skipping to change at page 5, line 44 ¶ | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| : [Optional Congestion Info] : | : [Optional Congestion Info] : | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | DataBlocks ... ~ | | DataBlocks ... ~ | |||
| ~ ~ | ~ ~ | |||
| ~ | | ~ | | |||
| +---------------------------------------------------------------| | +---------------------------------------------------------------| | |||
| . ESP Trailer... . | . ESP Trailer... . | |||
| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |||
| Figure 1: Layout of an IP-TFS IPsec Packet | Figure 1: Layout of an AGGFRAG mode IPsec Packet | |||
| The "BlockOffset" value is either zero or some offset into or past | The "BlockOffset" value is either zero or some offset into or past | |||
| the end of the "DataBlocks" data. | the end of the "DataBlocks" data. | |||
| If the "BlockOffset" value is zero it means that the "DataBlocks" | If the "BlockOffset" value is zero it means that the "DataBlocks" | |||
| data begins with a new data block. | data begins with a new data block. | |||
| Conversely, if the "BlockOffset" value is non-zero it points to the | Conversely, if the "BlockOffset" value is non-zero it points to the | |||
| start of the new data block, and the initial "DataBlocks" data | start of the new data block, and the initial "DataBlocks" data | |||
| belongs to the data block that is still being re-assembled. | belongs to the data block that is still being re-assembled. | |||
| If the "BlockOffset" points past the end of the "DataBlocks" data | If the "BlockOffset" points past the end of the "DataBlocks" data | |||
| then the next data block occurs in a subsequent encapsulating packet. | then the next data block occurs in a subsequent encapsulating packet. | |||
| Having the "BlockOffset" always point at the next available data | Having the "BlockOffset" always point at the next available data | |||
| block allows for recovering the next inner packet in the presence of | block allows for recovering the next inner packet in the presence of | |||
| outer encapsulating packet loss. | outer encapsulating packet loss. | |||
| An example IP-TFS packet flow can be found in Appendix A. | An example AGGFRAG mode packet flow can be found in Appendix A. | |||
| 2.2.1. Data Blocks | 2.2.1. Data Blocks | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | Type | rest of IPv4, IPv6 or pad. | | Type | rest of IPv4, IPv6 or pad. | |||
| +-------- | +-------- | |||
| Figure 2: Layout of a DataBlock | Figure 2: Layout of a DataBlock | |||
| A data block is defined by a 4-bit type code followed by the data | A data block is defined by a 4-bit type code followed by the data | |||
| skipping to change at page 7, line 29 ¶ | skipping to change at page 7, line 29 ¶ | |||
| As the amount of reordering that may be present is hard to predict, | As the amount of reordering that may be present is hard to predict, | |||
| the window size SHOULD be configurable by the user. Implementations | the window size SHOULD be configurable by the user. Implementations | |||
| MAY also dynamically adjust the reordering window based on actual | MAY also dynamically adjust the reordering window based on actual | |||
| reordering seen in arriving packets. Finally, note that as IP-TFS is | reordering seen in arriving packets. Finally, note that as IP-TFS is | |||
| sending a continuous stream of packets there is no requirement for | sending a continuous stream of packets there is no requirement for | |||
| timers (although there's no prohibition either) as newly arrived | timers (although there's no prohibition either) as newly arrived | |||
| packets will cause the window to advance and older packets will then | packets will cause the window to advance and older packets will then | |||
| be processed as they leave the window. Implementations that are | be processed as they leave the window. Implementations that are | |||
| concerned about memory use when packets are delayed (e.g., when an SA | concerned about memory use when packets are delayed (e.g., when an SA | |||
| deletion is delayed) can of course use timers to drop packets as | deletion is delayed), or non-IP-TFS uses of AGGFRAG mode, can of | |||
| well. | course use timers to drop packets as well. | |||
| While ESP guarantees an increasing sequence number with subsequently | While ESP guarantees an increasing sequence number with subsequently | |||
| sent packets, it does not actually require the sequence numbers to be | sent packets, it does not actually require the sequence numbers to be | |||
| generated with no gaps (e.g., sending only even numbered sequence | generated with no gaps (e.g., sending only even numbered sequence | |||
| numbers would be allowed as long as they are always increasing). | numbers would be allowed as long as they are always increasing). | |||
| Gaps in the sequence numbers will not work for this document so the | Gaps in the sequence numbers will not work for this document so the | |||
| sequence number stream MUST increase monotonically by 1 for each | sequence number stream MUST increase monotonically by 1 for each | |||
| subsequent packet. | subsequent packet. | |||
| When using the AGGFRAG_PAYLOAD in conjunction with replay detection, | When using the AGGFRAG_PAYLOAD in conjunction with replay detection, | |||
| the window size for both MAY be reduced to share the smaller of the | the window size for both can be reduced to the smaller of the two | |||
| two window sizes. This is because packets outside of the smaller | window sizes. This is because packets outside of the smaller window | |||
| window but inside the larger would still be dropped by the mechanism | but inside the larger would still be dropped by the mechanism with | |||
| with the smaller window size. | the smaller window size. | |||
| Finally, as sequence numbers are reset when switching SAs (e.g., when | Finally, as sequence numbers are reset when switching SAs (e.g., when | |||
| re-keying a child SA), senders MUST NOT send initial fragments of an | re-keying a child SA), senders MUST NOT send initial fragments of an | |||
| inner packet using one SA and subsequent fragments in a different SA. | inner packet using one SA and subsequent fragments in a different SA. | |||
| 2.2.3.1. Optional Extra Padding | 2.2.3.1. Optional Extra Padding | |||
| When the tunnel bandwidth is not being fully utilized, a sender MAY | When the tunnel bandwidth is not being fully utilized, a sender MAY | |||
| pad-out the current encapsulating packet in order to deliver an inner | pad-out the current encapsulating packet in order to deliver an inner | |||
| packet un-fragmented in the following outer packet. The benefit | packet un-fragmented in the following outer packet. The benefit | |||
| skipping to change at page 8, line 33 ¶ | skipping to change at page 8, line 33 ¶ | |||
| While use of padding to avoid fragmentation does not impact | While use of padding to avoid fragmentation does not impact | |||
| interoperability, used inappropriately it can reduce the effective | interoperability, used inappropriately it can reduce the effective | |||
| throughput of a tunnel. Senders implementing either of the above | throughput of a tunnel. Senders implementing either of the above | |||
| approaches will need to take care to not reduce the effective | approaches will need to take care to not reduce the effective | |||
| capacity, and overall utility, of the tunnel through the overuse of | capacity, and overall utility, of the tunnel through the overuse of | |||
| padding. | padding. | |||
| 2.2.4. Empty Payload | 2.2.4. Empty Payload | |||
| To support reporting of congestion control information (described | To support reporting of congestion control information (described | |||
| later) on a non-AGGFRAG_PAYLOAD enabled SA, IP-TFS allows for the | later) using a non-AGGFRAG_PAYLOAD enabled SA, it is allowed to send | |||
| sending of an AGGFRAG_PAYLOAD payload with no data blocks (i.e., the | an AGGFRAG_PAYLOAD payload with no data blocks (i.e., the ESP payload | |||
| ESP payload length is equal to the AGGFRAG_PAYLOAD header length). | length is equal to the AGGFRAG_PAYLOAD header length). This special | |||
| This special payload is called an empty payload. | payload is called an empty payload. | |||
| Currently this situation is only applicable in non-IKEv2 use cases. | Currently this situation is only applicable in non-IKEv2 use cases. | |||
| 2.2.5. IP Header Value Mapping | 2.2.5. IP Header Value Mapping | |||
| [RFC4301] provides some direction on when and how to map various | [RFC4301] provides some direction on when and how to map various | |||
| values from an inner IP header to the outer encapsulating header, | values from an inner IP header to the outer encapsulating header, | |||
| namely the Don't-Fragment (DF) bit ([RFC0791] and [RFC8200]), the | namely the Don't-Fragment (DF) bit ([RFC0791] and [RFC8200]), the | |||
| Differentiated Services (DS) field [RFC2474] and the Explicit | Differentiated Services (DS) field [RFC2474] and the Explicit | |||
| Congestion Notification (ECN) field [RFC3168]. Unlike [RFC4301], IP- | Congestion Notification (ECN) field [RFC3168]. Unlike [RFC4301], | |||
| TFS may and often will be encapsulating more than one IP packet per | AGGFRAG mode may and often will be encapsulating more than one IP | |||
| ESP packet. To deal with this, these mappings are restricted | packet per ESP packet. To deal with this, these mappings are | |||
| further. | restricted further. | |||
| 2.2.5.1. DF bit | 2.2.5.1. DF bit | |||
| IP-TFS never maps the inner DF bit as it is unrelated to the IP-TFS | AGGFRAG mode never maps the inner DF bit as it is unrelated to the | |||
| tunnel functionality; IP-TFS never needs to IP fragment the inner | AGGFRAG tunnel functionality; AGGFRAG mode never needs to IP fragment | |||
| packets and the inner packets will not affect the fragmentation of | the inner packets and the inner packets will not affect the | |||
| the outer encapsulation packets. | fragmentation of the outer encapsulation packets. | |||
| 2.2.5.2. ECN value | 2.2.5.2. ECN value | |||
| The ECN value need not be mapped as any congestion related to the | The ECN value need not be mapped as any congestion related to the | |||
| constant-send-rate IP-TFS tunnel is unrelated (by design) to the | constant-send-rate IP-TFS tunnel is unrelated (by design) to the | |||
| inner traffic flow. The sender MAY still set the ECN value of inner | inner traffic flow. The sender MAY still set the ECN value of inner | |||
| packets based on the normal ECN specification [RFC3168]. | packets based on the normal ECN specification [RFC3168]. | |||
| 2.2.5.3. DS field | 2.2.5.3. DS field | |||
| By default the DS field SHOULD NOT be copied, although a sender MAY | By default the DS field SHOULD NOT be copied, although a sender MAY | |||
| choose to allow for configuration to override this behavior. A | choose to allow for configuration to override this behavior. A | |||
| sender SHOULD also allow the DS value to be set by configuration. | sender SHOULD also allow the DS value to be set by configuration. | |||
| 2.2.6. IP Time-To-Live (TTL) and Tunnel errors | 2.2.6. IP Time-To-Live (TTL) and Tunnel errors | |||
| [RFC4301] specifies how to modify the inner packet TTL [RFC0791]. | [RFC4301] specifies how to modify the inner packet TTL [RFC0791]. | |||
| Any errors (e.g., ICMP errors arriving back at the tunnel ingress due | Any errors (e.g., ICMP errors arriving back at the tunnel ingress due | |||
| to tunnel traffic) are handled the same as with non IP-TFS IPsec | to tunnel traffic) are handled the same as with non-AGGFRAG IPsec | |||
| tunnels. | tunnels. | |||
| 2.2.7. Effective MTU of the Tunnel | 2.2.7. Effective MTU of the Tunnel | |||
| Unlike [RFC4301], there is normally no effective MTU (EMTU) on an IP- | Unlike [RFC4301], there is normally no effective MTU (EMTU) on an | |||
| TFS tunnel as all IP packet sizes are properly transmitted without | AGGFRAG tunnel as all IP packet sizes are properly transmitted | |||
| requiring IP fragmentation prior to tunnel ingress. That said, a | without requiring IP fragmentation prior to tunnel ingress. That | |||
| sender MAY allow for explicitly configuring an MTU for the tunnel. | said, a sender MAY allow for explicitly configuring an MTU for the | |||
| tunnel. | ||||
| If IP-TFS fragmentation has been disabled, then the tunnel's EMTU and | If fragmentation has been disabled on the AGGFRAG tunnel, then the | |||
| behaviors are the same as normal IPsec tunnels [RFC4301]. | tunnel's EMTU and behaviors are the same as normal IPsec tunnels | |||
| [RFC4301]. | ||||
| 2.3. Exclusive SA Use | 2.3. Exclusive SA Use | |||
| This document does not specify mixed use of an AGGFRAG_PAYLOAD | This document does not specify mixed use of an AGGFRAG_PAYLOAD | |||
| enabled SA. A sender MUST only send AGGFRAG_PAYLOAD payloads over an | enabled SA. A sender MUST only send AGGFRAG_PAYLOAD payloads over an | |||
| SA configured for AGGFRAG_PAYLOAD use. | SA configured for AGGFRAG mode. | |||
| 2.4. Modes of Operation | 2.4. Modes of Operation | |||
| Just as with normal IPsec/ESP tunnels, IP-TFS tunnels are | Just as with normal IPsec/ESP tunnels, AGGFRAG tunnels are | |||
| unidirectional. Bidirectional IP-TFS functionality is achieved by | unidirectional. Bidirectional IP-TFS functionality is achieved by | |||
| setting up 2 IP-TFS tunnels, one in either direction. | setting up 2 AGGFRAG tunnels, one in either direction. | |||
| An IP-TFS tunnel can operate in 2 modes, a non-congestion controlled | An AGGFRAG tunnel used for IP-TFS can operate in 2 modes, a non- | |||
| mode and congestion controlled mode. | congestion controlled mode and congestion controlled mode. | |||
| 2.4.1. Non-Congestion Controlled Mode | 2.4.1. Non-Congestion Controlled Mode | |||
| In the non-congestion controlled mode, IP-TFS sends fixed-sized | In the non-congestion controlled mode, IP-TFS sends fixed-sized | |||
| packets at a constant rate. The packet send rate is constant and is | packets over an AGGFRAG tunnel at a constant rate. The packet send | |||
| not automatically adjusted regardless of any network congestion | rate is constant and is not automatically adjusted regardless of any | |||
| (e.g., packet loss). | network congestion (e.g., packet loss). | |||
| For similar reasons as given in [RFC7510] the non-congestion | For similar reasons as given in [RFC7510] the non-congestion | |||
| controlled mode should only be used where the user has full | controlled mode should only be used where the user has full | |||
| administrative control over the path the tunnel will take. This is | administrative control over the path the tunnel will take. This is | |||
| required so the user can guarantee the bandwidth and also be sure as | required so the user can guarantee the bandwidth and also be sure as | |||
| to not be negatively affecting network congestion [RFC2914]. In this | to not be negatively affecting network congestion [RFC2914]. In this | |||
| case packet loss should be reported to the administrator (e.g., via | case packet loss should be reported to the administrator (e.g., via | |||
| syslog, YANG notification, SNMP traps, etc) so that any failures due | syslog, YANG notification, SNMP traps, etc) so that any failures due | |||
| to a lack of bandwidth can be corrected. | to a lack of bandwidth can be corrected. | |||
| skipping to change at page 11, line 20 ¶ | skipping to change at page 11, line 20 ¶ | |||
| establishing an RTT the information SHOULD be sent constantly from | establishing an RTT the information SHOULD be sent constantly from | |||
| the sender and the receiver so that an RTT estimate can be | the sender and the receiver so that an RTT estimate can be | |||
| established. Not receiving this information over multiple | established. Not receiving this information over multiple | |||
| consecutive RTT intervals should be considered a congestion event | consecutive RTT intervals should be considered a congestion event | |||
| that causes the sender to adjust its sending rate lower. For | that causes the sender to adjust its sending rate lower. For | |||
| example, [RFC4342] calls this the "no feedback timeout" and it is | example, [RFC4342] calls this the "no feedback timeout" and it is | |||
| equal to 4 RTT intervals. When a "no feedback timeout" has occurred | equal to 4 RTT intervals. When a "no feedback timeout" has occurred | |||
| [RFC4342] halves the sending rate. | [RFC4342] halves the sending rate. | |||
| An implementation MAY choose to always include the congestion | An implementation MAY choose to always include the congestion | |||
| information in its IP-TFS payload header if sending on an IP-TFS | information in its AGGFRAG payload header if sending on an IP-TFS | |||
| enabled SA. Since IP-TFS normally will operate with a large packet | enabled SA. Since IP-TFS normally will operate with a large packet | |||
| size, the congestion information should represent a small portion of | size, the congestion information should represent a small portion of | |||
| the available tunnel bandwidth. An implementation choosing to always | the available tunnel bandwidth. An implementation choosing to always | |||
| send the data MAY also choose to only update the "LossEventRate" and | send the data MAY also choose to only update the "LossEventRate" and | |||
| "RTT" header field values it sends every "RTT" though. | "RTT" header field values it sends every "RTT" though. | |||
| When choosing a congestion control algorithm (or a selection of | When choosing a congestion control algorithm (or a selection of | |||
| algorithms) note that IP-TFS is not providing for reliable delivery | algorithms) note that IP-TFS is not providing for reliable delivery | |||
| of IP traffic, and so per packet ACKs are not required and are not | of IP traffic, and so per packet ACKs are not required and are not | |||
| provided. | provided. | |||
| It is worth noting that the variable send-rate of a congestion | It is worth noting that the variable send-rate of a congestion | |||
| controlled IP-TFS tunnel, is not private; however, this send-rate is | controlled AGGFRAG tunnel, is not private; however, this send-rate is | |||
| being driven by network congestion, and as long as the encapsulated | being driven by network congestion, and as long as the encapsulated | |||
| (inner) traffic flow shape and timing are not directly affecting the | (inner) traffic flow shape and timing are not directly affecting the | |||
| (outer) network congestion, the variations in the tunnel rate will | (outer) network congestion, the variations in the tunnel rate will | |||
| not weaken the provided inner traffic flow confidentiality. | not weaken the provided inner traffic flow confidentiality. | |||
| 2.4.2.1. Circuit Breakers | 2.4.2.1. Circuit Breakers | |||
| In additional to congestion control, implementations MAY choose to | In additional to congestion control, implementations MAY choose to | |||
| define and implement circuit breakers [RFC8084] as a recovery method | define and implement circuit breakers [RFC8084] as a recovery method | |||
| of last resort. Enabling circuit breakers is also a reason a user | of last resort. Enabling circuit breakers is also a reason a user | |||
| may wish to enable congestion information reports even when using the | may wish to enable congestion information reports even when using the | |||
| non-congestion controlled mode of operation. The definition of | non-congestion controlled mode of operation. The definition of | |||
| circuit breakers are outside the scope of this document. | circuit breakers are outside the scope of this document. | |||
| 2.5. Summary of Receiver Processing | 2.5. Summary of Receiver Processing | |||
| An IP-TFS receiver has a few tasks to perform. | An AGGFRAG enabled SA receiver has a few tasks to perform. | |||
| The receiver first reorders, possibly out-of-order ESP packets | The receiver first reorders, possibly out-of-order ESP packets | |||
| received on an SA into in-sequence-order AGGFRAG_PAYLOAD payloads | received on an SA into in-sequence-order AGGFRAG_PAYLOAD payloads | |||
| (Section 2.2.3). If congestion control is enabled, the receiver | (Section 2.2.3). If congestion control is enabled, the receiver | |||
| considers a packet lost when it's sequence number is abandoned (e.g., | considers a packet lost when it's sequence number is abandoned (e.g., | |||
| pushed out of the re-ordering window, or timed-out) by the reordering | pushed out of the re-ordering window, or timed-out) by the reordering | |||
| algorithm. | algorithm. | |||
| Additionally, if congestion control is enabled, the receiver sends | Additionally, if congestion control is enabled, the receiver sends | |||
| congestion control data (Section 6.1.2) back to the sender as | congestion control data (Section 6.1.2) back to the sender as | |||
| skipping to change at page 13, line 4 ¶ | skipping to change at page 13, line 4 ¶ | |||
| receipt of this "TVal", the receiver records the new "TVal" value | receipt of this "TVal", the receiver records the new "TVal" value | |||
| along with the time it arrived locally, subsequent receipt of the | along with the time it arrived locally, subsequent receipt of the | |||
| same "TVal" MUST NOT update the recorded time. | same "TVal" MUST NOT update the recorded time. | |||
| When the receiver sends its CC header it places this latest recorded | When the receiver sends its CC header it places this latest recorded | |||
| "TVal" in the "TEcho" header field, along with 2 delay values, "Echo | "TVal" in the "TEcho" header field, along with 2 delay values, "Echo | |||
| Delay" and "Transmit Delay". The "Echo Delay" value is the time | Delay" and "Transmit Delay". The "Echo Delay" value is the time | |||
| delta from the recorded arrival time of "TVal" and the current clock | delta from the recorded arrival time of "TVal" and the current clock | |||
| in microseconds. The second value, "Transmit Delay", is the | in microseconds. The second value, "Transmit Delay", is the | |||
| receiver's current transmission delay on the tunnel (i.e., the | receiver's current transmission delay on the tunnel (i.e., the | |||
| average time between sending packets on its half of the IP-TFS | average time between sending packets on its half of the AGGFRAG | |||
| tunnel). | tunnel). | |||
| When the sender receives back its "TVal" in the "TEcho" header field | When the sender receives back its "TVal" in the "TEcho" header field | |||
| it calculates 2 RTT estimates. The first is the actual delay found | it calculates 2 RTT estimates. The first is the actual delay found | |||
| by subtracting the "TEcho" value from its current clock and then | by subtracting the "TEcho" value from its current clock and then | |||
| subtracting "Echo Delay" as well. The second RTT estimate is found | subtracting "Echo Delay" as well. The second RTT estimate is found | |||
| by adding the received "Transmit Delay" header value to the senders | by adding the received "Transmit Delay" header value to the senders | |||
| own transmission delay (i.e., the average time between sending | own transmission delay (i.e., the average time between sending | |||
| packets on its half of the IP-TFS tunnel). The larger of these 2 RTT | packets on its half of the AGGFRAG tunnel). The larger of these 2 | |||
| estimates SHOULD be used as the "RTT" value. | RTT estimates SHOULD be used as the "RTT" value. | |||
| The two RTT estimates are required to handle different combinations | The two RTT estimates are required to handle different combinations | |||
| of faster or slower tunnel packet paths with faster or slower fixed | of faster or slower tunnel packet paths with faster or slower fixed | |||
| tunnel rates. Choosing the larger of the two values guarantees that | tunnel rates. Choosing the larger of the two values guarantees that | |||
| the "RTT" is never considered faster than the aggregate transmission | the "RTT" is never considered faster than the aggregate transmission | |||
| delay based on the IP-TFS tunnel rate (the second estimate), as well | delay based on the IP-TFS send rate (the second estimate), as well as | |||
| as never being considered faster than the actual RTT along the tunnel | never being considered faster than the actual RTT along the tunnel | |||
| packet path (the first estimate). | packet path (the first estimate). | |||
| The receiver also calculates, and communicates in the "LossEventRate" | The receiver also calculates, and communicates in the "LossEventRate" | |||
| header field, the loss event rate for use by the sender. This is | header field, the loss event rate for use by the sender. This is | |||
| slightly different from [RFC4342] which periodically sends all the | slightly different from [RFC4342] which periodically sends all the | |||
| loss interval data back to the sender so that it can do the | loss interval data back to the sender so that it can do the | |||
| calculation. See Appendix B for a suggested way to calculate the | calculation. See Appendix B for a suggested way to calculate the | |||
| loss event rate value. Initially this value will be zero (indicating | loss event rate value. Initially this value will be zero (indicating | |||
| no loss) until enough data has been collected by the receiver to | no loss) until enough data has been collected by the receiver to | |||
| update it. | update it. | |||
| 3.1. ECN Support | 3.1. ECN Support | |||
| In additional to normal packet loss information IP-TFS supports use | In additional to normal packet loss information AGGFRAG mode supports | |||
| of the ECN bits in the encapsulating IP header [RFC3168] for | use of the ECN bits in the encapsulating IP header [RFC3168] for | |||
| identifying congestion. If ECN use is enabled and a packet arrives | identifying congestion. If ECN use is enabled and a packet arrives | |||
| at the egress (receiving) side with the Congestion Experienced (CE) | at the egress (receiving) side with the Congestion Experienced (CE) | |||
| value set, then the receiver considers that packet as being dropped, | value set, then the receiver considers that packet as being dropped, | |||
| although it does not drop it. The receiver MUST set the E bit in any | although it does not drop it. The receiver MUST set the E bit in any | |||
| AGGFRAG_PAYLOAD payload header containing a "LossEventRate" value | AGGFRAG_PAYLOAD payload header containing a "LossEventRate" value | |||
| derived from a CE value being considered. | derived from a CE value being considered. | |||
| As noted in [RFC3168] the ECN bits are not protected by IPsec and | As noted in [RFC3168] the ECN bits are not protected by IPsec and | |||
| thus may constitute a covert channel. For this reason, ECN use | thus may constitute a covert channel. For this reason, ECN use | |||
| SHOULD NOT be enabled by default. | SHOULD NOT be enabled by default. | |||
| 4. Configuration | 4. Configuration of AGGFRAG Tunnels for IP-TFS | |||
| IP-TFS is meant to be deployable with a minimal amount of | IP-TFS is meant to be deployable with a minimal amount of | |||
| configuration. All IP-TFS specific configuration should be specified | configuration. All IP-TFS specific configuration should be specified | |||
| at the unidirectional tunnel ingress (sending) side. It is intended | at the unidirectional tunnel ingress (sending) side. It is intended | |||
| that non-IKEv2 operation is supported, at least, with local static | that non-IKEv2 operation is supported, at least, with local static | |||
| configuration. | configuration. | |||
| 4.1. Bandwidth | 4.1. Bandwidth | |||
| Bandwidth is a local configuration option. For non-congestion | Bandwidth is a local configuration option. For non-congestion | |||
| skipping to change at page 14, line 39 ¶ | skipping to change at page 14, line 39 ¶ | |||
| 4.3. Congestion Control | 4.3. Congestion Control | |||
| Congestion control is a local configuration option. No standardized | Congestion control is a local configuration option. No standardized | |||
| configuration method is required. | configuration method is required. | |||
| 5. IKEv2 | 5. IKEv2 | |||
| 5.1. USE_AGGFRAG Notification Message | 5.1. USE_AGGFRAG Notification Message | |||
| As mentioned previously IP-TFS tunnels utilize ESP payloads of type | As mentioned previously AGGFRAG tunnels utilize ESP payloads of type | |||
| AGGFRAG_PAYLOAD. | AGGFRAG_PAYLOAD. | |||
| When using IKEv2, a new "USE_AGGFRAG" Notification Message enables | When using IKEv2, a new "USE_AGGFRAG" Notification Message enables | |||
| the AGGFRAG_PAYLOAD payload on a child SA pair. The method used is | the AGGFRAG_PAYLOAD payload on a child SA pair. The method used is | |||
| similar to how USE_TRANSPORT_MODE is negotiated, as described in | similar to how USE_TRANSPORT_MODE is negotiated, as described in | |||
| [RFC7296]. | [RFC7296]. | |||
| To request use of the AGGFRAG_PAYLOAD payload on the Child SA pair, | To request use of the AGGFRAG_PAYLOAD payload on the Child SA pair, | |||
| the initiator includes the USE_AGGFRAG notification in an SA payload | the initiator includes the USE_AGGFRAG notification in an SA payload | |||
| requesting a new Child SA (either during the initial IKE_AUTH or | requesting a new Child SA (either during the initial IKE_AUTH or | |||
| skipping to change at page 15, line 33 ¶ | skipping to change at page 15, line 33 ¶ | |||
| 6. Packet and Data Formats | 6. Packet and Data Formats | |||
| The packet and data formats defined below are generic with the intent | The packet and data formats defined below are generic with the intent | |||
| of allowing for non-IP-TFS uses, but such uses are outside the scope | of allowing for non-IP-TFS uses, but such uses are outside the scope | |||
| of this document. | of this document. | |||
| 6.1. AGGFRAG_PAYLOAD Payload | 6.1. AGGFRAG_PAYLOAD Payload | |||
| ESP Next Header value: 0x5 | ESP Next Header value: 0x5 | |||
| An IP-TFS payload is identified by the ESP Next Header value | An AGGFRAG payload is identified by the ESP Next Header value | |||
| AGGFRAG_PAYLOAD which has the value 0x5. The value 5 was chosen to | AGGFRAG_PAYLOAD which has the value 0x5. The value 5 was chosen to | |||
| not conflict with other used values. The first octet of this payload | not conflict with other used values. The first octet of this payload | |||
| indicates the format of the remaining payload data. | indicates the format of the remaining payload data. | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+- | |||
| | Sub-type | ... | | Sub-type | ... | |||
| +-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+- | |||
| Sub-type: | Sub-type: | |||
| skipping to change at page 21, line 47 ¶ | skipping to change at page 21, line 47 ¶ | |||
| TBD2 | TBD2 | |||
| Name: | Name: | |||
| USE_AGGFRAG | USE_AGGFRAG | |||
| Reference: | Reference: | |||
| This document | This document | |||
| 8. Security Considerations | 8. Security Considerations | |||
| This document describes a mechanism to add TFC to IP traffic. Use of | This document describes an aggregation and fragmentation mechanism | |||
| this mechanism is expected to increase the security of the traffic | and it use to add TFC to IP traffic. The use described is expected | |||
| being transported. Other than the additional security afforded by | to increase the security of the traffic being transported. Other | |||
| using this mechanism, IP-TFS utilizes the security protocols | than the additional security afforded by using this mechanism, IP-TFS | |||
| [RFC4303] and [RFC7296] and so their security considerations apply to | utilizes the security protocols [RFC4303] and [RFC7296] and so their | |||
| IP-TFS as well. | security considerations apply to IP-TFS as well. | |||
| As noted in (Section 3.1) the ECN bits are not protected by IPsec and | As noted in (Section 3.1) the ECN bits are not protected by IPsec and | |||
| thus may constitute a covert channel. For this reason, ECN use | thus may constitute a covert channel. For this reason, ECN use | |||
| SHOULD NOT be enabled by default. | SHOULD NOT be enabled by default. | |||
| As noted previously in Section 2.4.2, for TFC to be fully maintained | As noted previously in Section 2.4.2, for TFC to be fully maintained | |||
| the encapsulated traffic flow should not be affecting network | the encapsulated traffic flow should not be affecting network | |||
| congestion in a predictable way, and if it would be then non- | congestion in a predictable way, and if it would be then non- | |||
| congestion controlled mode use should be considered instead. | congestion controlled mode use should be considered instead. | |||
| skipping to change at page 24, line 50 ¶ | skipping to change at page 24, line 50 ¶ | |||
| Offset: 0 Offset: 100 Offset: 2900 Offset: 1400 | Offset: 0 Offset: 100 Offset: 2900 Offset: 1400 | |||
| [ ESP1 (1500) ][ ESP2 (1500) ][ ESP3 (1500) ][ ESP4 (1500) ] | [ ESP1 (1500) ][ ESP2 (1500) ][ ESP3 (1500) ][ ESP4 (1500) ] | |||
| [--800--][--800--][60][-240-][--4000----------------------][pad] | [--800--][--800--][60][-240-][--4000----------------------][pad] | |||
| Figure 3: Inner and Outer Packet Flow | Figure 3: Inner and Outer Packet Flow | |||
| The encapsulated IP packet flow (lengths include IP header and | The encapsulated IP packet flow (lengths include IP header and | |||
| payload) is as follows: an 800 octet packet, an 800 octet packet, a | payload) is as follows: an 800 octet packet, an 800 octet packet, a | |||
| 60 octet packet, a 240 octet packet, a 4000 octet packet. | 60 octet packet, a 240 octet packet, a 4000 octet packet. | |||
| The "BlockOffset" values in the 4 IP-TFS payload headers for this | The "BlockOffset" values in the 4 AGGFRAG payload headers for this | |||
| packet flow would thus be: 0, 100, 2900, 1400 respectively. The | packet flow would thus be: 0, 100, 2900, 1400 respectively. The | |||
| first encapsulating packet ESP1 has a zero "BlockOffset" which points | first encapsulating packet ESP1 has a zero "BlockOffset" which points | |||
| at the IP data block immediately following the IP-TFS header. The | at the IP data block immediately following the AGGFRAG header. The | |||
| following packet ESP2s "BlockOffset" points inward 100 octets to the | following packet ESP2s "BlockOffset" points inward 100 octets to the | |||
| start of the 60 octet data block. The third encapsulating packet | start of the 60 octet data block. The third encapsulating packet | |||
| ESP3 contains the middle portion of the 4000 octet data block so the | ESP3 contains the middle portion of the 4000 octet data block so the | |||
| offset points past its end and into the forth encapsulating packet. | offset points past its end and into the forth encapsulating packet. | |||
| The fourth packet ESP4s offset is 1400 pointing at the padding which | The fourth packet ESP4s offset is 1400 pointing at the padding which | |||
| follows the completion of the continued 4000 octet packet. | follows the completion of the continued 4000 octet packet. | |||
| Appendix B. A Send and Loss Event Rate Calculation | Appendix B. A Send and Loss Event Rate Calculation | |||
| The current best practice indicates that congestion control SHOULD be | The current best practice indicates that congestion control SHOULD be | |||
| skipping to change at page 25, line 49 ¶ | skipping to change at page 25, line 49 ¶ | |||
| The IP-TFS sender now has both the "R" and "p" values and can | The IP-TFS sender now has both the "R" and "p" values and can | |||
| calculate the correct sending rate. If following [RFC5348] the | calculate the correct sending rate. If following [RFC5348] the | |||
| sender should also use the slow start mechanism described therein | sender should also use the slow start mechanism described therein | |||
| when the IP-TFS SA is first established. | when the IP-TFS SA is first established. | |||
| Appendix C. Comparisons of IP-TFS | Appendix C. Comparisons of IP-TFS | |||
| C.1. Comparing Overhead | C.1. Comparing Overhead | |||
| For comparing overhead the overhead of ESP for both normal and IP-TFS | For comparing overhead the overhead of ESP for both normal and | |||
| tunnel packets must be calculated, and so an algorithm for encryption | AGGFRAG tunnel packets must be calculated, and so an algorithm for | |||
| and authentication must be chosen. For the data below AES-GCM-256 | encryption and authentication must be chosen. For the data below | |||
| was selected. This leads to an IP+ESP overhead of 54. | AES-GCM-256 was selected. This leads to an IP+ESP overhead of 54. | |||
| 54 = 20 (IP) + 8 (ESPH) + 2 (ESPF) + 8 (IV) + 16 (ICV) | 54 = 20 (IP) + 8 (ESPH) + 2 (ESPF) + 8 (IV) + 16 (ICV) | |||
| Additionally, for IP-TFS, non-congestion control AGGFRAG_PAYLOAD | Additionally, for IP-TFS, non-congestion control AGGFRAG_PAYLOAD | |||
| headers were chosen which adds 4 octets for a total overhead of 58. | headers were chosen which adds 4 octets for a total overhead of 58. | |||
| C.1.1. IP-TFS Overhead | C.1.1. IP-TFS Overhead | |||
| For comparison the overhead of IP-TFS is 58 octets per outer packet. | For comparison the overhead of AGGFRAG payload is 58 octets per outer | |||
| Therefore the octet overhead per inner packet is 58 divided by the | packet. Therefore the octet overhead per inner packet is 58 divided | |||
| number of outer packets required (fractional allowed). The overhead | by the number of outer packets required (fractional allowed). The | |||
| as a percentage of inner packet size is a constant based on the Outer | overhead as a percentage of inner packet size is a constant based on | |||
| MTU size. | the Outer MTU size. | |||
| OH = 58 / Outer Payload Size / Inner Packet Size | OH = 58 / Outer Payload Size / Inner Packet Size | |||
| OH % of Inner Packet Size = 100 * OH / Inner Packet Size | OH % of Inner Packet Size = 100 * OH / Inner Packet Size | |||
| OH % of Inner Packet Size = 5800 / Outer Payload Size | OH % of Inner Packet Size = 5800 / Outer Payload Size | |||
| Type IP-TFS IP-TFS IP-TFS | Type IP-TFS IP-TFS IP-TFS | |||
| MTU 576 1500 9000 | MTU 576 1500 9000 | |||
| PSize 518 1442 8942 | PSize 518 1442 8942 | |||
| ------------------------------- | ------------------------------- | |||
| 40 11.20% 4.02% 0.65% | 40 11.20% 4.02% 0.65% | |||
| skipping to change at page 29, line 37 ¶ | skipping to change at page 29, line 37 ¶ | |||
| 256 41.69% 16.64% 2.83% 84.36% 93.76% 98.94% 87.07% 77.58% | 256 41.69% 16.64% 2.83% 84.36% 93.76% 98.94% 87.07% 77.58% | |||
| 518 84.36% 33.68% 5.73% 84.36% 93.76% 98.94% 93.17% 87.50% | 518 84.36% 33.68% 5.73% 84.36% 93.76% 98.94% 93.17% 87.50% | |||
| 576 46.91% 37.45% 6.37% 84.36% 93.76% 98.94% 93.81% 88.62% | 576 46.91% 37.45% 6.37% 84.36% 93.76% 98.94% 93.81% 88.62% | |||
| 1442 78.28% 93.76% 15.95% 84.36% 93.76% 98.94% 97.43% 95.12% | 1442 78.28% 93.76% 15.95% 84.36% 93.76% 98.94% 97.43% 95.12% | |||
| 1500 81.43% 48.76% 16.60% 84.36% 93.76% 98.94% 97.53% 95.30% | 1500 81.43% 48.76% 16.60% 84.36% 93.76% 98.94% 97.53% 95.30% | |||
| 8942 80.91% 83.06% 98.94% 84.36% 93.76% 98.94% 99.58% 99.18% | 8942 80.91% 83.06% 98.94% 84.36% 93.76% 98.94% 99.58% 99.18% | |||
| 9000 81.43% 83.60% 49.79% 84.36% 93.76% 98.94% 99.58% 99.18% | 9000 81.43% 83.60% 49.79% 84.36% 93.76% 98.94% 99.58% 99.18% | |||
| Figure 9: Percentage of Bandwidth on 10G Ethernet | Figure 9: Percentage of Bandwidth on 10G Ethernet | |||
| A sometimes unexpected result of using IP-TFS (or any packet | A sometimes unexpected result of using an AGGFRAG tunnel (or any | |||
| aggregating tunnel) is that, for small to medium sized packets, the | packet aggregating tunnel) is that, for small to medium sized | |||
| available bandwidth is actually greater than native Ethernet. This | packets, the available bandwidth is actually greater than native | |||
| is due to the reduction in Ethernet framing overhead. This increased | Ethernet. This is due to the reduction in Ethernet framing overhead. | |||
| bandwidth is paid for with an increase in latency. This latency is | This increased bandwidth is paid for with an increase in latency. | |||
| the time to send the unrelated octets in the outer tunnel frame. The | This latency is the time to send the unrelated octets in the outer | |||
| following table illustrates the latency for some common values on a | tunnel frame. The following table illustrates the latency for some | |||
| 10G Ethernet link. The table also includes latency introduced by | common values on a 10G Ethernet link. The table also includes | |||
| padding if using ESP with padding. | latency introduced by padding if using ESP with padding. | |||
| ESP+Pad ESP+Pad IP-TFS IP-TFS | ESP+Pad ESP+Pad IP-TFS IP-TFS | |||
| 1500 9000 1500 9000 | 1500 9000 1500 9000 | |||
| ------------------------------------------ | ------------------------------------------ | |||
| 40 1.12 us 7.12 us 1.17 us 7.17 us | 40 1.12 us 7.12 us 1.17 us 7.17 us | |||
| 128 1.05 us 7.05 us 1.10 us 7.10 us | 128 1.05 us 7.05 us 1.10 us 7.10 us | |||
| 256 0.95 us 6.95 us 1.00 us 7.00 us | 256 0.95 us 6.95 us 1.00 us 7.00 us | |||
| 518 0.74 us 6.74 us 0.79 us 6.79 us | 518 0.74 us 6.74 us 0.79 us 6.79 us | |||
| 576 0.70 us 6.70 us 0.74 us 6.74 us | 576 0.70 us 6.70 us 0.74 us 6.74 us | |||
| skipping to change at page 30, line 27 ¶ | skipping to change at page 30, line 27 ¶ | |||
| Figure 10: Added Latency | Figure 10: Added Latency | |||
| Notice that the latency values are very similar between the two | Notice that the latency values are very similar between the two | |||
| solutions; however, whereas IP-TFS provides for constant high | solutions; however, whereas IP-TFS provides for constant high | |||
| bandwidth, in some cases even exceeding native Ethernet, ESP with | bandwidth, in some cases even exceeding native Ethernet, ESP with | |||
| padding often greatly reduces available bandwidth. | padding often greatly reduces available bandwidth. | |||
| Appendix D. Acknowledgements | Appendix D. Acknowledgements | |||
| We would like to thank Don Fedyk for help in reviewing and editing | We would like to thank Don Fedyk for help in reviewing and editing | |||
| this work. We would also like to thank Sean Turner and Valery | this work. We would also like to thank Michael Richardson, Sean | |||
| Smyslov for reviews and many suggestions for improvements, as well as | Turner and Valery Smyslov for reviews and many suggestions for | |||
| Joseph Touch for the transport area review and suggested | improvements, as well as Joseph Touch for the transport area review | |||
| improvements. | and suggested improvements. | |||
| Appendix E. Contributors | Appendix E. Contributors | |||
| The following people made significant contributions to this document. | The following people made significant contributions to this document. | |||
| Lou Berger | Lou Berger | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| Email: lberger@labn.net | Email: lberger@labn.net | |||
| End of changes. 46 change blocks. | ||||
| 121 lines changed or deleted | 129 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||