idnits 2.17.1 draft-agarwal-intarea-mams-protocol-json-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack a Security Considerations section. ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 52 instances of too long lines in the document, the longest one being 50 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 03, 2017) is 2482 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC7285' is defined on line 2662, but no explicit reference was found in the text == Outdated reference: A later version (-05) exists of draft-kanugovi-intarea-mams-protocol-04 == Outdated reference: A later version (-02) exists of draft-zhu-intarea-mams-control-protocol-01 -- Obsolete informational reference (is this intentional?): RFC 7159 (Obsoleted by RFC 8259) Summary: 3 errors (**), 0 flaws (~~), 5 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTAREA S. Agarwal 3 Internet-Draft S. Kanugovi 4 Intended status: Standards Track Nokia 5 Expires: January 4, 2018 S. Peng 6 Huawei 7 J. Mueller 8 AT&T 9 July 03, 2017 11 Control Plane Message Definitions for Multiple Access Management 12 Services in JSON 13 draft-agarwal-intarea-mams-protocol-json-00 15 Abstract 17 Today, a device can be simultaneously connected to multiple 18 communication networks based on different technology implementations 19 and network architectures like WiFi, LTE, DSL. In such multi- 20 connectivity scenario, it is desirable to combine multiple access 21 networks or select the best one to improve quality of experience for 22 a user and improve overall network utilization and efficiency. This 23 document presents the control plane message definitions and their 24 presentations in JSON, for control plane procedures for configuring 25 the user plane in a multi access management services (MAMS) framework 26 that can be used to flexibly select the combination of uplink and 27 downlink access and core network paths, and user plane treatment for 28 improving network efficiency and enhanced application quality of 29 experience. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at http://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on January 4, 2018. 48 Copyright Notice 50 Copyright (c) 2017 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (http://trustee.ietf.org/license-info) in effect on the date of 56 publication of this document. Please review these documents 57 carefully, as they describe your rights and restrictions with respect 58 to this document. Code Components extracted from this document must 59 include Simplified BSD License text as described in Section 4.e of 60 the Trust Legal Provisions and are provided without warranty as 61 described in the Simplified BSD License. 63 Table of Contents 65 1. Conventions used in this document . . . . . . . . . . . . . . 4 66 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 67 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 68 4. Protocol Specification: General Processing . . . . . . . . . 5 69 4.1. Overall Design . . . . . . . . . . . . . . . . . . . . . 5 70 4.2. Notation . . . . . . . . . . . . . . . . . . . . . . . . 5 71 4.3. Discovery Procedure . . . . . . . . . . . . . . . . . . . 6 72 4.3.1. MX Discovery Message . . . . . . . . . . . . . . . . 6 73 4.4. System Information Procedure . . . . . . . . . . . . . . 6 74 4.4.1. MX System Information Message . . . . . . . . . . . . 6 75 4.5. Capability Exchange Procedure . . . . . . . . . . . . . . 7 76 4.5.1. MX Capability Request . . . . . . . . . . . . . . . . 7 77 4.5.2. MX Capability Response . . . . . . . . . . . . . . . 7 78 4.5.3. MX Capability Acknowledge . . . . . . . . . . . . . . 8 79 4.6. User Plane Configuration Procedure . . . . . . . . . . . 8 80 4.6.1. MX User Plane Configuration Request . . . . . . . . . 8 81 4.6.2. MX User Plane Configuration Confirmation . . . . . . 9 82 4.7. Reconfiguration Procedure . . . . . . . . . . . . . . . . 10 83 4.7.1. Reconfiguration Request . . . . . . . . . . . . . . . 10 84 4.7.2. Reconfiguration Response . . . . . . . . . . . . . . 10 85 4.8. Path Estimation Procedure . . . . . . . . . . . . . . . . 11 86 4.8.1. Path Estimation Request . . . . . . . . . . . . . . . 11 87 4.8.2. Path Estimation Report . . . . . . . . . . . . . . . 12 88 4.9. Traffic Steering Procedure . . . . . . . . . . . . . . . 12 89 4.9.1. Traffic Steering Request . . . . . . . . . . . . . . 12 90 4.9.2. Traffic Steering Response . . . . . . . . . . . . . . 13 91 4.10. SSID Indication . . . . . . . . . . . . . . . . . . . . . 13 92 4.11. Measurements . . . . . . . . . . . . . . . . . . . . . . 13 93 4.11.1. Measurement Configuration . . . . . . . . . . . . . 13 94 4.11.2. Measurement Report . . . . . . . . . . . . . . . . . 14 95 4.12. Keep Alive . . . . . . . . . . . . . . . . . . . . . . . 14 96 4.12.1. Keep Alive Request . . . . . . . . . . . . . . . . . 14 97 4.12.2. Keep Alive Response . . . . . . . . . . . . . . . . 15 98 4.13. Session Termination Procedure . . . . . . . . . . . . . . 15 99 4.13.1. Session Terminate Request . . . . . . . . . . . . . 15 100 4.13.2. Session Terminate Response . . . . . . . . . . . . . 16 101 5. Protocol Specification: Data Types . . . . . . . . . . . . . 16 102 5.1. MXBase . . . . . . . . . . . . . . . . . . . . . . . . . 16 103 5.2. Unique Session Id . . . . . . . . . . . . . . . . . . . . 17 104 5.3. NCM Connections . . . . . . . . . . . . . . . . . . . . . 17 105 5.4. Connection Information . . . . . . . . . . . . . . . . . 18 106 5.5. Features Activation Status . . . . . . . . . . . . . . . 18 107 5.6. Anchor Connections . . . . . . . . . . . . . . . . . . . 19 108 5.7. Delivery Connections . . . . . . . . . . . . . . . . . . 19 109 5.8. Method Support . . . . . . . . . . . . . . . . . . . . . 19 110 5.9. Convergence Methods . . . . . . . . . . . . . . . . . . . 20 111 5.10. Adaptation Methods . . . . . . . . . . . . . . . . . . . 20 112 5.11. Setup of Anchor Connections . . . . . . . . . . . . . . . 20 113 5.11.1. Convergence Method Parameters . . . . . . . . . . . 21 114 5.11.2. Setup Delivery Connections . . . . . . . . . . . . . 21 115 5.12. Init Probe Results . . . . . . . . . . . . . . . . . . . 22 116 5.13. Active Probe Results . . . . . . . . . . . . . . . . . . 22 117 5.14. Downlink Delivery . . . . . . . . . . . . . . . . . . . . 23 118 5.15. Uplink Delivery . . . . . . . . . . . . . . . . . . . . . 23 119 5.16. Traffic Flow Template . . . . . . . . . . . . . . . . . . 23 120 5.17. Measurement Report Configuration . . . . . . . . . . . . 24 121 5.18. Measurement Report . . . . . . . . . . . . . . . . . . . 25 122 6. Schemas in JSON . . . . . . . . . . . . . . . . . . . . . . . 26 123 6.1. MX Base Schema . . . . . . . . . . . . . . . . . . . . . 26 124 6.2. MX Definitions . . . . . . . . . . . . . . . . . . . . . 26 125 6.3. MX Discover . . . . . . . . . . . . . . . . . . . . . . . 31 126 6.4. MX System Update . . . . . . . . . . . . . . . . . . . . 31 127 6.5. MX Capability Request . . . . . . . . . . . . . . . . . . 32 128 6.6. MX Capability Response . . . . . . . . . . . . . . . . . 33 129 6.7. MX Capability Ack . . . . . . . . . . . . . . . . . . . . 34 130 6.8. MX Reconfiguration Request . . . . . . . . . . . . . . . 35 131 6.9. MX Reconfiguration Response . . . . . . . . . . . . . . . 36 132 6.10. MX UP Setup Configuration . . . . . . . . . . . . . . . . 37 133 6.11. MX UP Setup Confirmation . . . . . . . . . . . . . . . . 38 134 6.12. MX Traffic Steering Request . . . . . . . . . . . . . . . 39 135 6.13. MX Traffic Steering Response . . . . . . . . . . . . . . 40 136 6.14. MX Path Estimation Request . . . . . . . . . . . . . . . 41 137 6.15. MX Path Estimation Report . . . . . . . . . . . . . . . . 42 138 6.16. MX SSID Indication . . . . . . . . . . . . . . . . . . . 43 139 6.17. MX Measurements Configuration . . . . . . . . . . . . . . 44 140 6.18. MX Measurements Report . . . . . . . . . . . . . . . . . 45 141 6.19. MX Keep Alive Request . . . . . . . . . . . . . . . . . . 47 142 6.20. MX Keep Alive Response . . . . . . . . . . . . . . . . . 47 143 6.21. MX Session Termination Request . . . . . . . . . . . . . 47 144 6.22. MX Session Termination Response . . . . . . . . . . . . . 48 145 7. Examples in JSON . . . . . . . . . . . . . . . . . . . . . . 48 146 7.1. MX Discover . . . . . . . . . . . . . . . . . . . . . . . 48 147 7.2. MX System Update . . . . . . . . . . . . . . . . . . . . 49 148 7.3. MX Capability Request . . . . . . . . . . . . . . . . . . 49 149 7.4. MX Capability Response . . . . . . . . . . . . . . . . . 51 150 7.5. MX Capacity Ack . . . . . . . . . . . . . . . . . . . . . 52 151 7.6. MX Reconfiguration Request . . . . . . . . . . . . . . . 52 152 7.7. MX Reconfiguration Response . . . . . . . . . . . . . . . 53 153 7.8. MX UP Setup Configuration Request . . . . . . . . . . . . 53 154 7.9. MX UP Setup Confirmation . . . . . . . . . . . . . . . . 54 155 7.10. MX Traffic Steering Request . . . . . . . . . . . . . . . 55 156 7.11. MX Traffic Steering Response . . . . . . . . . . . . . . 57 157 7.12. MX Path Estimation Request . . . . . . . . . . . . . . . 57 158 7.13. MX Path Estimation Results . . . . . . . . . . . . . . . 58 159 7.14. MX SSID Indication . . . . . . . . . . . . . . . . . . . 58 160 7.15. MX Measurements Configuration . . . . . . . . . . . . . . 59 161 7.16. MX Measurements Report . . . . . . . . . . . . . . . . . 60 162 7.17. MX Keep Alive Request . . . . . . . . . . . . . . . . . . 62 163 7.18. MX Keep Alive Response . . . . . . . . . . . . . . . . . 62 164 7.19. MX Session Termination Request . . . . . . . . . . . . . 62 165 7.20. MX Session Termination Response . . . . . . . . . . . . . 62 166 8. Contributing Authors . . . . . . . . . . . . . . . . . . . . 63 167 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 63 168 9.1. Normative References . . . . . . . . . . . . . . . . . . 63 169 9.2. Informative References . . . . . . . . . . . . . . . . . 63 170 Appendix A. Implementation Example . . . . . . . . . . . . . . . 64 171 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 67 173 1. Conventions used in this document 175 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 176 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 177 document are to be interpreted as described in [RFC2119]. 179 2. Introduction 181 Multi Access Management Service (MAMS) 182 [I-D.kanugovi-intarea-mams-protocol] is a framework to select and 183 configure network paths when multiple connections can serve a client 184 device. It allows the path selection and configuration to adapt to 185 dynamic network conditions. It is based on principles of user plane 186 interworking that enables the solution to be deployed as an overlay 187 without impacting the underlying networks. 189 This document presents the JSON based definitions for control plane 190 messages for the MAMS framework. The control plane messages for 191 which have been defined in [I-D.zhu-intarea-mams-control-protocol]. 193 3. Terminology 195 "Anchor Connection": Refers to the network path from the N-MADP to 196 the Application Server that corresponds to a specific IP anchor that 197 has assigned an IP address to the client. 199 "Delivery Connection": Refers to the network path from the N-MADP to 200 the client. 202 "Network Connection Manager" (NCM), "Client Connection Manager" 203 (CCM), "Network Multi Access Data Proxy" (N-MADP), and "Client Multi 204 Access Data Proxy" (C-MADP) in this document are to be interpreted as 205 described in [I-D.kanugovi-intarea-mams-protocol]. 207 4. Protocol Specification: General Processing 209 4.1. Overall Design 211 Control plane messages for MAMS are exchanged between the CCM and NCM 212 over WebSocket, the content of messages is defined in "Java Script 213 Object Notation" (JSON) format. 215 4.2. Notation 217 This document uses JSONString, JSONNumber, and JSONBool to indicate 218 the JSON string, number, and boolean types, respectively. The type 219 JSONValue indicates a JSON value, as specified in Section 3 of 220 [RFC7159]. 222 This document uses an adaptation of the C-style struct notation to 223 define JSON objects. A JSON object consists of name/value pairs. 224 This document refers to each pair as a field. In some context, this 225 document also refers to a field as an attribute. The name of a 226 field/attribute may be referred to as the key. An optional field is 227 enclosed by [ ]. In the definitions, the JSON names of the fields 228 are case sensitive. An array is indicated by two numbers in angle 229 brackets, , where m indicates the minimal number of values and 230 n is the maximum. When this document uses * for n, it means no upper 231 bound. 233 For example, the definition below defines a new type Type4, with 234 three fields named "name1", "name2", and "name3", respectively. The 235 field named "name3" is optional, and the field named "name2" is an 236 array of at least one value. 238 object { Type1 name1; Type2 name2<1..*>; [Type3 name3;] } Type4; 239 This document uses subtyping to denote that one type is derived from 240 another type. The example below denotes that TypeDerived is derived 241 from TypeBase. TypeDerived includes all fields defined in TypeBase. 242 If TypeBase does not have a field named "name1", TypeDerived will 243 have a new field named "name1". If TypeBase already has a field 244 named "name1" but with a different type, TypeDerived will have a 245 field named "name1" with the type defined in TypeDerived (i.e., Type1 246 in the example). 248 object { Type1 name1; } TypeDerived : TypeBase; 250 Note that, despite the notation, no standard, machine-readable 251 interface definition or schema is provided in this document. 252 Extension documents may describe these as necessary. 254 4.3. Discovery Procedure 256 4.3.1. MX Discovery Message 258 This message is the first message sent by CCM to discover the 259 presence of NCM in the network. It contains only the base 260 information as described in Section 5.1 with message_type set as 261 mx_discover. 263 Following is the representation of the message: 265 object { 267 } MXDiscover : MXBase; 269 4.4. System Information Procedure 271 4.4.1. MX System Information Message 273 This message is sent by NCM to CCM to inform the endpoints that NCM 274 supports for MAMS functionality. In addition to base information 275 (Section 5.1) it contains following information: 277 a) NCM Connections (described in Section 5.3) 279 Following is the representation of the message: 281 object { 283 NCMConnections ncm_connections; 285 } MXSystemInfo : MXBase; 287 4.5. Capability Exchange Procedure 289 4.5.1. MX Capability Request 291 This message is sent by CCM to NCM to indicate the capabilities of 292 the CCM instance available to the NCM indicated in System Info 293 message earlier. In addition to base information (Section 5.1) it 294 contains following information: 296 (a) Features Activation Status: Described in Section 5.5 297 (b) Number of anchor connections: Number of anchor connection 298 (towards core) supported by the NCM. 299 (c) Anchor Connections: Described in sec Section 5.6 300 (d) Number of Delivery connections: Number of delivery connection 301 (towards access) supported by the NCM. 302 (e) Delivery Connections: Described in Section 5.7 303 (f) Convergence Methods: Described in Section 5.9 304 (g) Adaptation Methods: Described in Section 5.10 306 Following is the representation of the message: 308 object { 309 FeaturesActive feature_active; 310 JSONNumber num_anchor_connections; 311 AnchorConnections anchor_connections; 312 JSONNumber num_delivery_connections; 313 DeliveryConnections delivery_connections; 314 ConvergenceMethods convergence_methods; 315 AdaptationMethods adaptation_methods 316 } MXCapabilityReq : MXBase; 318 4.5.2. MX Capability Response 320 This message is sent by NCM to CCM to indicate the capabilities of 321 the NCM instance and unique session identifier for CCM. In addition 322 to base information (Section 5.1) it contains following information: 324 (a) Features Activation Status: Described in Section 5.5 325 (b) Number of anchor connections: Number of anchor connection 326 (towards core) supported by the NCM. 327 (c) Anchor Connections: Described in Section 5.6 328 (d) Number of Delivery connections: Number of delivery connection 329 (towards access) supported by the NCM. 330 (e) Delivery Connections: Described in Section 5.7 331 (f) Convergence Methods: Described in Section 5.9 332 (g) Adaptation Methods: Described in Section 5.10 333 (h) Unique Session Id: This uniquely identifies the session between 334 CCM and NCM in a network. Described in Section 5.2 336 Following is the representation of the message: 338 object { 339 FeaturesActive feature_active; 340 JSONNumber num_anchor_connections; 341 AnchorConnections anchor_connections; 342 JSONNumber num_delivery_connections; 343 DeliveryConnections delivery_connections; 344 ConvergenceMethods convergence_methods; 345 AdaptationMethods adaptation_methods 346 UniqueSessionId unique_session_id; 347 } MXCapabilityRsq : MXBase; 349 4.5.3. MX Capability Acknowledge 351 This message is sent by CCM to NCM to indicate acceptance of 352 capabilities advertised by NCM in earlier MX Capability Response 353 message. In addition to base information (Section 5.1) it contains 354 following information: 356 (a) Unique Session Id: Same identifier as provided in MX Capability 357 RSP. Described in Section 5.2. 358 (b) Capability Acknowledgement: Either Accept or Reject of the 359 capabilities sent by CCM. Can take either "MX_ACCEPT" or 360 "MX_REJECT" as acceptable values. 362 Following is the representation of the message: 364 object { 365 UniqueSessionId unique_session_id; 366 JSONString capability_ack; 367 } MXCapabilityAck : MXBase; 369 4.6. User Plane Configuration Procedure 371 4.6.1. MX User Plane Configuration Request 373 This message is sent by NCM to CCM to configure the user plane for 374 MAMS. In addition to base information (Section 5.1) it contains 375 following information: 377 (a) Number of Anchor Connection: Number of anchor connections 378 supported by NCM. 379 (b) Setup of Anchor Connections: Described in Section 5.11. 381 Following is the representation of the message: 383 object { 384 JSONNumber num_anchor_connections; 385 SetupAnchorConns anchor_connections; 386 } MXUPSetupConfigReq : MXBase; 388 4.6.2. MX User Plane Configuration Confirmation 390 This message is the confirmation of user plane setup message sent 391 from CCM after successfully configuring the user plane at user 392 equipment. This message contains following information: 394 (a) Unique Session Id: Same identifier as provided in MX Capability 395 RSP. Described in Section 5.2. 396 (b) MX Probe Parameters (included if probing is supported) 398 (1) Probe Port: UDP port for accepting probe message. 399 (c) For each delivery connection following is required: 401 (1) Connection ID: Delivery connection id supported by UE. 402 (2) Client Adaptation Layer Parameters: If UDP adaptation layer 403 is in use then the UDP port to be used at C-MADP side. 405 Following is the representation of the message: 407 object { 408 UniqueSessionId unique_session_id; 409 [ProbeParam probe_param;] 410 JSONNumber num_delivery_conn; 411 ClientParam client_params <1...*>; 412 } MXUPSetupConfigCnf : MXBase; 414 Where ProbeParam is defined as following: 416 object { 417 JSONNumber probe_port; 418 } ProbeParam; 420 Where ClientParam is defined as following: 422 object { 423 JSONNumber connection_id; 424 [AdaptationParam adapt_param;] 425 } ClientParam; 427 Where AdaptationParam is defined as following: 429 object { 430 JSONNumber udp_adapt_port; 431 } AdaptationParam; 433 4.7. Reconfiguration Procedure 435 4.7.1. Reconfiguration Request 437 This message is sent by CCM to NCM in case of reconfiguration of any 438 the connections from user equipment's side. In addition to base 439 information (Section 5.1) it contains following information: 441 (a) Unique Session Id: Identifier for CCM-NCM association 442 Section 5.2. 443 (b) Reconfiguration Action: Type of reconfiguration action can be 444 one of "setup", "release" or "modify". 445 (c) Connection Id: Connection Id for which the reconfiguration is 446 taking place. 447 (d) IP address: IP address in case of setup and modify type of 448 reconfiguration. 449 (e) SSID: If the connection type is WiFi, in that case the SSID the 450 UE has attached to is contained in this parameter. 451 (f) MTU of connection: MTU of the delivery path that is calculated 452 at the UE for use by NCM to configure fragmentation and 453 concatenation procedures at N-MADP. 454 (g) Connection Status: This parameter informs if the connection is 455 currently "disabled", "enabled" or "connected". Default: 456 "connected". 457 (h) Delivery Node Id: Identity of the node to which the client is 458 attached. ECGI in case of LTE and WiFi AP Id or MAC address in 459 case of WiFi. 461 Following is the representation of the message: 463 object { 464 UniqueSessionId unique_session_id; 465 JSONString reconf_action; 466 JSONNumber connection_id; 467 JSONString ip_address; 468 JSONString ssid; 469 JSONNumber mtu_size; 470 JSONString connection_status; 471 [JSONSring delivery_node_id;] 472 } MXReconfReq : MXBase; 474 4.7.2. Reconfiguration Response 476 This message is sent by NCM to CCM as a confirmation towards 477 reconfiguration requirement after taking the reconfiguration into use 478 and contains only the base information (as defined in Section 5.1). 480 Following is the representation of the message:] 481 object { 482 } MXReconfRsp : MXBase; 484 4.8. Path Estimation Procedure 486 4.8.1. Path Estimation Request 488 This message is sent by NCM towards CCM to configure the CCM to send 489 path estimation reports. In addition to base information 490 (Section 5.1) it contains following information: 492 (a) Connection Id: Id of the connection for which the path 493 estimation report is required. 494 (b) Init Probe Test Duration: Duration of initial probe test in 495 milliseconds. [TBD: Range of values] 496 (c) Init Probe Test Rate: Initial testing rate in Mega Bits per 497 Second. [TBD: Range of values] 498 (d) Init Probe Size: Size of each packet for initial probe in Bytes. 499 [TBD: Range of values] 500 (e) Init Probe Ack: If an acknowledgement for probe is required. 501 [Possible values: "yes", "no"] 502 (f) Active Probe Frequency: Frequency in milliseconds at which the 503 active probes shall be sent. [TBD: Range of values] 504 (g) Active Probe Size: Size of the active probe in Bytes. [TBD: 505 Range of values] 506 (h) Active Probe Duration: Duration in seconds for which the active 507 probe shall be performed. [TBD. Range of values] 508 (i) Active Probe Ack. If an acknowledgement for probe is required. 509 [Possible values: "yes", "no"] 511 Following is the representation of the message: 513 object { 514 JSONNumber connection_id; 515 JSONNumber init_probe_test_duration_ms; 516 JSONNumber init_probe_test_rate_Mbps; 517 JSONNumber init_probe_size_bytes; 518 JSONString init_probe_ack_req; 519 JSONNumber active_probe_freq_ms; 520 JSONNumber active_probe_size_bytes; 521 JSONNumber active_probe_duration_sec; 522 JSONString active_probe_ack_req; 523 } MXPathEstReq : MXBase; 525 4.8.2. Path Estimation Report 527 This message is sent by CCM to NCM as report to the probe estimation 528 configured by NCM. In addition to base information (Section 5.1) it 529 contains following information: 531 (a) Unique Session Id: Same identifier as provided in MX Capability 532 RSP. Described in Section 5.2. 533 (b) Connection Id: Id of the connection for which the path 534 estimation report is required. 535 (c) Init Probe Results: Defined in section Section 5.12. 536 (d) Active Probe Results: Defined in section Section 5.13. 538 Following is the representation of the message: 540 object { 541 JSONNumber connection_id; 542 UniqueSessionId unique_session_id; 543 [InitProbeResults init_probe_results;] 544 [ActiveProbeResults active_probe_results;] 545 } MXPathEstResults : MXBase; 547 4.9. Traffic Steering Procedure 549 4.9.1. Traffic Steering Request 551 This message is sent by NCM to CCM for enabling traffic steering at 552 delivery side in uplink and downlink configuration. In addition to 553 base information (Section 5.1) it contains following information: 555 (a) Connection id: Defines the anchor connection number for which 556 the traffic steering is getting define. 557 (b) Downlink Delivery: Defined in Section 5.14. 558 (c) Uplink Delivery: Defined in Section 5.15. 559 (d) Features Activated: Defined in Section 5.5. 561 Following is the representation of the message: 563 object { 564 JSONNumber connection_id; 565 DLDelivery downlink_delivery; 566 ULDelivery uplink_delivery; 567 FeaturesActive feature_activation; 568 } MXTraffiSteeringReq : MXBase; 570 4.9.2. Traffic Steering Response 572 This message is response to Traffic Steering request from CCM to NCM. 573 In addition to base information (Section 5.1) it contains following 574 information: 576 (a) Unique Session Id: Same identifier as provided in MX Capability 577 RSP. Described in Section 5.2. 578 (b) Features Activated: Defined in Section 5.5. 580 Following is the representation of the message: 582 object { 583 UniqueSessionId unique_session_id; 584 FeaturesActive feature_activation; 585 } MXTraffiSteeringResp : MXBase; 587 4.10. SSID Indication 589 This message is sent by NCM to CCM to indicate the list of allowed 590 SSID which are supported by MAMS entity at the network side. It 591 contains the list of SSIDs. 593 Each SSID consists of the type of SSID (which can be one of the 594 "SSID", "BSSID" or "HESSID" and the SSID itself. 596 Following is the representation of the message: 598 object { 599 SSID ssid_list<1..*>; 600 } MXSSIDIndication : MXBase; 602 Where each SSID is defined as following: 604 object { 605 JSONString ssid_type; 606 JSONString ssid; 607 } SSID; 609 4.11. Measurements 611 4.11.1. Measurement Configuration 613 This message is sent from NCM to CCM to configure the period 614 measurement reporting at CCM. The message contains a list of 615 measurement configuration with each element containing following 616 information: 618 (a) Connection Id: Connection id of the delivery connection for 619 which the reporting is being configured. 620 (b) Connection Type: Connection Type for which the reporting is 621 being configured, can be "lte", "wifi", "5g-nr" etc. 622 (c) Measurement Report Configuration: Actual report configuration 623 based on the connection type, as defined in Section 5.17 625 Following is the representation of the message: 627 object { 628 MeasReportConf measurement_configuration <1..*>; 629 } MXMeasReportConf : MXBase; 631 Where each measurement MeasReportConf is represented by following: 633 object { 634 JSONNumber connection_id; 635 JSONString connection_type; 636 MeasReportConfs meas_rep_conf <1..*>; 637 } MeasReportConf; 639 4.11.2. Measurement Report 641 This message is periodically sent by CCM to NCM after measurement 642 configuration. In addition to the base information it contains 643 following information: 645 (a) Unique Session Id: Same identifier as provided in MX Capability 646 RSP. Described in Section 5.2. 647 (b) Measurement report for each delivery connection is measured by 648 the client device as defined in Section 5.18. 650 Following is the representation of the message: 652 object { 653 UniqueSessionId unique_session_id; 654 MXMeasRep measurment_reports <1..*>; 655 } MXMeasurementReport : MXBase; 657 4.12. Keep Alive 659 4.12.1. Keep Alive Request 661 A Keep Alive Request message can be sent from either NCM or CCM on 662 expiry of MAMS_KEEP_ALIVE timer or a handover event. This request 663 shall be responded by the peer with Keep Alive Response. In case of 664 no response from peer the MAMS connection shall be assumed to be 665 broken and new connection shall be established again by CCM by 666 sending MX Discover messages. 668 In addition to the base information it cantains following 669 information: 671 (a) Keep Alive Reason: Reason for sending this message, can be 672 "Timeout" or "Handover". 673 (b) Unique Session Id: Identifier for CCM-NCM association 674 Section 5.2. 675 (c) Connection Id: Connection id for which handover is detected, in 676 case the reason is "Handover". 677 (d) Delivery Node Id: The target delivery node id (ECGI or WiFi 678 Access Point Id/MAC) to which the handover is executed. 680 Following is the representation of the message: 682 object { 683 JSONString keep_alive_reason; 684 UniqueSessionId unique_session_id; 685 JSONNumber connection_id; 686 JSONString delivery_node_id; 687 } MXKeepAliveReq : MXBase; 689 4.12.2. Keep Alive Response 691 On receiving Keep Alive Request from peer, NCM/CCM shall immediately 692 respond with a Keep Alive Response message on the same delivery path 693 from where the request arrived. In addition to base information it 694 contains the unique session identifier for the CCM-NCM association 695 (defined in Section 5.2) 697 Following is the representation of the message: 699 object { 700 UniqueSessionId unique_session_id; 701 } MXKeepAliveResp : MXBase; 703 4.13. Session Termination Procedure 705 4.13.1. Session Terminate Request 707 In the event where NCM or CCM can no longer handle MAMS for any 708 reason then it can send MX session termination request to the peer. 709 In addition to base information it contains Unique Session Id and 710 reason for termination, this can be "MX_NORMAL_RELEASE", 711 "MX_NO_RESPONSE" or "INTERNAL_ERROR". 713 Following is the representation of the message: 715 object { 716 UniqueSessionId unique_session_id; 717 JSONString reason; 718 } MXSessionTerminationReq : MXBase; 720 4.13.2. Session Terminate Response 722 On reception of MX session termination request from peer, NCM/CCM 723 shall respond with MX Session Termination Response on the same 724 delivery path where the request arrived and clean the MAMS related 725 resources and settings. CCM shall re-initiate a new session with MX 726 Discover messages again. 728 Following is the representation of the message: 730 object { 731 UniqueSessionId unique_session_id; 732 } MXSessionTerminationResp : MXBase; 734 5. Protocol Specification: Data Types 736 5.1. MXBase 738 This is the base information that every message between CCM and NCM 739 exchanges shall have as mandatory information. It contains following 740 information: 742 (a) Version: Version of MAMS in used 743 (b) Message Type: Message type being sent with following as valid 744 values: 746 (a) "mx_discover" 747 (b) "mx_system_info" 748 (c) "mx_capability_req" 749 (d) "mx_capability_resp" 750 (e) mx_capability_ack" 751 (f) "mx_up_setup_conf_req" 752 (g) "mx_up_setup_cnf" 753 (h) "mx_reconf_req" 754 (i) "mx_reconf_rsp" 755 (j) "mx_path_est_req" 756 (k) "mx_path_est_results" 757 (l) "mx_traffic_steering_req" 758 (m) "mx_traffic_steering_rsp" 759 (n) "mx_ssid_indication" 760 (o) "mx_keep_alive_req" 761 (p) "mx_keep_alive_rsp" 762 (q) "mx_measurement_conf" 763 (r) "mx_measurement_report" 764 (s) "mx_session_termination_req" 765 (t) "mx_session_termination_resp" 766 (c) Sequence Number: Sequence number to uniquely identify a 767 transaction of message exchange, e.g. MX Capability REQ/RSP/ 768 ACK. 770 Following is the representation of this data type: 772 object { 773 JSONString version; 774 JSONString message_type; 775 JSONNumber sequence_num; 776 } MXBase; 778 5.2. Unique Session Id 780 This data type defines the unique session id between a CCM and NCM 781 entity, it contains a NCM id which is unique in the network and a 782 session id allocated by NCM for that session. On reception, of 783 discovery message if the session is existing then the old session id 784 is returned in System Info message otherwise NCM allocates a new 785 session id to the CCM and sends in response with System Info message. 787 Following is the representation of this data type: 789 object { 790 JSONNumber ncm_id; 791 JSONNumber session_id; 792 } UniqueSessionId; 794 5.3. NCM Connections 796 This data type defines the connection available at NCM for MAMS 797 connectivity towards the User Equipment. It contains a list of NCM 798 connections available where each connection has following 799 information: 801 (a) Connection Information: As defined in Section 5.4 802 (b) NCM End Point information: This contains IP Address and Port 803 exposed by NCM end point for CCM. 805 Following is the representation of this data type: 807 object { 808 NCMConnection items<1..*>; 809 } NCMConnections; 811 where NCMConnection is defined as: 813 object { 814 NCMEndPoint ncm_end_point; 815 } NCMConnection : ConnectionInfo; 817 where NCMEndPoint is defined as: 819 object { 820 JSONString ip_address; 821 JSONNumber port; 822 } NCMEndPoint; 824 5.4. Connection Information 826 This data type provides the mapping of connection Id and connection 827 type. It contains following information: 829 (a) Connection Id: Number indicating the connection can be 0,1,2 and 830 3. 831 (b) Connection type: Type of connect can be "Wi-Fi, "5G NR", "Multi- 832 Fire" and "LTE". 834 The two are considered a mapping like 0-"Wi-Fi", 1-"5G NR", 2-"Multi- 835 Fire" and 3-"LTE". 837 Following is the representation of this data type: 839 object { 840 JSONNumber connection_id; 841 JSONString connection_type; 842 } ConnectionInfo; 844 5.5. Features Activation Status 846 This data type provides the list of all features with their 847 activation status. Each feature status contains following: 849 (a) Feature Name: Name of the feature can be one of the following: 851 (a) "lossless_switching" 852 (b) "fragmentation" 853 (c) "concatenation" 854 (d) "uplink_aggregation" 855 (e) "downlink_aggregation" 856 (f) "measurement" 858 (b) Active status: Activation status of the feature, "true" means 859 feature is active, "false" means feature is inactive. 861 Following is the representation of this data type: 863 object { 864 FeatureInfo items<1..*>; 865 } FeaturesActive; 867 where FeatureInfo is defined as: 869 object { 870 JSONString feature_name; 871 JSONBool active; 872 } FeatureInfo; 874 5.6. Anchor Connections 876 This data type contains the list of Connection Information 877 (Section 5.4) that are supported at anchor (core) side. 879 Following is the representation of this data type: 881 object { 882 ConnectionInfo items<1..*>; 883 } AnchorConnections; 885 5.7. Delivery Connections 887 This data type contains the list of Connection Information 888 (Section 5.4) that are supported at delivery (access) side. 890 Following is the representation of this data type: 892 object { 893 ConnectionInfo items<1..*>; 894 } DeliveryConnections; 896 5.8. Method Support 898 This data type provides the support for a particular convergence or 899 adaptation method. It consists of following: 901 (a) Method: Name of the method. 902 (b) Supported: Whether the method named above is supported or not. 903 Possible values are "true" and "false". 905 Following is the representation of this data type: 907 object { 908 JSONString method; 909 JSONBool supported; 910 } MethodSupport; 912 5.9. Convergence Methods 914 This data type contains the list of all convergence methods and their 915 support status. Converge Methods possible are: 917 "Trailer_Based" 918 "MPTCP_Proxy" 919 "GRE_Aggregation_Proxy" 921 Following is the representation of this data type: 923 object { 924 MethodSupport items<1..*>; 925 } ConvergenceMethods; 927 5.10. Adaptation Methods 929 This data type contains the list of all convergence methods and their 930 support status. Converge Methods possible are: 932 "UDP_without_DTLS" 933 "UDP_with_DTLS" 934 "IPSec" 935 "Client_NAT" 937 Following is the representation of this data type: 939 object { 940 MethodSupport items<1..*>; 941 } AdaptationMethods; 943 5.11. Setup of Anchor Connections 945 This data type defines the setup configuration for each of the anchor 946 connection that is required at the user equipment side. Each anchor 947 connection contains following information: 949 (a) Convergence Method: Converge method selected, has to be one of 950 the supported convergence method as listed in section 951 Section 5.9. 952 (b) Convergence Method Parameters: Described in section 953 Section 5.11.1 955 (c) Number of Delivery Connections: Number of delivery connections 956 (access side) that are supported for this anchor connection. 957 (d) Setup Delivery Connections: Described in section Section 5.11.2. 959 Following is the representation of this data type: 961 object { 962 SetupAnchorConn items<1..*>; 963 } SetupAnchorConns; 965 where each Anchor connection configuration is defined as following: 967 object { 968 JSONString convergence_method; 969 ConvergenceMethodParam convergence_method_params; 970 JSONNumber num_delivery_connections; 971 SetupDeliveryConns delivery_connections; 972 } SetupAnchorConn : ConnectionInfo; 974 5.11.1. Convergence Method Parameters 976 This data type defines the parameters used for convergence method and 977 contains following: 979 (a) Proxy IP: IP Address of proxy that is provided by Convergence 980 Method selected. 981 (b) Proxy Port: Port of the proxy that is provided by Convergence 982 Method selected. 984 Following in the representation of this data type: 986 object { 987 JSONString proxy_ip; 988 JSONString proxy_port; 989 } ConvergenceMethodParam; 991 5.11.2. Setup Delivery Connections 993 This is the list of delivery connections and their parameters to be 994 configured at the user equipment. Each delivery connection defined 995 by its connection information (Section 5.4) contains optionally 996 following: 998 (a) Adaptation Method: Selected adaptation method name, this shall 999 be one of the names as listed in Section 5.10. 1000 (b) Adaptation Method Parameters: Depending on the adaptation method 1001 one or more of the following parameters shall be provided. 1003 (a) Tunnel IP address 1004 (b) Tunnel Port number 1005 (c) Shared Secret 1007 Following in the representation of this data type: 1009 object { 1010 SetupDeliveryConn items<1..*>; 1011 } SetupDeliveryConns; 1013 where each Setup Delivery Connection consists of following: 1015 object { 1016 [JSONSting adaptation_method;] 1017 [AdaptationMethodParam adaptation_method_param;] 1018 } SetupDeliveryConn : ConnectionInfo; 1020 where Adaptation Method Param is defined as: 1022 object { 1023 JSONString tunnel_ip_addr; 1024 JSONString tunnel_end_port; 1025 JSONString shared_secret; 1026 } AdaptationMethodParam; 1028 5.12. Init Probe Results 1030 This data type defines the results of init probe request made by NCM. 1031 It consists of following information: 1033 (a) Lost Probes: Percentage or probes lost. 1034 (b) Prode Delay: Average delay of probe message in microseconds. 1035 (c) Probe Rate: Probe rate achieved in Mega Bits per second. 1037 Following in the representation of this data type: 1039 object { 1040 JSONNumber lost_probes_percentage; 1041 JSONNumber probe_rate_Mbps; 1042 } InitProbeResults; 1044 5.13. Active Probe Results 1046 This data type defines the results of init probe request made by NCM. 1047 It consists of following information: 1049 (a) Average Probe Throughput: Average active probe throughput 1050 achieved in Mega Bits per second. 1052 Following in the representation of this data type: 1054 object { 1055 JSONNumber avg_tput_last_probe_duration_Mbps; 1056 } ActiveProbeResults; 1058 5.14. Downlink Delivery 1060 This data type defines the list of connections which are enabled in 1061 delivery side to be used in downlink direction. 1063 Following in the representation of this data type: 1065 object { 1066 JSONNumber connection_id <1..*>; 1067 } DLDelivery; 1069 5.15. Uplink Delivery 1071 This data type defines the list of connections and parameters enabled 1072 for deliver side to be used in uplink direction. 1074 The uplink delivery consists of multiple uplink delivery entities, 1075 where each entity consists of a traffic flow template (TFT) 1076 Section 5.16 and list of connection ids in uplink where traffic 1077 qualifying for such traffic flow template can be redirected. 1079 Following in the representation of this data type: 1081 object { 1082 ULDeliveryEntity ul_del <1..*>; 1083 } ULDelivery; 1085 Where each uplink delivery entity consists of following data type: 1087 object { 1088 TrafficFlowTemplate ul_tft <1..*>; 1089 JSONNumber connection_id <1..*>; 1090 } ULDeliveryEntity; 1092 5.16. Traffic Flow Template 1094 Traffic flow template follows in general guidelines specified in 3GPP 1095 TS 23.060. 1097 Traffic flow template in MAMS consists of one or more of following: 1099 (a) Remote Address and Mask: IP address and subnet for remote 1100 addresses represented in CIDR notation. Default: "0.0.0.0/0". 1101 (b) Local Address and Mask: IP address and subnet for local 1102 addresses represented in CIDR notation. Default: "0.0.0.0/0" 1103 (c) Protocol Type: IP protocol number of the payload being carried 1104 by IP packet. e.g. UDP, TCP etc. Default: 255. 1105 (d) Local Port Range: Range of ports for local ports for which the 1106 flow template is applicable. Default: Start=0, End=65535. 1107 (e) Remote Port Range: Range of ports for remote ports for which the 1108 flow template is applicable. Default: Start=0, End=65535. 1109 (f) Traffic Class: Represented by Type of Service in IPv4 and 1110 Traffic Class in IPv6. Default: 255 1111 (g) Flow Label: Flow label for IPv6, applicable only for IPv6 1112 protocol type. Default: 0. 1114 Following in the representation of this data type: 1116 object { 1117 JSONString remote_addr_mask; 1118 JSONString local_addr_mask; 1119 JSONNumber protocol_type; 1120 PortRange local_port_range; 1121 PortRange remote_port_range; 1122 JSONNumber traffic_class; 1123 JSONNumber flow_label; 1124 } TrafficFlowTemplate; 1126 Where the port range is defined as following: 1128 object { 1129 JSONNumber start; 1130 JSONNumber end; 1131 } PortRange; 1133 5.17. Measurement Report Configuration 1135 This data type defines the configuration done by NCM towards CCM for 1136 reporting measurement events. 1138 (a) Measurement Report Parameter: Parameter which shall be measured 1139 and reported. This is dependent on the connection type: 1141 (a) For connection type "wifi" allowed measurement parameters 1142 are "WLAN_RSSI", "WLAN_LOAD", "UL_TPUT", "DL_TPUT", 1143 "EST_UL_TPUT" and "EST_DL_TPUT". 1144 (b) For connection type "lte" allowed measurement parameters 1145 are "LTE_RSRP", "LTE_RSRQ", "UL_TPUT" and "DL_TPUT". 1146 (b) Threshold: High and Low threshold for reporting. 1148 (c) Period: Period for reporting in milliseconds. 1150 Following is the representation of this data type: 1152 object { 1153 JSONString meas_rep_param; 1154 Threshold meas_threshold; 1155 JSONNumber meas_period; 1156 } MeasReportConfs; 1158 Where Threshold is defined as following: 1160 object { 1161 JSONNumber high; 1162 JSONNumber low; 1163 } Threshold; 1165 5.18. Measurement Report 1167 This data type defines the measurements reported by CCM for each 1168 access network measured. This type contains the connection 1169 information, delivery node id which identifies the cell (ECGI) or the 1170 WiFI Access Point Id or MAC address (or equivalent identifier in 1171 other technologies) and the actual measurement performed by CCM in 1172 the last measurement period. 1174 Following is the representation of this data type: 1176 object { 1177 JSONNumber connection_id; 1178 JSONString connection_type; 1179 JSONString delivery_node_id; 1180 Measurement measurements <1..*>; 1181 }MXMeasRep; 1183 Where Measurement is defined as the key value pair of measurement 1184 type and value. The exact type and value are defined on a per 1185 delivery type and defined in Section 5.17. 1187 object{ 1188 JSONString measurement_type; 1189 JSONNumber measurement_value; 1190 } Measurement; 1192 6. Schemas in JSON 1194 6.1. MX Base Schema 1196 { 1197 "$schema": "http://json-schema.org/draft-04/schema#", 1198 "definitions": { 1199 "message_type_def": { 1200 "enum": [ 1201 "mx_discover", 1202 "mx_system_info", 1203 "mx_capability_req", 1204 "mx_capability_resp", 1205 "mx_capability_ack" 1206 "mx_up_setup_conf_req", 1207 "mx_up_setup_cnf", 1208 "mx_reconf_req", 1209 "mx_reconf_rsp", 1210 "mx_path_est_req", 1211 "mx_path_est_results", 1212 "mx_traffic_steering_req", 1213 "mx_traffic_steering_rsp", 1214 "mx_ssid_indication", 1215 "mx_keep_alive_req", 1216 "mx_keep_alive_rsp", 1217 "mx_measurement_conf", 1218 "mx_measurement_report", 1219 "mx_session_termination_req", 1220 "mx_session_termination_resp" 1221 ], 1222 "type": "string" 1223 }, 1224 "sequence_num_def": { 1225 "minimum": 1, 1226 "type": "integer" 1227 }, 1228 "version_def": { 1229 "type": "string" 1230 } 1231 }, 1232 "id": "http://www.ietf.org/mams/mx_base_def.json" 1233 } 1235 6.2. MX Definitions 1237 { 1238 "$schema": "http://json-schema.org/draft-04/schema#", 1239 "definitions": { 1240 "adapt_method": { 1241 "enum": [ 1242 "UDP_without_DTLS", 1243 "UDP_with_DTLS", 1244 "IPSec", 1245 "Client_NAT" 1246 ], 1247 "type": "string" 1248 }, 1249 "conv_method": { 1250 "enum": [ 1251 "Trailer_Based", 1252 "MPTCP_Proxy", 1253 "GRE_Aggregation_Proxy" 1254 ], 1255 "type": "string" 1256 }, 1257 "supported": { 1258 "type": "boolean" 1259 }, 1260 "active": { 1261 "type": "boolean" 1262 }, 1263 "connection_id": { 1264 "type": "integer" 1265 }, 1266 "feature_name": { 1267 "enum": [ 1268 "lossless_switching", 1269 "fragmentation", 1270 "concatenation", 1271 "uplink_aggregation", 1272 "downlink_aggregation", 1273 "measurement" 1274 ], 1275 "type": "string" 1276 }, 1277 "connection_type": { 1278 "enum": [ 1279 "wi-fi", 1280 "5g-nr", 1281 "multi-fire", 1282 "lte" 1283 ], 1284 "type": "string" 1285 }, 1286 "ip_address": { 1287 "type": "string" 1289 }, 1290 "port": { 1291 "maximum": 65535, 1292 "minimum": 1, 1293 "type": "integer" 1294 }, 1295 "adaptation_method": { 1296 "allOf" : [ 1297 { "$ref": "#/definitions/adapt_method" }, 1298 { "$ref": "#/definitions/supported" } 1299 ] 1300 }, 1301 "connection": { 1302 "allOf" : [ 1303 { "$ref": "#/definitions/connection_id" }, 1304 { "$ref": "#/definitions/connection_type" } 1305 ] 1306 }, 1307 "convergence_method": { 1308 "allOf": [ 1309 { "$ref": "#/definitions/conv_method" }, 1310 { "$ref": "#/definitions/supported" } 1311 ] 1312 }, 1313 "feature_status": { 1314 "allOf": [ 1315 { "$ref": "#/definitions/feature_name" }, 1316 { "$ref": "#/definitions/active" } 1317 ] 1318 }, 1319 "ncm_end_point": { 1320 "allOf" : [ 1321 { "$ref" : "#/definitions/ip_address" }, 1322 { "$ref" : "#/definitions/port" } 1323 ] 1324 }, 1325 "capability_acknowledgement" : { 1326 "enum" : [ 1327 "MX_ACCEPT", 1328 "MX_REJECT" 1329 ], 1330 "type" : "string" 1331 }, 1332 "threshold" : { 1333 "high" : { 1334 "type" : "integer" 1335 }, 1336 "low" : { 1337 "type" : "integer" 1338 }, 1339 "type" : "object" 1340 }, 1341 "meas_report_param" : { 1342 "enum" : [ 1343 "WLAN_RSSI", 1344 "WLAN_LOAD", 1345 "LTE_RSRP", 1346 "LTE_RSRQ", 1347 "UL_TPUT", 1348 "DL_TPUT", 1349 "EST_UL_TPUT", 1350 "EST_DL_TPUT" 1351 ], 1352 "type" : "string" 1353 }, 1354 "meas_report_conf" : { 1355 "meas_rep_param" : { 1356 "$ref" : "#definitions/meas_report_param" 1357 }, 1358 "meas_threshold" : { 1359 "$ref" : "#definitions/threshold" 1360 }, 1361 "meas_period_ms" : { 1362 "type" : "integer" 1363 }, 1364 "type" : "object" 1365 }, 1366 "ssid_types" : { 1367 "enum" : [ 1368 "ssid", 1369 "bssid", 1370 "hessid" 1371 ], 1372 "type" : "string" 1373 }, 1374 "ip_addr_mask" : { 1375 "type" : "string", 1376 "default" : "0.0.0.0/0" 1377 }, 1378 "port_range" : { 1379 "start" : { 1380 "type" : "integer", 1381 "default" : 0 1382 }, 1383 "end" : { 1384 "type" : "integer", 1385 "default" : 65535 1386 } 1387 }, 1388 "traffic_flow_template" : { 1389 "remote_addr_mask" : { "$ref" : "#definitions/ip_addr_mask" }, 1390 "local_addr_mask" : { "$ref" : "#definitions/ip_addr_mask" }, 1391 "protocol_type" : { 1392 "type" : "integer", 1393 "minimum" : 0, 1394 "maximum" : 255 1395 }, 1396 "local_port_range" : { "$ref" : "#definitions/port_range" }, 1397 "remote_port_range" : { "$ref" : "#definitions/port_range" }, 1398 "traffic_class" : { 1399 "type" : "integer", 1400 "default" : 255 1401 }, 1402 "flow_label" : { 1403 "type" : "integer", 1404 "default" : 0 1405 } 1406 }, 1407 "delivery_node_id" : { 1408 "type" : "string" 1409 }, 1410 "unique_session_id" : { 1411 "type" : "object", 1412 "ncm_id" : { 1413 "type" : "integer" 1414 }, 1415 "session_id" : { 1416 "type" : "integer" 1417 } 1418 }, 1419 "keep_alive_reason" : { 1420 "enum" : [ 1421 "Timeout", 1422 "Handover" 1423 ], 1424 "type" : "string" 1425 }, 1426 "connection_status" : { 1427 "enum" : [ 1428 "disabled", 1429 "enabled", 1430 "connected" 1431 ], 1432 "type" : "string", 1433 "default" : "connected" 1434 }, 1435 "adaptation_param" : { 1436 "udp_adapt_port" : { 1437 "type" : "integer" 1438 } 1439 }, 1440 "probe_param" : { 1441 "probe_port" : { 1442 "type" : "integer" 1443 } 1444 }, 1445 "client_param" : { 1446 "connection_id" : { 1447 "type" : "integer" 1448 }, 1449 "adapt_param" : { 1450 "type" : {"$ref" : "#definitions/adaptation_param" } 1451 } 1452 } 1453 }, 1454 "id": "http://www.ietf.org/mams/definitions.json" 1455 } 1457 6.3. MX Discover 1459 { 1460 "$schema": "http://json-schema.org/draft-04/schema#", 1461 "additionalProperties": false, 1462 "id": "http://www.ietf.org/mams/mx_discover.json", 1463 "properties": { 1464 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1465 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1466 "version" : {"$ref": "mx_base_def.json#/version_def"} 1467 }, 1468 "type": "object" 1469 } 1471 6.4. MX System Update 1472 { 1473 "$schema": "http://json-schema.org/draft-04/schema#", 1474 "additionalProperties": false, 1475 "id": "http://www.ietf.org/mams/mx_system_info.json", 1476 "properties": { 1477 "message_type": { 1478 "$ref": "mx_base_def.json#/message_type_def" 1479 }, 1480 "sequence_num": { 1481 "$ref": "mx_base_def.json#/sequence_num_def" 1482 }, 1483 "version": { 1484 "$ref": "mx_base_def.json#/version_def" 1485 }, 1486 "ncm_connections": { 1487 "type": "array", 1488 "items": [ 1489 { "$ref": "definitions.json#/connection" }, 1490 { "$ref": "definitions.json#/ncm_end_point" } 1491 ] 1492 } 1493 }, 1494 "type": "object" 1495 } 1497 6.5. MX Capability Request 1498 { 1499 "$schema": "http://json-schema.org/draft-04/schema#", 1500 "additionalProperties": false, 1501 "id": "http://www.ietf.org/mams/mx_capability_req.json", 1502 "properties": { 1503 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1504 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1505 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1506 "adaptation_methods": { 1507 "items": { "$ref" : "definitions.json#/adaptation_method"}, 1508 "type": "array" 1509 }, 1510 "anchor_connections": { 1511 "items": { "$ref" : "definitions.json#/connection"}, 1512 "type": "array" 1513 }, 1514 "convergence_methods": { 1515 "items": { "$ref" : "definitions.json#/convergence_method"}, 1516 "type": "array" 1517 }, 1518 "delivery_connections": { 1519 "items": { "$ref" : "definitions.json#/connection"}, 1520 "type": "array" 1521 }, 1522 "feature_active": { 1523 "items": { "$ref" : "definitions.json#/feature_status"}, 1524 "type": "array" 1525 }, 1526 "num_anchor_connections": { 1527 "type": "integer" 1528 }, 1529 "num_delivery_connections": { 1530 "type": "integer" 1531 } 1532 }, 1533 "type": "object" 1534 } 1536 6.6. MX Capability Response 1537 { 1538 "$schema": "http://json-schema.org/draft-04/schema#", 1539 "additionalProperties": false, 1540 "id": "http://www.ietf.org/mams/mx_capability_resp.json", 1541 "properties": { 1542 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1543 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1544 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1545 "adaptation_methods": { 1546 "items": { "$ref" : "definitions.json#/adaptation_method" }, 1547 "type": "array" 1548 }, 1549 "anchor_connections": { 1550 "items": { "$ref" : "definitions.json#/connection"}, 1551 "type": "array" 1552 }, 1553 "convergence_methods": { 1554 "items": { "$ref" : "definitions.json#/convergence_method" }, 1555 "type": "array" 1556 }, 1557 "delivery_connections": { 1558 "items": { "$ref" : "definitions.json#/connection"}, 1559 "type": "array" 1560 }, 1561 "feature_active": { 1562 "items": { "$ref" : "definitions.json#/feature_status"}, 1563 "type": "array" 1564 }, 1565 "num_anchor_connections": { 1566 "type": "integer" 1567 }, 1568 "num_delivery_connections": { 1569 "type": "integer" 1570 }, 1571 "unique_session_id" : { 1572 "$ref": "definitions.json#/unique_session_id" 1573 } 1574 }, 1575 "type": "object" 1576 } 1578 6.7. MX Capability Ack 1579 { 1580 "$schema": "http://json-schema.org/draft-04/schema#", 1581 "definitions": {}, 1582 "id": "http://www.ietf.org/mams/mx_capability_ack.json", 1583 "properties": { 1584 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1585 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1586 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1587 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" }, 1588 "capability_ack": {"$ref" : "definitions.json#/capability_acknowledgement"} 1589 }, 1590 "type": "object" 1591 } 1593 6.8. MX Reconfiguration Request 1594 { 1595 "$schema": "http://json-schema.org/draft-04/schema#", 1596 "definitions": {}, 1597 "id": "http://www.ietf.org/mams/mx_reconf_req.json", 1598 "properties": { 1599 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1600 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1601 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1602 "unique_session_id" : { 1603 "$ref": "definitions.json#/unique_session_id" 1604 }, 1605 "connection_id" : {"$ref" : "definitions.json#/connection_id" }, 1606 "ip_address": {"$ref" : "definitions.json#/ip_address" }, 1607 "mtu_size": { 1608 "maximum" : 65535, 1609 "minimum": 1, 1610 "type": "integer" 1611 }, 1612 "ssid" : { 1613 "type" : "string" 1614 }, 1615 "reconf_action": { 1616 "enum": [ 1617 "release", 1618 "setup", 1619 "update" 1620 ], 1621 "id": "/properties/reconf_action", 1622 "type": "string" 1623 }, 1624 "connection_status" : {"$ref" : "definitions.json#/connection_status"}, 1625 "delivery_node_id" : {"$ref": "definitions.json#/delivery_node_id"} 1626 }, 1627 "type": "object" 1628 } 1630 6.9. MX Reconfiguration Response 1631 { 1632 "$schema": "http://json-schema.org/draft-04/schema#", 1633 "definitions": {}, 1634 "id": "http://www.ietf.org/mams/mx_reconf_rsp.json", 1635 "properties": { 1636 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1637 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1638 "version" : {"$ref": "mx_base_def.json#/version_def"} 1639 }, 1640 "type": "object" 1641 } 1643 6.10. MX UP Setup Configuration 1644 { 1645 "$schema": "http://json-schema.org/draft-04/schema#", 1646 "additionalProperties": false, 1647 "definitions": {}, 1648 "id": "http://www.ietf.org/mams/mx_up_setup_conf_req.json", 1649 "properties": { 1650 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1651 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1652 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1653 "num_anchor_connections": { 1654 "type": "integer" 1655 }, 1656 "anchor_connections": { 1657 "items": { 1658 "properties": { 1659 "connection_id": { "$ref" : "definitions.json#/connection_id" }, 1660 "connection_type": { "$ref" : "definitions.json#/connection_type" }, 1661 "convergence_method": { "$ref" : "definitions.json#/conv_method" }, 1662 "convergence_method_params": { 1663 "properties": { 1664 "proxy_ip": { "$ref" : "definitions.json#/ip_address" }, 1665 "proxy_port": {"$ref" : "definitions.json#/port" } 1666 }, 1667 "type": "object" 1668 }, 1669 "num_delivery_connections": { 1670 "type": "integer" 1671 }, 1672 "delivery_connections": { 1673 "items":{ "$ref" : "definitions.json#/connection" }, 1674 "type": "array" 1675 } 1676 }, 1677 "type": "object" 1678 }, 1679 "type": "array" 1680 } 1681 }, 1682 "type": "object" 1683 } 1685 6.11. MX UP Setup Confirmation 1686 { 1687 "$schema": "http://json-schema.org/draft-04/schema#", 1688 "definitions": {}, 1689 "id": "http://www.ietf.org/mams/mx_up_setup_cnf.json", 1690 "properties": { 1691 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1692 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1693 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1694 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" }, 1695 "probe_param" : { "$ref": "definitions.json#/probe_param" }, 1696 "num_delivery_conn" : { 1697 "type" : "integer" 1698 }, 1699 "client_params" : { 1700 "type" : "array", 1701 "items" : [ 1702 {"$ref": "definitions.json#/client_param"} 1703 ] 1704 } 1705 }, 1706 "type": "object" 1707 } 1709 6.12. MX Traffic Steering Request 1710 { 1711 "$schema": "http://json-schema.org/draft-04/schema#", 1712 "definitions": { 1713 "conn_list" : { 1714 "items" : { "$ref" : "definitions.json#/connection_id" }, 1715 "type": "array" 1716 }, 1717 "ul_delivery" : { 1718 "ul_tft" : { "$ref" : "definitions.json#/traffic_flow_template"}, 1719 "connection_list" : { "$ref" : "#definitions/conn_list" } 1720 } 1721 }, 1722 "id": "http://www.ietf.org/mams/mx_traffic_steering_req.json", 1723 "properties": { 1724 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1725 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1726 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1727 "connection_id": {"$ref" : "definitions.json#/connection_id" }, 1728 "downlink_delivery": { 1729 "items": { "$ref" : "definitions.json#/connection_id" }, 1730 "type": "array" 1731 }, 1732 "feature_activation": { 1733 "items": {"$ref" : "definitions.json#/feature_status" }, 1734 "type": "array" 1735 }, 1736 "uplink_delivery": { 1737 "items": { "$ref" : "#definitions/ul_delivery" }, 1738 "type": "array" 1739 } 1740 }, 1741 "type": "object" 1742 } 1744 6.13. MX Traffic Steering Response 1745 { 1746 "$schema": "http://json-schema.org/draft-04/schema#", 1747 "definitions": {}, 1748 "id": "http://example.com/example.json", 1749 "properties": { 1750 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1751 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1752 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1753 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" }, 1754 "feature_activation": { 1755 "items": {"$ref" : "definitions.json#/feature_status" }, 1756 "type": "array" 1757 } 1758 }, 1759 "type": "object" 1760 } 1762 6.14. MX Path Estimation Request 1764 { 1765 "$schema": "http://json-schema.org/draft-04/schema#", 1766 "definitions": {}, 1767 "id": "http://www.ietf.org/mams/mx_path_est_req.json", 1768 "properties": { 1769 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1770 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1771 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1772 "active_probe_ack_req": { 1773 "enum": [ 1774 "no", 1775 "yes" 1776 ], 1777 "type": "string" 1778 }, 1779 "active_probe_freq_ms": { 1780 "maximum" : 10000, 1781 "minimum": 100, 1782 "type": "integer" 1783 }, 1784 "active_probe_size_bytes": { 1785 "maximum": 1500, 1786 "minimum": 100, 1787 "type": "integer" 1788 }, 1789 "active_probe_duration_sec" : { 1790 "maximum" : 100, 1791 "minimum" : 10, 1792 "type" : "integer" 1794 }, 1795 "connection_id": { "$ref" : "definitions#/connection_id" }, 1796 "init_probe_ack_req": { 1797 "enum": [ 1798 "no", 1799 "yes" 1800 ], 1801 "type": "string" 1802 }, 1803 "init_probe_size_bytes": { 1804 "maximum": 1500, 1805 "minimum": 100, 1806 "type": "integer" 1807 }, 1808 "init_probe_test_duration_ms": { 1809 "maximum": 10000, 1810 "minimum": 100, 1811 "type": "integer" 1812 }, 1813 "init_probe_test_rate_Mbps": { 1814 "maximum": 100, 1815 "minimum": 1, 1816 "type": "integer" 1817 } 1818 }, 1819 "type": "object" 1820 } 1822 6.15. MX Path Estimation Report 1823 { 1824 "$schema": "http://json-schema.org/draft-04/schema#", 1825 "definitions": {}, 1826 "id": "http://www.ietf.org/mams/mx_path_est_results.json", 1827 "properties": { 1828 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1829 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1830 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1831 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" }, 1832 "active_probe_results": { 1833 "properties": { 1834 "avg_tput_last_probe_duration_Mbps": { 1835 "maximum":100, 1836 "minimum": 1, 1837 "type": "number" 1838 } 1839 }, 1840 "type": "object" 1841 }, 1842 "connection_id": { "$ref" : "definitions.json#/connection_id" }, 1843 "init_probe_results": { 1844 "properties": { 1845 "lost_probes_percentage": { 1846 "maximum": 100, 1847 "minimum": 1, 1848 "type": "integer" 1849 }, 1850 "probe_rate_Mbps": { 1851 "maximum": 100, 1852 "minimum": 1, 1853 "type": "number" 1854 } 1855 }, 1856 "type": "object" 1857 } 1858 }, 1859 "type": "object" 1860 } 1862 6.16. MX SSID Indication 1863 { 1864 "$schema": "http://json-schema.org/draft-04/schema#", 1865 "definitions": {}, 1866 "id": "http://www.ietf.org/mams/mx_ssid_indication.json", 1867 "properties": { 1868 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1869 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1870 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1871 "ssid_list": { 1872 "items": { 1873 "properties" : { 1874 "ssid_type": { "$ref" : "definitions.json#/ssid_types" }, 1875 "ssid_id" : { 1876 "type" : "integer" 1877 } 1878 } 1879 }, 1880 "type": "array" 1881 } 1882 }, 1883 "type": "object" 1884 } 1886 6.17. MX Measurements Configuration 1887 { 1888 "$schema": "http://json-schema.org/draft-04/schema#", 1889 "additionalProperties": false, 1890 "definitions" : { 1891 "meas_conf" : { 1892 "connection_id" : { "$ref" : "definitions.json#/connection_id" }, 1893 "connection_type" : { "$ref" : "definitions.json#/connection_type" }, 1894 "meas_rep_conf" : { 1895 "items" : { "$ref" : "definitions.json#/meas_report_conf" }, 1896 "type" : "array" 1897 } 1898 } 1899 }, 1900 "id": "http://www.ietf.org/mams/mx_measurement_conf.json", 1901 "properties": { 1902 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1903 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1904 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1905 "measurement_configuration" : { 1906 "items" : {"$ref" : "#definitions/meas_conf" }, 1907 "type" : "array" 1908 } 1909 }, 1910 "type": "object" 1911 } 1913 6.18. MX Measurements Report 1914 { 1915 "$schema": "http://json-schema.org/draft-04/schema#", 1916 "definitions": {}, 1917 "id": "http://www.ietf.org/mams/mx_measurement_report.json", 1918 "properties": { 1919 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1920 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1921 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1922 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" }, 1923 "measurment_reports": { 1924 "items": { 1925 "properties": { 1926 "connection_id": { 1927 "$ref" : "definitions.json#/connection_id" 1928 }, 1929 "connection_type" : { 1930 "$ref" : "definitions.json#/connection_type" 1931 }, 1932 "delivery_node_id" : { 1933 "$ref" : "definitions.json#/delivery_node_id" 1934 }, 1935 "measurements": { 1936 "items": { 1937 "properties": { 1938 "measurement_type": { 1939 "$ref" : "definitions.json#/meas_report_param" 1940 }, 1941 "measurement_value": { 1942 "type": "integer" 1943 } 1944 }, 1945 "type": "object" 1946 }, 1947 "type": "array" 1948 } 1949 }, 1950 "type": "object" 1951 }, 1952 "type": "array" 1953 } 1954 }, 1955 "type": "object" 1956 } 1957 6.19. MX Keep Alive Request 1959 { 1960 "$schema": "http://json-schema.org/draft-04/schema#", 1961 "additionalProperties": false, 1962 "id": "http://www.ietf.org/mams/mx_keep_alive_req.json", 1963 "properties": { 1964 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1965 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1966 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1967 "keep_alive_reason" : {"$ref": "definitions.json#/keep_alive_reason"}, 1968 "unique_session_id" : {"$ref": "definitions.json#/unique_session_id"}, 1969 "connection_id" : {"$ref": "definitions.json#/connection_id"}, 1970 "delivery_node_id" : {"$ref": "definitions.json#/connection_id"} 1971 }, 1972 "type": "object" 1973 } 1975 6.20. MX Keep Alive Response 1977 { 1978 "$schema": "http://json-schema.org/draft-04/schema#", 1979 "additionalProperties": false, 1980 "id": "http://www.ietf.org/mams/mx_keep_alive_rsp.json", 1981 "properties": { 1982 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1983 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1984 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1985 "unique_session_id" : {"$ref": "definitions.json#/unique_session_id"} 1986 }, 1987 "type": "object" 1988 } 1990 6.21. MX Session Termination Request 1991 { 1992 "$schema": "http://json-schema.org/draft-04/schema#", 1993 "additionalProperties": false, 1994 "id": "http://www.ietf.org/mams/mx_keep_alive_req.json", 1995 "properties": { 1996 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 1997 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 1998 "version" : {"$ref": "mx_base_def.json#/version_def"}, 1999 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" }, 2000 "reason" : { 2001 "enum" : [ 2002 "MX_NORMAL_RELEASE", 2003 "MX_NO_RESPONSE", 2004 "INTERNAL_ERROR" 2005 ], 2006 "type" : "string" 2007 } 2008 }, 2009 "type": "object" 2010 } 2012 6.22. MX Session Termination Response 2014 { 2015 "$schema": "http://json-schema.org/draft-04/schema#", 2016 "additionalProperties": false, 2017 "id": "http://www.ietf.org/mams/mx_session_termination_resp.json", 2018 "properties": { 2019 "message_type" : {"$ref": "mx_base_def.json#/message_type_def"}, 2020 "sequence_num" : {"$ref": "mx_base_def.json#/sequence_num_def"}, 2021 "version" : {"$ref": "mx_base_def.json#/version_def"}, 2022 "unique_session_id" : { "$ref": "definitions.json#/unique_session_id" } 2023 }, 2024 "type": "object" 2025 } 2027 7. Examples in JSON 2029 7.1. MX Discover 2031 { 2032 "version" : "1.0", 2033 "message_type" : "mx_discover", 2034 "sequence_num" : 1 2035 } 2037 7.2. MX System Update 2039 { 2040 "version" : "1.0", 2041 "message_type" : "mx_system_info", 2042 "sequence_num" : 2, 2043 "ncm_connections" : [ 2044 { 2045 "connection_id" : 0, 2046 "connection_type" : "lte", 2047 "ncm_end_point" : { 2048 "ip_address" : "192.168.1.10", 2049 "port" : 1234 2050 } 2051 }, 2052 { 2053 "connection_id" : 1, 2054 "connection_type" : "wifi", 2055 "ncm_end_point" : { 2056 "ip_address" : "192.168.1.10", 2057 "port" : 1234 2058 } 2059 } 2060 ] 2061 } 2063 7.3. MX Capability Request 2065 { 2066 "version" : "1.0", 2067 "message_type" : "mx_capability_req", 2068 "sequence_num" : 3, 2069 "feature_active" : [ 2070 { 2071 "feature_name" : "lossless_switching", 2072 "active" : true 2073 }, 2074 { 2075 "feature_name" : "fragmentation", 2076 "active" : false 2077 } 2078 ], 2079 "num_anchor_connections" : 2, 2080 "anchor_connections" : [ 2081 { 2082 "connection_id" : 0, 2083 "connection_type" : "lte" 2084 }, 2085 { 2086 "connection_id" : 1, 2087 "connection_type" : "wifi" 2088 } 2089 ], 2090 "num_delivery_connections" : 2, 2091 "delivery_connections" : [ 2092 { 2093 "connection_id" : 0, 2094 "connection_type" : "lte" 2095 }, 2096 { 2097 "connection_id" : 1, 2098 "connection_type" : "wifi" 2099 } 2100 ], 2101 "convergence_methods" : [ 2102 { 2103 "method" : "Trailer_Based", 2104 "supported" : true 2105 }, 2106 { 2107 "method" : "MPTCP_Proxy", 2108 "supported" : false 2109 } 2110 ], 2111 "adaptation_methods" : [ 2112 { 2113 "method" : "UDP_without_DTLS", 2114 "supported" : false 2115 }, 2116 { 2117 "method" : "UDP_with_TLS", 2118 "supported" : false 2119 }, 2120 { 2121 "method" : "IPSec", 2122 "supported" : true 2123 }, 2124 { 2125 "method" : "Client_NAT", 2126 "supported" : false 2127 } 2128 ] 2129 } 2131 7.4. MX Capability Response 2133 { 2134 "version" : "1.0", 2135 "message_type" : "mx_capability_resp", 2136 "sequence_num" : 3, 2137 "feature_active" : [ 2138 { 2139 "feature_name" : "lossless_switching", 2140 "active" : true 2141 }, 2142 { 2143 "feature_name" : "fragmentation", 2144 "active" : false 2145 } 2146 ], 2147 "num_anchor_connections" : 2, 2148 "anchor_connections" : [ 2149 { 2150 "connection_id" : 0, 2151 "connection_type" : "lte" 2152 }, 2153 { 2154 "connection_id" : 1, 2155 "connection_type" : "wifi" 2156 } 2157 ], 2158 "num_delivery_connections" : 2, 2159 "delivery_connections" : [ 2160 { 2161 "connection_id" : 0, 2162 "connection_type" : "lte" 2163 }, 2164 { 2165 "connection_id" : 1, 2166 "connection_type" : "wifi" 2167 } 2168 ], 2169 "convergence_methods" : [ 2170 { 2171 "method" : "Trailer_Based", 2172 "supported" : true 2173 }, 2174 { 2175 "method" : "MPTCP_Proxy", 2176 "supported" : false 2177 } 2178 ], 2179 "adaptation_methods" : [ 2180 { 2181 "method" : "UDP_without_DTLS", 2182 "supported" : false 2183 }, 2184 { 2185 "method" : "UDP_with_TLS", 2186 "supported" : false 2187 }, 2188 { 2189 "method" : "IPSec", 2190 "supported" : true 2191 }, 2192 { 2193 "method" : "Client_NAT", 2194 "supported" : false 2195 } 2196 ], 2197 "unique_session_id" : { 2198 "ncm_id" : 110, 2199 "session_id" : 1111 2200 } 2201 } 2203 7.5. MX Capacity Ack 2205 { 2206 "version" : "1.0", 2207 "message_type" : "mx_capability_ack", 2208 "sequence_num" : 3, 2209 "unique_session_id" : { 2210 "ncm_id" : 110, 2211 "session_id" : 1111 2212 }, 2213 "capability_ack" : "MX ACCEPT" 2214 } 2216 7.6. MX Reconfiguration Request 2217 { 2218 "version" : "1.0", 2219 "message_type" : "mx_reconf_req", 2220 "sequence_num" : 4, 2221 "unique_session_id" : { 2222 "ncm_id" : 110, 2223 "session_id" : 1111 2224 }, 2225 "reconf_action" : "setup", 2226 "connection_id" : 0, 2227 "ip_address" : "192.168.110.1", 2228 "ssid" : "SSID_1", 2229 "mtu_size" : 1300, 2230 "connection_status" : "connected", 2231 "delivery_node_id" : "2A12C" 2232 } 2234 7.7. MX Reconfiguration Response 2236 { 2237 "version" : "1.0", 2238 "message_type" : "mx_reconf_rsp", 2239 "sequence_num" : 4 2240 } 2242 7.8. MX UP Setup Configuration Request 2243 { 2244 "version" : "1.0", 2245 "message_type" : "mx_up_setup_conf_req", 2246 "sequence_num" : 5, 2247 "num_anchor_connections" : 1, 2248 "anchor_connections" : [ 2249 { 2250 "connection_id" : 0, 2251 "connection_type" : "lte", 2252 "convergence_method" : "MPTCP_Proxy", 2253 "convergence_method_params" : { 2254 "proxy_ip" : "192.168.1.1", 2255 "proxy_port" : 1234 2256 }, 2257 "num_delivery_connections" : 2, 2258 "delivery_connections" : [ 2259 { 2260 "connection_id" : 0, 2261 "connection_type" : "lte" 2262 }, 2263 { 2264 "connection_id" : 1, 2265 "connection_type" : "wifi", 2266 "adaptation_method" : "IPSec", 2267 "adaptation_method_param" : { 2268 "tunnel_ip_addr" : "192.168.3.3", 2269 "tunnel_end_port" : "NA", 2270 "shared_secret" : "abcdefg12345" 2271 } 2272 } 2273 ] 2274 } 2275 ] 2276 } 2278 7.9. MX UP Setup Confirmation 2279 { 2280 "version" : "1.0", 2281 "message_type" : "mx_up_setup_cnf", 2282 "sequence_num" : 5, 2283 "unique_session_id" : { 2284 "ncm_id" : 110, 2285 "session_id" : 1111 2286 }, 2287 "probe_param" : { 2288 "probe_port" : 48700 2289 }, 2290 "num_delivery_conn" : 2, 2291 "client_params" : [ 2292 { 2293 "connection_id" : 0, 2294 "adapt_param" : { 2295 "udp_adapt_port" : 51000 2296 } 2297 }, 2298 { 2299 "connection_id" : 1, 2300 "adapt_param" : { 2301 "udp_adapt_port" : 52000 2302 } 2303 } 2304 ] 2305 } 2307 7.10. MX Traffic Steering Request 2309 { 2310 "version" : "1.0", 2311 "message_type" : "mx_traffic_steering_req", 2312 "sequence_num" : 6, 2313 "connection_id" : 0, 2314 "downlink_delivery" : [ 2315 { 2316 "connection_id" : 0 2317 }, 2318 { 2319 "connection_id" : 1 2320 } 2321 ], 2322 "uplink_delivery" : [ 2323 { 2324 "ul_tft" : { 2325 "remote_addr_mask" : "10.10.0.0/24", 2326 "local_addr_mask" : "192.168.0.0/24", 2327 "protocol_type" : 6, 2328 "loca_port_range" : { 2329 "start" : 100, 2330 "end" : 1000 2331 }, 2332 "remote_port_range" : { 2333 "start" : 100, 2334 "end" : 1000 2335 }, 2336 "traffic_class" : 20, 2337 "flow_label" : 100 2338 }, 2339 "conn_list" : [ 2340 { 2341 "connection_id" : 0 2342 }, 2343 { 2344 "connection_id" : 1 2345 } 2346 ] 2347 }, 2348 { 2349 "ul_tft" : { 2350 "remote_addr_mask" : "10.10.0.0/24", 2351 "local_addr_mask" : "192.168.0.0/24", 2352 "protocol_type" : 6, 2353 "local_port_range" : { 2354 "start" : 2000, 2355 "end" : 2000 2356 }, 2357 "remote_port_range" : { 2358 "start" : 100, 2359 "end" : 1000 2360 }, 2361 "traffic_class" : 20, 2362 "flow_label" : 50 2363 }, 2364 "conn_list" : [ 2365 { 2366 "connection_id" : 0 2367 }, 2368 { 2369 "connection_id" : 1 2370 } 2371 ] 2372 } 2373 ], 2374 "feature_activation" : [ 2375 { 2376 "feature_name" : "dl_aggregation", 2377 "active" : true 2378 }, 2379 { 2380 "feature_name" : "ul_aggregation", 2381 "active" : false 2382 } 2383 ] 2384 } 2386 7.11. MX Traffic Steering Response 2388 { 2389 "version" : "1.0", 2390 "message_type" : "mx_traffic_steering_rsp", 2391 "sequence_num" : 6, 2392 "unique_session_id" : { 2393 "ncm_id" : 110, 2394 "session_id" : 1111 2395 }, 2396 "feature_activation" : [ 2397 { 2398 "feature_name" : "lossless_switching", 2399 "active" : true 2400 }, 2401 { 2402 "feature_name" : "fragmentation", 2403 "active" : false 2404 } 2405 ] 2406 } 2408 7.12. MX Path Estimation Request 2409 { 2410 "version" : "1.0", 2411 "message_type" : "mx_path_est_req", 2412 "sequence_num" : 7, 2413 "connection_id" : 0, 2414 "init_probe_test_duration_ms" : 100, 2415 "init_probe_test_rate_Mbps" : 10, 2416 "init_probe_size_bytes" : 1000, 2417 "init_probe_ack_req" : "yes", 2418 "active_probe_freq_ms" : 10000, 2419 "active_probe_size_bytes" : 1000, 2420 "active_probe_duration_sec" : 10, 2421 "active_probe_ack_req" : "no" 2422 } 2424 7.13. MX Path Estimation Results 2426 { 2427 "version" : "1.0", 2428 "message_type" : "mx_path_est_results", 2429 "sequence_num" : 8, 2430 "unique_session_id" : { 2431 "ncm_id" : 110, 2432 "session_id" : 1111 2433 }, 2434 "connection_id" : 0, 2435 "init_probe_results" : { 2436 "lost_probes_percentage" : 1, 2437 "probe_rate_Mbps" : 9.9 2438 }, 2439 "active_probe_results" : { 2440 "avg_tput_last_probe_duration_Mbps" : 9.8 2441 } 2442 } 2444 7.14. MX SSID Indication 2445 { 2446 "version" : "1.0", 2447 "message_type" : "mx_ssid_indication", 2448 "sequence_num" : 9, 2449 "ssid_list" : [ 2450 { 2451 "ssid_type" : "ssid", 2452 "ssid_id" : "SSID_1" 2453 }, 2454 { 2455 "ssid_type" : "bssid", 2456 "ssid_id" : "xxx-yyy" 2457 } 2458 ] 2459 } 2461 7.15. MX Measurements Configuration 2463 { 2464 "version" : "1.0", 2465 "message_type" : "mx_measurement_conf", 2466 "sequence_num" : 10, 2467 "measurement_configuration" : [ 2468 { 2469 "connection_id" : 0, 2470 "connection_type" : "wi-fi", 2471 "meas_rep_conf" : [ 2472 { 2473 "meas_rep_param" : "WLAN_RSSI", 2474 "meas_threshold" : { 2475 "high" : -10, 2476 "low" : -15 2477 }, 2478 "meas_period_ms" : 500 2479 }, 2480 { 2481 "meas_rep_param" : "WLAN_LOAD", 2482 "meas_threshold" : { 2483 "high" : -10, 2484 "low" : -15 2485 }, 2486 "meas_period_ms" : 500 2487 }, 2488 { 2489 "meas_rep_param" : "EST_UL_TPUT", 2490 "meas_threshold" : { 2491 "high" : 100, 2492 "low" : 30 2493 }, 2494 "meas_period_ms" : 500 2495 } 2496 ] 2497 }, 2498 { 2499 "connection_id" : 1, 2500 "connection_type" : "lte", 2501 "meas_rep_conf" : [ 2502 { 2503 "meas_rep_param" : "LTE_RSRP", 2504 "meas_threshold" : { 2505 "high" : -10, 2506 "low" : -15 2507 }, 2508 "meas_period_ms" : 500 2509 }, 2510 { 2511 "meas_rep_param" : "LTE_RSRQ", 2512 "meas_threshold" : { 2513 "high" : -10, 2514 "low" : -15 2515 }, 2516 "meas_period_ms" : 500 2517 } 2518 ] 2519 } 2520 ] 2521 } 2523 7.16. MX Measurements Report 2524 { 2525 "version" : "1.0", 2526 "message_type" : "mx_measurement_report", 2527 "sequence_num" : 11, 2528 "unique_session_id" : { 2529 "ncm_id" : 110, 2530 "session_id" : 1111 2531 }, 2532 "measurment_reports" : [ 2533 { 2534 "connection_id" : 0, 2535 "connection_type" : "wi-fi", 2536 "delivery_node_id" : "2021A", 2537 "measurements" : [ 2538 { 2539 "measurement_type" : "WLAN_RSSI", 2540 "measurement_value" : -12 2541 }, 2542 { 2543 "measurement_type" : "UL_TPUT", 2544 "measurement_value" : 10 2545 }, 2546 { 2547 "measurement_type" : "EST_UL_TPUT", 2548 "measurement_value" : 20 2549 } 2550 ] 2551 }, 2552 { 2553 "connection_id" : 1, 2554 "connection_type" : "lte", 2555 "delivery_node_id" : "12323", 2556 "measurements" : [ 2557 { 2558 "measurement_type" : "LTE_RSRP", 2559 "measurement_value" : -12 2561 }, 2562 { 2563 "measurement_type" : "LTE_RSRQ", 2564 "measurement_value" : -12 2566 } 2567 ] 2568 } 2569 ] 2570 } 2572 7.17. MX Keep Alive Request 2574 { 2575 "version" : "1.0", 2576 "message_type" : "mx_keep_alive_req", 2577 "sequence_num" : 12, 2578 "keep_alive_reason" : "Handover", 2579 "unique_session_id" : { 2580 "ncm_id" : 110, 2581 "session_id" : 1111 2582 }, 2583 "connection_id" : 0, 2584 "delivery_node_id" : "2021A" 2585 } 2587 7.18. MX Keep Alive Response 2589 { 2590 "version" : "1.0", 2591 "message_type" : "mx_keep_alive_rsp", 2592 "sequence_num" : 12, 2593 "unique_session_id" : { 2594 "ncm_id" : 110, 2595 "session_id" : 1111 2596 } 2597 } 2599 7.19. MX Session Termination Request 2601 { 2602 "version" : "1.0", 2603 "message_type" : "mx_session_termination_req", 2604 "sequence_num" : 13, 2605 "unique_session_id" : { 2606 "ncm_id" : 110, 2607 "session_id" : 1111 2608 }, 2609 "reason" : "MX_NORMAL_RELEASE" 2610 } 2612 7.20. MX Session Termination Response 2613 { 2614 "version" : "1.0", 2615 "message_type" : "mx_session_termination_resp", 2616 "sequence_num" : 13, 2617 "unique_session_id" : { 2618 "ncm_id" : 110, 2619 "session_id" : 1111 2620 } 2621 } 2623 8. Contributing Authors 2625 The editors gratefully acknowledge the following additional 2626 contributors in alphabetical order: A Krishna Pramod/Nokia, Hannu 2627 Flinck/Nokia, Jing Zhu/Intel, Nurit Sprecher/Nokia. 2629 9. References 2631 9.1. Normative References 2633 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2634 Requirement Levels", BCP 14, RFC 2119, 2635 DOI 10.17487/RFC2119, March 1997, 2636 . 2638 [SDO-3GPP.23.060] 2639 3GPP, "General Packet Radio Service (GPRS); Service 2640 description; Stage 2", 3GPP TS 23.060 3.17.0, December 2641 2006. 2643 9.2. Informative References 2645 [I-D.kanugovi-intarea-mams-protocol] 2646 Kanugovi, S., Vasudevan, S., Baboescu, F., Zhu, J., Peng, 2647 S., Mueller, J., and S. Seo, "Multiple Access Management 2648 Services", draft-kanugovi-intarea-mams-protocol-04 (work 2649 in progress), March 2017. 2651 [I-D.zhu-intarea-mams-control-protocol] 2652 Kanugovi, S., Vasudevan, S., Zhu, J., Baboescu, F., Peng, 2653 S., and S. Seo, "Control Plane Protocols and Procedures 2654 for Multiple Access Management Services", draft-zhu- 2655 intarea-mams-control-protocol-01 (work in progress), March 2656 2017. 2658 [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data 2659 Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March 2660 2014, . 2662 [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., 2663 Previdi, S., Roome, W., Shalunov, S., and R. Woundy, 2664 "Application-Layer Traffic Optimization (ALTO) Protocol", 2665 RFC 7285, DOI 10.17487/RFC7285, September 2014, 2666 . 2668 Appendix A. Implementation Example 2670 A simple client side implementation using python can be as following: 2672 #!/usr/bin/env python 2673 import asyncio 2674 import websockets 2675 import json 2676 import ssl 2677 import time 2678 import sys 2680 context = ssl.SSLContext(ssl.PROTOCOL_TLS) 2681 context.verify_mode = ssl.CERT_REQUIRED 2682 context.set_ciphers("RSA") 2683 context.check_hostname = False 2684 context.load_verify_locations("/home/mecadmin/certs/rootca.pem") 2686 discoverMsg = {'version':'1.0', 2687 'message_type':'mx_discover'} 2689 MXCapabilityRes = { 'version':'1.0', 2690 'message_type':'mx_capability_res', 2691 'FeatureActive':[{'feature_name':'fragmentation', 'active':'yes'}, {'feature_name':'lossless_switching', 'active':'yes'}], 2692 'num_anchor_connections':1, 2693 'anchor_connections':[{'connection_id':0, 'connection_type':'lte'}], 2694 'num_delivery_connections':1, 2695 'delivery_connections':[{'connection_id':1, 'connection_type':"wifi"}], 2696 'convergence_methods':[{'method':'trailer_based', 'supported':'true'}], 2697 'adaptation_methods':[{'method':'client_nat', 'supported':'false'}] 2698 } 2700 async def hello(): 2701 async with websockets.connect('wss://localhost:8765', ssl=context) as websocket: 2702 try: 2703 loopFlag=False 2704 while True: 2705 await websocket.send(json.dumps(discoverMsg)) 2706 json_message = await websocket.recv() 2707 message = json.loads(json_message) 2708 if "message_type" in message.keys(): 2709 print("Recieved message:{}".format(message["message_type"]),"version:{}".format(message["version"])) 2710 if message["message_type"] == "mx_capability_req" : 2711 await websocket.send(json.dumps(MXCapabilityRes)) 2712 loopFlag=True 2713 while(loopFlag==True): 2714 pass 2715 except: 2716 print("Client stopped") 2718 asyncio.get_event_loop().run_until_complete(hello()) 2719 A server client side implementation using python can be as following: 2721 #!/usr/bin/env python 2722 import asyncio 2723 import websockets 2724 import json 2725 import ssl 2727 ctx = ssl.SSLContext(ssl.PROTOCOL_TLS) 2728 #ctx.set_ciphers("RSA-AES256-SHA") 2729 ctx.load_verify_locations("/home/mecadmin/certs/rootca.pem") 2730 certfile = "/home/mecadmin/certs/server.pem" 2731 keyfile = "/home/mecadmin/certs/serverkey.pem" 2732 ctx.load_cert_chain(certfile, keyfile, password=None) 2734 MXCapabilityReq = { 'version':'1.0', 2735 'message_type':'mx_capability_req', 2736 'FeatureActive':[{'feature_name':'fragmentation', 'active':'yes'}, {'feature_name':'lossless_switching', 'active':'yes'}], 2737 'num_anchor_connections':1, 2738 'anchor_connections':[{'connection_id':0, 'connection_type':'lte'}], 2739 'num_delivery_connections':1, 2740 'delivery_connections':[{'connection_id':1, 'connection_type':"wifi"}], 2741 'convergence_methods':[{'method':'trailer_based', 'supported':'true'}], 2742 'adaptation_methods':[{'method':'client_nat', 'supported':'false'}] 2743 } 2745 async def hello(websocket, path): 2746 try: 2747 while True: 2748 name = await websocket.recv() 2749 msg = json.loads(name) 2750 if "message_type" in msg.keys(): 2751 print("Recieved message:{}".format(msg["message_type"]),"version:{}".format(msg["version"])) 2752 if msg['message_type'] == 'mx_discover': 2753 await websocket.send(json.dumps(MXCapabilityReq)) 2755 except: 2756 print("client disconnected") 2758 try: 2759 start_server = websockets.serve(hello, 'localhost', 8765,ssl=ctx) 2761 asyncio.get_event_loop().run_until_complete(start_server) 2762 asyncio.get_event_loop().run_forever() 2763 except: 2764 print("server stopped") 2766 Authors' Addresses 2768 Salil Agarwal 2769 Nokia 2771 Email: salil.agarwal@nokia.com 2773 Satish Kanugovi 2774 Nokia 2776 Email: satish.k@nokia.com 2778 Shuping Peng 2779 Huawei 2781 Email: pengshuping@huawei.com 2783 Julius Mueller 2784 AT&T 2786 Email: jm169k@att.com