Network Working Group                                            Bormann
Internet-Draft                                                  Kutscher
Expires: August 14, 2001                                             Ott
                                                TZI, Universitaet Bremen
                                                                 Trossen
                                                   Nokia Research Center
                                                       February 13, 2001


      Simple Conference Control Protocol -- Service Specification
                     draft-ietf-mmusic-sccp-01.txt

Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that
   other groups may also distribute working documents as
   Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other documents
   at any time. It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   To view the entire list of Internet-Draft Shadow Directories, see
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on August 14, 2001.

Copyright Notice

   Copyright (C) The Internet Society (2001). All Rights Reserved.

Abstract

   This document defines the services for a simple conference control
   protocol (SCCP) to be used for tightly coupled conferences. It is
   part of the Internet Multimedia Conferencing Architecture, proposed
   in [1].

   The SCCP services provide functionality for management of the set of
   members, management of the set of application/media sessions, and
   for floor control to implement access control rules for distributed
   application resources.

   Note that this document does not specify how to implement the
   proposed services. For that, different mappings are specified based


Bormann, et. al.        Expires August 14, 2001                 [Page 1]


Internet-Draft               sccp-services                 February 2001


   on different transport layer techniques.

   This document is a product of the Multiparty Multimedia Session
   Control (MMUSIC) working group of the Internet Engineering Task
   Force.  Comments are solicited and should be addressed to the
   working group's mailing list at confctrl@isi.edu and/or the authors.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  3
   1.2 SCCP and Conference Setup  . . . . . . . . . . . . . . . . . .  3
   1.3 SCCP and Capability Negotiation  . . . . . . . . . . . . . . .  4
   2.  Definition of Terms  . . . . . . . . . . . . . . . . . . . . .  5
   3.  Services of SCCP . . . . . . . . . . . . . . . . . . . . . . .  7
   3.1 Conference Management  . . . . . . . . . . . . . . . . . . . .  7
   3.2 Application Session Management . . . . . . . . . . . . . . . .  7
   3.3 Floor Control  . . . . . . . . . . . . . . . . . . . . . . . .  8
   4.  Requirements for Mappings onto underlying Transports . . . . . 10
   5.  A Model for Configuration and Capability Negotiation . . . . . 11
   6.  SDP considerations . . . . . . . . . . . . . . . . . . . . . . 14
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 15
       References . . . . . . . . . . . . . . . . . . . . . . . . . . 16
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 16
   A.  Message Formats  . . . . . . . . . . . . . . . . . . . . . . . 18
       Full Copyright Statement . . . . . . . . . . . . . . . . . . . 24

























Bormann, et. al.        Expires August 14, 2001                 [Page 2]


Internet-Draft               sccp-services                 February 2001


1. Introduction

1.1 Overview

   The Internet Multimedia Conferencing Architecture [1] currently
   comprises conference control elements only for loosely coupled
   conferences, i.e., "crowds that gather around an attraction".
   However, many conferences have more formal policies with respect to
   the underlying "social protocol" of the specific scenario. Also, it
   may be desirable to change parameters of the conference, e.g., set
   of media/applications and their parameters, in a coordinated way for
   all participants. Conferences that have facilities for this purpose
   shall be termed "tightly coupled conferences" in this document.

   This document defines services for simple conference control of
   tightly coupled conferences. The services provided by this protocol
   were guided by the services offered by the ITU-T recommendations of
   the H.323 series [7], namely:

   o  management of the set of members participating in the conference;

   o  management of the set of media/application sessions that
      constitute the conference; and

   o  floor control, which especially enables "conducted" conferences
      or implementation of arbitrary access control on distributed
      resources.

   Note that this document specifies only the services to be provided
   but not the protocol mechanisms to be used for implementation. The
   latter are to be specified by different "mapping drafts" for
   specific transport layer techniques.

