idnits 2.17.1 draft-knauf-p2psip-disco-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 31, 2011) is 4533 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-26) exists of draft-ietf-p2psip-base-19 == Outdated reference: A later version (-03) exists of draft-knauf-p2psip-share-02 ** Obsolete normative reference: RFC 3265 (Obsoleted by RFC 6665) ** Obsolete normative reference: RFC 5245 (Obsoleted by RFC 8445, RFC 8839) == Outdated reference: A later version (-09) exists of draft-ietf-p2psip-concepts-04 == Outdated reference: A later version (-21) exists of draft-ietf-p2psip-sip-06 Summary: 2 errors (**), 0 flaws (~~), 5 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Knauf 3 Internet-Draft G. Hege 4 Intended status: Standards Track T C. Schmidt 5 Expires: May 3, 2012 HAW Hamburg 6 M. Waehlisch 7 link-lab & FU Berlin 8 October 31, 2011 10 A RELOAD Usage for Distributed Conference Control (DisCo) 11 draft-knauf-p2psip-disco-04 13 Abstract 15 This document defines a RELOAD Usage for Distributed Conference 16 Control (DisCo) with SIP. DisCo preserves conference addressing 17 through a single SIP URI by splitting its semantic of identifier and 18 locator using a new Kind data structure. Conference members are 19 enabled to select conference controllers based on proximity awareness 20 and to recover from failures of individual resource instances. DisCo 21 proposes call delegation to balance the load at focus peers. 23 Status of this Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on May 3, 2012. 40 Copyright Notice 42 Copyright (c) 2011 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 58 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 59 3. Overview of DisCo . . . . . . . . . . . . . . . . . . . . . . 6 60 3.1. Reference Scenario . . . . . . . . . . . . . . . . . . . . 6 61 3.2. Initiating a Distributed Conference . . . . . . . . . . . 7 62 3.3. Joining a Conference . . . . . . . . . . . . . . . . . . . 8 63 3.4. Conference State Synchronization . . . . . . . . . . . . . 9 64 3.5. Call delegation . . . . . . . . . . . . . . . . . . . . . 10 65 3.6. Resilience . . . . . . . . . . . . . . . . . . . . . . . . 10 66 3.7. Topology Awareness . . . . . . . . . . . . . . . . . . . . 10 67 4. RELOAD Usage for Distributed Conference Control . . . . . . . 11 68 4.1. Shared Resource DisCo-Registration . . . . . . . . . . . . 11 69 4.2. Kind Data Structure . . . . . . . . . . . . . . . . . . . 11 70 4.3. Variable Conference Identifier . . . . . . . . . . . . . . 12 71 4.4. Conference Creation . . . . . . . . . . . . . . . . . . . 12 72 4.5. Advertising Focus Ability . . . . . . . . . . . . . . . . 13 73 4.6. Determining Coordinates . . . . . . . . . . . . . . . . . 14 74 4.7. Proximity-aware Conference Participation . . . . . . . . . 14 75 4.8. Configuration Document Extension . . . . . . . . . . . . . 16 76 5. Conference State Synchronization . . . . . . . . . . . . . . . 18 77 5.1. Event Package Overview . . . . . . . . . . . . . . . . . . 18 78 5.2. . . . . . . . . . . . . . . . . . 20 79 5.3. / . . . . . . . . . . . . . . . . 20 80 5.4. . . . . . . . . . . . . . . . . . 21 81 5.5. . . . . . . . . . . . . . . . . . . . . . . . . . 22 82 5.5.1. . . . . . . . . . . . . . . . . . . . . 23 83 5.5.2. / . . . . . . . . . . . . . . . . . . . . 23 84 5.5.3. / . . . . . . . . . . . . . . . . 24 85 5.6. Distribution of Change Events . . . . . . . . . . . . . . 24 86 5.7. Translation to Conference-Info Event Package . . . . . . . 25 87 5.7.1. . . . . . . . . . . . . . . . . . . 26 88 5.7.2. . . . . . . . . . . . . . . . 26 89 5.7.3. . . . . . . . . . . . . . . . . . . . . . 26 90 5.7.4. . . . . . . . . . . . . . . . . . . 26 91 5.7.5. / . . . . . . . . . . . . . . . . . . . . 27 92 5.7.6. / . . . . . . . . 27 93 6. Distributed Conference Control with SIP . . . . . . . . . . . 28 94 6.1. Call delegation . . . . . . . . . . . . . . . . . . . . . 28 95 6.2. Conference Access . . . . . . . . . . . . . . . . . . . . 29 96 6.3. Media Negotiation and Distribution . . . . . . . . . . . . 30 97 6.3.1. Offer/Answer . . . . . . . . . . . . . . . . . . . . . 30 98 6.4. Restructuring a Conference . . . . . . . . . . . . . . . . 31 99 6.4.1. On Graceful Leave . . . . . . . . . . . . . . . . . . 31 100 6.4.2. On Unexpected Leave . . . . . . . . . . . . . . . . . 32 101 7. DisCo Kind Definition . . . . . . . . . . . . . . . . . . . . 33 102 8. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 34 103 9. Relax NG Grammar . . . . . . . . . . . . . . . . . . . . . . . 38 104 10. Security Considerations . . . . . . . . . . . . . . . . . . . 39 105 10.1. Trust Aspects . . . . . . . . . . . . . . . . . . . . . . 39 106 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 107 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 41 108 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 42 109 13.1. Normative References . . . . . . . . . . . . . . . . . . . 42 110 13.2. Informative References . . . . . . . . . . . . . . . . . . 43 111 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 44 112 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 46 114 1. Introduction 116 This document describes a RELOAD Usage for distributed conference 117 control (DisCo) in a tightly coupled model with SIP [RFC3261]. The 118 Usage provides self-organizing and scalable signaling that allows 119 RELOAD peers, clients and plain SIP user agents to participate in a 120 managed P2P conference. DisCo defines the following functions: 122 o A SIP protocol scheme for distributed conference control 124 o RELOAD Usage and definition of conferencing Kind 126 o Mechanisms for conference synchronization and call delegation 128 o Mechanism for proximity-aware routing within a conference 130 o An XML event package for distributed conferences 132 In this document, the term distributed conferencing refers to a 133 multiparty conversation in a tightly coupled model in which the point 134 of control (i.e., the focus) is identified by a unique URI, but the 135 focus service is located at many independent entities. Multiple SIP 136 [RFC3261] user agents uniformly control and manage a multiparty 137 session. This document defines a new Usage for RELOAD, including an 138 additional Kind code point with a corresponding data structure that 139 complies with the demands for distributed conferences. The 'DisCo' 140 data structure stores the mapping of a single conference URI to 141 multiple conference controllers and thereby separates the conference 142 identifier from focus instantiations. 144 Authorized controllers of a conference are permitted to register 145 their mapping in the DisCo data structure autonomously. Thus, the 146 DisCo data structure represents a co-managed Resource in RELOAD. To 147 provide trusted and secure access to a co-managed Resource, this 148 document uses the definitions for Shared Resources (ShaRe) 149 [I-D.knauf-p2psip-share]. 151 Delay and jitter are critical issues in multimedia communications. 152 The proposed conferencing scheme supports mechanisms to build an 153 optimized interconnecting graph between conference participants and 154 their responsible conference controllers. Conference members will be 155 enabled to select the closest focus with respect to delay or jitter. 157 DisCo extends conference control mechanisms to provide a consistent 158 and reliable conferencing environment. Controlling peers maintain a 159 consistent view of the entire conference state. The multiparty 160 system can be re-structured based on call delegation operations. 162 2. Terminology 164 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 165 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 166 document are to be interpreted as described in [RFC2119]. 168 We use the terminology and definitions from der RELOAD base 169 draft[I-D.ietf-p2psip-base], the peer-to-peer SIP concepts draft 170 [I-D.ietf-p2psip-concepts], the usage for shared resources draft 171 [I-D.knauf-p2psip-share],and the terminology formed by the framework 172 for conferencing with SIP [RFC4353]. Additionally the following 173 terms are used: 175 Coordinate Value: An opaque string that describes a host's relative 176 position in the network topology. 178 Focus peer: A RELOAD peer that provides SIP conferencing functions 179 and implements the Usage for distributed conferencing. It is 180 called 'active' if already involved in signaling relation to 181 conference participants. Otherwise, if only registered in a 182 distributed conference data structure, it is referred to as a 183 'potential' focus peer. 185 3. Overview of DisCo 187 3.1. Reference Scenario 189 The reference scenario for the Distributed Conference Control (DisCo) 190 is shown in Figure 1. Peers are connected via a RELOAD 191 [I-D.ietf-p2psip-base] instance, in which peers A and B are managing 192 a single multiparty conference. The conference is identified by a 193 unique conference URI, but located at peers A and B fulfilling the 194 role of the focus. The mapping of the conference URI to one or more 195 responsible focus peers is stored in a new RELOAD Resource for 196 distributed conferencing within a data structure denoted as DisCo- 197 Registration. The storing peer SP of the distributed conference 198 resource holds this data. 200 The focus peers A and B maintain SIP signaling relations to 201 conference participants, which may have different conference protocol 202 capabilities. In this example, peer A is the focus for the RELOAD 203 peer C and the plain SIP user agent E whereas peer B serves as a 204 focus for RELOAD peer D and the RELOAD client F. 206 RELOAD peers and clients obtain the contact information for the 207 conference from the storing peer. In contrast to this, the user 208 agent E receives the conference URI not by RELOAD mechanisms, but 209 resolves the ID and joins the conference by plain SIP negotiation. 211 Focus peers maintain a SIP signaling relation among each other used 212 for notification messages that synchronize the conference focus 213 peers' knowledge about the entire conference state. Additionally, 214 focus peers can transfer calls to each other by a call delegation 215 mechanism. 217 +-------------------+ +------------------+ 218 |Access Control List| |DisCo-Registration| 219 +-------------------+ +------------------+ 220 \ / 221 +-------+ 222 |Storing| 223 # # # # # # # # # # | Peer | # # # # # # # # # # 224 # | SP | # 225 # +-------+ # 226 # # 227 # # 228 # # 229 +----+ +----+ 230 |Peer| \ RELOAD Instance |Peer| 231 | C | \ | D | 232 +----+ \ +----+ 233 # SIP # 234 # \ # 235 # \ # 236 # +-------+ +-------+ #( 237 # | Focus | | Focus | # ) 238 # # | Peer | # # # # # # # # # # # | Peer | # # ( 239 | A | <===Conf.Events/====> | B | ) 240 +-------+ Call delegation +-------+ Overlay 241 / \ Comm. 242 / \ ( 243 SIP SIP ) 244 / \ ( 245 / \ ) 246 +----------+ +--------+ 247 |User Agent| | Client | 248 | E | | F | 249 +----------+ +--------+ 251 Figure 1: Reference Scenario: Focus peers A,B maintain a distributed 252 conference 254 3.2. Initiating a Distributed Conference 256 To create a conference the initiating user agent announces itself as 257 a focus for the conference. It stores its own contact information 258 (Node-ID) as a DisCo-Registration Kind (cf. Figure 2) in the RELOAD 259 overlay. The hashed conference URI is used as the Resource-ID. This 260 Resource will later contain the contact IDs of all potential focus 261 peers including optional topological descriptors. 263 3.3. Joining a Conference 265 A RELOAD-aware node (cf. Bob in Figure 2) intending to join an 266 existing conference requests the list of potential focus peers stored 267 in the DisCo-Registration under the conference's Resource-ID. The 268 node selects any of the focus peers (e.g., Alice) and establishes a 269 connection using AppAttach/ICE [RFC5245]. This transport is then 270 used to send an INVITE to the conference applying the chosen focus as 271 the contact. The selection of the focus peer can optionally be based 272 on proximity information if available. 274 A conference member proposes itself as a focus for subsequent 275 participants by adding its Node-ID to the DisCo-Registration stored 276 under the conference URI in the RELOAD overlay. The decision whether 277 a peer announces as a focus incorporates bandwidth, power, and other 278 constraints, but details are beyond the scope of this document. 280 Alice RELOAD Bob 281 (initiating peer) (joining peer) 282 -------------------------------------------------------------------- 283 | | | 284 | Alice stores her mapping to register a conference | 285 | Store mapping(ConfURI, Alice) | | 286 |------------------------------>| | 287 | Bob requests the list of potential focus peers | 288 | | Lookup ConfURI | 289 | |<------------------------------| 290 | | Result list of conf. focus | 291 | |------------------------------>| 292 | | | 293 | Bob establishes transport connection to Alice | 294 | AppAttach | 295 |<--------------------------------------------------------------| 296 | AppAttach | 297 |-------------------------------------------------------------->| 298 | INVITE | 299 |<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| 300 | OK | 301 |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| 302 | ACK | 303 |<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| 304 | Media | 305 |<=============================================================>| 306 | | | 307 | Bob stores his mapping to become a focus peer too | 308 | | Store mapping(ConfURI, Bob) | 309 | |<------------------------------| 310 | | | 312 Figure 2: DisCo Usage generic Call Flow 314 3.4. Conference State Synchronization 316 Each focus of a conference maintains signaling connections to its 317 related participants independently from other conference controllers. 318 This distributed conference design effects that the entire SIP 319 conference state is jointly held by all focus peers. In DisCo, state 320 synchronization is based on a SIP specific event notifications 321 mechanism [RFC3265]. 323 Each focus peer maintains its view of the entire conference state by 324 subscribing to the other focus peers' XML event package for 325 distributed conferences. This is based on the event package for 326 conference state (cf. [RFC4575]). Details are defined in this 327 document in Section 5. Receivers of event notifications update their 328 local conference state document to represent a valid view of current 329 total conference state. 331 The event notification package for distributed conferences enables 332 focus peers to synchronize the entire conference state. The event 333 package defines additional XML elements and complex types (see 334 Section 8 for more details), which describe the responsibilities of 335 any focus peer in the conference. By providing a global view each 336 focus peer is enabled to perform additional load balancing operations 337 and enhances the robustness against departures of focus peers. 339 3.5. Call delegation 341 Call delegation (see Section 6.1) is a feature used to transfer an 342 incoming participation request to another focus peer. It can be 343 applied to prevent overloading of focus peers. Call delegation is 344 realized through SIP REFER requests, which carry signaling and 345 session description information of the caller to be transferred. 346 This feature is achieved transparently for the transferred user agent 347 by using a source routing mechanism at SIP dialog establishment. 348 Descriptions of overload detection are beyond the scope of this 349 document. 351 3.6. Resilience 353 A focus peer can decide to leave the conference or may ungracefully 354 fail. In a traditional conferencing scenario, loss of the conference 355 controller or the media distributor would cause a complete failure of 356 the multiparty conversation. Distributed conferencing uses the 357 redundancy provided by multiple focus peers to reconfigure a current 358 multiparty conversation. Participants that loose their entry point 359 to the conference re-invite themselves via the remaining focus peers 360 or will be re-invited by the latter. This option is based on the 361 conference state and call delegation functions. 363 3.7. Topology Awareness 365 DisCo supports the optimization of the conference topology in respect 366 of the underlying network using topological descriptors. An 367 extension for the RELOAD XML configuration document is defined in 368 Section 4.8 to support landmarking approaches. Each peer intending 369 to create or participate in a distributed conference MAY determine a 370 topological descriptor that describes its relative position in the 371 network. Focus peers store these coordinate values in an additional 372 data field in the DisCo-Registration data structure. This enables 373 peers joining the conference to select the closest focus with respect 374 to its coordinate values. 376 4. RELOAD Usage for Distributed Conference Control 378 4.1. Shared Resource DisCo-Registration 380 A distributed conference is a cooperative service of several 381 individual devices that use a common identifier. To enable a mapping 382 from one conference identifier to multiple focus peers, this document 383 defines the new Kind data structure DisCo-Registration. The DisCo 384 Kind uses the definitions for Shared Resources 385 [I-D.knauf-p2psip-share] to allow a jointly maintenance by multiple 386 focus peers. Hence, write permission to a DisCo-registration is 387 shared by the conference creator with all authorized focus peers. 389 DisCo complies with the following requirements for Shared Resources: 391 Isolated Data Storage: DisCo uses the dictionary data model. Each 392 dictionary key is the Node-ID of the certificate that will be used 393 to sign the stored data 395 ResourceNameExtension field: A DisCo-Registration can contain the 396 ResourceNameExtension structure an initial field in the Kind data 397 structure. It contains the conference URI of the registered 398 DisCo-record. 400 4.2. Kind Data Structure 402 Each DisCo-Registration data structure stores a mapping of a 403 conference identifier to one or multiple focus peers that 404 cooperatively control the conference. Additionally, each DisCo- 405 Registration provides the coordinate value, which indicates the 406 relative network position of the focus peers. 408 The data structure uses the RELOAD dictionary type. The dictionary 409 key MUST be the Node-ID of the focus peer that is associated with the 410 dictionary entry. This allows a focus peer to update only its own 411 mapping. The DisCo data structure of type DisCoRegistration is 412 constructed as follows: 414 struct { 415 /* This field is optional, see documentation */ 416 ResourceNameExtension res_name_ext; 417 opaque coordinate<0..2^16-1>; 418 NodeId node_id; 419 } DisCoRegistration; 421 The DisCoRegistration structure is composed of the following values: 423 res_name_ext: This field can contain the conference URI. It meets 424 the requirement for the USER-CHAIN-ACL access policy defined in 425 [I-D.knauf-p2psip-share] to enable variable resource names. 427 coordinate: This field contains a topological descriptor that 428 indicates the relative position of the peer in the network. To 429 support different algorithms the coordinate field is represented 430 as an opaque string. 432 node_id: This field contains the Node-ID of the peer storing the 433 DisCoRegistration and is used to contact the peer when utilizing 434 its service as a focus. 436 4.3. Variable Conference Identifier 438 DisCo-Registrations can be stored based on a variable Resource Name. 439 However, a conference identifier set by a user MUST follow the 440 requirements for Kinds using variable Resource Names as defined in 441 the ShaRe Usage [I-D.knauf-p2psip-share]. 443 4.4. Conference Creation 445 The registration of a distributed conference includes the storage of 446 the following two Kinds (see Figure 3). 448 DisCo-Registration Kind: contains the conference identifier and the 449 optional coordinate value. If used, the coordinate value MAY be 450 determined previously to the conference registration. The 451 Resource Name and hence the Resource-ID is defined by the hash 452 over the desired conference identifier (using the hash algorithm 453 of the overlay). 455 Access Control List Kind: contains the conference participants that 456 are allowed to register as focus peers for a conference (see 457 [I-D.knauf-p2psip-share]). Its Resource Name/ID is equal to those 458 of the corresponding DisCo-Registration. 460 Preliminary to storage of DisCo-Registration and Access Control List 461 (ACL) Kinds the conference creator SHOULD perform a RELOAD StatReq to 462 verify that no former conference is present. If neither a DisCo- 463 Registration nor an associated ACL exist, the conference creator 464 stores a DisCo-Registration with a valid conference identifier (see 465 Section 4.3) and an ACL referring to the DisCo-Registration Kind-ID. 467 If DisCo registrations and ACL Kinds from previous conferences are 468 still existing there are two options. First, if conference creator 469 is aware of the indexes from previous ACL Kinds, it refreshes the 470 root item of this ACL and stores its registration as focus peer as 471 DisCo-Registration Kind. Second, If the creator is unaware of 472 indexes, it fetches all Access List Kinds to determine the index of 473 the root item. 475 Alice Peer1 Overlay PeerN Storing Peer 476 ------------------------------------------------------------- 477 | StatReq Res:Conf-URI | | 478 |------------>|----------->|----------->|----------->| 479 | StatAns | | | 480 |<------------|<-----------|<-----------|<-----------| 481 | StoreReq Res:Conf-URI Kinds:DisCo, Access-List | 482 |------------>|----------->|----------->|----------->| 483 | StoreAns | | | 484 |<------------|<-----------|<-----------|<-----------| 485 | | | | | 487 Figure 3: Initial creation of a Distributed Conference 489 Optionally the conference initiator (or any active focus) MAY store 490 an additional RELOAD SIP-Registration in the overlay 491 [I-D.ietf-p2psip-sip] or even at a standard SIP registrar [RFC3261] 492 under a URI for which it has write permission. This allows DisCo- 493 unaware or even legacy SIP user agents to participate in the 494 conference. Those registrations SHOULD always point to a currently 495 active focus, who is prepared to accept legacy user agents. The user 496 agent who initially performed the registrations is responsible for 497 updating them appropriately. How authorization has been obtained to 498 perform those registration is out of scope of this document. 500 The lifetime of a distributed conference is not necessarily limited 501 by the participation time of its creator. As long as the root item 502 of an Access Control List to a DisCo-Registration is not expired, 503 Authorized Peers are allowed to further provide a conferencing 504 service and even store new focus registrations. 506 4.5. Advertising Focus Ability 508 All participants of a distributed conference MAY potentially become a 509 focus peer for their conference. This depends on its capacities such 510 as sufficient processing power (CPU, Memory) for the desired media 511 type, the quality of the network connectivity, and the conference 512 policy. Information about network connectivity with respect to NAT 513 or restricted firewalls can be obtained via ICE [RFC5245] 514 connectivity checks. If a peer is behind a NAT, it SHOULD allow for 515 incoming connections via AppAttach/ICE. Peers that can only accept 516 connections with the support of TURN should not act as a focus. 518 Nevertheless, under special circumstances it might be reasonable to 519 locate a focus peer behind such a NAT (e.g., within a companies 520 network infrastructure). 522 If a participant is a candidate to become a focus for the conference, 523 it stores its Node-ID and optional coordinate value into the DisCo 524 data structure. An entry in the corresponding ACL 525 [I-D.knauf-p2psip-share] must be present to allow this peer to write 526 the DisCo-Registration resource. By storing the mapping into the 527 data structure a participant becomes a potential focus. 529 4.6. Determining Coordinates 531 Each RELOAD peer within the context of a distributed conference MAY 532 be aware of its relative position in the network topology. To 533 construct a topology-aware conference, the DisCo Usage provides the 534 coordinate value within the DisCo-Registration data structure. Focus 535 peers store their relative network position together with the 536 announcement as conference focus. Joining peers that are able to 537 determine their coordinates may then select a focus peer whose 538 relative position is in its vicinity (see Section 4.7). 540 Some algorithms determine topology information by measuring Round- 541 Trip Times (RTT) towards a set of hosts serving as landmarks (e.g., 542 [landmarks-infocomm02]). To support such algorithms this document 543 describes an extension to the RELOAD XML configuration document that 544 allows to configure the set of landmark hosts peer must use for 545 position estimation (see Section 4.8). Once a focus peer has 546 registered its mapping in the DisCo data structure, it also stores 547 the according coordinates in the same mapping. These vectors are used by peers joining the conference to 549 select the focus peer that is relatively closest to itself. 551 Because topology-awareness can be obtained by many different 552 approaches a concrete algorithms is out of scope of this document. 554 4.7. Proximity-aware Conference Participation 556 The participation procedure to a distributed conference is composed 557 of three operation. 559 1. Resolution of the conference identifier. 561 2. Establishment of of transport connection. 563 3. SIP signaling to join a conference. 565 Figure 4 and the following specifications give a more detailed view 566 on the joining procedure. 568 Bob Peer1 Overlay PeerN Storing Peer Alice 569 -------------------------------------------------------------- 570 | StatReq Res:Conf-URI | | | 571 |--------->|--------->|--------->|--------->| | 572 | |StatAns | | | | 573 |<---------|<---------|<---------|<---------| | 574 | FetchReq Res:Conf-URI Kind:DisCo,ACL | | 575 |--------->|--------->|--------->|--------->| | 576 | |FetchAns | | | | 577 |<---------|<---------|<---------|<---------| | 578 | | | | | | 579 | Bob calculates Alice as closest Focus | | 580 | | | | | | 581 | |AppAttach application:5060 | | 582 |--------->|--------->|--------->|--------->|--------->| 583 | |AppAttach application:5060 | | 584 |<---------|<---------|<---------|<---------|<---------| 585 | | | | | | 586 |<-------------------ICE Checks----------------------->| 587 | | | | | | 588 | | INVITE sip:Alice | | 589 |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| 590 | | 200 OK | | | 591 |<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| 592 | | ACK | | | 593 |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| 594 | | | | | | 596 Figure 4: Participation of a Distributed Conference 598 1. The joining peer MAY determine its own coordinate value (if 599 used). 601 2. The joining peer sends a StatReq message to obtain all indexes of 602 the Access Control List (ACL) Kinds stored. 604 3. The joining peer sends a FetchReq message for the DisCo and ACL 605 Kind to the Resource-ID of the conference URI. The FetchReq 606 SHOULD NOT include any specific dictionary keys, but SHOULD fetch 607 for those array ranges previously determined the StatReq. With 608 the ACL items, the joining peer is able to verify whether DisCo- 609 Registrations are stored by authorized focus peers (see 610 [I-D.knauf-p2psip-share]). 612 4. Using the retrieved coordinates values of the DisCo- 613 Registrations, the joining peer MAY calculate which of than 614 opaque <0..2^16-1> initial field in the Kind data structure focus 615 peers is the relatively closest to itself. 617 5. The joining peer then establishes a transport using RELOADs 618 AppAttach, respectively, ICE procedures to create a transport to 619 the chosen focus peer. 621 6. Finally, the established transport is used to create a SIP dialog 622 from the joining peer to the focus peers. 624 The SIP INVITE request MAY contain the joining peer's topological 625 descriptor as a URI-parameter called 'coord' in the contact-header in 626 base64 encoded form [RFC4648]. An example contact URI is "sip:alice@ 627 example.com;coord=PEknbSBhIHRvcG9sb2dpY2FsIGRlc2NyaXB0b3I+". When 628 the called focus is full and needs to delegate the call it uses the 629 contents of the 'coord'-parameter. It determines the next available 630 focus closest to the calling peer (Section 4.6) using the received 631 descriptor and the other focuses' descriptors from the conference 632 state synchronization document and delegates the call accordingly 633 (see Section 6.1). 635 A conference focus MAY allow the joining peer to also become a focus 636 (depending on the conference policy see Section 6.2). Therefore, it 637 stores a new ACL Kind that delegates write permission for the DisCo- 638 Registration to the new participant. It sets the 'user_name' field 639 in the ACL Kind to its own user name and sets the 'to_user' field to 640 the user name of the joining peer. If no other conference policy is 641 defined, the focus peer MAY set the allow_delegation flag to true. 642 For further details about the trust delegation using the ACL Kind see 643 [I-D.knauf-p2psip-share]. 645 4.8. Configuration Document Extension 647 This section defines an additional parameter for the 648 element that extends the RELOAD XML configuration document. The 649 proposed element allows RELOAD provider to publish a set 650 of accessible and reliable hosts that SHOULD be used if RELOAD peers 651 use landmarking algorithms to determine relative position in the 652 network topology. 654 The element serves as container for the 655 sub-elements, each representing a single host that serves as a 656 landmark. The uses the following attributes: 658 address: The IP address (IPv4 or IPv6) of the landmark host. 660 port: The port on which the landmark host responds for distance 661 estimation. 663 More than one landmark hosts SHOULD be present in the configuration 664 document. 666 5. Conference State Synchronization 668 The global knowledge about signaling and media relations among the 669 conference participants and focus peers defines the global state of a 670 distributed conference. It is composed of the union of every local 671 state at the focus peers. To enable focus peers to provide 672 conference control operations that modify and/or require the global 673 state of a conference, this document defines a mechanism for inter- 674 focus state synchronization. It is based on mutual subscriptions for 675 an Event Package for Distributed Conferences and allows to preserve a 676 coherent knowledge of the global conference state. This XML based 677 event package named 'distributed-conference' MUST be supported by 678 each RELOAD peer that is registered with a DisCo-Registration. 679 Participants of a distributed conference MAY support it. To provide 680 backward compatibility to conference members that do not support the 681 distributed-conference event package, this document defines a 682 translation to the Event Package for Conference State [RFC4575]. 684 5.1. Event Package Overview 686 The 'distributed-conference' event package is designed to convey 687 information about roles and relations of the conference participants. 688 Conference controllers obtain the global state of the conference and 689 use this information for load balancing or conference restructuring 690 mechanisms in case of a focus failure. Figure Figure 5 gives a 691 general overview of the document hierarchy. 693 distributed-conference 694 | 695 |-- version-vector 696 | |-- version 697 | |-- version 698 | 699 |-- conference-description 700 | 701 |-- focus 702 | |-- focus-state 703 | | |-- user-count 704 | | |-- coordinate 705 | | |-- maximum-user-count 706 | | |-- active 707 | | |-- locked 708 | | |-- conf-uris 709 | | |-- available-media 710 | | 711 | |-- users 712 | | |-- user 713 | | | |-- endpoint 714 | | | | |-- media 715 | | | | |-- call-info 716 | | 717 | |-- relations 718 | | |-- relation 719 |-- focus 720 | |-- ... 722 Figure 5: Overview of the event package for distributed conferences 724 The document structure is designed to allow concurrent change events 725 at several focus peers. To prevent race conditions each focus peer 726 has exclusive writing permission to the 'focus' sub element that 727 describes itself. It is achieved by a unique mapping from a focus 728 peer to its XML element using the 'Element Keys' mechanisms for 729 partial notification [RFC4575](sections 4.4-5.). A focus peer is 730 only allowed to update or change that sub element, whose 731 'entity' Element Key contains its RELOAD user name. This restriction 732 also applies to the child elements of the 'version-vector' element. 733 Each 'version' number belongs to a specific focus peer maintaining 734 the version number. 736 The local state of a focus peer is described within a 'focus' 737 element. It provides general information about a focus peer and its 738 signaling and media relations to participants and focus peers. The 739 Conference participants are aggregated within 'users' elements, 740 respectively, 'user' sub elements. 742 General information about the conference as a whole, is provided 743 within a 'conference-description' element. In contrast to the 744 'focus' and 'version-vector' elements, conference description is not 745 meant for concurrent updating. Instead, it provides static 746 conference descriptions that rarely change during a multiparty 747 session. 749 More detailed descriptions about the event package and its elements 750 are provided in the following sections. The complete XML schema 751 definition is given in Section 8. 753 5.2. 755 The element is the root of a distributed 756 conference XML document. It uses the following attributes: 758 entity: This attribute contains the conference URI that identifies 759 the distributed conference. A SIP SUBSCRIBE request addressed to 760 this URI initiates an subscribe/notify relation between 761 participants and their related focus peer. 763 state: This attribute indicates whether the content of a distributed 764 conference document is a 'full', 'partial' or 'deleted' 765 information. It is in accordance with [RFC4575] to enable the 766 partial notification mechanism. 768 The child elements are , 769 and the elements. An event 770 notification of state 'full' MUST include all these elements. An 771 event notification of state 'partial' MUST contain at least and its sub elements. 774 5.3. / 776 The Event Package for Distributed Conferences uses the and its sub elements to enable a coherent 778 versioning scheme. It is based on vector clocks as defined in 779 [timestamps-acsc88]. Each element contains a unsigned 780 integer that describes the state of a specific focus peer and 781 contains the following attributes: 783 entity: This attribute contains the user name of the focus peer 784 whose local version number is described by this element. 786 node-id: This attribute contains the Node-ID of the focus peer. 788 Whenever the local status of a focus peer changes (e.g. a new 789 participant arrived) the version number of the corresponding 790 element MUST be incremented by one. Each change in the 791 local state also triggers a new event notification containing the 792 entire and the changes contained in a 793 element. 795 The recipient of a change event needs to update it local XML 796 document. If a received number is higher that the local, 797 it updates the element and its associated element 798 with the retrieved elements. All other elements remain constant. 800 If the length or contents of the retrieved is 801 different to the local copy it indicates a incoherent knowledge about 802 the entire conference state. If the retrieved 803 contains any unknown focus peers and any local version numbers for 804 the known focus peers is lower, the receiver SHOULD request a 'full' 805 XML notification. 807 If any local number is retarded more than one, the receiver 808 SHOULD request a 'full' event notification from the sender. The full 809 state notification updates all elements whose corresponding 810 element is out of date. 812 5.4. 814 The element provides general information and 815 links to auxiliary services for the conference. The following sub 816 elements provide human-readable text descriptions about the 817 conference: 819 : Contains a short textual description about the 820 conference 822 : Contains the subject of the conference 824 : Contains a longer textual description about the 825 conference 827 : Contains a list of keywords that match the conference 828 topic. The XML schema definition and semantic is imported from 829 the 'conference-info' event package [RFC4575]. 831 The sub element enables focus peers to advertise 832 auxiliary services for the conference. The XML schema definition and 833 semantic is imported from the 'conference-info' event package 834 [RFC4575]. 836 The element uses the 'state' Element Key to 837 enable the partial notification mechanism. 839 5.5. 841 Each element describes a focus peer actively controlling the 842 conference. It provides general information about a focus peer 843 (e.g., display-text, languages, etc.), contains conference specific 844 information about the state of a focus peer (user-count, available 845 media types, etc.) and announces signaling and media information 846 about the maintained participants. Additionally, it describes 847 signaling or media relations to further focus peers. 849 The element uses the following attributes: 851 entity: This attribute contains the user name of the RELOAD peer 852 acting as focus peer. It uniquely identifies the focus peer that 853 is allowed to update or change all sub elements of . All 854 other focus peers SHOULD NOT update or change sub elements of this 855 element. A SUBSCRIBE request addressed to the user name 856 initiates a conference state synchronization with the focus peer. 858 Node-ID This attributed contains the Node-ID of the peer acting as 859 conference focus 861 state: In accordance to [RFC4575], this attribute indicates whether 862 the content of the element is a 'full', 'partial' or 863 'deleted' information. A 'partial' notification contains at 864 maximum a single element. 866 The following sub elements of provide general information 867 about a focus peer: 869 : Contains a short text description of the user acting 870 as focus peer. 872 : This element contains additional URIs that are 873 associated with this user. 875 This element MAY contain human-readable text descriptions 876 about the roles of the user in the conference. 878 : This element contains a list of tokens, each describing 879 a language understood by the user. 881 The XML schema definition and semantic for , 882 and are imported from the 'conference-info' event package 883 [RFC4575] 885 Following, a detailed description of the remaining sub elements. 887 5.5.1. 889 The element aggregates a set of conference specific 890 information about the RELOAD user acting as focus peer. The 891 following attribute is defined for the element: 893 status: This attribute indicates whether the content of the element is a 'full', 'partial' or 'deleted' information. 896 The element has the following sub elements: 898 : This element contains the number of participants that 899 are connected to the conference via this focus peer at a certain 900 moment. 902 This element contains the coordinate value Section 4.2 903 of the focus peer 905 : This number indicates a threshold of 906 participants a focus peer is able to serve. This value might 907 change during a conference, depending on the focus peers current 908 load. 910 : This element MAY contain other conference URIs in order 911 to access the conference via different signaling means. The XML 912 schema definition and semantic is imported from [RFC4575]. 914 : This element is imports the type XML scheme definitions from [RFC4575]. It allows a 916 focus peer to list its available media streams. 918 : This boolean element indicates whether a focus peer is 919 currently active. Conference participation requests or a call 920 delegation request SHOULD succeed. 922 : In contrast to , this element indicates that a 923 focus peer is not willing to accept anymore participation or call 924 delegation request. 926 5.5.2. / 928 The , respectively, each element describes a single 929 participant that is maintained by the focus peer described by the 930 parent element. The element XML schema definition 931 and its semantic is imported from the 'conference-info' event package 932 [RFC4575]. 934 5.5.3. / 936 The element serves as container for elements, 937 each describing a specific connection to another focus peer. The 938 parent element uses the 'state' attribute to enable the 939 partial notification mechanism. For the element the 940 following attributes are defined: 942 entity: This attribute contains the user name of the remote focus. 944 node-id This attribute contains the Node-ID of the remote focus 945 peer. 947 The content of each is a comma separated string that 948 describes the tuple . The CONNECTION- 949 TYPE is a string token describing the type of connection (e.g. media, 950 signaling, etc.) and the IDENTIFIER contains a variable connection 951 identifier. It is a generic method to announce any kind of 952 connection to a remote focus. This specification defines following 953 tuples: 955 media: