320 likes | 334 Views
CPCP. Hisham Khartabil XCON WG IETF 59, Seoul hisham.khartabi@nokia.com. CPCP Requirements. Changes since draft-ietf-xcon-cpcp-reqs-00 Removed the concept of hidden user. Anonymous is enough.
E N D
CPCP Hisham Khartabil XCON WG IETF 59, Seoul hisham.khartabi@nokia.com
CPCP Requirements • Changes since draft-ietf-xcon-cpcp-reqs-00 • Removed the concept of hidden user. Anonymous is enough. • Anonymous membership modified. It now requires that only authenticated users are allowed to join a conference • Removed conference inactivity requirement. • Added media type requirement (e.g. audio, video) • Added floor control policy requirements
Start-time Stop-time Open Issue (1) • What does start-time and stop-time mean for a conference created using CPCP? What are the requirements • The CPCP Start Time is a choice made by creator: - A specified Earliest Mixing Time (which can be NOW or a time delta/GMT), and - The time the first participant arrives - OR - - The time a Key Participant arrives • The CPCP End Time is a choice made by creator: - A specified End of Mixing Time (which can be NOW, NEVER, or a time delta/GMT), and - The time the last participant leaves - OR - - The time the last Key Participant leaves - OR - - Persistent (e.g., only the time (condition 1) matters)
Start-time Stop-time Open Issue (2) • In the current solution proposal, we need the following: • The CPCP Start Time is a choice made by creator: - A specified Earliest Mixing Time (which can be NOW or a time delta/GMT), and - The time the first participant arrives - OR - - The time a Key Participant arrives • The CPCP End Time is a choice made by creator: - A specified End of Mixing Time (which can be NOW, NEVER, or a time delta/GMT), and - The time the last participant leaves - OR - - The time the last Key Participant leaves - OR - - Persistent (e.g., only the time (condition 1) matters) • Need to further enhance the XML document to enable the full support
Key Participants • New term and requirement that emerged from list discussion • Need to add requirement • Need to modify solution to enable assigning key participants to a conference
Conference ends when creator leaves • Currently creator can not indicate that the conference ends when he leaves. Discussion on the list seems to want that feature. • Current requirements and proposed solution does not require it. • Should we add as a requirement?
Create a Conference PUT http://xcap.example.com/services/conferences/users/Alice/conference12.xml HTTP/1.1 Content-Type:application/conference-policy+xml <?xml version="1.0" encoding="US-ASCII"?> <Conference xmlns="urn:ietf:params:xml:ns:conference-policy“ xmlns:conference-settings="urn:ietf:params:xml:ns:conference-settings" xmlns:conference-time="urn:ietf:params:xml:ns:conference-time“> <Conference-settings> <Conference-URI>sip:xcon@example1.com</Conference-URI> <Conference-URI>tel:+358123456789</Conference-URI> <Conference-URI>h323:xcon@example1.com</Conference-URI> </Conference-settings> <Conference-time> <Conference-occurrence> <Start-time>2004-06-16T10:00:00Z</Start-time> <Stop-time>2004-06-16T12:00:00Z</Stop-time> </Conference-occurrence> </Conference-time> </Conference>
User suggested Conference URI Alice Alice XCAP Server XCAP Server PUT PUT 200 409 Rejected. Server May suggest an alternative Accepted
Server assigned Conference URI PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml HTTP/1.1 Content-Type:application/conference-policy+xml <?xml version="1.0" encoding="US-ASCII"?> <Conference xmlns="urn:ietf:params:xml:ns:conference-policy“ xmlns:conference-settings="urn:ietf:params:xml:ns:conference-settings" xmlns:conference-time="urn:ietf:params:xml:ns:conference-time“> <Conference-settings> </Conference-settings> <Conference-time> <Conference-occurrence> <Start-time>2003-06-16T10:00:00Z</Start-time> <Stop-time>2003-06-16T12:00:00Z</Stop-time> </Conference-occurrence> </Conference-time> </Conference>
Server assigned Conference URI (1) Alice Alice XCAP Server XCAP Server PUT PUT 200 200 GET SUBSCRIBE 200 200 NOTIFY 200
Adding an Access Control List PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/ACL HTTP/1.1 Content-Type: text/plain <ACL> <ACL-target-URI Access-type=“Allowed">sip:bob@example1.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:*@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:sarah@example2.com</ACL-target-URI> </ACL>
Adding a Dial-out List PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/DL HTTP/1.1 Content-Type: text/plain <DL> <DL-target> <DL-target-URI>sip:alice@example1.com</DL-target-URI> </DL-target> <DL-target> <DL-target-URI>sip:tom@example2.com</DL-target-URI> </DL-target> </DL>
What do we have so far? • GET http://xcap.example.com/services/conferences/users/Alice/conference.xml HTTP/1.1 • 200 looks like: HTTP/1.1 200 OK <?xml version="1.0" encoding="US-ASCII"?> <Conference xmlns="urn:ietf:params:xml:ns:conference-policy“ xmlns:conference-settings="urn:ietf:params:xml:ns:conference-settings" xmlns:conference-time="urn:ietf:params:xml:ns:conference-time“> <Conference-settings> <Conference-URI>sip:xcon@example1.com</Conference-URI> <Conference-URI>tel:+358123456789</Conference-URI> <Conference-URI>h323:xcon@example1.com</Conference-URI> </Conference-settings> <Conference-time> <Conference-occurrence> <Start-time>2003-06-16T10:00:00Z</Start-time> <Stop-time>2003-06-16T12:00:00Z</Stop-time> </Conference-occurrence> </Conference-time> <ACL> <ACL-target-URI Access-type=“Allowed">sip:bob@example1.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:*@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:sarah@example2.com</ACL-target-URI> </ACL> <DL> <DL-target> <DL-target-URI>sip:alice@example1.com</DL-target-URI> </DL-target> <DL-target> <DL-target-URI>sip:tom@example2.com</DL-target-URI> </DL-target> </DL> </Conference>
Conference Server Behaviour (1) Conference Server Alice XCAP server PUT Interface undefined ??? 200
Conference Server Behaviour (2) Conference Server Alice XCAP server SUBSCRIBE 200 NOTIFY 200 PUT 200 Conf. Server needs to have r/w access NOTIFY 200
Adding a User (before or after conference start) PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/ACL/ACL-target-URI[4] HTTP/1.1 Content-Type: text/plain <ACL-target-URI Access-type=“Allowed">sip:john@example2.com</ACL-target-URI>
Adding Multiple Users (1) • If XCAP does not allow more than 1 element to be inserted PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/ACL HTTP/1.1 Content-Type: text/plain <ACL> <ACL-target-URI Access-type=“Allowed">sip:bob@example1.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:*@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:sarah@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:john@example2.com</ACL-target-URI> </ACL>
Adding Multiple Users (2) • If XCAP does allow more than 1 element to be inserted PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/ACL/ACL-target-URI[4|5|6] HTTP/1.1 Content-Type: text/plain <ACL-target-URI Access-type=“Allowed">sip:john@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:peter@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:*@*</ACL-target-URI>
Removing user from DL DELETE http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/DL DL-target/DL-target-URI[1] HTTP/1.1
Blocking a User from Joining • We added John, now we want to block him PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/ACL/ACL-target-URI[4] HTTP/1.1 Content-Type: text/plain <ACL-target-URI Access-type=“blocked">sip:john@example2.com</ACL-target-URI> • A GET on the ACL will show <ACL> <ACL-target-URI Access-type=“Allowed">sip:bob@example1.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:*@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:sarah@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:john@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:peter@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:*@*</ACL-target-URI> </ACL>
Expelling a User from Joining • Peter is being disruptive, we want to expel him PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/ACL/ACL-target-URI[3] HTTP/1.1 Content-Type: text/plain <ACL-target-URI Access-type=“Expelled">sip:john@example2.com</ACL-target-URI> • A GET on the ACL will show <ACL> <ACL-target-URI Access-type=“Allowed">sip:bob@example1.com</ACL-target-URI> <ACL-target-URI Access-type=“Allowed">sip:*@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:sarah@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:john@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Expelled">sip:peter@example2.com</ACL-target-URI> <ACL-target-URI Access-type=“Blocked">sip:*@*</ACL-target-URI> </ACL>
Why not just make Peter “blocked” • Blocked means not allowed to join, but can still be dialled-out to in the next conference occurrence, if the user in on the DL. • Expelled means that in the next conference occurrence, the user will not be dialled out to, even if s/he is on the DL.
Changing Conference Stop-time PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/Conference-time/Conference-occurrence/Stop-time HTTP/1.1 Content-Type: text/plain <Stop-time>2003-06-16T14:00:00Z</Stop-time>
Who can subscribe to Conference Event package? • Using Privilege Control List PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/PCL HTTP/1.1 Content-Type: text/plain <PCL> <PCL-target> <PCL-target-URI>sip:alice@example1.com</PCL-target-URI> <Privileges>RIGHT_TO_SUBSCRIBE_TO_CONF_EVENT_PACKAGE</Privileges> </PCL-target> </PCL>
Conference Security Control • Setting security levels and parameters to the conference PUT http://xcap.example.com/services/conferences/users/Alice/conference.xml/Conference/SC HTTP/1.1 Content-Type: text/plain <SC> <Visibility>visible</Visibility> <Security-mechanism TLS="false" S-MIME="true"/> <SC-target> <SC-target-URI>sip:*@example2.com</SC-target-URI> <Authorization-mechanism password="1a2b3c4d">Digest</Authorization-mechanism> </SC-target> </SC>
Floor Control Policy • Introduced into the latest version • Contains: • Does conference have floor or not • Moderator controlled or not • Who is the moderator • Number of floors • Media per floor • What algorithm is used to moderate (FCFS, random, etc) • Max floor users at one time <Conference-floor-policy> <Floor moderator-controlled="true"> <Media-types> <Audio/> </Media-types> <Algorithm> <Moderator-controlled/> </Algorithm> <Max-floor-users>1</Max-floor-users> <Moderator-URI>sip:Alice@example.com</Moderator-URI> </Floor> </Conference-floor-policy>
Media Policy • Introduced into the latest version • Contains Media types allowed in this conference • Allows focus to know what media to INVITE users to. <Conference-media-policy> <Media-types> <Audio/> </Media-types> </Conference-media-policy>
XML Namespaces (1) • Each feature is in its own XML namespace xmlns:conference-mp="urn:ietf:params:xml:ns:conference-mp" xmlns:conference-fp="urn:ietf:params:xml:ns:conference-fp" xmlns:conference-sc="urn:ietf:params:xml:ns:conference-sc" xmlns:conference-dl="urn:ietf:params:xml:ns:conference-dl" xmlns:conference-pcl="urn:ietf:params:xml:ns:conference-pcl" xmlns:conference-acl="urn:ietf:params:xml:ns:conference-acl" xmlns:conference-time="urn:ietf:params:xml:ns:conference-time" xmlns:conference-info="urn:ietf:params:xml:ns:conference-info" xmlns:conference-settings="urn:ietf:params:xml:ns:conference-settings • Helps introduce new features into the conference policy by introducing a new namespace • Eg: key participants
XML Namespaces (2) • This will also help with assigning privileges (Authorization) • Different users need to have different conference policy access rights • All participants have read rights to conference-time • Only creator has read/write rights to conference-time • Introduce a new XCAP usage document that assigns users access (read/write) rights to certain parts of the conference policy based on namespaces and/or elements <access-rights> <xcap-usage>conference-pollicy</xcap-usage> <document>http://xcap.example.com/services/conferences/users/Alice/conference12.xml</document> <ns> urn:ietf:params:xml:ns:conference-time</ns> <access-right>read</access-right> <target-uri>sip:john@example.com</target-uri> <access-rights>
Missing • Asserting identity: some conferences may require it, others may not • Need to enable a conference creator to indicate if anonymous participants are allowed to join or not, with the condition that their identity is asserted
What Next? • 3GPP waiting • No other proposals • OMA Push-To-Talk Over Cellular will make a protocol selection some time in the future • They is great interest in harmonising the effort and minimise implementation and adoption of services • Interoperability • WG item?