1.2 SCCP and Conference Setup

   The Internet Multimedia Conferencing Architecture described in [1]
   provides a categorization of conference management concepts and
   corresponding technologies. The domain of conference management is
   divided into conference setup (including conference discovery) and
   conference course control.

   While conference setup mechanisms, such as SIP [2], provide means to
   distribute a proper initial state to the involved end systems, the
   purpose of a conference course control protocol like SCCP is to
   manage a state during the lifetime of a conference.

   However, in cases where conferences are set up with SIP, the state
   managed by SCCP would incorporate the initial conference state. This
   initial state usually includes configuration of media sessions, that


Bormann, et. al.        Expires August 14, 2001                 [Page 3]


Internet-Draft               sccp-services                 February 2001


   might result from negotiation processes. One element of the initial
   configuration of SCCP-enabled conference will be the configuration
   of the SCCP channel and transport mapping-specific information.

   While we clearly distinguish between the roles of conference setup
   and conference course control there is a strong relation between
   these two forms of conference control and it is therefore desirable
   to define a way how to emerge an initial conference state (setup and
   distributed with SIP, SAP, or by other means) into an SCCP-state.

1.3 SCCP and Capability Negotiation

   The configuration information of application sessions in the setup
   protocols SIP and SAP [3] is specified in a session description, in
   the moment this is often an SDP [4] description.

   Because SDP addresses the description of conferences only, a new
   conference description framework is currently being defined ([6]).
   This work does not only address the issue of describing sessions but
   also the issue of capability negotiation.

   In Section 3.2 capability (re-)negotiation is listed as one of the
   functionalities provided by SCCP for application session management.
   Section 5 presents a model for configuration and capability
   negotiation that is currently pursued by [6]. The refinement of the
   SCCP services in future versions of this document will consider this
   model.
























Bormann, et. al.        Expires August 14, 2001                 [Page 4]


Internet-Draft               sccp-services                 February 2001


2. Definition of Terms

   Participant: A human being that takes part in a conference.

   Member: The system, including software and hardware, that takes part
      in a computer conference, representing a single participant.

   End system: A host or a set of locally interconnected hosts [1] that
      is used as an interface to a teleconference by a single
      participant. The end system runs all the required conferencing
      software. Together with this software it constitutes a member.

   SCCP entity: An instantiation of an SCCP implementation running on
      an end system for a single member. An SCCP entity (or entity for
      short) represents a specific participant in the conference using
      the SCCP protocol.

   Conference controller: An application that interacts closely with an
      SCCP entity on one hand to implement the conference policy and
      with the participant on the other hand to realize her wishes.

   UCI: A universal communication identifier of a person.  Used as the
      E-mail address of an individual as well as the address that can
      be used to invite that individual via SIP [2].

   Presence: A representation of the fact that an identified person is
      using a particular end system for the purpose of (potentially or
      actually) representing this person in one or more conferences. A
      presence corresponds to that person "being logged in" at an end
      system and (potentially or actually) being available for
      conferencing.  There is a one-to-many relationship between
      presences and members: one presence may be member of many
      conferences.  There is a one-to-one relationship between members
      and the cross-product of presences and the set of conferences
      this presence appears in (which cross-product contains the set of
      "appearances" of each presence).

   Conference context: All session and membership information kept at
      each member of a conference which can be accessed by each SCCP
      entity through appropriate service requests.

   Profile: An initial description of the conference, including
      assignment of roles to particular members, time limits for
      speakers, attributes of the conference (open/close,
      conducted/anarchic, etc).

   Application session (AS), Session: The set of media
      agents/applications that act as peers to each other within a
      conference.  For real-time data, this generally will be an RTP


Bormann, et. al.        Expires August 14, 2001                 [Page 5]


Internet-Draft               sccp-services                 February 2001


      session; for other application protocols, other horizontal
      protocols may define their own type of session concept. Possible
      synonyms are "application group" or "media agent group".

   Floor context: State information about floors which can be accessed
      by each SCCP entity through appropriate service requests.













































