home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_j_p / draft-ietf-mmusic-sdp-04.txt < prev    next >
Text File  |  1997-09-09  |  64KB  |  1,963 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. Internet Engineering Task Force                      MMUSIC WG
  9. INTERNET-DRAFT                      Mark Handley/Van Jacobson
  10. draft-ietf-mmusic-sdp-04.ps                       ISI/LBNL
  11.                                   2nd Sept 1997
  12.                               Expires: 2nd Apr 1997
  13.  
  14.  
  15.            SDP:    Session    Description Protocol
  16.  
  17.  
  18.  
  19. Status of this Memo
  20.  
  21. This document is an Internet-Draft.  Internet-Drafts are  working  docu-
  22. ments  of the Internet Engineering Task    Force (IETF), its areas, and its
  23. working    groups.     Note that other  groups  may  also  distribute     working
  24. documents as Internet-Drafts.
  25.  
  26. Internet-Drafts    are draft documents valid for a    maximum     of  six  months
  27. and  may  be  updated,    replaced, or obsoleted by other    documents at any
  28. time.  It is inappropriate to use Internet-Drafts as reference    material
  29. or to cite them    other than as ``work in    progress.''
  30.  
  31. To learn the current status of    any  Internet-Draft,  please  check  the
  32. ``1id-abstracts.txt''  listing    contained  in the Internet-Drafts Shadow
  33. Directories   on   ftp.is.co.za      (Africa),   nic.nordu.net    (Europe),
  34. munnari.oz.au    (Pacific  Rim),     ds.internic.net  (US  East  Coast),  or
  35. ftp.isi.edu (US    West Coast).
  36.  
  37. Distribution of    this document is unlimited.
  38.  
  39.  
  40.                 Abstract
  41.  
  42.  
  43.      This document defines the Session Description  Protocol,  SDP.
  44.      SDP  is  intended    for  describing    multimedia sessions for    the
  45.      purposes of  session  announcement,  session  invitation,    and
  46.      other forms of multimedia session initiation.
  47.  
  48.  
  49. This document is a product of the Multiparty Multimedia    Session     Control
  50. (MMUSIC) working group of the Internet Engineering Task    Force.    Comments
  51. are solicited and should be addressed to  the  working    group's     mailing
  52. list at    confctrl@isi.edu and/or    the authors.
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Handley/Jacobson                            [Page 1]
  59.  
  60. INTERNET-DRAFT                           2nd Sept 1997
  61.  
  62.  
  63. 1.  Introduction
  64.  
  65. On the Internet    multicast backbone (Mbone), a session directory    tool  is
  66. used  to advertise multimedia conferences and communicate the conference
  67. addresses and conference tool-specific information necessary for  parti-
  68. cipation.  This    document defines a session description protocol    for this
  69. purpose, and for general real-time multimedia session  description  pur-
  70. poses.    This draft does    not describe multicast address allocation or the
  71. distribution of    SDP messages in    detail.     These are described  in  accom-
  72. panying     drafts.   SDP    is not intended    for negotitation of media encod-
  73. ings.
  74.  
  75. 2.  Background
  76.  
  77. The Mbone is the part of the internet that supports  IP     multicast,  and
  78. thus  permits  efficient  many-to-many communication.  It is used exten-
  79. sively for multimedia conferencing.  Such conferences usually  have  the
  80. property  that tight coordination of conference    membership is not neces-
  81. sary; to receive a conference, a user at an Mbone site only has    to  know
  82. the  conference's  multicast  group  address  and  the UDP ports for the
  83. conference data    streams.
  84.  
  85. Session    directories assist the advertisement of    conference sessions  and
  86. communicate  the  relevant  conference    setup information to prospective
  87. participants.  SDP is designed to convey such information to recipients.
  88. SDP  is     purely    a format for session description - it does not incorpor-
  89. tate a transport protocol, and is intended to  use  different  transport
  90. protocols  as  appropriate  including  the Session Announcement    Protocol
  91. [4], Session Inititation Protocol  [11],  Real-Time  Streaming    Protocol
  92. [12], electronic mail using the    MIME extensions, and the Hypertext Tran-
  93. sport Protocol.
  94.  
  95. SDP is intended    to be general purpose so that it can be    used for a wider
  96. range  of network environments and applications    than just multicast ses-
  97. sion directories.  However, it is not intended to support negotiation of
  98. session    content    or media encodings - this is viewed as outside the scope
  99. of session description.
  100.  
  101.  
  102. 3.  Glossary of    Terms
  103.  
  104. The following terms are    used in    this document, and have    specific meaning
  105. within the context of this document.
  106.  
  107. Conference
  108.     A multimedia conference is a set of    two or more communicating  users
  109.     along with the software they are using to communicate.
  110.  
  111.  
  112.  
  113.  
  114. Handley/Jacobson                            [Page 2]
  115.  
  116. INTERNET-DRAFT                           2nd Sept 1997
  117.  
  118.  
  119. Session
  120.     A multimedia session is a set of multimedia     senders  and  receivers
  121.     and     the  data  streams  flowing  from senders to receivers.  A mul-
  122.     timedia conference is an example of    a multimedia session.
  123.  
  124. Session    Advertisement
  125.     See    session    announcement.
  126.  
  127. Session    Announcement
  128.     A session announcement is a    mechanism by which a session description
  129.     is    conveyed  to  users  in     a pro-active fashion, i.e., the session
  130.     description    was not    explicitly requested by    the user.
  131.  
  132. Session    Description
  133.     A well defined format for conveying    sufficient information    to  dis-
  134.     cover and participate in a multimedia session.
  135.  
  136. 4.  SDP    Usage
  137.  
  138. 4.1.  Multicast    Announcements
  139.  
  140. SDP is a session description protocol for multimedia sessions.    A common
  141. mode  of  usage     is  for  a  client  to    announce a conference session by
  142. periodically multicasting an announcement packet to a well known  multi-
  143. cast address and port using the    Session    Announcement Protocol (SAP).
  144.  
  145. SAP packets are    UDP packets with the following format:
  146.  
  147.      0             31
  148.      |--------------------|
  149.      | SAP header          |
  150.      |--------------------|
  151.      | text    payload          |
  152.      |//////////
  153.  
  154.  
  155. The  header  is     the  Session  Announcement  Protocol  header.     SAP  is
  156. described in more detail in a companion    draft [4]
  157.  
  158. The text payload is an SDP session description,     as  described    in  this
  159. draft.     The  text  payload should be no greater than 1    Kbyte in length.
  160. If announced by    SAP, only one session announcement  is    permitted  in  a
  161. single packet.
  162.  
  163.  
  164. 4.2.  Email and    WWW Announcements
  165.  
  166. Alternative means of conveying session descriptions  include  electronic
  167.  
  168.  
  169.  
  170. Handley/Jacobson                            [Page 3]
  171.  
  172. INTERNET-DRAFT                           2nd Sept 1997
  173.  
  174.  
  175. mail  and  the World Wide Web.    For both email and WWW distribution, the
  176. use of the MIME    content    type ``application/sdp'' should    be  used.   This
  177. enables    the automatic launching    of applications    for participation in the
  178. session    from the WWW client or mail reader in a    standard manner.
  179.  
  180. Note that announcements    of multicast sessions made only    via email or the
  181. World  Wide  Web  (WWW)     do not    have the property that the receiver of a
  182. session    announcement can necessarily receive  the  session  because  the
  183. multicast  sessions  may  be  restricted in scope, and access to the WWW
  184. server or reception of    email  is  possible  outside  this  scope.   SAP
  185. announcements do not suffer from this mismatch.
  186.  
  187.  
  188. 5.  Requirements and Recommendations
  189.  
  190.  
  191. The purpose of SDP is to convey    information about media    streams    in  mul-
  192. timedia     sessions  to  allow  the recipients of    a session description to
  193. participate in the session.  SDP is primarily intended    for  use  in  an
  194. internetwork,  although     it is sufficiently general that it can    describe
  195. conferences in other network environments.
  196.  
  197. A multimedia session, for these    purposes, is defined as    a set  of  media
  198. streams     that  exist  for  some     duration of time.  Media streams can be
  199. many-to-many.  The times during    which the session is active need not  be
  200. continuous.
  201.  
  202. Thus far, multicast based sessions on the Internet  have  differed  from
  203. many  other  forms  of conferencing in that anyone receiving the traffic
  204. can join the session (unless the session traffic is encrypted).     In such
  205. an  environment, SDP serves two    primary    purposes.  It is a means to com-
  206. municate the existence of a session, and is a means to convey sufficient
  207. information  to     enable     joining and participating in the session.  In a
  208. unicast    environment, only the latter purpose is    likely to be relevant.
  209.  
  210. Thus SDP includes:
  211.  
  212. o    Session name and purpose
  213.  
  214. o    Time(s) the session is active
  215.  
  216. o    The media comprising the session
  217.  
  218. o    Information to receive those media    (addresses, ports,  formats  and
  219.     so on)
  220.  
  221. As resources necessary to participate in a session may be limited,  some
  222. additional information may also    be desirable:
  223.  
  224.  
  225.  
  226. Handley/Jacobson                            [Page 4]
  227.  
  228. INTERNET-DRAFT                           2nd Sept 1997
  229.  
  230.  
  231. o    Information about the bandwidth to    be used    by the conference
  232.  
  233. o    Contact information for the person    responsible for    the session
  234.  
  235. In general, SDP    must convey sufficient information to be able to join  a
  236. session    (with the possible exception of    encryption keys) and to    announce
  237. the resources to be used to non-participants that may need to know.
  238.  
  239.  
  240. 5.1.  Media Information
  241.  
  242. SDP includes:
  243.  
  244. o    The type of media (video, audio, etc)
  245.  
  246. o    The transport protocol (RTP/UDP/IP, H.320,    etc)
  247.  
  248. o    The format    of the media (H.261 video, MPEG    video, etc)
  249.  
  250. For an IP multicast session, the following are also conveyed:
  251.  
  252. o    Multicast address for media
  253.  
  254. o    Transport Port for    media
  255.  
  256. This address and port are the destination address and  destination  port
  257. of the multicast stream, whether being sent, received, or both.
  258.  
  259. For an IP unicast session, the following are conveyed:
  260.  
  261. o    Remote address for    media
  262.  
  263. o    Transport port for    contact    address
  264.  
  265. The semantics of this address and port depend on the media and transport
  266. protocol  defined.   By     default,  this    is the remote address and remote
  267. port to    which data is sent, and    the remote address  and     local    port  on
  268. which  to  receive data.  However, some    media may define to use    these to
  269. establish a control channel for    the actual media flow.
  270.  
  271. 5.2.  Timing Information
  272.  
  273. Sessions may either be bounded or unbounded in    time.    Whether     or  not
  274. they are bounded, they may be only active at specific times.
  275.  
  276. SDP can    convey:
  277.  
  278. o     An arbitrary list    of start and stop times    bounding the session
  279.  
  280.  
  281.  
  282. Handley/Jacobson                            [Page 5]
  283.  
  284. INTERNET-DRAFT                           2nd Sept 1997
  285.  
  286.  
  287. o     For each bound, repeat times such    as "every Wednesday at 10am  for
  288.      one hour"
  289.  
  290. This timing information    is globally consistent,     irrespective  of  local
  291. time zone or daylight saving time.
  292.  
  293.  
  294. 5.3.  Private Sessions
  295.  
  296.  
  297. It is possible to create both  public  sessions     and  private  sessions.
  298. Private     sessions  will     typically be conveyed by encrypting the session
  299. description to distribute it.  The details of  how  encryption    is  per-
  300. formed    are  dependent on the mechanism    used to    convey SDP - see [4] for
  301. how this is done for session announcements.
  302.  
  303. If a session announcement is private it    is possible to use that     private
  304. announcement  to  convey encryption keys necessary to decode each of the
  305. media in a  conference,     including  enough  information     to  know  which
  306. encryption scheme is used for each media.
  307.  
  308.  
  309. 5.4.  Obtaining    Further    Information about a Session
  310.  
  311. A session description should convey enough information to decide whether
  312. or not to participate in a session.  SDP may include additional    pointers
  313. in the form of Universal Resources Identifiers (URIs) for more    informa-
  314. tion about the session.
  315.  
  316.  
  317. 5.5.  Categorisation
  318.  
  319. When many session descriptions are being distributed by    SAP or any other
  320. advertisement  mechanism,  it  may  be desirable to filter announcements
  321. that are of interest from those    that are not.  SDP supports a  categori-
  322. sation mechanism for sessions that is capable of being automated.
  323.  
  324.  
  325. 5.6.  Internationalization
  326.  
  327. The SDP    specification recommends the use of the    ISO 10646 character sets
  328. in   the  UTF-8     encoding  to  allow  many  different  languages  to  be
  329. represented.  However, to assist in compact  representations,  SDP  also
  330. allows other character sets such as ISO    8859-1 to be used when desired.
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Handley/Jacobson                            [Page 6]
  339.  
  340. INTERNET-DRAFT                           2nd Sept 1997
  341.  
  342.  
  343. 6.  SDP    Specification
  344.  
  345. SDP session descriptions are entirely textual.     The  textual  form,  as
  346. opposed    to a binary encoding such as ASN/1 or XDR, was chosen to enhance
  347. portability, to    enable a variety of transports to be used (e.g,     session
  348. description  in     a MIME    email message) and to allow flexible, text-based
  349. toolkits (e.g.,    Tcl/Tk ) to be used to generate    and to    process     session
  350. descriptions.    However,  since    the total bandwidth allocated to all SAP
  351. announcements is strictly limited, the encoding    is deliberately    compact.
  352. Also,  since  announcements may    be transported via very    unreliable means
  353. (e.g., email) or damaged by an intermediate caching server, the    encoding
  354. was  designed with strict order    and formatting rules so    that most errors
  355. would result in    malformed announcements    which could be    detected  easily
  356. and discarded.    This also allows rapid discarding of encrypted announce-
  357. ments for which    a receiver does    not have the correct key.
  358.  
  359. An SDP session description consists of a number    of lines of text of  the
  360. form
  361. <type>=<value>
  362. <type> is always exactly one character and is case-significant.     <value>
  363. is  a  structured  text     string    whose format depends on    <type>.     It also
  364. will be    case-significant unless     a  specific  field  defines  otherwise.
  365. Whitespace  is    not  permitted    either    side of    the `='    sign. In general
  366. <value>    is either a number of fields delimited by a single space charac-
  367. ter or a free format string.
  368.  
  369. A session description consists of a session-level  description    (details
  370. that  apply  to     the whole session and all media streams) and optionally
  371. several    media-level descriptions (details that apply onto  to  a  single
  372. media stream).
  373.  
  374. An announcement    consists of a session-level section followed by    zero  or
  375. more  media-level  sections.   The session-level part starts with a `v='
  376. line and continues to the first    media-level section.  The media    descrip-
  377. tion  starts  with an `m=' line    and continues to the next media    descrip-
  378. tion or    end of the whole session description.  In general, session-level
  379. values    are the    default    for all    media unless overridden    by an equivalent
  380. media-level value.
  381.  
  382. When SDP is conveyed by    SAP, only one session description is allowed per
  383. packet.      When SDP is conveyed by other    means, many SDP    session    descrip-
  384. tions may be concatenated together (the    `v=' line indicating  the  start
  385. of  a  session    description  terminates    the previous description).  Some
  386. lines in each description are required and some     are  optional    but  all
  387. must  appear  in  exactly  the order given here    (the fixed order greatly
  388. enhances error detection and allows  for  a  simple  parser).    Optional
  389. items are marked with a    `*'.
  390.  
  391.  
  392.  
  393.  
  394. Handley/Jacobson                            [Page 7]
  395.  
  396. INTERNET-DRAFT                           2nd Sept 1997
  397.  
  398.  
  399.  
  400.     Session    description
  401.         v=  (protocol version)
  402.         o=  (owner/creator and session identifier).
  403.         s=  (session name)
  404.         i=* (session information)
  405.         u=* (URI of description)
  406.         e=* (email address)
  407.         p=* (phone number)
  408.         c=* (connection    information - not required if included in all media)
  409.         b=* (bandwidth information)
  410.         One or more time descriptions (see below)
  411.         z=* (time zone adjustments)
  412.         k=* (encryption    key)
  413.         a=* (zero or more session attribute lines)
  414.         Zero or    more media descriptions    (see below)
  415.  
  416.     Time description
  417.         t=  (time the session is active)
  418.         r=* (zero or more repeat times)
  419.  
  420.     Media description
  421.         m=  (media name    and transport address)
  422.         i=* (media title)
  423.         c=* (connection    information - optional if included at session-level)
  424.         b=* (bandwidth information)
  425.         k=* (encryption    key)
  426.         a=* (zero or more media    attribute lines)
  427.  
  428. The set    of `type' letters is deliberately small    and not    intended  to  be
  429. extensible  --    SDP parsers must completely ignore any announcement that
  430. contains a `type' letter that it does not understand.    The  `attribute'
  431. mechanism  ("a=" described below) is the primary means for extending SDP
  432. and tailoring it to particular applications or media.    Some  attributes
  433. (the ones listed in this document) have    a defined meaning but others may
  434. be added on an application-, media- or session-specific    basis.     A  ses-
  435. sion directory must ignore any attribute it doesn't understand.
  436.  
  437. The connection (`c=') and attribute (`a=') information in  the    session-
  438. level section applies to all the media of that session unless overridden
  439. by connection information or an    attribute of the same name in the  media
  440. description.   For instance, in    the example below, each    media behaves as
  441. if it were given a `recvonly' attribute.
  442.  
  443. An example SDP description is:
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Handley/Jacobson                            [Page 8]
  451.  
  452. INTERNET-DRAFT                           2nd Sept 1997
  453.  
  454.  
  455.  
  456.     v=0
  457.     o=mhandley 2890844526 2890842807 IN IP4    126.16.64.4
  458.     s=SDP Seminar
  459.     i=A Seminar on the session description protocol
  460.     u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
  461.     e=mjh@isi.edu (Mark Handley)
  462.     c=IN IP4 224.2.17.12/127
  463.     t=2873397496 2873404696
  464.     a=recvonly
  465.     m=audio    3456 RTP/AVP 0
  466.     m=video    2232 RTP/AVP 31
  467.     m=application 32416 udp    wb
  468.     a=orient:portrait
  469.  
  470.  
  471. Text records such as the session name and information  may  contain  any
  472. printable  8  bit ISO 10646 character with the exceptions of 0x0a (ASCII
  473. newline) and 0x0d (ASCII carriage return).  The    sequence  CRLF    (0x0a0d)
  474. is  used  to  end a record, although parsers should be tolerant    and also
  475. accept records terminated with a single    newline    character.
  476.  
  477. Protocol Version
  478.  
  479. v=0
  480.  
  481. The ``v='' field gives the version of the Session Description  Protocol.
  482. There is no minor version number.
  483.  
  484. Origin
  485.  
  486. o=<username>  <session    id>  <version>    <network  type>     <address  type>
  487. <address>
  488.  
  489.  
  490. The ``o='' field gives the originator of the session (their username and
  491. the  address  of  the user's host) plus    a session id and session version
  492. number.     <username> is the user's login    on the originating host,  or  it
  493. is  ``-''  if  the originating host does not support the concept of user
  494. ids.  <username> must not contain spaces.  <session  id>  is  a     numeric
  495. string    such that the tuple of <username>, <session id>, <network type>,
  496. <address type> and <address> form a globally unique identifier    for  the
  497. session.   The    method    of  session  id    allocation is up to the    creating
  498. tool, but it has been suggested     that  a  Network  Time     Protocol  (NTP)
  499. timestamp  be  used  to     ensure     uniqueness [1].  <version> is a version
  500. number for this    announcement.  It is needed for    proxy  announcements  to
  501. detect    which  of several announcements    for the    same session is    the most
  502. recent.     Again its usage  is  up  to  the  creating  tool,  so    long  as
  503.  
  504.  
  505.  
  506. Handley/Jacobson                            [Page 9]
  507.  
  508. INTERNET-DRAFT                           2nd Sept 1997
  509.  
  510.  
  511. <version>  is increased    when a modification is made to the session data.
  512. Again, it is recommended (but not mandatory) that an  NTP  timestamp  is
  513. used.  <network    type> is a text    string giving the type of network.  Ini-
  514. tially ``IN'' is defined to have  the  meaning    ``Internet''.    <address
  515. type>  is  a  text  string  giving the type of the address that    follows.
  516. Initially ``IP4'' and ``IP6'' are defined.  <address>  is  the    globally
  517. unique    address     of the    machine    from which the session was created.  For
  518. an address type    of IP4,    this is    the dotted-decimal representation of the
  519. IP  version  4 address of the machine.    For an address type of IP6, this
  520. is the compressed textual representation of the    IP version 6 address  of
  521. the machine.
  522.  
  523. In general, the    ``o='' field serves as a globally unique identifier  for
  524. this  version  of  this    session    description, and the subfields excepting
  525. the version taken together identify  the  session  irrespective     of  any
  526. modifications.
  527.  
  528. Session    Name
  529.  
  530. s=<session name>
  531.  
  532. The ``s='' field is the    session    name.  There must be one  and  only  one
  533. ``s=''    field per session description, and it must contain printable ISO
  534. 10646 characters (but see also the `charset' attribute below).
  535.  
  536. Session    and Media Information
  537.  
  538. i=<session description>
  539.  
  540. The ``i='' field is information    about the session.  There may be at most
  541. one  session-level ``i='' field    per session description, and at    most one
  542. ``i='' field per media.    Although it may    be omitted, this is  discouraged
  543. for  session  announcements,  and user interfaces for composing    sessions
  544. should require text to be entered.  If it is  present  it  must     contain
  545. printable  ISO    10646  characters  (but    see also the `charset' attribute
  546. below).
  547.  
  548. A single ``i=''    field can also be used for each     media    definition.   In
  549. media  definitions,  ``i=''  fields  are primarily intended for    labeling
  550. media streams.    As such, they are most likely to be useful when    a single
  551. session     has more than one distinct media stream of the    same media type.
  552. An example would be two    different whiteboards, one for    slides    and  one
  553. for feedback and questions.
  554.  
  555.  
  556. URI
  557.  
  558. u=<URI>
  559.  
  560.  
  561.  
  562. Handley/Jacobson                               [Page 10]
  563.  
  564. INTERNET-DRAFT                           2nd Sept 1997
  565.  
  566.  
  567. o    A URI is a    Universal Resource Identifier as used by WWW clients
  568.  
  569. o    The URI should be a pointer to  additional     information  about  the
  570.     conference
  571.  
  572. o    This field    is optional, but if it is present it should be specified
  573.     before the first media field
  574.  
  575. o    No    more than one URI field    is allowed per session description
  576.  
  577.  
  578. Email Address and Phone    Number
  579.  
  580. e=<email address>
  581. p=<phone number>
  582.  
  583.  
  584. o    These specify contact information for the    person    responsible  for
  585.     the     conference.   This  is     not  necessarily  the    same person that
  586.     created the    conference announcement.
  587.  
  588. o    Either an email field or a    phone field must  be  specified.   Addi-
  589.     tional email and phone fields are allowed.
  590.  
  591. o    If    these are present, they    should be  specified  before  the  first
  592.     media field.
  593.  
  594. o    More than one email or phone field     can  be  given     for  a     session
  595.     description.
  596.  
  597. o    Phone numbers should be given  in    the  conventional  international
  598.     format  -  preceded     by  a ``+'' and the international country code.
  599.     There must be a space or a hyphen (``-'') between the  country  code
  600.     and    the rest of the    phone number.  Spaces and hyphens may be used to
  601.     split up a phone field to aid readability if desired. For example:
  602.  
  603.     p=+44-171-380-7777    or    p=+1 617 253 6011
  604.  
  605. o    Both email    addresses and phone numbers can    have  an  optional  free
  606.     text  string  associated  with them, normally giving the name of the
  607.     person who may be contacted.  This should be enclosed in parenthesis
  608.     if it is present.  For example:
  609.  
  610.     e=mjh@isi.edu (Mark Handley)
  611.  
  612.     The    alternative RFC822 name    quoting    convention is also  allowed  for
  613.     both email addresses and phone numbers.  For example,
  614.  
  615.  
  616.  
  617.  
  618. Handley/Jacobson                               [Page 11]
  619.  
  620. INTERNET-DRAFT                           2nd Sept 1997
  621.  
  622.  
  623.     e=Mark Handley <mjh@isi.edu>
  624.  
  625.     The    free text string should    be in the ISO-10646 character  set  with
  626.     UTF-8 encoding, or alternatively in    ISO-8859-1 or other encodings if
  627.     the    appropriate charset session-level attribute is set.
  628.  
  629. Connection Data
  630.  
  631. c=<network type> <address type>    <connection address>
  632.  
  633. The ``c='' field contains connection data.
  634.  
  635. A session announcement must contain  one  ``c=''  field     in  each  media
  636. description  (see below) or a ``c='' field at the session-level.  It may
  637. contain    a session-level    ``c='' field and one additional    ``c='' field per
  638. media  description,  in     which    case  the  per-media values override the
  639. session-level settings for the relevant    media.
  640.  
  641. The first sub-field is the network type, which is a text  string  giving
  642. the  type  of  network.     Initially ``IN'' is defined to    have the meaning
  643. ``Internet''.
  644.  
  645. The second sub-field is    the address type.  This    allows SDP  to    be  used
  646. for sessions that are not IP based.  Currently only IP4    is defined.
  647.  
  648. The third sub-field is the  connection    address.   Optional  extra  sub-
  649. fields    may be added after the connection address depending on the value
  650. of the <address    type> field.
  651.  
  652. For IP4    addresses, the connection address is defined as    follows:
  653.  
  654. o    Typically the connection address will be  a  class-D  IP  multicast
  655.     group address.  If the conference is not multicast,    then the connec-
  656.     tion address contains the unicast IP address of  the  expected  data
  657.     source or data relay or data sink as determined by additional attri-
  658.     bute fields.  It is    not expected  that  unicast  addresses    will  be
  659.     given  in  a session description that is communicated by a multicast
  660.     announcement, though this is not prohibited.
  661.  
  662.  
  663. o    Conferences using an IP multicast connection address must also have
  664.     a  time  to     live  (TTL)  value present in addition    to the multicast
  665.     address.  The TTL and the address together    define    the  scope  with
  666.     which  multicast  packets  sent in this conference will be sent. TTL
  667.     values must    be in the range    0-255.
  668.  
  669.     The    TTL for    the session is appended    to the address using a slash  as
  670.     a separator.  An example is:
  671.  
  672.  
  673.  
  674. Handley/Jacobson                               [Page 12]
  675.  
  676. INTERNET-DRAFT                           2nd Sept 1997
  677.  
  678.  
  679.  
  680.         c=IN IP4 224.2.1.1/127
  681.  
  682.  
  683.     Hierarchical or layered encoding schemes are data streams where  the
  684.     encoding  from  a  single  media  source  is  split    into a number of
  685.     layers.  The receiver can choose  the  desired  quality  (and  hence
  686.     bandwidth)    by  only  subscribing to a subset of these layers.  Such
  687.     layered encodings are normally  transmitted     in  multiple  multicast
  688.     groups  to    allow  multicast pruning.  This    technique keeps    unwanted
  689.     traffic from sites only requiring certain levels of     the  hierarchy.
  690.     For     applications  requiring multiple multicast groups, we allow the
  691.     following notation to be used for the connection address:
  692.  
  693.  
  694.         <base multicast address>/<ttl>/<number of addresses>
  695.  
  696.     If the number of addresses is not given it is  assumed  to    be  one.
  697.     Multicast addresses    so assigned are    contiguously allocated above the
  698.     base address, so that, for example:
  699.  
  700.         c=IN IP4 224.2.1.1/127/3
  701.  
  702.     would state    that addresses 224.2.1.1, 224.2.1.2 and    224.2.1.3 are to
  703.     be    used at    a ttl of 127.  This is semantically identical to includ-
  704.     ing    multiple ``c=''    lines in a media description:
  705.  
  706.         c=IN IP4 224.2.1.1/127
  707.         c=IN IP4 224.2.1.2/127
  708.         c=IN IP4 224.2.1.3/127
  709.  
  710.     Multiple addresses or ``c='' lines can only    be specified on     a  per-
  711.     media basis, and not for a session-level ``c='' field.
  712.  
  713.     It is illegal for the slash    notation described above to be used  for
  714.     IP unicast addresses.
  715.  
  716. Bandwidth
  717.  
  718. b=<modifier>:<bandwidth-value>
  719.  
  720.  
  721. o    This specifies the    proposed bandwidth to be used by the session  or
  722.     media, and is optional.
  723.  
  724. o    <bandwidth-value>    is in kilobits per second
  725.  
  726. o    <modifier>     is a single alphanumeric word giving the meaning of the
  727.  
  728.  
  729.  
  730. Handley/Jacobson                               [Page 13]
  731.  
  732. INTERNET-DRAFT                           2nd Sept 1997
  733.  
  734.  
  735.     bandwidth figure.
  736.  
  737. o    Two modifiers are initially defined:
  738.  
  739. CT    Conference Total:    An implicit maximum bandwidth is associated with
  740.       each TTL on the Mbone or within a    particular multicast administra-
  741.       tive scope region    (the Mbone bandwidth vs. TTL limits are    given in
  742.       the  MBone FAQ).    If the bandwidth of a session or media in a ses-
  743.       sion is different    from the bandwidth implicit from  the  scope,  a
  744.       `b=CT:...' line should be    supplied for the session giving    the pro-
  745.       posed upper limit    to the bandwidth used.    The primary  purpose  of
  746.       this  is    to  give  an  approximate idea as to whether two or more
  747.       conferences can co-exist simultaneously.
  748.  
  749. AS    Application-Specific Maximum:  The bandwidth is interpreted to  be
  750.       application-specific,  i.e.,  will be the    application's concept of
  751.       maximum bandwidth.  Normally this    will coincide with what     is  set
  752.       on the application's ``maximum bandwidth'' control if applicable.
  753.  
  754.     Note that CT gives a total bandwidth figure    for all    the media at all
  755.     sites.   AS     gives a bandwidth figure for a    single media at    a single
  756.     site, although there may be    many sites sending simultaneously.
  757.  
  758. o    Extension Mechanism: Tool writers can define experimental bandwidth
  759.     modifiers by prefixing their modifier with ``X-''.    For example:
  760.  
  761.     b=X-YZ:128
  762.  
  763.     SDP    parsers    should ignore bandwidth    fields with  unknown  modifiers.
  764.     Modifiers  should  be alpha-numeric    and, although no length    limit is
  765.     given, they    are recommended    to be short.
  766.  
  767. Times, Repeat Times and    Time Zones
  768.  
  769. t=<start time>    <stop time>
  770.  
  771. o    ``t='' fields specify the start and stop  times  for  a  conference
  772.     session.   Multiple    ``t='' fields may be used if a session is active
  773.     at multiple    irregularly spaced times; each additional  ``t=''  field
  774.     specifies an additional period of time for which the session will be
  775.     active.  If    the session is active at regular times,     an ``r='' field
  776.     (see  below)  should  be  used in addition to and following    a ``t=''
  777.     field - in which case the  ``t='' field specifies the start    and stop
  778.     times of the repeat    sequence.
  779.  
  780. o    The first and second sub-fields give the start and    stop  times  for
  781.     the    conference respectively.  These    values are the decimal represen-
  782.     tation of Network Time Protocol (NTP) time values  in  seconds  [1].
  783.  
  784.  
  785.  
  786. Handley/Jacobson                               [Page 14]
  787.  
  788. INTERNET-DRAFT                           2nd Sept 1997
  789.  
  790.  
  791.     To convert these values to UNIX time, subtract decimal 2208988800.
  792.  
  793. o    If    the stop-time is set to    zero, then the session is  not    bounded,
  794.     though it will not become active until after the start-time.  If the
  795.     start-time is also zero, the session is regarded as    permanent.
  796.  
  797.     User interfaces should strongly discourage the creation of unbounded
  798.     and     permanent  sessions  as they give no information about    when the
  799.     session is actually    going to terminate, and    so make    scheduling  dif-
  800.     ficult.
  801.  
  802.     The    general    assumption may be made,    when displaying     unbounded  ses-
  803.     sions that have not    timed out to the user, that an unbounded session
  804.     will only be active    until half an hour from    the current time or  the
  805.     session start time,    whichever is the later.     If behaviour other than
  806.     this is required, an  end-time  should  be    given  and  modified  as
  807.     appropriate     when  new  information    becomes    available about    when the
  808.     session should really end.
  809.  
  810.     Permanent sessions may be shown to the user    as  never  being  active
  811.     unless  there are associated repeat    times which state precisely when
  812.     the    session    will be    active.     In general, permanent    sessions  should
  813.     not     be  created for any session expected to have a    duration of less
  814.     than 2 months, and should be discouraged for  sessions  expected  to
  815.     have a duration of less than 6 months.
  816.  
  817.  
  818. r=<repeat interval> <active duration> <list of offsets from start-time>
  819.  
  820. o     ``r='' fields specify repeat times for a session.     For example, if
  821.     a  session    is  active at 10am on Monday and 11am on Tuesday for one
  822.     hour each week for three  months,  then  the  <start  time>     in  the
  823.     corresponding  ``t=''  field would be the NTP representation of 10am
  824.     on the first Monday, the <repeat interval>    would  be  1  week,  the
  825.     <active duration> would be 1 hour, and the offsets would be    zero and
  826.     25 hours. The corresponding    ``t='' field stop time would be    the  NTP
  827.     representation of the end of the last session three    months later. By
  828.     default all    fields are in seconds, so the ``r='' and  ``t=''  fields
  829.     might be:
  830.  
  831.     t=3034423619 3042462419
  832.     r=604800 3600 0    90000
  833.  
  834.      To    make announcements more    compact, times    may  also  be  given  in
  835.     units  of  days, hours or minutes.    The syntax for these is    a number
  836.     immediately    followed by a single  case-sensitive  character.   Frac-
  837.     tional  units  are    not  allowed  -     a  smaller  unit should be used
  838.     instead.  The following unit specification characters are allowed:
  839.  
  840.  
  841.  
  842. Handley/Jacobson                               [Page 15]
  843.  
  844. INTERNET-DRAFT                           2nd Sept 1997
  845.  
  846.  
  847.  
  848.         d -    days (86400 seconds)
  849.         h -    minutes    (3600 seconds)
  850.         m -    minutes    (60 seconds)
  851.         s -    seconds    (allowed for completeness but not recommended)
  852.  
  853.     Thus, the above announcement could also have been written:
  854.  
  855.     r=7d 1h    0 25h
  856.  
  857.     Monthly and    yearly repeats cannot currently     be  directly  specified
  858.     with  a  single SDP    repeat time - instead separate "t" fields should
  859.     be used to explicitly list the session times.
  860.  
  861. z=<adjustment time> <offset> <adjustment time> <offset>    ....
  862.  
  863. o    To    schedule a repeated session which spans    a change from  daylight-
  864.     saving  time  to  standard    time  or  vice-versa, it is necessary to
  865.     specify offsets from the base repeat times.    This is    required because
  866.     different  time  zones  change  time at different times of day, dif-
  867.     ferent countries change to or from daylight    time on    different dates,
  868.     and    some countries do not have daylight saving time    at all.
  869.  
  870.     Thus in order to schedule a    session    that is    at the same time  winter
  871.     and     summer,  it must  be possible to specify unambiguously    by whose
  872.     time zone a     session  is  scheduled.   To  simplify     this  task  for
  873.     receivers,    we  allow the sender to    specify    the NTP    time that a time
  874.     zone adjustment happens and    the offset from    the time when  the  ses-
  875.     sion  was  first  scheduled.  The  ``z''  field allows the sender to
  876.     specify a list of these adjustment times and offsets from  the  base
  877.     time.
  878.  
  879.     An example might be:
  880.  
  881.     z=2882844526 -1h 2898848070    0
  882.  
  883.     This specifies that    at time    2882844526 the time base  by  which  the
  884.     session's repeat times are calculated is shifted back by 1 hour, and
  885.     that  at  time  2898848070    the  session's    original  time    base  is
  886.     restored.    Adjustments  are  always relative to the specified start
  887.     time - they    are not    cumulative.
  888.  
  889. o    If    a session is likely to last several years, it is  expected  that
  890.     the     session  announcement will be modified    periodically rather than
  891.     transmit several years worth of adjustments    in one announcement.
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Handley/Jacobson                               [Page 16]
  899.  
  900. INTERNET-DRAFT                           2nd Sept 1997
  901.  
  902.  
  903. Encryption Keys
  904.  
  905. k=<method>
  906. k=<method>:<encryption key>
  907.  
  908.  
  909. o    The session description protocol may be used to  convey  encryption
  910.     keys.   A  key  field  is permitted    before the first media entry (in
  911.     which case it applies to all media in  the    session),  or  for  each
  912.     media entry    as required.
  913.  
  914. o    The format    of keys    and their usage    is outside  the     scope    of  this
  915.     document, but see [3].
  916.  
  917.  
  918. o    The method    indicates the mechanism    to be used to  obtain  a  usable
  919.     key     by  external  means,  or from the encoded encryption key given.
  920.     The    following methods are defined:
  921.  
  922.  
  923.     k=clear:<encryption    key>
  924.     The encryption key (as described in [3]    for  RTP  media     streams
  925.     under  the  AV    profile)  is  included untransformed in    this key
  926.     field.
  927.  
  928.     k=base64:<encoded encryption key>
  929.     The encryption key (as described in [3]    for  RTP  media     streams
  930.     under the AV profile) is included in this key field but    has been
  931.     base64 encoded because it includes characters  that  are  prohi-
  932.     bited in SDP.
  933.  
  934.     k=uri:<URI to obtain key>
  935.     A Universal Resource  Identifier  as  used  by    WWW  clients  is
  936.     included in this key field.  The URI refers to the data    contain-
  937.     ing the    key, and may require  additional  authentication  before
  938.     the  key  can  be returned.  When a request is made to the given
  939.     URI, the MIME content-type of the reply    specifies  the    encoding
  940.     for  the key in    the reply.  The    key should not be obtained until
  941.     the user wishes    to join    the session to reduce synchronisation of
  942.     requests to the    WWW server(s).
  943.  
  944.     k=prompt
  945.     No key is included in this SDP description, but    the  session  or
  946.     media  stream  referred     to by this key    field is encrypted.  The
  947.     user should be prompted    for the    key when attempting to join  the
  948.     session,  and  this  user-supplied  key     should     then be used to
  949.     decrypt    the media streams.
  950.  
  951.  
  952.  
  953.  
  954. Handley/Jacobson                               [Page 17]
  955.  
  956. INTERNET-DRAFT                           2nd Sept 1997
  957.  
  958.  
  959. Attributes
  960.  
  961. a=<attribute>
  962. a=<attribute>:<value>
  963.  
  964. A media    field may also have any    number    of  attributes    (``a=''     fields)
  965. which are media    specific.  Attribute fields can    also be    added before the
  966. first media field.  These attributes would convey additional information
  967. that  applies  to  the    conference  as a whole rather than to individual
  968. media; an example might    be the conference's floor control policy.
  969.  
  970. Attribute fields may be    of two forms:
  971.  
  972. o    property attributes.  A property attribute    is simply  of  the  form
  973.     ``a=<flag>''.   These are binary attributes, and the presence of the
  974.     attribute conveys that the attribute is a property of  the    session.
  975.     An example might be    ``a=recvonly''.
  976.  
  977.  o    value  attributes.    A    value    attribute   is     of   the   form
  978.     ``a=<attribute>:<value>''.     An  example  might be that a whiteboard
  979.     could have the value attribute ``a=orient:landscape''
  980.  
  981. Attribute interpretation depends on the    media tool being invoked.   Thus
  982. receivers  of  session    descriptions  should  be  configurable    in their
  983. interpretation of announcements    in general and of attributes in    particu-
  984. lar.
  985.  
  986. Media Announcements
  987.  
  988. m=<media>  <port>  <transport> <fmt list>
  989.  
  990. A session announcement may contain  a  number  of  media  announcements.
  991. Each  media  announcement starts with an ``m=''    field, and is terminated
  992. by either the next ``m='' field    or by the end of the  session  announce-
  993. ment.  A media field also has several sub-fields:
  994.  
  995.  
  996. o    The first sub-field is the    media type.  Currently defined media are
  997.     ``audio'',    ``video'',  ``application'',  ``data''    and ``control'',
  998.     though this    list may be extended  as  new  communication  modalities
  999.     emerge (e.g., telepresence).  The difference between ``application''
  1000.     and    ``data'' is that the former is a media flow such  as  whiteboard
  1001.     information, and the latter    is bulk-data transfer such as multicast-
  1002.     ing    of program executables which will not typically    be displayed  to
  1003.     the     user.     ``control'' is    used to    specify    an additional conference
  1004.     control channel for    the session.
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Handley/Jacobson                               [Page 18]
  1011.  
  1012. INTERNET-DRAFT                           2nd Sept 1997
  1013.  
  1014.  
  1015. o    The second    sub-field is the  transport  port  to  which  the  media
  1016.     stream  will  be sent.  The    meaning    of the transport port depends on
  1017.     the    network    being used as specified    in the relevant    ``c'' field  and
  1018.     on    the  transport    protocol  defined in the third sub-field.  Other
  1019.     ports used by the media application    (such as the RTCP port,    see [2])
  1020.     should be derived algorithmically from the base media port.
  1021.  
  1022.     Note: For transports based on UDP, the value should    be in the  range
  1023.     1024  to  65535  inclusive.     For RTP compliance it should be an even
  1024.     number.
  1025.  
  1026.     For    applications where hierarchically encoded streams are being sent
  1027.     to    a unicast address, it may be necessary to specify multiple tran-
  1028.     sport ports.  This is done using a similar notation    to that    used for
  1029.     IP multicast addresses in the ``c='' field:
  1030.  
  1031.         m=<media> <port>/<number of    ports> <transport> <fmt    list>
  1032.  
  1033.     In such a case, the    ports used depend  on  the  transport  protocol.
  1034.     For    RTP, only the even ports are used for data and the corresponding
  1035.     one-higher odd port    is used    for RTCP.  For example:
  1036.  
  1037.         m=video 3456/2 RTP/AVP 31
  1038.  
  1039.     would specify that ports 3456 and 3457 form    one  RTP/RTCP  pair  and
  1040.     3458  and  3459 form the second RTP/RTCP pair.  RTP/AVP is the tran-
  1041.     sport protocol and 31 is the format    (see below).
  1042.  
  1043.     It is illegal for both multiple addresses to  be  specified     in  the
  1044.     ``c=''  field  and    for multiple ports to be specified in the ``m=''
  1045.     field in the same session announcement.
  1046.  
  1047.  
  1048. o    The third sub-field is the    transport protocol.  The transport  pro-
  1049.     tocol  values  are dependent on the    address-type field in the ``c=''
  1050.     fields.  Thus a ``c='' field of IP4    defines    that the transport  pro-
  1051.     tocol  runs     over  IP4.   For IP4, it is normally expected that most
  1052.     media traffic will be carried as RTP over UDP.  The    following  tran-
  1053.     sport  protocols  are  preliminarily  defined,  but     may be    extended
  1054.     through registration of new    protocols with IANA:
  1055.  
  1056.  
  1057.     - RTP/AVP  -  the  IETF's  Realtime     Transport  Protocol  using  the
  1058.       Audio/Video profile carried over UDP.
  1059.  
  1060.     - udp  - User Datagram Protocol
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Handley/Jacobson                               [Page 19]
  1067.  
  1068. INTERNET-DRAFT                           2nd Sept 1997
  1069.  
  1070.  
  1071.     If an application uses a single combined  proprietary  media  format
  1072.     and     transport  protocol  over UDP,    then simply specifying the tran-
  1073.     sport protocol as udp and using the    format field to    distinguish  the
  1074.     combined  protocol    is recommended.     If a transport    protocol is used
  1075.     over UDP to    carry several distinct media types that    need to    be  dis-
  1076.     tinguished    by  a  session    directory, then    specifying the transport
  1077.     protocol and media format separately is necessary.    RTP is an  exam-
  1078.     ple     of  a    transport-protocol that    carries    multiple payload formats
  1079.     that must be distinguished by the session directory    for it    to  know
  1080.     how    to start appropriate tools, relays, mixers or recorders.
  1081.  
  1082.     The    main reason to specify the transport-protocol in addition to the
  1083.     media  format is that the same standard media formats may be carried
  1084.     over different transport protocols even when the network protocol is
  1085.     the     same -    a historical example is    vat PCM    audio and RTP PCM audio.
  1086.     In    addition,  relays  and    monitoring  tools  that     are  transport-
  1087.     protocol-specific but format-independent are possible.
  1088.  
  1089.     For    RTP media streams operating under the  RTP  Audio/Video     Profile
  1090.     [3],  the  protocol    field is ``RTP/AVP''.  Should other RTP    profiles
  1091.     be defined in the future, their profiles will be  specified     in  the
  1092.     same way.  For example, the    protocol field ``RTP/XYZ'' would specify
  1093.     RTP    operating under    a profile whose    short name is ``XYZ''.
  1094.  
  1095. o    The fourth    and subsequent sub-fields are media formats.  For  audio
  1096.     and    video, these will normally be a    media payload type as defined in
  1097.     the    RTP Audio/Video    Profile.
  1098.  
  1099.     When a list    of payload formats is given, this implies  that     all  of
  1100.     these  formats  may     be  used in the session, but the first    of these
  1101.     formats is the default format for the session.
  1102.  
  1103.     For    media whose transport protocol is not  RTP  or    UDP  the  format
  1104.     field  is  protocol     specific.  Such formats should    be defined in an
  1105.     additional specification document.
  1106.  
  1107.     For    media whose transport protocol is RTP, SDP can be used    to  pro-
  1108.     vide  a  dynamic binding of    media encoding to RTP payload type.  The
  1109.     payload names in the RTP AV    Profile     do  not  specify  unique  audio
  1110.     encodings (in terms    of clock rate and number of audio channels), and
  1111.     so they are    not used directly in SDP format     fields.   Instead,  the
  1112.     payload  type number should    be used    to specify the format for static
  1113.     payload types and the payload  type     number     along    with  additional
  1114.     encoding  information  should be used for dynamically allocated pay-
  1115.     load types.
  1116.  
  1117.     An example of a static payload type    is u-law PCM coded single  chan-
  1118.     nel     audio    sampled     at 8KHz.  This    is completely defined in the RTP
  1119.  
  1120.  
  1121.  
  1122. Handley/Jacobson                               [Page 20]
  1123.  
  1124. INTERNET-DRAFT                           2nd Sept 1997
  1125.  
  1126.  
  1127.     Audio/Video    profile    as payload type    0, so the media    field for such a
  1128.     stream sent    to UDP port 3456 is:
  1129.  
  1130.         m=video 3456 RTP/AVP 0
  1131.  
  1132.     An example of a dynamic payload type is 16 bit linear encoded stereo
  1133.     audio  sampled  at 16KHz.  If we wish to use dynamic RTP/AVP payload
  1134.     type 98 for    such a stream, additional  information    is  required  to
  1135.     decode it:
  1136.  
  1137.         m=video 3456 RTP/AVP 98
  1138.         a=rtpmap:98    L16/16000/2
  1139.  
  1140.     The    general    form of    an rtpmap attribute is:
  1141.  
  1142.         a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encoding parameters>]
  1143.  
  1144.     For    audio streams, <encoding parameters> may specify the  number  of
  1145.     audio  channels.   This  parameter    may  be    omitted    if the number of
  1146.     channels is    one provided no    additional parameters are needed.
  1147.     For    video streams, no encoding parameters are currently specified.
  1148.  
  1149.     Additional parameters may be  defined  in  the  future,  but  codec-
  1150.     specific  parameters  should  not  be added.  Parameters added to an
  1151.     rtpmap attribute should only be those required for a session  direc-
  1152.     tory to make the choice of appropriate media too to    participate in a
  1153.     session.  Codec-specific parameters    should be added    in other  attri-
  1154.     butes.
  1155.  
  1156.     Up to one rtpmap attribute can  be    define    for  each  media  format
  1157.     specified.    Thus we    might have:
  1158.  
  1159.         m=audio 12345 RTP/AVP 96 97    98
  1160.         a=rtpmap:96    L8/8000
  1161.         a=rtpmap:97    L16/8000
  1162.         a=rtpmap:98    L16/11025/2
  1163.  
  1164.  
  1165.     Experimental encoding formats can also be  specified  in  this  way.
  1166.     RTP     formats  that    are  not registered with IANA as standard format
  1167.     names must be preceded by ``X-''.  Thus a new experimental redundant
  1168.     audio  stream  called  GSMLPC using    dynamic    payload    type 99    could be
  1169.     specified as:
  1170.  
  1171.         m=video 3456 RTP/AVP 99
  1172.         a=rtpmap:99    X-GSMLPC/8000
  1173.  
  1174.     Such an experimental encoding requires  that  any  site  wishing  to
  1175.  
  1176.  
  1177.  
  1178. Handley/Jacobson                               [Page 21]
  1179.  
  1180. INTERNET-DRAFT                           2nd Sept 1997
  1181.  
  1182.  
  1183.     receive  the  media    stream has relevant configured state in    its ses-
  1184.     sion directory to know which tools are appropriate.
  1185.  
  1186.     Note that RTP audio    formats    typically  do  not  include  information
  1187.     about  the    number    of  samples  per  packet.   If a non-default (as
  1188.     defined in the RTP Audio/Video Profile) packetisation  is  required,
  1189.     the``ptime'' attribute is used as given below.
  1190.  
  1191.     For    more details on    RTP audio and video formats, see [3].
  1192.  
  1193. o    Predefined    formats    for UDP    protocol non-RTP media are as below.
  1194.  
  1195.     Application    Formats:
  1196.  
  1197.  
  1198.       wb:   LBL    Whiteboard (transport: udp)
  1199.  
  1200.       nt:   UCL    Network    Text Editor (transport:    udp)
  1201.  
  1202.  
  1203. Suggested Attributes
  1204.  
  1205. The following attributes are suggested.     Since application  writers  may
  1206. add new    attributes as they are required, this list is not exhaustive.
  1207.  
  1208.  
  1209. a=cat:<category>
  1210.     This attribute gives the dot-separated hierarchical    category of  the
  1211.     session.   This  is    to enable a receiver to    filter unwanted    sessions
  1212.     by category.  It would probably  have  been     a  compulsory    separate
  1213.     field,  except  for     its  experimental nature at this time.     It is a
  1214.     session-level attribute.
  1215.  
  1216. a=keywds:<keywords>
  1217.     Like the cat attribute, this is to assist  identifying  wanted  ses-
  1218.     sions at the receiver.  This allows    a receiver to select interesting
  1219.     session based on keywords describing the purpose of    the session.  It
  1220.     is a session-level attribute.
  1221.  
  1222. a=tool:<name and version of tool>
  1223.     This gives the name    and version number of the tool    used  to  create
  1224.     the    session    description.  It is a session-level attribute.
  1225.  
  1226. a=ptime:<packet    time>
  1227.     This gives the length of time in  milliseconds  represented     by  the
  1228.     media  in a    packet.    This is    probably only meaningful for audio data.
  1229.     It should not be necessary to know ptime to    decode RTP or vat audio,
  1230.     and       it     is    intended       as     a    recommendation   for   the
  1231.  
  1232.  
  1233.  
  1234. Handley/Jacobson                               [Page 22]
  1235.  
  1236. INTERNET-DRAFT                           2nd Sept 1997
  1237.  
  1238.  
  1239.     encoding/packetisation of audio.  It is a media attribute.
  1240.  
  1241. a=recvonly
  1242.     This specifies that    the tools should be started in receive-only mode
  1243.     where applicable. It can be    either a session or media attribute.
  1244.  
  1245. a=sendrecv
  1246.     This specifies that    the tools should be started in send and     receive
  1247.     mode.  This    is necessary for interactive conferences with tools such
  1248.     as wb which    defaults to receive only mode. It can be either     a  ses-
  1249.     sion or media attribute.
  1250.  
  1251. a=sendonly
  1252.     This specifies that    the tools should be started in    send-only  mode.
  1253.     An    example     may  be where a different unicast address is to be used
  1254.     for    a traffic destination than for a traffic source. In such a case,
  1255.     two    media descriptions may be use, one sendonly and    one recvonly. It
  1256.     can    be either a session or media attribute,    but would normally  only
  1257.     be used as a media attribute.
  1258.  
  1259. a=orient:<whiteboard orientation>
  1260.     Normally this is only used in a whiteboard media  specification.  It
  1261.     specifies  the orientation of a the    whiteboard on the screen.  It is
  1262.     a media attribute.    Permitted values are `portrait', `landscape' and
  1263.     `seascape' (upside down landscape).
  1264.  
  1265. a=type:<conference type>
  1266.     This specifies the type of the  conference.      Suggested  values  are
  1267.     `broadcast',  `meeting', `moderated', `test' and `H332'.  `recvonly'
  1268.     should be the default for `type:broadcast' sessions,  `type:meeting'
  1269.     should imply `sendrecv' and    `type:moderated' should    indicate the use
  1270.     of a floor control tool and    that the media tools are started  so  as
  1271.     to ``mute''    new sites joining the conference.
  1272.  
  1273.     Specifying the attribute type:H332 indicates that this loosely  cou-
  1274.     pled  session is part of a H.332 session as    defined    in the ITU H.332
  1275.     specification [10].     Media tools should be started `recvonly'.
  1276.  
  1277.     Specifying the attribute type:test is  suggested  as  a  hint  that,
  1278.     unless  explicitly    requested  otherwise, receivers    can safely avoid
  1279.     displaying this session description    to users.
  1280.  
  1281.     The    type attribute is a session-level attribute.
  1282.  
  1283.  
  1284. a=charset:<character set>
  1285.     This specifies the character set to    be used    to display  the     session
  1286.     name  and information data.     By default, the ISO-10646 character set
  1287.  
  1288.  
  1289.  
  1290. Handley/Jacobson                               [Page 23]
  1291.  
  1292. INTERNET-DRAFT                           2nd Sept 1997
  1293.  
  1294.  
  1295.     in UTF-8 encoding is used.    If  a  more  compact  representation  is
  1296.     required,  other  character     sets may be used such as ISO-8859-1 for
  1297.     Northern European languages.   In  particular,  the     ISO  8859-1  is
  1298.     specified with the following SDP attribute:
  1299.  
  1300.         a=charset:iso8859-1
  1301.  
  1302.     This is a session-level attribute; if this attribute is present,  it
  1303.     must be before the first media field.
  1304.  
  1305.  
  1306. a=framerate:<frame rate>
  1307.     This gives the maximum  video  frame  rate    in  frames/sec.      It  is
  1308.     intended  as  a  recommendation  for  the  encoding     of  video data.
  1309.     Decimal representations of    fractional  values  using  the    notation
  1310.     "<integer>.<fraction>" are allowed.     It is a media attribute, and is
  1311.     only defined for video media.
  1312.  
  1313.  
  1314. a=quality:<quality>
  1315.     This gives a suggestion for     the  quality  of  the    encoding  as  an
  1316.     integer value.
  1317.  
  1318.     The    intention of the quality attribute for video  is  to  specify  a
  1319.     non-default     trade-off  between  frame-rate    and still-image    quality.
  1320.     For    video, the value in the    range 0    to 10, with the     following  sug-
  1321.     gested meaning:
  1322.  
  1323.  
  1324.     10    - the best still-image quality the compression scheme can give.
  1325.  
  1326.     5    - the default behaviour    given no quality suggestion.
  1327.  
  1328.     0    - the worst still-image    quality    the  codec  designer  thinks  is
  1329.     still usable.
  1330.  
  1331.  
  1332.  
  1333. a=fmtp:<format>    <format    specific parameters>
  1334.     This attribute allows parameters that are specific to  a  particular
  1335.     format  to    be conveyed in a way that SDP doesn't have to understand
  1336.     them.  The format must be one  of  the  formats  specified    for  the
  1337.     media.   Format-specific  parameters  may  be  any set of parameters
  1338.     required to    be conveyed by SDP and given unchanged to the media tool
  1339.     that will use this format.
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Handley/Jacobson                               [Page 24]
  1347.  
  1348. INTERNET-DRAFT                           2nd Sept 1997
  1349.  
  1350.  
  1351. 6.1.  Communicating Conference Control Policy
  1352.  
  1353. There is some debate over the way conference control  policy  should  be
  1354. communicated.  In general, the authors believe that an implicit    declara-
  1355. tive style of specifying conference control is desirable where possible.
  1356.  
  1357. A simple declarative style uses     a  single  conference    attribute  field
  1358. before    the  first media field,    possibly supplemented by properties such
  1359. as `recvonly' for some of the media tools.   This  conference  attribute
  1360. conveys    the conference control policy.    An example might be:
  1361.  
  1362.         a=type:moderated
  1363.  
  1364. In some    cases, however,    it is possible that this may be    insufficient  to
  1365. communicate  the  details  of  an unusual conference control policy.  If
  1366. this is    the case, then a conference attribute specifying  external  con-
  1367. trol  might  be    set, and then one or more ``media'' fields might be used
  1368. to specify the conference control tools    and configuration data for those
  1369. tools.    An example is an ITU H.332 session:
  1370.  
  1371.         ...
  1372.         c=IN IP4 224.5.6.7
  1373.         a=type:H332
  1374.         m=audio    12345 RTP/AVP 0
  1375.         m=video    12347 RTP/AVP 31
  1376.         m=application 12349 udp    wb
  1377.         m=control 12341    H323 mc
  1378.         c=IN IP4 134.134.157.81
  1379.  
  1380. In this    example, a general conference attribute    (type:H332) is specified
  1381. stating     that  conference  control will    be provided by an external H.332
  1382. tool, and a contact addresses for  the    H.323  session    multipoint  con-
  1383. troller    is given.
  1384.  
  1385. In this    document, only    the  declaritive  style     of  conference     control
  1386. declaration  is     specified.   Other  forms  of conference control should
  1387. specify    an appropriate type attribute, and should  define  the    implica-
  1388. tions this has for control media.
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Handley/Jacobson                               [Page 25]
  1403.  
  1404. INTERNET-DRAFT                           2nd Sept 1997
  1405.  
  1406.  
  1407. 7.  Security Considerations
  1408.  
  1409. SDP is a session description format that describes multimedia  sessions.
  1410. A  session description should not be trusted unless it has been    obtained
  1411. by an authenticated transport protocol from a trusted source.  Many dif-
  1412. ferent    transport  protocols  may be used to distribute    session    descrip-
  1413. tion, and the nature of    the authentication will    differ from transport to
  1414. transport.
  1415.  
  1416. One transport  that  will  frequently  be  used     to  distribute     session
  1417. descriptions  is  the Session Announcement Protocol (SAP).  SAP    provides
  1418. both encryption    and authentication mechanisms but due to the  nature  of
  1419. session     announcements    it is likely that there    are many occasions where
  1420. the originator of a session announcement cannot    be authenticated because
  1421. they  are  previously  unknown    to  the    receiver of the    announcement and
  1422. because    no common public key infrastructure is available.
  1423.  
  1424. On receiving a session description  over  an  unauthenticated  transport
  1425. mechanism  or  from  an     untrusted  party,  software parsing the session
  1426. should take a few precautions.    Session    description contain  information
  1427. required  to  start  software  on  the    receivers system.  Software that
  1428. parses a session description MUST not be able to  start     other    software
  1429. except    that which is specifically configured as appropriate software to
  1430. participate in multimedia sessions.  It     is  normally  considered  INAP-
  1431. PROPRIATE  for    software  parsing  a  session description to start, on a
  1432. user's system, software    that is    appropriate to participate in multimedia
  1433. sessions,  without the user first being    informed that such software will
  1434. be started and giving their consent.  Thus a session description  arriv-
  1435. ing  by     session  announcement,     email,     session invitation, or    WWW page
  1436. SHOULD not deliver the user into an {it    interactive} multimedia     session
  1437. without    the user being aware that this will happen.  As    it is not always
  1438. simple to tell whether a session is  interactive  or  not,  applications
  1439. that are unsure    should assume sessions are interactive.
  1440.  
  1441. In this    specification, there are no attributes    which  would  allow  the
  1442. recipient  of  a  session description to be informed to    start multimedia
  1443. tools in a mode    where they default to  transmitting.   Under  some  cir-
  1444. cumstances  it    might be appropriate to    define such attributes.     If this
  1445. is done    an application parsing a  session  description    containing  such
  1446. attributes  SHOULD  either  ignore them, or inform the user that joining
  1447. this session will result in the     automatic  transmission  of  multimedia
  1448. data.  The default behaviour for an unknown attribute is to ignore it.
  1449.  
  1450. Session    descriptions may be  parsed  at     intermediate  systems    such  as
  1451. firewalls  for    the  purposes of opening a hole    in the firewall    to allow
  1452. the participation in multimedia    sessions.  It is considered  INAPPROPRI-
  1453. ATE  for  a  firewall to open such holes for unicast data streams unless
  1454. the session description    comes in a request  from  inside  the  firewall.
  1455.  
  1456.  
  1457.  
  1458. Handley/Jacobson                               [Page 26]
  1459.  
  1460. INTERNET-DRAFT                           2nd Sept 1997
  1461.  
  1462.  
  1463. For  multicast    sessions,  it  is  likely that local administrators will
  1464. apply their own    policies, but the exclusive use     of  "local"  or  "site-
  1465. local"    administrative    scope within the firewall and the refusal of the
  1466. firewall to open a hole    for such scopes    will provide separation    of  glo-
  1467. bal multicast sessions from local ones.
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Handley/Jacobson                               [Page 27]
  1515.  
  1516. INTERNET-DRAFT                           2nd Sept 1997
  1517.  
  1518.  
  1519. Appendix A: SDP    Grammar
  1520.  
  1521. This appendix provides an Augmented BNF    grammar    for SDP.
  1522.  
  1523. announcement ::=    proto-version
  1524.             origin-field
  1525.             session-name-field
  1526.             information-field
  1527.             uri-field
  1528.             email-fields
  1529.             phone-fields
  1530.             connection-field
  1531.             bandwidth-fields
  1532.             time-fields
  1533.             key-field
  1534.             attribute-fields
  1535.             media-descriptions
  1536.  
  1537. proto-version ::=    "v=" 1*(DIGIT) CRLF
  1538.             ;this draft describes version 0
  1539.  
  1540. origin-field ::=    "o=" username space
  1541.             sess-id    space sess-version space
  1542.             nettype    space addrtype space
  1543.             addr CRLF
  1544.  
  1545. session-name-field ::=    "s=" text CRLF
  1546.  
  1547. information-field ::=    ["i=" text CRLF]
  1548.  
  1549. uri-field ::=        ["u=" uri CRLF]
  1550.  
  1551. email-fields ::=    *("e=" email-address CRLF)
  1552.  
  1553. phone-fields ::=    *("p=" phone-number CRLF)
  1554.  
  1555.  
  1556. connection-field ::=    ["c=" nettype space addrtype space
  1557.             connection-address CRLF]
  1558.             ;a connection field must be present
  1559.             ;in every media    description or at the
  1560.             ;session-level
  1561.  
  1562.  
  1563. bandwidth-fields ::=    *("b=" bwtype ":" bandwidth CRLF)
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Handley/Jacobson                               [Page 28]
  1571.  
  1572. INTERNET-DRAFT                           2nd Sept 1997
  1573.  
  1574.  
  1575.  
  1576. time-fields ::=        1*( "t=" start-time space stop-time
  1577.               *(CRLF repeat-fields)    CRLF)
  1578.             [zone-adjustments CRLF]
  1579.  
  1580.  
  1581. repeat-fields ::=    "r=" repeat-interval space typed-time
  1582.             1*(space typed-time)
  1583.  
  1584.  
  1585. zone-adjustments ::=    time space [``-''] typed-time
  1586.             *(space    time space [``-''] typed-time)
  1587.  
  1588.  
  1589. key-field ::=        ["k=" key-type CRLF]
  1590.  
  1591.  
  1592. key-type ::=        "prompt" |
  1593.             "clear:" key-data |
  1594.             "base64:" key-data |
  1595.             "uri:" uri
  1596.  
  1597.  
  1598. key-data ::=        printable-ascii
  1599.  
  1600.  
  1601. attribute-fields ::=    *("a=" attribute CRLF)
  1602.  
  1603.  
  1604. media-descriptions ::=    *( media-field
  1605.               information-field
  1606.               *(connection-field)
  1607.               bandwidth-fields
  1608.               key-field
  1609.               attribute-fields )
  1610.  
  1611.  
  1612. media-field ::=        "m=" media space port ["/" integer]
  1613.              space proto (space fmt)+ CRLF
  1614.  
  1615.  
  1616. media ::=        1*(alpha-numeric)
  1617.             ;typically "audio", "video", "application"
  1618.             ;or "data"
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Handley/Jacobson                               [Page 29]
  1627.  
  1628. INTERNET-DRAFT                           2nd Sept 1997
  1629.  
  1630.  
  1631.  
  1632. fmt ::=            1*(alpha-numeric)
  1633.             ;typically an RTP payload type for audio
  1634.             ;and video media
  1635.  
  1636.  
  1637. proto ::=        1*(alpha-numeric)
  1638.             ;typically "RTP/AVP" or    "udp" for IP4
  1639.  
  1640.  
  1641. port ::=        1*(DIGIT)
  1642.             ;should    in the range "1024" to "65535" inclusive
  1643.             ;for UDP based media
  1644.  
  1645.  
  1646. attribute ::=        att-field ":" att-value    | att-field
  1647.  
  1648.  
  1649. att-field ::=        1*(ALPHA)
  1650.  
  1651.  
  1652. att-value ::=        1*(att-char)
  1653.  
  1654.  
  1655. att-char ::=        alpha-numeric |    "-"
  1656.             ;is this too tight a restriction
  1657.  
  1658.  
  1659. sess-id    ::=        1*(DIGIT)
  1660.             ;should    be unique for this originating username/host
  1661.  
  1662.  
  1663. sess-version ::=    1*(DIGIT)
  1664.             ;0 is a    new session
  1665.  
  1666.  
  1667. connection-address ::=    multicast-address
  1668.             | unicast-address
  1669.  
  1670.  
  1671. multicast-address ::=
  1672.             3*(decimal_uchar ".") decimal_uchar "/"    ttl
  1673.             [ "/" integer ]
  1674.             ;multicast addresses may be in the range
  1675.             ;224.0.0.0 to 239.255.255.255
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682. Handley/Jacobson                               [Page 30]
  1683.  
  1684. INTERNET-DRAFT                           2nd Sept 1997
  1685.  
  1686.  
  1687.  
  1688. ttl ::=            decimal_uchar
  1689.  
  1690. start-time ::=        time | "0"
  1691.  
  1692. stop-time ::=        time | "0"
  1693.  
  1694. time ::=        POS-DIGIT 9*(DIGIT)
  1695.             ;sufficient for    2 more centuries
  1696.  
  1697.  
  1698. repeat-interval    ::=    typed-time
  1699.  
  1700.  
  1701. typed-time ::=        1*(DIGIT) [fixed-len-time-unit]
  1702.  
  1703.  
  1704. fixed-len-time-unit ::=    ``d'' |    ``h'' |    ``m'' |    ``s''
  1705.  
  1706.  
  1707. bwtype ::=        1*(alpha-numeric)
  1708.  
  1709. bandwidth ::=        1*(DIGIT)
  1710.  
  1711.  
  1712. username ::=        safe
  1713.             ;pretty    wide definition, but doesn't include space
  1714.  
  1715.  
  1716. email-address ::=    email |    email "(" email-safe ")" |
  1717.             email-safe "<" email ">"
  1718.  
  1719.  
  1720. email ::=        ;defined in RFC822
  1721.  
  1722.  
  1723. uri::=            ;defined in RFC1630
  1724.  
  1725.  
  1726. phone-number ::=    phone |    phone "(" email-safe ")" |
  1727.             email-safe "<" phone ">"
  1728.  
  1729.  
  1730. phone ::=        "+" POS-DIGIT 1*(space | "-" | DIGIT)
  1731.             ;there must be a space or hyphen between the
  1732.             ;international code and    the rest of the    number.
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Handley/Jacobson                               [Page 31]
  1739.  
  1740. INTERNET-DRAFT                           2nd Sept 1997
  1741.  
  1742.  
  1743.  
  1744. nettype    ::=        "IN"
  1745.             ;list to be extended
  1746.  
  1747.  
  1748. addrtype ::=        "IP4" |    "IP6"
  1749.             ;list to be extended
  1750.  
  1751.  
  1752. addr ::=        unicast-address
  1753.  
  1754.  
  1755. unicast-address    ::=    IP4-address | IP6-address
  1756.  
  1757.  
  1758. IP4-address ::=        b1 "." decimal_uchar "." decimal_uchar "." b4
  1759. b1 ::=            decimal_uchar
  1760.             ;less than "224"; not "0" or "127"
  1761. b4 ::=            decimal_uchar
  1762.             ;not "0"
  1763.  
  1764. IP6-address ::=        ;to be defined
  1765.  
  1766.  
  1767. text ::=        1*(printable-iso8859-1)    | 1*(iso10646-utf-8)
  1768.             ;ISO 8859-1 requires a "a=charset:iso8859-1"
  1769.             ;session-level attribute to be used
  1770.  
  1771.  
  1772. printable-iso8859-1 ::=    ;8 bit ascii character
  1773.             ;decimal 9 (TAB), 32-126 and 161-255
  1774.  
  1775.  
  1776. iso10646-1-1-utf-8 ::= ;defined    in RFC 2044
  1777.               ;CR and LF are disallowed in this context they are
  1778.               ;an SDP field    terminator
  1779.  
  1780.  
  1781. decimal_uchar ::=    DIGIT
  1782.             | POS-DIGIT DIGIT
  1783.             | (1 2*(DIGIT))
  1784.             | (2 (0|1|2|3|4) DIGIT)
  1785.             | (2 5 (0|1|2|3|4|5))
  1786.  
  1787.  
  1788. integer    ::= POS-DIGIT *(DIGIT)
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794. Handley/Jacobson                               [Page 32]
  1795.  
  1796. INTERNET-DRAFT                           2nd Sept 1997
  1797.  
  1798.  
  1799.  
  1800. alpha-numeric ::=    ALPHA |    DIGIT
  1801.  
  1802.  
  1803. printable-ascii    ::=    unicode-safe | "~" | "
  1804.  
  1805.  
  1806. DIGIT ::=        0 | POS-DIGIT
  1807.  
  1808.  
  1809. POS-DIGIT ::=        1 | 2 |    3 | 4 |    5 | 6 |    7 | 8 |    9
  1810.  
  1811.  
  1812. ALPHA ::=        a | b |    c | d |    e | f |    g | h |    i | j |    k |
  1813.             l | m |    n | o  | p | q | r | s | t | u | v |
  1814.             w | x |    y | z |    A | B |    C  | D | E | F | G |
  1815.             H | I |    J | K |    L | M |    N | O |    P |  Q | R |
  1816.             S | T |    U | V |    W | X |    Y | Z
  1817.  
  1818.  
  1819. email-safe ::=        safe | space | tab
  1820.  
  1821.  
  1822. safe ::=        alpha-numeric |
  1823.             "'" | "'" | "-"    | "." |    "/" | ":" | "?"    | """ |
  1824.             "#" | "$" | "&"    | "*" |    ";" | "=" | "@"    | "[" |
  1825.             "]" | "^" | "_"    | "`" |    "{" | "|" | "}"    | "+" |
  1826.             "~" | "
  1827.  
  1828.  
  1829. space ::=        ;ascii code 32
  1830. tab ::=            ;ascii code 9
  1831. CRLF ::=        ;ascii code 13 followed    by ascii code 10
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Handley/Jacobson                               [Page 33]
  1851.  
  1852. INTERNET-DRAFT                           2nd Sept 1997
  1853.  
  1854.  
  1855. Appendix C: Authors' Addresses
  1856.  
  1857. Mark Handley
  1858. Information Sciences Institute
  1859. c/o MIT    Laboratory for Computer    Science
  1860. 545 Technology Square
  1861. Cambridge, MA 02139
  1862. United States
  1863. electronic mail: mjh@isi.edu
  1864.  
  1865. Van Jacobson
  1866. MS 46a-1121
  1867. Lawrence Berkeley Laboratory
  1868. Berkeley, CA 94720
  1869. United States
  1870. electronic mail: van@ee.lbl.gov
  1871.  
  1872.  
  1873. Acknowledgments
  1874.  
  1875. Many people in the IETF    MMUSIC working    group  have  made  comments  and
  1876. suggestions contributing to this document.  In particular, we would like
  1877. to thank Eve Schooler, Steve Casner, Bill Fenner, Allison  Mankin,  Ross
  1878. Finlayson, Peter Parnes, Joerg Ott and Carsten Bormann.
  1879.  
  1880. References
  1881.  
  1882. [1] D. Mills, ``Network    Time Protocol version 2    specification and imple-
  1883. mentation", RFC1119, 1st Sept 1989.
  1884.  
  1885. [2] H. Schulzrinne, S. Casner, R. Frederick, V.    Jacobson, ``RTP: A Tran-
  1886. sport Protocol for Real-Time Applications'', RFC 1889
  1887.  
  1888. [3] H. Schulzrinne, ``RTP Profile for Audio and    Video  Conferences  with
  1889. Minimal    Control'', RFC 1890
  1890.  
  1891. [4] M. Handley,    ``SAP -    Session    Announcement Protocol'', INTERNET-DRAFT,
  1892. November 25th 1996.
  1893.  
  1894. [5] V. Jacobson, S. McCanne, ``vat -  X11-based     audio    teleconferencing
  1895. tool'' vat manual page,    Lawrence Berkeley Laboratory, 1994.
  1896.  
  1897. [6] ``The Unicode Standard, Version 1.1'': Version 1.0,    Volume    1  (ISBN
  1898. 0-201-56788-1),    Version    1.0, Volume 2 (ISBN 0-201-60845-6), and    "Unicode
  1899. Technical Report #4, The Unicode Standard, Version 1.1"    (available  from
  1900. The Unicode Consortium,    and soon to be published by Addison- Wesley).
  1901.  
  1902. [7] ISO/IEC 10646-1:1993(E) Information    Technology--Universal  Multiple-
  1903.  
  1904.  
  1905.  
  1906. Handley/Jacobson                               [Page 34]
  1907.  
  1908. INTERNET-DRAFT                           2nd Sept 1997
  1909.  
  1910.  
  1911. octet Coded Character Set (UCS).
  1912.  
  1913. [8] D. Goldsmith, M. Davis, ``Using Unicode with MIME'',  RFC1641,  July
  1914. 1994
  1915.  
  1916. [9] F. Yergeau,    ``UTF-8, a transformation  format  of  Unicode    and  ISO
  1917. 10646'', RFC 2044, Oct 30th 1996
  1918.  
  1919. [10] ITU-T Recommendation H.332    (1998):    "Multimedia Terminal for Receiv-
  1920. ing Internet-based H.323 Conferences".
  1921.  
  1922. [11] M.    Handley, E. Schooler, H. Schulzrinne, ``Session    Initiation  Pro-
  1923. tocol (SIP)'' Internet Draft, July 1997.
  1924.  
  1925. [12] H.    Schulzrinne, A.    Rao, R.    Lanphier, ``Real Time Streaming    Protocol
  1926. (RTSP)'' Internet Draft, July 1997.
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962. Handley/Jacobson                               [Page 35]
  1963.