RFC 4245

High-Level Requirements for Tightly Coupled SIP Conferencing

πŸ“… published November 2005, from ietf

RFC 4245: High-Level Requirements for Tightly Coupled SIP Conferencing πŸŽ€

okay bestie, this one is a whole vibe πŸ“žβœ¨ It's RFC 4245, a requirements doc for group calls in SIP where a central "focus" runs the conference. It's titled High-Level Requirements for Tightly Coupled SIP Conferencing.

Quick title block tea β˜•:

  • Network Working Group is the group that published it 🌸
  • Authors: O. Levin (Microsoft Corporation) and R. Even (Polycom) πŸ’œ
  • Category: Informational πŸ“š. This means it's not an Internet standard. It just gives info to the community 🫢
  • Date: November 2005 πŸ‚
  • The title block doesn't list anything this RFC obsoletes or updates 🧚

Status of This Memo πŸ“

this memo is info for the Internet community, full stop. it does NOT specify an Internet standard of any kind πŸ’… and distribution is unlimited, so share it with everyone 🌈

Copyright (C) The Internet Society (2005).

Abstract ✨

so this doc takes a big, wide look at what a tightly coupled SIP conference needs πŸŽ€ Separate docs will then map those requirements onto existing protocol primitives, define new protocol extensions, and introduce new protocols where needed. All together, they're meant to be a guide for building SIP conferencing apps that actually work with each other πŸ¦‹

Table of Contents πŸ—‚οΈ

1. Introduction ....................................................2
2. An Overview .....................................................2
3. High-Level Requirements .........................................3
   3.1. Discovery Phase ............................................3
   3.2. Conference Creation ........................................4
   3.3. Conference Termination .....................................4
   3.4. Participants' Manipulations ................................4
      3.4.1. Participation of a Conference-Unaware User Agent ......5
      3.4.2. Dial-Out Scenarios ....................................5
      3.4.3. Dial-In Scenarios .....................................5
      3.4.4. Third-Party Invitation to a Conference ................6
      3.4.5. Participants' Removal .................................6
      3.4.6. Participants' Privacy .................................6
   3.5. Conference State Information ...............................7
      3.5.1. Description ...........................................7
      3.5.2. Dissemination of Changes ..............................7
      3.5.3. On-demand Information Dissemination ...................8
   3.6. Focus Role Migration .......................................8
   3.7. Side-bar Conferences .......................................8
   3.8. Cascading of Conferences ...................................9
   3.9. SIMPLE and SIP Conferencing Coordination ...................9
4. Security Considerations ........................................10
5. Contributors ...................................................10
6. References .....................................................10
   6.1. Normative References ......................................10

1. Introduction 🌷

okay so this doc looks at a wide range of conferencing requirements for tightly coupled SIP conferencing, which builds on SIP itself [2] πŸ“ž

the requirements are grouped by subject, so different areas can move forward at the same time πŸƒβ€β™€οΈπŸ’¨

separate docs will do the mapping, protocol extensions, and any new protocols that turn out to be needed 🧩

and together those docs will be a guide for building interoperable SIP conferencing apps 🫢

the terms "MAY", "SHOULD", and "MUST" are to be read as described in RFC 2119 [1] πŸ“–

2. An Overview 🌸

a SIP conference is a group of SIP user agents (aka the conference participants) connected to one central point (aka the conference focus). The focus keeps a separate SIP dialog with each participant, so it has a direct peer-wise relationship with all of them πŸ’œ

the focus is a SIP user agent that can host SIP conferences. That covers creating them, maintaining them, and manipulating them using SIP call control, and maybe other non-SIP stuff too πŸŽ€

in this tightly coupled model, the SIP conference graph is always a star ⭐ The focus keeps track of how all the conference's dialogs relate to each other, internally 🧠

the focus can be run by a participant or by a separate application server πŸ–₯️