Bormann, et. al.        Expires August 14, 2001                 [Page 6]


Internet-Draft               sccp-services                 February 2001


3. Services of SCCP

   This section describes the services provided by SCCP and realized by
   appropriate protocol mechanisms. Note that the latter is not within
   the scope of this document.

3.1 Conference Management

   SCCP is responsible for managing a conference context containing
   membership information of all current conference participants. The
   following operations are possible in the context of SCCP conference
   management:

   invite other users: SCCP users may invite other users to participate
      in the current SCCP conference.

   join the conference: SCCP provides to dynamically join a running
      conference. The conference context is updated appropriately.

   leave the conference: SCCP also provides to dynamically leave a
      conference without disturbance. The conference context is updated
      appropriately.

   terminate the conference: in the case of a "conducted" conference, a
      running conference may be terminated by the conductor resulting
      in a destruction of the entire conference.

   obtain conference context: maintain the information stored in the
      conference context.

   For sake of simplicity, SCCP does not provide more sophisticated
   features like merging, appending, or splitting entire conferences.

3.2 Application Session Management

   SCCP provides functionality to manage a set of media/application
   sessions that constitute the conference, e.g., for real-time data
   this will be an RTP session [5].

   Each media/application set is maintained in the conference context.
   Hence, its parameters can be obtained using appropriate conference
   context functions. However, it is also possible to create
   application sessions without registering them in the conference
   context due to scalability reasons.

   Hence, SCCP offers the following application session management
   functions:

   negotiating and changing the configuration of application sessions:


Bormann, et. al.        Expires August 14, 2001                 [Page 7]


Internet-Draft               sccp-services                 February 2001


      allows to find an appropriate configuration of one or more
      application sessions. Different policies for different types of
      conferences and different requirements for different media types
      have to be considered (symmetric vs. asymmetric configurations,
      equal rights for participants or not etc.) The negotiation and
      changing of the configuration can be applied on existing
      application sessions (re-negotiation) or on newly created
      application sessions. See Section 5 for the description of a
      model for configuration and capability negotiation.

   creating application sessions: defines a media/application set being
      identified by a unique identifier within the conference.  The
      allowance to create application sessions depends on the
      conference policy, e.g., in a conducted conference only the
      conductor is allowed to create application sessions. The members
      of the application session are stored in the appropriate
      application session context entry.

   terminating application sessions: an SCCP entity (as permitted in
      the conference profile) deletes an application session. The
      conference context is updated and the termination is signaled to
      the appropriate local application(s).

   joining application sessions: an SCCP entity starts the application
      which then joins the SCCP application session. The conference
      context is updated appropriately by adding the application as a
      peer in the media/application set.

   leaving application sessions: an SCCP entity terminates the local
      application and leave the SCCP application session. The
      conference context is updated appropriately.

   inexact application sessions: For large conferences, it may make
      sense to mark an application session as "inexact", i.e., no join
      or leave messages are to be distributed. This may also be useful
      in case that application protocols are able to maintain
      membership information by themselves.

3.3 Floor Control

   SCCP provides floor control facilities to support application state
   synchronization. Additionally, conductorship of conferences is also
   realized using the floor control functionality.

   Hence, SCCP supports to map "social protocols", i.e., the rules to
   access application objects like audiovisual streams, onto
   distributed systems. However, the mapping of floors onto application
   semantics is not within the scope of SCCP.



Bormann, et. al.        Expires August 14, 2001                 [Page 8]


Internet-Draft               sccp-services                 February 2001


   Each floor within SCCP is identified using a conference-unique name.
   The naming pattern is not within the scope of SCCP.

   Hence, SCCP provides the following floor control services:

   grab floor: allocates a floor for exclusive use by the requesting
      participant

   inhibit floor: allocates a floor for non-exclusive use by several
      participants

   release floor: releases a previously allocated floor; the state of
      the floor is changed accordingly

   test floor: ask for the current state (F_FREE, F_GRABBED,
      F_INHIBITTED) of the floor

   ask floor: ask the current floor holder to grant an exclusive floor
      to the requesting SCCP entity

   give floor: grant an exclusive floor to another participant

   holders of floor: ask for a list of current floor holders

   It can be seen that the provided floor control service is very
   similar to the T.122 services [8] of the H.323 standard. However,
   requesting the current floor holder list is not supported by the
   T.122 standard.























