rfc9188.original | rfc9188.txt | |||
---|---|---|---|---|
Network Working Group J. Zhu | ||||
Internet Draft Intel | ||||
Intended status: Experimental S. Kanugovi | ||||
Expires: May 24,2022 Nokia | ||||
November 24, 2021 | ||||
Generic Multi-Access (GMA) Encapsulation Protocol | Independent Submission J. Zhu | |||
draft-zhu-intarea-gma-14 | Request for Comments: 9188 Intel | |||
Category: Experimental S. Kanugovi | ||||
ISSN: 2070-1721 Nokia | ||||
February 2022 | ||||
Generic Multi-Access (GMA) Encapsulation Protocol | ||||
Abstract | Abstract | |||
A device can be simultaneously connected to multiple networks, | A device can be simultaneously connected to multiple networks, e.g., | |||
e.g., Wi-Fi, LTE, 5G, and DSL. It is desirable to seamlessly | Wi-Fi, LTE, 5G, and DSL. It is desirable to seamlessly combine the | |||
combine the connectivity over these networks below the transport | connectivity over these networks below the transport layer (L4) to | |||
layer (L4) to improve quality of experience for applications that | improve the quality of experience for applications that do not have | |||
do not have built in multi-path capabilities. Such optimization | built-in multi-path capabilities. Such optimization requires | |||
requires additional control information, e.g., a sequence number, | additional control information, e.g., a sequence number, in each | |||
in each packet. This document presents a new light weight and | packet. This document presents a new lightweight and flexible | |||
flexible encapsulation protocol for this need. The solution has | encapsulation protocol for this need. The solution has been | |||
been developed by the authors based on their experiences in | developed by the authors based on their experiences in multiple | |||
multiple standards bodies including the IETF and 3GPP, is not an | standards bodies including the IETF and 3GPP. However, this document | |||
Internet Standard and does not represent the consensus opinion of | is not an Internet Standard and does not represent the consensus | |||
the IETF. This document will enable other developers to build | opinion of the IETF. This document will enable other developers to | |||
interoperable implementations in order to experiment with the | build interoperable implementations in order to experiment with the | |||
protocol. | protocol. | |||
Status of this Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | ||||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six | This document is not an Internet Standards Track specification; it is | |||
months and may be updated, replaced, or obsoleted by other | published for examination, experimental implementation, and | |||
documents at any time. It is inappropriate to use Internet-Drafts | evaluation. | |||
as reference material or to cite them other than as "work in | ||||
progress." | ||||
The list of current Internet-Drafts can be accessed at | This document defines an Experimental Protocol for the Internet | |||
http://www.ietf.org/ietf/1id-abstracts.txt | community. This is a contribution to the RFC Series, independently | |||
of any other RFC stream. The RFC Editor has chosen to publish this | ||||
document at its discretion and makes no statement about its value for | ||||
implementation or deployment. Documents approved for publication by | ||||
the RFC Editor are not candidates for any level of Internet Standard; | ||||
see Section 2 of RFC 7841. | ||||
The list of Internet-Draft Shadow Directories can be accessed at | Information about the current status of this document, any errata, | |||
http://www.ietf.org/shadow.html | and how to provide feedback on it may be obtained at | |||
This Internet-Draft will expire on May 24, 2022. | https://www.rfc-editor.org/info/rfc9188. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 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 | |||
(http://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 | carefully, as they describe your rights and restrictions with respect | |||
respect to this document. Code Components extracted from this | to this document. | |||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction ................................................. 2 | 1. Introduction | |||
1.1. Scope of Experiment ....................................4 | 1.1. Scope of Experiment | |||
2. Conventions used in this document ............................ 5 | 2. Conventions Used in This Document | |||
3. Use Case ..................................................... 5 | 3. Use Case | |||
4. GMA Encapsulation Methods .................................... 7 | 4. GMA Encapsulation Methods | |||
4.1. Trailer-based IP Encapsulation .........................8 | 4.1. Trailer-Based IP Encapsulation | |||
4.2. Header-based IP Encapsulation .........................11 | 4.2. Header-Based IP Encapsulation | |||
4.3. (Header-based) non-IP Encapsulation ...................11 | 4.3. Header-Based Non-IP Encapsulation | |||
4.4. IP Protocol Identifier ................................12 | 4.4. IP Protocol Identifier | |||
5. Fragmentation ............................................... 12 | 5. Fragmentation | |||
6. Concatenation ............................................... 14 | 6. Concatenation | |||
7. Security Considerations ..................................... 15 | 7. Security Considerations | |||
8. IANA Considerations ......................................... 15 | 8. IANA Considerations | |||
9. References .................................................. 16 | 9. References | |||
9.1. Normative References ..................................16 | 9.1. Normative References | |||
9.2. Informative References ................................16 | 9.2. Informative References | |||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
A device can be simultaneously connected to multiple networks, | A device can be simultaneously connected to multiple networks, e.g., | |||
e.g., Wi-Fi, LTE, 5G, and DSL. It is desirable to seamlessly | Wi-Fi, LTE, 5G, and DSL. It is desirable to seamlessly combine the | |||
combine the connectivity over these networks below the transport | connectivity over these networks below the transport layer (L4) to | |||
layer (L4) to improve quality of experience for applications that | improve the quality of experience for applications that do not have | |||
do not have built in multi-path capabilities. | built-in multi-path capabilities. | |||
Figure 1 shows the Multi-Access Management Service (MAMS) user- | Figure 1 shows the Multi-Access Management Service (MAMS) user-plane | |||
plane protocol stack [MAMS], which has been used in today's multi- | protocol stack [MAMS], which has been used in today's multi-access | |||
access solutions [ATSSS] [LWIPEP] [GRE1] [GRE2]. It consists of | solutions [ATSSS] [LWIPEP] [GRE1] [GRE2]. It consists of two layers: | |||
two layers: convergence and adaptation. | convergence and adaptation. | |||
The convergence layer is responsible for multi-access operations, | The convergence layer is responsible for multi-access operations, | |||
including multi-link (path) aggregation, splitting/reordering, | including multi-link (path) aggregation, splitting/reordering, | |||
lossless switching/retransmission, fragmentation, concatenation, | lossless switching/retransmission, fragmentation, concatenation, etc. | |||
etc. It operates on top of the adaptation layer in the protocol | It operates on top of the adaptation layer in the protocol stack. | |||
stack. From the perspective of a transmitter, a User Payload | From the perspective of a transmitter, a User Payload (e.g., IP | |||
(e.g., IP packet) is processed by the convergence layer first, and | packet) is processed by the convergence layer first and then by the | |||
then by the adaptation layer before being transported over a | adaptation layer before being transported over a delivery connection; | |||
delivery connection; from the receiver's perspective, an IP packet | from the receiver's perspective, an IP packet received over a | |||
received over a delivery connection is processed by the adaptation | delivery connection is processed by the adaptation layer first and | |||
layer first, and then by the convergence layer. | then by the convergence layer. | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
| User Payload, e.g., IP Protocol Data Unit (PDU) | | | User Payload, e.g., IP Protocol Data Unit (PDU) | | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
+-----------------------------------------------------------+ | +-----------------------------------------------------------+ | |||
| +-----------------------------------------------------+ | | | +-----------------------------------------------------+ | | |||
| | Multi-Access (MX) Convergence Layer | | | | | Multi-Access (MX) Convergence Layer | | | |||
| +-----------------------------------------------------+ | | | +-----------------------------------------------------+ | | |||
| +-----------------------------------------------------+ | | | +-----------------------------------------------------+ | | |||
| | MX Adaptation | MX Adaptation | MX Adaptation | | | | | MX Adaptation | MX Adaptation | MX Adaptation | | | |||
| | Layer | Layer | Layer | | | | | Layer | Layer | Layer | | | |||
| +-----------------+-----------------+-----------------+ | | | +-----------------+-----------------+-----------------+ | | |||
| | Access #1 IP | Access #2 IP | Access #3 IP | | | | | Access #1 IP | Access #2 IP | Access #3 IP | | | |||
| +-----------------------------------------------------+ | | | +-----------------------------------------------------+ | | |||
| MAMS User-Plane Protocol Stack | | | MAMS User-Plane Protocol Stack | | |||
+-----------------------------------------------------------+ | +-----------------------------------------------------------+ | |||
Figure 1: MAMS User-Plane Protocol Stack [MAMS] | Figure 1: MAMS User-Plane Protocol Stack | |||
GRE (Generic Routing Encapsulation) can be used [LWIPEP] [GRE1] | GRE (Generic Routing Encapsulation) [LWIPEP] [GRE1] [GRE2] can be | |||
[GRE2] as the encapsulation protocol at the convergence layer to | used as the encapsulation protocol at the convergence layer to encode | |||
encode additional control information, e.g., Key, Sequence Number. | additional control information, e.g., key and sequence number. | |||
However, there are two main drawbacks with this approach: | However, there are two main drawbacks with this approach: | |||
o It is difficult to introduce new control fields because the | * It is difficult to introduce new control fields because the GRE | |||
GRE header formats are already defined, | header formats are already defined, and | |||
o IP-over-IP tunnelling (required for GRE) leads to higher | ||||
overhead especially for small packet. | ||||
For example, the overhead of IP-over-IP/GRE tunnelling with both | * IP-over-IP tunneling (required for GRE) leads to higher overhead | |||
Key and Sequence Number is 32 Bytes (20 Bytes IP header + 12 Bytes | especially for small packets. | |||
GRE header), which is 80% of a 40 Bytes TCP ACK packet. | ||||
This document presents a light-weight GMA (Generic Multi-Access) | For example, the overhead of IP-over-IP/GRE tunneling with both key | |||
encapsulation protocol for the convergence layer. It supports | and sequence Number is 32 bytes (20-byte IP header + 12-byte GRE | |||
three encapsulation methods: trailer-based IP encapsulation, | header), which is 80% of a 40-byte TCP ACK packet. | |||
header-based IP encapsulation, and non-IP encapsulation. | ||||
Particularly, the IP encapsulation methods avoid IP-over-IP | This document presents a lightweight Generic Multi-Access (GMA) | |||
tunneling overhead (20 Bytes), which is 50% of a 40 Bytes TCP ACK | encapsulation protocol for the convergence layer. It supports three | |||
packet. Moreover, it introduces new control fields to support | encapsulation methods: trailer-based IP encapsulation, header-based | |||
fragmentation and concatenation, which are not available in GRE- | IP encapsulation, and non-IP encapsulation. Particularly, the IP | |||
based solutions [LWIPEP] [GRE1] [GRE2]. | encapsulation methods avoid IP-over-IP tunneling overhead (20 bytes), | |||
which is 50% of a 40-byte TCP ACK packet. Moreover, it introduces | ||||
new control fields to support fragmentation and concatenation, which | ||||
are not available in GRE-based solutions [LWIPEP] [GRE1] [GRE2]. | ||||
The GMA protocol only operates between endpoints that have been | The GMA protocol only operates between endpoints that have been | |||
configured to use GMA. This configuration can be through any | configured to use GMA. This configuration can be through any control | |||
control messages and procedures, including, for example, Multi- | messages and procedures, including, for example, Multi-Access | |||
Access Management Services [MAMS]. Moreover, UDP or IPSec | Management Services [MAMS]. Moreover, UDP or IPsec tunneling can be | |||
tunneling can be used at the adaptation sublayer to protect GMA | used at the adaptation sublayer to protect GMA operation from | |||
operation from intermediate nodes. | intermediate nodes. | |||
The solution described in this document was been developed by the | The solution described in this document was developed by the authors | |||
authors based on their experiences in multiple standards bodies | based on their experiences in multiple standards bodies including the | |||
including the IETF and 3GPP. However, it is not an Internet | IETF and 3GPP. However, this document is not an Internet Standard | |||
Standard and does not represent the consensus opinion of the IETF. | and does not represent the consensus opinion of the IETF. This | |||
This document presents the protocol specification to enable | document presents the protocol specification to enable | |||
experimentation as described in Section 1.1 and to facilitate | experimentation as described in Section 1.1 and to facilitate other | |||
other interoperable implementations. | interoperable implementations. | |||
1.1. Scope of Experiment | 1.1. Scope of Experiment | |||
The protocol described in this document is an experiment. The | The protocol described in this document is an experiment. The | |||
objective of the experiment is to determine whether the protocol | objective of the experiment is to determine whether the protocol | |||
meets the requirements, can be safely used, and has support for | meets the requirements, can be safely used, and has support for | |||
deployment. | deployment. | |||
Section 4 describes three possible encapsulation methods that are | Section 4 describes three possible encapsulation methods that are | |||
enabled by this protocol. Part of this experiment is to assess | enabled by this protocol. Part of this experiment is to assess | |||
whether all three mechanisms are necessary, or whether, for | whether all three mechanisms are necessary or whether, for example, | |||
example, all implementations are able to support the main | all implementations are able to support the main "trailer-based" IP | |||
"trailer-based" IP encapsulation method. Similarly, the experiment | encapsulation method. Similarly, the experiment will investigate the | |||
will investigate the relative merits of the IP and non-IP | relative merits of the IP and non-IP encapsulation methods. | |||
encapsulation methods. | ||||
It is expected that this protocol experiment can be conducted on | It is expected that this protocol experiment can be conducted on the | |||
the Internet since the GMA packets are identified by an IP | Internet since the GMA packets are identified by an IP protocol | |||
protocol number and the protocol is intended for single hop | number and the protocol is intended for single-hop propagation; | |||
propagation: devices should not be forwarding packet and if they | devices should not be forwarding packets, and if they do, they will | |||
do they will not need to examine the payload, while destination | not need to examine the payload, while destination systems that do | |||
systems that do not support this protocol should not receive such | not support this protocol should not receive such packets and will | |||
packets and will handle them as unknown payloads according to | handle them as unknown payloads according to normal IP processing. | |||
normal IP processing. Thus, experimentation is conducted between | Thus, experimentation is conducted between consenting end systems | |||
consenting end systems that have been mutually configured to | that have been mutually configured to participate in the experiment | |||
participate in the experiment as described in Section 7. | as described in Section 7. | |||
Note that this experiment "re-uses" the IP protocol identifier 114 | Note that this experiment "reuses" the IP protocol identifier 114 as | |||
as described in Section 4.4. Part of this experiment is to assess | described in Section 4.4. Part of this experiment is to assess the | |||
the safety of doing this. The experiment should consider the | safety of doing this. The experiment should consider the following | |||
following safety mechanisms: | safety mechanisms: | |||
o GMA endpoints SHOULD detect non-GMA IP packets that also use | * GMA endpoints SHOULD detect non-GMA IP packets that also use 114 | |||
114 and log an error to report the situation (although such | and log an error to report the situation (although such error | |||
error logging MUST be subject to rate limits). | logging MUST be subject to rate limits). | |||
o GMA endpoints SHOULD stop using 114 and switch to non-IP | ||||
(UDP) based encapsulation (Sec 4.3, Figure 7) after detecting | ||||
any non-GMA usage of 114. | ||||
The experiment SHOULD use packet tracing tool, e.g., WireShark, | * GMA endpoints SHOULD stop using 114 and switch to non-IP | |||
TCPDUMP, to monitor both ingress and egress traffic at GMA | encapsulation, i.e., UDP encapsulation (Figure 7), after detecting | |||
endpoints and ensure the above safety mechanisms are implemented. | any non-GMA usage of 114. | |||
Path quality measurements (one-way-delay, loss, etc.) and | The experiment SHOULD use a packet tracing tool, e.g., WireShark or | |||
congestion detection are performed by receiver based on the GMA | TCPDUMP, to monitor both ingress and egress traffic at GMA endpoints | |||
control fields, e.g., sequence number, timestamp, etc. Receiver | and ensure the above safety mechanisms are implemented. | |||
will then dynamically control how to split or steer traffic over | ||||
multiple delivery connections accordingly. GMA control protocol | ||||
[GMAC] MAY be used for signaling between GMA endpoints. Another | ||||
objective of the experiment is to evaluate the usage of various | ||||
receiver-based algorithms [GCC] [MPIP] in multi-path traffic | ||||
management, and the impact on the e2e performance (throughput, | ||||
delay, etc.) of higher layer (transport) protocols, e.g., TCP, | ||||
QUIC, WebRTC, etc. | ||||
The authors will continually assess the progress of this | Path quality measurements (one-way delay, loss, etc.) and congestion | |||
experiment and encourage other implementers to contact them to | detection are performed by the receiver based on the GMA control | |||
report the status of their implementations and their experiences | fields, e.g., Sequence Number, Timestamp, etc. The receiver will | |||
with the protocol. | then dynamically control how to split or steer traffic over multiple | |||
delivery connections accordingly. The GMA control protocol [GMAC] | ||||
MAY be used for signaling between GMA endpoints. Another objective | ||||
of the experiment is to evaluate the usage of various receiver-based | ||||
algorithms [GCC] [MPIP] in multi-path traffic management and the | ||||
impact on the End-to-End (E2E) performance (throughput, delay, etc.) | ||||
of higher-layer (transport) protocols, e.g., TCP, QUIC, WebRTC, etc. | ||||
2. Conventions used in this document | The authors will continually assess the progress of this experiment | |||
and encourage other implementers to contact them to report the status | ||||
of their implementations and their experiences with the protocol. | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | 2. Conventions Used in This Document | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | ||||
"MAY", and "OPTIONAL" in this document are to be interpreted as | ||||
described in BCP 14 [RFC2119] [RFC8174] when, and only when, they | ||||
appear in all capitals, as shown here. | ||||
3. Use Case | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in | ||||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
As shown in Figure 2, a client device (e.g., Smartphone, Laptop, | 3. Use Case | |||
etc.) may connect to the Internet via both Wi-Fi and LTE | ||||
connections, one of which (e.g., LTE) may operate as the anchor | ||||
connection, and the other (e.g., Wi-Fi) may operate as the | ||||
delivery connection. The anchor connection provides the IP address | ||||
and connectivity for end-to-end Internet access, and the delivery | ||||
connection provides an additional path between client and Multi- | ||||
Access Gateway for multi-access optimizations. | ||||
Multi-Access Aggregation | As shown in Figure 2, a client device (e.g., smartphone, laptop, | |||
etc.) may connect to the Internet via both Wi-Fi and LTE connections, | ||||
one of which (e.g., LTE) may operate as the anchor connection, and | ||||
the other (e.g., Wi-Fi) may operate as the delivery connection. The | ||||
anchor connection provides the IP address and connectivity for end- | ||||
to-end Internet access, and the delivery connection provides an | ||||
additional path between the client and Multi-Access Gateway for | ||||
multi-access optimizations. | ||||
Multi-Access Aggregation | ||||
+---+ +---+ | +---+ +---+ | |||
| |A|--- LTE Connection -----|C| | | | |A|--- LTE Connection -----|C| | | |||
|U|-| |-|S| Internet | |U|-| |-|S| Internet | |||
| |B|--- Wi-Fi Connection ---|D| | | | |B|--- Wi-Fi Connection ---|D| | | |||
+---+ +---+ | +---+ +---+ | |||
Client Multi-Access Gateway | client Multi-Access Gateway | |||
A: The adaptation layer endpoint of the LTE connection | Figure 2: GMA-Based Multi-Access Aggregation | |||
resides in the client | ||||
B: The adaptation layer endpoint of the Wi-Fi connection | A: The adaptation-layer endpoint of the LTE connection resides in | |||
resides in the client | the client. | |||
C: The adaptation layer endpoint of the LTE connection | B: The adaptation-layer endpoint of the Wi-Fi connection resides in | |||
resides in the Multi-Access Gateway, aka N-MADP (Network | the client. | |||
Multi-Access Data Proxy) in [MAMS] | ||||
D: The adaptation layer endpoint of the Wi-Fi connection | C: The adaptation-layer endpoint of the LTE connection resides in | |||
resides in the Multi-Access Gateway | the Multi-Access Gateway, aka N-MADP (Network Multi-Access Data | |||
Proxy) in [MAMS]. | ||||
U: The convergence layer endpoint resides in the client | D: The adaptation-layer endpoint of the Wi-Fi connection resides in | |||
the Multi-Access Gateway. | ||||
S: The convergence layer endpoint resides in the Multi- | U: The convergence-layer endpoint resides in the client. | |||
Access Gateway | ||||
Figure 2: GMA-based Multi-Access Aggregation | S: The convergence-layer endpoint resides in the Multi-Access | |||
Gateway. | ||||
For example, per-packet aggregation allows a single IP flow to use | For example, per-packet aggregation allows a single IP flow to use | |||
the combined bandwidth of the two connections. In another example, | the combined bandwidth of the two connections. In another example, | |||
packets lost due to a temporarily link outage may be | packets lost due to a temporary link outage may be retransmitted. | |||
retransmitted. Moreover, packets may be duplicated over multiple | Moreover, packets may be duplicated over multiple connections to | |||
connections to achieve high reliability and low latency, where | achieve high reliability and low latency, where duplicated packets | |||
duplicated packets are eliminated by the receiving side. Such | are eliminated by the receiving side. Such multi-access optimization | |||
multi-access optimization requires additional control information, | requires additional control information, e.g., a sequence number, in | |||
e.g., a sequence number, in each packet, which can be supported by | each packet, which can be supported by the GMA encapsulation protocol | |||
the GMA encapsulation protocol described in this document. | described in this document. | |||
The GMA protocol described in this document is designed for | The GMA protocol described in this document is designed for multiple | |||
multiple connections, but it may also be used when there is only | connections, but it may also be used when there is only one | |||
one connection between two endpoints. For example, it may be used | connection between two endpoints. For example, it may be used for | |||
for loss detection and recovery. In another example, it may be | loss detection and recovery. In another example, it may be used to | |||
used to concatenate multiple small packets and reduce per packet | concatenate multiple small packets and reduce per-packet overhead. | |||
overhead. | ||||
4. GMA Encapsulation Methods | 4. GMA Encapsulation Methods | |||
The GMA encapsulation protocol supports the following three | The GMA encapsulation protocol supports the following three methods: | |||
methods: | ||||
o Trailer-based IP Encapsulation (4.1) | * Trailer-based IP Encapsulation (Section 4.1) | |||
o Header-based IP Encapsulation (4.2) | ||||
o (Header-based) non-IP Encapsulation (4.3) | ||||
Non-IP encapsulation MUST be used if the original IP packet is | * Header-based IP Encapsulation (Section 4.2) | |||
IPv6. | ||||
Trailer-based IP encapsulation MUST be used if it is supported by | * Header-based non-IP Encapsulation (Section 4.3) | |||
GMA endpoints and the original IP packet is IPv4. | ||||
Header-based encapsulation MUST be used if the trailer-based | Non-IP encapsulation MUST be used if the original IP packet is IPv6. | |||
method is not supported by either Client or Multi-Access Gateway. | ||||
In this case, if the adaptation layer, e.g., UDP tunnelling, | ||||
supports non-IP packet format, non-IP encapsulation MUST be used; | ||||
otherwise, header-based IP encapsulation MUST be used. | ||||
If non-IP encapsulation is configured, a GMA header MUST be | Trailer-based IP encapsulation MUST be used if it is supported by GMA | |||
present in every packet. In comparison, if IP encapsulation is | endpoints and the original IP packet is IPv4. | |||
configured, a GMA header or trailer may be added dynamically on | ||||
per-packet basis, and it indicates the presence of GMA header (or | ||||
trailer) to set the protocol type of the GMA PDU to "114" (see | ||||
Section 4.4). | ||||
The GMA endpoints MAY configure the GMA encapsulation method | Header-based encapsulation MUST be used if the trailer-based method | |||
through control signalling or pre-configuration. For example, the | is not supported by either the client or Multi-Access Gateway. In | |||
"MX UP Setup Configuration Request" message as specified in Multi- | this case, if the adaptation layer, e.g., UDP tunneling, supports | |||
Access Management Service [MAMS] includes "MX Convergence Method | non-IP packet format, non-IP encapsulation MUST be used; otherwise, | |||
Parameters", which provides the list of parameters to configure | header-based IP encapsulation MUST be used. | |||
the convergence layer, and can be extended to indicate the GMA | ||||
If non-IP encapsulation is configured, a GMA header MUST be present | ||||
in every packet. In comparison, if IP encapsulation is configured, a | ||||
GMA header or trailer may be added dynamically on a per-packet basis, | ||||
and it indicates the presence of a GMA header (or trailer) to set the | ||||
protocol type of the GMA PDU to "114" (see Section 4.4). | ||||
The GMA endpoints MAY configure the GMA encapsulation method through | ||||
control signaling or pre-configuration. For example, the "MX UP | ||||
Setup Configuration Request" message as specified in Multi-Access | ||||
Management Service [MAMS] includes "MX Convergence Method | ||||
Parameters", which provides the list of parameters to configure the | ||||
convergence layer, and can be extended to indicate the GMA | ||||
encapsulation method. | encapsulation method. | |||
GMA endpoint MUST discard a received packet and MAY log an error | GMA endpoint MUST discard a received packet and MAY log an error to | |||
to report the situation (although such error logging MUST be | report the situation (although such error logging MUST be subject to | |||
subject to rate limits) under any of the following conditions: | rate limits) under any of the following conditions: | |||
. the GMA version number in the GMA header (or trailer) is not | * The GMA version number in the GMA header (or trailer) is not | |||
understood or supported by the GMA endpoint | understood or supported by the GMA endpoint. | |||
. a Flag bit in the GMA header (or trailer) not understood or | ||||
supported by the GMA endpoint is set to "1" | ||||
4.1. Trailer-based IP Encapsulation | * A flag bit in the GMA header (or trailer) not understood or | |||
supported by the GMA endpoint is set to "1". | ||||
4.1. Trailer-Based IP Encapsulation | ||||
|<---------------------GMA PDU ----------------------->| | |<---------------------GMA PDU ----------------------->| | |||
+------------------------------------------------------+ | +------------------------------------------------------+ | |||
| IP hdr | IP payload | GMA Trailer | | | IP hdr | IP payload | GMA Trailer | | |||
+------------------------------------------------------+ | +------------------------------------------------------+ | |||
|<------- GMA SDU (user payload)-------->| | |<------- GMA SDU (user payload)-------->| | |||
Figure 3: GMA PDU Format with Trailer-based IP Encapsulation | Figure 3: GMA PDU Format with Trailer-based IP Encapsulation | |||
This method SHALL NOT be used if the original IP packet (GMA SDU) | This method SHALL NOT be used if the original IP packet (GMA service | |||
is IPv6. | data unit (GMA SDU)) is IPv6. | |||
Figure 3 shows the trailer-based IP encapsulation GMA PDU | Figure 3 shows the trailer-based IP encapsulation GMA protocol data | |||
(protocol data unit) format. A (GMA) PDU may carry one or multiple | unit (GMA PDU) format. A (GMA) PDU may carry one or multiple IP | |||
IP packets, aka (GMA) SDUs (service data unit), in the payload, or | packets, aka (GMA) SDUs, in the payload, or a fragment of the SDU. | |||
a fragment of the SDU. | ||||
The Protocol Type field in the IP header of the GMA PDU MUST be | The protocol type field in the IP header of the GMA PDU MUST be | |||
changed to 114 (Any 0-Hop Protocol) (see Section 4.4) to indicate | changed to 114 (Any 0-Hop Protocol) (see Section 4.4) to indicate the | |||
the presence of the GMA trailer. | presence of the GMA trailer. | |||
The following three IP header fields MUST be changed: | The following three IP header fields MUST be changed: | |||
o IP Length: add the length of "GMA Trailer" to the length of | IP Length: Add the length of "GMA Trailer" to the length of the | |||
the original IP packet | original IP packet. | |||
o Time To Live (TTL): set to "1" | ||||
o IP checksum: recalculate after changing "Protocol Type", "TTL" | ||||
and "IP Length" | ||||
The GMA (Generic Multi-Access) trailer MUST consist of two | Time To Live (TTL): Set to "1". | |||
mandatory fields (the last 3 bytes): Next Header and Flags, | ||||
defined as follows: | ||||
o Next Header (1 Byte): the IP protocol type of the (first) SDU | IP checksum: Recalculate after changing "protocol type", "TTL", and | |||
in a PDU, and it stores the value before it was overwritten to | "IP Length". | |||
114. | ||||
o Flags (2 Bytes): Bit 0 is the most significant bit (MSB), and | ||||
Bit 15 is the least significant bit (LSB) | ||||
+ Checksum Present (bit 0): If the Checksum Present bit is set | ||||
to 1, then the Checksum field is present | ||||
+ Concatenation Present (bit 1): If the Concatenation Present | ||||
bit is set to 1, then the PDU carries multiple SDUs, and the | ||||
First SDU Length field is present | ||||
+ Connection ID Present (bit 2): If the Connection ID Present | ||||
bit is set to 1, then the Connection ID field is present | ||||
+ Flow ID Present (bit 3): If the Flow ID Present bit is set | ||||
to 1, then the Flow ID field is present | ||||
+ Fragmentation Present (bit 4): If the Fragmentation Present | ||||
bit is set to 1, then the PDU carry a fragment of the SDU and | ||||
the Fragmentation Control field is present | ||||
+ Delivery SN Present (bit 5): If the Delivery SN (Sequence | ||||
Number) Present bit is set to 1, then the Delivery SN field is | ||||
present and contains the valid information | ||||
+ Flow SN Present (bit 6): If the Flow SN Present bit is set | ||||
to 1, then the Sequence Number field is present | ||||
+ Timestamp Present (bit 7): If the Timestamp Present bit is | ||||
set to 1, then the Timestamp field is present | ||||
+ TTL Present (bit 8): If the TTL Present bit is set to 1, | ||||
then the TTL field is present | ||||
+ Reserved (bit 9-12): set to "0" and ignored on receipt | ||||
+ Version (bit 13~15): GMA version number, set to 0 for the | ||||
GMA encapsulation protocol specified in this document. | ||||
The Flags field is at the end of the PDU, and the Next Header | The GMA (Generic Multi-Access) trailer MUST consist of two mandatory | |||
field is the second last. The Receiver SHOULD first decode the | fields (the last 3 bytes): Next Header and Flags. | |||
Flags field to determine the length of the GMA trailer, and then | ||||
decode each optional field accordingly. The GMA (Generic Multi- | ||||
Access) trailer MAY consist of the following optional fields: | ||||
o Checksum (1 Byte): to contain the (one's complement) checksum | This is defined as follows: | |||
sum of all the 8 bits in the trailer. For purposes of | ||||
computing the checksum, the value of the checksum field is | Next Header (1 byte): This is the IP protocol type of the (first) | |||
zero. This field is present only if the Checksum Present bit | SDU in a PDU; it stores the value before it was overwritten to | |||
is set to one. | 114. | |||
o First SDU Length (2 Bytes): the length of the first IP packet | ||||
in the PDU, only included if a PDU contains multiple IP | Flags (2 bytes): Bit 0 is the most significant bit (MSB), and bit 15 | |||
packets. This field is present only if the Concatenation | is the least significant bit (LSB). | |||
Present bit is set to one. | ||||
o Connection ID (1 Byte): an unsigned integer to identify the | Checksum Present (bit 0): If the Checksum Present bit is set to | |||
anchor and delivery connection of the GMA PDU. This field is | 1, then the Checksum field is present. | |||
present only if the Connection ID Present bit is set to one. | ||||
+ Anchor Connection ID (MSB 4 Bits): an unsigned integer to | Concatenation Present (bit 1): If the Concatenation Present bit | |||
identify the anchor connection | is set to 1, then the PDU carries multiple SDUs, and the First | |||
+ Delivery Connection ID (LSB 4 Bits): an unsigned integer to | SDU Length field is present. | |||
identify the delivery connection | ||||
o Flow ID (1 Byte): an unsigned integer to identify the IP flow | Connection ID Present (bit 2): If the Connection ID Present bit | |||
that a PDU belongs to, for example Data Radio Bearer (DRB) ID | is set to 1, then the Connection ID field is present. | |||
[LWIPEP] for a cellular (e.g., LTE) connection. This field is | ||||
present only if the Flow ID Present bit is set to one. | Flow ID Present (bit 3): If the Flow ID Present bit is set to 1, | |||
o Fragmentation Control (FC) (1 Byte): to provide necessary | then the Flow ID field is present. | |||
information for re-assembly, only needed if a PDU carries | ||||
fragments. This field is present only if the Fragmentation | Fragmentation Present (bit 4): If the Fragmentation Present bit | |||
Present bit is set to one. Please refer to section 5 for its | is set to 1, then the PDU carry a fragment of the SDU and the | |||
detailed format and usage. | Fragmentation Control field is present. | |||
o Delivery SN (1 Byte): an auto-incremented integer to indicate | ||||
the GMA PDU transmission order on a delivery connection. | Delivery SN Present (bit 5): If the Delivery SN (Sequence Number) | |||
Delivery SN is needed to measure packet loss of each delivery | Present bit is set to 1, then the Delivery SN field is present | |||
connection and therefore generated per delivery connection per | and contains the valid information. | |||
flow. This field is present only if the Delivery SN Present | ||||
bit is set to one. | Flow SN Present (bit 6): If the Flow SN Present bit is set to 1, | |||
o Flow SN (3 Bytes): an auto-incremented integer to indicate the | then the Sequence Number field is present. | |||
GMA SDU (IP packet) order of a flow. Flow SN is needed for | ||||
retransmission, reordering, and fragmentation. It SHALL be | Timestamp Present (bit 7): If the Timestamp Present bit is set to | |||
generated per flow. This field is present only if the Flow SN | 1, then the Timestamp field is present. | |||
Present bit is set to one. | ||||
o Timestamp (4 Bytes): to contain the current value of the | TTL Present (bit 8): If the TTL Present bit is set to 1, then the | |||
timestamp clock of the transmitter in the unit of 1 | TTL field is present. | |||
millisecond. This field is present only if the Timestamp | ||||
Present bit is set to one. | Reserved (bit 9-12): This is set to "0" and ignored on receipt. | |||
o TTL (1 Byte): to contain the TTL value of the original IP | ||||
header if the GMA SDU is IPv4, or the Hop-Limit value of the | Version (bit 13~15): This is the GMA version number; it is set to | |||
IP header if the GMA SDU is IPv6. This field is present only | 0 for the GMA encapsulation protocol specified in this | |||
if the TTL Present bit is set to one. | document. | |||
The Flags field is at the end of the PDU, and the Next Header field | ||||
is the second last. The receiver SHOULD first decode the Flags field | ||||
to determine the length of the GMA trailer and then decode each | ||||
optional field accordingly. The Generic Multi-Access (GMA) trailer | ||||
MAY consist of the following optional fields: | ||||
Checksum (1 byte): This contains the (one's complement) checksum sum | ||||
of all 8 bits in the trailer. For purposes of computing the | ||||
checksum, the value of the Checksum field is zero. This field is | ||||
present only if the Checksum Present bit is set to 1. | ||||
First SDU Length (2 bytes): This is the length of the first IP | ||||
packet in the PDU, only included if a PDU contains multiple IP | ||||
packets. This field is present only if the Concatenation Present | ||||
bit is set to 1. | ||||
Connection ID (1 byte): This contains an unsigned integer to | ||||
identify the anchor and delivery connection of the GMA PDU. This | ||||
field is present only if the Connection ID Present bit is set to | ||||
1. | ||||
Anchor Connection ID (MSB 4 bits): This contains an unsigned | ||||
integer to identify the anchor connection. | ||||
Delivery Connection ID (LSB 4 bits): This contains an unsigned | ||||
integer to identify the delivery connection. | ||||
Flow ID (1 byte): This contains an unsigned integer to identify the | ||||
IP flow that a PDU belongs to, for example Data Radio Bearer (DRB) | ||||
ID [LWIPEP] for a cellular (e.g., LTE) connection. This field is | ||||
present only if the Flow ID Present bit is set to 1. | ||||
Fragmentation Control (FC) (1 byte): This provides necessary | ||||
information for reassembly, only needed if a PDU carries | ||||
fragments. This field is present only if the Fragmentation | ||||
Present bit is set to 1. Please refer to Section 5 for its | ||||
detailed format and usage. | ||||
Delivery SN (1 byte): This contains an auto-incremented integer to | ||||
indicate the GMA PDU transmission order on a delivery connection. | ||||
Delivery SN is needed to measure packet loss of each delivery | ||||
connection and therefore generated per delivery connection per | ||||
flow. This field is present only if the Delivery SN Present bit | ||||
is set to 1. | ||||
Flow SN (3 bytes): This contains an auto-incremented integer to | ||||
indicate the GMA SDU (IP packet) order of a flow. Flow SN is | ||||
needed for retransmission, reordering, and fragmentation. It | ||||
SHALL be generated per flow. This field is present only if the | ||||
Flow SN Present bit is set to 1. | ||||
Timestamp (4 bytes): This contains the current value of the | ||||
timestamp clock of the transmitter in the unit of 1 millisecond. | ||||
This field is present only if the Timestamp Present bit is set to | ||||
1. | ||||
TTL (1 byte): This contains the TTL value of the original IP header | ||||
if the GMA SDU is IPv4, or the Hop-Limit value of the IP header if | ||||
the GMA SDU is IPv6. This field is present only if the TTL | ||||
Present bit is set to 1. | ||||
Figure 4 shows the GMA trailer format with all the fields present, | Figure 4 shows the GMA trailer format with all the fields present, | |||
and the order of the GMA control fields SHALL follow the bit order | and the order of the GMA control fields SHALL follow the bit order in | |||
in the Flags field. Note that the bits in the Flags field are | the Flags field. Note that the bits in the Flags field are ordered | |||
ordered with the first bit transmitted being bit 0 (MSB). All | with the first bit transmitted being bit 0 (MSB). All fields are | |||
fields are transmitted in regular network byte order and appear in | transmitted in regular network byte order and appear in reverse order | |||
reverse order to their corresponding flag bits. If a flag bit is | to their corresponding flag bits. If a flag bit is clear, the | |||
clear, the corresponding optional field is absent. | corresponding optional field is absent. | |||
For example, Bit 0 (the MSB) of the Flags field is the Checksum | For example, bit 0 (the MSB) of the Flags field is the Checksum | |||
Present bit, and the Checksum field is the last in the trailer | Present bit, and the Checksum field is the last in the trailer with | |||
except of the two mandatory fields. Bit 1 is the Concatenation | the exception of the two mandatory fields. Bit 1 is the | |||
present bit, and the FSL field is the second last. | Concatenation Present bit, and the FSL field is the second last. | |||
0 1 2 3 | 0 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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| TTL | Timestamp | | TTL | Timestamp | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flow SN | | | Flow SN | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Delivery SN | FC | Flow ID | Connection ID | | | Delivery SN | FC | Flow ID | Connection ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| First SDU Length (FSL) | Checksum | Next Header | | | First SDU Length (FSL) | Checksum | Next Header | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flags | | | Flags | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4: GMA Trailer Format with all Optional Fields Present | Figure 4: GMA Trailer Format with All Optional Fields Present | |||
4.2. Header-based IP Encapsulation | 4.2. Header-Based IP Encapsulation | |||
This method SHALL NOT be used if the original IP packet (GMA SDU) | This method SHALL NOT be used if the original IP packet (GMA SDU) is | |||
is IPv6. | IPv6. | |||
Figure 5 shows the header-based IP encapsulation format. Here, the | Figure 5 shows the header-based IP encapsulation format. Here, the | |||
GMA header is inserted right after the IP header of the GMA SDU, | GMA header is inserted right after the IP header of the GMA SDU, and | |||
and the IP header fields of the GMA PDU MUST be changed the same | the IP header fields of the GMA PDU MUST be changed the same way as | |||
way as in trailered-based IP encapsulation. | in trailer-based IP encapsulation. | |||
+-----------------------------------------------+ | +-----------------------------------------------+ | |||
|IP hdr | GMA Header | IP payload | | |IP hdr | GMA Header | IP payload | | |||
+-----------------------------------------------+ | +-----------------------------------------------+ | |||
Figure 5: GMA PDU Format with Header-based IP Encapsulation | ||||
Figure 6 shows the GMA header format. In comparison to GMA | Figure 5: GMA PDU Format with Header-Based IP Encapsulation | |||
Figure 6 shows the GMA header format. In comparison to the GMA | ||||
trailer, the only difference is that the Flags field is now in the | trailer, the only difference is that the Flags field is now in the | |||
front so that the Receiver can first decode the Flags field to | front so that the receiver can first decode the Flags field to | |||
determine the GMA header length. | determine the GMA header length. | |||
"TTL" field MUST be included and the "TTL" bit in the GMA header | The "TTL" field MUST be included and the "TTL" bit in the GMA header | |||
(or Trailer) MUST be set to 1 if (Trailer or Header based) IP | (or Trailer) MUST be set to 1 if (trailer- or header-based) IP | |||
Encapsulation is used. | encapsulation is used. | |||
+------------------------------------------------------+ | +------------------------------------------------------+ | |||
| Flags | other fields (TTL, Timestamp, Flow SN, etc.) | | | Flags | other fields (TTL, Timestamp, Flow SN, etc.) | | |||
+------------------------------------------------------+ | +------------------------------------------------------+ | |||
Figure 6: GMA Header Format | ||||
4.3. (Header-based) non-IP Encapsulation | Figure 6: GMA Header Format | |||
Figure 7 shows the header-based non-IP encapsulation format. Here, | 4.3. Header-Based Non-IP Encapsulation | |||
"UDP Tunnelling" is configured at the MX adaptation layer. The | ||||
ports for "UDP Tunnelling" at Client are chosen from the Dynamic | ||||
Port range, and the ports for "UDP Tunnelling" at Multi-Access | ||||
Gateway are configured and provided to Client through additional | ||||
control messages, e.g., [MAMS]. | ||||
"TTL", "FSL", and "Next Header" are no longer needed, and MUST not | Figure 7 shows the header-based non-IP encapsulation format. Here, | |||
be included. Moreover, the IP header fields of the GMA SDU remain | "UDP Tunneling" is configured at the MX adaptation layer. The ports | |||
for "UDP Tunneling" at the client are chosen from the Dynamic Port | ||||
range, and the ports for "UDP Tunneling" at the Multi-Access Gateway | ||||
are configured and provided to the client through additional control | ||||
messages, e.g., [MAMS]. | ||||
"TTL", "FSL", and "Next Header" are no longer needed and MUST not be | ||||
included. Moreover, the IP header fields of the GMA SDU remain | ||||
unchanged. | unchanged. | |||
+-------------------------------------------------------------+ | +-------------------------------------------------------------+ | |||
| IP hdr | UDP hdr | GMA Header | IP hdr | IP payload | | | IP hdr | UDP hdr | GMA Header | IP hdr | IP payload | | |||
+-------------------------------------------------------------+ | +-------------------------------------------------------------+ | |||
|<------- GMA SDU------------>| | |<------- GMA SDU------------>| | |||
|<------------------- GMA PDU------------>| | |<------------------- GMA PDU------------>| | |||
Figure 7: GMA PDU Format with Non-IP Encapsulation | Figure 7: GMA PDU Format with Non-IP Encapsulation | |||
4.4. IP Protocol Identifier | 4.4. IP Protocol Identifier | |||
As described in Section 4.1, IP encapsulated GMA PDUs are | As described in Section 4.1, IP-encapsulated GMA PDUs are indicated | |||
indicated using the IP Protocol Type 114. This is designated and | using the IP protocol type 114. This is designated and recorded by | |||
recorded by IANA [IANA] to indicate "any 0-Hop Protocol". No | IANA [IANA] to indicate "any 0-Hop Protocol". No reference is given | |||
reference is given in the IANA registry for the definition of this | in the IANA registry for the definition of this protocol type, and | |||
Protocol Type, and IANA has no record of why the assignment was | IANA has no record of why the assignment was made or how it is used, | |||
made or how it is used, although it was probably assigned before | although it was probably assigned before 1999 [IANA1999]. | |||
1999 [IANA1999]. | ||||
There is some risk associated with "re-using" Protocol Type 114 | There is some risk associated with "reusing" protocol type 114 | |||
because there may be implementations of other protocols also using | because there may be implementations of other protocols also using | |||
this Protocol Type. However, because the protocol described in | this protocol type. However, because the protocol described in this | |||
this document is used only between adjacent devices specifically | document is used only between adjacent devices specifically | |||
configured for this purpose, the use of Protocol Type 114 should | configured for this purpose, the use of protocol type 114 should be | |||
be safe. | safe. | |||
As described in Section 1.1, one of the purposes of the experiment | As described in Section 1.1, one of the purposes of the experiment | |||
described in this document is to verify the safety of using this | described in this document is to verify the safety of using this | |||
Protocol Type. Deployments should be aware of the risk of a clash | protocol type. Deployments should be aware of the risk of a clash | |||
with other uses of this Protocol Type. | with other uses of this protocol type. | |||
5. Fragmentation | 5. Fragmentation | |||
If the MTU size of the anchor connection (for GMA SDU) is | If the MTU size of the anchor connection (for GMA SDU) is configured | |||
configured such that the corresponding GMA PDU length adding GMA | such that the corresponding GMA PDU length adding the GMA header (or | |||
header (or trailer) and other overhead (UDP tunneling) MAY exceed | trailer) and other overhead (UDP tunneling) MAY exceed the MTU of a | |||
the MTU of a delivery connection, GMA endpoints MUST be configured | delivery connection, GMA endpoints MUST be configured to support | |||
to support fragmentation through additional control messages | fragmentation through additional control messages [MAMS]. | |||
[MAMS]. | ||||
The fragmentation procedure at the convergence sublayer is similar | The fragmentation procedure at the convergence sublayer is similar to | |||
to IP fragmentation [RFC791] in principle, but with the following | IP fragmentation [RFC0791] in principle, but with the following two | |||
two differences for less overhead: | differences for less overhead: | |||
o The fragment offset field is expressed in number of fragments | * The fragment offset field is expressed in number of fragments. | |||
o The maximum number of fragments per SDU is 2^7 (=128) | ||||
The Fragmentation Control (FC) field in the GMA trailer (or | * The maximum number of fragments per SDU is 2^7 (=128). | |||
header) contains the following bits: | ||||
o Bit #7: a More Fragment (MF) flag to indicate if the fragment | The Fragmentation Control (FC) field in the GMA trailer (or header) | |||
is the last one (0) or not (1) | contains the following bits: | |||
o Bit #0~#6: Fragment Offset (in units of fragments) to specify | ||||
the offset of a particular fragment relative to the beginning | Bit 7: a More Fragment (MF) flag to indicate if the fragment is the | |||
of the SDU | last one (0) or not (1) | |||
Bit 0-6: Fragment Offset (in units of fragments) to specify the | ||||
offset of a particular fragment relative to the beginning of the | ||||
SDU | ||||
A PDU carries a whole SDU without fragmentation if the FC field is | A PDU carries a whole SDU without fragmentation if the FC field is | |||
set to all "0"s or the FC field is not present in the trailer. | set to all "0"s or the FC field is not present in the trailer. | |||
Otherwise, the PDU contains a fragment of the SDU. | Otherwise, the PDU contains a fragment of the SDU. | |||
The Flow SN field in the trailer is used to distinguish the | The Flow SN field in the trailer is used to distinguish the fragments | |||
fragments of one SDU from those of another. The Fragment Offset | of one SDU from those of another. The Fragment Offset (FO) field | |||
(FO) field tells the receiver the position of a fragment in the | tells the receiver the position of a fragment in the original SDU. | |||
original SDU. The More Fragment (MF) flag indicates the last | The More Fragment (MF) flag indicates the last fragment. | |||
fragment. | ||||
To fragment a long SDU, the transmitter creates n PDUs and copies | To fragment a long SDU, the transmitter creates n PDUs and copies the | |||
the content of the IP header fields from the long PDU into the IP | content of the IP header fields from the long PDU into the IP header | |||
header of all the PDUs. The length field in the IP header of PDU | of all the PDUs. The length field in the IP header of the PDU SHOULD | |||
SHOULD be changed to the length of the PDU, and the protocol type | be changed to the length of the PDU, and the protocol type SHOULD be | |||
SHOULD be changed to 114. | changed to 114. | |||
The data of the long SDU is divided into n portions based on the | The data of the long SDU is divided into n portions based on the MTU | |||
MTU size of the delivery connection. The first portion of the data | size of the delivery connection. The first portion of the data is | |||
is placed in the first PDU. The MF flag is set to "1", and the FO | placed in the first PDU. The MF flag is set to "1", and the FO field | |||
field is set to "0". The i-th portion of the data is placed in the | is set to "0". The i-th portion of the data is placed in the i-th | |||
i-th PDU. The MF flag is set to "0" if it is the last fragment and | PDU. The MF flag is set to "0" if it is the last fragment and set to | |||
set to "1" otherwise. The FO field is set to i-1. | "1" otherwise. The FO field is set to i-1. | |||
To assemble the fragments of a SDU, the receiver combines PDUs | To assemble the fragments of an SDU, the receiver combines PDUs that | |||
that all have the same Flow SN. The combination is done by placing | all have the same Flow SN. The combination is done by placing the | |||
the data portion of each fragment in the relative order indicated | data portion of each fragment in the relative order indicated by the | |||
by the Fragment Offset in that fragment's GMA trailer (or header). | Fragment Offset in that fragment's GMA trailer (or header). The | |||
The first fragment will have the Fragment Offset set to "0", and | first fragment will have the Fragment Offset set to "0", and the last | |||
the last fragment will have the More-Fragments flag set to "0". | fragment will have the More Fragment flag set to "0". | |||
GMA fragmentation operates above the IP layer of individual access | GMA fragmentation operates above the IP layer of individual access | |||
connection (Wi-Fi, LTE) and between the two end points of | connection (Wi-Fi, LTE) and between the two endpoints of convergence | |||
convergence layer. The convergence layer end points (client, | layer. The convergence layer endpoints (client, Multi-access | |||
multi-access gateway) SHOULD obtain the MTU of individual | Gateway) SHOULD obtain the MTU of individual connection through | |||
connection through either manual configuration or implementing | either manual configuration or implementing Path MTU Discovery | |||
PMTUD as suggested in [RFC8900]. | (PMTUD) as suggested in [RFC8900]. | |||
6. Concatenation | 6. Concatenation | |||
The convergence sublayer MAY support concatenation if a delivery | The convergence sublayer MAY support concatenation if a delivery | |||
connection has a larger maximum transmission unit (MTU) than the | connection has a larger maximum transmission unit (MTU) than the | |||
original IP packet (SDU). Only the SDUs with the same client IP | original IP packet (SDU). Only the SDUs with the same client IP | |||
address, and the same Flow ID MAY be concatenated. | address and the same Flow ID MAY be concatenated. | |||
If the (trailer or header based) IP encapsulation method is used, | If the (trailer- or header-based) IP encapsulation method is used, | |||
the First SDU Length (FSL) field SHOULD be included in the GMA | the First SDU Length (FSL) field SHOULD be included in the GMA | |||
trailer (or header) to indicate the length of the first SDU. | trailer (or header) to indicate the length of the first SDU. | |||
Otherwise, the FSL field SHOULD not be included. | Otherwise, the FSL field SHOULD not be included. | |||
+-----------------------------------------------------------+ | +-----------------------------------------------------------+ | |||
|IP hdr| IP payload |IP hdr| IP payload | GMA Trailer | | |IP hdr| IP payload |IP hdr| IP payload | GMA Trailer | | |||
+-----------------------------------------------------------+ | +-----------------------------------------------------------+ | |||
Figure 8: Example of GMA PDU Format with Concatenation and | ||||
Trailer-based IP Encapsulation | ||||
To concatenate two or more SDUs, the transmitter creates one PDU | Figure 8: Example of GMA PDU Format with Concatenation and | |||
and copies the content of the IP header field from the first SDU | Trailer-Based IP Encapsulation | |||
into the IP header of the PDU. The data of the first SDU is placed | ||||
in the first portion of the data of the PDU. The whole second SDU | ||||
is then placed in the second portion of the data of the PDU | ||||
(Figure 8). The procedure continues till the PDU size reaches the | ||||
MTU of the delivery connection. If the FSL field is present, the | ||||
IP length field of the PDU SHOULD be updated to include all | ||||
concatenated SDUs and the trailer (or header), and the IP checksum | ||||
field SHOULD be recalculated if the packet is IPv4. | ||||
To disaggregate a PDU, if the (header or trailer based) IP | To concatenate two or more SDUs, the transmitter creates one PDU and | |||
encapsulation method is used, the receiver first obtains the | copies the content of the IP header field from the first SDU into the | |||
length of the first SDU from the FSL field and decodes the first | IP header of the PDU. The data of the first SDU is placed in the | |||
SDU. The receiver then obtains the length of the second SDU based | first portion of the data of the PDU. The whole second SDU is then | |||
on the length field in the second SDU IP header and decodes the | placed in the second portion of the data of the PDU (Figure 8). The | |||
second SDU. The procedure continues till no byte is left in the | procedure continues until the PDU size reaches the MTU of the | |||
PDU. If the non-IP encapsulation method (Figure 7) is used, the IP | delivery connection. If the FSL field is present, the IP Length | |||
header of the first SDU will not change during the encapsulation | field of the PDU SHOULD be updated to include all concatenated SDUs | |||
process, and the receiver SHOULD obtain the length of the first | and the trailer (or header), and the IP checksum field SHOULD be | |||
SDU directly from its IP header (Figure 9). | recalculated if the packet is IPv4. | |||
To disaggregate a PDU, if the (header- or trailer-based) IP | ||||
encapsulation method is used, the receiver first obtains the length | ||||
of the first SDU from the FSL field and decodes the first SDU. The | ||||
receiver then obtains the length of the second SDU based on the | ||||
length field in the second SDU IP header and decodes the second SDU. | ||||
The procedure continues until no byte is left in the PDU. If the | ||||
non-IP encapsulation method (Figure 7) is used, the IP header of the | ||||
first SDU will not change during the encapsulation process, and the | ||||
receiver SHOULD obtain the length of the first SDU directly from its | ||||
IP header (Figure 9). | ||||
|<-------1st GMA SDU------------ | |<-------1st GMA SDU------------ | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| IP hdr | UDP hdr | GMA Header | IP hdr | IP payload | | | IP hdr | UDP hdr | GMA Header | IP hdr | IP payload | | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| IP hdr | IP payload | | | IP hdr | IP payload | | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
-------->|<-------2nd GMA SDU---------------> | -------->|<-------2nd GMA SDU---------------> | |||
Figure 9: Example of GMA PDU Format with Concatenation and Header- | ||||
based Non-IP (UDP) Encapsulation | Figure 9: Example of GMA PDU Format with Concatenation and | |||
Header-Based Non-IP (UDP) Encapsulation | ||||
If a PDU contains multiple SDUs, the Flow SN field is for the last | If a PDU contains multiple SDUs, the Flow SN field is for the last | |||
SDU, and the Flow SN of other SDU carried by the same PDU can be | SDU, and the Flow SN of other SDUs carried by the same PDU can be | |||
obtained according to its order in the PDU. For example, if the SN | obtained according to its order in the PDU. For example, if the SN | |||
field is 6 and a PDU contains 3 SDUs (IP packets), the SN is 4, 5, | field is 6 and a PDU contains 3 SDUs (IP packets), the SN is 4, 5, | |||
and 6 for the first, second, and last SDU respectively. | and 6 for the first, second, and last SDU, respectively. | |||
GMA concatenation can be used for packing small packets of a | GMA concatenation can be used for packing small packets of a single | |||
single application, e.g., TCP ACKs, or from multiple applications. | application, e.g., TCP ACKs, or from multiple applications. Notice | |||
Notice that a single GMA flow may carry multiple application flows | that a single GMA flow may carry multiple application flows (TCP, | |||
(TCP, UDP, etc.). | UDP, etc.). | |||
GMA endpoint MUST NOT perform concatenation and fragmentation in a | GMA endpoints MUST NOT perform concatenation and fragmentation in a | |||
single PDU. If a GMA PDU carries a fragmented SDU, it MUST NOT | single PDU. If a GMA PDU carries a fragmented SDU, it MUST NOT carry | |||
carry any other (fragmented or whole) SDU. | any other (fragmented or whole) SDU. | |||
7. Security Considerations | 7. Security Considerations | |||
Security in a network using GMA should be relatively similar to | Security in a network using GMA should be relatively similar to | |||
security in a normal IP network. GMA is unaware of IP or higher | security in a normal IP network. GMA is unaware of IP- or higher- | |||
layer end-to-end security as it carries the IP packets as opaque | layer end-to-end security as it carries the IP packets as opaque | |||
payload. Deployers are encouraged to not consider that GMA adds | payload. Deployers are encouraged to not consider that GMA adds any | |||
any form of security and to continue to use IP or higher layer | form of security and to continue to use IP- or higher-layer security | |||
security as well as link-layer security. | as well as link-layer security. | |||
The GMA protocol at the convergence sublayer is a 0-hop protocol | The GMA protocol at the convergence sublayer is a 0-hop protocol and | |||
and relies on the security of the underlying network transport | relies on the security of the underlying network transport paths. | |||
paths. When this cannot be assumed, appropriate security protocols | When this cannot be assumed, appropriate security protocols (IPsec, | |||
(IPsec, DTLS, etc.) SHOULD be configured at the adaptation | DTLS, etc.) SHOULD be configured at the adaptation sublayer. On the | |||
sublayer. On the other hand, packet filtering requires either that | other hand, packet filtering requires either that a firewall looks | |||
a firewall looks inside the GMA packet or that the filtering is | inside the GMA packet or that the filtering is done on the GMA | |||
done on the GMA endpoints. In those environments in which this is | endpoints. In those environments in which this is considered to be a | |||
considered to be a security issue it may be desirable to terminate | security issue, it may be desirable to terminate the GMA operation at | |||
the GMA operation at the firewall. | the firewall. | |||
Local-only packet leak prevention (HL=0, TTL=1) SHOULD be on | Local-only packet leak prevention (HL=0, TTL=1) SHOULD be on | |||
preventing the leak of the local-only GMA PDUs outside the "local | preventing the leak of the local-only GMA PDUs outside the "local | |||
domain" to the Internet or to another domain which could use the | domain" to the Internet or to another domain that could use the same | |||
same IP protocol type, i.e. 114. | IP protocol type, i.e., 114. | |||
8. IANA Considerations | 8. IANA Considerations | |||
This document makes no requests of IANA | This document has no IANA actions. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [GRE1] Dommety, G., "Key and Sequence Number Extensions to GRE", | |||
Requirement Levels", BCP 14, RFC 2119, DOI | RFC 2890, DOI 10.17487/RFC2890, September 2000, | |||
10.17487/RFC2119, March 1997, <https://www.rfc- | <https://www.rfc-editor.org/info/rfc2890>. | |||
editor.org/info/rfc2119>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [GRE2] Leymann, N., Heidemann, C., Zhang, M., Sarikaya, B., and | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174 | M. Cullen, "Huawei's GRE Tunnel Bonding Protocol", | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | RFC 8157, DOI 10.17487/RFC8157, May 2017, | |||
<https://www.rfc-editor.org/info/rfc8157>. | ||||
[GRE1] Dommety, G., "Key and Sequence Number Extensions to GRE", | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
<https://www.rfc-editor.org/info/rfc2890> . | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | ||||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
9.2. Informative References | [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>. | ||||
[MAMS] S. Kanugovi, F. Baboescu, J. Zhu, and S. Seo "Multi-Access | 9.2. Informative References | |||
Management Services | ||||
(MAMS)https://tools.ietf.org/rfc/rfc8743.txt | ||||
[IANA] https://www.iana.org/assignments/protocol- | [ATSSS] 3GPP, "Study on access traffic steering, switch and | |||
numbers/protocol-numbers.xhtml | splitting support in the 5G System (5GS) architecture", | |||
Release 16, 3GPP TR 23.793, December 2018, | ||||
<https://portal.3gpp.org/desktopmodules/Specifications/ | ||||
SpecificationDetails.aspx?specificationId=3254>. | ||||
[LWIPEP] 3GPP TS 36.361, "Evolved Universal Terrestrial Radio | [GCC] Holmer, S., Lundin, H., Carlucci, G., De Cicco, L., and S. | |||
Access (E-UTRA); LTE-WLAN Radio Level Integration Using | Mascolo, "A Google Congestion Control Algorithm for Real- | |||
Ipsec Tunnel (LWIP) encapsulation; Protocol | Time Communication", Work in Progress, Internet-Draft, | |||
specification" | draft-ietf-rmcat-gcc-02, 8 July 2016, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-rmcat- | ||||
gcc-02>. | ||||
[RFC791] Internet Protocol, September 1981 | [GMAC] Zhu, J. and M. Zhang, "UDP-based Generic Multi-Access | |||
(GMA) Control Protocol", Work in Progress, Internet-Draft, | ||||
draft-zhu-intarea-gma-control-00, 13 October 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-zhu-intarea- | ||||
gma-control-00>. | ||||
[ATSSS] 3GPP TR 23.793, Study on access traffic steering, switch | [IANA] IANA, "Protocol Numbers", | |||
and splitting support in the 5G system architecture. | <https://www.iana.org/assignments/protocol-numbers>. | |||
[GRE2] RFC 8157, Huawei's GRE Tunnel Bonding Protocol, May 2017 | [IANA1999] IANA, Wayback Machine archive of "Protocol Numbers", | |||
February 1999, | ||||
<https://web.archive.org/web/19990203044112/ | ||||
http://www.isi.edu:80/in-notes/iana/assignments/protocol- | ||||
numbers>. | ||||
[RFC8900] Bonica, R., Baker, F., Huston, G., Hinden, R., Troan, | [LWIPEP] 3GPP, "Evolved Universal Terrestrial Radio Access | |||
O., and F. Gont, "IP Fragmentation Considered Fragile", | (E-UTRA); LTE-WLAN Radio Level Integration Using Ipsec | |||
BCP 230, RFC 8900, DOI 10.17487/RFC8900, September 2020, | Tunnel (LWIP) encapsulation; Protocol specification", | |||
<https://www.rfc-editor.org/info/rfc8900>. | Release 13, 3GPP TS 36.361, July 2020, | |||
<https://portal.3gpp.org/desktopmodules/Specifications/ | ||||
SpecificationDetails.aspx?specificationId=3037>. | ||||
[IANA1999]https://web.archive.org/web/19990203044112/http://www.is | [MAMS] Kanugovi, S., Baboescu, F., Zhu, J., and S. Seo, "Multiple | |||
i.edu:80/in-notes/iana/assignments/protocol-numbers | Access Management Services Multi-Access Management | |||
Services (MAMS)", RFC 8743, DOI 10.17487/RFC8743, March | ||||
2020, <https://www.rfc-editor.org/info/rfc8743>. | ||||
[GCC] S. Holmer, et al. A Google Congestion Control Algorithm for | [MPIP] Sun, L., Tian, G., Zhu, G., Liu, Y., Shi, H., and D. Dai, | |||
Real-Time Communication, | "Multipath IP Routing on End Devices: Motivation, Design, | |||
https://www.ietf.org/archive/id/draft-ietf-rmcat-gcc- | and Performance", 2017, | |||
02.txt | <https://eeweb.engineering.nyu.edu/faculty/yongliu/docs/ | |||
MPIP_Tech.pdf>. | ||||
[MPIP] L. Sun, et al. Multipath IP Routing on End Devices: | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
Motivation, Design, and | DOI 10.17487/RFC0791, September 1981, | |||
Performance, https://eeweb.engineering.nyu.edu/faculty/ | <https://www.rfc-editor.org/info/rfc791>. | |||
yongliu/docs/MPIP_Tech.pdf | ||||
[GMAC] J. Zhu M. Zhang, UDP-based GMA Control | [RFC8900] Bonica, R., Baker, F., Huston, G., Hinden, R., Troan, O., | |||
Protocol, https://www.ietf.org/archive/id/draft-zhu- | and F. Gont, "IP Fragmentation Considered Fragile", | |||
intarea-gma-control-00.txt | BCP 230, RFC 8900, DOI 10.17487/RFC8900, September 2020, | |||
<https://www.rfc-editor.org/info/rfc8900>. | ||||
Authors' Addresses | Authors' Addresses | |||
Jing Zhu | Jing Zhu | |||
Intel | Intel | |||
Email: jing.z.zhu@intel.com | Email: jing.z.zhu@intel.com | |||
Satish Kanugovi | Satish Kanugovi | |||
Nokia | Nokia | |||
Email: satish.k@nokia.com | Email: satish.k@nokia.com | |||
End of changes. 134 change blocks. | ||||
544 lines changed or deleted | 580 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/ |