From 92ea0f496f934ce48aa4cb6fba7b3248ef54b889 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Hugly Date: Fri, 20 Sep 2024 13:54:08 +0200 Subject: [PATCH 01/10] mtu: add clarifications --- draft-dekater-scion-dataplane.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index 400bd89..7af21e5 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -350,7 +350,6 @@ Valid path segment combinations: The SCION data plane provides *path authorization*. This property ensures that data packets always traverse the network using path segments that were explicitly authorized by the respective ASes and prevents endpoints from constructing unauthorized paths or paths containing loops. SCION uses symmetric cryptography in the form of Message Authentication Codes (MACs) to authenticate the information encoded in Hop Fields and such MACs are verified by routers at forwarding. For a detailed specification, see [](#path-auth). - # SCION Header Specification {#header} The SCION packet header is aligned to 4 bytes. It is composed of a common header, an address header, a path header, and an OPTIONAL extension header, see {{figure-2}} below. @@ -1038,6 +1037,27 @@ This section explains what happens with the SCION packet header at each router, When destination Endpoint B wants to respond to source Endpoint A, it can just swap the source and destination addresses in the SCION header, reverse the SCION path, and set the pointers to the Info Fields and Hop Fields at the beginning of the reversed path (see also [](#reverse)). +## Packet Fragmentation + +The UDP/SCION layer never fragments packets. Unlike IPV6, even the sending endpoint cannot fragment packets on behalf of applications. Applications need to comply with the MTU of the paths that they use. + +SCION is agnostic to datagram fragmentation by the underlay network layer (such as UDP/IP encapsulation). Implementations SHOULD allow MTU discovery to be enabled and fragmentation to be disabled (honoring the system defaults is normally sufficient). This is the RECOMMENDED setting. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. + +## MTU + +SCION assumes that its underlay encapsulation (where used) or native link layer has a minimum MTU of 1232 (1280 - 48, assuming UDP/IPV6 encapsulation as the worst case). SCMP relies only on this minimum while UDP/SCION takes advantage of any larger MTU configured. + +The MTU of an entire path is defined as the MIN of the MTUs of the links traversed by that path. The control plane makes those numbers available in segment records. (See: {{I-D.dekater-scion-controlplane}}, Path MTU). + +The MTU of each link may be discovered or administratively configured (current practice is for it to be configured). It must be less than or equal to the MTU of the link's underlay encapsulation or native link-layer in either direction. + +SCION assumes that the MTUs of a path segment remains correct for the life time of that segment. This is generally a safe assumption because: + +* Intra-AS network MTUs are a result of the network configuration of each AS and therefore predictable. + +* Inter-AS links MTU are normally under the joint control of the administrators of the two ASes involved and therefore equally predictable. + +Although that isn't the main use case, SCION allows inter-AS links to be routed through multiple IP routers. In that case, the link's MTU MUST be configured statically to a conservative value. 1280 is a safe value. The same approach applies to all cases where MTUs cannot be assumed to be stable. # Path Authorization {#path-auth} From cdce98c0b10979ccb2d672b21a4d2c2a7d476a90 Mon Sep 17 00:00:00 2001 From: Nicola Rustignoli Date: Wed, 2 Oct 2024 15:52:11 +0200 Subject: [PATCH 02/10] add reference to MTU in SCMP --- draft-dekater-scion-dataplane.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index 7af21e5..c71c474 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1037,13 +1037,13 @@ This section explains what happens with the SCION packet header at each router, When destination Endpoint B wants to respond to source Endpoint A, it can just swap the source and destination addresses in the SCION header, reverse the SCION path, and set the pointers to the Info Fields and Hop Fields at the beginning of the reversed path (see also [](#reverse)). -## Packet Fragmentation +## Packet Fragmentation {#fragmentation} The UDP/SCION layer never fragments packets. Unlike IPV6, even the sending endpoint cannot fragment packets on behalf of applications. Applications need to comply with the MTU of the paths that they use. SCION is agnostic to datagram fragmentation by the underlay network layer (such as UDP/IP encapsulation). Implementations SHOULD allow MTU discovery to be enabled and fragmentation to be disabled (honoring the system defaults is normally sufficient). This is the RECOMMENDED setting. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. -## MTU +## MTU {#mtu} SCION assumes that its underlay encapsulation (where used) or native link layer has a minimum MTU of 1232 (1280 - 48, assuming UDP/IPV6 encapsulation as the worst case). SCMP relies only on this minimum while UDP/SCION takes advantage of any larger MTU configured. @@ -1435,7 +1435,7 @@ Implementations MUST respect the following rules when processing SCMP messages: - If an SCMP error message of unknown type is received at its destination, it MUST be passed to the upper-layer process that originated the packet that caused the error, if it can be identified. - If an SCMP informational message of unknown type is received, it MUST be silently dropped. - - Every SCMP error message MUST include as much of the offending SCION packet as possible without making the error message packet - including the SCION header and all extension headers - exceed **1232 bytes**. + - Every SCMP error message MUST include as much of the offending SCION packet as possible. The error message packet - including the SCION header and all extension headers - MUST NOT exceed **1232 bytes** in order to fit into the minimum MTU (see [](#mtu)). - In case the implementation is required to pass an SCMP error message to the upper-layer process, the upper-layer protocol type is extracted from the original packet in the body of the SCMP error message and used to select the appropriate process to handle the error. In case the upper-layer protocol type cannot be extracted from the SCMP error message body, the SCMP message MUST be silently dropped. - An SCMP error message MUST NOT be originated in response to any of the following: - An SCMP error message. From a12bc1a1430ced5c8cce6707030509827757137c Mon Sep 17 00:00:00 2001 From: jiceatscion <139873336+jiceatscion@users.noreply.github.com> Date: Thu, 3 Oct 2024 10:56:25 +0200 Subject: [PATCH 03/10] Update draft-dekater-scion-dataplane.md Co-authored-by: Nicola Rustignoli --- draft-dekater-scion-dataplane.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index c71c474..b0cfcbc 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1039,9 +1039,9 @@ When destination Endpoint B wants to respond to source Endpoint A, it can just s ## Packet Fragmentation {#fragmentation} -The UDP/SCION layer never fragments packets. Unlike IPV6, even the sending endpoint cannot fragment packets on behalf of applications. Applications need to comply with the MTU of the paths that they use. +The UDP/SCION layer MUST NOT fragments packets, not even at the source endpoint. Applications MUST comply with the MTU of the paths that they use. -SCION is agnostic to datagram fragmentation by the underlay network layer (such as UDP/IP encapsulation). Implementations SHOULD allow MTU discovery to be enabled and fragmentation to be disabled (honoring the system defaults is normally sufficient). This is the RECOMMENDED setting. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. +SCION is agnostic to datagram fragmentation by the underlay network layer, (e.g. used for intra-AS communication). Implementations SHOULD allow MTU discovery mechanisms such as {{RFC4821}} to be enabled in the underlay and avoid fragmentation. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. ## MTU {#mtu} From d3010f57b69690bca20f4ff11f4bf40186e6146e Mon Sep 17 00:00:00 2001 From: jiceatscion <139873336+jiceatscion@users.noreply.github.com> Date: Thu, 3 Oct 2024 10:57:40 +0200 Subject: [PATCH 04/10] Update draft-dekater-scion-dataplane.md Co-authored-by: Nicola Rustignoli --- draft-dekater-scion-dataplane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index b0cfcbc..8761e97 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1045,7 +1045,7 @@ SCION is agnostic to datagram fragmentation by the underlay network layer, (e.g. ## MTU {#mtu} -SCION assumes that its underlay encapsulation (where used) or native link layer has a minimum MTU of 1232 (1280 - 48, assuming UDP/IPV6 encapsulation as the worst case). SCMP relies only on this minimum while UDP/SCION takes advantage of any larger MTU configured. +SCION requires its underlay protocol to provide a minimum MTU of 1232 bytes. This number results from 1280, the minimum IPv6 MTU as of {{rfc2460}}), minus 48, assuming UDP/IPv6 as underlay. Higher layer protocols such as SCMP rely only on such minimum MTU. The MTU of an entire path is defined as the MIN of the MTUs of the links traversed by that path. The control plane makes those numbers available in segment records. (See: {{I-D.dekater-scion-controlplane}}, Path MTU). From 9304ec0882e33e13bc5949db5a8e85eca77a021e Mon Sep 17 00:00:00 2001 From: jiceatscion <139873336+jiceatscion@users.noreply.github.com> Date: Thu, 3 Oct 2024 10:58:22 +0200 Subject: [PATCH 05/10] Update draft-dekater-scion-dataplane.md Co-authored-by: Nicola Rustignoli --- draft-dekater-scion-dataplane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index 8761e97..c93bf92 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1047,7 +1047,7 @@ SCION is agnostic to datagram fragmentation by the underlay network layer, (e.g. SCION requires its underlay protocol to provide a minimum MTU of 1232 bytes. This number results from 1280, the minimum IPv6 MTU as of {{rfc2460}}), minus 48, assuming UDP/IPv6 as underlay. Higher layer protocols such as SCMP rely only on such minimum MTU. -The MTU of an entire path is defined as the MIN of the MTUs of the links traversed by that path. The control plane makes those numbers available in segment records. (See: {{I-D.dekater-scion-controlplane}}, Path MTU). +The MTU of a SCION path is defined as the minimum of the MTUs of the links traversed by that path. The control plane disseminates such values and makes them available to endpoints (see: {{I-D.dekater-scion-controlplane}}, Path MTU). The MTU of each link may be discovered or administratively configured (current practice is for it to be configured). It must be less than or equal to the MTU of the link's underlay encapsulation or native link-layer in either direction. From c21e053b501becb3ed07923a865a18cd802fbec4 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Hugly Date: Thu, 3 Oct 2024 11:14:56 +0200 Subject: [PATCH 06/10] Fix RFC refs. --- draft-dekater-scion-dataplane.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index c93bf92..dd7099b 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -42,6 +42,7 @@ author: normative: I-D.dekater-scion-controlplane: I-D.dekater-scion-pki: + RFC2460: RFC2474: RFC3168: RFC4493: @@ -90,6 +91,7 @@ informative: RFC1122: RFC1918: RFC2711: + RFC4821: RFC9217: RFC9473: SCMP: @@ -1037,12 +1039,6 @@ This section explains what happens with the SCION packet header at each router, When destination Endpoint B wants to respond to source Endpoint A, it can just swap the source and destination addresses in the SCION header, reverse the SCION path, and set the pointers to the Info Fields and Hop Fields at the beginning of the reversed path (see also [](#reverse)). -## Packet Fragmentation {#fragmentation} - -The UDP/SCION layer MUST NOT fragments packets, not even at the source endpoint. Applications MUST comply with the MTU of the paths that they use. - -SCION is agnostic to datagram fragmentation by the underlay network layer, (e.g. used for intra-AS communication). Implementations SHOULD allow MTU discovery mechanisms such as {{RFC4821}} to be enabled in the underlay and avoid fragmentation. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. - ## MTU {#mtu} SCION requires its underlay protocol to provide a minimum MTU of 1232 bytes. This number results from 1280, the minimum IPv6 MTU as of {{rfc2460}}), minus 48, assuming UDP/IPv6 as underlay. Higher layer protocols such as SCMP rely only on such minimum MTU. @@ -1059,6 +1055,12 @@ SCION assumes that the MTUs of a path segment remains correct for the life time Although that isn't the main use case, SCION allows inter-AS links to be routed through multiple IP routers. In that case, the link's MTU MUST be configured statically to a conservative value. 1280 is a safe value. The same approach applies to all cases where MTUs cannot be assumed to be stable. +## Packet Fragmentation {#fragmentation} + +The UDP/SCION layer MUST NOT fragments packets, not even at the source endpoint. Applications MUST comply with the MTU of the paths that they use. + +SCION is agnostic to datagram fragmentation by the underlay network layer, (e.g. used for intra-AS communication). Implementations SHOULD allow MTU discovery mechanisms such as {{RFC4821}} to be enabled in the underlay and avoid fragmentation. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. + # Path Authorization {#path-auth} Path authorization guarantees that data packets always traverse the network along paths segments authorized by all on-path ASes in the control plane. In contrast to the IP-based Internet where forwarding decisions are made by routers based on locally stored information, SCION routers base their forwarding decisions purely on the forwarding information carried in the packet header and set by endpoints. From bd5806610afb3eab53f558101b0cb38623091956 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Hugly Date: Thu, 3 Oct 2024 11:15:41 +0200 Subject: [PATCH 07/10] Fix RFC ref. --- draft-dekater-scion-dataplane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index dd7099b..ae8cb85 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1041,7 +1041,7 @@ When destination Endpoint B wants to respond to source Endpoint A, it can just s ## MTU {#mtu} -SCION requires its underlay protocol to provide a minimum MTU of 1232 bytes. This number results from 1280, the minimum IPv6 MTU as of {{rfc2460}}), minus 48, assuming UDP/IPv6 as underlay. Higher layer protocols such as SCMP rely only on such minimum MTU. +SCION requires its underlay protocol to provide a minimum MTU of 1232 bytes. This number results from 1280, the minimum IPv6 MTU as of {{RFC2460}}), minus 48, assuming UDP/IPv6 as underlay. Higher layer protocols such as SCMP rely only on such minimum MTU. The MTU of a SCION path is defined as the minimum of the MTUs of the links traversed by that path. The control plane disseminates such values and makes them available to endpoints (see: {{I-D.dekater-scion-controlplane}}, Path MTU). From a87aef9ad5fc2450149589052542b9ce2ba28f67 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Hugly Date: Thu, 3 Oct 2024 12:43:51 +0200 Subject: [PATCH 08/10] Rephrase MTU for unpredictable underlay MTUs. --- draft-dekater-scion-dataplane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index ae8cb85..632d50c 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1053,7 +1053,7 @@ SCION assumes that the MTUs of a path segment remains correct for the life time * Inter-AS links MTU are normally under the joint control of the administrators of the two ASes involved and therefore equally predictable. -Although that isn't the main use case, SCION allows inter-AS links to be routed through multiple IP routers. In that case, the link's MTU MUST be configured statically to a conservative value. 1280 is a safe value. The same approach applies to all cases where MTUs cannot be assumed to be stable. +Should the inter-AS link MTU be unpredictable (e.g. because the inter-AS link is deployed as an overlay), then the link's MTU MUST be configured statically to a conservative value. For a UDP/IP underlay, 1232 is a safe value. ## Packet Fragmentation {#fragmentation} From 5ded63593f4c331e0ded5f740538e76119f463ac Mon Sep 17 00:00:00 2001 From: Nicola Rustignoli Date: Thu, 3 Oct 2024 17:00:40 +0200 Subject: [PATCH 09/10] mtu wording --- draft-dekater-scion-dataplane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index 632d50c..f94ffab 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -1057,7 +1057,7 @@ Should the inter-AS link MTU be unpredictable (e.g. because the inter-AS link is ## Packet Fragmentation {#fragmentation} -The UDP/SCION layer MUST NOT fragments packets, not even at the source endpoint. Applications MUST comply with the MTU of the paths that they use. +The SCION network layer does not support packet fragmentation; not even at the source endpoint. Upper layer protocols and applications MUST comply with the MTU of the paths that they use. SCION is agnostic to datagram fragmentation by the underlay network layer, (e.g. used for intra-AS communication). Implementations SHOULD allow MTU discovery mechanisms such as {{RFC4821}} to be enabled in the underlay and avoid fragmentation. For inter-AS links, using a different configuration is the joint decision of the administrators of the two ASes involved. For intra-AS interfaces using a different configuration is the choice of that AS' administrator alone. From b8a30b8afe91dd4fc6343bac6fe462e9b6759b47 Mon Sep 17 00:00:00 2001 From: Nicola Rustignoli Date: Thu, 3 Oct 2024 17:03:28 +0200 Subject: [PATCH 10/10] remove mention of fragments in traffic class --- draft-dekater-scion-dataplane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-dekater-scion-dataplane.md b/draft-dekater-scion-dataplane.md index f94ffab..0a8c26a 100644 --- a/draft-dekater-scion-dataplane.md +++ b/draft-dekater-scion-dataplane.md @@ -399,7 +399,7 @@ The SCION common header has the following packet format: {: #figure-3 title="The SCION common header packet format"} - `Version`: The version of the SCION common header. Currently, only version "0" is supported. -- `TrafficClass` (`TraffCl` in the image above): The 8-bit long identifier of the packet's class or priority. The value of the traffic class bits in a received packet or fragment might differ from the value sent by the packet's source. The current use of the `TrafficClass` field for Differentiated Services and Explicit Congestion Notification is specified in {{RFC2474}} and {{RFC3168}}. +- `TrafficClass` (`TraffCl` in the image above): The 8-bit long identifier of the packet's class or priority. The value of the traffic class bits in a received packet might differ from the value sent by the packet's source. The current use of the `TrafficClass` field for Differentiated Services and Explicit Congestion Notification is specified in {{RFC2474}} and {{RFC3168}}. - `Flow Label`: This 20-bit field labels sequences of packets to be treated in the network as a single flow. Sources MUST set this field. This serves the same purpose as what {{RFC6437}} describes for IPv6 and is used in the same manner. Notably, a Flow Label of zero does not imply that packet reordering is acceptable. - `NextHdr`: Encodes the type of the first header after the SCION header. This can be either a SCION extension or a Layer 4 protocol such as TCP or UDP. Values of this field respect the Assigned SCION Protocol Numbers (see [](#protnum)). - `HdrLen`: Specifies the entire length of the SCION header in bytes, i.e. the sum of the lengths of the common header, the address header, and the path header. The SCION header is aligned to a multiple of 4 bytes. The SCION header length is computed as `HdrLen` * 4 bytes. The 8 bits of the `HdrLen` field limit the SCION header to a maximum of 255 * 4 = 1020 bytes.