Bormann, et. al.        Expires August 14, 2001                 [Page 9]


Internet-Draft               sccp-services                 February 2001


4. Requirements for Mappings onto underlying Transports

      As previously mentioned in the introduction, this draft does not
      specify the mappings onto different transport layer mechanisms.
      However, some basic functionality is assumed by the underlying
      transport to provide.

      The requirements for transport mappings are:

      Reliable message transport: Transport layer services are assumed
         to provide reliable, consistent delivery of data units called
         "messages". Reliability is bounded by the fact that member end
         systems may find that they no longer can reliably interact
         with the other members, e.g., due to a network partitioning.
         When considering unicast transfer of messages, a "connection
         failure indication" is mandatory to be delivered to the SCCP
         layer.

      Globally ordered message delivery: Messages are globally ordered.
         Each message is assigned a message number by the appropriate
         transport service, and messages are delivered to SCCP entities
         in monotonic message number order. In the rest of this
         document, the term "distribute" will be used to indicate that
         a member end system sends a message using the transport
         service.


























Bormann, et. al.        Expires August 14, 2001                [Page 10]


Internet-Draft               sccp-services                 February 2001


5. A Model for Configuration and Capability Negotiation

   This section provides a model for configuration and capability
   negotiation adopted from [6].

   In this document, the features enabled and restricted by fixed
   hardware and software resources of end systems are termed "system
   capabilities". For example, the capability to process (or generate)
   audio data of a given codec format is one of the system capabilities
   of an audio conferencing system.

   In multiparty multimedia conferences, participants employ different
   "components" in conducting the conference.

      Example: In lecture multicast conferences one component might be
      the voice transmission for the lecturer, another the transmission
      of video pictures showing the lecturer and the third the
      transmission of presentation material.

   Depending on system capabilities, user preferences and other
   technical and political constraints, different configurations can be
   chosen to accomplish the "deployment" of these components.

   Each component can be characterized at least by (a) its intended use
   (i.e., the function it shall provide) and (b) a one or more possible
   ways to realize this function.  Each way of realizing a particular
   function is referred to as a "configuration".

      Example: A conference component's intended use may be to make
      transparencies of a presentation visible to the audience on the
      Mbone.  This can be achieved either by a video camera capturing
      the image and transmitting a video stream via some video tool or
      by loading a copy of the slides into a distributed electronic
      whiteboard.  For each of these cases, additional parameters may
      exist, variations of which lead to additional configurations (see
      below).

   Two configurations are considered different regardless of whether
   they employ entirely different mechanisms and protocols (as in the
   previous example) or they choose the same and differ only in a
   single parameter.

      Example: In case of video transmission, a JPEG-based still image
      protocol may be used, H.261 encoded CIF images could be sent as
      could H.261 encoded QCIF images. All three cases constitute
      different configurations. Of course there are many more detailed
      protocol parameters.

   In this system model, we distinguish two types of configurations:


Bormann, et. al.        Expires August 14, 2001                [Page 11]