if a participant runs it, the focus is usually only good for a simple ad hoc conference. The idea is that a basic conference like that can be set up using only SIP call control primitives πŸ¦‹

a dedicated conference server gives you the basics plus richer stuff: simultaneous conferences, big scalable conferences, reserved conferences, and managed conferences πŸ‘‘ A conferencing server can support any subset of the advanced features in this doc, so it doesn't have to do all of them 🌈

the media graph of a SIP conference can be centralized, decentralized, or a mix of both, and it can be different for each media type πŸ”₯ In the centralized case, media sessions go between the focus and each participant. In the decentralized (aka distributed) case, the media graph is a mesh among the participants, either multicast or multi-unicast πŸ•ΈοΈ That means media processing (like mixing) can happen at the focus alone, or at the participants 🎢

conference participants and third parties can have different roles and privileges in a conference. For example, the conference policy can say that only the conference chair has the right to disconnect people or invite people πŸ‘©β€βš–οΈ

across this doc, "conference policies" means a set of parameters and rules set when the conference starts, like the maximum number of participants, whether it needs chair supervision, whether it's password protected, how long it lasts, or how media gets mixed. The conference creator usually defines these, and they need special privileges to change them πŸ”

also across this doc, "conference state" means info describing a conference in progress. That includes participant info (like dialog identifiers), the media sessions currently running, the current loudest speaker, the current chair, and more πŸŽ™οΈ

3. High-Level Requirements πŸ“‹

besides the requirements in this doc, there are extra ones for conference policy, media mixing and other manipulations, floor control, privilege control, and so on. Those will be covered in separate docs πŸ’…

3.1. Discovery Phase πŸ”

some of the stuff in this section could be handled by configuration or proprietary conventions. Still, there's consensus that standard ways for automata to do these functions MUST be defined πŸ€–

  • REQ-1: discovering where an arbitrary SIP conferencing server (or servers) is located πŸ“
  • REQ-2: given a SIP Address-of-Record (AOR) for an entity, figuring out whether that SIP entity has focus capabilities πŸ‘€
  • REQ-3: given a global identifier for a particular conference, locating the conference focus 🎯
  • REQ-4: given a global identifier for a particular conference, getting the conference properties πŸ“
  • REQ-5: given a global identifier for a particular conference, getting the conference state information 🧾

3.2. Conference Creation πŸŽ‰

given a focus location, a means MUST be defined for any interested entity (including a user agent) to carry out the procedures below πŸ’œ

  • REQ-1: creating an ad hoc conference identifier and the conference, with the properties you specify ✨
  • REQ-2: creating a reserved conference identifier for a conference with the properties you specify πŸ”–
  • REQ-3: specifying properties at conference creation in any of these ways: default, profiles, or explicitly πŸŽ›οΈ

3.3. Conference Termination πŸšͺ

  • REQ-1: given a conference identifier, a means MUST be defined for a user agent to disconnect all participants from the conference and terminate it, including releasing the associated resources πŸ’€
  • REQ-2: a means MAY be defined for requesting that a focus revert a two-party conference back to a basic SIP point-to-point session, including releasing the associated conferencing resources πŸ¦‹

3.4. Participants' Manipulations πŸ’«

some of the requirements in this section can be met by human intervention, configuration, or proprietary conventions. Still, there's consensus that standard ways for automata to do these functions MUST be defined πŸ™ˆ

3.4.1. Participation of a Conference-Unaware User Agent πŸ™‹β€β™€οΈ

  • REQ-1: the focus MUST be able to invite and disconnect an RFC 3261 compliant only SIP user agent to and from a SIP conference πŸ“ž
  • REQ-2: an RFC 3261 compliant only SIP user agent MUST be able to dial-in to a particular SIP conference. In this case, only the human knows that he/she is connected to the conference πŸ§β€β™€οΈ

