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 [
RFC 8259].
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.
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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"
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"$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"
}
{
"version" : "1.0",
"message_type" : "mx_discover",
"sequence_num" : 1
}
{
"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
}
}
]
}
{
"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
}
]
}
{
"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
}
}
{
"version" : "1.0",
"message_type" : "mx_capability_ack",
"sequence_num" : 3,
"unique_session_id" : {
"ncm_id" : 110,
"session_id" : 1111
},
"capability_ack" : "MX_ACCEPT"
}
{
"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"
}
{
"version" : "1.0",
"message_type" : "mx_reconf_rsp",
"sequence_num" : 4
}
{
"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"
}
}
]
}
]
}
{
"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
}
}
]
}
{
"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
}
]
}
{
"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
}
]
}
{
"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
}
}]
}
]
}
{
"version": "1.0",
"message_type": "mx_app_madp_assoc_rsp",
"sequence_num": 6,
"is_success": true
}
{
"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"
}
{
"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
}
}
{
"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"
}
]
}
{
"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
}
]
}
]
}
{
"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
}
]
}
]
}
{
"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"
}
{
"version" : "1.0",
"message_type" : "mx_keep_alive_rsp",
"sequence_num" : 12,
"unique_session_id" : {
"ncm_id" : 110,
"session_id" : 1111
}
}
{
"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"
}
{
"version" : "1.0",
"message_type" : "mx_session_termination_rsp",
"sequence_num" : 13,
"unique_session_id" : {
"ncm_id" : 110,
"session_id" : 1111
}
}
{
"version" : "1.0",
"message_type" : "mx_network_analytics_req",
"sequence_num" : 20,
"unique_session_id" : {
"ncm_id" : 110,
"session_id" : 1111
},
"params" : [
"jitter",
"latency"
]
}
{
"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
}
]
}
]
}