Internet-Draft               sccp-services                 February 2001


   o  potential configurations
      (a set of any number of configurations per component) indicating
      a system's functional capabilities as constrained by the intended
      use of the various components;

   o  actual configurations
      (exactly one per instance of a component) reflecting the mode of
      operation of this component's particular instantiation.

      Example: The potential configuration of the aforementioned video
      component may indicate support for JPEG, H.261/CIF, and
      H.261/QCIF.  A particular instantiation for a video conference
      may use the actual configuration of H.261/CIF for exchanging
      video streams.

   In summary, the key terms of this model are:

   o  A multimedia session (streaming or conference) consists of one or
      more conference components for multimedia "interaction".

   o  A component describes a particular type of interaction (e.g.,
      audio conversation, slide presentation) that can be realized by
      means of different applications (possibly using different
      protocols).

   o  A configuration is a set of parameters that are required to
      implement a certain variation (realization) of a certain
      component. There are actual and potential configurations.

      *  Potential configurations describe possible configurations that
         are supported by an end system.

      *  An actual configuration is an "instantiation" of one of the
         potential configurations, i.e. a decision how to realize a
         certain component.

      In less abstract words, potential configurations describe what a
      system can do ("capabilities") and actual configurations describe
      how a system is configured to operate at a certain point in time
      (media stream spec).

   To decide on a certain actual configuration, a negotiation process
   needs to take place between the involved peers:

   1.  to determine which potential configuration(s) they have in
       common, and

   2.  to select one of this shared set of common potential
       configurations to be used for information exchange (e.g., based
       upon preferences, external constraints, etc.).


Bormann, et. al.        Expires August 14, 2001                [Page 12]


Internet-Draft               sccp-services                 February 2001


   In SAP [3]-based session announcements on the Mbone, for which SDP
   was originally developed, the negotiation procedure is non-existent.
   Instead, the announcement contains the media stream description sent
   out (i.e., the actual configurations) which implicitly describe what
   a receiver must understand to participate.

   In point-to-point scenarios, the negotiation procedure is typically
   carried out implicitly: each party informs the other about what it
   can receive and the respective sender chooses from this set a
   configuration that it can transmit.

   Capability negotiation must not only work for 2-party conferences
   but is also required for multi-party conferences. Especially for the
   latter case it is required that the process of determining the
   subset of allowable potential configurations is deterministic to
   reduce the number of required round trips before a session can be
   established.


































Bormann, et. al.        Expires August 14, 2001                [Page 13]


Internet-Draft               sccp-services                 February 2001


6. SDP considerations

   This section defines how to describe conferences that make use of
   SCCP with SDP. Note the transport mappings for SCCP will require
   additional parameters to be configured and thus provide extensions
   to the SDP conventions presented here.

   Usage of SCCP MUST be described in separate media description, where
   the media type of an SCCP media description is "control", i.e. the
   first sub-field of the m= line of the SCCP description has the value
   "control".

   As specified in [4] the second sub-field is the transport port to
   which the media stream will be sent. In this case it is RECOMMENDED
   that for transport mappings where the concept of a transport port
   number is applicable the value of this field is interpreted as a
   port number. Even if this is not the case the second sub-field MUST
   contain a decimal number in the range 1024 to 65535 inclusive. If
   the transport mapping requires a range of port numbers to be
   specified the first port number MUST be followed by a "/" and the
   number of ports as a decimal number (as specified in [4]).

   The third sub-field specifies the transport protocol. The first
   portion of the value MUST be set to "SCCP" followed by "/" and an
   identifier for the SCCP transport mechanism (to be defined in
   corresponding transport mapping specifications).

   In SDP, the fourth sub-field is used to specify media formats as RTP
   payload types. For SCCP, the value "0" MUST be used.

   Additional attributes that might be defined in "a=" lines are yet to
   be defined (or specified by transport mapping specifications.)

   Example of an SCCP description in SDP:

            m=control 30000 SCCP/XY 0















Bormann, et. al.        Expires August 14, 2001                [Page 14]


Internet-Draft               sccp-services                 February 2001


7. Security Considerations

   The authentication and encryption model for SCCP will be defined in
   a future version of this document.















































Bormann, et. al.        Expires August 14, 2001                [Page 15]


Internet-Draft               sccp-services                 February 2001