3.4.2. Dial-Out Scenarios πŸ“€

  • REQ-1: a means MUST be defined for a focus to invite another user agent to one of the focus' conferences. This procedure MUST result in the establishment of a single SIP dialog between the two 🌟
  • REQ-2: given an existing SIP dialog between two user agents, if at least one of them has focus capabilities, a means MUST be defined for the conference focus to invite the other user agent to one of the focus' conferences without any additional SIP dialog establishment 🫢
  • REQ-3: an invitation to a user agent to join a conference MUST include a standard indication that it is a conference, plus the conference identifier 🏷️

3.4.3. Dial-In Scenarios πŸ“₯

  • REQ-1: a means MUST be defined for a user agent to create an ad hoc conference with default properties (per REQ-1 under "Conference Creation" above) and become a participant using a single SIP dialog πŸŽ€
  • REQ-2: given a reserved conference identifier, a means MUST be defined for a user agent to activate the conference and become a participant using a single SIP dialog πŸ”“
  • REQ-3: given the conference identifier of an active conference, a means MUST be defined for a user agent to dial-in to the conference and become a participant using a single SIP dialog between the two πŸ“²
  • REQ-4: given the identifier of one of the dialogs of a particular active conference, a means MUST be defined for a user agent to dial-in to the conference and become a participant 🌈

3.4.4. Third-Party Invitation to a Conference πŸ‘―

  • REQ-1: given a conference identifier, a means MUST be defined for a user agent to invite another user agent to this conference πŸ’Œ
  • REQ-2: given the identifier of one of the dialogs of a particular active conference, a means MUST be defined for a user agent to invite another user agent to this conference πŸ’–
  • EQ-3: given a conference identifier, a means SHOULD be defined for a user agent to invite a list of user agents to this conference (a so-called "mass invitation") πŸ“£
quick aside: the original spells this one EQ-3, not REQ-3. We're keeping it exactly as written so everyone can cross-reference it correctly 🫢

3.4.5. Participants' Removal πŸ‘‹βœ¨

Okay so, the focus needs a way to kick someone out of the conference πŸ™…β€β™€οΈ, and this is a MUST. Then the requirements get more specific. Given a conference identifier, a user agent MUST have a way to remove a participant. Given the identifier of one of the dialogs in an active conference, a user agent MUST also have a way to remove a participant. A user agent MUST be able to remove all the participants from a conference given its identifier πŸ’€. And a mass ejection, where you remove a chosen sub-list of participants, MAY be defined for a user agent. Bestie, that's giving "main character energy" πŸ’….

  • REQ-1: A means MUST be defined for a conference focus to remove a conference participant from the conference.
  • REQ-2: Given a conference identifier, a means MUST be defined for a user agent to remove a participant from the conference.
  • REQ-3: Given an identifier of one of the dialogs of a particular active conference, a means MUST be defined for a user agent to remove a participant from the conference.
  • REQ-4: Given a conference identifier, a means MUST be defined for a user agent to remove all the participants from the conference.
  • REQ-5: Given a conference identifier and a sub-list of participants, a means MAY be defined for a user agent to remove the specified participants from the conference (a so-called "mass ejection").

3.4.6. Participants' Privacy πŸŽ€πŸ™ˆ

Okay this one is so good πŸ₯Ή. A conference focus SHOULD support the procedures in this section, and a conference participant MAY support them too. The whole vibe is that "anonymizing" operations MUST be performed on everything: the call control, the media control, and the media content when it makes sense 🫣. Sooo no leaking who's who.

  • REQ-1: A conference participant joins the conference "anonymously", which means their presence can be announced without revealing their identity 🎭.
  • REQ-2: A conference participant asks a focus to let them participate anonymously.
  • REQ-3: A conference participant joins in a "hidden mode", which means their presence and identity are not disclosed to the other participants πŸ«₯.
  • REQ-4: A conference participant asks a focus to let them participate in the conference in hidden mode.

3.5 Conference State Information πŸ“‹πŸŒΈ

3.5.1. Description

