| < draft-ietf-mediactrl-call-flows-12.txt | draft-ietf-mediactrl-call-flows-13.txt > | |||
|---|---|---|---|---|
| MEDIACTRL A. Amirante | MEDIACTRL A. Amirante | |||
| Internet-Draft University of Napoli | Internet-Draft University of Napoli | |||
| Intended status: Informational T. Castaldi | Intended status: Informational T. Castaldi | |||
| Expires: October 24, 2013 L. Miniero | Expires: November 24, 2013 L. Miniero | |||
| Meetecho | Meetecho | |||
| S P. Romano | S P. Romano | |||
| University of Napoli | University of Napoli | |||
| April 22, 2013 | May 23, 2013 | |||
| Media Control Channel Framework (CFW) Call Flow Examples | Media Control Channel Framework (CFW) Call Flow Examples | |||
| draft-ietf-mediactrl-call-flows-12 | draft-ietf-mediactrl-call-flows-13 | |||
| Abstract | Abstract | |||
| This document provides a list of typical Media Control Channel | This document provides a list of typical Media Control Channel | |||
| Framework call flows. It aims at being a simple guide to the use of | Framework call flows. It aims at being a simple guide to the use of | |||
| the interface between Application Servers and MEDIACTRL-based Media | the interface between Application Servers and MEDIACTRL-based Media | |||
| Servers, as well as a base reference documentation for both | Servers, as well as a base reference documentation for both | |||
| implementors and protocol researchers. | implementors and protocol researchers. | |||
| Status of this Memo | Status of this Memo | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on October 24, 2013. | This Internet-Draft will expire on November 24, 2013. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 19 ¶ | skipping to change at page 2, line 19 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. A Practical Approach . . . . . . . . . . . . . . . . . . . . 6 | 4. A Practical Approach . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. State Diagrams . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. State Diagrams . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Control Channel Establishment . . . . . . . . . . . . . . . . 10 | 5. Control Channel Establishment . . . . . . . . . . . . . . . . 10 | |||
| 5.1. COMEDIA Negotiation . . . . . . . . . . . . . . . . . . . 11 | 5.1. COMEDIA Negotiation . . . . . . . . . . . . . . . . . . . 11 | |||
| 5.2. SYNC . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 5.2. SYNC . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.3. K-ALIVE . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 5.3. K-ALIVE . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.4. Wrong behaviour . . . . . . . . . . . . . . . . . . . . . 18 | 5.4. Wrong behaviour . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 6. Use-case scenarios and examples . . . . . . . . . . . . . . . 21 | 6. Use-case scenarios and examples . . . . . . . . . . . . . . . 20 | |||
| 6.1. Echo Test . . . . . . . . . . . . . . . . . . . . . . . . 28 | 6.1. Echo Test . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 6.1.1. Direct Echo Test . . . . . . . . . . . . . . . . . . 29 | 6.1.1. Direct Echo Test . . . . . . . . . . . . . . . . . . 28 | |||
| 6.1.2. Echo Test based on Recording . . . . . . . . . . . . 31 | 6.1.2. Echo Test based on Recording . . . . . . . . . . . . 30 | |||
| 6.2. Phone Call . . . . . . . . . . . . . . . . . . . . . . . 39 | 6.2. Phone Call . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 6.2.1. Direct Connection . . . . . . . . . . . . . . . . . . 42 | 6.2.1. Direct Connection . . . . . . . . . . . . . . . . . . 41 | |||
| 6.2.2. Conference-based Approach . . . . . . . . . . . . . . 44 | 6.2.2. Conference-based Approach . . . . . . . . . . . . . . 43 | |||
| 6.2.3. Recording a conversation . . . . . . . . . . . . . . 50 | 6.2.3. Recording a conversation . . . . . . . . . . . . . . 49 | |||
| 6.3. Conferencing . . . . . . . . . . . . . . . . . . . . . . 56 | 6.3. Conferencing . . . . . . . . . . . . . . . . . . . . . . 55 | |||
| 6.3.1. Simple Bridging . . . . . . . . . . . . . . . . . . . 61 | 6.3.1. Simple Bridging . . . . . . . . . . . . . . . . . . . 60 | |||
| 6.3.2. Rich Conference Scenario . . . . . . . . . . . . . . 65 | 6.3.2. Rich Conference Scenario . . . . . . . . . . . . . . 64 | |||
| 6.3.3. Coaching Scenario . . . . . . . . . . . . . . . . . . 74 | 6.3.3. Coaching Scenario . . . . . . . . . . . . . . . . . . 73 | |||
| 6.3.4. Sidebars . . . . . . . . . . . . . . . . . . . . . . 81 | 6.3.4. Sidebars . . . . . . . . . . . . . . . . . . . . . . 80 | |||
| 6.3.5. Floor Control . . . . . . . . . . . . . . . . . . . . 90 | 6.3.5. Floor Control . . . . . . . . . . . . . . . . . . . . 89 | |||
| 6.4. Additional Scenarios . . . . . . . . . . . . . . . . . . 96 | 6.4. Additional Scenarios . . . . . . . . . . . . . . . . . . 95 | |||
| 6.4.1. Voice Mail . . . . . . . . . . . . . . . . . . . . . 96 | 6.4.1. Voice Mail . . . . . . . . . . . . . . . . . . . . . 95 | |||
| 6.4.2. Current Time . . . . . . . . . . . . . . . . . . . . 103 | 6.4.2. Current Time . . . . . . . . . . . . . . . . . . . . 102 | |||
| 6.4.3. DTMF-driven Conference Manipulation . . . . . . . . . 107 | 6.4.3. DTMF-driven Conference Manipulation . . . . . . . . . 106 | |||
| 7. Media Resource Brokering . . . . . . . . . . . . . . . . . . 120 | 7. Media Resource Brokering . . . . . . . . . . . . . . . . . . 119 | |||
| 7.1. Publishing Interface . . . . . . . . . . . . . . . . . . 120 | 7.1. Publishing Interface . . . . . . . . . . . . . . . . . . 119 | |||
| 7.2. Consumer Interface . . . . . . . . . . . . . . . . . . . 128 | 7.2. Consumer Interface . . . . . . . . . . . . . . . . . . . 127 | |||
| 7.2.1. Query Mode . . . . . . . . . . . . . . . . . . . . . 129 | 7.2.1. Query Mode . . . . . . . . . . . . . . . . . . . . . 128 | |||
| 7.2.2. Inline-aware Mode . . . . . . . . . . . . . . . . . . 133 | 7.2.2. Inline-aware Mode . . . . . . . . . . . . . . . . . . 132 | |||
| 7.2.3. Inline-unaware Mode . . . . . . . . . . . . . . . . . 147 | 7.2.3. Inline-unaware Mode . . . . . . . . . . . . . . . . . 146 | |||
| 7.3. Handling media dialogs . . . . . . . . . . . . . . . . . 149 | 7.3. Handling media dialogs . . . . . . . . . . . . . . . . . 148 | |||
| 7.3.1. Query and Inline-aware mode . . . . . . . . . . . . . 149 | 7.3.1. Query and Inline-aware mode . . . . . . . . . . . . . 148 | |||
| 7.3.2. Inline-unaware mode . . . . . . . . . . . . . . . . . 152 | 7.3.2. Inline-unaware mode . . . . . . . . . . . . . . . . . 151 | |||
| 7.3.3. CFW Protocol Bhaviour . . . . . . . . . . . . . . . . 156 | 7.3.3. CFW Protocol Bhaviour . . . . . . . . . . . . . . . . 158 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 159 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 161 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 167 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 170 | |||
| 10. Change Summary . . . . . . . . . . . . . . . . . . . . . . . 167 | 10. Change Summary . . . . . . . . . . . . . . . . . . . . . . . 170 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 170 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 173 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 170 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 173 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 170 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 173 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 171 | 12.2. Informative References . . . . . . . . . . . . . . . . . 174 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 172 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 175 | |||
| 1. Introduction | 1. Introduction | |||
| This document provides a list of typical MEDIACTRL Media Control | This document provides a list of typical MEDIACTRL Media Control | |||
| Channel Framework [RFC6230] call flows. The motivation for this | Channel Framework [RFC6230] call flows. The motivation for this | |||
| comes from our implementation experience with the framework and its | comes from our implementation experience with the framework and its | |||
| protocol. This drove us to writing a simple guide to the use of the | protocol. This drove us to writing a simple guide to the use of the | |||
| several interfaces between Application Servers and MEDIACTRL-based | several interfaces between Application Servers and MEDIACTRL-based | |||
| Media Servers and a base reference documentation for other | Media Servers and a base reference documentation for other | |||
| implementors and protocol researchers. | implementors and protocol researchers. | |||
| skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 5 ¶ | |||
| answer, by communicating to the AS the transport address to connect | answer, by communicating to the AS the transport address to connect | |||
| to in order to establish the TCP connection. In the provided | to in order to establish the TCP connection. In the provided | |||
| example, the MS will listen on port 7575. Once this negotiation is | example, the MS will listen on port 7575. Once this negotiation is | |||
| over, the AS can effectively connect to the MS. | over, the AS can effectively connect to the MS. | |||
| The negotiation includes additional attributes, the most important | The negotiation includes additional attributes, the most important | |||
| being the 'cfw-id' attribute, since it specifies the Dialog-ID which | being the 'cfw-id' attribute, since it specifies the Dialog-ID which | |||
| will be subsequently referred to by both the AS and the MS, as | will be subsequently referred to by both the AS and the MS, as | |||
| specified in the core framework draft. | specified in the core framework draft. | |||
| Note that the provided example also includes the indication, from | ||||
| both the AS and the MS, of the supported control packages. This is | ||||
| achieved by means of a series of 'ctrl-package' attributes as | ||||
| specified in [I-D.boulton-mmusic-sdp-control-package-attribute]. In | ||||
| the example, the AS supports (or is only interested to) two packages: | ||||
| IVR (Interactive Voice Response) and Mixer (Conferencing and | ||||
| Bridging). The MS replies with the list of packages it supports, | ||||
| adding a dummy example package to the list provided by the AS. It is | ||||
| worth noting that this exchange of information is not meant as a | ||||
| strict or formal negotiation of packages: in case the AS realizes | ||||
| that one or more packages it needs are not supported according to the | ||||
| indications sent by the MS, it may, or may not, choose not to open a | ||||
| control channel with the MS at all, if its application logic leads to | ||||
| such a decision. The actual negotiation of control packages is done | ||||
| subsequenty through the use of the framework SYNC transaction. | ||||
| AS MS | AS MS | |||
| | | | | | | |||
| | 1. INVITE (COMEDIA) | | | 1. INVITE (COMEDIA) | | |||
| |------------------------------>| | |------------------------------>| | |||
| | 2. 100 (Trying) | | | 2. 100 (Trying) | | |||
| |<------------------------------| | |<------------------------------| | |||
| | 3. 200 OK (COMEDIA) | | | 3. 200 OK (COMEDIA) | | |||
| |<------------------------------| | |<------------------------------| | |||
| | 4. ACK | | | 4. ACK | | |||
| |------------------------------>| | |------------------------------>| | |||
| skipping to change at page 13, line 10 ¶ | skipping to change at page 12, line 38 ¶ | |||
| Via: SIP/2.0/UDP 203.0.113.1:5060;\ | Via: SIP/2.0/UDP 203.0.113.1:5060;\ | |||
| branch=z9hG4bK-d8754z-9b07c8201c3aa510-1---d8754z-;rport=5060 | branch=z9hG4bK-d8754z-9b07c8201c3aa510-1---d8754z-;rport=5060 | |||
| Max-Forwards: 70 | Max-Forwards: 70 | |||
| Contact: <sip:ApplicationServer@203.0.113.1:5060> | Contact: <sip:ApplicationServer@203.0.113.1:5060> | |||
| To: <sip:MediaServer@ms.example.net:5060> | To: <sip:MediaServer@ms.example.net:5060> | |||
| From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | |||
| Call-ID: MDk2YTk1MDU3YmVkZjgzYTQwYmJlNjE5NTA4ZDQ1OGY. | Call-ID: MDk2YTk1MDU3YmVkZjgzYTQwYmJlNjE5NTA4ZDQ1OGY. | |||
| CSeq: 1 INVITE | CSeq: 1 INVITE | |||
| Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, REGISTER | Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, REGISTER | |||
| Content-Type: application/sdp | Content-Type: application/sdp | |||
| Content-Length: 263 | Content-Length: 203 | |||
| v=0 | v=0 | |||
| o=lminiero 2890844526 2890842807 IN IP4 as.example.com | o=lminiero 2890844526 2890842807 IN IP4 as.example.com | |||
| s=MediaCtrl | s=MediaCtrl | |||
| c=IN IP4 as.example.com | c=IN IP4 as.example.com | |||
| t=0 0 | t=0 0 | |||
| m=application 5757 TCP cfw | m=application 5757 TCP cfw | |||
| a=connection:new | a=connection:new | |||
| a=setup:active | a=setup:active | |||
| a=cfw-id:5feb6486792a | a=cfw-id:5feb6486792a | |||
| a=ctrl-package:msc-ivr/1.0 | ||||
| a=ctrl-package:msc-mixer/1.0 | ||||
| 2. AS <- MS (SIP 100 Trying) | 2. AS <- MS (SIP 100 Trying) | |||
| ---------------------------- | ---------------------------- | |||
| SIP/2.0 100 Trying | SIP/2.0 100 Trying | |||
| Via: SIP/2.0/UDP 203.0.113.1:5060; \ | Via: SIP/2.0/UDP 203.0.113.1:5060; \ | |||
| branch=z9hG4bK-d8754z-9b07c8201c3aa510-1---d8754z-;rport=5060 | branch=z9hG4bK-d8754z-9b07c8201c3aa510-1---d8754z-;rport=5060 | |||
| To: <sip:MediaServer@ms.example.net:5060>;tag=499a5b74 | To: <sip:MediaServer@ms.example.net:5060>;tag=499a5b74 | |||
| From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | |||
| Call-ID: MDk2YTk1MDU3YmVkZjgzYTQwYmJlNjE5NTA4ZDQ1OGY. | Call-ID: MDk2YTk1MDU3YmVkZjgzYTQwYmJlNjE5NTA4ZDQ1OGY. | |||
| CSeq: 1 INVITE | CSeq: 1 INVITE | |||
| skipping to change at page 13, line 47 ¶ | skipping to change at page 13, line 28 ¶ | |||
| SIP/2.0 200 OK | SIP/2.0 200 OK | |||
| Via: SIP/2.0/UDP 203.0.113.1:5060; \ | Via: SIP/2.0/UDP 203.0.113.1:5060; \ | |||
| branch=z9hG4bK-d8754z-9b07c8201c3aa510-1---d8754z-;rport=5060 | branch=z9hG4bK-d8754z-9b07c8201c3aa510-1---d8754z-;rport=5060 | |||
| Contact: <sip:MediaServer@ms.example.net:5060> | Contact: <sip:MediaServer@ms.example.net:5060> | |||
| To: <sip:MediaServer@ms.example.net:5060>;tag=499a5b74 | To: <sip:MediaServer@ms.example.net:5060>;tag=499a5b74 | |||
| From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | |||
| Call-ID: MDk2YTk1MDU3YmVkZjgzYTQwYmJlNjE5NTA4ZDQ1OGY. | Call-ID: MDk2YTk1MDU3YmVkZjgzYTQwYmJlNjE5NTA4ZDQ1OGY. | |||
| CSeq: 1 INVITE | CSeq: 1 INVITE | |||
| Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, REGISTER | Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, REGISTER | |||
| Content-Type: application/sdp | Content-Type: application/sdp | |||
| Content-Length: 296 | Content-Length: 199 | |||
| v=0 | v=0 | |||
| o=lminiero 2890844526 2890842808 IN IP4 ms.example.net | o=lminiero 2890844526 2890842808 IN IP4 ms.example.net | |||
| s=MediaCtrl | s=MediaCtrl | |||
| c=IN IP4 ms.example.net | c=IN IP4 ms.example.net | |||
| t=0 0 | t=0 0 | |||
| m=application 7575 TCP cfw | m=application 7575 TCP cfw | |||
| a=connection:new | a=connection:new | |||
| a=setup:passive | a=setup:passive | |||
| a=cfw-id:5feb6486792a | a=cfw-id:5feb6486792a | |||
| a=ctrl-package:msc-ivr/1.0 | ||||
| a=ctrl-package:msc-example-pkg/1.0 | ||||
| a=ctrl-package:msc-mixer/1.0 | ||||
| 4. AS -> MS (SIP ACK) | 4. AS -> MS (SIP ACK) | |||
| --------------------- | --------------------- | |||
| ACK sip:MediaServer@ms.example.net:5060 SIP/2.0 | ACK sip:MediaServer@ms.example.net:5060 SIP/2.0 | |||
| Via: SIP/2.0/UDP 203.0.113.1:5060; \ | Via: SIP/2.0/UDP 203.0.113.1:5060; \ | |||
| branch=z9hG4bK-d8754z-22940f5f4589701b-1---d8754z-;rport | branch=z9hG4bK-d8754z-22940f5f4589701b-1---d8754z-;rport | |||
| Max-Forwards: 70 | Max-Forwards: 70 | |||
| Contact: <sip:ApplicationServer@203.0.113.1:5060> | Contact: <sip:ApplicationServer@203.0.113.1:5060> | |||
| To: <sip:MediaServer@ms.example.net:5060>;tag=499a5b74 | To: <sip:MediaServer@ms.example.net:5060>;tag=499a5b74 | |||
| From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | From: <sip:ApplicationServer@as.example.com:5060>;tag=4354ec63 | |||
| skipping to change at page 15, line 15 ¶ | skipping to change at page 14, line 36 ¶ | |||
| Besides, it offers an additional negotiation mechanism. In fact, the | Besides, it offers an additional negotiation mechanism. In fact, the | |||
| AS uses the SYNC not only to properly correlate as explained before, | AS uses the SYNC not only to properly correlate as explained before, | |||
| but also to negotiate with the MS the control packages it is | but also to negotiate with the MS the control packages it is | |||
| interested in, as well as to agree on a Keep-Alive timer needed by | interested in, as well as to agree on a Keep-Alive timer needed by | |||
| both the AS and the MS to understand if problems on the connection | both the AS and the MS to understand if problems on the connection | |||
| occur. In the provided example (see Figure 6 and the related call | occur. In the provided example (see Figure 6 and the related call | |||
| flow), the AS sends a SYNC with a Dialog-ID constructed as needed | flow), the AS sends a SYNC with a Dialog-ID constructed as needed | |||
| (using the 'cfw-id' attribute from the SIP dialog) and requests | (using the 'cfw-id' attribute from the SIP dialog) and requests | |||
| access to two control packages, specifically the IVR and the Mixer | access to two control packages, specifically the IVR and the Mixer | |||
| package (the same packages the AS previously indicated in its SDP as | package. Besides, it instructs the MS that a 100 seconds timeout is | |||
| specified in [I-D.boulton-mmusic-sdp-control-package-attribute], with | to be used for Keep-Alive messages. The MS validates the request by | |||
| the difference that this time they are reported in the context of a | matching the received Dialog-ID with the SIP dialog values and, | |||
| binding negotiation). Besides, it instructs the MS that a 100 | assuming it supports the control packages the AS requested access to | |||
| seconds timeout is to be used for Keep-Alive messages. The MS | (and for the sake of this document we assume it does), it answers | |||
| validates the request by matching the received Dialog-ID with the SIP | with a 200 message. Additionally, the MS provides the AS with a list | |||
| dialog values and, assuming it supports the control packages the AS | of other unrequested packages it supports (in this case just a dummy | |||
| requested access to (and for the sake of this document we assume it | package providing testing functionality). | |||
| does), it answers with a 200 message. Additionally, the MS provides | ||||
| the AS with a list of other unrequested packages it supports (in this | ||||
| case just a dummy package providing testing functionality). | ||||
| AS MS | AS MS | |||
| . . | . . | |||
| . . | . . | |||
| | | | | | | |||
| | 1. SYNC (Dialog-ID, etc.) | | | 1. SYNC (Dialog-ID, etc.) | | |||
| |+++++++++++++++++++++++++++++>>| | |+++++++++++++++++++++++++++++>>| | |||
| | |--+ | | |--+ | |||
| | | | Check SYNC | | | | Check SYNC | |||
| | |<-+ | | |<-+ | |||
| skipping to change at page 136, line 8 ¶ | skipping to change at page 135, line 8 ¶ | |||
| v=0 | v=0 | |||
| o=- 2890844526 2890842807 IN IP4 as.example.com | o=- 2890844526 2890842807 IN IP4 as.example.com | |||
| s=MediaCtrl | s=MediaCtrl | |||
| c=IN IP4 as.example.com | c=IN IP4 as.example.com | |||
| t=0 0 | t=0 0 | |||
| m=application 48035 TCP cfw | m=application 48035 TCP cfw | |||
| a=connection:new | a=connection:new | |||
| a=setup:active | a=setup:active | |||
| a=cfw-id:vF0zD4xzUAW9 | a=cfw-id:vF0zD4xzUAW9 | |||
| a=ctrl-package:msc-mixer/1.0 | ||||
| a=ctrl-package:msc-ivr/1.0 | ||||
| --Part | --Part | |||
| Content-Type: application/mrb-consumer+xml | Content-Type: application/mrb-consumer+xml | |||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
| <mrbconsumer version="1.0" | <mrbconsumer version="1.0" | |||
| xmlns="urn:ietf:params:xml:ns:mrb-consumer"> | xmlns="urn:ietf:params:xml:ns:mrb-consumer"> | |||
| <mediaResourceRequest id="fr34asx1"> | <mediaResourceRequest id="fr34asx1"> | |||
| <generalInfo> | <generalInfo> | |||
| <packages> | <packages> | |||
| skipping to change at page 137, line 11 ¶ | skipping to change at page 136, line 9 ¶ | |||
| v=0 | v=0 | |||
| o=- 2890844526 2890842807 IN IP4 as.example.com | o=- 2890844526 2890842807 IN IP4 as.example.com | |||
| s=MediaCtrl | s=MediaCtrl | |||
| c=IN IP4 as.example.com | c=IN IP4 as.example.com | |||
| t=0 0 | t=0 0 | |||
| m=application 48035 TCP cfw | m=application 48035 TCP cfw | |||
| a=connection:new | a=connection:new | |||
| a=setup:active | a=setup:active | |||
| a=cfw-id:vF0zD4xzUAW9 | a=cfw-id:vF0zD4xzUAW9 | |||
| a=ctrl-package:msc-mixer/1.0 | ||||
| a=ctrl-package:msc-ivr/1.0 | ||||
| 5. MRB <- MS (200 OK SDP) | 5. MRB <- MS (200 OK SDP) | |||
| ------------------------- | ------------------------- | |||
| [..] | [..] | |||
| Content-Type: application/sdp | Content-Type: application/sdp | |||
| v=0 | v=0 | |||
| o=lminiero 2890844526 2890842808 IN IP4 ms.example.net | o=lminiero 2890844526 2890842808 IN IP4 ms.example.net | |||
| s=MediaCtrl | s=MediaCtrl | |||
| c=IN IP4 ms.example.net | c=IN IP4 ms.example.net | |||
| t=0 0 | t=0 0 | |||
| m=application 7575 TCP cfw | m=application 7575 TCP cfw | |||
| a=connection:new | a=connection:new | |||
| a=setup:passive | a=setup:passive | |||
| a=cfw-id:vF0zD4xzUAW9 | a=cfw-id:vF0zD4xzUAW9 | |||
| a=ctrl-package:msc-mixer/1.0 | ||||
| a=ctrl-package:msc-ivr/1.0 | ||||
| a=ctrl-package:mrb-publish/1.0 | ||||
| a=ctrl-package:msc-example-pkg/1.0 | ||||
| 7. AS <- MRB (200 OK multipart/mixed) | 7. AS <- MRB (200 OK multipart/mixed) | |||
| ------------------------------------- | ------------------------------------- | |||
| [..] | [..] | |||
| Content-Type: multipart/mixed;boundary="Part" | Content-Type: multipart/mixed;boundary="Part" | |||
| --Part | --Part | |||
| Content-Type: application/sdp | Content-Type: application/sdp | |||
| v=0 | v=0 | |||
| o=lminiero 2890844526 2890842808 IN IP4 ms.example.net | o=lminiero 2890844526 2890842808 IN IP4 ms.example.net | |||
| s=MediaCtrl | s=MediaCtrl | |||
| c=IN IP4 ms.example.net | c=IN IP4 ms.example.net | |||
| t=0 0 | t=0 0 | |||
| m=application 7575 TCP cfw | m=application 7575 TCP cfw | |||
| a=connection:new | a=connection:new | |||
| a=setup:passive | a=setup:passive | |||
| a=cfw-id:vF0zD4xzUAW9 | a=cfw-id:vF0zD4xzUAW9 | |||
| a=ctrl-package:msc-mixer/1.0 | ||||
| a=ctrl-package:msc-ivr/1.0 | ||||
| a=ctrl-package:mrb-publish/1.0 | ||||
| a=ctrl-package:msc-example-pkg/1.0 | ||||
| --Part | --Part | |||
| Content-Type: application/mrb-consumer+xml | Content-Type: application/mrb-consumer+xml | |||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
| <mrbconsumer version="1.0" | <mrbconsumer version="1.0" | |||
| xmlns="urn:ietf:params:xml:ns:mrb-consumer"> | xmlns="urn:ietf:params:xml:ns:mrb-consumer"> | |||
| <mediaResourceResponse reason="Resource found" status="200" | <mediaResourceResponse reason="Resource found" status="200" | |||
| id="fr34asx1"> | id="fr34asx1"> | |||
| <response-session-info> | <response-session-info> | |||
| skipping to change at page 149, line 23 ¶ | skipping to change at page 148, line 15 ¶ | |||
| actually redirected to the MS somehow. | actually redirected to the MS somehow. | |||
| No content for the presented messages is provided in this section, as | No content for the presented messages is provided in this section, as | |||
| in the IUMM mode no Consumer transaction is involved. In this | in the IUMM mode no Consumer transaction is involved. In this | |||
| example, a simple [RFC6230] Control Channel negotiation occurs where | example, a simple [RFC6230] Control Channel negotiation occurs where | |||
| the MRB acts as an intermediary, that is, picking a MS for the AS | the MRB acts as an intermediary, that is, picking a MS for the AS | |||
| according to some logic. In this case, in fact, the AS does not | according to some logic. In this case, in fact, the AS does not | |||
| support the MRB specification, and so just tries to set up a control | support the MRB specification, and so just tries to set up a control | |||
| channel the way it knows. | channel the way it knows. | |||
| It is worth pointing out that the MRB may actually enforce its | ||||
| decision about the MS to grant to the AS in different ways: | ||||
| specifically, the sentence "redirect the INVITE" that is used in | ||||
| Figure 51 does not necessarily mean that a SIP 302 message should be | ||||
| used for the purpose. A simple way to achieve this may be | ||||
| provisioning the unaware AS with different URIs, all actually | ||||
| transparently handled by the MRB itself: this would allow the MRB to | ||||
| simply map those URIs to different MS instances. Besides, the SIP | ||||
| 'Contact' header may also be used by the MRB in a reply to an INVITE | ||||
| coming from an AS to provide the actual URI the chosen MS might be | ||||
| reached on. A motivation for such a discussion and more details | ||||
| about this are provided in Section 7.3.2. | ||||
| 7.3. Handling media dialogs | 7.3. Handling media dialogs | |||
| It is worthwile to spend a few words to address how media dialogs | It is worthwile to spend a few words to address how media dialogs | |||
| would be managed whenever a MRB is involved in the scenarios. In | would be managed whenever a MRB is involved in the scenarios. In | |||
| fact, the presence of a MRB may introduce an additional complexity | fact, the presence of a MRB may introduce an additional complexity | |||
| compared to the quite straightforward 1:1 AS-MS topology. | compared to the quite straightforward 1:1 AS-MS topology. | |||
| 7.3.1. Query and Inline-aware mode | 7.3.1. Query and Inline-aware mode | |||
| Normally, especially in the Query and IAMM case, the MRB would only | Normally, especially in the Query and IAMM case, the MRB would only | |||
| skipping to change at page 152, line 22 ¶ | skipping to change at page 151, line 26 ¶ | |||
| are unique but which all route to the same host and port, e.g., | are unique but which all route to the same host and port, e.g., | |||
| sip:MrbToMs@mrb.example.com:5080;p=1234567890. Alternatively, the | sip:MrbToMs@mrb.example.com:5080;p=1234567890. Alternatively, the | |||
| MRB might simply allocate a pool of URIs it would be responsible of, | MRB might simply allocate a pool of URIs it would be responsible of, | |||
| and manage the associations with the requested MS services | and manage the associations with the requested MS services | |||
| accordingly. | accordingly. | |||
| 7.3.2. Inline-unaware mode | 7.3.2. Inline-unaware mode | |||
| As mentioned previously, in the IUMM case the AS would interact with | As mentioned previously, in the IUMM case the AS would interact with | |||
| the MRB as if it were the MS itself. One might argue that this would | the MRB as if it were the MS itself. One might argue that this would | |||
| make the AS act as in the IUMM case: nevertheless, this is not the | make the AS act as in the IAMM case: nevertheless, this is not the | |||
| case, considering the AS actually provided the MRB with information | case, considering there the AS actually provided the MRB with | |||
| about the resources it required, and as such a proper MS has been | information about the resources it required, leading to a proper MS | |||
| picked, while in the IUMM case the MRB would have to pick a MS with | to be picked, while in the IUMM case the MRB would have to pick a MS | |||
| no help from the AS at all. | with no help from the AS at all. | |||
| That said, the IUMM case is also very interesting with respect to the | That said, the IUMM case is also very interesting with respect to the | |||
| media dialog management. In fact, in the MRB-unaware mode there | media dialog management. In fact, in the MRB-unaware mode there | |||
| would be no Consumer request and an AS would actually see the MRB as | would be no Consumer request and an AS would actually see the MRB as | |||
| an MS. This means that, unlike the previous scenarios, being there | an MS. This means that, unlike the previous scenarios, being there | |||
| no AS<->MRB interaction and as such no MS selection process the MRB | no AS<->MRB interaction and as such no MS selection process the MRB | |||
| would likely be in the signaling path anyway, at least when the AS | would likely be in the signaling path anyway, at least when the AS | |||
| first shows up. The MRB could either redirect the AS to a MS | first shows up. The MRB could either redirect the AS to a MS | |||
| directly or transparently act a proxy/B2BUA and contact a MS | directly or transparently act a proxy/B2BUA and contact a MS | |||
| (according to implementation-specific policies) on behalf of the | (according to implementation-specific policies) on behalf of the | |||
| unaware AS. | unaware AS. | |||
| While apparently not a problem, this raises an issue when the same | While apparently not a problem, this raises an issue when the same | |||
| unaware AS has several sessions with different MS: the AS would only | unaware AS has several sessions with different MS: the AS would only | |||
| see one "virtual" MS (the MRB) and so it would relay all calls there, | see one "virtual" MS (the MRB) and so it would relay all calls there, | |||
| making it hard for the MRB to understand where these media dialogs | making it hard for the MRB to understand where these media dialogs | |||
| should belong: specifically, whether the UAC calling belongs to the | should belong: specifically, whether the UAC calling belongs to the | |||
| AS application logic leading to MS1 or MS2, or wherever else. | AS application logic leading to MS1 or MS2, or wherever else. | |||
| One possible approach to take care of this issue, is to always relay | One possible, very simple approach to take care of this issue, is to | |||
| the SIP dialogs from the same unaware AS to the same MS. It is | always relay the SIP dialogs from the same unaware AS to the same MS. | |||
| depicted in Figure 54. | ||||
| It is depicted in Figure 54. | ||||
| UAC1 UAC2 AS MRB MS | UAC1 UAC2 AS MRB MS | |||
| | | | | | | | | | | | | |||
| | | | 1. COMEDIA negotiation (A) | | | | | | 1. COMEDIA negotiation (A) | | | |||
| | | |--------------------------->| | | | | |--------------------------->| | | |||
| | | | | 2. COMEDIA neg. (A) | | | | | | 2. COMEDIA neg. (A) | | |||
| | | | |--------------------->| | | | | |--------------------->| | |||
| | | | | | | | | | | | | |||
| | | |<<############## CFW CONNECTION #################>>| | | | |<<############## CFW CONNECTION #################>>| | |||
| | | | | | | | | | | | | |||
| | | | 3. COMEDIA negotiation (B) | | | | | | 3. COMEDIA negotiation (B) | | | |||
| | | |--------------------------->| | | | | |--------------------------->| | | |||
| | | | | 4. COMEDIA neg. (B) | | | | | | 4. COMEDIA neg. (B) | | |||
| | | | |--------------------->| | | | | |--------------------->| | |||
| | | | | | | | | | | | | |||
| | | |<<############## CFW CONNECTION #################>>| | | | |<<############## CFW CONNECTION #################>>| | |||
| | 5. INVITE xyz | | | | | 5. INVITE xyz | | | | |||
| |--------------->| | | | |--------------->| | | | |||
| | | | 6. Attach UAC to MS (3PCC) | | | | | | 6. Attach UAC1 to MS (3PCC)| | | |||
| | | |--------------------------->| | | | | |--------------------------->| | | |||
| | | | | 7. Attach UAC (3PCC) | | | | | | 7. Attach UAC (3PCC) | | |||
| | | | |--------------------->| | | | | |--------------------->| | |||
| | | | | | | | | | | | | |||
| |<<++++++++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |<<++++++++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |||
| | | | | | | | | | | | | |||
| | | 8. INVITE| | | | | | 8. INVITE| | | | |||
| | | jkl | | | | | | jkl | | | | |||
| | |--------->| | | | | |--------->| | | | |||
| | | | 9. Attach UAC to MS (3PCC) | | | | | | 9. Attach UAC2 to MS (3PCC)| | | |||
| | | |--------------------------->| | | | | |--------------------------->| | | |||
| | | | | 10. Attach UAC (3PCC)| | | | | | 10. Attach UAC (3PCC)| | |||
| | | | |--------------------->| | | | | |--------------------->| | |||
| | | | | | | | | | | | | |||
| | |<<++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | | |<<++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |||
| | | | | | | | | | | | | |||
| . . . . . | . . . . . | |||
| . . . . . | . . . . . | |||
| Figure 54: Handling media dialogs in IUMM: always the same MS | Figure 54: Handling media dialogs in IUMM: always the same MS | |||
| skipping to change at page 154, line 11 ¶ | skipping to change at page 153, line 15 ¶ | |||
| conference room. It's quite clear, then, that if the MRB forwarded | conference room. It's quite clear, then, that if the MRB forwarded | |||
| the two CFW sessions to two different MS, the handling of UAC media | the two CFW sessions to two different MS, the handling of UAC media | |||
| dialogs would prove troublesome, considering the MRB would have an | dialogs would prove troublesome, considering the MRB would have an | |||
| hard way figuring out whether UAC1 should be attached to the MS | hard way figuring out whether UAC1 should be attached to the MS | |||
| managing CFW session A or the MS managing CFW session B. Forwarding | managing CFW session A or the MS managing CFW session B. Forwarding | |||
| all CFW sessions and UAC media dialogs coming from the same MRB- | all CFW sessions and UAC media dialogs coming from the same MRB- | |||
| unaware AS to the same MS would instead work as expected: the MRB | unaware AS to the same MS would instead work as expected: the MRB | |||
| would in fact leave the mapping of media dialogs and CFW sessions up | would in fact leave the mapping of media dialogs and CFW sessions up | |||
| to the AS. | to the AS. | |||
| This approach, while very simple and potentially not very scalable, | This approach, while very simple and indeed not very scalable, would | |||
| would actually help take care of the issue: in fact, no matter how | actually help take care of the issue: in fact, no matter how many | |||
| many separate control channels the AS might have with the MRB/MS (in | separate control channels the AS might have with the MRB/MS (in this | |||
| this example, the control channel A would be mapped to application | example, the control channel A would be mapped to application xyz, | |||
| xyz, and B to application jkl), the termination point would still | and B to application jkl), the termination point would still always | |||
| always be the same MS, which would consequently be the destination | be the same MS, which would consequently be the destination for all | |||
| for all media dialogs as well. | media dialogs as well. | |||
| To overcome the scalability limitations of such an approach, at least | To overcome the scalability limitations of such an approach, though, | |||
| in regard to the MRB being in the SIP signalling path for all calls, | at least in regard to the MRB being in the SIP signalling path for | |||
| the MRB could instead make use of redirection, as depicted in | all calls, a different approach needs to be exploited. In fact, | |||
| Figure 55. | especially in the case of different applications handled by the same | |||
| unaware AS, it makes sense to try and exploit different MS for the | ||||
| purpose, and correctly track media dialogs being forwarded | ||||
| accordingly. This means that the MRB must find a way to somehow | ||||
| redirect the unaware AS to different MS when it predicts or realizes | ||||
| that a different application logic is being involved. | ||||
| To do so, the MRB might make use of different approaches. One of | ||||
| them is by making use of redirection, e.g., by means of a SIP 302 | ||||
| message in reply to a control channel negotiation originated by an | ||||
| unaware AS. Such an approach is depicted in Figure 55. | ||||
| UAC1 AS MRB MS | UAC1 AS MRB MS | |||
| | | | | | | | | | | |||
| | | 1. COMEDIA negotiation | | | | | 1. COMEDIA negotiation | | | |||
| | |--------------------------->| | | | |--------------------------->| | | |||
| | | | | | | | | | | |||
| | | 2. 302 Moved (MS) | | | | | 2. 302 Moved (MS) | | | |||
| | |<---------------------------| | | | |<---------------------------| | | |||
| | | | | | | | | | | |||
| | | 3. COMEDIA negotiation | | | | | 3. COMEDIA negotiation | | | |||
| | |-------------------------------------------------->| | | |-------------------------------------------------->| | |||
| | | | | | | | | | | |||
| | |<<############## CFW CONNECTION #################>>| | | |<<############## CFW CONNECTION #################>>| | |||
| | | | | | | | | | | |||
| | 4. INVITE xyz | | | | | 4. INVITE xyz | | | | |||
| |--------------->| | | | |--------------->| | | | |||
| | | 5. Attach UAC to MS (3PCC) | | | | | 5. Attach UAC1 to MS (3PCC)| | | |||
| | |-------------------------------------------------->| | | |-------------------------------------------------->| | |||
| | | | | | | | | | | |||
| |<<++++++++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |<<++++++++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |||
| | | | | | | | | | | |||
| . . . . | . . . . | |||
| . . . . | . . . . | |||
| Figure 55: Handling media dialogs in IUMM: redirection | Figure 55: Handling media dialogs in IUMM: redirection | |||
| With this approach, the MRB might redirect the AS to a specific MS | With this approach, the MRB might redirect the AS to a specific MS | |||
| skipping to change at page 155, line 40 ¶ | skipping to change at page 155, line 22 ¶ | |||
| | | | | | | | | | | |||
| | | 3. COMEDIA negotiation (MRB') | | | | | 3. COMEDIA negotiation (MRB') | | | |||
| | |------------------------------>| | | | |------------------------------>| | | |||
| | | | 4. COMEDIA neg. | | | | | 4. COMEDIA neg. | | |||
| | | |------------------> | | | |------------------> | |||
| | | | | | | | | | | |||
| | |<<############## CFW CONNECTION #################>>| | | |<<############## CFW CONNECTION #################>>| | |||
| | | | | | | | | | | |||
| | 5. INVITE xyz | | | | | 5. INVITE xyz | | | | |||
| |--------------->| | | | |--------------->| | | | |||
| | | 6. Attach UAC to MRB' (3PCC) | | | | | 6. Attach UAC1 to MRB' (3PCC) | | | |||
| | |------------------------------>| | | | |------------------------------>| | | |||
| | | | 7 Attach UAC (3PCC) | | | | 7 Attach UAC (3PCC) | |||
| | | |------------------> | | | |------------------> | |||
| | | | | | | | | | | |||
| |<<++++++++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |<<++++++++++++++++++++++ RTP channels ++++++++++++++++++++++++++++>>| | |||
| | | | | | | | | | | |||
| . . . . | . . . . | |||
| . . . . | . . . . | |||
| Figure 56: Handling media dialogs in IUMM: MRB in the signalling path | Figure 56: Handling media dialogs in IUMM: MRB in the signalling path | |||
| It is worth pointing out that in both cases, though, that there are | ||||
| scenarios where there could be no assurance that the 302 sent by the | ||||
| MRB would be seen by the AS: in fact, should a proxy be between the | ||||
| AS and the MRB, such a proxy could act on the 302 itself. To | ||||
| properly cope with such an issue, the MRB might also make use of the | ||||
| 'Contact' header in the SIP responses to the INVITE to address the | ||||
| right MS: while the AS is not required to use the info in such a | ||||
| header to reach the MS, it could be reasonable to exploit it for the | ||||
| purpose as it would take care of the proxy scenario mentioned above. | ||||
| To conclude, there is a further approach a MRB might try to exploit | ||||
| to take care of the IUMM case. Since, as explained before, the | ||||
| issues related to the IUMM case mostly relate to the fact that the | ||||
| MRB is seen as a single MS instance by the AS, a simple way to | ||||
| overcome this might be to make the MRB look as a set of different MS | ||||
| right away: this can be done by simply provisioning the unaware AS | ||||
| with a series of different URIs, all handled by the MRB itself acting | ||||
| as a pool of "virtual" MS. This way, the AS may be designed to use | ||||
| different MS for different classes of call, e.g., for different | ||||
| applications it is managing (two in the example presented in this | ||||
| section), and as such would contact two different of the provisioned | ||||
| URIs to create two distinct control channels towards two different | ||||
| MS. Considering both the URIs would be handled by the MRB, the MRB | ||||
| can use them to determine which MS each call should be directed to. | ||||
| Expanding on Figure 54 by removing the constraint to always use the | ||||
| same MS, this new scenario might looks as depicted in Figure 57. | ||||
| UAC1 UAC2 AS MRB MS1 MS2 | ||||
| | | | | | | | ||||
| | | | 1. COMEDIA negotiation (A) | | | | ||||
| | | | INVITE fake-ms1 | | | | ||||
| | | |--------------------------->| | | | ||||
| | | | | 2. COMEDIA (A) | | | ||||
| | | | |---------------->| | | ||||
| | | | | | | | ||||
| | | |<<############## CFW CONNECTION 1 ##########>>| | | ||||
| | | | | | | | ||||
| | | | 3. COMEDIA negotiation (B) | | | | ||||
| | | | INVITE fake-ms2 | | | | ||||
| | | |--------------------------->| | | | ||||
| | | | | 4. COMEDIA neg. (B) | | ||||
| | | | |--------------------->| | ||||
| | | | | | | | ||||
| | | |<<############## CFW CONNECTION 2 ###############>>| | ||||
| | | | | | | | ||||
| | 5. INVITE xyz | | | | | ||||
| |--------------->| | | | | ||||
| | | | 6. Attach UAC1 to fake-ms1 (3PCC) | | | ||||
| | | |--------------------------->| | | | ||||
| | | | | 7. Attach UAC | | | ||||
| | | | |---------------->| | | ||||
| | | | | | | | ||||
| |<<++++++++++++++++++++++ RTP channels +++++++++++++++++++++++>>| | | ||||
| | | | | | | | ||||
| | 8. INVITE jkl | | | | | ||||
| |--------------->| | | | | ||||
| | | | 9. Attach UAC2 to fake-ms2 (3PCC) | | | ||||
| | | |--------------------------->| | | | ||||
| | | | | 10. Attach UAC | | | ||||
| | | | |--------------------->| | ||||
| | | | | | | | ||||
| |<<+++++++++++++++++++++++++ RTP channels +++++++++++++++++++++++++>>| | ||||
| | | | | | | | ||||
| . . . . . . | ||||
| . . . . . . | ||||
| Figure 57: Handling media dialogs in IUMM: provisioned URIs | ||||
| In this new example, we still assume that the same unaware AS is | ||||
| handling two different applications, still associated with the same | ||||
| URIs as before. This time, though, we also assume the AS has been | ||||
| designed to try and make use of different MS instances to handle the | ||||
| two very different applications it is responsible for. Besides, we | ||||
| also assume it has been configured to be able to use two different | ||||
| MS, respectively reachable at SIP URI 'fake-ms1' and 'fake-ms2', both | ||||
| actually handled by the MRB transparently. This results, just as | ||||
| before, in two different control channels (A and B) being created, | ||||
| but towards two different MS: specifically, the MRB makes sure that, | ||||
| for this AS, the control channel negotiation towards 'fake-ms1' is | ||||
| actually redirected to MS1; at the same time, 'fake-ms2' is | ||||
| associated with MS2. Once the AS has set up the control channels | ||||
| with both the MS, it is ready to handle media dialogs. UAC1 calls | ||||
| the SIP URI 'xyz' on the AS to order a pizza: the AS attaches the | ||||
| media dialog to the MS it knows is responsible for that branch of | ||||
| application logic, that is 'fake-ms1'; the MRB in turn makes sure it | ||||
| reaches the right MS instance, MS1. Later on, a different user, | ||||
| UAC2, calls SIP URI 'jkl' to join a conference room: this time the AS | ||||
| attaches this new media dialog to the MS instance handling the | ||||
| conference application, that is 'fake-ms2'; again, the MRB makes sure | ||||
| it is actually MS2 to receive the dialog. | ||||
| Again, this diagram is only meant to describe how the MRB might | ||||
| enforce its decisions: Just as described in the previous examples, | ||||
| the MRB may choose to either act as a proxy/B2BUA in between the AS | ||||
| and the MS instances, or redirect the AS to the right MS instances | ||||
| when they're first contacted (e.g., by means of the Contact header | ||||
| and/or a SIP redirect as explained before) and let the AS attach the | ||||
| media dialogs by itself. | ||||
| 7.3.3. CFW Protocol Bhaviour | 7.3.3. CFW Protocol Bhaviour | |||
| As shown in the previous diagrams, no matter what the topology, the | As shown in the previous diagrams, no matter what the topology, the | |||
| AS and MS usually end up with a direct connection with respect to the | AS and MS usually end up with a direct connection with respect to the | |||
| CFW control channel. As such, it can be expected that the CFW | CFW control channel. As such, it can be expected that the CFW | |||
| protocol continue to work as it should, and as a consequence all the | protocol continue to work as it should, and as a consequence all the | |||
| call flows presented in this document can easily be reproduced in | call flows presented in this document can easily be reproduced in | |||
| those circumstances as well. | those circumstances as well. | |||
| One aspect needs to be taken in very good care, nevertheless. It's | One aspect needs to be taken in very good care, nevertheless. It's | |||
| skipping to change at page 156, line 38 ¶ | skipping to change at page 159, line 12 ¶ | |||
| using different 'connectionid' identifiers to address actually the | using different 'connectionid' identifiers to address actually the | |||
| same UAC, thus preventing the protocol to work as expected. As a | same UAC, thus preventing the protocol to work as expected. As a | |||
| consequence, it's very important that any MRB implementation take | consequence, it's very important that any MRB implementation take | |||
| very good care of preserving the integrity of the involved SIP | very good care of preserving the integrity of the involved SIP | |||
| headers when proxying/forwarding SIP dialogs between AS and MS, in | headers when proxying/forwarding SIP dialogs between AS and MS, in | |||
| order not to break the protocol behaviour. | order not to break the protocol behaviour. | |||
| Let's take, for instance, the scenario depicted in Figure 53, | Let's take, for instance, the scenario depicted in Figure 53, | |||
| especially steps 6 and 7 which specifically address an UAC being | especially steps 6 and 7 which specifically address an UAC being | |||
| attached by an AS to a MS via the MRB. Let's assume that what is | attached by an AS to a MS via the MRB. Let's assume that what is | |||
| presented in Figure 57 is what happens to the From: and To: headers | presented in Figure 58 is what happens to the From: and To: headers | |||
| when dealing with the 3PCC approach to attach a specific UAC to the | when dealing with the 3PCC approach to attach a specific UAC to the | |||
| MS in that case. | MS in that case. | |||
| UAC AS MRB MS | UAC AS MRB MS | |||
| | | | | | | | | | | |||
| | INVITE xyz | | | | | INVITE xyz | | | | |||
| |--------------->| | | | |--------------->| | | | |||
| | | SIP [..] | | | | | SIP [..] | | | |||
| | | From: <..>;tag=a1b2c3 | | | | | From: <..>;tag=a1b2c3 | | | |||
| | | To: <..>;tag=d4e5f6 | | | | | To: <..>;tag=d4e5f6 | | | |||
| skipping to change at page 157, line 26 ¶ | skipping to change at page 159, line 37 ¶ | |||
| | | |<---------------------->| | | | |<---------------------->| | |||
| | | | | | | | | | | |||
| | | 1. CONTROL (play announcement to UAC) | | | | 1. CONTROL (play announcement to UAC) | | |||
| | |-------------------------------------------------->| | | |-------------------------------------------------->| | |||
| | | 2. 200 (IVR Error!) | | | | 2. 200 (IVR Error!) | | |||
| | |<--------------------------------------------------| | | |<--------------------------------------------------| | |||
| | | | | | | | | | | |||
| . . . . | . . . . | |||
| . . . . | . . . . | |||
| Figure 57: CFW protocol behaviour in case of manipulated tags | Figure 58: CFW protocol behaviour in case of manipulated tags | |||
| In the example, once done with the 3PCC and the UAC being attached to | In the example, once done with the 3PCC and the UAC being attached to | |||
| the MS, the AS and the MS end up with different assumptions with | the MS, the AS and the MS end up with different assumptions with | |||
| respect to the 'connectionid' addressing UAC. In fact, the AS builds | respect to the 'connectionid' addressing UAC. In fact, the AS builds | |||
| a 'connectionid' using the tags it is aware of (a1b2c3:d4e5f6), while | a 'connectionid' using the tags it is aware of (a1b2c3:d4e5f6), while | |||
| the MS builds a different one, considering it got different | the MS builds a different one, considering it got different | |||
| information from the MRB (aaabbb:cccddd). | information from the MRB (aaabbb:cccddd). | |||
| As a consequence, when the AS tries to play an announcement to the | As a consequence, when the AS tries to play an announcement to the | |||
| UAC using the connectionid it correctly constructed, the MS just as | UAC using the connectionid it correctly constructed, the MS just as | |||
| skipping to change at page 159, line 37 ¶ | skipping to change at page 161, line 42 ¶ | |||
| how a single secured MS is assumed to reply to different AS when | how a single secured MS is assumed to reply to different AS when | |||
| receiving requests that may cross the bounds each AS is constrained | receiving requests that may cross the bounds each AS is constrained | |||
| within. It is the case, for instance, of generic auditing requests, | within. It is the case, for instance, of generic auditing requests, | |||
| or explicit conference manipulation requests where the involved | or explicit conference manipulation requests where the involved | |||
| identifiers are not part of the context of the originating AS. | identifiers are not part of the context of the originating AS. | |||
| To address a very specific scenario, let's assume that two different | To address a very specific scenario, let's assume that two different | |||
| AS, AS1 and AS2, have established a Control Channel with the same MS. | AS, AS1 and AS2, have established a Control Channel with the same MS. | |||
| Considering the SYNC transaction an AS and a MS use to set up a | Considering the SYNC transaction an AS and a MS use to set up a | |||
| control channel, the MS is able to discern the requests coming from | control channel, the MS is able to discern the requests coming from | |||
| AS1 from the ones coming from AS2. Let's also assume that AS1 has | AS1 from the ones coming from AS2: in fact, as explained in | |||
| created a conference mix (confid=74b6d62) to which it has attached | Section 5.1 and Section 5.2, an AS and a MS negotiate a cfw-id | |||
| some participants within the context of its business logic, while AS2 | attribute in the SDP, and the same value is subsequently used in the | |||
| has created a currently active IVR dialog (dialogid=dfg3252) with a | SYNC message on the control channel that is created after the | |||
| user agent it is handling (237430727:a338e95f); besides, AS2 has also | negotiation, thus reassuring both the AS and the MS about the fact | |||
| joined two connections to each other (1:75d4dd0d and 1:b9e6a659). As | that the control channel they share is actually the one they | |||
| it is clear, it is highly desirable that AS1 is not aware of what AS2 | negotiated in the first place. | |||
| is doing with the MS and viceversa, and that they are not allowed to | ||||
| manipulate the other's resources. The following transactions will | Let's also assume that AS1 has created a conference mix | |||
| occur, and it will be shown how the MS is assumed to reply in all the | (confid=74b6d62) to which it has attached some participants within | |||
| cases in order to avoid security issues: | the context of its business logic, while AS2 has created a currently | |||
| active IVR dialog (dialogid=dfg3252) with a user agent it is handling | ||||
| (237430727:a338e95f); besides, AS2 has also joined two connections to | ||||
| each other (1:75d4dd0d and 1:b9e6a659). As it is clear, it is highly | ||||
| desirable that AS1 is not aware of what AS2 is doing with the MS and | ||||
| viceversa, and that they are not allowed to manipulate the other's | ||||
| resources. The following transactions will occur, and it will be | ||||
| shown how the MS is assumed to reply in all the cases in order to | ||||
| avoid security issues: | ||||
| 1. AS1 places a generic audit request to both the mixer and IVR | 1. AS1 places a generic audit request to both the mixer and IVR | |||
| packages; | packages; | |||
| 2. AS2 places a generic audit request to both the mixer and IVR | 2. AS2 places a generic audit request to both the mixer and IVR | |||
| packages; | packages; | |||
| 3. AS1 tries to terminate the dialog created by AS2 (6791fee); | 3. AS1 tries to terminate the dialog created by AS2 (6791fee); | |||
| 4. AS2 tries to join a user agent it handles (1:272e9c05) to the | 4. AS2 tries to join a user agent it handles (1:272e9c05) to the | |||
| conference mix created by AS1 (74b6d62); | conference mix created by AS1 (74b6d62); | |||
| A sequence diagram of the mentioned transactions is depicted in | A sequence diagram of the mentioned transactions is depicted in | |||
| Figure 58: | Figure 59: | |||
| AS1 AS2 MS | AS1 AS2 MS | |||
| | | | | | | | | |||
| | A1. CONTROL (IVR audit) | | | A1. CONTROL (IVR audit) | | |||
| |++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>| | |++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>| | |||
| | | A2. 200 OK | | | | A2. 200 OK | | |||
| |<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++| | |<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++| | |||
| | | | | | | | | |||
| | B1. CONTROL (Mixer audit) | | | B1. CONTROL (Mixer audit) | | |||
| |++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>| | |++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>| | |||
| skipping to change at page 161, line 5 ¶ | skipping to change at page 163, line 40 ¶ | |||
| |<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++| | |<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++| | |||
| | | | | | | | | |||
| | | F1. CONTROL (join UAC&conf[AS1]) | | | | F1. CONTROL (join UAC&conf[AS1]) | | |||
| | |++++++++++++++++++++++++++++++++>>| | | |++++++++++++++++++++++++++++++++>>| | |||
| | | F2. 403 Forbidden | | | | F2. 403 Forbidden | | |||
| | |<<++++++++++++++++++++++++++++++++| | | |<<++++++++++++++++++++++++++++++++| | |||
| | | | | | | | | |||
| . . . | . . . | |||
| . . . | . . . | |||
| Figure 58: Security Considerations: Framework Transaction | Figure 59: Security Considerations: Framework Transaction | |||
| The expected outcome of the transaction is the MS partially "lying" | The expected outcome of the transaction is the MS partially "lying" | |||
| to both AS1 and AS2 when replying to the audit requests (not all the | to both AS1 and AS2 when replying to the audit requests (not all the | |||
| identifiers are reported, but only the ones each AS is directly | identifiers are reported, but only the ones each AS is directly | |||
| involved in), and the MS denying the requests for the unauthorized | involved in), and the MS denying the requests for the unauthorized | |||
| operations (403). Looking at each transaction separately: | operations (403). Looking at each transaction separately: | |||
| o In the first transaction (A1), AS1 places a generic <audit> | o In the first transaction (A1), AS1 places a generic <audit> | |||
| request to the IVR package; the request is generic since no | request to the IVR package; the request is generic since no | |||
| attributes are passed as part of the request, meaning AS1 is | attributes are passed as part of the request, meaning AS1 is | |||
| skipping to change at page 167, line 41 ¶ | skipping to change at page 170, line 32 ¶ | |||
| CFW 140e0f763352 403 | CFW 140e0f763352 403 | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| This document has no actions for IANA. | This document has no actions for IANA. | |||
| 10. Change Summary | 10. Change Summary | |||
| Note to RFC Editor: Please remove this whole section. | Note to RFC Editor: Please remove this whole section. | |||
| The following are the major changes between the 12 and the 13 | ||||
| versions of the draft: | ||||
| o Fixed some nits in the document. | ||||
| o Addressed additional comments and typos reported by Dale Worley | ||||
| from his review on the mailing list. | ||||
| o Clarified the IUMM scenario with respect to how media dialogs are | ||||
| handled. | ||||
| o Removed reference to expired | ||||
| draft-boulton-mmusic-sdp-control-package-attribute and related | ||||
| example. | ||||
| The following are the major changes between the 11 and the 12 | The following are the major changes between the 11 and the 12 | |||
| versions of the draft: | versions of the draft: | |||
| o Fixed some nits in the document. | o Fixed some nits in the document. | |||
| o Addressed additional comments and typos reported by Dale Worley | o Addressed additional comments and typos reported by Dale Worley | |||
| from his review on the mailing list. | from his review on the mailing list. | |||
| The following are the major changes between the 10 and the 11 | The following are the major changes between the 10 and the 11 | |||
| versions of the draft: | versions of the draft: | |||
| skipping to change at page 171, line 19 ¶ | skipping to change at page 174, line 19 ¶ | |||
| the Session Description Protocol (SDP)", RFC 4145, | the Session Description Protocol (SDP)", RFC 4145, | |||
| September 2005. | September 2005. | |||
| [RFC4572] Lennox, J., "Connection-Oriented Media Transport over the | [RFC4572] Lennox, J., "Connection-Oriented Media Transport over the | |||
| Transport Layer Security (TLS) Protocol in the Session | Transport Layer Security (TLS) Protocol in the Session | |||
| Description Protocol (SDP)", RFC 4572, July 2006. | Description Protocol (SDP)", RFC 4572, July 2006. | |||
| [RFC6230] Boulton, C., Melanchuk, T., and S. McGlashan, "Media | [RFC6230] Boulton, C., Melanchuk, T., and S. McGlashan, "Media | |||
| Control Channel Framework", RFC 6230, May 2011. | Control Channel Framework", RFC 6230, May 2011. | |||
| [I-D.boulton-mmusic-sdp-control-package-attribute] | ||||
| Boulton, C., "A Session Description Protocol (SDP) Control | ||||
| Package Attribute", | ||||
| draft-boulton-mmusic-sdp-control-package-attribute-07 | ||||
| (work in progress), September 2011. | ||||
| [RFC6231] McGlashan, S., Melanchuk, T., and C. Boulton, "An | [RFC6231] McGlashan, S., Melanchuk, T., and C. Boulton, "An | |||
| Interactive Voice Response (IVR) Control Package for the | Interactive Voice Response (IVR) Control Package for the | |||
| Media Control Channel Framework", RFC 6231, May 2011. | Media Control Channel Framework", RFC 6231, May 2011. | |||
| [RFC6505] McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer | [RFC6505] McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer | |||
| Control Package for the Media Control Channel Framework", | Control Package for the Media Control Channel Framework", | |||
| RFC 6505, March 2012. | RFC 6505, March 2012. | |||
| [RFC6917] Boulton, C., Miniero, L., and G. Munson, "Media Resource | [RFC6917] Boulton, C., Miniero, L., and G. Munson, "Media Resource | |||
| Brokering", RFC 6917, April 2013. | Brokering", RFC 6917, April 2013. | |||
| End of changes. 32 change blocks. | ||||
| 132 lines changed or deleted | 233 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||