References

   [1]  Handley, M., Crowcroft, J., Bormann, C. and J. Ott, "The
        Internet Multimedia Conferencing Architecture", Internet Draft
        draft-ietf-mmusic-confarch-03.txt, July 2000.

   [2]  Handley, , Schulzrinne, H., Schooler,  and  Rosenberg, "SIP:
        Session Initiation Protocol", Internet Draft
        draft-ietf-sip-rfc2543bis-02.txt, November 2000.

   [3]  Handley, M., Perkins, C. and E. Whelan, "Session Announcement
        Protocol", RFC 2974, October 2000.

   [4]  Handley, M. and V. Jacobsen, "SDP: Session Description
        Protocol", RFC 2327, April 1998.

   [5]  Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobsen,
        "RTP: A Transport Protocol for Real-Time Applications", RFC
        1889, January 1996.

   [6]  Kutscher, , Ott,  and  Bormann, "Requirements for Session
        Description and Capability Negotiation", Internet Draft
        draft-kutscher-mmusic-sdpng-req-01.txt, November 2000.

   [7]  ITU-T, "Visual Telephone Systems and Equipment for Local Area
        Networks with Non-Guaranteed Quality of Service", ITU-T
        Recommendation H.323, 2000.

   [8]  ITU-T, "Multipoint communication service - Service definition",
        ITU-T Recommendation T.122, February 1998.

Authors' Addresses

   Carsten Bormann
   TZI, Universitaet Bremen
   Bibliothekstr. 1
   Bremen  28359
   Germany

   Phone: +49.421.218-7024
   Fax:   +49.421.218-7000
   EMail: cabo@tzi.org









Bormann, et. al.        Expires August 14, 2001                [Page 16]


Internet-Draft               sccp-services                 February 2001


   Dirk Kutscher
   TZI, Universitaet Bremen
   Bibliothekstr. 1
   Bremen  28359
   Germany

   Phone: +49.421.218-7595
   Fax:   +49.421.218-7000
   EMail: dku@tzi.org

   Joerg Ott
   TZI, Universitaet Bremen
   Bibliothekstr. 1
   Bremen  28359
   Germany

   Phone: +49.421.201-7028
   Fax:   +49.421.218-7000
   EMail: jo@tzi.org

   Dirk Trossen
   Nokia Research Center
   5 Wayside Road
   Burlington, MA  01803
   USA

   Phone: +1.781.993-3605
   Fax:   +1.781.993-1907
   EMail: dirk.trossen@nokia.com






















Bormann, et. al.        Expires August 14, 2001                [Page 17]


Internet-Draft               sccp-services                 February 2001