Okay, so a conference state is basically a virtual database that describes the conference while it's happening πŸ—‚οΈ. It holds the participants' info (like their dialog identifiers and states), the media sessions going on (like the contributing sources and encoding schemes), who the current loudest speaker is, who's chairing, and more. Every time something changes, like a participant's state or the conference policy, the conference state gets a fresh snapshot πŸ“Έ.

  • REQ-1: A conference state virtual database MUST have a modular definition. In other words, it MUST be possible to access the different conference aspects independently 🧩.
  • REQ-2: It MUST be possible to combine information about different conference aspects into a single report.
  • REQ-3: A mechanism for extensible definition and registration of conference state evolving aspects MUST be present.
  • REQ-4: A default conference state report MUST be defined. It SHOULD include a minimal, useful set of information, like a list of the current conference participants πŸ“.

3.5.2. Dissemination of Changes πŸ“£

Now the spreading-the-news part. Changes have to be reported to anyone who's interested, including non-conference participants, and they have to arrive in a timely manner ⏰. A SIP user agent needs a way to say which state changes it actually cares about, and a way to say the minimum time it wants between receiving reports. Updates can also get bundled into one reporting event, and there should be default change reports with the basics, like people joining and leaving πŸ‘‹.

  • REQ-1: A means MUST be defined for reporting the conference state changes to interested parties (including non-conference participants) in a timely manner.
  • REQ-2: A means MUST be defined for a SIP user agent to express its interest in selected state changes only.
  • REQ-3: A means MUST be defined for a SIP user agent to express the minimum interval between receiving state change reports.
  • REQ-4: It MUST be possible to aggregate recent changes in a single reporting event.
  • REQ-5: Default conference state change reports MUST be defined. They SHOULD contain minimal useful to the participants information (e.g., participants' joining and leaving the conference).

3.5.3. On-demand Information Dissemination πŸ™‹β€β™€οΈ

Sometimes you just want the info right now, no waiting around πŸƒβ€β™€οΈ. So a means MUST be defined to share any conference state information with interested parties, including SIP user agents, on demand. An interested party, again including a SIP user agent, MUST be able to ask for the state of a specific conference by its conference identifier. And it MUST be able to pick exactly which subset of the state it wants and is able to receive 🎯.

  • REQ-1: A means MUST be defined to disseminate any conference state information to interested parties (including SIP user agents) on demand.
  • REQ-2: A means MUST be defined for an interested party (including a SIP user agent) to request conference state information of a particular conference defined by the conference identifier.
  • REQ-3: A means MUST be defined for an interested party (including a SIP user agent) to specify the subset of the conference state information it wants and is capable of receiving.

3.6. Focus Role Migration πŸ‘‘πŸ¦‹

The focus role is the crown πŸ‘‘, and it has to be passable. There MUST be a procedure for the current focus to hand the role to another participant (delegating it), and a procedure for asking a focus to transfer its role to someone else. There MUST also be a procedure for an on-demand, unconditional transfer of the focus role to a different participant πŸ’ƒ. And since things can go wrong, a detection procedure for a focus failure condition MUST be defined 🚨.

  • REQ-1: A procedure for delegating a focus role by the current focus to another participant MUST be defined.
  • REQ-2: A procedure for requesting a conference focus to transfer its role to another participant MUST be defined.
  • REQ-3: A procedure for on-demand unconditional transfer of the focus role to a different participant MUST be defined.
  • REQ-4: A detection procedure for a focus failure condition MUST be defined.

3.7. Side-bar Conferences πŸ€«πŸ’¬

A standard means MUST be defined to implement the operations in this section. These are the little side chats within the big call πŸ‘€. A user agent that isn't a conference participant can join a side-bar within the conference using SIP, or be invited to one with SIP. A conference participant can create a side-bar with one or more participants using SIP, join one with SIP, or be invited to one with SIP πŸ“ž.

A conference-unaware user agent, whether or not it's a participant, can create and take part in side-bar conferences, and this MAY be done by non-SIP means. A conference participant can create side-bar conferences inside the conference without opening any extra SIP dialogs with the focus, and this MAY also be done by non-SIP means. The same goes for joining any number of side-bars, and for being invited to any number of side-bars 🫧.

  • REQ-1: A user agent (not a conference participant) joins a side-bar within the conference by SIP means.
  • REQ-2: A user agent (not a conference participant) is invited to a side-bar within the conference by SIP means.
  • REQ-3: A conference participant creates a side-bar conference with one or more participants in a conference by SIP means.
  • REQ-4: A conference participant joins a side-bar within the conference by SIP means.
  • REQ-5: A conference participant is invited to a side-bar within the conference by SIP means.
  • REQ-6: A conference-unaware user agent (a participant or not) creates and participates in side-bar conferences. It MAY be achieved by non-SIP means.
  • REQ-7: A conference participant creates side-bar conferences within the conference without establishing any additional SIP dialogs with the focus. It MAY be achieved by non-SIP means.
  • REQ-8: A conference participant joins any number of side-bars within the conference without establishing any additional SIP dialogs with the focus. It MAY be achieved by non-SIP means.
  • REQ-9: A conference participant is invited to any number of side-bars within the conference without establishing any additional SIP dialogs with the focus. It MAY be achieved by non-SIP means.

3.8. Cascading of Conferences 🌊

"Cascading of Conferences" means different things depending on who you ask πŸ€·β€β™€οΈ. Here are a few flavours:

  • Peer-to-peer chaining of signaling. (There are lots of ways to build the media graph here.)
  • Conferences have hierarchal signaling relations. (There are lots of ways to build the media graph here too.)
  • "Cascading" is used to distribute the media "mixing" only. The distribution of signaling is not required.

And yes, each flavour comes with its own set of requirements, so it's not one size fits all 🧁.

3.9. SIMPLE and SIP Conferencing Coordination πŸ€πŸ’œ

  • REQ-1: SIMPLE-based Presence and Instant Messaging architecture SHOULD fit into the general SIP Conferencing architecture 🧩.
  • REQ-2: A scenario where a multimedia SIP conference and a multiparty instant messaging conversation take place among the same group of participants MUST be addressed.
  • REQ-3: A scenario where a side-bar and/or a sub-IM-conference is being held as a part of SIP conference MUST be addressed.

4. Security Considerations πŸ”πŸš¨

Bestie, this part is serious, so read it carefully 🫢.

This document talks about the high-level requirements for SIP conferencing. Conferencing has some specific security requirements, and we'll summarize them here at a very high level πŸ›‘οΈ.

All of the operations and functions in this document need to be authorized by a focus or a participant. The conference is expected to be governed by a set of authorization rules, which are defined as part of the conference policy. For that policy to actually be enforced, the focus has to be able to authenticate potential participants. Normal SIP mechanisms, including Digest authentication and certificates, can be used [2]. The detailed conference-specific security requirements will be covered in the protocol documents πŸ“š.

Conferencing also has privacy implications. Some of them are discussed here. Standard SIP mechanisms for a user agent to request privacy should be utilized by a focus, and they'll be detailed in the protocol documents πŸŽ€.

5. Contributors 🌈

This work is based on the discussions among the members of the SIP Conferencing design team πŸ™Œ.

6. References πŸ“–

6.1. Normative References πŸ’œ

  • [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [2] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.

Authors' Addresses πŸ‘©β€πŸ’»

Orit Levin
Microsoft Corporation
One Microsoft Way
Redmond, WA  98052

EMail: oritl@microsoft.com


Roni Even
Polycom
94 Derech Em Hamoshavot
Petach Tikva, Israel

EMail: roni.even@polycom.co.il

Copyright (C) The Internet Society (2005).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property πŸ’…

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement 🫢

Funding for the RFC Editor function is currently provided by the Internet Society 🌸.

πŸ“¦ where this page comes from