summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8743.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8743.txt')
-rw-r--r--doc/rfc/rfc8743.txt6490
1 files changed, 6490 insertions, 0 deletions
diff --git a/doc/rfc/rfc8743.txt b/doc/rfc/rfc8743.txt
new file mode 100644
index 0000000..bbf1d40
--- /dev/null
+++ b/doc/rfc/rfc8743.txt
@@ -0,0 +1,6490 @@
+
+
+
+
+Independent Submission S. Kanugovi
+Request for Comments: 8743 Nokia Bell Labs
+Category: Informational F. Baboescu
+ISSN: 2070-1721 Broadcom
+ J. Zhu
+ Intel
+ S. Seo
+ Korea Telecom
+ March 2020
+
+
+ Multi-Access Management Services (MAMS)
+
+Abstract
+
+ In multiconnectivity scenarios, the clients can simultaneously
+ connect to multiple networks based on different access technologies
+ and network architectures like Wi-Fi, LTE, and DSL. Both the quality
+ of experience of the users and the overall network utilization and
+ efficiency may be improved through the smart selection and
+ combination of access and core network paths that can dynamically
+ adapt to changing network conditions.
+
+ This document presents a unified problem statement and introduces a
+ solution for managing multiconnectivity. The solution has been
+ developed by the authors based on their experiences in multiple
+ standards bodies, including the IETF and the 3GPP. However, this
+ document is not an Internet Standards Track specification, and it
+ does not represent the consensus opinion of the IETF.
+
+ This document describes requirements, solution principles, and the
+ architecture of the Multi-Access Management Services (MAMS)
+ framework. The MAMS framework aims to provide best performance while
+ being easy to implement in a wide variety of multiconnectivity
+ deployments. It specifies the protocol for (1) flexibly selecting
+ the best combination of access and core network paths for the uplink
+ and downlink, and (2) determining the user-plane treatment (e.g.,
+ tunneling, encryption) and traffic distribution over the selected
+ links, to ensure network efficiency and the best possible application
+ performance.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ 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.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8743.
+
+Copyright Notice
+
+ Copyright (c) 2020 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Terminology
+ 3. Problem Statement
+ 4. Requirements
+ 4.1. Access-Technology-Agnostic Interworking
+ 4.2. Support for Common Transport Deployments
+ 4.3. Independent Access Path Selection for Uplink and Downlink
+ 4.4. Core Selection Independent of Uplink and Downlink Access
+ 4.5. Adaptive Access Network Path Selection
+ 4.6. Multipath Support and Aggregation of Access Link Capacities
+ 4.7. Scalable Mechanism Based on User-Plane Interworking
+ 4.8. Separate Control-Plane and User-Plane Functions
+ 4.9. Lossless Path (Connection) Switching
+ 4.10. Concatenation and Fragmentation for Adaptation to MTU
+ Differences
+ 4.11. Configuring Network Middleboxes Based on Negotiated
+ Protocols
+ 4.12. Policy-Based Optimal Path Selection
+ 4.13. Access-Technology-Agnostic Control Signaling
+ 4.14. Service Discovery and Reachability
+ 5. Solution Principles
+ 6. MAMS Reference Architecture
+ 7. MAMS Protocol Architecture
+ 7.1. MAMS Control-Plane Protocol
+ 7.2. MAMS User-Plane Protocol
+ 8. MAMS Control-Plane Procedures
+ 8.1. Overview
+ 8.2. Common Fields in MAMS Control Messages
+ 8.3. Common Procedures for MAMS Control Messages
+ 8.3.1. Message Timeout
+ 8.3.2. Keep-Alive Procedure
+ 8.4. Discovery and Capability Exchange
+ 8.5. User-Plane Configuration
+ 8.6. MAMS Path Quality Estimation
+ 8.6.1. MX Control PDU Definition
+ 8.6.2. Keep-Alive Message
+ 8.6.3. Probe-REQ/ACK Message
+ 8.7. MAMS Traffic Steering
+ 8.8. MAMS Application MADP Association
+ 8.9. MAMS Network ID Indication
+ 8.10. MAMS Client Measurement Configuration and Reporting
+ 8.11. MAMS Session Termination Procedure
+ 8.12. MAMS Network Analytics Request Procedure
+ 9. Generic MAMS Signaling Flow
+ 10. Relationship to IETF Technologies
+ 11. Applying MAMS Control Procedures with MPTCP Proxy as User Plane
+ 12. Applying MAMS Control Procedures for Network-Assisted Traffic
+ Steering When There Is No Convergence Layer
+ 13. Coexistence of MX Adaptation and MX Convergence Layers
+ 14. Security Considerations
+ 14.1. MAMS Control-Plane Security
+ 14.2. MAMS User-Plane Security
+ 15. Implementation Considerations
+ 16. Applicability to Multi-Access Edge Computing
+ 17. Related Work in Other Industry and Standards Forums
+ 18. IANA Considerations
+ 19. References
+ 19.1. Normative References
+ 19.2. Informative References
+ Appendix A. MAMS Control-Plane Optimization over Secure
+ Connections
+ Appendix B. MAMS Application Interface
+ B.1. Overall Design
+ B.2. Notation
+ B.3. Error Indication
+ B.4. CCM APIs
+ B.4.1. GET Capabilities
+ B.4.2. Posting Application Requirements
+ B.4.3. Getting Predictive Link Parameters
+ Appendix C. MAMS Control-Plane Messages Described Using JSON
+ C.1. Protocol Specification: General Processing
+ C.1.1. Notation
+ C.1.2. Discovery Procedure
+ C.1.3. System Information Procedure
+ C.1.4. Capability Exchange Procedure
+ C.1.5. User-Plane Configuration Procedure
+ C.1.6. Reconfiguration Procedure
+ C.1.7. Path Estimation Procedure
+ C.1.8. Traffic-Steering Procedure
+ C.1.9. MAMS Application MADP Association
+ C.1.10. MX SSID Indication
+ C.1.11. Measurements
+ C.1.12. Keep-Alive
+ C.1.13. Session Termination Procedure
+ C.1.14. Network Analytics
+ C.2. Protocol Specification: Data Types
+ C.2.1. MXBase
+ C.2.2. Unique Session ID
+ C.2.3. NCM Connections
+ C.2.4. Connection Information
+ C.2.5. Features and Their Activation Status
+ C.2.6. Anchor Connections
+ C.2.7. Delivery Connections
+ C.2.8. Method Support
+ C.2.9. Convergence Methods
+ C.2.10. Adaptation Methods
+ C.2.11. Setup of Anchor Connections
+ C.2.12. Init Probe Results
+ C.2.13. Active Probe Results
+ C.2.14. Downlink Delivery
+ C.2.15. Uplink Delivery
+ C.2.16. Traffic Flow Template
+ C.2.17. Measurement Report Configuration
+ C.2.18. Measurement Report
+ C.3. Schemas in JSON
+ C.3.1. MX Base Schema
+ C.3.2. MX Definitions
+ C.3.3. MX Discover
+ C.3.4. MX System Info
+ C.3.5. MX Capability Request
+ C.3.6. MX Capability Response
+ C.3.7. MX Capability Acknowledge
+ C.3.8. MX Reconfiguration Request
+ C.3.9. MX Reconfiguration Response
+ C.3.10. MX UP Setup Configuration Request
+ C.3.11. MX UP Setup Confirmation
+ C.3.12. MX Traffic Steering Request
+ C.3.13. MX Traffic Steering Response
+ C.3.14. MX Application MADP Association Request
+ C.3.15. MX Application MADP Association Response
+ C.3.16. MX Path Estimation Request
+ C.3.17. MX Path Estimation Results
+ C.3.18. MX SSID Indication
+ C.3.19. MX Measurement Configuration
+ C.3.20. MX Measurement Report
+ C.3.21. MX Keep-Alive Request
+ C.3.22. MX Keep-Alive Response
+ C.3.23. MX Session Termination Request
+ C.3.24. MX Session Termination Response
+ C.3.25. MX Network Analytics Request
+ C.3.26. MX Network Analytics Response
+ C.4. Examples in JSON
+ C.4.1. MX Discover
+ C.4.2. MX System Info
+ C.4.3. MX Capability Request
+ C.4.4. MX Capability Response
+ C.4.5. MX Capability Acknowledge
+ C.4.6. MX Reconfiguration Request
+ C.4.7. MX Reconfiguration Response
+ C.4.8. MX UP Setup Configuration Request
+ C.4.9. MX UP Setup Confirmation
+ C.4.10. MX Traffic Steering Request
+ C.4.11. MX Traffic Steering Response
+ C.4.12. MX Application MADP Association Request
+ C.4.13. MX Application MADP Association Response
+ C.4.14. MX Path Estimation Request
+ C.4.15. MX Path Estimation Results
+ C.4.16. MX SSID Indication
+ C.4.17. MX Measurement Configuration
+ C.4.18. MX Measurement Report
+ C.4.19. MX Keep-Alive Request
+ C.4.20. MX Keep-Alive Response
+ C.4.21. MX Session Termination Request
+ C.4.22. MX Session Termination Response
+ C.4.23. MX Network Analytics Request
+ C.4.24. MX Network Analytics Response
+ Appendix D. Definition of APIs Provided by the CCM to the
+ Applications at the Client
+ Appendix E. Implementation Example Using Python for MAMS Client
+ and Server
+ E.1. Client-Side Implementation
+ E.2. Server-Side Implementation
+ Acknowledgments
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ Multi-Access Management Services (MAMS) is a programmable framework
+ that provides mechanisms for the flexible selection of network paths
+ in a multi-access (MX) communication environment, based on the
+ application's needs. The MAMS framework leverages network
+ intelligence and policies to dynamically adapt traffic distribution
+ across selected paths and user-plane treatments (e.g., encryption
+ needed for transport over Wi-Fi, or tunneling needed to overcome a
+ NAT between client and multipath proxy) to changing network/link
+ conditions. The network path selection and configuration messages
+ are carried as user-plane data between the functional elements in the
+ network and the client, and thus without any impact on the control-
+ plane signaling schemes of the underlying access networks. For
+ example, in a multi-access network with LTE and Wi-Fi technologies,
+ existing LTE and Wi-Fi signaling procedures will be used to set up
+ the LTE and Wi-Fi connections, respectively, and MAMS-specific
+ control-plane messages are carried as LTE or Wi-Fi user-plane data.
+ The MAMS framework defined in this document provides the capability
+ to make a smart selection of a flexible combination of access paths
+ and core network paths, as well as to choose the user-plane treatment
+ when the traffic is distributed across the selected paths. Thus, it
+ is a broad programmable framework that provides functions beyond the
+ simple sharing of network policies such as those provided by the
+ Access Network Discovery and Selection Function (ANDSF) [ANDSF],
+ which offers policies and rules for assisting 3GPP clients to
+ discover and select available access networks. Further, it allows
+ the choice and configuration of user-plane treatment for the traffic
+ over the paths, depending on the application's needs.
+
+ The MAMS framework mechanisms are not dependent on any specific
+ access network types or user-plane protocols (e.g., TCP, UDP, Generic
+ Routing Encapsulation (GRE) [RFC2784] [RFC2890], Multipath TCP
+ (MPTCP) [RFC6824]). The MAMS framework coexists and complements the
+ existing protocols by providing a way to negotiate and configure
+ those protocols to match their use to a given multi-access scenario
+ based on client and network capabilities, and the specific needs of
+ each access network path. Further, the MAMS framework allows load
+ balancing of the traffic flows across the selected access network
+ paths, and the exchange of network state information to be used for
+ network intelligence to optimize the performance of such protocols.
+
+ This document presents the requirements, solution principles,
+ functional architecture, and protocols for realizing the MAMS
+ framework. An important goal for the MAMS framework is to ensure
+ that it requires either minimum dependency or (better) no dependency
+ on the actual access technologies of the participating links, beyond
+ the fact that MAMS functional elements form an IP overlay across the
+ multiple paths. This allows the scheme to be "future proof" by
+ allowing independent technology evolution of the existing access and
+ core networks as well as seamless integration of new access
+ technologies.
+
+ The solution described in this document has been developed by the
+ authors, based on their experiences in multiple standards bodies,
+ including the IETF and the 3GPP. However, this document is not an
+ Internet Standards Track specification, and it does not represent the
+ consensus opinion of the IETF.
+
+2. Terminology
+
+ 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.
+
+ Client: An end-user device that supports connections with multiple
+ access nodes, possibly over different access technologies. Also
+ called a user device or user equipment (UE).
+
+ Multiconnectivity Client: A client with multiple network
+ connections.
+
+ Access Network: The segment in the network that delivers user data
+ packets to the client via an access link such as a Wi-Fi airlink,
+ an LTE airlink, or DSL.
+
+ Core: The functional element that anchors the client IP address used
+ for communication with applications via the network.
+
+ Network Connection Manager (NCM): A functional entity in the network
+ that handles MAMS control messages from the client and configures
+ the distribution of data packets over the available access and
+ core network paths, and manages the user-plane treatment (e.g.,
+ tunneling, encryption) of the traffic flows.
+
+ Client Connection Manager (CCM): A functional entity in the client
+ that exchanges MAMS signaling messages with the NCM, and which
+ configures the network paths at the client for the transport of
+ user data.
+
+ Network Multi-Access Data Proxy (N-MADP): A functional entity in the
+ network that handles the forwarding of user data traffic across
+ multiple network paths. The N-MADP is responsible for MAMS-
+ related user-plane functionalities in the network.
+
+ Client Multi-Access Data Proxy (C-MADP): A functional entity in the
+ client that handles the forwarding of user data traffic across
+ multiple network paths. The C-MADP is responsible for MAMS-
+ related user-plane functionalities in the client.
+
+ Anchor Connection: Refers to the network path from the N-MADP to the
+ user-plane gateway (IP anchor) that has assigned an IP address to
+ the client.
+
+ Delivery Connection: Refers to the network path from the N-MADP to
+ the client.
+
+ Uplink (also referred to as "UL" in this document): Refers to the
+ direction of a connection from a client toward the network.
+
+ Downlink (also referred to as "DL" in this document): Refers to the
+ direction of a connection from the network toward a client.
+
+3. Problem Statement
+
+ Typically, a client has access to multiple communication networks
+ based on different technologies for accessing application services,
+ for example, LTE, Wi-Fi, DSL, or MulteFire. Different technologies
+ exhibit benefits and limitations in different scenarios. For
+ example, Wi-Fi provides high throughput for end users when their Wi-
+ Fi coverage is good, but the throughput degrades significantly as a
+ given user moves closer to the edge of its Wi-Fi coverage area
+ (typically in the range of a few tens of meters) or if the user
+ population is large (due to a contention-based Wi-Fi access scheme).
+ In LTE networks, the capacity is often constrained by the limited
+ availability of licensed spectrum. However, the quality of the
+ service is predictable even in multi-user scenarios, due to
+ controlled scheduling and licensed-spectrum usage.
+
+ Additionally, the use of a particular access network path is often
+ coupled with the use of its associated core network and the services
+ that are offered by that network. For example, in an enterprise that
+ has deployed both Wi-Fi and LTE networks, the enterprise services,
+ such as printers and corporate audio/video conferencing, are
+ accessible only via Wi-Fi access connected to the enterprise-hosted
+ (Wi-Fi) core, whereas the LTE access can be used to get operator
+ services, including access to the public Internet.
+
+ Thus, application performance in different scenarios becomes
+ dependent on the choice of access networks (e.g., Wi-Fi, LTE) and the
+ network and transport protocols used (e.g., VPN, MPTCP, GRE).
+ Therefore, to achieve the best possible application performance in a
+ wide range of scenarios, a framework is needed that allows the
+ selection and flexible combination of access and core network paths
+ as well as the protocols used for uplink and downlink data delivery.
+
+ For example, in uncongested scenarios and when the user's Wi-Fi
+ coverage is good, to ensure best performance for enterprise
+ applications at all times, it would be beneficial to use Wi-Fi access
+ for both the uplink and downlink for connecting to enterprise
+ applications. However, in congested scenarios or when the user is
+ getting close to the edge of its Wi-Fi coverage area, the use of Wi-
+ Fi in the uplink by multiple users can lead to degraded capacity and
+ increased delays due to contention. In this case, it would be
+ beneficial to at least use the LTE access for increased uplink
+ coverage, while Wi-Fi may still continue to be used for the downlink.
+
+4. Requirements
+
+ The requirements set out in this section define the behavior of the
+ MAMS mechanism and the related functional elements.
+
+4.1. Access-Technology-Agnostic Interworking
+
+ The access nodes MAY use different technology types (LTE, Wi-Fi,
+ etc.). The framework, however, MUST be agnostic about the type of
+ underlying technology used by the access network.
+
+4.2. Support for Common Transport Deployments
+
+ The network path selection and user data distribution MUST work
+ transparently across various transport deployments that include end-
+ to-end IPsec, VPNs, and middleboxes like NATs and proxies.
+
+4.3. Independent Access Path Selection for Uplink and Downlink
+
+ A client SHOULD be able to transmit on the uplink and receive on the
+ downlink, using one or more access networks. The selections of the
+ access paths for the uplink and downlink SHOULD happen independently.
+
+4.4. Core Selection Independent of Uplink and Downlink Access
+
+ A client SHOULD flexibly select the core independently of the access
+ paths used to reach the core, depending on the application's needs,
+ local policies, and the result of MAMS control-plane negotiation.
+
+4.5. Adaptive Access Network Path Selection
+
+ The framework MUST have the ability to determine the quality of each
+ of the network paths, e.g., access link delay and capacity. This
+ information regarding network path quality needs to be considered in
+ the logic for the selection of the combination of network paths to be
+ used for transporting user data. The path selection algorithm can
+ use the information regarding network path quality, in addition to
+ other considerations like network policies, for optimizing network
+ usage and enhancing the Quality of Experience (QoE) delivered to the
+ user.
+
+4.6. Multipath Support and Aggregation of Access Link Capacities
+
+ The framework MUST support the distribution and aggregation of user
+ data across multiple network paths at the IP layer. The client
+ SHOULD be able to leverage the combined capacity of the multiple
+ network connections by enabling the simultaneous transport of user
+ data over multiple network paths. If required, packet reordering
+ needs to be done at the receiver. The framework MUST allow the
+ flexibility to choose the flow-steering and aggregation protocols
+ based on capabilities supported by the client and the network user-
+ plane entities. The multiconnection aggregation solution MUST
+ support existing transport and network-layer protocols like TCP, UDP,
+ and GRE. The framework MUST allow the use and configuration of
+ existing aggregation protocols such as MPTCP and SCTP [RFC4960].
+
+4.7. Scalable Mechanism Based on User-Plane Interworking
+
+ The framework MUST leverage commonly available transport, routing,
+ and tunneling capabilities to provide user-plane interworking
+ functionality. The addition of functional elements in the user-plane
+ path between the client and the network MUST NOT impact the access-
+ technology-specific procedures. This makes the solution easy to
+ deploy and scale when different networks are added and removed.
+
+4.8. Separate Control-Plane and User-Plane Functions
+
+ The client MUST use the control-plane protocol to negotiate the
+ following with the network: (1) the choice of access and core network
+ paths for both the uplink and downlink, and (2) the user-plane
+ protocol treatment. The control plane MUST configure the actual
+ user-plane data distribution function per this negotiation. A common
+ control protocol SHOULD allow the creation of multiple user-plane
+ function instances with potentially different user-plane (e.g.,
+ tunneling) protocol types. This enables maintaining a clear
+ separation between the control-plane and user-plane functions,
+ allowing the framework to be scalable and extensible, e.g., using
+ architectures and implementations based on Software-Defined
+ Networking (SDN).
+
+4.9. Lossless Path (Connection) Switching
+
+ When switching data traffic from one path (connection) to another,
+ packets may be lost or delivered out of order; this will have
+ negative impact on the performance of higher-layer protocols, e.g.,
+ TCP. The framework SHOULD provide the necessary mechanisms to ensure
+ in-order delivery at the receiver, e.g., during path switching. The
+ framework MUST NOT cause any packet loss beyond losses that access
+ network mobility functions may cause.
+
+4.10. Concatenation and Fragmentation for Adaptation to MTU Differences
+
+ Different network paths may have different security and middlebox
+ (e.g., NAT) configurations. These configurations will lead to the
+ use of different tunneling protocols for the transport of data
+ between the network user-plane function and the client. As a result,
+ different effective payload sizes per network path are possible
+ (e.g., due to variable encapsulation header overheads). Hence, the
+ MAMS framework SHOULD support the fragmentation of a single payload
+ across MTU-sized IP packets to avoid IP packet fragmentation when
+ aggregating packets from different paths. Further, the concatenation
+ of multiple IP packets into a single IP packet to improve efficiency
+ in packing the MTU size SHOULD also be supported.
+
+4.11. Configuring Network Middleboxes Based on Negotiated Protocols
+
+ The framework SHOULD enable the identification of optimal settings,
+ like radio link dormancy timers, binding expiry times, and supported
+ MTUs, based on parameters negotiated between the client and the
+ network, that may be used to configure middleboxes for efficient
+ operation of user-plane protocols, e.g., configuring a NAT with a
+ longer binding expiry time when UDP versus TCP is used.
+
+4.12. Policy-Based Optimal Path Selection
+
+ The framework MUST support both the implementation of policies at the
+ client and guidance from the network for network path selection that
+ will address different application requirements.
+
+4.13. Access-Technology-Agnostic Control Signaling
+
+ The control-plane signaling MUST NOT be dependent on the underlying
+ access technology procedures, i.e., it is carried transparently, like
+ application data, on the user plane. The MAMS framework SHOULD
+ support the delivery of control-plane signaling over existing
+ Internet protocols, e.g., TCP or UDP.
+
+4.14. Service Discovery and Reachability
+
+ There can be multiple instances of the control-plane and user-plane
+ functional elements of the framework, either collocated or hosted on
+ separate network elements and reachable via any of the available
+ user-plane paths. The client MUST have the flexibility to choose the
+ appropriate control-plane instance in the network and use the
+ control-plane signaling to choose the desired user-plane functional
+ element instances. The client's choice can be based on
+ considerations such as, but not limited to, the quality of the link
+ through which the network function is reachable, client preferences,
+ preconfiguration, etc.
+
+5. Solution Principles
+
+ This document describes the Multi-Access Management Services (MAMS)
+ framework for dynamic selection of a flexible combination of access
+ and core network paths for the uplink and downlink, as well as the
+ user-plane treatment for the traffic spread across the selected
+ links. The user-plane paths, and access and core network
+ connections, can be selected independently for the uplink and
+ downlink. For example, the network paths chosen for the uplink do
+ not apply any constraints on the choice of paths for the downlink.
+ The uplink and downlink network paths can be chosen based on the
+ application needs and on the characteristics and available resources
+ on different network connections. For example, a Wi-Fi connection
+ can be chosen for the downlink for transporting high-bandwidth data
+ from the network to the client, whereas an LTE connection can be
+ chosen to carry the low-bandwidth feedback to the application server.
+
+ Also, depending on the characteristics of the access network link,
+ different processing would be needed on the user-plane packets on
+ different network paths. Encryption would be needed on a Wi-Fi link
+ to secure user-plane packets, but not on an LTE link. Tunneling
+ would be needed to ensure client and network end-point reachability
+ over NATs. Such differentiated user-plane treatment can be
+ accomplished by configuration of user plane-protocols (e.g., IPsec)
+ specific to each link.
+
+ The MAMS framework consists of clearly separated control- and user-
+ plane functions in the network and the client. The control-plane
+ protocol allows the configuration of the user-plane protocols and
+ desired network paths for the transport of application traffic. The
+ control-plane messages are carried as user-plane data over any of the
+ available network paths between the peer control-plane functional
+ elements in the client and the network. Multiple user-plane paths
+ are dynamically distributed across multiple access networks and
+ aggregated in the network (by the N-MADP). The access network's
+ diversity is not exposed to the application servers, but is kept
+ within the scope of the elements defined in this framework. This
+ reduces the burden placed on application servers that would otherwise
+ have to react to access link changes caused by mobility events or
+ changing link characteristics.
+
+ The selection of paths and user-plane treatment of the traffic is
+ based on (1) the negotiation of client and network capabilities, and
+ (2) link probing (i.e., checking the quality of links between the
+ user-plane functional elements at the client and the network). This
+ framework enables leveraging network intelligence to set up and
+ dynamically configure the best access network path combination based
+ on client and network capabilities, an application's needs, and
+ knowledge of the network state.
+
+6. MAMS Reference Architecture
+
+ Figure 1 illustrates the MAMS architecture for the scenario where a
+ client is served by multiple (n) networks. It also introduces the
+ following functional elements:
+
+ * The NCM and the CCM in the control plane.
+
+ * The N-MADP and the C-MADP in the user plane.
+
+ +--------------------------------------------------------+
+ | +----------------+ +----------------+ |
+ | | | | | |
+ | |Core (IP anchor)| ..... |Core (IP anchor)| |
+ | |Network 1 | |Network "n" | |
+ | | | | | |
+ | +----------------+ +----------------+ |
+ | \ / |
+ | Anchor \ ...... Anchor |
+ | Connection 1 Connection "n" |
+ | \ / |
+ | +---------------+\+---+/+------+ |
+ | | +-----+ +----------+ | |
+ | +--------------| NCM | | N-MADP | | |
+ | | | +-----+ +----------+ | |
+ | | +------------------------------+ |
+ | | / \ |
+ | |Control-Plane Delivery ...... Delivery |
+ | |Path (over any Connection 1 Connection "n" |
+ | |access user plane) / \ |
+ | | / \ |
+ | | +------------------+ +---------------+ |
+ | | | Access | ...... | Access | |
+ | | | Network 1 | | Network "n" | |
+ | | +------------------+ +---------------+ |
+ +-----------------------------\----------------/---------+
+ | \ /
+ | +----------\------------/-+
+ | | +---+ \ +------+ / |
+ +--------------------+CCM| \|C-MADP|/ |
+ | +---+ +------+ |
+ | Client |
+ +-------------------------+
+
+ Figure 1: MAMS Reference Architecture
+
+ The NCM is the functional element in the network that handles the
+ MAMS control-plane procedures. It configures the network (N-MADP)
+ and client (C-MADP) user-plane functions, such as negotiating with
+ the client for the use of available access network paths, protocols,
+ and rules for processing the user-plane traffic, as well as link-
+ monitoring procedures. The control-plane messages between the NCM
+ and the CCM are transported as an overlay on the user plane, without
+ any impact on the underlying access networks.
+
+ The CCM is the peer functional element in the client for handling
+ MAMS control-plane procedures. It manages multiple network
+ connections at the client. The CCM exchanges MAMS signaling messages
+ with the NCM to support such functions as the configuration of the UL
+ and DL user network path for transporting user data packets and the
+ adaptive selection of network path by the NCM by reporting on the
+ results of link probing. In the downlink, for user data received by
+ the client, it configures the C-MADP such that application data
+ packets can be received over any access link so that the packets will
+ reach the appropriate application on the client. In the uplink, for
+ the data transmitted by the client, it configures the C-MADP to
+ determine the best access links to be used for uplink data based on a
+ combination of local and network policies delivered by the NCM.
+
+ The N-MADP is the functional element in the network that handles the
+ forwarding of user data traffic across multiple network paths, as
+ well as other user-plane functionalities (e.g., encapsulation,
+ fragmentation, concatenation, reordering, retransmission). The
+ N-MADP is the distribution node that routes (1) the uplink user-plane
+ traffic to the appropriate anchor connection toward the core network,
+ and (2) the downlink user traffic to the client over the appropriate
+ delivery connections. In the downlink, the NCM configures the use of
+ delivery connections and user-plane protocols at the N-MADP for
+ transporting user data traffic. The N-MADP SHOULD implement ECMP
+ support for the downlink traffic. Alternatively, it MAY be connected
+ to a router with ECMP functionality. The load-balancing algorithm at
+ the N-MADP is configured by the NCM, based on static and/or dynamic
+ network policies like assigning access and core paths for a specific
+ user data traffic type, user-volume-based percentage distribution,
+ and link availability and feedback information from the exchange of
+ MAMS signaling messages with the CCM at the client. The N-MADP can
+ be configured with appropriate user-plane protocols to support both
+ per-flow and per-packet traffic distribution across the delivery
+ connections. In the uplink, the N-MADP selects the appropriate
+ anchor connection over which to forward the user data traffic
+ received from the client (via the delivery connections). The
+ forwarding rules in the uplink at the N-MADP are configured by the
+ NCM based on application requirements, e.g., enterprise-hosted
+ application flows via a Wi-Fi anchor or mobile-operator-hosted
+ applications via the cellular core.
+
+ The C-MADP is the functional element in the client that handles the
+ MAMS user-plane data procedures. The C-MADP is configured by the
+ CCM, based on the signaling exchange with the NCM and local policies
+ at the client. The CCM configures the selection of delivery
+ connections and the user-plane protocols to be used for uplink user
+ data traffic based on the signaling messages exchanged with the NCM.
+ The C-MADP entity handles the forwarding of user-plane data across
+ multiple delivery connections and associated user-plane functions
+ (e.g., encapsulation, fragmentation, concatenation, reordering,
+ retransmissions).
+
+ The NCM and N-MADP can be either collocated or instantiated on
+ different network nodes. The NCM can set up multiple N-MADP
+ instances in the network. The NCM controls the selection of the
+ N-MADP instance by the client and the rules for the distribution of
+ user traffic across the N-MADP instances. This is beneficial in
+ multiple deployment scenarios, like the following examples:
+
+ * Different N-MADP instances to handle different sets of clients for
+ load balancing across clients.
+
+ * Network topologies where the N-MADP is hosted at the user-plane
+ node at the access edge or in the core network, while the NCM is
+ hosted at the access edge node.
+
+ * Access network technology architecture with an N-MADP instance at
+ the core network node to manage traffic distribution across LTE
+ and DSL networks, and an N-MADP instance at an access network node
+ to manage traffic distribution across LTE and Wi-Fi networks.
+
+ * A single client can be configured to use multiple N-MADP
+ instances. This is beneficial in addressing different application
+ requirements. For example, separate N-MADP instances to handle
+ traffic that is based on TCP and UDP transport.
+
+ Thus, the MAMS architecture flexibly addresses multiple network
+ deployments.
+
+7. MAMS Protocol Architecture
+
+ This section describes the protocol structure for the MAMS user-plane
+ and control-plane functional elements.
+
+7.1. MAMS Control-Plane Protocol
+
+ Figure 2 shows the default MAMS control-plane protocol stack.
+ WebSocket [RFC6455] is used for transporting management and control
+ messages between the NCM and the CCM.
+
+ +------------------------------------------+
+ | |
+ | Multi-Access (MX) Control Message |
+ | |
+ +------------------------------------------+
+ | |
+ | WebSocket |
+ | |
+ +------------------------------------------+
+ | |
+ | TCP/TLS |
+ | |
+ +------------------------------------------+
+
+ Figure 2: TCP-Based MAMS Control-Plane Protocol Stack
+
+7.2. MAMS User-Plane Protocol
+
+ Figure 3 shows the MAMS user-plane protocol stack for transporting
+ the user payload, e.g., an IP Protocol Data Unit (PDU).
+
+ +-----------------------------------------------------+
+ | User Payload, e.g., IP Protocol Data Unit (PDU) |
+ +-----------------------------------------------------+
+
+ +-----------------------------------------------------------+
+ | +-----------------------------------------------------+ |
+ | | Multi-Access (MX) Convergence Layer | |
+ | +-----------------------------------------------------+ |
+ | +-----------------------------------------------------+ |
+ | | MX Adaptation | MX Adaptation | MX Adaptation | |
+ | | Layer | Layer | Layer | |
+ | | (optional) | (optional) | (optional) | |
+ | +-----------------+-----------------+-----------------+ |
+ | | Access #1 IP | Access #2 IP | Access #3 IP | |
+ | +-----------------------------------------------------+ |
+ | MAMS User-Plane Protocol Stack |
+ +-----------------------------------------------------------+
+
+ Figure 3: MAMS User-Plane Protocol Stack
+
+ The MAMS user-plane protocol consists of the following two layers:
+
+ * Multi-Access (MX) Convergence Layer: The MAMS framework configures
+ the Convergence Layer to perform multi-access-specific tasks in
+ the user plane. This layer performs such functions as access
+ (path) selection, multi-link (path) aggregation, splitting/
+ reordering, lossless switching, fragmentation, or concatenation.
+ The MX Convergence Layer can be implemented by using existing
+ user-plane protocols like MPTCP [RFC6824] or Multipath QUIC
+ (MPQUIC) [QUIC-MULTIPATH], or by adapting encapsulating header/
+ trailer schemes such as GRE [RFC2784] [RFC2890] or Generic Multi-
+ Access (GMA) [INTAREA-GMA].
+
+ * Multi-Access (MX) Adaptation Layer: The MAMS framework configures
+ the Adaptation Layer to address transport-network-related aspects
+ such as reachability and security in the user plane. This layer
+ performs functions to handle tunneling, network-layer security,
+ and NAT. The MX Adaptation Layer can be implemented using IPsec,
+ DTLS [RFC6347], or a Client NAT (Source NAT at the client with
+ inverse mapping at the N-MADP [INTAREA-MAMS]). The MX Adaptation
+ Layer is OPTIONAL and can be independently configured for each of
+ the access links. For example, in a deployment with LTE (assumed
+ secure) and Wi-Fi (assumed to not be secure), the MX Adaptation
+ Layer can be omitted for the LTE link, but is configured with
+ IPsec to secure the Wi-Fi link. Further details on the MAMS user
+ plane are provided in [INTAREA-MAMS].
+
+8. MAMS Control-Plane Procedures
+
+8.1. Overview
+
+ The CCM and NCM exchange signaling messages to configure the user-
+ plane functions via the C-MADP and the N-MADP at the client and the
+ network, respectively. The means for the CCM to obtain the NCM
+ credentials (Fully Qualified Domain Name (FQDN) or IP address) for
+ sending the initial discovery messages are out of scope for this
+ document. As an example, the client can obtain the NCM credentials
+ by using such methods as provisioning or DNS queries. Once the
+ discovery process is successful, the (initial) NCM can update and
+ assign additional NCM addresses, e.g., based on Mobile Country Code
+ (MCC) / Mobile Network Code (MNC) tuple information received in the
+ MX Discover message, for sending subsequent control-plane messages.
+
+ The CCM discovers and exchanges capabilities with the NCM. The NCM
+ provides the credentials of the N-MADP endpoint and negotiates the
+ parameters for the user plane with the CCM. The CCM configures the
+ C-MADP to set up the user-plane path (e.g., MPTCP/UDP Proxy
+ connection) with the N-MADP, based on the credentials (e.g.,
+ (MPTCP/UDP) Proxy IP address and port, associated core network path),
+ and the parameters exchanged with the NCM. Further, the NCM and CCM
+ exchange link status information to adapt traffic steering and user-
+ plane treatment to dynamic network conditions. The key procedures
+ are described in detail in the following subsections.
+
+ +-----+ +-----+
+ | CCM | | NCM |
+ +--+--+ +--+--+
+ | Discovery and |
+ | Capability |
+ | Exchange |
+ |<--------------------->|
+ | |
+ | Setup of |
+ | User-Plane |
+ | Protocols |
+ |<--------------------->|
+ | |
+ | Path Quality |
+ | Estimation |
+ |<--------------------->|
+ | |
+ | Network Capabilities |
+ | e.g., RNIS [ETSIRNIS] |
+ |<----------------------|
+ | |
+ | Network Policies |
+ |<----------------------|
+ + +
+
+ "RNIS" stands for "Radio Network Information Service"
+
+ Figure 4: MAMS Control-Plane Procedures
+
+8.2. Common Fields in MAMS Control Messages
+
+ Each MAMS control message consists of the following common fields:
+
+ * Version: Indicates the version of the MAMS control protocol.
+
+ * Message Type: Indicates the type of the message, e.g., MX
+ Discover, MX Capability Request (REQ) / Response (RSP).
+
+ * Sequence Number: Auto-incremented integer to uniquely identify a
+ particular message exchange, e.g., MX Capability Request/Response.
+
+8.3. Common Procedures for MAMS Control Messages
+
+ This section describes the common procedures for MAMS control
+ messages.
+
+8.3.1. Message Timeout
+
+ After sending a MAMS control message, the MAMS control-plane peer
+ (NCM or CCM) waits for a duration of MAMS_TIMEOUT ms before timing
+ out in cases where a response was expected. The sender of the
+ message will retransmit the message for MAMS_RETRY times before
+ declaring failure if no response is received. A failure implies that
+ the MAMS peer is dead or unreachable, and the sender reverts to
+ native non-multi-access / single-path mode. The CCM may initiate the
+ MAMS discovery procedure for re-establishing the MAMS session.
+
+8.3.2. Keep-Alive Procedure
+
+ MAMS control-plane peers execute the keep-alive procedures to ensure
+ that the other peers are reachable and to recover from dead-peer
+ scenarios. Each MAMS control-plane endpoint maintains a Keep-Alive
+ timer that is set for a duration of MAMS_KEEP_ALIVE_TIMEOUT. The
+ Keep-Alive timer is reset whenever the peer receives a MAMS control
+ message. When the Keep-Alive timer expires, an MX Keep-Alive Request
+ is sent.
+
+ The values for MAMS_RETRY and MAMS_KEEP_ALIVE_TIMEOUT parameters used
+ in keep-alive procedures are deployment dependent, and the means for
+ obtaining them are out of scope for this document. As an example,
+ the client and network can obtain the values using provisioning. On
+ receipt of an MX Keep-Alive Request, the receiver responds with an MX
+ Keep-Alive Response. If the sender does not receive a MAMS control
+ message in response to MAMS_RETRY retries of the MX Keep-Alive
+ Request, the MAMS peer declares that the peer is dead or unreachable.
+ The CCM MAY initiate the MAMS discovery procedure for re-establishing
+ the MAMS session.
+
+ Additionally, the CCM SHALL immediately send an MX Keep-Alive Request
+ to the NCM whenever it detects a handover from one base station /
+ access point to another. During this time, the client SHALL stop
+ using MAMS user-plane functionality in the uplink direction until it
+ receives an MX Keep-Alive Response from the NCM.
+
+ The MX Keep-Alive Request includes the following information:
+
+ * Reason: Can be timeout or handover. Handover shall be used by the
+ CCM only on detection of a handover.
+
+ * Unique Session ID: See Section 8.4.
+
+ * Connection ID: If the reason is handover, the inclusion of this
+ field is mandatory.
+
+ * Delivery Node ID: Identity of the node to which the client is
+ attached. In the case of LTE, this is an E-UTRAN Cell Global
+ Identifier (ECGI). In the case of Wi-Fi, this is an AP ID or a
+ Media Access Control (MAC) address. If the reason is "Handover",
+ the inclusion of this field is mandatory.
+
+8.4. Discovery and Capability Exchange
+
+ Figure 5 shows the MAMS discovery and capability exchange procedure.
+
+ CCM NCM
+ | |
+ |------- MX Discover Message ----------------------->|
+ | +-----------------+
+ | | Learn CCM |
+ | | IP address |
+ | | and port |
+ | +-----------------+
+ | |
+ |<----------------------------- MX System Info ------|
+ | |
+ |------------------------------ MX Capability REQ -->|
+ |<----- MX Capability RSP ---------------------------|
+ |------------------------------ MX Capability ACK -->|
+ | |
+ + +
+
+ Figure 5: MAMS Control Procedure for Discovery and Capability
+ Exchange
+
+ This procedure consists of the following key steps:
+
+ Step 1 (discovery): The CCM periodically sends an MX Discover message
+ to a predefined (NCM) IP address/port until an MX System Info message
+ is received in acknowledgment.
+
+ * The MX Discover message includes the following information:
+
+ - MAMS Version.
+
+ - Mobile Country Code (MCC) / Mobile Network Code (MNC) Tuple:
+ Optional parameter to identify the operator network to which
+ the client is subscribed, in conformance with the format
+ specified in [ITU-E212].
+
+ * The MX System Info message includes the following information:
+
+ - Number of Anchor Connections.
+
+ For each anchor connection, the following parameters are
+ included:
+
+ o Connection ID: Unique identifier for the anchor connection.
+
+ o Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE).
+
+ o NCM Endpoint Address (for control-plane messages over this
+ connection):
+
+ + IP Address or FQDN
+
+ + Port Number
+
+ Step 2 (capability exchange): The CCM learns the IP address and port
+ from the MX System Info message. It then sends the MX Capability REQ
+ message, which includes the following parameters:
+
+ * MX Feature Activation List: Indicates whether the corresponding
+ feature is supported or not, e.g., lossless switching,
+ fragmentation, concatenation, uplink aggregation, downlink
+ aggregation, measurement, probing.
+
+ * Number of Anchor Connections (core networks).
+
+ For each anchor connection, the following parameters are included:
+
+ - Connection ID
+
+ - Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ * Number of Delivery Connections (access links).
+
+ For each delivery connection, the following parameters are
+ included:
+
+ - Connection ID
+
+ - Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ * MX Convergence Method Support List:
+
+ - GMA
+
+ - MPTCP Proxy
+
+ - GRE Aggregation Proxy
+
+ - MPQUIC
+
+ * MX Adaptation Method Support List:
+
+ - UDP without DTLS
+
+ - UDP with DTLS
+
+ - IPsec [RFC3948]
+
+ - Client NAT
+
+ In response, the NCM creates a unique identity for the CCM session
+ and sends the MX Capability Response, including the following
+ information:
+
+ * MX Feature Activation List: Indicates whether the corresponding
+ feature is enabled or not, e.g., lossless switching,
+ fragmentation, concatenation, uplink aggregation, downlink
+ aggregation, measurement, probing.
+
+ * Number of Anchor Connections (core networks):
+
+ For each anchor connection, the following parameters are included:
+
+ - Connection ID
+
+ - Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ * Number of Delivery Connections (access links):
+
+ For each delivery connection, the following parameters are
+ included:
+
+ - Connection ID
+
+ - Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ * MX Convergence Method Support List:
+
+ - GMA
+
+ - MPTCP Proxy
+
+ - GRE Aggregation Proxy
+
+ - MPQUIC
+
+ * MX Adaptation Method Support List:
+
+ - UDP without DTLS
+
+ - UDP with DTLS
+
+ - IPsec [RFC3948]
+
+ - Client NAT
+
+ * Unique Session ID: Unique session identifier for the CCM that set
+ up the connection. If the session already exists, then the
+ existing unique session identifier is returned.
+
+ - NCM ID: Unique identity of the NCM in the operator network.
+
+ - Session ID: Unique identity assigned to the CCM instance by
+ this NCM instance.
+
+ In response to the MX Capability Response, the CCM sends a
+ confirmation (or rejection) in the MX Capability Acknowledge. The MX
+ Capability Acknowledge includes the following parameters:
+
+ * Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response.
+
+ * Acknowledgment: An indication of whether the client has accepted
+ or rejected the capability exchange phase.
+
+ - MX ACCEPT: The CCM accepts the capability set proposed by the
+ NCM.
+
+ - MX REJECT: The CCM rejects the capability set proposed by the
+ NCM.
+
+ If the NCM receives an MX_REJECT, the current MAMS session will be
+ terminated.
+
+ If the CCM can no longer continue with the current capabilities, it
+ SHOULD send an MX Session Termination Request to terminate the MAMS
+ session. In response, the NCM SHOULD send an MX Session Termination
+ Response to confirm the termination.
+
+8.5. User-Plane Configuration
+
+ Figure 6 shows the user-plane (UP) configuration procedure.
+
+ CCM NCM
+ | |
+ |---- MX Reconfiguration REQ (setup) ----------->|
+ |<-------------------- MX Reconfiguration RSP ---|
+ | +-------------------------+
+ | | NCM prepares N-MADP for |
+ | | User-Plane Setup |
+ | +-------------------------+
+ |<-------------------- MX UP Setup Config -------|
+ |---- MX UP Setup Confirmation ----------------->|
+ +-------------------+ |
+ |Link "X" is up/down| |
+ +-------------------+ |
+ |---- MX Reconfiguration REQ (update/release) -->|
+ |<-------------------- MX Reconfiguration RSP ---|
+
+ Figure 6: MAMS Control Procedure for User-Plane Configuration
+
+ This procedure consists of the following two key steps:
+
+ * Reconfiguration: The CCM informs the NCM about the changes to the
+ client's connections - setup of a new connection, teardown of an
+ existing connection, or update of parameters related to an
+ existing connection. It consists of the client triggering the
+ procedure by requesting an update to the connection configuration,
+ and a response from the NCM.
+
+ * UP Setup: The NCM configures the user-plane protocols at the
+ client and the network. The NCM initiates the UP setup by sending
+ the MX UP Setup Configuration Request to the client, which
+ confirms the set of mutually acceptable parameters by using the
+ User Plane Setup Confirmation (CNF) message.
+
+ These steps are elaborated as follows.
+
+ Reconfiguration: When the client detects that the link is up/down or
+ the IP address changes (e.g., via APIs provided by the client OS),
+ the CCM sends an MX Reconfiguration Request to set up, update, or
+ release the connection. The message SHOULD include the following
+ information:
+
+ * Unique Session ID: Identity of the CCM at the NCM, created by the
+ NCM during the capability exchange phase.
+
+ * Reconfiguration Action: Indicates the reconfiguration action
+ (release, setup, or update).
+
+ * Connection ID: Identifies the connection for reconfiguration.
+
+ If the Reconfiguration Action is set to "setup" or "update", then the
+ message includes the following parameters:
+
+ * IP address of the connection.
+
+ * SSID (Service Set Identifier of the Wi-Fi connection).
+
+ * MTU of the connection: The MTU of the delivery path that is
+ calculated at the client for use by the NCM to configure
+ fragmentation and concatenation procedures [INTAREA-MAMS] at the
+ N-MADP.
+
+ * Delivery Node ID: Identity of the node to which the client is
+ attached. In the case of LTE, this is an ECGI. In the case of
+ Wi-Fi, this is an AP ID or a MAC address.
+
+ At the beginning of a connection setup, the CCM informs the NCM of
+ the connection status using the MX Reconfiguration Request with the
+ Reconfiguration Action set to "setup". The NCM acknowledges the
+ connection setup status and exchanges parameters with the CCM for
+ user-plane setup, as described below.
+
+ Setup of User-Plane Protocols: Based on the negotiated capabilities,
+ the NCM sets up the user-plane (Adaptation Layer and Convergence
+ Layer) protocols at the N-MADP and informs the CCM of the user-plane
+ protocols to be set up at the client (C-MADP) and the parameters for
+ the C-MADP to connect to the N-MADP.
+
+ The MX UP Setup Configuration Request is used to create one or more
+ MADP instances, with each anchor connection having one or more
+ configurations, namely MX Configurations. The MX UP Setup
+ Configuration Request consists of the following parameters:
+
+ * Number of Anchor Connections (core networks).
+
+ For each anchor connection, the following parameters are included:
+
+ - Anchor Connection ID
+
+ - Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ - Number of Active MX Configurations (included only if more than
+ one MX configuration is active for the anchor connection).
+
+ For each active MX configuration, the following parameters are
+ included:
+
+ o MX Configuration ID (included if more than one MX
+ configuration is present)
+
+ o MX Convergence Method. One of the following:
+
+ + GMA
+
+ + MPTCP Proxy
+
+ + GRE Aggregation Proxy
+
+ + MPQUIC
+
+ o MX Convergence Method Parameters:
+
+ + Convergence Proxy IP Address
+
+ + Convergence Proxy Port
+
+ + Client Key
+
+ o MX Convergence Control Parameters (included if any MX
+ Control PDU types (e.g., Probe-REQ/ACK) are supported):
+
+ + UDP port number for sending and receiving MX Control PDUs
+ (e.g., Probe-REQ/ACK, Keep-Alive)
+
+ + Convergence Proxy Port
+
+ o Number of Delivery Connections.
+
+ For each delivery connection, include the following:
+
+ + Delivery Connection ID
+
+ + Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ + MX Adaptation Method. One of the following:
+
+ * UDP without DTLS
+
+ * UDP with DTLS
+
+ * IPsec
+
+ * Client NAT
+
+ + MX Adaptation Method Parameters:
+
+ * Tunnel Endpoint IP Address
+
+ * Tunnel Endpoint Port
+
+ * Shared Secret
+
+ * Header Optimization (included only if the MX
+ Convergence Method is GMA)
+
+ For example, when LTE and Wi-Fi are the two user-plane accesses, the
+ NCM conveys to the CCM that IPsec needs to be set up as the MX
+ Adaptation Layer over the Wi-Fi access, using the following
+ parameters: IPsec endpoint IP address, and Pre-Shared Key. No
+ Adaptation Layer is needed if it is considered secure with no NAT, or
+ a Client NAT may be used over the LTE access.
+
+ Similarly, as an example of the MX Convergence Method, the
+ configuration indicates the convergence method as the MPTCP proxy,
+ along with parameters for a connection to the MPTCP proxy: namely the
+ IP address and port of the MPTCP proxy for TCP applications.
+
+ Once the user-plane protocols are configured, the CCM informs the NCM
+ of the status via the MX UP Setup Confirmation. The MX UP Setup
+ Confirmation consists of the following parameters:
+
+ * Unique Session ID: Session identifier provided to the client in an
+ MX Capability Response.
+
+ * MX Convergence Control Parameters (included if any MX Control PDU
+ types (e.g., Probe-REQ/ACK, Keep-Alive) are supported):
+
+ - UDP port number for sending and receiving MX Control PDUs
+ (e.g., Probe-REQ/ACK, Keep-Alive)
+
+ - MX Configuration ID (if an MX Configuration ID is specified in
+ an MX UP Setup Configuration Request) to indicate the MX
+ Configuration that will be used for probing)
+
+ * Client Adaptation-Layer Parameters:
+
+ - Number of Delivery Connections.
+
+ For each delivery connection, include the following:
+
+ o Delivery Connection ID
+
+ o UDP port number: If UDP-based adaptation is in use, the UDP
+ port on the C-MADP side
+
+8.6. MAMS Path Quality Estimation
+
+ Path quality estimations can be done either passively or actively.
+ Traffic measurements in the network can be performed passively by
+ comparing the real-time data throughput of the client with the
+ capacity available in the network. In special deployments where the
+ NCM has interfaces with access nodes, direct interfaces can be used
+ to gather information regarding path quality. For example, the
+ utilization of the LTE access node (also known as Evolved Node B), to
+ which the client is attached, could be used as data for the
+ estimation of path quality without creating any extra traffic
+ overhead. Active measurements by the client provide an alternative
+ way to estimate path quality.
+
+ CCM NCM
+ | |
+ |<-------------- MX Path Estimation Request ---------|
+ |------ MX Path Estimation Results ----------------->|
+ | |
+
+ Figure 7: MAMS Control-Plane Procedure for Path Quality Estimation
+
+ The NCM sends the following configuration parameters in the MX Path
+ Estimation Request to the CCM:
+
+ * Connection ID (of the delivery connection whose path quality needs
+ to be estimated)
+
+ * Init Probe Test Duration (ms)
+
+ * Init Probe Test Rate (Mbps)
+
+ * Init Probe Size (bytes)
+
+ * Init Probe-ACK Required (0 -> No / 1 -> Yes)
+
+ * Active Probe Frequency (ms)
+
+ * Active Probe Size (bytes)
+
+ * Active Probe Test Duration (ms)
+
+ * Active Probe-ACK Required (0 -> No / 1 -> Yes)
+
+ The CCM configures the C-MADP for probe receipt based on these
+ parameters and for collection of the statistics according to the
+ following configuration.
+
+ * Unique Session ID: Session identifier provided to the client in an
+ MX Capability Response.
+
+ * Init Probe Results Configuration:
+
+ - Lost Probes (percent)
+
+ - Probe Receiving Rate (packets per second)
+
+ * Active Probe Results Configuration:
+
+ - Average Throughput in the last Probe Duration
+
+ The user-plane probing is divided into two phases: the Initialization
+ phase and the Active phase.
+
+ * Initialization Phase: A network path that is not included by the
+ N-MADP for transmission of user data is deemed to be in the
+ Initialization phase. The user data may be transmitted over other
+ available network paths.
+
+ * Active Phase: A network path that is included by the N-MADP for
+ transmission of user data is deemed to be in the Active phase.
+
+ During the Initialization phase, the NCM configures the N-MADP to
+ send an Init Probe-REQ message. The CCM collects the Init Probe
+ statistics from the C-MADP and sends the MX Path Estimation Results
+ message to the NCM per the Initialization Probe Results
+ configuration.
+
+ During the Active phase, the NCM configures the N-MADP to send an
+ Active Probe-REQ message. The C-MADP calculates the metrics as
+ specified by the Active Probe Results configuration. The CCM
+ collects the Active Probe statistics from the C-MADP and sends the MX
+ Path Estimation Results message to the NCM per the Active Probe
+ Results configuration.
+
+ The following subsections define the control PDU encoding for Keep-
+ Alive and Probe-REQ/ACK messages to support path quality estimation.
+
+8.6.1. MX Control PDU Definition
+
+ Control PDUs are sent as UDP messages between the C-MADP and the
+ N-MADP to exchange control messages for keep-alive or path quality
+ estimation. MX probe parameters are negotiated during the user-plane
+ setup phase (MX UP Setup Configuration Request and MX UP Setup
+ Confirmation). Figure 8 shows the MX Control PDU format with the
+ following fields:
+
+ * Type (1 byte): The type of the MX Control message.
+
+ - 0: Keep-Alive
+
+ - 1: Probe-REQ/ACK
+
+ - Others: Reserved
+
+ * CID (1 byte): The connection ID of the delivery connection for
+ sending the MX Control message.
+
+ * MX Control Message (variable): The payload of the MX Control
+ message.
+
+ The MX Control PDU is sent as a normal user-plane packet over the
+ desired delivery connection whose quality and reachability need to be
+ determined.
+
+
+ | |
+ |<--------- MX Control PDU Payload ------->|
+ | |
+ +-----------+-------------------+-----+-----------------------------+
+ | IP Header | UDP Header | Type | CID | MX Control Message |
+ +-----------+-------------------+-----+-----------------------------+
+
+ Figure 8: MX Control PDU Format
+
+8.6.2. Keep-Alive Message
+
+ The "Type" field is set to "0" for Keep-Alive messages. The C-MADP
+ may periodically send a Keep-Alive message over one or multiple
+ delivery connections, especially if UDP tunneling is used as the
+ adaptation method for the delivery connection with a NAT function on
+ the path.
+
+ A Keep-Alive message is 2 bytes long and consists of the following
+ field:
+
+ * Keep-Alive Sequence Number (2 bytes): The sequence number of the
+ Keep-Alive message.
+
+8.6.3. Probe-REQ/ACK Message
+
+ The "Type" field is set to "1" for Probe-REQ/ACK messages. The
+ N-MADP may send the Probe-REQ message for path quality estimation.
+ In response, the C-MADP may return the Probe-ACK message.
+
+ A Probe-REQ message consists of the following fields:
+
+ * Probing Sequence Number (2 bytes): The sequence number of the
+ Probe REQ message.
+
+ * Probing Flag (1 byte):
+
+ - Bit 0: A Probe-ACK flag to indicate whether the Probe-ACK
+ message is expected (1) or not (0).
+
+ - Bit 1: A Probe Type flag to indicate whether the Probe-REQ/ACK
+ message was sent during the Initialization phase (0) when the
+ network path is not included for transmission of user data, or
+ during the Active phase (1) when the network path is included
+ for transmission of user data.
+
+ - Bit 2: A bit flag to indicate the presence of the Reverse
+ Connection ID (R-CID) field.
+
+ - Bits 3-7: Reserved.
+
+ * Reverse Connection ID (R-CID) (1 byte): The connection ID of the
+ delivery connection for sending the Probe-ACK message on the
+ reverse path.
+
+ * Padding (variable).
+
+ The "R-CID" field is only present if both Bit 0 and Bit 2 of the
+ "Probing Flag" field are set to "1". Moreover, Bit 2 of the "Probing
+ Flag" field SHOULD be set to "0" if Bit 0 is "0", indicating that the
+ Probe-ACK message is not expected.
+
+ If the "R-CID" field is not present, but Bit 0 of the "Probing Flag"
+ field is set to "1", the Probe-ACK message SHOULD be sent over the
+ same delivery connection as the Probe-REQ message.
+
+ The "Padding" field is used to control the length of the Probe-REQ
+ message.
+
+ The C-MADP SHOULD send the Probe-ACK message in response to a Probe-
+ REQ message with the Probe-ACK flag set to "1".
+
+ A Probe-ACK message is 3 bytes long and consists of the following
+ field:
+
+ * Probing Acknowledgment Number (2 bytes): The sequence number of
+ the corresponding Probe-REQ message.
+
+8.7. MAMS Traffic Steering
+
+ CCM NCM
+ | |
+ | +------------------------------+
+ | |Steer user traffic to Path "X"|
+ | +------------------------------+
+ |<----------------- MX Traffic Steering REQ ------|
+ |----- MX Traffic Steering RSP ------------------>|
+
+ Figure 9: MAMS Traffic-Steering Procedure
+
+ The NCM sends an MX Traffic Steering Request to steer data traffic.
+ It is also possible to send data traffic over multiple connections
+ simultaneously, i.e., aggregation. The message includes the
+ following information:
+
+ * Anchor Connection ID: Connection ID of the anchor connection.
+
+ * MX Configuration ID (if an MX Configuration ID is specified in an
+ MX UP Setup Configuration Request).
+
+ * DL Connection ID List: List of DL delivery connections, provided
+ as Connection IDs.
+
+ * UL Connection ID: Connection ID of the default UL delivery
+ connection.
+
+ * For the number of specific UL traffic templates, the message
+ includes the following:
+
+ - Traffic Flow Template for identifying the UL traffic.
+
+ - UL Connection ID List: List of UL delivery connections,
+ provided as Connection IDs, to be used for sending the UL
+ traffic.
+
+ * MX Feature Activation List. Each parameter indicates whether the
+ corresponding feature is enabled or not: lossless switching,
+ fragmentation, concatenation, uplink aggregation, downlink
+ aggregation, measurement, probing.
+
+ In response, the CCM sends an MX Traffic Steering Response, including
+ the following information:
+
+ * Unique Session ID: Session identifier provided to the client in an
+ MX Capability Response.
+
+ * MX Feature Activation List. Each parameter indicates whether the
+ corresponding feature is enabled or not: lossless switching,
+ fragmentation, concatenation, uplink aggregation, downlink
+ aggregation, measurement, probing.
+
+8.8. MAMS Application MADP Association
+
+
+ CCM NCM
+ | |
+ | +-------------------------+
+ | | Associate MADP instance |
+ | | with application flow |
+ | +-------------------------+
+ |---------- MX App MADP ------------------->|
+ | Association REQ |
+ | |
+ |<----------------- MX App MADP ------------|
+ | Association RSP |
+
+ Figure 10: MAMS Application MADP Association Procedure
+
+ The CCM sends an MX Application MADP Association Request to request
+ the association of a specific application flow with a specific MADP
+ instance ID for the anchor connection with multiple active MX
+ configurations. The MADP Instance ID is a tuple (Anchor Connection
+ ID, MX Configuration ID). This provides the capability for the
+ client to indicate the user-plane processing that needs to be
+ associated with different application flows depending on the needs of
+ those flows. The application flow is identified by its associated
+ Traffic Flow Template.
+
+ The MX Application MADP Association Request includes the following
+ information:
+
+ * Number of Application Flows.
+
+ For each application flow, identified by the Traffic Flow
+ Templates:
+
+ - Anchor Connection ID
+
+ - MX Configuration ID (if more than one MX configuration is
+ associated with an anchor connection)
+
+ - Traffic Flow Template for identifying the UL traffic
+
+ - Traffic Flow Template for identifying the DL traffic
+
+ In response, the NCM sends an MX Application MADP Association
+ Response, including the following information:
+
+ * Number of Application Flows.
+
+ For each application flow, identified by the Traffic Flow
+ Templates:
+
+ - Status (Success or Failure)
+
+8.9. MAMS Network ID Indication
+
+
+ CCM NCM
+ | |
+ | +---------------------------------+
+ | |NCM determines preferred networks|
+ | +---------------------------------+
+ | |
+ |<----------------- MX SSID Indication -----------|
+ | |
+
+ Figure 11: MAMS Network ID Indication Procedure
+
+ The NCM indicates the preferred network list to the CCM to guide the
+ client regarding networks that it should connect to. To indicate
+ preferred Wi-Fi networks, the NCM sends the list of WLANs, each
+ represented by an SSID (Service Set Identifier)/BSSID (Basic Service
+ Set Identifier)/HESSID (Homogeneous Extended Service Set Identifier)
+ as defined in [IEEE-80211]), available in the MX SSID Indication.
+
+8.10. MAMS Client Measurement Configuration and Reporting
+
+ CCM NCM
+ | |
+ |<--------------- MX Measurement Config ----------|
+ | |
+ +---------------------------------+ |
+ |Client ready to send measurements| |
+ +---------------------------------+ |
+ | |
+ |----- MX Measurement Report -------------------->|
+ | |
+
+ Figure 12: MAMS Client Measurement Configuration and Reporting
+ Procedure
+
+ The NCM configures the CCM with the different parameters (e.g., radio
+ link information), with the associated thresholds to be reported by
+ the client. The MX Measurement Configuration message contains the
+ following parameters for each delivery connection:
+
+ * Delivery Connection ID.
+
+ * Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE).
+
+ * If the connection type is Wi-Fi:
+
+ - High and low thresholds for the sending of average Received
+ Signal Strength Indicator (RSSI) of the Wi-Fi link.
+
+ - Periodicity, in ms, for sending the average RSSI of the Wi-Fi
+ link.
+
+ - High and low thresholds for sending the loading of the WLAN
+ system.
+
+ - Periodicity, in ms, for sending the loading of the WLAN system.
+
+ - High and low thresholds for sending the reverse link throughput
+ on the Wi-Fi link.
+
+ - Periodicity, in ms, for sending the reverse link throughput on
+ the Wi-Fi link.
+
+ - High and low thresholds for sending the forward link throughput
+ on the Wi-Fi link.
+
+ - Periodicity, in ms, for sending the forward link throughput on
+ the Wi-Fi link.
+
+ - High and low thresholds for sending the reverse link throughput
+ (EstimatedThroughputOutbound as defined in [IEEE-80211]) on the
+ Wi-Fi link.
+
+ - Periodicity, in ms, for sending the reverse link throughput
+ (EstimatedThroughputOutbound as defined in [IEEE-80211]) on the
+ Wi-Fi link.
+
+ - High and low thresholds for sending the forward link throughput
+ (EstimatedThroughputInbound, as defined in [IEEE-80211]) on the
+ Wi-Fi link.
+
+ - Periodicity, in ms, for sending the forward link throughput
+ (EstimatedThroughputInbound, as defined in [IEEE-80211]) on the
+ Wi-Fi link.
+
+ * If the connection type is LTE:
+
+ - High and low thresholds for sending the Reference Signal
+ Received Power (RSRP) of the serving LTE link.
+
+ - Periodicity, in ms, for sending the RSRP of the serving LTE
+ link.
+
+ - High and low thresholds for sending the RSRQ (Reference Signal
+ Received Quality) of the serving LTE link.
+
+ - Periodicity, in ms, for sending the RSRP of the serving LTE
+ link.
+
+ - High and low thresholds for sending the reverse link throughput
+ on the serving LTE link.
+
+ - Periodicity, in ms, for sending the reverse link throughput on
+ the serving LTE link.
+
+ - High and low thresholds, for sending the forward link
+ throughput on the serving LTE link.
+
+ - Periodicity, in ms, for sending the forward link throughput on
+ the serving LTE link.
+
+ * If the connection type is 5G NR:
+
+ - High and low thresholds for sending the RSRP of the serving NR
+ link.
+
+ - Periodicity, in ms, for sending the RSRP of the serving NR
+ link.
+
+ - High and low thresholds for sending the RSRQ of the serving NR
+ link.
+
+ - Periodicity, in ms, for sending the RSRP of the serving NR
+ link.
+
+ - High and low thresholds for sending the reverse link throughput
+ on the serving NR link.
+
+ - Periodicity, in ms, for sending the reverse link throughput on
+ the serving NR link.
+
+ - High and low thresholds for sending the forward link throughput
+ on the serving NR link.
+
+ - Periodicity, in ms, for sending the forward link throughput on
+ the serving NR link.
+
+ The MX Measurement Report contains the following parameters:
+
+ * Unique Session ID: Session identifier provided to the client in an
+ MX Capability Response.
+
+ * For each delivery connection, include the following:
+
+ - Delivery Connection ID
+
+ - Connection Type (e.g., Wi-Fi, 5G NR, MulteFire, LTE)
+
+ - Delivery Node ID (ECGI in the case of LTE. In the case of Wi-
+ Fi, this is an AP ID or a MAC address.)
+
+ - If the connection type is Wi-Fi:
+
+ o Average RSSI of the Wi-Fi link.
+
+ o Loading of the WLAN system.
+
+ o Reverse link throughput on the Wi-Fi link.
+
+ o Forward link throughput on the Wi-Fi link.
+
+ o Estimated reverse link throughput on the Wi-Fi link
+ (EstimatedThroughputOutbound as defined in [IEEE-80211]).
+
+ o Estimated forward link throughput on the Wi-Fi link
+ (EstimatedThroughputInbound, as defined in [IEEE-80211]).
+
+ - If the connection type is LTE:
+
+ o RSRP of the serving LTE link.
+
+ o RSRQ of the serving LTE link.
+
+ o Reverse link throughput on the serving LTE link.
+
+ o Forward link throughput on the serving LTE link.
+
+ - If the connection type is 5G NR:
+
+ o RSRP of the serving NR link.
+
+ o RSRQ of the serving NR link.
+
+ o Reverse link throughput on the serving NR link.
+
+ o Forward link throughput on the serving NR link.
+
+8.11. MAMS Session Termination Procedure
+
+ CCM NCM
+ | |
+ |---- MX Session Termination REQ --->|
+ | |
+ | |
+ |<--- MX Session Termination RSP ----|
+ | |
+ | +------------------+
+ | | Remove Resources |
+ | +------------------+
+ | |
+
+ Figure 13: MAMS Session Termination Procedure - Initiated by Client
+
+ CCM NCM
+ | |
+ |<--- MX Session Termination REQ ----|
+ | |
+ | |
+ |---- MX Session Termination RSP --->|
+ | |
+ +------------------+ |
+ | Remove Resources | |
+ +------------------+ |
+ | |
+
+ Figure 14: MAMS Session Termination Procedure - Initiated by Network
+
+ At any point in MAMS processing, if the CCM or NCM is no longer able
+ to support the MAMS functions, then either of them can initiate a
+ termination procedure by sending an MX Session Termination Request to
+ the peer. The peer SHALL acknowledge the termination by sending an
+ MX Session Termination Response message. After the session is
+ disconnected, the CCM SHALL start a new procedure with an MX Discover
+ message. An MX Session Termination Request shall contain a Unique
+ Session ID and the reason for the termination. Possible reasons for
+ termination are:
+
+ * Normal Release
+
+ * No Response from Peer
+
+ * Internal Error
+
+8.12. MAMS Network Analytics Request Procedure
+
+ CCM NCM
+ | |
+ |----- MX Network Analytics REQ --->|
+ | |
+ | |
+ |<--- MX Network Analytics RSP -----|
+ | |
+
+ Figure 15: MAMS Network Analytics Request Procedure
+
+ The CCM sends the MX Network Analytics Request to the NCM to request
+ information related to such network parameters as bandwidth, latency,
+ jitter, and signal quality, based on the application of analytics at
+ the network (utilizing the received path measurements and client
+ measurement reporting).
+
+ The MX Network Analytics Request consists of the following
+ parameters:
+
+ * Link Quality Indicators. One or more of the following:
+
+ - Bandwidth
+
+ - Jitter
+
+ - Latency
+
+ - Signal Quality
+
+ The NCM sends the MX Network Analytics Response to convey analytics
+ information that might be of interest to the CCM. This message will
+ include network parameters with their predicted likelihoods.
+
+ The MX Network Analytics Response consists of the following
+ parameters:
+
+ * Number of Delivery Connections.
+
+ For each delivery connection, include the following:
+
+ - Access Link Identifier:
+
+ o Connection Type
+
+ o Connection ID
+
+ - Link Quality Indicator:
+
+ o Bandwidth:
+
+ + Predicted Value (Mbps)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+ o Jitter:
+
+ + Predicted Value (in seconds)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+ o Latency:
+
+ + Predicted Value (in seconds)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+ o Signal Quality:
+
+ + If delivery connection type is LTE, LTE_RSRP Predicted
+ Value in decibel-milliwatts (dBm)
+
+ + If delivery connection type is LTE, LTE_RSRQ Predicted
+ Value (dBm)
+
+ + If delivery connection type is 5G NR, NR_RSRP Predicted
+ Value (dBm)
+
+ + If delivery connection type is 5G NR, NR_RSRQ Predicted
+ Value (dBm)
+
+ + If delivery connection type is Wi-Fi, WLAN_RSSI Predicted
+ Value (dBm)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+9. Generic MAMS Signaling Flow
+
+ Figure 16 illustrates the MAMS signaling mechanism for negotiation of
+ network paths and flow protocols between the client and the network.
+ In this example scenario, the client is connected to two networks
+ (LTE and Wi-Fi).
+
+ +--------------------------------------------+
+ | MAMS-enabled Network of Networks |
+ | +-------+ +-------+ +-----+ +------+ |
+ +------------------+ | | | | | | | | | |
+ | Client | | |Network| |Network| | | | | |
+ | +------+ +-----+ | | | 1 | | 2 | | NCM | |N-MADP| |
+ | |C-MADP| | CCM | | | | (LTE) | |(Wi-Fi)| | | | | |
+ | +------+ +-----+ | | +-------+ +-------+ +-----+ +------+ |
+ | | | | | | | | | |
+ ++---+--------+----+ +-----+-----------+----------+----------+----+
+ | | | | | | |
+ | | | | | | |
+ | | 1. Setup Connection | | | |
+ |<-----------+------------->| | | |
+ | | | | | | |
+ | | | 2. MAMS Capabilities Exchange | |
+ | | |<-------------+-----------+--------->| |
+ | | | | | | |
+ | | 3. Setup Connection | | | |
+ |<--+---------------------------------->| | |
+ | | | | | | |
+ | 4c. Config | 4a. Negotiate network paths, |4b. Config|
+ | | C-MADP | Flow protocol, and parameters | N-MADP|
+ | |<------>|<-------------+-----------+--------->|<-------->|
+ | | | | | | |
+ | | | 5. Establish user-plane path according |
+ | | | to selected flow protocol | |
+ | |<----------------------+-----------+-------------------->|
+ | | | | | | |
+ + + + + + + +
+
+ Figure 16: MAMS Call Flow
+
+ 1. The client connects to Network 1 and gets an IP address assigned
+ by Network 1.
+
+ 2. The CCM communicates with the NCM functional element via the
+ Network 1 connection and exchanges capabilities and parameters
+ for MAMS operation. Note: The NCM credentials (e.g., the NCM's
+ IP address) can be made known to the client by provisioning.
+
+ 3. The client sets up the connection with Network 2 and gets an IP
+ address assigned by Network 2.
+
+ 4. The CCM and NCM negotiate capabilities and parameters for
+ establishing network paths. The negotiated capabilities and
+ parameters are then used to configure user-plane functions, i.e.,
+ the N-MADP at the network and the C-MADP at the client.
+
+ 4a. The CCM and NCM negotiate network paths, flow routing and
+ aggregation protocols, and related parameters.
+
+ 4b. The NCM communicates with the N-MADP to exchange and
+ configure flow aggregation protocols, policies, and
+ parameters in alignment with those negotiated with the CCM.
+
+ 4c. The CCM communicates with the C-MADP to exchange and
+ configure flow aggregation protocols, policies, and
+ parameters in alignment with those negotiated with the NCM.
+
+ 5. The C-MADP and N-MADP establish the user-plane paths, e.g., using
+ Internet Key Exchange Protocol (IKE) [RFC7296] signaling, based
+ on the negotiated flow aggregation protocols and parameters
+ specified by the NCM.
+
+ The CCM and NCM can further exchange messages containing access link
+ measurements for link maintenance by the NCM. The NCM evaluates the
+ link conditions in the UL and DL across LTE and Wi-Fi, based on link
+ measurements reported by the CCM and/or link-probing techniques, and
+ determines the policy for UL and DL user data distribution. The NCM
+ and CCM also negotiate application-level policies for categorizing
+ applications, e.g., based on the Differentiated Services Code Point
+ (DSCP), destination IP address, and determination of which available
+ network path needs to be used for transporting data of that category
+ of applications. The NCM configures the N-MADP, and the CCM
+ configures the C-MADP, based on the negotiated application policies.
+ The CCM may apply local application policies, in addition to the
+ application policy conveyed by the NCM.
+
+10. Relationship to IETF Technologies
+
+ The MAMS framework leverages technologies developed in the IETF (such
+ as MPTCP and GRE) and enables a control-plane framework to negotiate
+ the use of these protocols between the client and the network. It
+ also addresses the limitations in scope of other multihoming
+ protocols. For example, the IKEv2 Mobility and Multihoming Protocol
+ (MOBIKE [RFC4555]) scope indicates that it is limited to multihoming
+ between IPsec clients (tunnel mode IPsec Security Associations) and
+ does not support load balancing. To address this limitation
+ regarding how the multihoming scenario is handled, the MAMS framework
+ supports load balancing with the simultaneous use of multiple access
+ paths by negotiating the use of protocols like MPTCP. Unlike MOBIKE,
+ which only applies to endpoints connected with an IPsec tunnel mode
+ Security Association, the MAMS framework allows the flexibility to
+ use a wide range of tunneling protocols in the Adaptation Layer.
+
+11. Applying MAMS Control Procedures with MPTCP Proxy as User Plane
+
+ If the NCM determines that the N-MADP is to be instantiated with
+ MPTCP as the MX Convergence Protocol, it exchanges the MPTCP
+ capability support in the discovery and capability exchange
+ procedures. An MPTCP proxy (e.g., see [TCPM-CONVERTERS]) is
+ configured to be the N-MADP instance. The NCM then provides the
+ credentials of the MPTCP Proxy instance, along with related
+ parameters, to the CCM. The CCM configures the C-MADP with these
+ parameters to connect to this MPTCP proxy instance.
+
+ Figure 17 illustrates the user-plane protocol layering when MPTCP is
+ configured to be the "MX Convergence Layer" protocol. MPTCP manages
+ traffic distribution and aggregation over multiple delivery
+ connections.
+
+
+ +-----------------------------------------------------+
+ | MPTCP |
+ +-----------------+-----------------+-----------------+
+ | TCP | TCP | TCP |
+ +-----------------------------------------------------+
+ | MX Adaptation | MX Adaptation | MX Adaptation |
+ | Layer | Layer | Layer |
+ | (optional) | (optional) | (optional) |
+ +-----------------------------------------------------+
+ | Access #1 IP | Access #2 IP | Access #3 IP |
+ +-----------------+-----------------+-----------------+
+
+ Figure 17: MAMS User-Plane Protocol Stack with MPTCP as MX
+ Convergence Layer
+
+ The client (C-MADP) sets up an MPTCP connection with the N-MADP to
+ begin with. The MAMS control procedures are then applied to do the
+ following:
+
+ * Connect to the appropriate MPTCP network endpoint, e.g., the MPTCP
+ proxy (illustrated in Figure 18).
+
+ * Control the addition of a second TCP subflow after the Wi-Fi
+ connection is established and is deemed good (illustrated in
+ Figure 19).
+
+ * Control the behavior of the MPTCP scheduler, e.g., by using only
+ the LTE subflow in the UL and both the LTE and Wi-Fi subflows in
+ the DL (illustrated in Figure 20).
+
+ * Provide faster response to Wi-Fi link degradation by proactively
+ deleting a TCP subflow over Wi-Fi when poor link conditions are
+ reported, maintaining optimum performance (illustrated in
+ Figure 21).
+
+ Figure 18 shows the call flow describing MAMS control procedures
+ applied to configure the user plane and dynamic optimal path
+ selection in a scenario with the MPTCP proxy as the convergence
+ protocol in the user plane.
+
+
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ | | | | | | | | | | | |
+ | CCM | | C-MADP | | Wi-Fi | | LTE | | NCM | |N-MADP|
+ | | | | | N/W | | N/W | | | | |
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ +------------------------------------------------------------------+
+ | 1. LTE Session Setup and IP Address Allocation |
+ +-----------------------------------------+-----------+------------+
+ | | | |
+ |2. MX Discover (MAMS Version, MCC/MNC) | | |
+ +----------------------------------------+---------->| |
+ |3. MX System Info (Serving NCM IP/Port Address) | |
+ |<------------+-------------+-------------+----------+ |
+ | | | | | |
+ |4. MX Capability REQ (Supported Anchor/Delivery | |
+ | | Links (Wi-Fi, LTE)) | |
+ +--------------------------------------------------->| |
+ |5. MX Capability RSP (Convergence/Adaptation Parameters) |
+ |<----------------------------------------+----------+ |
+ |6. MX Capability ACK (ACCEPT) | | |
+ +-------------+-------------+----------------------->| |
+ | | | | | |
+ |7. MX Meas Config (Wi-Fi/LTE Measurement Thresholds/Period) |
+ |<---------------------------------------------------+ |
+ |8. MX Meas Report (LTE RSRP, UL/DL TPUT) | | |
+ +-----------------------------------------+--------->| |
+ |9. MX SSID Indication (List of SSIDs) | | |
+ |<------------+-------------+------------------------+ |
+ | | | | | |
+ |10. MX Reconfiguration REQ (LTE IP) | | |
+ +--------------------------------------------------->| |
+ |11. MX Reconfiguration RSP | | |
+ |<----------------------------------------+----------+ |
+ |12. MX UP Setup REQ (MPTCP proxy IP/Port, Aggregation) |
+ |<--------------------------+-------------+----------+ |
+ |13. MX UP Setup RSP | | | |
+ +-------------+-------------+-------------+--------->| |
+ | | 14. MPTCP connection with designated | |
+ | | MPTCP proxy over LTE | |
+ | +-------------+-------------+----------+------->|
+ | | | | | |
+ + + + + + +
+
+ Figure 18: MAMS-Assisted MPTCP Proxy as User Plane - Initial
+ Setup with LTE Leg
+
+ The salient steps described in the call flow are as follows. The
+ client connects to the LTE network and obtains an IP address (assume
+ that LTE is the first connection). It then initiates the NCM
+ discovery procedures and exchanges capabilities, including the
+ support for MPTCP as the convergence protocol at both the network and
+ the client.
+
+ The CCM provides the LTE connection parameters to the NCM. The NCM
+ provides the parameters like MPTCP proxy IP address/port, and MPTCP
+ Client Key for configuring the Convergence Layer. This is useful if
+ the N-MADP is reachable, via a different IP address or/and port, from
+ different access networks. The current MPTCP signaling can't
+ identify or differentiate the MPTCP proxy IP address and port from
+ multiple access networks. The client uses the MPTCP Client Key
+ during the subflow creation, and this enables the N-MADP to uniquely
+ identify the client, even if a NAT is present. The N-MADP can then
+ inform the NCM of the subflow creation and parameters related to
+ creating additional subflows. Since LTE is the only connection, the
+ user-plane traffic flows over the single TCP subflow over the LTE
+ connection. Optionally, the NCM provides assistance information to
+ the client on the neighboring/preferred Wi-Fi networks that it can
+ associate with.
+
+ Figure 19 describes the steps where the client establishes a Wi-Fi
+ connection. The CCM informs the NCM of the Wi-Fi connection, along
+ with such parameters as the Wi-Fi IP address or the SSID. The NCM
+ determines that the Wi-Fi connection needs to be secured, configures
+ the Adaptation Layer to use IPsec, and provides the required
+ parameters to the CCM. In addition, the NCM provides the information
+ for configuring the Convergence Layer (e.g., MPTCP proxy IP address)
+ and provides the MX Traffic Steering Request to indicate that the
+ client SHOULD use only the LTE access. The NCM may do this, for
+ example, on determining from the measurements that the Wi-Fi link is
+ not consistently good enough. As the Wi-Fi link conditions improve,
+ the NCM sends an MX Traffic Steering Request to use Wi-Fi access as
+ well. This triggers the client to establish the TCP subflow over the
+ Wi-Fi link with the MPTCP proxy.
+
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ | | | | | | | | | | | |
+ | CCM | | C-MADP | | Wi-Fi | | LTE | | NCM | |N-MADP|
+ | | | | | N/W | | N/W | | | | |
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ +-------------------------------------------------------------------+
+ | Traffic over LTE in UL and DL over MPTCP Connection |
+ +-------------------------------------------------------------------+
+ +-------------------------------------------------------------------+
+ | Wi-Fi Connection Establishment and IP Address Allocation |
+ +----------------------------------------------------------------+--+
+ | | | | | |
+ |15. MX Reconfiguration REQ (Wi-Fi IP) | | |
+ +--------------------------------------------------->| |
+ |16. MX Reconfiguration RSP | | |
+ |<----------------------------------------+----------+ |
+ |17. MX UP Setup REQ (MPTCP proxy IP/Port, Aggregation) |
+ |<--------------------------+-------------+----------+ |
+ |18. MX UP Setup RSP | | | |
+ +-------------+-------------+-------------+--------->| |
+ | |19. IPsec Tunnel Establishment over Wi-Fi Path |
+ | |<-------------------------------------+-------->|
+ | | | | | |
+ |20. MX Meas Report (Wi-Fi RSSI, | | |
+ | LTE RSRP, UL/DL TPUT) | |+------------+
+ +-------------+-------------+-------------+--------->||Wait for |
+ | | | | ||good reports|
+ | | | | |+------------+
+ |21. MX Traffic Steering REQ (UL/DL access, | |
+ | Traffic Flow Templates (TFTs)) | +----------+
+ |<----------------------------------------+----------+ |Allow use |
+ | | | | of |
+ |22. MX Traffic Steering RSP (...) | | |Wi-Fi link|
+ +-------------+-------------+----------------------->| +----------+
+ | | | | | |
+ | | 23. Add TCP subflow to the MPTCP connection |
+ | | over Wi-Fi link (IPsec Tunnel) |
+ | |<---------------------------------------------->|
+ | | | | | |
+ +----------------------------------------------------------------+
+ || Aggregated Wi-Fi and LTE capacity for UL and DL ||
+ +----------------------------------------------------------------+
+ | |
+ | |
+
+ Figure 19: MAMS-Assisted MPTCP Proxy as User Plane - Add Wi-Fi Leg
+
+ Figure 20 describes the steps where the client reports that Wi-Fi
+ link conditions degrade in UL. The MAMS control plane is used to
+ continuously monitor the access link conditions on Wi-Fi and LTE
+ connections. The NCM may at some point determine an increase in UL
+ traffic on the Wi-Fi network, and trigger the client to use only LTE
+ in the UL via a MX Traffic Steering Request to improve UL
+ performance.
+
+
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ | | | | | | | | | | | |
+ | CCM | | C-MADP | | Wi-Fi | | LTE | | NCM | |N-MADP|
+ | | | | | N/W | | N/W | | | | |
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ +-------------------------------------------------------------------+
+ | Traffic over LTE and Wi-Fi in UL And DL over MPTCP |
+ ++------------+-------------+-------------+------------+--------+---+
+ | | | | | |
+ |24. MX Meas Report (Wi-Fi RSSI, LTE RSRP, UL/DL TPUT)| +------+---+
+ +------------+-------------+-------------+----------->| |Reports of|
+ | | | | | |bad Wi-Fi |
+ | | | | | |UL tput |
+ | | | | | +----------+
+ |25. MX Traffic Steering REQ (UL/DL Access, TFTs) | +----------+
+ |<---------------------------------------+------------+ |Disallow |
+ | | | | | |use of |
+ |26. MX Traffic Steering RSP (...) | | |Wi-Fi UL |
+ |------------+-------------+------------------------->| +------+---+
+ | | | | | |
+ ++------------+-------------+-------------+------------+--------+---+
+ | UL data to use TCP subflow over LTE link only, |
+ | aggregated Wi-Fi+LTE capacity for DL |
+ ++------------+-------------+-------------+------------+--------+---+
+ | | | | | |
+ + + + + + +
+
+ Figure 20: MAMS-Assisted MPTCP Proxy as User Plane - Wi-Fi UL
+ Degrades
+
+ Figure 21 describes the steps where the client reports that Wi-Fi
+ link conditions have degraded in both the UL and DL. As the Wi-Fi
+ link conditions deteriorate further, the NCM may decide to send a MX
+ Traffic Steering Request that instructs the client to stop using Wi-
+ Fi and to use only the LTE access in both the UL and DL. This
+ condition may be maintained until the NCM determines, based on
+ reported measurements, that the Wi-Fi link has again become usable.
+
+
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ | | | | | | | | | | | |
+ | CCM | | C-MADP | | Wi-Fi | | LTE | | NCM | |N-MADP|
+ | | | | | N/W | | N/W | | | | |
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ +------------------------------------------------------------------+
+ | UL data to use TCP subflow over LTE link only, |
+ | aggregated Wi-Fi+LTE capacity for DL |
+ ++------------+-------------+-------------+----------+---------+---+
+ | | | | | |
+ | | | | | |
+ |27. MX Meas Report (Wi-Fi RSSI, | | |
+ | LTE RSRP, UL/DL TPUT) | | +-------+----+
+ +------------+-------------+-------------+--------->| | Reports of |
+ | | | | | | bad Wi-Fi |
+ | | | | | | UL/DL tput |
+ | | | | | +------------+
+ |28. MX Traffic Steering REQ (UL/DL Access, TFTs) | +------------+
+ |<---------------------------------------+----------+ | Disallow |
+ | | | | | | use of |
+ |29. MX Traffic Steering RSP (...) | | | Wi-Fi |
+ +----------------------------------------+--------->| +------------+
+ | |30. Delete TCP subflow from MPTCP | |
+ | | connection over Wi-Fi link | |
+ | |<---------------------------------------------->|
+ | | | | | |
+ +--------------------------------------------------------------+
+ || Traffic over LTE link only for DL and UL |
+ || (until client reports better Wi-Fi link conditions) |
+ +--------------------------------------------------------------+
+ | | | | | |
+ + + + + + +
+
+ Figure 21: MAMS-Assisted MPTCP Proxy as User Plane - Part 4
+
+12. Applying MAMS Control Procedures for Network-Assisted Traffic
+ Steering When There Is No Convergence Layer
+
+ Figure 22 shows the call flow describing MAMS control procedures
+ applied for dynamic optimal path selection in a scenario where
+ Convergence and Adaptation Layer protocols are omitted. This
+ scenario indicates the applicability of a solution for only the MAMS
+ control plane.
+
+ In the capability exchange messages, the NCM and CCM negotiate that
+ Convergence-Layer and Adaptation-Layer protocols are not needed (or
+ supported). The CCM informs the NCM of the availability of the LTE
+ and Wi-Fi links. The NCM dynamically determines the access links
+ (Wi-Fi or LTE) to be used based on the reported measurements of link
+ quality.
+
+
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ | | | | | | | | | | | |
+ | CCM | | C-MADP | | Wi-Fi | | LTE | | NCM | |N-MADP|
+ | | | | | N/W | | N/W | | | | |
+ +------+ +--------+ +--------+ +-------+ +-------+ +------+
+ +------------------------------------------------------------------+
+ | 1. LTE Session Setup and IP Address Allocation |
+ +---------------------------------------+-------------+----------+-+
+ |2. MX Discover (MAMS Version, MCC/MNC ) | |
+ +--------------------------------------+------------>| |
+ |3. MX System Info (Serving NCM IP/Port address) | |
+ |<------------+-------------+----------+-------------| |
+ | | | | | |
+ |4. MX Capability REQ (Supported | | |
+ | Anchor/Delivery Links (Wi-Fi, LTE))| | |
+ +--------------------------------------------------->| |
+ |5. MX Capability RSP (No Convergence/Adaptation parameters) |
+ |<-------------------------------------+-------------+ |
+ |6. MX Capability ACK (ACCEPT) | | |
+ +-------------+-------------+----------------------->| |
+ | | | | | |
+ |7. MX Meas Config (Wi-Fi/LTE Measurement Thresholds/Period) |
+ |<---------------------------------------------------| |
+ |8. MX Meas Report (LTE RSRP, UL/DL TPUT) | |
+ |--------------------------------------+------------>| |
+ |9. MX SSID Ind (List of SSIDs) | | |
+ |<---------------------------------------------------| |
+ +-----------------------------------------------------------------++
+ | 10. Wi-Fi Connection Setup and IP Address Allocation |
+ +-+-------------+-------------+----------+-------------+----------++
+ | | | | | |
+ |11. MX Reconfiguration REQ (LTE IP, Wi-Fi IP) | |
+ |--------------------------------------+------------>| |
+ |12. MX Reconfiguration RSP | | |
+ |<---------------------------------------------------| |
+ +-----------------------------------------------------------------++
+ | Initial Condition, Data over LTE link only, Wi-Fi link is poor |
+ +------------------------------------------------------+----------++
+ | | | | | |
+ |13. MX Meas Report (Wi-Fi RSSI, | | |
+ | LTE RSRP, UL/DL TPUT)| | |+----------+
+ |--------------------------------------------------->||Wi-Fi link|
+ | | | | ||conditions|
+ | | | | ||reported |
+ | | | | ||good |
+ | | | | |+----------+
+ | | | | | |
+ |14. MX Traffic Steering REQ (UL/DL Access, TFTs) |+----------+
+ |<------------+-------------+----------+-------------||Steer |
+ | | | | ||traffic to|
+ |15. MX Traffic Steering RSP (...) | ||use Wi-Fi |
+ |<------------+-------------+----------+-------------||link |
+ | | | | |+----------+
+ | | | | | |
+ +-----------------------------------------------------------------++
+ | Use Wi-Fi link for Data |
+ +------------------------------------------------------+----------++
+ | | | | | |
+ + + + + + +
+
+ Figure 22: MAMS with No Convergence Layer
+
+13. Coexistence of MX Adaptation and MX Convergence Layers
+
+ The MAMS user plane supports multiple instances and combinations of
+ protocols to be used at the MX Adaptation and the Convergence Layer.
+
+ For example, one instance of the MX Convergence Layer can be MPTCP
+ Proxy and another instance can be GMA. The MX Adaptation for each
+ can be either a UDP tunnel or IPsec. IPsec may be set up when the
+ network path needs to be secured, e.g., to protect the TCP subflow
+ traversing the network path between the client and the MPTCP proxy.
+
+ Each instance of the MAMS user plane, i.e., the combination of MX
+ Convergence-Layer and MX Adaptation-Layer protocols, can coexist
+ simultaneously and independently handle different traffic types.
+
+14. Security Considerations
+
+14.1. MAMS Control-Plane Security
+
+ The NCM functional element is hosted on a network node that is
+ assumed to be within a secure network, e.g., within the operator's
+ network, and is assumed to be protected against hijack attacks.
+
+ For deployment scenarios where the client is configured (e.g., by the
+ network operator) to use a specific network path for exchanging
+ control-plane messages, and if the network path is assumed to be
+ secure, MAMS control messages will rely on security provided by the
+ underlying network.
+
+ For deployment scenarios where the security of the network path
+ cannot be assumed, NCM and CCM implementations MUST support the "wss"
+ URI scheme [RFC6455] and Transport Layer Security (TLS) [RFC8446] to
+ secure the exchange of control-plane messages between the NCM and the
+ CCM.
+
+ For deployment scenarios where client authentication is desired, the
+ WebSocket server can use any client authentication mechanisms
+ available to a generic HTTP server, such as cookies, HTTP
+ authentication, or TLS authentication.
+
+14.2. MAMS User-Plane Security
+
+ User data in the MAMS framework relies on the security of the
+ underlying network transport paths. When this security cannot be
+ assumed, the NCM configures the use of protocols (e.g., IPsec
+ [RFC4301] [RFC3948]) in the MX Adaptation Layer, for security.
+
+15. Implementation Considerations
+
+ The MAMS architecture builds on commonly available functions in
+ clients that can be used to deliver software updates over popular
+ client operating systems, thereby enabling rapid deployment and
+ addressing the large base of deployed clients.
+
+16. Applicability to Multi-Access Edge Computing
+
+ Multi-access Edge Computing (MEC), previously known as Mobile Edge
+ Computing, is an access-edge cloud platform being considered at the
+ European Telecommunications Standards Institute (ETSI) [ETSIMEC],
+ whose initial focus was to improve the QoE by leveraging intelligence
+ at the cellular (e.g., 3GPP technologies like LTE) access edge, and
+ the scope is now being extended to support access technologies beyond
+ 3GPP. The applicability of the framework described in this document
+ to the MEC platform has been evaluated and tested in different
+ network configurations by the authors.
+
+ The NCM can be hosted on a MEC cloud server that is located in the
+ user-plane path at the edge of the multi-technology access network.
+ The NCM and CCM can negotiate the network path combinations based on
+ an application's needs and the necessary user-plane protocols to be
+ used across the multiple paths. The network conditions reported by
+ the CCM to the NCM can be complemented by a Radio Analytics
+ application [ETSIRNIS] residing at the MEC cloud server to configure
+ the uplink and downlink access paths according to changing radio and
+ congestion conditions.
+
+ The user-plane functional element, N-MADP, can either be collocated
+ with the NCM at the MEC cloud server (e.g., MEC-hosted applications)
+ or placed at a separate network element like a common user-plane
+ gateway across the multiple networks.
+
+ Also, even in scenarios where an N-MADP is not deployed, the NCM can
+ be used to augment the traffic-steering decisions at the client.
+
+ The aim of these enhancements is to improve the end user's QoE by
+ leveraging the best network path based on an application's needs and
+ network conditions, and building on the advantages of significantly
+ reduced latency and the dynamic and real-time exposure of radio
+ network information available at the MEC.
+
+17. Related Work in Other Industry and Standards Forums
+
+ The MAMS framework described in this document has been incorporated
+ or is proposed for incorporation as a solution to address multi-
+ access integration in multiple industry forums and standards. This
+ section describes the related work in other industry forums and the
+ standards organizations.
+
+ Wireless Broadband Alliance industry partners have published a white
+ paper that describes the applicability of different technologies for
+ multi-access integration to different deployments as part of their
+ "Unlicensed Integration with 5G Networks" project [WBAUnl5G]. The
+ white paper includes the MAMS framework described in this document as
+ a technology for integrating unlicensed (Wi-Fi) networks with 5G
+ networks above the 5G core network.
+
+ The 3GPP is developing a technical report as part of its work item
+ Study on Access Traffic Steering, Switching, and Splitting (ATSSS).
+ That report, TR 23.793 [ATSSS], contains a number of potential
+ solutions; Solution 1 in [ATSSS] utilizes a separate control plane
+ for the flexible negotiation of user-plane protocols and path
+ measurements in a way that is similar to the MAMS architecture
+ described in this document.
+
+ The Small Cell Forum (SCF) [SCFTECH5G] plans to develop a white paper
+ as part of its work item on LTE/5G and Wi-Fi. There is a proposal to
+ include MAMS in this white paper.
+
+ The ETSI Multi-access Edge Computing Phase 2 technical work is
+ examining many aspects of this work, including use cases for
+ optimizing QoE and resource utilization. The MAMS architecture and
+ procedures outlined in this document are included in the ETSI's use
+ cases and requirements document [ETSIMAMS].
+
+18. IANA Considerations
+
+ This document has no IANA actions.
+
+19. References
+
+19.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC4301] Kent, S. and K. Seo, "Security Architecture for the
+ Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
+ December 2005, <https://www.rfc-editor.org/info/rfc4301>.
+
+ [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>.
+
+19.2. Informative References
+
+ [ANDSF] 3rd Generation Partnership Project, "Access Network
+ Discovery and Selection Function (ANDSF) Management Object
+ (MO)", 3GPP TS 24.312 version 15.0.0, Technical
+ Specification Group Core Network and Terminals, June 2018,
+ <https://www.3gpp.org/ftp//Specs/
+ archive/24_series/24.312/24312-f00.zip>.
+
+ [ATSSS] 3rd Generation Partnership Project, "Study on access
+ traffic steering, switch and splitting support in the 5G
+ System (5GS) architecture", Work in Progress, 3GPP TR
+ 23.793 v16.0.0, December 2018,
+ <https://www.3gpp.org/ftp/Specs/
+ archive/23_series/23.793/>.
+
+ [ETSIMAMS] European Telecommunications Standards Institute, "Multi-
+ access Edge Computing (MEC); Phase 2: Use Cases and
+ Requirements", ETSI GS MEC 002 v2.1.1, October 2018,
+ <https://www.etsi.org/deliver/etsi_gs/
+ MEC/001_099/002/02.01.01_60/gs_MEC002v020101p.pdf>.
+
+ [ETSIMEC] European Telecommunications Standards Institute, "Multi-
+ access Edge Computing (MEC)",
+ <https://www.etsi.org/technologies/multi-access-edge-
+ computing>.
+
+ [ETSIRNIS] European Telecommunications Standards Institute, "Mobile
+ Edge Computing (MEC) Radio Network Information API", ETSI
+ GS MEC 012 v1.1.1, July 2017,
+ <https://www.etsi.org/deliver/etsi_gs/
+ MEC/001_099/012/01.01.01_60/gs_MEC012v010101p.pdf>.
+
+ [IEEE-80211]
+ IEEE, "IEEE Standard for Information technology-
+ Telecommunications and information exchange between
+ systems - Local and metropolitan area networks-Specific
+ requirements - Part 11: Wireless LAN Medium Access Control
+ (MAC) and Physical Layer (PHY) Specifications",
+ IEEE 802.11-2016,
+ <https://ieeexplore.ieee.org/document/7786995>.
+
+ [INTAREA-GMA]
+ Zhu, J. and S. Kanugovi, "Generic Multi-Access (GMA)
+ Convergence Encapsulation Protocols", Work in Progress,
+ Internet-Draft, draft-zhu-intarea-gma-05, 16 December
+ 2019,
+ <https://tools.ietf.org/html/draft-zhu-intarea-gma-05>.
+
+ [INTAREA-MAMS]
+ Zhu, J., Seo, S., Kanugovi, S., and S. Peng, "User-Plane
+ Protocols for Multiple Access Management Service", Work in
+ Progress, Internet-Draft, draft-zhu-intarea-mams-user-
+ protocol-09, 4 March 2020, <https://tools.ietf.org/html/
+ draft-zhu-intarea-mams-user-protocol-09>.
+
+ [ITU-E212] International Telecommunication Union, "The international
+ identification plan for public networks and
+ subscriptions", ITU-T Recommendation E.212, September
+ 2016, <https://www.itu.int/rec/T-REC-E.212-201609-I/en>.
+
+ [QUIC-MULTIPATH]
+ Coninck, Q. and O. Bonaventure, "Multipath Extensions for
+ QUIC (MP-QUIC)", Work in Progress, Internet-Draft, draft-
+ deconinck-quic-multipath-04, 5 March 2020,
+ <https://tools.ietf.org/html/draft-deconinck-quic-
+ multipath-04>.
+
+ [RFC2784] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P.
+ Traina, "Generic Routing Encapsulation (GRE)", RFC 2784,
+ DOI 10.17487/RFC2784, March 2000,
+ <https://www.rfc-editor.org/info/rfc2784>.
+
+ [RFC2890] Dommety, G., "Key and Sequence Number Extensions to GRE",
+ RFC 2890, DOI 10.17487/RFC2890, September 2000,
+ <https://www.rfc-editor.org/info/rfc2890>.
+
+ [RFC3948] Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M.
+ Stenberg, "UDP Encapsulation of IPsec ESP Packets",
+ RFC 3948, DOI 10.17487/RFC3948, January 2005,
+ <https://www.rfc-editor.org/info/rfc3948>.
+
+ [RFC4555] Eronen, P., "IKEv2 Mobility and Multihoming Protocol
+ (MOBIKE)", RFC 4555, DOI 10.17487/RFC4555, June 2006,
+ <https://www.rfc-editor.org/info/rfc4555>.
+
+ [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol",
+ RFC 4960, DOI 10.17487/RFC4960, September 2007,
+ <https://www.rfc-editor.org/info/rfc4960>.
+
+ [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
+ Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
+ January 2012, <https://www.rfc-editor.org/info/rfc6347>.
+
+ [RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol",
+ RFC 6455, DOI 10.17487/RFC6455, December 2011,
+ <https://www.rfc-editor.org/info/rfc6455>.
+
+ [RFC6824] Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
+ "TCP Extensions for Multipath Operation with Multiple
+ Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013,
+ <https://www.rfc-editor.org/info/rfc6824>.
+
+ [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
+ Protocol (HTTP/1.1): Semantics and Content", RFC 7231,
+ DOI 10.17487/RFC7231, June 2014,
+ <https://www.rfc-editor.org/info/rfc7231>.
+
+ [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
+ Kivinen, "Internet Key Exchange Protocol Version 2
+ (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
+ 2014, <https://www.rfc-editor.org/info/rfc7296>.
+
+ [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
+ Interchange Format", STD 90, RFC 8259,
+ DOI 10.17487/RFC8259, December 2017,
+ <https://www.rfc-editor.org/info/rfc8259>.
+
+ [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
+ Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
+ <https://www.rfc-editor.org/info/rfc8446>.
+
+ [SCFTECH5G]
+ Small Cell Forum, "Small Cell Forum", <https://scf.io/>.
+
+ [ServDesc3GPP]
+ 3rd Generation Partnership Project, "General Packet Radio
+ Service (GPRS); Service description; Stage 2", 3GPP TS
+ 23.060 version 16.0.0, Technical Specification Group
+ Services and System Aspects, March 2019,
+ <https://www.3gpp.org/ftp/Specs/
+ archive/23_series/23.060/23060-g00.zip>.
+
+ [TCPM-CONVERTERS]
+ Bonaventure, O., Boucadair, M., Gundavelli, S., Seo, S.,
+ and B. Hesmans, "0-RTT TCP Convert Protocol", Work in
+ Progress, Internet-Draft, draft-ietf-tcpm-converters-19,
+ 22 March 2020, <https://tools.ietf.org/html/draft-ietf-
+ tcpm-converters-19>.
+
+ [WBAUnl5G] Wireless Broadband Alliance, "Unlicensed Integration with
+ 5G Networks", <https://wballiance.com/resource/unlicensed-
+ integration-with-5g-networks/>.
+
+Appendix A. MAMS Control-Plane Optimization over Secure Connections
+
+ This appendix is informative, and provides indicative information
+ about how MAMS operates.
+
+ If the connection between the CCM and the NCM over which the MAMS
+ control-plane messages are transported is assumed to be secure, UDP
+ is used as the transport for management and control messages between
+ the NCM and the CCM (see Figure 23).
+
+
+ +-------------------------------------------------+
+ | Multi-Access (MX) Control Message |
+ |-------------------------------------------------|
+ | UDP |
+ |-------------------------------------------------|
+
+ Figure 23: UDP-Based MAMS Control-Plane Protocol Stack
+
+Appendix B. MAMS Application Interface
+
+ This appendix describes the MAMS Application Interface. It does not
+ provide normative text for the definition of the MAMS framework or
+ protocols, but offers additional information that may be used to
+ construct a system based on the MAMS framework.
+
+B.1. Overall Design
+
+ The CCM hosts an HTTPS server for applications to communicate and
+ request services. This document assumes, from a security point of
+ view, that all CCMs and the communicating application instances are
+ hosted in a single administrative domain.
+
+ The content of messages is described in JavaScript Object Notation
+ (JSON) format. They offer RESTful APIs for communication.
+
+ The exact mechanism regarding how the application knows about the
+ endpoint of the CCM is out of scope for this document. This
+ mechanism may instead be provided as part of the application
+ settings.
+
+B.2. Notation
+
+ The documentation of APIs is provided in the OpenAPI format, using
+ Swagger v2.0. See Appendix D.
+
+B.3. Error Indication
+
+ For every API, there could be an error response if the objective of
+ the API could not be met; see [RFC7231].
+
+B.4. CCM APIs
+
+ The following subsections describe the APIs exposed by the CCM to the
+ applications.
+
+B.4.1. GET Capabilities
+
+ The CCM provides an HTTPS GET interface as "/ccm/v1.0/capabilities"
+ for the application to query the capabilities supported by the CCM
+ instance.
+
+
+ +---------+ +-----------+
+ | | | |
+ | App |--------- HTTPS GET / Capabilities -------->| CCM |
+ | | | |
+ +---------+ +-----------+
+
+ Figure 24: CCM API - GET Procedures
+
+ The CCM shall provide information regarding its capabilities as
+ follows:
+
+ * Supported Features: One or more of the "Feature Name" values, as
+ defined in the MX Feature Activation List parameter of the MX
+ Capability Request (Appendix C.2.5).
+
+ * Supported Connections: Supported connection types and connection
+ IDs.
+
+ * Supported MX Adaptation Layers: List of MX Adaptation Layer
+ protocols supported by the N-MADP instance, along with the
+ connection types where these are supported and their respective
+ parameters.
+
+ * Supported MX Convergence Layers: List of supported MX Convergence
+ Layer protocols, along with the parameters associated with the
+ respective convergence technique.
+
+B.4.2. Posting Application Requirements
+
+ The CCM provides an HTTPS POST interface as "/ccm/v1.0/
+ app_requirements" for the application to post the needs of the
+ application data streams to the CCM instance.
+
+ +---------+ +-----------+
+ | | | |
+ | App |-------- HTTPS POST / App Requirements ---->| CCM |
+ | | | |
+ +---------+ +-----------+
+
+ Figure 25: CCM API - POST Procedures
+
+ The CCM shall provide for the application to post the following
+ requirements for its different data streams:
+
+ * Number of Data Stream Types.
+
+ * For each data stream type, specify the following parameters for
+ the link, which are preferred by the application:
+
+ - Protocol Type: Transport-layer protocol associated with the
+ application data stream packets.
+
+ - Port Range: Supported connection types and connection IDs.
+
+ - Traffic QoS: Quality of service parameters, as follows:
+
+ o Bandwidth
+
+ o Latency
+
+ o Jitter
+
+B.4.3. Getting Predictive Link Parameters
+
+ The CCM provides an HTTPS GET interface as "/ccm/v1.0/
+ predictive_link_params" for the application to get the predicted link
+ parameters from the CCM instance.
+
+ +---------+ +-----------+
+ | | | |
+ | App |----- HTTPS GET / Predictive Link Params --->| CCM |
+ | | | |
+ +---------+ +-----------+
+
+ Figure 26: CCM API - Getting Predictive Link Parameters
+
+ The CCM asks the NCM for link parameters via the MAMS Network
+ Analytics Request Procedure (Section 8.12) and includes the
+ information in response to the API invocation.
+
+ * Number of Delivery Connections.
+
+ For each delivery connection, include the following:
+
+ - Access Link Identifier:
+
+ o Connection Type
+
+ o Connection ID
+
+ - Link Quality Indicator
+
+ o Bandwidth:
+
+ + Predicted Value (Mbps)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+ o Jitter:
+
+ + Predicted Value (in seconds)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+ o Latency:
+
+ + Predicted Value (in seconds)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+ o Signal Quality
+
+ + If delivery connection type is LTE, LTE_RSRP Predicted
+ Value (dBm)
+
+ + If delivery connection type is LTE, LTE_RSRQ Predicted
+ Value (dBm)
+
+ + If delivery connection type is 5G NR, NR_RSRP Predicted
+ Value (dBm)
+
+ + If delivery connection type is 5G NR, NR_RSRQ Predicted
+ Value (dBm)
+
+ + If delivery connection type is Wi-Fi, WLAN_RSSI Predicted
+ Value (dBm)
+
+ + Likelihood (percent)
+
+ + Prediction Validity (Validity Time, in seconds)
+
+Appendix C. MAMS Control-Plane Messages Described Using JSON
+
+ MAMS control-plane messages are exchanged between the CCM and the
+ NCM. This non-normative appendix describes the format and content of
+ messages using JSON [RFC8259].
+
+C.1. Protocol Specification: General Processing
+
+C.1.1. Notation
+
+ This document uses JSONString, JSONNumber, and JSONBool to indicate
+ the JSON string, number, and boolean types, respectively.
+
+ This document uses an adaptation of the C-style struct notation to
+ describe JSON objects. A JSON object consists of name/value pairs.
+ This document refers to each pair as a field. In some contexts, this
+ document also refers to a field as an attribute. The name of a
+ field/attribute may be referred to as the key. An optional field is
+ enclosed by "[ ]". In the definitions, the JSON names of the fields
+ are case sensitive. An array is indicated by two numbers in angle
+ brackets, <m..n>, where m indicates the minimal number of values and
+ n is the maximum. When this document uses * for n, it means no upper
+ bound.
+
+ For example, the text below describes a new type Type4, with three
+ fields: "name1", "name2", and "name3", respectively. The "name3"
+ field is optional, and the "name2" field is an array of at least one
+ value.
+
+ object { Type1 name1; Type2 name2 <1..*>; [Type3 name3;] } Type4;
+
+ This document uses subtyping to denote that one type is derived from
+ another type. The example below denotes that TypeDerived is derived
+ from TypeBase. TypeDerived includes all fields defined in TypeBase.
+ If TypeBase does not have a "name1" field, TypeDerived will have a
+ new field called "name1". If TypeBase already has a field called
+ "name1" but with a different type, TypeDerived will have a field
+ called "name1" with the type defined in TypeDerived (i.e., Type1 in
+ the example).
+
+ object { Type1 name1; } TypeDerived : TypeBase;
+
+ Note that, despite the notation, no standard, machine-readable
+ interface definition or schema is provided in this document.
+ Extension documents may describe these as necessary.
+
+ For compatibility with publishing requirements, line breaks have been
+ inserted inside long JSON strings, with the following continuation
+ lines indented. To form the valid JSON example, any line breaks
+ inside a string must be replaced with a space and any other white
+ space after the line break removed.
+
+C.1.2. Discovery Procedure
+
+C.1.2.1. MX Discover Message
+
+ This message is the first message sent by the CCM to discover the
+ presence of NCM in the network. It contains only the base
+ information as described in Appendix C.2.1 with message_type set as
+ mx_discover.
+
+ The representation of the message is as follows:
+
+ object {
+ [JSONString MCC_MNC_Tuple;]
+ } MXDiscover : MXBase;
+
+C.1.3. System Information Procedure
+
+C.1.3.1. MX System Info Message
+
+ This message is sent by the NCM to the CCM to inform the endpoints
+ that the NCM supports MAMS functionality. In addition to the base
+ information (Appendix C.2.1), it contains the following information:
+
+ (a) NCM Connections (Appendix C.2.3).
+
+ The representation of the message is as follows:
+
+ object {
+ NCMConnections ncm_connections;
+ } MXSystemInfo : MXBase;
+
+C.1.4. Capability Exchange Procedure
+
+C.1.4.1. MX Capability Request
+
+ This message is sent by the CCM to the NCM to indicate the
+ capabilities of the CCM instance available to the NCM indicated in
+ the System Info message earlier. In addition to the base information
+ (Appendix C.2.1), it contains the following information:
+
+ (a) Features and their activation status: See Appendix C.2.5.
+
+ (b) Number of Anchor Connections: The number of anchor connections
+ (toward the core) supported by the NCM.
+
+ (c) Anchor connections: See Appendix C.2.6.
+
+ (d) Number of Delivery Connections: The number of delivery
+ connections (toward the access) supported by the NCM.
+
+ (e) Delivery connections: See Appendix C.2.7.
+
+ (f) Convergence methods: See Appendix C.2.9.
+
+ (g) Adaptation methods: See Appendix C.2.10.
+
+ The representation of the message is as follows:
+
+ object {
+ FeaturesActive feature_active;
+ JSONNumber num_anchor_connections;
+ AnchorConnections anchor_connections;
+ JSONNumber num_delivery_connections;
+ DeliveryConnections delivery_connections;
+ ConvergenceMethods convergence_methods;
+ AdaptationMethods adaptation_methods
+ } MXCapabilityReq : MXBase;
+
+C.1.4.2. MX Capability Response
+
+ This message is sent by the NCM to the CCM to indicate the
+ capabilities of the NCM instance and unique session identifier for
+ the CCM. In addition to the base information (Appendix C.2.1), it
+ contains the following information:
+
+ (a) Features and their activation status: See Appendix C.2.5.
+
+ (b) Number of Anchor Connections: The number of anchor connections
+ (toward the core) supported by the NCM.
+
+ (c) Anchor connections: See Appendix C.2.6.
+
+ (d) Number of Delivery Connections: The number of delivery
+ connections (toward the access) supported by the NCM.
+
+ (e) Delivery connections: See Appendix C.2.7.
+
+ (f) Convergence methods: See Appendix C.2.9.
+
+ (g) Adaptation methods: See Appendix C.2.10.
+
+ (h) Unique Session ID: This uniquely identifies the session between
+ the CCM and the NCM in a network. See Appendix C.2.2.
+
+ The representation of the message is as follows:
+
+ object {
+ FeaturesActive feature_active;
+ JSONNumber num_anchor_connections;
+ AnchorConnections anchor_connections;
+ JSONNumber num_delivery_connections;
+ DeliveryConnections delivery_connections;
+ ConvergenceMethods convergence_methods;
+ AdaptationMethods adaptation_methods
+ UniqueSessionId unique_session_id;
+ } MXCapabilityRsp : MXBase;
+
+C.1.4.3. MX Capability Acknowledge
+
+ This message is sent by the CCM to the NCM to indicate acceptance of
+ capabilities advertised by the NCM in an earlier MX Capability
+ Response message. In addition to the base information
+ (Appendix C.2.1), it contains the following information:
+
+ (a) Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response. See Appendix C.2.2.
+
+ (b) Capability Acknowledgment: Indicates either acceptance or
+ rejection of the capabilities sent by the CCM. Can use either
+ "MX_ACCEPT" or "MX_REJECT" as acceptable values.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ JSONString capability_ack;
+ } MXCapabilityAck : MXBase;
+
+C.1.5. User-Plane Configuration Procedure
+
+C.1.5.1. MX User-Plane Configuration Request
+
+ This message is sent by the NCM to the CCM to configure the user
+ plane for MAMS. In addition to the base information
+ (Appendix C.2.1), it contains the following information:
+
+ (a) Number of Anchor Connections: The number of anchor connections
+ supported by the NCM.
+
+ (b) Setup of anchor connections: See Appendix C.2.11.
+
+ The representation of the message is as follows:
+
+ object {
+ JSONNumber num_anchor_connections;
+ SetupAnchorConns anchor_connections;
+ } MXUPSetupConfigReq : MXBase;
+
+C.1.5.2. MX User-Plane Configuration Confirmation
+
+ This message is the confirmation of the user-plane setup message sent
+ from the CCM after successfully configuring the user plane on the
+ client. This message contains the following information:
+
+ (a) Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response. See Appendix C.2.2.
+
+ (b) MX probe parameters (included if probing is supported).
+
+ (1) Probe Port: UDP port for accepting probe message.
+
+ (2) Anchor connection ID: Identifier of the anchor connection
+ to be used for probe function. Provided in the MX UP Setup
+ Configuration Request.
+
+ (3) MX Configuration ID: This parameter is included only if the
+ MX Configuration ID parameter is available from the user-
+ plane setup configuration. It indicates the MX
+ configuration ID of the anchor connection to be used for
+ probe function.
+
+ (c) The following information is required for each delivery
+ connection:
+
+ (1) Connection ID: Delivery connection ID supported by the
+ client.
+
+ (2) Client Adaptation-Layer Parameters: If the UDP Adaptation
+ Layer is in use, then the UDP port to be used on the C-MADP
+ side.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ [ProbeParam probe_param;]
+ JSONNumber num_delivery_conn;
+ ClientParam client_params <1...*>;
+ } MXUPSetupConfigCnf : MXBase;
+
+ Where ProbeParam is defined as follows:
+
+ object {
+ JSONNumber probe_port;
+ JSONNumber anchor_conn_id;
+ [JSONNumber mx_configuration_id;]
+ } ProbeParam;
+
+ Where ClientParam is defined as follows:
+
+ object {
+ JSONNumber connection_id;
+ [AdaptationParam adapt_param;]
+ } ClientParam;
+
+ Where AdaptationParam is defined as follows:
+
+ object {
+ JSONNumber udp_adapt_port;
+ } AdaptationParam;
+
+C.1.6. Reconfiguration Procedure
+
+C.1.6.1. MX Reconfiguration Request
+
+ This message is sent by the CCM to the NCM in the case of
+ reconfiguration of any of the connections from the client's side. In
+ addition to the base information (Appendix C.2.1), it contains the
+ following information:
+
+ (a) Unique Session ID: Identifier for the CCM-NCM association
+ Appendix C.2.2.
+
+ (b) Reconfiguration Action: The reconfiguration action type can be
+ one of "setup", "release", or "update".
+
+ (c) Connection ID: Connection ID for which the reconfiguration is
+ taking place.
+
+ (d) IP address: Included if Reconfiguration Action is either "setup"
+ or "update".
+
+ (e) SSID: If the connection type is Wi-Fi, then this parameter
+ contains the SSID to which the client has attached.
+
+ (f) MTU of the connection: The MTU of the delivery path that is
+ calculated at the client for use by the NCM to configure
+ fragmentation and concatenation procedures at the N-MADP.
+
+ (g) Connection Status: This parameter indicates whether the
+ connection is currently "disabled", "enabled", or "connected".
+ Default: "connected".
+
+ (h) Delivery Node ID: Identity of the node to which the client is
+ attached. In the case of LTE, this is an ECGI. In the case of
+ Wi-Fi, this is an AP ID or a MAC address.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ JSONString reconf_action;
+ JSONNumber connection_id;
+ JSONString ip_address;
+ JSONString ssid;
+ JSONNumber mtu_size;
+ JSONString connection_status;
+ [JSONString delivery_node_id;]
+ } MXReconfReq : MXBase;
+
+C.1.6.2. MX Reconfiguration Response
+
+ This message is sent by the NCM to the CCM as a confirmation of the
+ received MX Reconfiguration Request and contains only the base
+ information (as defined in Appendix C.2.1).
+
+ The representation of the message is as follows:
+
+ object {
+ } MXReconfRsp : MXBase;
+
+C.1.7. Path Estimation Procedure
+
+C.1.7.1. MX Path Estimation Request
+
+ This message is sent by the NCM toward the CCM to configure the CCM
+ to send MX Path Estimation Results. In addition to the base
+ information (Appendix C.2.1), it contains the following information:
+
+ (a) Connection ID: ID of the connection for which the path
+ estimation report is required.
+
+ (b) Init Probe Test Duration: Duration of initial probe test, in
+ milliseconds.
+
+ (c) Init Probe Test Rate: Initial testing rate, in megabits per
+ second.
+
+ (d) Init Probe Size: Size of each packet for initial probe, in
+ bytes.
+
+ (e) Init Probe-ACK: If an acknowledgment for probe is required.
+ (Possible values: "yes", "no")
+
+ (f) Active Probe Frequency: Frequency, in milliseconds, at which the
+ active probes shall be sent.
+
+ (g) Active Probe Size: Size of the active probe, in bytes.
+
+ (h) Active Probe Duration: Duration, in seconds, for which the
+ active probe shall be performed.
+
+ (i) Active Probe-ACK: If an acknowledgment for probe is required.
+ (Possible values: "yes", "no")
+
+ The representation of the message is as follows:
+
+ object {
+ JSONNumber connection_id;
+ JSONNumber init_probe_test_duration_ms;
+ JSONNumber init_probe_test_rate_Mbps;
+ JSONNumber init_probe_size_bytes;
+ JSONString init_probe_ack_req;
+ JSONNumber active_probe_freq_ms;
+ JSONNumber active_probe_size_bytes;
+ JSONNumber active_probe_duration_sec;
+ JSONString active_probe_ack_req;
+ } MXPathEstReq : MXBase;
+
+C.1.7.2. MX Path Estimation Results
+
+ This message is sent by the CCM to the NCM to report on the probe
+ estimation configured by the NCM. In addition to the base
+ information (Appendix C.2.1), it contains the following information:
+
+ (a) Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response. See Appendix C.2.2.
+
+ (b) Connection ID: ID of the connection for which the MX Path
+ Estimation Results message is required.
+
+ (c) Init Probe Results: See Appendix C.2.12.
+
+ (d) Active Probe Results: See Appendix C.2.13.
+
+ The representation of the message is as follows:
+
+ object {
+ JSONNumber connection_id;
+ UniqueSessionId unique_session_id;
+ [InitProbeResults init_probe_results;]
+ [ActiveProbeResults active_probe_results;]
+ } MXPathEstResults : MXBase;
+
+C.1.8. Traffic-Steering Procedure
+
+C.1.8.1. MX Traffic Steering Request
+
+ This message is sent by the NCM to the CCM to enable traffic steering
+ on the delivery side in uplink and downlink configurations. In
+ addition to the base information (Appendix C.2.1), it contains the
+ following information:
+
+ (a) Connection ID: Anchor connection number for which the traffic
+ steering is being defined.
+
+ (b) MX Configuration ID: MX configuration for which the traffic
+ steering is being defined.
+
+ (c) Downlink Delivery: See Appendix C.2.14.
+
+ (d) Default UL Delivery: The default delivery connection for the
+ uplink. All traffic should be delivered on this connection in
+ the uplink direction, and the Traffic Flow Template (TFT) filter
+ should be applied only for the traffic mentioned in Uplink
+ Delivery.
+
+ (e) Uplink Delivery: See Appendix C.2.15.
+
+ (f) Features and their activation status: See Appendix C.2.5.
+
+ The representation of the message is as follows:
+
+ object {
+ JSONNumber connection_id;
+ [JSONNumber mx_configuration_id;]
+ DLDelivery downlink_delivery;
+ JSONNumber default_uplink_delivery;
+ ULDelivery uplink_delivery;
+ FeaturesActive feature_active;
+ } MXTrafficSteeringReq : MXBase;
+
+C.1.8.2. MX Traffic Steering Response
+
+ This message is a response to an MX Traffic Steering Request from the
+ CCM to the NCM. In addition to the base information
+ (Appendix C.2.1), it contains the following information:
+
+ (a) Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response. See Appendix C.2.2.
+
+ (b) Features and their activation status: See Appendix C.2.5.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ FeaturesActive feature_active;
+ } MXTrafficSteeringResp : MXBase;
+
+C.1.9. MAMS Application MADP Association
+
+C.1.9.1. MX Application MADP Association Request
+
+ This message is sent by the CCM to the NCM to select MADP instances
+ provided earlier in the MX UP Setup Configuration Request, based on
+ requirements for the applications.
+
+ In addition to the base information (Appendix C.2.1), it contains the
+ following:
+
+ (a) Unique Session ID: This uniquely identifies the session between
+ the CCM and the NCM in a network. See Appendix C.2.2.
+
+ (b) A list of MX Application MADP Associations, with each entry as
+ follows:
+
+ (1) Connection ID: Represents the anchor connection number of
+ the MADP instance.
+
+ (2) MX Configuration ID: Identifies the MX configuration of the
+ MADP instance.
+
+ (3) Traffic Flow Template Uplink: Traffic Flow Template, as
+ defined in Appendix C.2.16, to be used in the uplink
+ direction.
+
+ (4) Traffic Flow Template Downlink: Traffic Flow Template, as
+ defined in Appendix C.2.16, to be used in the downlink
+ direction.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ MXAppMADPAssoc app_madp_assoc_list <1..*>;
+ } MXAppMADPAssocReq : MXBase;
+
+ Where each measurement MXAppMADPAssoc is represented by the
+ following:
+
+ object {
+ JSONNumber connection_id;
+ JSONNumber mx_configuration_id
+ TrafficFlowTemplate tft_ul_list <1..*>;
+ TrafficFlowTemplate tft_dl_list <1..*>;
+ } MXAppMADPAssoc;
+
+C.1.9.2. MX Application MADP Association Response
+
+ This message is sent by the NCM to the CCM to confirm the selected
+ MADP instances provided in the MX Application MADP Association
+ Request by the CCM.
+
+ In addition to the base information (Appendix C.2.1), it contains
+ information if the request has been successful.
+
+ The representation of the message is as follows:
+
+ object {
+ JSONBool is_success;
+ } MXAppMADPAssocResp : MXBase;
+
+C.1.10. MX SSID Indication
+
+ This message is sent by the NCM to the CCM to indicate the list of
+ allowed SSIDs that are supported by the MAMS entity on the network
+ side. It contains the list of SSIDs.
+
+ Each SSID consists of the type of SSID (which can be one of the
+ following: SSID, BSSID, or HESSID) and the SSID itself.
+
+ The representation of the message is as follows:
+
+ object {
+ SSID ssid_list <1..*>;
+ } MXSSIDIndication : MXBase;
+
+ Where each SSID is defined as follows:
+
+ object {
+ JSONString ssid_type;
+ JSONString ssid;
+ } SSID;
+
+C.1.11. Measurements
+
+C.1.11.1. MX Measurement Configuration
+
+ This message is sent from the NCM to the CCM to configure the period
+ measurement reporting at the CCM. The message contains a list of
+ measurement configurations, with each element containing the
+ following information:
+
+ (a) Connection ID: Connection ID of the delivery connection for
+ which the reporting is being configured.
+
+ (b) Connection Type: Connection type for which the reporting is
+ being configured. Can be "LTE", "Wi-Fi", "5G_NR".
+
+ (c) Measurement Report Configuration: Actual report configuration
+ based on the Connection Type, as defined in Appendix C.2.17.
+
+ The representation of the message is as follows:
+
+ object {
+ MeasReportConf measurement_configuration <1..*>;
+ } MXMeasReportConf : MXBase;
+
+ Where each measurement MeasReportConf is represented by the
+ following:
+
+ object {
+ JSONNumber connection_id;
+ JSONString connection_type;
+ MeasReportConfs meas_rep_conf <1..*>;
+ } MeasReportConf;
+
+C.1.11.2. MX Measurement Report
+
+ This message is periodically sent by the CCM to the NCM after
+ measurement configuration. In addition to the base information, it
+ contains the following information:
+
+ (a) Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response. Described in Appendix C.2.2.
+
+ (b) Measurement report for each delivery connection is measured by
+ the client as defined in Appendix C.2.18.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ MXMeasRep measurement_reports <1..*>;
+ } MXMeasurementReport : MXBase;
+
+C.1.12. Keep-Alive
+
+C.1.12.1. MX Keep-Alive Request
+
+ An MX Keep-Alive Request can be sent from either the NCM or the CCM
+ on expiry of the Keep-Alive timer or a handover event. The peer
+ shall respond to this request with an MX Keep-Alive Response. In the
+ case of no response from the peer, the MAMS connection shall be
+ assumed to be broken, and the CCM shall establish a new connection by
+ sending MX Discover messages.
+
+ In addition to the base information, it contains the following
+ information:
+
+ (a) Keep-Alive Reason: Reason for sending this message, can be
+ "Timeout" or "Handover".
+
+ (b) Unique Session ID: Identifier for the CCM-NCM association
+ Appendix C.2.2.
+
+ (c) Connection ID: Connection ID for which handover is detected, if
+ the reason is "Handover".
+
+ (d) Delivery Node ID: The target delivery node ID (ECGI or Wi-Fi AP
+ ID/MAC address) to which the handover is executed.
+
+ The representation of the message is as follows:
+
+ object {
+ JSONString keep_alive_reason;
+ UniqueSessionId unique_session_id;
+ JSONNumber connection_id;
+ JSONString delivery_node_id;
+ } MXKeepAliveReq : MXBase;
+
+C.1.12.2. MX Keep-Alive Response
+
+ On receiving an MX Keep-Alive Request from a peer, the NCM/CCM shall
+ immediately respond with an MX Keep-Alive Response on the same
+ delivery path from where the request arrived. In addition to the
+ base information, it contains the unique session identifier for the
+ CCM-NCM association (defined in Appendix C.2.2)
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ } MXKeepAliveResp : MXBase;
+
+C.1.13. Session Termination Procedure
+
+C.1.13.1. MX Session Termination Request
+
+ In the event where the NCM or CCM can no longer handle MAMS for any
+ reason, it can send an MX Session Termination Request to the peer.
+ In addition to the base information, it contains a Unique Session ID
+ and the reason for the termination; this can be "MX_NORMAL_RELEASE",
+ "MX_NO_RESPONSE", or "INTERNAL_ERROR".
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ JSONString reason;
+ } MXSessionTerminationReq : MXBase;
+
+C.1.13.2. MX Session Termination Response
+
+ On receipt of an MX Session Termination Request from a peer, the NCM/
+ CCM shall respond with MX Session Termination Response on the same
+ delivery path where the request arrived and clean up the MAMS-related
+ resources and settings. The CCM shall reinitiate a new session with
+ MX Discover messages.
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ } MXSessionTerminationResp : MXBase;
+
+C.1.14. Network Analytics
+
+C.1.14.1. MX Network Analytics Request
+
+ This message is sent by the CCM to the NCM to request parameters like
+ bandwidth, jitter, latency, and signal quality predicted by the
+ network analytics function. In addition to the base information, it
+ contains the following parameter:
+
+ (a) Unique Session ID: Same identifier as the identifier provided in
+ the MX Capability Response. Described in Appendix C.2.2.
+
+ (b) Parameter List: List of parameters in which the CCM is
+ interested: one or more of "bandwidth", "jitter", "latency", and
+ "signal_quality".
+
+ The representation of the message is as follows:
+
+ object {
+ UniqueSessionId unique_session_id;
+ JSONString params <1..*>;
+ } MXNetAnalyticsReq : MXBase;
+
+ Where the params object can take one or more of the following values:
+
+ "bandwidth"
+ "jitter"
+ "latency"
+ "signal_quality"
+
+C.1.14.2. MX Network Analytics Response
+
+ This message is sent by the NCM to the CCM in response to the MX
+ Network Analytics Request. For each delivery connection that the
+ client has, the NCM reports the requested parameter predictions and
+ their respective likelihoods (between 1 and 100 percent).
+
+ In addition to the base information, it contains the following
+ parameters:
+
+ (a) Number of Delivery Connections: The number of delivery
+ connections that are currently configured for the client.
+
+ (b) The following information is provided for each delivery
+ connection:
+
+ (1) Connection ID: Connection ID of the delivery connection for
+ which the parameters are being predicted.
+
+ (2) Connection Type: Type of connection. Can be "Wi-Fi",
+ "5G_NR", "MulteFire", or "LTE".
+
+ (3) List of Parameters for which Prediction is requested, where
+ each of the predicted parameters consists of the following:
+
+ (a) Parameter Name: Name of the parameter being predicted.
+ Can be one of "bandwidth", "jitter", "latency", or
+ "signal_quality".
+
+ (b) Additional Parameter: If Parameter name is
+ "signal_quality", then this qualifies the quality
+ parameter like "lte_rsrp", "lte_rsrq", "nr_rsrp",
+ "nr_rsrq", or "wifi_rssi".
+
+ (c) Predicted Value: Provides the predicted value of the
+ parameter and, if applicable, the additional
+ parameter.
+
+ (d) Likelihood: Provides a stochastic likelihood of the
+ predicted value.
+
+ (e) Validity Time: The time duration for which the
+ predictions are valid.
+
+ The representation of the message is as follows:
+
+ object {
+ MXAnalyticsList param_list <1..*>;
+ } MXNetAnalyticsResp : MXBase;
+
+ Where MXAnalyticsList is defined as follows:
+
+ object {
+ JSONNumber connection_id;
+ JSONString connection_type;
+ ParamPredictions predictions <1..*>;
+ } MXAnalyticsList;
+
+ Where each ParamPredictions item is defined as:
+
+ object {
+ JSONString param_name;
+ [JSONString additional_param;]
+ JSONNumber prediction;
+ JSONNumber likelihood;
+ JSONNumber validity_time;
+ } ParamPredictions;
+
+C.2. Protocol Specification: Data Types
+
+C.2.1. MXBase
+
+ This is the base information that every message between the CCM and
+ NCM exchanges shall have as mandatory information. It contains the
+ following information:
+
+ (a) Version: Version of MAMS used.
+
+ (b) Message Type: Message type being sent, where the following are
+ considered valid values:
+
+ "mx_discover"
+ "mx_system_info"
+ "mx_capability_req"
+ "mx_capability_rsp"
+ "mx_capability_ack"
+ "mx_up_setup_conf_req"
+ "mx_up_setup_cnf"
+ "mx_reconf_req"
+ "mx_reconf_rsp"
+ "mx_path_est_req"
+ "mx_path_est_results"
+ "mx_traffic_steering_req"
+ "mx_traffic_steering_rsp"
+ "mx_ssid_indication"
+ "mx_keep_alive_req"
+ "mx_keep_alive_rsp"
+ "mx_measurement_conf"
+ "mx_measurement_report"
+ "mx_session_termination_req"
+ "mx_session_termination_rsp"
+ "mx_app_madp_assoc_req"
+ "mx_app_madp_assoc_rsp"
+ "mx_network_analytics_req"
+ "mx_network_analytics_rsp"
+
+ (c) Sequence Number: Sequence number to uniquely identify a
+ particular message exchange, e.g., MX Capability
+ Request/Response/Acknowledge.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONString version;
+ JSONString message_type;
+ JSONNumber sequence_num;
+ } MXBase;
+
+C.2.2. Unique Session ID
+
+ This data type represents the unique session ID between a CCM and NCM
+ entity. It contains an NCM ID that is unique in the network and a
+ session ID that is allocated by the NCM for that session. On receipt
+ of the MX Discover message, if the session exists, then the old
+ session ID is returned in the MX System Info message; otherwise, the
+ NCM allocates a new session ID for the CCM and sends the new ID in
+ the MX System Info message.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONNumber ncm_id;
+ JSONNumber session_id;
+ } UniqueSessionId;
+
+C.2.3. NCM Connections
+
+ This data type represents the connection available at the NCM for
+ MAMS connectivity toward the client. It contains a list of NCM
+ connections available, where each connection has the following
+ information:
+
+ (a) Connection Information: See Appendix C.2.4.
+
+ (b) NCM Endpoint Information: Contains the IP address and port
+ exposed by the NCM endpoint for the CCM.
+
+ The representation of this data type is as follows:
+
+ object {
+ NCMConnection items <1..*>;
+ } NCMConnections;
+
+ where NCMConnection is defined as:
+
+ object {
+ NCMEndPoint ncm_end_point;
+ } NCMConnection : ConnectionInfo;
+
+ where NCMEndPoint is defined as:
+
+ object {
+ JSONString ip_address;
+ JSONNumber port;
+ } NCMEndPoint;
+
+C.2.4. Connection Information
+
+ This data type provides the mapping of connection ID and connection
+ type. It contains the following information:
+
+ (a) Connection ID: Unique number identifying the connection.
+
+ (b) Connection Type: Type of connection can be "Wi-Fi", "5G_NR",
+ "MulteFire", or "LTE".
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONNumber connection_id;
+ JSONString connection_type;
+ } ConnectionInfo;
+
+C.2.5. Features and Their Activation Status
+
+ This data type provides the list of all features with their
+ activation status. Each feature status contains the following:
+
+ (a) Feature Name: The name of the feature can be one of the
+ following:
+
+ "lossless_switching"
+ "fragmentation"
+ "concatenation"
+ "uplink_aggregation"
+ "downlink_aggregation"
+ "measurement"
+
+ (b) Active status: Activation status of the feature: "true" means
+ that the feature is active, and "false" means that the feature
+ is inactive.
+
+ The representation of this data type is as follows:
+
+ object {
+ FeatureInfo items <1..*>;
+ } FeaturesActive;
+
+ where FeatureInfo is defined as:
+
+ object {
+ JSONString feature_name;
+ JSONBool active;
+ } FeatureInfo;
+
+C.2.6. Anchor Connections
+
+ This data type contains the list of Connection Information items
+ (Appendix C.2.4) that are supported on the anchor (core) side.
+
+ The representation of this data type is as follows:
+
+ object {
+ ConnectionInfo items <1..*>;
+ } AnchorConnections;
+
+C.2.7. Delivery Connections
+
+ This data type contains the list of Connection Information
+ (Appendix C.2.4) that are supported on the delivery (access) side.
+
+ The representation of this data type is as follows:
+
+ object {
+ ConnectionInfo items <1..*>;
+ } DeliveryConnections;
+
+C.2.8. Method Support
+
+ This data type provides the support for a particular convergence or
+ adaptation method. It consists of the following:
+
+ (a) Method: Name of the method.
+
+ (b) Supported: Whether the method listed above is supported or not.
+ Possible values are "true" and "false".
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONString method;
+ JSONBool supported;
+ } MethodSupport;
+
+C.2.9. Convergence Methods
+
+ This data type contains the list of all convergence methods and their
+ support status. The possible convergence methods are:
+
+ "GMA"
+ "MPTCP_Proxy"
+ "GRE_Aggregation_Proxy"
+ "MPQUIC"
+
+ The representation of this data type is as follows:
+
+ object {
+ MethodSupport items <1..*>;
+ } ConvergenceMethods;
+
+C.2.10. Adaptation Methods
+
+ This data type contains the list of all adaptation methods and their
+ support status. The possible adaptation methods are:
+
+ "UDP_without_DTLS"
+ "UDP_with_DTLS"
+ "IPsec"
+ "Client_NAT"
+
+ The representation of this data type is as follows:
+
+ object {
+ MethodSupport items <1..*>;
+ } AdaptationMethods;
+
+C.2.11. Setup of Anchor Connections
+
+ This data type represents the setup configuration for each anchor
+ connection that is required on the client's side. It contains the
+ following information, in addition to the connection ID and type of
+ the anchor connection:
+
+ (a) Number of Active MX Configurations: If more than one active
+ configuration is present for this anchor, then this identifies
+ the number of such connections.
+
+ (b) The following convergence parameters are provided for each
+ active configuration:
+
+ (1) MX Configuration ID: Present if there are multiple active
+ configurations. Identifies the configuration for this MADP
+ instance ID.
+
+ (2) Convergence Method: Convergence method selected. Has to be
+ one of the supported convergence methods listed in
+ Appendix C.2.9.
+
+ (3) Convergence Method Parameters: Described in
+ Appendix C.2.11.1
+
+ (4) Number of Delivery Connections: The number of delivery
+ connections (access side) that are supported for this
+ anchor connection.
+
+ (5) Setup of delivery connections: Described in
+ Appendix C.2.11.2.
+
+ The representation of this data type is as follows:
+
+ object {
+ SetupAnchorConn items <1..*>;
+ } SetupAnchorConns;
+
+ Where each anchor connection configuration is defined as follows:
+
+ object {
+ [JSONNumber num_active_mx_conf;]
+ ConvergenceConfig convergence_config
+ } SetupAnchorConn : ConnectionInfo;
+
+ where each Convergence configuration is defined as follows:
+
+ object {
+ [JSONNumber mx_configuration_id;]
+ JSONString convergence_method;
+ ConvergenceMethodParam convergence_method_params;
+ JSONNumber num_delivery_connections;
+ SetupDeliveryConns delivery_connections;
+ } ConvergenceConfig;
+
+C.2.11.1. Convergence Method Parameters
+
+ This data type represents the parameters used for the convergence
+ method and contains the following:
+
+ (a) Proxy IP: IP address of the proxy that is provided by the
+ selected convergence method.
+
+ (b) Proxy Port: Port of the proxy that is provided by the selected
+ convergence method.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONString proxy_ip;
+ JSONString proxy_port;
+ JSONString client_key;
+ } ConvergenceMethodParam;
+
+C.2.11.2. Setup Delivery Connections
+
+ This is the list of delivery connections and their parameters to be
+ configured on the client. Each delivery connection defined by its
+ connection information (Appendix C.2.4) optionally contains the
+ following:
+
+ (a) Adaptation Method: Selected adaptation method name. This shall
+ be one of the methods listed in Appendix C.2.10.
+
+ (b) Adaptation Method Parameters: Depending on the adaptation
+ method, one or more of the following parameters shall be
+ provided.
+
+ (1) Tunnel IP address
+
+ (2) Tunnel Port number
+
+ (3) Shared Secret
+
+ (4) MX header optimization: If the adaptation method is
+ UDP_without_DTLS or UDP_with_DTLS, and convergence is GMA,
+ then this flag represents whether or not the checksum field
+ and the length field in the IP header of an MX PDU should
+ be recalculated by the MX Convergence Layer. The possible
+ values are "true" and "false". If it is "true", both
+ fields remain unchanged; otherwise, both fields should be
+ recalculated. If this field is not present, then the
+ default of "false" should be considered.
+
+ The representation of this data type is as follows:
+
+ object {
+ SetupDeliveryConn items <1..*>;
+ } SetupDeliveryConns;
+
+ where each "SetupDeliveryConn" consists of the following:
+
+ object {
+ [JSONString adaptation_method;]
+ [AdaptationMethodParam adaptation_method_param;]
+ } SetupDeliveryConn : ConnectionInfo;
+
+ where AdaptationMethodParam is defined as:
+
+ object {
+ JSONString tunnel_ip_addr;
+ JSONString tunnel_end_port;
+ JSONString shared_secret;
+ [JSONBool mx_header_optimization;]
+ } AdaptationMethodParam;
+
+C.2.12. Init Probe Results
+
+ This data type provides the results of the init probe request made by
+ the NCM. It consists of the following information:
+
+ (a) Lost Probes: Percentage of probes lost.
+
+ (b) Probe Delay: Average delay of probe message, in microseconds.
+
+ (c) Probe Rate: Probe rate achieved, in megabits per second.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONNumber lost_probes_percentage;
+ JSONNumber probe_rate_Mbps;
+ } InitProbeResults;
+
+C.2.13. Active Probe Results
+
+ This data type provides the results of the active probe request made
+ by the NCM. It consists of the following information:
+
+ (a) Average Probe Throughput: Average active probe throughput
+ achieved, in megabits per second.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONNumber avg_tput_last_probe_duration_Mbps;
+ } ActiveProbeResults;
+
+C.2.14. Downlink Delivery
+
+ This data type represents the list of connections that are enabled on
+ the delivery side to be used in the downlink direction.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONNumber connection_id <1..*>;
+ } DLDelivery;
+
+C.2.15. Uplink Delivery
+
+ This data type represents the list of connections and parameters
+ enabled for the delivery side to be used in the uplink direction.
+
+ The uplink delivery consists of multiple uplink delivery entities,
+ where each entity consists of a Traffic Flow Template (TFT)
+ (Appendix C.2.16) and a list of connection IDs in the uplink, where
+ traffic qualifying for such a Traffic Flow Template can be
+ redirected.
+
+ The representation of this data type is as follows:
+
+ object {
+ ULDeliveryEntity ul_del <1..*>;
+ } ULDelivery;
+
+ Where each uplink delivery entity consists of the following data
+ type:
+
+ object {
+ TrafficFlowTemplate ul_tft <1..*>;
+ JSONNumber connection_id <1..*>;
+ } ULDeliveryEntity;
+
+C.2.16. Traffic Flow Template
+
+ The Traffic Flow Template generally follows the guidelines specified
+ in [ServDesc3GPP].
+
+ The Traffic Flow Template in MAMS consists of one or more of the
+ following:
+
+ (a) Remote Address and Mask: IP address and subnet for remote
+ addresses represented in Classless Inter-Domain Routing (CIDR)
+ notation. Default: "0.0.0.0/0".
+
+ (b) Local Address and Mask: IP address and subnet for local
+ addresses represented in CIDR notation. Default: "0.0.0.0/0"
+
+ (c) Protocol Type: IP protocol number of the payload being carried
+ by an IP packet (e.g., UDP, TCP). Default: 255.
+
+ (d) Local Port Range: Range of ports for local ports for which the
+ Traffic Flow Template is applicable. Default: Start=0,
+ End=65535.
+
+ (e) Remote Port Range: Range of ports for remote ports for which the
+ Traffic Flow Template is applicable. Default: Start=0,
+ End=65535.
+
+ (f) Traffic Class: Represented by Type of Service in IPv4 and
+ Traffic Class in IPv6. Default: 255
+
+ (g) Flow Label: Flow label for IPv6, applicable only for IPv6
+ protocol type. Default: 0.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONString remote_addr_mask;
+ JSONString local_addr_mask;
+ JSONNumber protocol_type;
+ PortRange local_port_range;
+ PortRange remote_port_range;
+ JSONNumber traffic_class;
+ JSONNumber flow_label;
+ } TrafficFlowTemplate;
+
+ Where the port range is defined as follows:
+
+ object {
+ JSONNumber start;
+ JSONNumber end;
+ } PortRange;
+
+C.2.17. Measurement Report Configuration
+
+ This data type represents the configuration done by the NCM toward
+ the CCM for reporting measurement events.
+
+ (a) Measurement Report Parameter: Parameter that shall be measured
+ and reported. This is dependent on the connection type:
+
+ (1) For the connection type of "Wi-Fi", the allowed measurement
+ type parameters are "WLAN_RSSI", "WLAN_LOAD", "UL_TPUT",
+ "DL_TPUT", "EST_UL_TPUT", and "EST_DL_TPUT".
+
+ (2) For the connection type of "LTE", the allowed measurement
+ type parameters are "LTE_RSRP", "LTE_RSRQ", "UL_TPUT", and
+ "DL_TPUT".
+
+ (3) For the connection type of "5G_NR", the allowed measurement
+ type parameters are "NR_RSRP", "NR_RSRQ", "UL_TPUT", and
+ "DL_TPUT".
+
+ (b) Threshold: High and low threshold for reporting.
+
+ (c) Period: Period for reporting, in milliseconds.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONString meas_rep_param;
+ Threshold meas_threshold;
+ JSONNumber meas_period;
+ } MeasReportConfs;
+
+ Where "Threshold" is defined as follows:
+
+ object {
+ JSONNumber high;
+ JSONNumber low;
+ } Threshold;
+
+C.2.18. Measurement Report
+
+ This data type represents the measurements reported by the CCM for
+ each access network measured. This type contains the connection
+ information, the Delivery Node ID that identifies either the cell
+ (ECGI) or the Wi-Fi Access Point ID or MAC address (or equivalent
+ identifier in other technologies), and the actual measurement
+ performed by the CCM in the last measurement period.
+
+ The representation of this data type is as follows:
+
+ object {
+ JSONNumber connection_id;
+ JSONString connection_type;
+ JSONString delivery_node_id;
+ Measurement measurements <1..*>;
+ } MXMeasRep;
+
+ Where Measurement is defined as the key-value pair of the measurement
+ type and value. The exact measurement type parameter reported for a
+ given connection depends on its Connection Type. The measurement
+ type parameters, for each Connection Type, are specified in
+ Appendix C.2.17.
+
+ object {
+ JSONString measurement_type;
+ JSONNumber measurement_value;
+ } Measurement;
+
+C.3. Schemas in JSON
+
+C.3.1. MX Base Schema
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {
+ "message_type_def": {
+ "enum": [
+ "mx_discover",
+ "mx_system_info",
+ "mx_capability_req",
+ "mx_capability_rsp",
+ "mx_capability_ack",
+ "mx_up_setup_conf_req",
+ "mx_up_setup_cnf",
+ "mx_reconf_req",
+ "mx_reconf_rsp",
+ "mx_path_est_req",
+ "mx_path_est_results",
+ "mx_traffic_steering_req",
+ "mx_traffic_steering_rsp",
+ "mx_ssid_indication",
+ "mx_keep_alive_req",
+ "mx_keep_alive_rsp",
+ "mx_measurement_conf",
+ "mx_measurement_report",
+ "mx_session_termination_req",
+ "mx_session_termination_rsp",
+ "mx_app_madp_assoc_req",
+ "mx_app_madp_assoc_rsp",
+ "mx_network_analytics_req",
+ "mx_network_analytics_rsp"
+ ],
+ "type": "string"
+ },
+ "sequence_num_def": {
+ "minimum": 1,
+ "type": "integer"
+ },
+ "version_def": {
+ "type": "string"
+ }
+ },
+ "id": "https://example.com/mams/mx_base_def.json"
+ }
+
+C.3.2. MX Definitions
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {
+ "adapt_method": {
+ "enum": [
+ "UDP_without_DTLS",
+ "UDP_with_DTLS",
+ "IPsec",
+ "Client_NAT"
+ ],
+ "type": "string"
+ },
+ "conv_method": {
+ "enum": [
+ "GMA",
+ "MPTCP_Proxy",
+ "GRE_Aggregation_Proxy",
+ "MPQUIC"
+ ],
+ "type": "string"
+ },
+ "supported": {
+ "type": "boolean"
+ },
+ "active": {
+ "type": "boolean"
+ },
+ "connection_id": {
+ "type": "integer"
+ },
+ "feature_name": {
+ "enum": [
+ "lossless_switching",
+ "fragmentation",
+ "concatenation",
+ "uplink_aggregation",
+ "downlink_aggregation",
+ "measurement"
+ "probing"
+ ],
+ "type": "string"
+ },
+ "connection_type": {
+ "enum": [
+ "Wi-Fi",
+ "5G_NR",
+ "MulteFire",
+ "LTE"
+ ],
+ "type": "string"
+ },
+ "ip_address": {
+ "type": "string"
+ },
+ "port": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "adaptation_method": {
+ "allOf" : [
+ { "$ref": "#/definitions/adapt_method" },
+ { "$ref": "#/definitions/supported" }
+ ]
+ },
+ "connection": {
+ "allOf" : [
+ { "$ref": "#/definitions/connection_id" },
+ { "$ref": "#/definitions/connection_type" }
+ ]
+ },
+ "convergence_method": {
+ "allOf": [
+ { "$ref": "#/definitions/conv_method" },
+ { "$ref": "#/definitions/supported" }
+ ]
+ },
+ "feature_status": {
+ "allOf": [
+ { "$ref": "#/definitions/feature_name" },
+ { "$ref": "#/definitions/active" }
+ ]
+ },
+ "ncm_end_point": {
+ "allOf" : [
+ { "$ref" : "#/definitions/ip_address" },
+ { "$ref" : "#/definitions/port" }
+ ]
+ },
+ "capability_acknowledgment" : {
+ "enum" : [
+ "MX_ACCEPT",
+ "MX_REJECT"
+ ],
+ "type" : "string"
+ },
+ "threshold" : {
+ "high" : {
+ "type" : "integer"
+ },
+ "low" : {
+ "type" : "integer"
+ },
+ "type" : "object"
+ },
+ "meas_report_param" : {
+ "enum" : [
+ "WLAN_RSSI",
+ "WLAN_LOAD",
+ "LTE_RSRP",
+ "LTE_RSRQ",
+ "UL_TPUT",
+ "DL_TPUT",
+ "EST_UL_TPUT",
+ "EST_DL_TPUT",
+ "NR_RSRP",
+ "NR_RSRQ"
+ ],
+ "type" : "string"
+ },
+ "meas_report_conf" : {
+ "meas_rep_param" : {
+ "$ref" : "#definitions/meas_report_param"
+ },
+ "meas_threshold" : {
+ "$ref" : "#definitions/threshold"
+ },
+ "meas_period_ms" : {
+ "type" : "integer"
+ },
+ "type" : "object"
+ },
+ "ssid_types" : {
+ "enum" : [
+ "ssid",
+ "bssid",
+ "hessid"
+ ],
+ "type" : "string"
+ },
+ "ip_addr_mask" : {
+ "type" : "string",
+ "default" : "0.0.0.0/0"
+ },
+ "port_range" : {
+ "start" : {
+ "type" : "integer",
+ "default" : 0
+ },
+ "end" : {
+ "type" : "integer",
+ "default" : 65535
+ }
+ },
+ "traffic_flow_template" : {
+ "remote_addr_mask" : {
+ "$ref" : "#definitions/ip_addr_mask" },
+ "local_addr_mask" : {
+ "$ref" : "#definitions/ip_addr_mask" },
+ "protocol_type" : {
+ "type" : "integer",
+ "minimum" : 0,
+ "maximum" : 255
+ },
+ "local_port_range" : {
+ "$ref" : "#definitions/port_range" },
+ "remote_port_range" : {
+ "$ref" : "#definitions/port_range" },
+ "traffic_class" : {
+ "type" : "integer",
+ "default" : 255
+ },
+ "flow_label" : {
+ "type" : "integer",
+ "default" : 0
+ }
+ },
+ "delivery_node_id" : {
+ "type" : "string"
+ },
+ "unique_session_id" : {
+ "type" : "object",
+ "ncm_id" : {
+ "type" : "integer"
+ },
+ "session_id" : {
+ "type" : "integer"
+ }
+ },
+ "keep_alive_reason" : {
+ "enum" : [
+ "Timeout",
+ "Handover"
+ ],
+ "type" : "string"
+ },
+ "connection_status" : {
+ "enum" : [
+ "disabled",
+ "enabled",
+ "connected"
+ ],
+ "type" : "string",
+ "default" : "connected"
+ },
+ "adaptation_param" : {
+ "udp_adapt_port" : {
+ "type" : "integer"
+ }
+ },
+ "probe_param" : {
+ "probe_port" : {
+ "type" : "integer"
+ },
+ "anchor_conn_id" : {
+ "type" : "integer"
+ },
+ "mx_configuration_id" : {
+ "type" : "integer"
+ }
+ },
+ "client_param" : {
+ "connection_id" : {
+ "type" : "integer"
+ },
+ "adapt_param" : {
+ "type" : {"$ref" : "#definitions/adaptation_param" }
+ }
+ }
+ },
+ "adapt_param": {
+ "tunnel_ip_addr": {
+ "type": "string"
+ },
+ "tunnel_end_port": {
+ "type": "integer"
+ },
+ "shared_secret": {
+ "type": "string"
+ },
+ "mx_header_optimization": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "delivery_connection": {
+ "connection_id": {
+ "$ref": "#definitions/connection_id"
+ },
+ "connection_type": {
+ "$ref": "#definitions/connection_type"
+ },
+ "adaptation_method": {
+ "$ref": "#definitions/adapt_method"
+ },
+ "adaptation_method_param": {
+ "$ref": "#definitions/adapt_param"
+ }
+ },
+ "app_madp_assoc": {
+ "anchor_conn_id" : {
+ "type" : "integer"
+ },
+ "mx_configuration_id" : {
+ "type" : "integer"
+ }
+
+ "ul_tft_list": {
+ "items": {
+ "$ref": "#definitions/traffic_flow_template"
+ },
+ "type": "array"
+ },
+ "dl_tft_list": {
+ "items": {
+ "$ref": "#definitions/traffic_flow_template"
+ },
+ "type": "array"
+ }
+ },
+ "predict_param_name": {
+ "enum": [
+ "validity_time",
+ "bandwidth",
+ "jitter",
+ "latency",
+ "signal_quality"
+ ],
+ "type": "string"
+ },
+ "predict_add_param_name": {
+ "enum": [
+ "WLAN_RSSI",
+ "WLAN_LOAD",
+ "LTE_RSRP",
+ "LTE_RSRQ",
+ "NR_RSRP",
+ "NR_RSRQ"
+ ],
+ "type": "string"
+ },
+ "id": "https://example.com/mams/definitions.json"
+ }
+
+C.3.3. MX Discover
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_discover.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"}
+ },
+ "type": "object"
+ }
+
+C.3.4. MX System Info
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_system_info.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "ncm_connections": {
+ "type": "array",
+ "items": [
+ {"$ref": "definitions.json#/connection"},
+ {"$ref": "definitions.json#/ncm_end_point"}
+ ]
+ }
+ },
+ "type": "object"
+ }
+
+C.3.5. MX Capability Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_capability_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "adaptation_methods": {
+ "items": {"$ref": "definitions.json#/adaptation_method"},
+ "type": "array"
+ },
+ "anchor_connections": {
+ "items": {"$ref": "definitions.json#/connection"},
+ "type": "array"
+ },
+ "convergence_methods": {
+ "items": {"$ref": "definitions.json#/convergence_method"},
+ "type": "array"
+ },
+ "delivery_connections": {
+ "items": {"$ref": "definitions.json#/connection"},
+ "type": "array"
+ },
+ "feature_active": {
+ "items": {"$ref": "definitions.json#/feature_status"},
+ "type": "array"
+ },
+ "num_anchor_connections": {
+ "type": "integer"
+ },
+ "num_delivery_connections": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.6. MX Capability Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_capability_rsp.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "adaptation_methods": {
+ "items": {"$ref": "definitions.json#/adaptation_method"},
+ "type": "array"
+ },
+ "anchor_connections": {
+ "items": {"$ref": "definitions.json#/connection"},
+ "type": "array"
+ },
+ "convergence_methods": {
+ "items": {"$ref": "definitions.json#/convergence_method"},
+ "type": "array"
+ },
+ "delivery_connections": {
+ "items": {"$ref": "definitions.json#/connection"},
+ "type": "array"
+ },
+ "feature_active": {
+ "items": {"$ref": "definitions.json#/feature_status"},
+ "type": "array"
+ },
+ "num_anchor_connections": {
+ "type": "integer"
+ },
+ "num_delivery_connections": {
+ "type": "integer"
+ },
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.7. MX Capability Acknowledge
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_capability_ack.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "capability_ack": {
+ "$ref": "definitions.json#/capability_acknowledgment"}
+ },
+ "type": "object"
+ }
+
+C.3.8. MX Reconfiguration Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_reconf_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"
+ },
+ "connection_id": {"$ref": "definitions.json#/connection_id"},
+ "ip_address": {"$ref": "definitions.json#/ip_address"},
+ "mtu_size": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "ssid": {
+ "type": "string"
+ },
+ "reconf_action": {
+ "enum": [
+ "release",
+ "setup",
+ "update"
+ ],
+ "id": "/properties/reconf_action",
+ "type": "string"
+ },
+ "connection_status": {
+ "$ref": "definitions.json#/connection_status"},
+ "delivery_node_id": {
+ "$ref": "definitions.json#/delivery_node_id"}
+ },
+ "type": "object"
+ }
+
+C.3.9. MX Reconfiguration Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_reconf_rsp.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"}
+ },
+ "type": "object"
+ }
+
+C.3.10. MX UP Setup Configuration Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "definitions": {
+ "convergence_configuration": {
+ "mx_configuration_id": {"type": "integer"},
+ "convergence_method": {
+ "$ref": "definitions.json#/conv_method"},
+ "convergence_method_params": {
+ "properties": {
+ "proxy_ip": {"$ref": "definitions.json#/ip_address"},
+ "proxy_port": {"$ref": "definitions.json#/port"},
+ "client_key": {"$ref": "definitions.json#/client_key"}
+ },
+ "type": "object"
+ },
+ "num_delivery_connections": {
+ "type": "integer"
+ },
+ "delivery_connections": {
+ "items": {"$ref": "definitions.json#/delivery_connection"},
+ "type": "array"
+ }
+ }
+ },
+ "id": "https://example.com/mams/mx_up_setup_conf_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "num_anchor_connections": {
+ "type": "integer"
+ },
+ "anchor_connections": {
+ "items": {
+ "properties": {
+ "connection_id": {
+ "$ref": "definitions.json#/connection_id"},
+ "connection_type": {
+ "$ref": "definitions.json#/connection_type"},
+ "num_active_mx_conf": {"type": "integer"},
+ "convergence_config": {
+ "items": {
+ "$ref": "definitions/convergence_configuration"},
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.11. MX UP Setup Confirmation
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_up_setup_cnf.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "probe_param": {"$ref": "definitions.json#/probe_param"},
+ "num_delivery_conn": {
+ "type": "integer"
+ },
+ "client_params": {
+ "type": "array",
+ "items": [
+ {"$ref": "definitions.json#/client_param"}
+ ]
+ }
+ },
+ "type": "object"
+ }
+
+C.3.12. MX Traffic Steering Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {
+ "conn_list": {
+ "items": {"$ref": "definitions.json#/connection_id"},
+ "type": "array"
+ },
+ "ul_delivery": {
+ "ul_tft": {
+ "$ref": "definitions.json#/traffic_flow_template"},
+ "connection_list": {"$ref": "#definitions/conn_list"}
+ }
+ },
+ "id": "https://example.com/mams/mx_traffic_steering_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "connection_id": {"$ref": "definitions.json#/connection_id"},
+ "mx_configuration_id": {"type": "integer"},
+ "downlink_delivery": {
+ "items": {"$ref": "definitions.json#/connection_id"},
+ "type": "array"
+ },
+ "feature_active": {
+ "items": {"$ref": "definitions.json#/feature_status"},
+ "type": "array"
+ },
+ "default_uplink_delivery": {
+ "type": "integer"
+ },
+ "uplink_delivery": {
+ "items": {"$ref": "#definitions/ul_delivery"},
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.13. MX Traffic Steering Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/example.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "feature_active": {
+ "items": {"$ref": "definitions.json#/feature_status"},
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.14. MX Application MADP Association Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/example.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "app_madp_assoc_list": {
+ "items": {
+ "$ref": "definitions.json#/app_madp_assoc"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.15. MX Application MADP Association Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/example.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "is_success": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.16. MX Path Estimation Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_path_est_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "active_probe_ack_req": {
+ "enum": [
+ "no",
+ "yes"
+ ],
+ "type": "string"
+ },
+ "active_probe_freq_ms": {
+ "maximum": 10000,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "active_probe_size_bytes": {
+ "maximum": 1500,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "active_probe_duration_sec": {
+ "maximum": 100,
+ "minimum": 10,
+ "type": "integer"
+ },
+ "connection_id": {"$ref": "definitions#/connection_id"},
+ "init_probe_ack_req": {
+ "enum": [
+ "no",
+ "yes"
+ ],
+ "type": "string"
+ },
+ "init_probe_size_bytes": {
+ "maximum": 1500,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "init_probe_test_duration_ms": {
+ "maximum": 10000,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "init_probe_test_rate_Mbps": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.17. MX Path Estimation Results
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_path_est_results.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "active_probe_results": {
+ "properties": {
+ "avg_tput_last_probe_duration_Mbps": {
+ "maximum":100,
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "connection_id": {"$ref": "definitions.json#/connection_id"},
+ "init_probe_results": {
+ "properties": {
+ "lost_probes_percentage": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "probe_rate_Mbps": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.18. MX SSID Indication
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_ssid_indication.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "ssid_list": {
+ "items": {
+ "properties": {
+ "ssid_type": {
+ "$ref": "definitions.json#/ssid_types"},
+ "ssid_id": {
+ "type": "integer"
+ }
+ }
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.19. MX Measurement Configuration
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "definitions": {
+ "meas_conf": {
+ "connection_id" : {
+ "$ref": "definitions.json#/connection_id"},
+ "connection_type": {
+ "$ref": "definitions.json#/connection_type"},
+ "meas_rep_conf": {
+ "items": {
+ "$ref": "definitions.json#/meas_report_conf"},
+ "type": "array"
+ }
+ }
+ },
+ "id": "https://example.com/mams/mx_measurement_conf.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "measurement_configuration": {
+ "items": {"$ref": "#definitions/meas_conf"},
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.20. MX Measurement Report
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "definitions": {},
+ "id": "https://example.com/mams/mx_measurement_report.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "measurement_reports": {
+ "items": {
+ "properties": {
+ "connection_id": {
+ "$ref": "definitions.json#/connection_id"},
+ "connection_type": {
+ "$ref": "definitions.json#/connection_type"},
+ "delivery_node_id": {
+ "$ref": "definitions.json#/delivery_node_id"},
+ "measurements": {
+ "items": {
+ "properties": {
+ "measurement_type": {
+ "$ref": "definitions.json#/meas_report_param"},
+ "measurement_value": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.21. MX Keep-Alive Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_keep_alive_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "keep_alive_reason": {
+ "$ref": "definitions.json#/keep_alive_reason"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "connection_id": {
+ "$ref": "definitions.json#/connection_id"},
+ "delivery_node_id": {
+ "$ref": "definitions.json#/connection_id"}
+ },
+ "type": "object"
+ }
+
+C.3.22. MX Keep-Alive Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_keep_alive_rsp.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"}
+ },
+ "type": "object"
+ }
+
+C.3.23. MX Session Termination Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_keep_alive_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "reason": {
+ "enum": [
+ "MX_NORMAL_RELEASE",
+ "MX_NO_RESPONSE",
+ "INTERNAL_ERROR"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.24. MX Session Termination Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_session_termination_rsp.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"}
+ },
+ "type": "object"
+ }
+
+C.3.25. MX Network Analytics Request
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "id": "https://example.com/mams/mx_network_analytics_req.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "unique_session_id": {
+ "$ref": "definitions.json#/unique_session_id"},
+ "params": {
+ "items": {
+ "$ref": "definitions.json#/predict_param_name"},
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+
+C.3.26. MX Network Analytics Response
+
+ {
+ "$schema": "https://json-schema.org/draft-04/schema#",
+ "additionalProperties": false,
+ "definitions": {
+ "ParamPredictions": {
+ "param_name": {
+ "$ref": "definitions.json#/predict_param_name"},
+ "additional_param": {
+ "$ref": "definitions.json#/predict_add_param_name"},
+ "prediction": {"type": "integer"},
+ "likelihood": {"type": "integer"},
+ "validity_time": {"type": "integer"}
+
+ },
+ "MXAnalyticsList": {
+ "connection_id": {
+ "$ref": "definitions.json#/connection_id"},
+ "connection_type": {
+ "$ref": "definitions.json#/connection_type"},
+ "predictions": {
+ "items": {
+ "$ref": "#definitions/ParamPredictions"},
+ "type": "array"
+ }
+ }
+ },
+ "id": "https://example.com/mams/mx_network_analytics_rsp.json",
+ "properties": {
+ "message_type": {"$ref": "mx_base_def.json#/message_type_def"},
+ "sequence_num": {"$ref": "mx_base_def.json#/sequence_num_def"},
+ "version": {"$ref": "mx_base_def.json#/version_def"},
+ "param_list": {
+ "items": {
+ "$ref": "#definitions/MXAnalyticsList"},
+ "type": "array"}
+ },
+ "type": "object"
+ }
+
+C.4. Examples in JSON
+
+C.4.1. MX Discover
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_discover",
+ "sequence_num" : 1
+ }
+
+C.4.2. MX System Info
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_system_info",
+ "sequence_num" : 2,
+ "ncm_connections" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "LTE",
+ "ncm_end_point" : {
+ "ip_address" : "192.168.1.10",
+ "port" : 1234
+ }
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "Wi-Fi",
+ "ncm_end_point" : {
+ "ip_address" : "192.168.1.10",
+ "port" : 1234
+ }
+ }
+ ]
+ }
+
+C.4.3. MX Capability Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_capability_req",
+ "sequence_num" : 3,
+ "feature_active" : [
+ {
+ "feature_name" : "lossless_switching",
+ "active" : true
+ },
+ {
+ "feature_name" : "fragmentation",
+ "active" : false
+ }
+ ],
+ "num_anchor_connections" : 2,
+ "anchor_connections" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "LTE"
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "Wi-Fi"
+ }
+ ],
+ "num_delivery_connections" : 2,
+ "delivery_connections" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "LTE"
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "Wi-Fi"
+ }
+ ],
+ "convergence_methods" : [
+ {
+ "method" : "GMA",
+ "supported" : true
+ },
+ {
+ "method" : "MPTCP_Proxy",
+ "supported" : false
+ }
+ ],
+ "adaptation_methods" : [
+ {
+ "method" : "UDP_without_DTLS",
+ "supported" : false
+ },
+ {
+ "method" : "UDP_with_DTLS",
+ "supported" : false
+ },
+ {
+ "method" : "IPsec",
+ "supported" : true
+ },
+ {
+ "method" : "Client_NAT",
+ "supported" : false
+ }
+ ]
+ }
+
+C.4.4. MX Capability Response
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_capability_rsp",
+ "sequence_num" : 3,
+ "feature_active" : [
+ {
+ "feature_name" : "lossless_switching",
+ "active" : true
+ },
+ {
+ "feature_name" : "fragmentation",
+ "active" : false
+ }
+ ],
+ "num_anchor_connections" : 2,
+ "anchor_connections" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "LTE"
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "Wi-Fi"
+ }
+ ],
+ "num_delivery_connections" : 2,
+ "delivery_connections" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "LTE"
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "Wi-Fi"
+ }
+ ],
+ "convergence_methods" : [
+ {
+ "method" : "GMA",
+ "supported" : true
+ },
+ {
+ "method" : "MPTCP_Proxy",
+ "supported" : false
+ }
+ ],
+ "adaptation_methods" : [
+ {
+ "method" : "UDP_without_DTLS",
+ "supported" : false
+ },
+ {
+ "method" : "UDP_with_DTLS",
+ "supported" : false
+ },
+ {
+ "method" : "IPsec",
+ "supported" : true
+ },
+ {
+ "method" : "Client_NAT",
+ "supported" : false
+ }
+ ],
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ }
+ }
+
+C.4.5. MX Capability Acknowledge
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_capability_ack",
+ "sequence_num" : 3,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "capability_ack" : "MX_ACCEPT"
+ }
+
+C.4.6. MX Reconfiguration Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_reconf_req",
+ "sequence_num" : 4,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "reconf_action" : "setup",
+ "connection_id" : 0,
+ "ip_address" : "192.168.110.1",
+ "ssid" : "SSID_1",
+ "mtu_size" : 1300,
+ "connection_status" : "connected",
+ "delivery_node_id" : "2A12C"
+ }
+
+C.4.7. MX Reconfiguration Response
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_reconf_rsp",
+ "sequence_num" : 4
+ }
+
+C.4.8. MX UP Setup Configuration Request
+
+ {
+ "version": "1.0",
+ "message_type": "mx_up_setup_conf_req",
+ "sequence_num": 5,
+ "num_anchor_connections": 2,
+ "anchor_connections": [{
+ "connection_id": 1,
+ "connection_type": "Wi-Fi",
+ "num_active_mx_conf" : 2,
+ "convergence_config" : [
+ {
+ "mx_configuration_id" : 1,
+ "convergence_method": "GMA",
+ "convergence_method_params": {},
+ "num_delivery_connections": 2,
+ "delivery_connections": [{
+ "connection_id": 0,
+ "connection_type": "LTE",
+ "adaptation_method": "UDP_without_DTLS",
+ "adaptation_method_param": {
+ "tunnel_ip_addr": "6.6.6.6",
+ "tunnel_end_port": 9999,
+ "mx_header_optimization": true
+ }
+ },
+ {
+ "connection_id": 1,
+ "connection_type": "Wi-Fi"
+ }
+ ]
+ },
+ {
+ "mx_configuration_id" : 2,
+ "convergence_method": "GMA",
+ "convergence_method_params": {},
+ "num_delivery_connections": 1,
+ "delivery_connections": [{
+ "connection_id": 0,
+ "connection_type": "LTE",
+ "adaptation_method": "UDP_without_DTLS",
+ "adaptation_method_param": {
+ "tunnel_ip_addr": "6.6.6.6",
+ "tunnel_end_port": 8877
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "connection_id": 0,
+ "connection_type": "LTE",
+ "udp_port": 8888,
+ "num_delivery_connections": 2,
+ "delivery_connections": [{
+ "connection_id": 0,
+ "connection_type": "LTE"
+ },
+ {
+ "connection_id": 1,
+ "connection_type": "Wi-Fi",
+ "adaptation_method": "UDP_without_DTLS",
+ "adaptation_method_param": {
+ "tunnel_ip_addr": "192.168.3.3",
+ "tunnel_end_port": "6000"
+ }
+ }
+ ]
+ }
+ ]
+ }
+
+C.4.9. MX UP Setup Confirmation
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_up_setup_cnf",
+ "sequence_num" : 5,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "probe_param" : {
+ "probe_port" : 48700,
+ "anchor_conn_id" : 0,
+ "mx_configuration_id" : 1
+ },
+ "num_delivery_conn" : 2,
+ "client_params" : [
+ {
+ "connection_id" : 0,
+ "adapt_param" : {
+ "udp_adapt_port" : 51000
+ }
+ },
+ {
+ "connection_id" : 1,
+ "adapt_param" : {
+ "udp_adapt_port" : 52000
+ }
+ }
+ ]
+ }
+
+C.4.10. MX Traffic Steering Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_traffic_steering_req",
+ "sequence_num" : 6,
+ "connection_id" : 0,
+ "mx_configuration_id" : 1,
+ "downlink_delivery" : [
+ {
+ "connection_id" : 0
+ },
+ {
+ "connection_id" : 1
+ }
+ ],
+ "default_uplink_delivery" : 0,
+ "uplink_delivery" : [
+ {
+ "ul_tft" : {
+ "remote_addr_mask" : "10.10.0.0/24",
+ "local_addr_mask" : "192.168.0.0/24",
+ "protocol_type" : 6,
+ "local_port_range" : {
+ "start" : 100,
+ "end" : 1000
+ },
+ "remote_port_range" : {
+ "start" : 100,
+ "end" : 1000
+ },
+ "traffic_class" : 20,
+ "flow_label" : 100
+ },
+ "conn_list" : [
+ {
+ "connection_id" : 1
+ }
+ ]
+ },
+ {
+ "ul_tft" : {
+ "remote_addr_mask" : "10.10.0.0/24",
+ "local_addr_mask" : "192.168.0.0/24",
+ "protocol_type" : 6,
+ "local_port_range" : {
+ "start" : 2000,
+ "end" : 2000
+ },
+ "remote_port_range" : {
+ "start" : 100,
+ "end" : 1000
+ },
+ "traffic_class" : 20,
+ "flow_label" : 50
+ },
+ "conn_list" : [
+ {
+ "connection_id" : 1
+ }
+ ]
+ }
+ ],
+ "feature_active" : [
+ {
+ "feature_name" : "dl_aggregation",
+ "active" : true
+ },
+ {
+ "feature_name" : "ul_aggregation",
+ "active" : false
+ }
+ ]
+ }
+
+C.4.11. MX Traffic Steering Response
+
+ {
+ "version": "1.0",
+ "message_type": "mx_traffic_steering_rsp",
+ "sequence_num": 6,
+ "unique_session_id": {
+ "ncm_id": 110,
+ "session_id": 1111
+ },
+ "feature_active": [{
+ "feature_name": "lossless_switching",
+ "active": true
+ },
+ {
+ "feature_name": "fragmentation",
+ "active": false
+ }
+ ]
+ }
+
+C.4.12. MX Application MADP Association Request
+
+ {
+ "version": "1.0",
+ "message_type": "mx_app_madp_assoc_req",
+ "sequence_num": 6,
+ "unique_session_id": {
+ "ncm_id": 110,
+ "session_id": 1111
+ },
+ "app_madp_assoc_list": [{
+ "connection_id" : 0,
+ "mx_configuration_id" : 1,
+ "ul_tft_list": [{
+ "protocol_type": 17,
+ "local_port_range": {
+ "start": 8888,
+ "end": 8888
+ }
+ }],
+ "dl_tft_list": [{
+ "protocol_type": 17,
+ "remote_port_range": {
+ "start": 8888,
+ "end": 8888
+ }
+ }]
+ }
+ ]
+ }
+
+C.4.13. MX Application MADP Association Response
+
+ {
+ "version": "1.0",
+ "message_type": "mx_app_madp_assoc_rsp",
+ "sequence_num": 6,
+ "is_success": true
+ }
+
+C.4.14. MX Path Estimation Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_path_est_req",
+ "sequence_num" : 7,
+ "connection_id" : 0,
+ "init_probe_test_duration_ms" : 100,
+ "init_probe_test_rate_Mbps" : 10,
+ "init_probe_size_bytes" : 1000,
+ "init_probe_ack_req" : "yes",
+ "active_probe_freq_ms" : 10000,
+ "active_probe_size_bytes" : 1000,
+ "active_probe_duration_sec" : 10,
+ "active_probe_ack_req" : "no"
+ }
+
+C.4.15. MX Path Estimation Results
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_path_est_results",
+ "sequence_num" : 8,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "connection_id" : 0,
+ "init_probe_results" : {
+ "lost_probes_percentage" : 1,
+ "probe_rate_Mbps" : 9.9
+ },
+ "active_probe_results" : {
+ "avg_tput_last_probe_duration_Mbps" : 9.8
+ }
+ }
+
+C.4.16. MX SSID Indication
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_ssid_indication",
+ "sequence_num" : 9,
+ "ssid_list" : [
+ {
+ "ssid_type" : "ssid",
+ "ssid_id" : "SSID_1"
+ },
+ {
+ "ssid_type" : "bssid",
+ "ssid_id" : "xxx-yyy"
+ }
+ ]
+ }
+
+C.4.17. MX Measurement Configuration
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_measurement_conf",
+ "sequence_num" : 10,
+ "measurement_configuration" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "Wi-Fi",
+ "meas_rep_conf" : [
+ {
+ "meas_rep_param" : "WLAN_RSSI",
+ "meas_threshold" : {
+ "high" : -10,
+ "low" : -15
+ },
+ "meas_period_ms" : 500
+ },
+ {
+ "meas_rep_param" : "WLAN_LOAD",
+ "meas_threshold" : {
+ "high" : -10,
+ "low" : -15
+ },
+ "meas_period_ms" : 500
+ },
+ {
+ "meas_rep_param" : "EST_UL_TPUT",
+ "meas_threshold" : {
+ "high" : 100,
+ "low" : 30
+ },
+ "meas_period_ms" : 500
+ }
+ ]
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "LTE",
+ "meas_rep_conf" : [
+ {
+ "meas_rep_param" : "LTE_RSRP",
+ "meas_threshold" : {
+ "high" : -10,
+ "low" : -15
+ },
+ "meas_period_ms" : 500
+ },
+ {
+ "meas_rep_param" : "LTE_RSRQ",
+ "meas_threshold" : {
+ "high" : -10,
+ "low" : -15
+ },
+ "meas_period_ms" : 500
+ }
+ ]
+ }
+ ]
+ }
+
+C.4.18. MX Measurement Report
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_measurement_report",
+ "sequence_num" : 11,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "measurement_reports" : [
+ {
+ "connection_id" : 0,
+ "connection_type" : "Wi-Fi",
+ "delivery_node_id" : "2021A",
+ "measurements" : [
+ {
+ "measurement_type" : "WLAN_RSSI",
+ "measurement_value" : -12
+ },
+ {
+ "measurement_type" : "UL_TPUT",
+ "measurement_value" : 10
+ },
+ {
+ "measurement_type" : "EST_UL_TPUT",
+ "measurement_value" : 20
+ }
+ ]
+ },
+ {
+ "connection_id" : 1,
+ "connection_type" : "LTE",
+ "delivery_node_id" : "12323",
+ "measurements" : [
+ {
+ "measurement_type" : "LTE_RSRP",
+ "measurement_value" : -12
+
+ },
+ {
+ "measurement_type" : "LTE_RSRQ",
+ "measurement_value" : -12
+
+ }
+ ]
+ }
+ ]
+ }
+
+C.4.19. MX Keep-Alive Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_keep_alive_req",
+ "sequence_num" : 12,
+ "keep_alive_reason" : "Handover",
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "connection_id" : 0,
+ "delivery_node_id" : "2021A"
+ }
+
+C.4.20. MX Keep-Alive Response
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_keep_alive_rsp",
+ "sequence_num" : 12,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ }
+ }
+
+C.4.21. MX Session Termination Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_session_termination_req",
+ "sequence_num" : 13,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "reason" : "MX_NORMAL_RELEASE"
+ }
+
+C.4.22. MX Session Termination Response
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_session_termination_rsp",
+ "sequence_num" : 13,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ }
+ }
+
+C.4.23. MX Network Analytics Request
+
+ {
+ "version" : "1.0",
+ "message_type" : "mx_network_analytics_req",
+ "sequence_num" : 20,
+ "unique_session_id" : {
+ "ncm_id" : 110,
+ "session_id" : 1111
+ },
+ "params" : [
+ "jitter",
+ "latency"
+ ]
+ }
+
+C.4.24. MX Network Analytics Response
+
+ {
+ "version": "1.0",
+ "message_type": "mx_network_analytics_rsp",
+ "sequence_num": 20,
+ "param_list": [{
+ "connection_id": 1,
+ "connection_type": "Wi-Fi",
+ "predictions": [{
+ "param_name": "jitter",
+ "prediction": 100,
+ "likelihood": 50,
+ "validity_time": 10
+ },
+ {
+ "param_name": "latency",
+ "prediction": 19,
+ "likelihood": 40,
+ "validity_time": 10
+ }
+ ]
+ },
+ {
+ "connection_id": 2,
+ "connection_type": "LTE",
+ "predictions": [{
+ "param_name": "jitter",
+ "prediction": 10,
+ "likelihood": 80,
+ "validity_time": 10
+ },
+ {
+ "param_name": "latency",
+ "prediction": 4,
+ "likelihood": 60,
+ "validity_time": 10
+ }
+ ]
+ }
+ ]
+ }
+
+Appendix D. Definition of APIs Provided by the CCM to the Applications
+ at the Client
+
+ This section provides an example implementation of the APIs exposed
+ by the CCM to the applications on the client, documented with OpenAPI
+ using Swagger 2.0.
+
+ {
+ "swagger": "2.0",
+ "info": {
+ "version": "1.0.0",
+ "title": "Client Connection Manager (CCM)",
+ "description": "API provided by the CCM towards the application
+ on a MAMS client."
+ },
+ "host": "MAMS.ietf.org",
+ "basePath": "/ccm/v1.0",
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "paths": {
+ "/capabilities": {
+ "get": {
+ "description": "This API can be used by an application to
+ request the capabilities of the CCM.",
+ "produces": [
+ "application/json",
+ "text/html"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/capability"
+ }
+ },
+ "default": {
+ "description": "unexpected error",
+ "schema": {
+ "$ref": "#/definitions/errorModel"
+ }
+ }
+ }
+ }
+ },
+ "/app_requirements": {
+ "post": {
+ "description": "This API is used by the N-MADP to report
+ any types of MAMS user-specific errors to
+ the NCM.",
+ "produces": [
+ "application/json",
+ "text/html"
+ ],
+ "parameters": [
+ {
+ "name": "app-requirements",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/app-requirements"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK"
+ },
+ "default": {
+ "description": "unexpected error",
+ "schema": {
+ "$ref": "#/definitions/errorModel"
+ }
+ }
+ }
+ }
+ },
+ "/predictive_link_params": {
+ "get": {
+ "description": "This API is used by applications to get the
+ information about predicted parameters for
+ each delivery connection.",
+ "produces": [
+ "application/json",
+ "text/html"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/link-params"
+ }
+ },
+ "default": {
+ "description": "unexpected error",
+ "schema": {
+ "$ref": "#/definitions/errorModel"
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "connection-id": {
+ "type": "integer",
+ "format": "uint8"
+ },
+ "connection-type": {
+ "enum": [
+ "Wi-Fi",
+ "5G_NR",
+ "MulteFire",
+ "LTE"
+ ],
+ "type": "string"
+ },
+ "features": {
+ "enum": [
+ "lossless_switching",
+ "fragmentation",
+ "concatenation",
+ "uplink_aggregation",
+ "downlink_aggregation",
+ "measurement"
+ "probing"
+ ],
+ "type": "string"
+ },
+ "adaptation-methods": {
+ "enum": [
+ "UDP_without_DTLS",
+ "UDP_with_DTLS",
+ "IPsec",
+ "Client_NAT"
+ ],
+ "type": "string"
+ },
+ "convergence-methods": {
+ "enum": [
+ "GMA",
+ "MPTCP_Proxy",
+ "GRE_Aggregation_Proxy",
+ "MPQUIC"
+ ],
+ "type": "string"
+ },
+ "connection": {
+ "type": "object",
+ "properties": {
+ "conn-id": {
+ "$ref": "#/definitions/connection-id"
+ },
+ "conn-type": {
+ "$ref": "#/definitions/connection-type"
+ }
+ }
+ },
+ "convergence-parameters": {
+ "type": "object",
+ "properties": {
+ "conv-param-name": {
+ "type": "string"
+ },
+ "conv-param-value": {
+ "type": "string"
+ }
+ }
+ },
+ "convergence-details": {
+ "type": "object",
+ "properties": {
+ "conv-method": {
+ "$ref": "#/definitions/convergence-methods"
+ },
+ "conv-params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/convergence-parameters"
+ }
+ }
+ }
+ },
+ "capability": {
+ "type": "object",
+ "properties": {
+ "connections": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/connection"
+ }
+ },
+ "features": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/features"
+ }
+ },
+ "adapt-methods": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/adaptation-methods"
+ }
+ },
+ "conv-methods": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/convergence-details"
+ }
+ }
+ }
+ },
+ "qos-param-name": {
+ "enum": [
+ "jitter",
+ "latency",
+ "bandwidth"
+ ],
+ "type": "string"
+ },
+ "qos-param": {
+ "type": "object",
+ "properties": {
+ "qos-param-name": {
+ "$ref": "#/definitions/qos-param-name"
+ },
+ "qos-param-value": {
+ "type": "integer"
+ }
+ }
+ },
+ "port-range": {
+ "type": "object",
+ "properties": {
+ "start": {
+ "type": "integer"
+ },
+ "end": {
+ "type": "integer"
+ }
+ }
+ },
+ "protocol-type": {
+ "type": "integer"
+ },
+ "stream-features": {
+ "type": "object",
+ "properties": {
+ "proto": {
+ "$ref": "#/definitions/protocol-type"
+ },
+ "port-range": {
+ "$ref": "#/definitions/port-range"
+ },
+ "traffic-qos": {
+ "$ref": "#/definitions/qos-param"
+ }
+ }
+ },
+ "app-requirements": {
+ "type": "object",
+ "properties": {
+ "num-streams": {
+ "type": "integer"
+ },
+ "stream-feature": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/stream-features"
+ }
+ }
+ }
+ },
+ "param-name": {
+ "enum": [
+ "bandwidth",
+ "jitter",
+ "latency",
+ "signal_quality"
+ ],
+ "type": "string"
+ },
+ "additional-param-name": {
+ "enum": [
+ "lte-rsrp",
+ "lte-rsrq",
+ "nr-rsrp",
+ "nr-rsrq",
+ "wifi-rssi"
+ ],
+ "type": "string"
+ },
+ "link-parameter": {
+ "type": "object",
+ "properties": {
+ "connection": {
+ "$ref": "#/definitions/connection"
+ },
+ "param": {
+ "$ref": "#/definitions/param-name"
+ },
+ "additional-param": {
+ "$ref": "#/definitions/additional-param-name"
+ },
+ "prediction": {
+ "type": "integer"
+ },
+ "likelihood": {
+ "type": "integer"
+ },
+ "validity_time": {
+ "type": "integer"
+ }
+ }
+ },
+ "link-params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/link-parameter"
+ }
+ },
+ "errorModel": {
+ "type": "object",
+ "description": "Error indication containing the error code and
+ message.",
+ "required": [
+ "code",
+ "message"
+ ],
+ "properties": {
+ "code": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+
+Appendix E. Implementation Example Using Python for MAMS Client and
+ Server
+
+E.1. Client-Side Implementation
+
+ A simple client-side implementation using Python can be as follows:
+
+ #!/usr/bin/env python
+ import asyncio
+ import websockets
+ import json
+ import ssl
+ import time
+ import sys
+
+ context = ssl.SSLContext(ssl.PROTOCOL_TLS)
+ context.verify_mode = ssl.CERT_REQUIRED
+ context.set_ciphers("RSA")
+ context.check_hostname = False
+ context.load_verify_locations("/home/mecadmin/certs/rootca.pem")
+
+ discoverMsg = {'version':'1.0',
+ 'message_type':'mx_discover'}
+
+ MXCapabilityRes = {'version':'1.0',
+ 'message_type':'mx_capability_res',
+ 'FeatureActive':[{'feature_name':'fragmentation', 'active':'yes'},
+ {'feature_name':'lossless_switching', 'active':'yes'}],
+ 'num_anchor_connections':1,
+ 'anchor_connections':[{'connection_id':0, 'connection_type':'LTE'}],
+ 'num_delivery_connections':1,
+ 'delivery_connections':[{'connection_id':1,
+ 'connection_type':"Wi-Fi"}],
+ 'convergence_methods':[{'method':'GMA', 'supported':'true'}],
+ 'adaptation_methods':[{'method':'client_nat', 'supported':'false'}]
+ }
+
+ async def hello():
+ async with websockets.connect('wss://localhost:8765',
+ ssl=context) as websocket:
+ try:
+ loopFlag=False
+ while True:
+ await websocket.send(json.dumps(discoverMsg))
+ json_message = await websocket.recv()
+ message = json.loads(json_message)
+ if "message_type" in message.keys():
+ print("Received message:{}".format(
+ message["message_type"]),
+ "version:{}".format(message["version"]))
+ if message["message_type"] == "mx_capability_req" :
+ await websocket.send(json.dumps(MXCapabilityRes))
+ loopFlag=True
+ while(loopFlag==True):
+ pass
+ except:
+ print("Client stopped")
+
+ asyncio.get_event_loop().run_until_complete(hello())
+
+E.2. Server-Side Implementation
+
+ A server-side implementation using Python can be as follows:
+
+ #!/usr/bin/env python
+ import asyncio
+ import websockets
+ import json
+ import ssl
+
+ ctx = ssl.SSLContext(ssl.PROTOCOL_TLS)
+ #ctx.set_ciphers("RSA-AES256-SHA")
+ ctx.load_verify_locations("/home/mecadmin/certs/rootca.pem")
+ certfile = "/home/mecadmin/certs/server.pem"
+ keyfile = "/home/mecadmin/certs/serverkey.pem"
+ ctx.load_cert_chain(certfile, keyfile, password=None)
+
+ MXCapabilityReq = {'version':'1.0',
+ 'message_type':'mx_capability_req',
+ 'FeatureActive':[{'feature_name':'fragmentation', 'active':'yes'},
+ {'feature_name':'lossless_switching', 'active':'yes'}],
+ 'num_anchor_connections':1,
+ 'anchor_connections':[{'connection_id':0, 'connection_type':'LTE'}],
+ 'num_delivery_connections':1,
+ 'delivery_connections':[{'connection_id':1,
+ 'connection_type':"Wi-Fi"}],
+ 'convergence_methods':[{'method':'GMA', 'supported':'true'}],
+ 'adaptation_methods':[{'method':'client_nat', 'supported':'false'}]
+ }
+
+ async def hello(websocket, path):
+ try:
+ while True:
+ name = await websocket.recv()
+ msg = json.loads(name)
+ if "message_type" in msg.keys():
+ print("Received message:{}".format(msg["message_type"]),
+ "version:{}".format(msg["version"]))
+ if msg['message_type'] == 'mx_discover':
+ await websocket.send(json.dumps(MXCapabilityReq))
+
+ except:
+ print("Client disconnected")
+
+ try:
+ start_server = websockets.serve(hello, 'localhost', 8765,ssl=ctx)
+
+ asyncio.get_event_loop().run_until_complete(start_server)
+ asyncio.get_event_loop().run_forever()
+ except:
+ print("Server stopped")
+
+Acknowledgments
+
+ This protocol is the outcome of work by many engineers, not just the
+ authors of this document. The people who contributed to this
+ project, listed in alphabetical order by first name, are Barbara
+ Orlandi, Bongho Kim, David Lopez-Perez, Doru Calin, Jonathan Ling,
+ Lohith Nayak, and Michael Scharf.
+
+Contributors
+
+ The authors gratefully acknowledge the following additional
+ contributors, in alphabetical order by first name: A Krishna Pramod/
+ Nokia Bell Labs, Hannu Flinck/Nokia Bell Labs, Hema Pentakota/Nokia,
+ Julius Mueller/AT&T, Nurit Sprecher/Nokia, Salil Agarwal/Nokia,
+ Shuping Peng/Huawei, and Subramanian Vasudevan/Nokia Bell Labs.
+ Subramanian Vasudevan has been instrumental in conceptualization and
+ development of solution principles for the MAMS framework. Shuping
+ Peng has been a key contributor in refining the framework and
+ control-plane protocol aspects.
+
+Authors' Addresses
+
+ Satish Kanugovi
+ Nokia Bell Labs
+
+ Email: satish.k@nokia-bell-labs.com
+
+
+ Florin Baboescu
+ Broadcom
+
+ Email: florin.baboescu@broadcom.com
+
+
+ Jing Zhu
+ Intel
+
+ Email: jing.z.zhu@intel.com
+
+
+ SungHoon Seo
+ Korea Telecom
+
+ Email: sh.seo@kt.com