Appendix A. Message Formats

   Note that this XDR-like specification does not imply any particular
   type of encoding of the PDUs. The encoding may be defined
   independently, or RFC 1832 encoding may be used.

   /* basic type definitions */
   typedef string    SCCP_Name<>;
   typedef opaque    SCCP_Value<>;
   typedef SCCP_Name SCCP_Namelist<>;
   typedef integer       SCCP_Sync;

   /* Status of a floor to be given back with most requests */
   enum SCCP_Status {
        F_FREE,
        F_GRABBED,
        F_INHIBITED,
        F_GIVING
   };
   /* Flag of an application session (see also section 3.2) */
   enum SCCP_AS_Flag {
                AS_EXACT,
                AS_INEXACT
   };
   /* Error for requests, currently only for floor control */
   enum SCCP_Error {
                SCCP_E_GRABBED,            /* floor grabbed */
                SCCP_E_INHIBITED,                  /* floor inhibited */
                SCCP_E_FREE                        /* floor free */
   };

   /* SCCP_AS is the application session in the conference context
   * Name:     identifies the application session
   * flag:     exact or inexact session description
   * value:    reflects upper layer semantic
   * namelist: list of media/application sets
   */
   struct SCCP_AS {
          SCCP_Name     name;
          SCCP_AS_Flag  flag;
          SCCP_Value    value;          /* upper layer semantics */
          SCCP_NameList namelist;
   };

   /* SCCP_Member is the member entry in the conference context
   * presence: presence information of the member
   */
   struct SCCP_Member {
                SCCP_Name   presence;


Bormann, et. al.        Expires August 14, 2001                [Page 18]


Internet-Draft               sccp-services                 February 2001


   };

   /* SCCP_Floor is the core entry in the floor context
   * Name:    identifies the floor
   * status:  status of floor
   * Holders: list of floor holders for inhibited floor
   * mapping_data: implementation-dependent data to be stored for
    administration purpose
   */
   struct SCCP_Floor {
          SCCP_Name       name;
                SCCP_Status     status;
   SCCP_NameList   Holders;
   SCCP_Value    mapping_data;
   };

   /* SCCP_Conference_Context contains list of
       * - members
       * - sessions
   */
   struct SCCP_Conference_Context {
          SCCP_Member members<>;
          SCCP_AS     sessions<>;
   };

   /* SCCP_Floor_Context contains list of floors to be maintained
    depending on the chosen mapping for realization
   */
   struct SCCP_Floor_Context {
                SCCP_Floor floors<>;
   };

   enum SCCP_Type {
          SCCP_T_JOIN,                /* join conference */
          SCCP_T_LEAVE,               /* leave conference */
          SCCP_T_ACCEPT,              /* accept joining member */
          SCCP_T_CONTEXT,             /* context */

          SCCP_T_ASCREATE,            /* create application session */
          SCCP_T_ASDELETE,            /* delete application session */
          SCCP_T_ASJOIN,              /* join application session */
          SCCP_T_ASLEAVE,             /* leave application session */

   SCCP_T_FLOOR_GRAB,          /* grab floor */
   SCCP_T_FLOOR_INHIBIT,       /* inhibit floor */
   SCCP_T_FLOOR_RELEASE,       /* release floor */
   SCCP_T_FLOOR_TEST,          /* test floor */
   SCCP_T_FLOOR_ASK,           /* ask for floor */
   SCCP_T_FLOOR_GIVE,          /* give floor to other user */


Bormann, et. al.        Expires August 14, 2001                [Page 19]


Internet-Draft               sccp-services                 February 2001


   SCCP_T_FLOOR_GIVEN,         /* indication to originator */
   SCCP_T_FLOOR_HOLDER,        /* ask for floor holder list */
   SCCP_T_FLOOR_HOLDER_ASK,    /* collect floor holder list */
   SCCP_T_FLOOR_HOLDER_LIST,   /* indicate floor holder list */
   SCCP_T_FLOOR_STATUS,        /* indicate floor status */
   SCCP_T_FLOOR_ERROR,             /* floor control error */

          SCCP_T_INVALID              /* last sccp pdu type */
   };

   struct SCCP_Join {
          SCCP_Name     presence;       /* joining member */
          SCCP_Flags    flags;          /* precept etc. */
          SCCP_Value    value;          /* user data */
   };

   struct SCCP_Accept {
          SCCP_Name     presence;       /* joining member */
   };

   struct SCCP_Leave {
          SCCP_Name     presence;       /* joining member */
   };

   struct SCCP_Context_Msg {
          SCCP_Conference_Context  context;
          SCCP_Sync     sync;
   };

   struct SCCP_AS_Create {
                SCCP_Name     name;
                SCCP_Value    value;
                SCCP_Namelist names;
   };

   struct SCCP_AS_Delete {
                SCCP_Name     name;
   };

   struct SCCP_AS_Join {
                SCCP_Name     name;
                SCCP_Name     entry;
   };

   struct SCCP_AS_Leave {
                SCCP_Name     name;
                SCCP_Name     entry;
   };



Bormann, et. al.        Expires August 14, 2001                [Page 20]


Internet-Draft               sccp-services                 February 2001


   struct SCCP_Floor_Grab {
                SCCP_Name presence;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Inhibit {
                SCCP_Name presence;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Release {
                SCCP_Name presence;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Test {
                SCCP_Name presence;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Ask {
                SCCP_Name presence;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Give {
                SCCP_Name presence_given;
                SCCP_Name presence_giving;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Given {
                SCCP_Name presence_given;
                SCCP_Name presence_giving;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Holder {
                SCCP_Name presence;
                SCCP_Name floor;
   };

   struct SCCP_Floor_Holder_Ask {
                SCCP_Name presence;
                SCCP_Name floor;
                SCCP_NameList floor_holders;
   };

   struct SCCP_Floor_Holder_List {


Bormann, et. al.        Expires August 14, 2001                [Page 21]


Internet-Draft               sccp-services                 February 2001


                SCCP_Name presence;
                SCCP_Name floor;
                SCCP_NameList floor_holders;
   };

   struct SCCP_Floor_Status {
                SCCP_Object floor;
   };

   struct SCCP_Floor_Error {
                SCCP_Name presence;
                SCCP_Name floor;
                SCCP_Error error;
   };

   union SCCP_Union switch (SCCP_Type type) {

      case SCCP_T_JOIN:
          SCCP_Join           JOIN;
      case SCCP_T_ACCEPT:
          SCCP_Accept         ACCEPT;
      case SCCP_T_LEAVE:
          SCCP_Leave          LEAVE;
      case SCCP_T_CONTEXT:
          SCCP_Context_Msg    CONTEXT;

      case SCCP_T_ASCREATE:
          SCCP_AS_Create      AS_CREATE;
      case SCCP_T_ASDELETE:
          SCCP_AS_Delete      AS_DELETE;
      case SCCP_T_ASJOIN:
          SCCP_AS_Join        AS_JOIN; /* member, session */
      case SCCP_T_ASLEAVE:
          SCCP_AS_Leave       AS_LEAVE; /* member, session */

      case SCCP_T_FLOOR_GRAB:
          SCCP_Floor_Grab     FLOOR_GRAB;
      case SCCP_T_FLOOR_INHIBIT:
          SCCP_Floor_Inhibit  FLOOR_INHIBIT;
      case SCCP_T_FLOOR_RELEASE:
          SCCP_Floor_Release  FLOOR_RELEASE;
      case SCCP_T_FLOOR_TEST:
          SCCP_Floor_Test     FLOOR_TEST;
      case SCCP_T_FLOOR_ASK:
          SCCP_Floor_Ask      FLOOR_ASK;
      case SCCP_T_FLOOR_GIVE:
          SCCP_Floor_Give     FLOOR_GIVE;
     case SCCP_T_FLOOR_GIVEN:
          SCCP_Floor_Given    FLOOR_GIVEN;


Bormann, et. al.        Expires August 14, 2001                [Page 22]


Internet-Draft               sccp-services                 February 2001


      case SCCP_T_FLOOR_HOLDER:
          SCCP_Floor_Holder   FLOOR_HOLDER;
      case SCCP_T_FLOOR_HOLDER_ASK:
          SCCP_Floor_Holder_Ask  FLOOR_HOLDER_ASK;
      case SCCP_T_FLOOR_HOLDER_LIST:
          SCCP_Floor_Holder_List FLOOR_HOLDER_LIST;
      case SCCP_T_FLOOR_STATUS:
          SCCP_Floor_Status   FLOOR_STATUS;
      case SCCP_T_FLOOR_ERROR:
          SCCP_Floor_Error    FLOOR_ERROR;
   };

   struct SCCP_Message {
          SCCP_Header         hdr;
          SCCP_Union          sccp_un<>;
   };



































Bormann, et. al.        Expires August 14, 2001                [Page 23]


Internet-Draft               sccp-services                 February 2001


Full Copyright Statement

   Copyright (C) The Internet Society (2001). All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implmentation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph
   are included on all such copies and derivative works. However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS 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.

Acknowledgement

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



















Bormann, et. al.        Expires August 14, 2001                [Page 24]