RFC2327 - SDP: Session Description Protocol
2012-02-24 11:06
417 查看
Network Working Group M. Handley Request for Comments: 2327 V. Jacobson Category: Standards Track ISI/LBNL APRil 1998 SDP: session Description Protocol Status of this Memo This document specifies an Internetstandards track protocol for the Internet community, and requests discussionand suggestions for improvements. Please refer to the currentedition of the "Internet Official Protocol Standards" (STD 1)for the standardization state and status of this protocol. Distributionof this memo is unlimited. Copyright Notice Copyright (C) The Internet Society (1998).All Rights Reserved. Abstract This document defines the SessionDescription Protocol, SDP. SDP is intended for describing multimedia sessionsfor the purposes of session announcement, session invitation,and other forms of multimedia session initiation. This document is a prodUCt of theMultiparty Multimedia Session Control (MMUSIC) working group of theInternet Engineering Task Force. Comments are solicited and should beaddressed to the working group's mailing list at confctrl@isi.eduand/or the authors. 1. Introduction On the Internet multicast backbone (Mbone),a session Directory tool is used to advertise multimedia conferencesand communicate the conference addresses and conferencetool-specific information necessary for participation. This documentdefines a session description protocol for this purpose, andfor general real-time multimedia session description purposes.This memo does not describe multicast address allocation or thedistribution of SDP messages in detail. These are described in accompanyingmemos. SDP is not intended for negotiation of mediaencodings. 2. Background The Mbone is the part of the internet thatsupports IP multicast, and thus permits efficient many-to-manycommunication. It is used extensively for multimedia conferencing.Such conferences usually have the property that tight coordinationof conference membership is not necessary; to receive a conference, auser at an Mbone site only has to know the conference's multicastgroup address and the UDP ports for the conference data streams. Session directories assist theadvertisement of conference sessions and communicate the relevant conferencesetup information to prospective participants. SDP is designedto convey such information to recipients. SDP is purely a format forsession description - it does not incorporate a transport protocol,and is intended to use different transport protocols asappropriate including the Session Announcement Protocol [4], SessionInitiation Protocol [11], Real- Time Streaming Protocol [12], electronicmail using the MIME extensions, and the Hypertext TransportProtocol. SDP is intended to be general purpose sothat it can be used for a wider range of network environments andapplications than just multicast session directories. However, itis not intended to support negotiation of session content ormedia encodings - this is viewed as outside the scope of sessiondescription. 3. Glossary of Terms The following terms are used in thisdocument, and have specific meaning within the context of thisdocument. Conference A multimedia conference is a set of two ormore communicating users along with the software they are using tocommunicate. Session A multimedia session is a set of multimediasenders and receivers and the data streams flowing from sendersto receivers. A multimedia conference is an example of amultimedia session. Session Advertisement See session announcement. Session Announcement A session announcement is a mechanism bywhich a session description is conveyed to users in aproactive fashion, i.e., the session description was not eXPlicitlyrequested by the user. Session Description A well defined format for conveyingsufficient information to discover and participate in a multimediasession. 3.1. Terminology The key Words "MUST", "MUSTNOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT","RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as describedin RFC2119. 4. SDP Usage 4.1. Multicast Announcements SDP is a session description protocol formultimedia sessions. A common mode of usage is for a client toannounce a conference session by periodically multicasting anannouncement packet to a well known multicast address and port using theSession Announcement Protocol (SAP). SAP packets are UDP packets with the followingformat: -------------------- SAP header -------------------- text payload ////////// The header is the Session AnnouncementProtocol header. SAP is described in more detail in a companionmemo [4] The text payload is an SDP sessiondescription, as described in this memo. The text payload should be no greaterthan 1 Kbyte in length. If announced by SAP, only one sessionannouncement is permitted in a single packet. 4.2. Email and WWW Announcements Alternative means of conveying sessiondescriptions include electronic mail and the World Wide Web. Forboth email and WWW distribution, the use of the MIME contenttype "application/sdp" should be used. This enables the automaticlaunching of applications for participation in the session from theWWW client or mail reader in a standard manner. Note that announcements of multicastsessions made only via email or the World Wide Web (WWW) do not have theproperty that the receiver of a session announcement can necessarilyreceive the session because the multicast sessions may be restricted inscope, and access to the WWW server or reception of email ispossible outside this scope. SAP announcements do not suffer from thismismatch. 5. Requirements and Recommendations The purpose of SDP is to convey informationabout media streams in multimedia sessions to allow the recipientsof a session description to participate in the session. SDP isprimarily intended for use in an internetwork, although it issufficiently general that it can describe conferences in other networkenvironments. A multimedia session, for these purposes,is defined as a set of media streams that exist for some durationof time. Media streams can be many-to-many. The times during whichthe session is active need not be continuous. Thus far, multicast based sessions on theInternet have differed from many other forms of conferencing in thatanyone receiving the traffic can join the session (unless the sessiontraffic is encrypted). In such an environment, SDP serves two primarypurposes. It is a means to communicate the existence of a session,and is a means to convey sufficient information to enable joiningand participating in the session. In a unicast environment, only thelatter purpose is likely to be relevant. Thus SDP includes: o Session name and purpose o Time(s) the session is active o The media comprising the session o Information to receive those media(addresses, ports, formats and so on) As resources necessary to participate in asession may be limited, some additional information may also bedesirable: o Information about the bandwidth to beused by the conference o Contact information for the personresponsible for the session In general, SDP must convey sufficientinformation to be able to join a session (with the possible exception ofencryption keys) and to announce the resources to be used tonon-participants that may need to know. 5.1. Media Information SDP includes: o The type of media (video, audio, etc) o The transport protocol (RTP/UDP/IP,H.320, etc) o The format of the media (H.261 video,MPEG video, etc) For an IP multicast session, the followingare also conveyed: o Multicast address for media o Transport Port for media This address and port are the destinationaddress and destination port of the multicast stream, whether beingsent, received, or both. For an IP unicast session, the followingare conveyed: o Remote address for media o Transport port for contact address The semantics of this address and portdepend on the media and transport protocol defined. By default,this is the remote address and remote port to which data is sent, andthe remote address and local port on which to receive data.However, some media may define to use these to establish a control channelfor the actual media flow. 5.2. Timing Information Sessions may either be bounded or unboundedin time. Whether or not they are bounded, they may be only activeat specific times. SDP can convey: o An arbitrary list of start and stop timesbounding the session o For each bound, repeat times such as"every Wednesday at 10am for one hour" This timing information is globallyconsistent, irrespective of local time zone or daylight saving time. 5.3. Private Sessions It is possible to create both publicsessions and private sessions. Private sessions will typically be conveyedby encrypting the session description to distribute it. The detailsof how encryption is performed are dependent on the mechanismused to convey SDP - see [4] for how this is done for sessionannouncements. If a session announcement is private it ispossible to use that private announcement to convey encryptionkeys necessary to decode each of the media in a conference,including enough information to know which encryption scheme is used foreach media. 5.4. OBTaining Further Information about aSession A session description should convey enoughinformation to decide whether or not to participate in a session.SDP may include additional pointers in the form ofUniversal Resources Identifiers (URIs) for more information about thesession. 5.5. Categorisation When many session descriptions are beingdistributed by SAP or any other advertisement mechanism, it may bedesirable to filter announcements that are of interest fromthose that are not. SDP supports a categorisation mechanism forsessions that is capable of being automated. 5.6. Internationalization The SDP specification recommends the use ofthe ISO 10646 character sets in the UTF-8 encoding (RFC2044) toallow many different languages to be represented. However, toassist in compact representations, SDP also allows othercharacter sets such as ISO 8859-1 to be used when desired.Internationalization only applies to free-text fields (session name andbackground information), and not to SDP as a whole. 6. SDP Specification SDP session descriptions are entirelytextual using the ISO 10646 character set in UTF-8 encoding. SDP fieldnames and attributes names use only the US-ASCII subset of UTF-8, buttextual fields and attribute values may use the full ISO 10646character set. The textual form, as opposed to a binaryencoding such as ASN/1 or XDR, was chosen to enhance portability, toenable a variety of transports to be used (e.g, session description in aMIME email message) and to allow flexible, text-based toolkits (e.g.,Tcl/Tk ) to be used to generate and to process sessiondescriptions. However, since the total bandwidth allocated to all SAPannouncements is strictly limited, the encoding is deliberatelycompact. Also, since announcements may be transported via veryunreliable means (e.g., email) or damaged by an intermediatecaching server, the encoding was designed with strict order and formattingrules so that most errors would result in malformed announcementswhich could be detected easily and discarded. This also allowsrapid discarding of encrypted announcements for which a receiver does nothave the correct key. An SDP session description consists of anumber of lines of text of the form <type>=<value><type> is always exactly one character and is case-significant. <value> is astructured text string whose format depends on <type>. It also will becase-significant unless a specific field defines otherwise.Whitespace is not permitted either side of the `=' sign. In general<value> is either a number of fields delimited by a single space character or afree format string. A session description consists of asession-level description (details that apply to the whole sessionand all media streams) and optionally several media-level descriptions(details that apply onto to a single media stream). An announcement consists of a session-levelsection followed by zero or more media-level sections. Thesession-level part starts with a `v=' line and continues to the firstmedia-level section. The media description starts with an `m=' line andcontinues to the next media description or end of the whole sessiondescription. In general, session-level values are the default forall media unless overridden by an equivalent media-level value. When SDP is conveyed by SAP, only onesession description is allowed per packet. When SDP is conveyed by othermeans, many SDP session descriptions may be concatenated together(the `v=' line indicating the start of a session descriptionterminates the previous description). Some lines in eachdescription are required and some are optional but all must appear in exactlythe order given here (the fixed order greatly enhances errordetection and allows for a simple parser). Optional items are marked with a`*'. Session description v= (protocol version) o= (owner/creator and session identifier). s= (session name) i=* (session information) u=* (URI of description) e=* (email address) p=* (phone number) c=* (connection information - not requiredif included in all media) b=* (bandwidth information) One or more time descriptions (see below) z=* (time zone adjustments) k=* (encryption key) a=* (zero or more session attribute lines) Zero or more media descriptions (see below) Time description t= (time the session is active) r=* (zero or more repeat times) Media description m= (media name and transport address) i=* (media title) c=* (connection information - optional ifincluded at session-level) b=* (bandwidth information) k=* (encryption key) a=* (zero or more media attribute lines) The set of `type' letters is deliberatelysmall and not intended to be extensible -- SDP parsers mustcompletely ignore any announcement that contains a `type' letter that it doesnot understand. The `attribute' mechanism ("a="described below) is the primary means for extending SDP and tailoring it toparticular applications or media. Some attributes (the ones listed in thisdocument) have a defined meaning but others may be added on anapplication-, media- or session-specific basis. A session directorymust ignore any attribute it doesn't understand. The connection (`c=') and attribute (`a=')information in the session-level section applies to all themedia of that session unless overridden by connection information or anattribute of the same name in the media description. For instance, inthe example below, each media behaves as if it were given a`recvonly' attribute. An example SDP description is: v=0 o=mhandley 2890844526 2890842807 IN IP4126.16.64.4 s=SDP Seminar i=A Seminar on the session descriptionprotocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 49170 RTP/AVP 0 m=video 51372 RTP/AVP 31 m=application 32416 udp wb a=orient:portrait Text records such as the session name andinformation are bytes strings which may contain any byte with theexceptions of 0x00 (Nul), 0x0a (ASCII newline) and 0x0d (ASCIIcarriage return). The sequence CRLF (0x0d0a) is used to end a record,although parsers should be tolerant and also accept records terminatedwith a single newline character. By default these byte stringscontain ISO-10646 characters in UTF-8 encoding, but thisdefault may be changed using the `charset' attribute. Protocol Version v=0 The "v=" field gives the versionof the Session Description Protocol. There is no minor version number. Origin o=<username> <session id><version> <network type> <address type> <address> The "o=" field gives theoriginator of the session (their username and the address of the user's host) plus asession id and session version number. <username> is the user's login on theoriginating host, or it is "-" if the originating host does not supportthe concept of user ids. <username> must not contain spaces.<session id> is a numeric string such that the tuple of <username>,<session id>, <network type>, <address type> and <address>form a globally unique identifier for the session. The method of <session id> allocationis up to the creating tool, but it has been suggested that a Network TimeProtocol (NTP) timestamp be used to ensure uniqueness [1]. <version> is a version number forthis announcement. It is needed for proxy announcements to detect which ofseveral announcements for the same session is the most recent. Againits usage is up to the creating tool, so long as <version>is increased when a modification is made to the session data. Again, it isrecommended (but not mandatory) that an NTP timestamp is used. <network type> is a text stringgiving the type of network. Initially "IN" is defined to havethe meaning "Internet". <address type> is a text string giving the typeof the address that follows. Initially "IP4" and"IP6" are defined. <address> is the globally unique address of the machine from whichthe session was created. For an address type of IP4, this is eitherthe fully-qualified domain name of the machine, or the dotted-decimalrepresentation of the IP version 4 address of the machine. For anaddress type of IP6, this is either the fully-qualified domain nameof the machine, or the compressed textual representation of the IPversion 6 address of the machine. For both IP4 and IP6, thefully-qualified domain name is the form that SHOULD be given unless thisis unavailable, in which case the globally unique address may besubstituted. A local IP address MUST NOT be used in any contextwhere the SDP description might leave the scope in which the addressis meaningful. In general, the "o=" field servesas a globally unique identifier for this version of this session description,and the subfields excepting the version taken together identify thesession irrespective of any modifications. Session Name s=<session name> The "s=" field is the sessionname. There must be one and only one "s=" field per sessiondescription, and it must contain ISO 10646 characters (but see also the `charset'attribute below). Session and Media Information i=<session description> The "i=" field is informationabout the session. There may be at most one session-level "i=" fieldper session description, and at most one "i=" field per media.Although it may be omitted, this is discouraged for session announcements, anduser interfaces for composing sessions should require text tobe entered. If it is present it must contain ISO 10646characters (but see also the `charset' attribute below). A single "i=" field can also beused for each media definition. In media definitions, "i=" fieldsare primarily intended for labeling media streams. As such, they are mostlikely to be useful when a single session has more than one distinctmedia stream of the same media type. An example would be twodifferent whiteboards, one for slides and one for feedback and questions. URI u=<URI> o A URI is a Universal Resource Identifieras used by WWW clients o The URI should be a pointer to additionalinformation about the conference o This field is optional, but if it ispresent it should be specified before the first media field o No more than one URI field is allowed persession description Email Address and Phone Number e=<email address> p=<phone number> o These specify contact information for theperson responsible for the conference. This is not necessarily thesame person that created the conference announcement. o Either an email field or a phone fieldmust be specified. Additional email and phone fields areallowed. o If these are present, they should bespecified before the first media field. o More than one email or phone field can begiven for a session description. o Phone numbers should be given in theconventional international format - preceded by a "+ and theinternational country code. There must be a space or a hyphen("-") between the country code and the rest of the phone number. Spacesand hyphens may be used to split up a phone field to aidreadability if desired. For example: p=+44-171-380-7777 or p=+1 617 253 6011 o Both email addresses and phone numberscan have an optional free text string associated with them, normallygiving the name of the person who may be contacted. This should beenclosed in parenthesis if it is present. For example: e=mjh@isi.edu (Mark Handley) The alternative RFC822 name quotingconvention is also allowed for both email addresses and phone numbers. Forexample, e=Mark Handley <mjh@isi.edu> The free text string should be in theISO-10646 character set with UTF-8 encoding, or alternatively in ISO-8859-1or other encodings if the appropriate charset session-levelattribute is set. Connection Data c=<network type> <address type><connection address> The "c=" field containsconnection data. A session announcement must contain one"c=" field in each media description (see below) or a "c="field at the session-level. It may contain a session-level "c="field and one additional "c=" field per media description, in which case theper-media values override the session-level settings for the relevant media. The first sub-field is the network type,which is a text string giving the type of network. Initially"IN" is defined to have the meaning "Internet". The second sub-field is the address type.This allows SDP to be used for sessions that are not IP based.Currently only IP4 is defined. The third sub-field is the connectionaddress. Optional extra subfields may be added after the connectionaddress depending on the value of the <address type> field. For IP4 addresses, the connection addressis defined as follows: o Typically the connection address will bea class-D IP multicast group address. If the session is notmulticast, then the connection address contains thefully-qualified domain name or the unicast IP address of the expected datasource or data relay or data sink as determined by additionalattribute fields. It is not expected that fully-qualified domain namesor unicast addresses will be given in a session description thatis communicated by a multicast announcement, though this is notprohibited. If a unicast data stream is to pass through anetwork address translator, the use of a fully-qualifieddomain name rather than an unicast IP address is RECOMMENDED. In othercases, the use of an IP address to specify a particularinterface on a multi-homed host might be required. Thus this specificationleaves the decision as to which to use up to the individualapplication, but all applications MUST be able to cope withreceiving both formats. o Conferences using an IP multicastconnection address must also have a time to live (TTL) value present inaddition to the multicast address. The TTL and the address togetherdefine the scope with which multicast packets sent in thisconference will be sent. TTL values must be in the range 0-255. The TTL for the session is appended to theaddress using a slash as a separator. An example is: c=IN IP4 224.2.1.1/127 Hierarchical or layered encoding schemesare data streams where the encoding from a single media source issplit into a number of layers. The receiver can choose the desiredquality (and hence bandwidth) by only subscribing to a subsetof these layers. Such layered encodings are normally transmittedin multiple multicast groups to allow multicast pruning. Thistechnique keeps unwanted traffic from sites only requiring certainlevels of the hierarchy. For applications requiring multiplemulticast groups, we allow the following notation to be used for theconnection address: <base multicast address>/<ttl>/<numberof addresses> If the number of addresses is not given itis assumed to be one. Multicast addresses so assigned arecontiguously allocated above the base address, so that, for example: c=IN IP4 224.2.1.1/127/3 would state that addresses 224.2.1.1,224.2.1.2 and 224.2.1.3 are to be used at a ttl of 127. This issemantically identical to including multiple "c=" lines ina media description: c=IN IP4 224.2.1.1/127 c=IN IP4 224.2.1.2/127 c=IN IP4 224.2.1.3/127 Multiple addresses or "c=" linescan only be specified on a per- media basis, and not for a session-level"c=" field. It is illegal for the slash notationdescribed above to be used for IP unicast addresses. Bandwidth b=<modifier>:<bandwidth-value> o This specifies the proposed bandwidth tobe used by the session or media, and is optional. o <bandwidth-value> is in kilobitsper second o <modifier> is a single alphanumericword giving the meaning of the bandwidth figure. o Two modifiers are initially defined: CT Conference Total: An implicit maximumbandwidth is associated with each TTL on the Mbone or within aparticular multicast administrative scope region (the Mbonebandwidth vs. TTL limits are given in the MBone FAQ). If the bandwidthof a session or media in a session is different from the bandwidthimplicit from the scope, a `b=CT:...' line should be supplied forthe session giving the proposed upper limit to the bandwidth used.The primary purpose of this is to give an approximate idea as towhether two or more conferences can co-exist simultaneously. AS Application-Specific Maximum: Thebandwidth is interpreted to be application-specific, i.e., will be theapplication's concept of maximum bandwidth. Normally this willcoincide with what is set on the application's "maximumbandwidth" control if applicable. Note that CT gives a total bandwidth figurefor all the media at all sites. AS gives a bandwidth figure fora single media at a single site, although there may be manysites sending simultaneously. o Extension Mechanism: Tool writers candefine experimental bandwidth modifiers by prefixing their modifier with"X-". For example: b=X-YZ:128 SDP parsers should ignore bandwidth fieldswith unknown modifiers. Modifiers should be alpha-numeric and,although no length limit is given, they are recommended to be short. Times, Repeat Times and Time Zones t=<start time> <stop time> o "t=" fields specify the startand stop times for a conference session. Multiple "t=" fields maybe used if a session is active at multiple irregularly spaced times; eachadditional "t=" field specifies an additional period of time forwhich the session will be active. If the session is active atregular times, an "r=" field (see below) should be used inaddition to and following a "t=" field - in which case the"t=" field specifies the start and stop times of the repeat sequence. o The first and second sub-fields give thestart and stop times for the conference respectively. These valuesare the decimal representation of Network Time Protocol(NTP) time values in seconds [1]. To convert these values toUNIX time, subtract decimal 2208988800. o If the stop-time is set to zero, then thesession is not bounded, though it will not become active untilafter the start-time. If the start-time is also zero, the session isregarded as permanent. User interfaces should strongly discouragethe creation of unbounded and permanent sessions as theygive no information about when the session is actually going toterminate, and so make scheduling difficult. The general assumption may be made, whendisplaying unbounded sessions that have not timed out to theuser, that an unbounded session will only be active until half anhour from the current time or the session start time, whicheveris the later. If behaviour other than this is required, anend-time should be given and modified as appropriate when newinformation becomes available about when the session should really end. Permanent sessions may be shown to the useras never being active unless there are associated repeat timeswhich state precisely when the session will be active. In general,permanent sessions should not be created for any session expected tohave a duration of less than 2 months, and should be discouragedfor sessions expected to have a duration of less than 6 months. r=<repeat interval> <activeduration> <list of offsets from start- time> o "r=" fields specify repeattimes for a session. For example, if a session is active at 10am on Monday and11am on Tuesday for one hour each week for three months, then the<start time> in the corresponding "t=" field would bethe NTP representation of 10am on the first Monday, the <repeatinterval> would be 1 week, the <active duration> would be 1 hour,and the offsets would be zero and 25 hours. The corresponding"t=" field stop time would be the NTP representation of the end of the lastsession three months later. By default all fields are inseconds, so the "r=" and "t=" fields might be: t=3034423619 3042462419 r=604800 3600 0 90000 To make announcements more compact, timesmay also be given in units of days, hours or minutes. The syntax forthese is a number immediately followed by a singlecase-sensitive character. Fractional units are not allowed - asmaller unit should be used instead. The following unit specificationcharacters are allowed: d - days (86400 seconds) h - minutes (3600 seconds) m - minutes (60 seconds) s - seconds (allowed for completeness butnot recommended) Thus, the above announcement could alsohave been written: r=7d 1h 0 25h Monthly and yearly repeats cannot currentlybe directly specified with a single SDP repeat time - instead separate"t" fields should be used to explicitly list the sessiontimes. z=<adjustment time> <offset><adjustment time> <offset> .... o To schedule a repeated session whichspans a change from daylight- saving time to standard time or vice-versa,it is necessary to specify offsets from the base repeat times.This is required because different time zones change time atdifferent times of day, different countries change to or fromdaylight time on different dates, and some countries do not havedaylight saving time at all. Thus in order to schedule a session that isat the same time winter and summer, it must be possible to specifyunambiguously by whose time zone a session is scheduled. Tosimplify this task for receivers, we allow the sender to specifythe NTP time that a time zone adjustment happens and the offset fromthe time when the session was first scheduled. The"z" field allows the sender to specify a list of these adjustment timesand offsets from the base time. An example might be: z=2882844526 -1h 2898848070 0 This specifies that at time 2882844526 thetime base by which the session's repeat times are calculated isshifted back by 1 hour, and that at time 2898848070 the session'soriginal time base is restored. Adjustments are always relativeto the specified start time - they are not cumulative. o If a session is likely to last severalyears, it is expected that the session announcement will be modifiedperiodically rather than transmit several years worth of adjustmentsin one announcement. Encryption Keys k=<method> k=<method>:<encryption key> o The session description protocol may beused to convey encryption keys. A key field is permitted before thefirst media entry (in which case it applies to all media in thesession), or for each media entry as required. o The format of keys and their usage isoutside the scope of this document, but see [3]. o The method indicates the mechanism to beused to obtain a usable key by external means, or from the encodedencryption key given. The following methods are defined: k=clear:<encryption key> The encryption key (as described in [3] forRTP media streams under the AV profile) is includeduntransformed in this key field. k=base64:<encoded encryption key> The encryption key (as described in [3] forRTP media streams under the AV profile) is included in thiskey field but has been base64 encoded because it includescharacters that are prohibited in SDP. k=uri:<URI to obtain key> A Universal Resource Identifier as used byWWW clients is included in this key field. The URI refersto the data containing the key, and may requireadditional authentication before the key can be returned. When arequest is made to the given URI, the MIME content-type of thereply specifies the encoding for the key in the reply. The keyshould not be obtained until the user wishes to join thesession to reduce synchronisation of requests to the WWWserver(s). k=prompt No key is included in this SDP description,but the session or media stream referred to by this key fieldis encrypted. The user should be prompted for the key whenattempting to join the session, and this user-supplied key shouldthen be used to decrypt the media streams. Attributes a=<attribute> a=<attribute>:<value> Attributes are the primary means forextending SDP. Attributes may be defined to be used as"session-level" attributes, "media-level" attributes, or both. A media description may have any number ofattributes ("a=" fields) which are media specific. These arereferred to as "media-level" attributes and add information about themedia stream. Attribute fields can also be added before the firstmedia field; these "session-level" attributes conveyadditional information that applies to the conference as a whole rather than toindividual media; an example might be the conference's floorcontrol policy. Attribute fields may be of two forms: o property attributes. A property attributeis simply of the form "a=<flag>". These arebinary attributes, and the presence of the attribute conveys that the attribute is aproperty of the session. An example might be "a=recvonly". o value attributes. A value attribute is ofthe form "a=<attribute>:<value>".An example might be that a whiteboard could have the value attribute"a=orient:landscape" Attribute interpretation depends on themedia tool being invoked. Thus receivers of session descriptionsshould be configurable in their interpretation of announcements ingeneral and of attributes in particular. Attribute names must be in the US-ASCIIsubset of ISO-10646/UTF-8. Attribute values are byte strings, and MAYuse any byte value except 0x00 (Nul), 0x0A (LF), and 0x0D (CR). Bydefault, attribute values are to be interpreted as in ISO-10646character set with UTF-8 encoding. Unlike other text fields,attribute values are NOT normally affected by the `charset'attribute as this would make comparisons against known valuesproblematic. However, when an attribute is defined, it can be defined tobe charset-dependent, in which case it's value should be interpretedin the session charset rather than in ISO-10646. Attributes that will be commonly used canbe registered with IANA (see Appendix B). Unregistered attributesshould begin with "X-" to prevent inadvertent collision withregistered attributes. In either case, if an attribute is received that isnot understood, it should simply be ignored by the receiver. Media Announcements m=<media> <port><transport> <fmt list> A session description may contain a numberof media descriptions. Each media description starts with an"m=" field, and is terminated by either the next "m=" field orby the end of the session description. A media field also has severalsub-fields: o The first sub-field is the media type.Currently defined media are "audio", "video","application", "data" and "control", though this list may be extended as new communicationmodalities emerge (e.g., telepresense). The difference between"application" and "data" is that the former is a media flow such aswhiteboard information, and the latter is bulk-data transfer such asmulticasting of program executables which will not typically bedisplayed to the user. "control" is used to specify anadditional conference control channel for the session. o The second sub-field is the transportport to which the media stream will be sent. The meaning of thetransport port depends on the network being used as specified in therelevant "c" field and on the transport protocol defined in thethird sub-field. Other ports used by the media application (suchas the RTCP port, see [2]) should be derived algorithmically fromthe base media port. Note: For transports based on UDP, thevalue should be in the range 1024 to 65535 inclusive. For RTP complianceit should be an even number. For applications where hierarchicallyencoded streams are being sent to a unicast address, it may benecessary to specify multiple transport ports. This is done using asimilar notation to that used for IP multicast addresses in the"c=" field: m=<media> <port>/<number ofports> <transport> <fmt list> In such a case, the ports used depend onthe transport protocol. For RTP, only the even ports are used fordata and the corresponding one-higher odd port is usedfor RTCP. For example: m=video 49170/2 RTP/AVP 31 would specify that ports 49170 and 49171form one RTP/RTCP pair and 49172 and 49173 form the second RTP/RTCPpair. RTP/AVP is the transport protocol and 31 is the format(see below). It is illegal for both multiple addressesto be specified in the "c=" field and for multiple portsto be specified in the "m=" field in the same session description. o The third sub-field is the transportprotocol. The transport protocol values are dependent on theaddress-type field in the "c=" fields. Thus a "c=" field of IP4defines that the transport protocol runs over IP4. For IP4, it isnormally expected that most media traffic will be carried as RTP overUDP. The following transport protocols are preliminarilydefined, but may be extended through registration of new protocols withIANA: - RTP/AVP - the IETF's Realtime TransportProtocol using the Audio/Video profile carried over UDP. - udp - User Datagram Protocol If an application uses a single combinedproprietary media format and transport protocol over UDP, thensimply specifying the transport protocol as udp and using theformat field to distinguish the combined protocol is recommended. If atransport protocol is used over UDP to carry several distinctmedia types that need to be distinguished by a session directory, thenspecifying the transport protocol and media format separately isnecessary. RTP is an example of a transport-protocol thatcarries multiple payload formats that must be distinguished by thesession directory for it to know how to start appropriate tools,relays, mixers or recorders. The main reason to specify thetransport-protocol in addition to the media format is that the same standardmedia formats may be carried over different transport protocolseven when the network protocol is the same - a historical exampleis vat PCM audio and RTP PCM audio. In addition, relays andmonitoring tools that are transport-protocol-specific butformat-independent are possible. For RTP media streams Operating under theRTP Audio/Video Profile [3], the protocol field is"RTP/AVP". Should other RTP profiles be defined in the future, their profiles willbe specified in the same way. For example, the protocol field"RTP/XYZ" would specify RTP operating under a profile whose short nameis "XYZ". o The fourth and subsequent sub-fields aremedia formats. For audio and video, these will normally be a mediapayload type as defined in the RTP Audio/Video Profile. When a list of payload formats is given,this implies that all of these formats may be used in the session,but the first of these formats is the default format for thesession. For media whose transport protocol is notRTP or UDP the format field is protocol specific. Such formatsshould be defined in an additional specification document. For media whose transport protocol is RTP,SDP can be used to provide a dynamic binding of media encodingto RTP payload type. The encoding names in the RTP AV Profile donot specify unique audio encodings (in terms of clock rate andnumber of audio channels), and so they are not useddirectly in SDP format fields. Instead, the payload type number should beused to specify the format for static payload types and thepayload type number along with additional encoding information shouldbe used for dynamically allocated payload types. An example of a static payload type isu-law PCM coded single channel audio sampled at 8KHz. This iscompletely defined in the RTP Audio/Video profile as payload type 0,so the media field for such a stream sent to UDP port 49232 is: m=video 49232 RTP/AVP 0 An example of a dynamic payload type is 16bit linear encoded stereo audio sampled at 16KHz. If we wishto use dynamic RTP/AVP payload type 98 for such a stream,additional information is required to decode it: m=video 49232 RTP/AVP 98 a=rtpmap:98 L16/16000/2 The general form of an rtpmap attribute is: a=rtpmap:<payload type> <encodingname>/<clock rate>[/<encoding parameters>] For audio streams, <encodingparameters> may specify the number of audio channels. This parameter may beomitted if the number of channels is one provided no additionalparameters are needed. For video streams, no encoding parameters arecurrently specified. Additional parameters may be defined in thefuture, but codecspecific parameters should not beadded. Parameters added to an rtpmap attribute should only be thoserequired for a session directory to make the choice of appropriatemedia too to participate in a session. Codec-specificparameters should be added in other attributes. Up to one rtpmap attribute can be definedfor each media format specified. Thus we might have: m=audio 49230 RTP/AVP 96 97 98 a=rtpmap:96 L8/8000 a=rtpmap:97 L16/8000 a=rtpmap:98 L16/11025/2 RTP profiles that specify the use ofdynamic payload types must define the set of valid encoding namesand/or a means to register encoding names if that profile is to beused with SDP. Experimental encoding formats can also bespecified using rtpmap. RTP formats that are not registered asstandard format names must be preceded by "X-". Thus a newexperimental redundant audio stream called GSMLPC using dynamic payloadtype 99 could be specified as: m=video 49232 RTP/AVP 99 a=rtpmap:99 X-GSMLPC/8000 Such an experimental encoding requires thatany site wishing to receive the media stream has relevantconfigured state in its session directory to know which tools areappropriate. Note that RTP audio formats typically donot include information about the number of samples per packet. Ifa non-default (as defined in the RTP Audio/Video Profile)packetisation is required, the "ptime" attribute is used asgiven below. For more details on RTP audio and videoformats, see [3]. o Formats for non-RTP media should beregistered as MIME content types as described in Appendix B. Forexample, the LBL whiteboard application might be registered as MIMEcontent-type application/wb with encoding considerations specifyingthat it operates over UDP, with no appropriate file format. In SDPthis would then be expressed using a combination of the"media" field and the "fmt" field, as follows: m=application 32416 udp wb Suggested Attributes The following attributes are suggested.Since application writers may add new attributes as they arerequired, this list is not exhaustive. a=cat:<category> This attribute gives the dot-separatedhierarchical category of the session. This is to enable a receiverto filter unwanted sessions by category. It would probablyhave been a compulsory separate field, except for its experimentalnature at this time. It is a session-level attribute, and is notdependent on charset. a=keywds:<keywords> Like the cat attribute, this is to assistidentifying wanted sessions at the receiver. This allows areceiver to select interesting session based on keywordsdescribing the purpose of the session. It is a session-levelattribute. It is a charset dependent attribute, meaning that its valueshould be interpreted in the charset specified for the sessiondescription if one is specified, or by default in ISO10646/UTF-8. a=tool:<name and version of tool> This gives the name and version number ofthe tool used to create the session description. It is asession-level attribute, and is not dependent on charset. a=ptime:<packet time> This gives the length of time inmilliseconds represented by the media in a packet. This is probably onlymeaningful for audio data. It should not be necessary to knowptime to decode RTP or vat audio, and it is intended as arecommendation for the encoding/packetisation of audio. It is amedia attribute, and is not dependent on charset. a=recvonly This specifies that the tools should bestarted in receive-only mode where applicable. It can be either asession or media attribute, and is not dependent on charset. a=sendrecv This specifies that the tools should bestarted in send and receive mode. This is necessary forinteractive conferences with tools such as wb which defaults to receiveonly mode. It can be either a session or media attribute, and isnot dependent on charset. a=sendonly This specifies that the tools should bestarted in send-only mode. An example may be where a differentunicast address is to be used for a traffic destination than fora traffic source. In such a case, two media descriptions may beuse, one sendonly and one recvonly. It can be either a session ormedia attribute, but would normally only be used as a mediaattribute, and is not dependent on charset. a=orient:<whiteboard orientation> Normally this is only used in a whiteboardmedia specification. It specifies the orientation of a thewhiteboard on the screen. It is a media attribute. Permitted valuesare `portrait', `landscape' and `seascape' (upside downlandscape). It is not dependent on charset a=type:<conference type> This specifies the type of the conference.Suggested values are `broadcast', `meeting', `moderated', `test'and `H332'. `recvonly' should be the default for`type:broadcast' sessions, `type:meeting' should imply `sendrecv' and`type:moderated' should indicate the use of a floor controltool and that the media tools are started so as to"mute" new sites joining the conference. Specifying the attribute type:H332indicates that this loosely coupled session is part of a H.332 sessionas defined in the ITU H.332 specification [10]. Media toolsshould be started `recvonly'. Specifying the attribute type:test issuggested as a hint that, unless explicitly requested otherwise,receivers can safely avoid displaying this session description tousers. The type attribute is a session-levelattribute, and is not dependent on charset. a=charset:<character set> This specifies the character set to be usedto display the session name and information data. Bydefault, the ISO-10646 character set in UTF-8 encoding is used. Ifa more compact representation is required, other charactersets may be used such as ISO-8859-1 for Northern Europeanlanguages. In particular, the ISO 8859-1 is specified with the followingSDP attribute: a=charset:ISO-8859-1 This is a session-level attribute; if thisattribute is present, it must be before the first media field.The charset specified MUST be one of those registered with IANA,such as ISO-8859-1. The character set identifier is a US-ASCIIstring and MUST be compared against the IANA identifiers usinga case-insensitive comparison. If the identifier is notrecognised or not supported, all strings that are affected byit SHOULD be regarded as byte strings. Note that a character set specified MUSTstill prohibit the use of bytes 0x00 (Nul), 0x0A (LF) and 0x0d(CR). Character sets requiring the use of these characters MUSTdefine a quoting mechanism that prevents these bytesappearing within text fields. a=sdplang:<language tag> This can be a session level attribute or amedia level attribute. As a session level attribute, it specifiesthe language for the session description. As a media levelattribute, it specifies the language for any media-level SDP informationfield associated with that media. Multiple sdplangattributes can be provided either at session or media level ifmultiple languages in the session description or media use multiplelanguages, in which case the order of the attributes indicatesthe order of importance of the various languages in thesession or media from most important to least important. In general, sending session descriptionsconsisting of multiple languages should be discouraged. Instead,multiple descriptions should be sent describing the session, onein each language. However this is not possible with alltransport mechanisms, and so multiple sdplang attributes are allowedalthough not recommended. The sdplang attribute value must be asingle RFC1766 language tag in US-ASCII. It is not dependent on thecharset attribute. An sdplang attribute SHOULD be specifiedwhen a session is of sufficient scope to cross geographicboundaries where the language of recipients cannot be assumed,or where the session is in a different language from the locallyassumed norm. a=lang:<language tag> This can be a session level attribute or amedia level attribute. As a session level attribute, it specifiesthe default language for the session being described. As a medialevel attribute, it specifies the language for that media,overriding any session- level language specified. Multiple langattributes can be provided either at session or media levelif multiple languages if the session description or media usemultiple languages, in which case the order of the attributesindicates the order of importance of the various languages in thesession or media from most important to least important. The lang attribute value must be a singleRFC1766 language tag in US-ASCII. It is not dependent on thecharset attribute. A lang attribute SHOULD be specified when asession is of sufficient scope to cross geographicboundaries where the language of recipients cannot be assumed,or where the session is in a different language from the locally assumednorm. a=framerate:<frame rate> This gives the maximum video frame rate inframes/sec. It is intended as a recommendation for theencoding of video data. Decimal representations of fractionalvalues using the notation "<integer>.<fraction>"are allowed. It is a media attribute, is only defined for video media, and is notdependent on charset. a=quality:<quality> This gives a suggestion for the quality ofthe encoding as an integer value. The intention of the quality attribute forvideo is to specify a non-default trade-off between frame-rateand still-image quality. For video, the value in the range 0 to 10,with the following suggested meaning: 10 - the best still-image quality thecompression scheme can give. 5 - the default behaviour given no qualitysuggestion. 0 - the worst still-image quality the codecdesigner thinks is still usable. It is a media attribute, and is notdependent on charset. a=fmtp:<format> <format specificparameters> This attribute allows parameters that arespecific to a particular format to be conveyed in a waythat SDP doesn't have to understand them. The format must be oneof the formats specified for the media. Format-specificparameters may be any set of parameters required to be conveyedby SDP and given unchanged to the media tool that will usethis format. It is a media attribute, and is notdependent on charset. 6.1. Communicating Conference ControlPolicy There is some debate over the way conferencecontrol policy should be communicated. In general, the authorsbelieve that an implicit declarative style of specifying conferencecontrol is desirable where possible. A simple declarative style uses a singleconference attribute field before the first media field, possiblysupplemented by properties such as `recvonly' for some of the mediatools. This conference attribute conveys the conference controlpolicy. An example might be: a=type:moderated In some cases, however, it is possible thatthis may be insufficient to communicate the details of an unusualconference control policy. If this is the case, then a conferenceattribute specifying external control might be set, and then one or more"media" fields might be used to specify the conference controltools and configuration data for those tools. An example is an ITU H.332session: c=IN IP4 224.5.6.7 a=type:H332 m=audio 49230 RTP/AVP 0 m=video 49232 RTP/AVP 31 m=application 12349 udp wb m=control 49234 H323 mc c=IN IP4 134.134.157.81 In this example, a general conferenceattribute (type:H332) is specified stating that conference controlwill be provided by an external H.332 tool, and a contactaddresses for the H.323 session multipoint controller is given. In this document, only the declarativestyle of conference control declaration is specified. Other forms ofconference control should specify an appropriate type attribute, andshould define the implications this has for control media. 7. Security Considerations SDP is a session description format thatdescribes multimedia sessions. A session description should notbe trusted unless it has been obtained by an authenticated transportprotocol from a trusted source. Many different transport protocolsmay be used to distribute session description, and the nature of theauthentication will differ from transport to transport. One transport that will frequently be usedto distribute session descriptions is the Session AnnouncementProtocol (SAP). SAP provides both encryption and authenticationmechanisms but due to the nature of session announcements it islikely that there are many occasions where the originator of a sessionannouncement cannot be authenticated because they are previouslyunknown to the receiver of the announcement and because no commonpublic key infrastructure is available. On receiving a session description over anunauthenticated transport mechanism or from an untrusted party,software parsing the session should take a few precautions. Session descriptioncontain information required to start software onthe receivers system. Software that parses a session descriptionMUST not be able to start other software except that which isspecifically configured as appropriate software to participate in multimediasessions. It is normally considered INAPPROPRIATE forsoftware parsing a session description to start, on a user's system,software that is appropriate to participate in multimediasessions, without the user first being informed that such softwarewill be started and giving their consent. Thus a session descriptionarriving by session announcement, email, session invitation, orWWW page SHOULD not deliver the user into an {it interactive}multimedia session without the user being aware that this will happen.As it is not always simple to tell whether a session isinteractive or not, applications that are unsure should assume sessions areinteractive. In this specification, there are noattributes which would allow the recipient of a session description to beinformed to start multimedia tools in a mode where they default totransmitting. Under some circumstances it might be appropriate todefine such attributes. If this is done an application parsing asession description containing such attributes SHOULD either ignore them,or inform the user that joining this session will result in theautomatic transmission of multimedia data. The default behaviour foran unknown attribute is to ignore it. Session descriptions may be parsed atintermediate systems such as firewalls for the purposes of opening ahole in the firewall to allow the participation in multimedia sessions.It is considered INAPPROPRIATE for a firewall to open suchholes for unicast data streams unless the session descriptioncomes in a request from inside the firewall. For multicast sessions, it is likely thatlocal administrators will apply their own policies, but the exclusiveuse of "local" or "site- local" administrative scope within thefirewall and the refusal of the firewall to open a hole for such scopeswill provide separation of global multicast sessions from localones. Appendix A: SDP Grammar This appendix provides an Augmented BNFgrammar for SDP. ABNF is defined in RFC2234. announcement = proto-version origin-field session-name-field information-field uri-field email-fields phone-fields connection-field bandwidth-fields time-fields key-field attribute-fields media-descriptions proto-version = "v=" 1*DIGIT CRLF ;this memo describes version 0 origin-field = "o=" usernamespace sess-id space sess-version space nettype space addrtype space addr CRLF session-name-field = "s=" textCRLF information-field = ["i=" textCRLF] uri-field = ["u=" uri CRLF] email-fields = *("e="email-address CRLF) phone-fields = *("p="phone-number CRLF) connection-field = ["c=" nettypespace addrtype space connection-address CRLF] ;a connection field must be present ;in every media description or at the ;session-level bandwidth-fields = *("b=" bwtype":" bandwidth CRLF) time-fields = 1*( "t=" start-timespace stop-time *(CRLF repeat-fields) CRLF) [zone-adjustments CRLF] repeat-fields = "r="repeat-interval space typed-time 1*(space typed-time) zone-adjustments = time space["-"] typed-time *(space time space ["-"]typed-time) key-field = ["k=" key-type CRLF] key-type = "prompt" "clear:" key-data "base64:" key-data "uri:" uri key-data = email-safe "~" " attribute-fields = *("a="attribute CRLF) media-descriptions = *( media-field information-field *(connection-field) bandwidth-fields key-field attribute-fields ) media-field = "m=" media spaceport ["/" integer] space proto 1*(space fmt) CRLF media = 1*(alpha-numeric) ;typically "audio","video", "application" ;or "data" fmt = 1*(alpha-numeric) ;typically an RTP payload type for audio ;and video media proto = 1*(alpha-numeric) ;typically "RTP/AVP" or"udp" for IP4 port = 1*(DIGIT) ;should in the range "1024" to"65535" inclusive ;for UDP based media attribute = (att-field ":"att-value) att-field att-field = 1*(alpha-numeric) att-value = byte-string sess-id = 1*(DIGIT) ;should be unique for this originatingusername/host sess-version = 1*(DIGIT) ;0 is a new session connection-address = multicast-address addr multicast-address = 3*(decimal-uchar".") decimal-uchar "/" ttl [ "/" integer ] ;multicast addresses may be in the range ;224.0.0.0 to 239.255.255.255 ttl = decimal-uchar start-time = time "0" stop-time = time "0" time = POS-DIGIT 9*(DIGIT) ;sufficient for 2 more centuries repeat-interval = typed-time typed-time = 1*(DIGIT)[fixed-len-time-unit] fixed-len-time-unit = "d""h" "m" "s" bwtype = 1*(alpha-numeric) bandwidth = 1*(DIGIT) username = safe ;pretty wide definition, but doesn'tinclude space email-address = email email "("email-safe ")" email-safe "<" email">" email = ;defined in RFC822 uri= ;defined in RFC1630 phone-number = phone phone "("email-safe ")" email-safe "<" phone">" phone = "+" POS-DIGIT 1*(space"-" DIGIT) ;there must be a space or hyphen betweenthe ;international code and the rest of thenumber. nettype = "IN" ;list to be extended addrtype = "IP4" "IP6" ;list to be extended addr = FQDN unicast-address FQDN = 4*(alpha-numeric"-"".") ;fully qualified domain name as specifiedin RFC1035 unicast-address = IP4-address IP6-address IP4-address = b1 "."decimal-uchar "." decimal-uchar "." b4 b1 = decimal-uchar ;less than "224"; not"0" or "127" b4 = decimal-uchar ;not "0" IP6-address = ;to be defined text = byte-string ;default is to interpret this as IS0-10646UTF8 ;ISO 8859-1 requires a"a=charset:ISO-8859-1" ;session-level attribute to be used byte-string =1*(0x01..0x090x0b0x0c0x0e..0xff) ;any byte except NUL, CR or LF decimal-uchar = DIGIT POS-DIGIT DIGIT ("1" 2*(DIGIT)) ("2"("0""1""2""3""4") DIGIT) ("2" "5"("0""1""2""3""4""5")) integer = POS-DIGIT *(DIGIT) alpha-numeric = ALPHA DIGIT DIGIT = "0" POS-DIGIT POS-DIGIT ="1""2""3""4""5""6""7""8""9" ALPHA ="a""b""c""d""e""f""g""h""i""j""k" "l""m""n""o""p""q""r""s""t""u""v" "w""x""y""z""A""B""C""D""E""F""G" "H""I""J""K""L""M""N""O""P""Q""R" "S""T""U""V""W""X""Y""Z" email-safe = safe space tab safe = alpha-numeric "'" "'" "-""." "/" ":" "?" """ "#" "$""&" "*" ";" "=" "@""[" "]" "^" "_""`" "{" "" "}" "+" "~" " space = %d32 tab = %d9 CRLF = %d13.10 Appendix B: Guidelines for registering SDPnames with IANA There are seven field names that may beregistered with IANA. Using the terminology in the SDP specificationBNF, they are "media", "proto", "fmt","att-field", "bwtype", "nettype" and"addrtype". "media" (eg, audio, video,application, data). Packetized media types, such as those usedby RTP, share the namespace used by media types registry[RFC2048] (i.e. "MIME types"). The list of valid media namesis the set of top-level MIME content types. The set of media isintended to be small and not to be extended except under rarecircumstances. (The MIME subtype corresponds to the "fmt"parameter below). "proto" In general this should be an IETFstandards-track transport protocol identifier such as RTP/AVP (rfc1889 under the rfc 1890 profile). However, people will want to invent theirown proprietary transport protocols. Some of these shouldbe registered as a "fmt" using "udp" asthe protocol and some of which probably can't be. Where the protocol and the application areintimately linked, such as with the LBL whiteboard wb whichused a proprietary and special purpose protocol over UDP, theprotocol name should be "udp" and the format name thatshould be registered is "wb". The rules for formats (see below) apply to suchregistrations. Where the proprietary transport protocolreally carries many different data formats, it is possible toregister a new protocol name with IANA. In such a case, an RFCMUSTbe produced describing the protocol and referenced inthe registration. Such an RFCMAY be informational, although it ispreferable if it is standards-track. "fmt" The format namespace is dependent on thecontext of the "proto" field, so a format cannot be registeredwithout specifying one or more transport protocols that it appliesto. Formats cover all the possible encodingsthat might want to be transported in a multimedia session. For RTP formats that have been assignedstatic payload types, the payload type number is used. For RTPformats using a dynamic payload type number, the dynamic payloadtype number is given as the format and an additional "rtpmap"attribute specifies the format and parameters. For non-RTP formats, any unregisteredformat name may be registered through the MIME-typeregistration process [RFC2048]. The type given here is the MIME subtypeonly (the top-level MIME content type is specified by the mediaparameter). The MIME type registration SHOULD reference astandards-track RFCwhich describes the transport protocol for thismedia type. If there is an existing MIME type for this format,the MIME registration should be augmented to reference thetransport specification for this media type. If there is not anexisting MIME type for this format, and there exists no appropriatefile format, this should be noted in the encoding considerations as"no appropriate file format". "att-field" (Attribute names) Attribute field names MAY be registeredwith IANA, although this is not compulsory, and unknown attributesare simply ignored. When an attribute is registered, it must beaccompanied by a brief specification stating the following: o contact name, email address and telephonenumber o attribute-name (as it will appear in SDP) o long-form attribute name in English o type of attribute (session level, medialevel, or both) o whether the attribute value is subject tothe charset attribute. o a one paragraph explanation of thepurpose of the attribute. o a specification of appropriate attributevalues for this attribute. IANA will not sanity check such attributeregistrations except to ensure that they do not clash with existingregistrations. Although the above is the minimum that IANAwill accept, if the attribute is expected to see widespread useand interoperability is an issue, authors are encouraged toproduce a standards-track RFCthat specifies the attribute moreprecisely. Submitters of registrations should ensurethat the specification is in the spirit of SDP attributes, mostnotably that the attribute is platform independent in thesense that it makes no implicit assumptions about operatingsystems and does not name specific pieces of software in a mannerthat might inhibit interoperability. "bwtype" (bandwidth specifiers) A proliferation of bandwidth specifiers isstrongly discouraged. New bandwidth specifiers may be registeredwith IANA. The submission MUST reference a standards-trackRFCspecifying the semantics of the bandwidth specifierprecisely, and indicating when it should be used, and why theexisting registered bandwidth specifiers do not suffice. "nettype" (Network Type) New network types may be registered withIANA if SDP needs to be used in the context of non-internetenvironments. Whilst these are not normally the preserve of IANA,there may be circumstances when an Internet application needs tointeroperate with a non- internet application, such as whengatewaying an internet telephony call into the PSTN. The number ofnetwork types should be small and should be rarely extended. Anew network type cannot be registered without registering atleast one address type to be used with that network type. Anew network type registration MUST reference an RFCwhichgives details of the network type and address type and specifieshow and when they would be used. Such an RFCMAY beInformational. "addrtype" (Address Type) New address types may be registered withIANA. An address type is only meaningful in the context of anetwork type, and any registration of an address type MUSTspecify a registered network type, or be submitted along with a networktype registration. A new address type registration MUSTreference an RFCgiving details of the syntax of the address type.Such an RFCMAY be Informational. Address types are notexpected to be registered frequently. Registration Procedure To register a name the above guidelinesshould be followed regarding the required level of documentation that isrequired. The registration itself should be sent to IANA.Attribute registrations should include the information given above.Other registrations should include the following additionalinformation: o contact name, email address and telephonenumber o name being registered (as it will appearin SDP) o long-form name in English o type of name ("media","proto", "fmt", "bwtype", "nettype", or "addrtype") o a one paragraph explanation of thepurpose of the registered name. o a reference to the specification (egRFCnumber) of the registered name. IANA may refer any registration to the IESGor to any appropriate IETF working group for review, and mayrequest revisions to be made before a registration will be made. Appendix C: Authors' Addresses Mark Handley Information Sciences Institute c/o MIT Laboratory for Computer Science 545 Technology Square Cambridge, MA 02139 United States electronic mail: mjh@isi.edu Van Jacobson MS 46a-1121 Lawrence Berkeley Laboratory Berkeley, CA 94720 United States electronic mail: van@ee.lbl.gov Acknowledgments Many people in the IETF MMUSIC workinggroup have made comments and suggestions contributing to this document.In particular, we would like to thank Eve Schooler, Steve Casner,Bill Fenner, Allison Mankin, Ross Finlayson, Peter Parnes, JoergOtt, Carsten Bormann, Rob Lanphier and Steve Hanna. References [1] Mills, D., "Network Time Protocol(version 3) specification and implementation", RFC1305, March 1992. [2] Schulzrinne, H., Casner, S., Frederick,R. and V. Jacobson, "RTP: A Transport Protocol for Real-TimeApplications", RFC1889, January 1996. [3] Schulzrinne, H., "RTP Profile forAudio and Video Conferences with Minimal Control", RFC1890,January 1996 [4] Handley, M., "SAP - SessionAnnouncement Protocol", Work in Progress. [5] V. Jacobson, S. McCanne, "vat -X11-based audio teleconferencing tool" vat manual page, LawrenceBerkeley Laboratory, 1994. [6] The Unicode Consortium, "TheUnicode Standard -- Version 2.0", Addison-Wesley, 1996. [7] ISO/IEC 10646-1:1993. InternationalStandard -- Information technol- ogy -- Universal Multiple-OctetCoded Character Set (UCS) -- Part 1: Architecture and Basic MultilingualPlane. Five amendments and a techn- ical corrigendum have beenpublished up to now. UTF-8 is described in Annex R, published asAmendment 2. [8] Goldsmith, D., and M. Davis,"Using Unicode with MIME", RFC1641, July 1994. [9] Yergeau, F., "UTF-8, atransformation format of Unicode and ISO 10646", RFC2044, October 1996. [10] ITU-T Recommendation H.332 (1998):"Multimedia Terminal for Receiving Internet-based H.323Conferences", ITU, Geneva. [11] Handley, M., Schooler, E., and H.Schulzrinne, "Session Initiation Protocol (SIP)", Work inProgress. [12] Schulzrinne, H., Rao, A., and R.Lanphier, "Real Time Streaming Protocol (RTSP)", RFC2326, April 1998. Full Copyright Statement Copyright (C) The Internet Society (1998).All Rights Reserved. This document and translations of it may becopied and furnished to others, and derivative works that commenton or otherwise explain it or assist in its implementation may beprepared, copied, published and distributed, in whole or in part,without restriction of any kind, provided that the above copyrightnotice and this paragraph are included on all such copies and derivativeworks. However, this document itself may not be modified in anyway, such as by removing the copyright notice or references to theInternet Society or other Internet organizations, except as neededfor the purpose of developing Internet standards in which casethe procedures for copyrights defined in the InternetStandards process must be followed, or as required to translate itinto languages other than English. The limited permissions granted above areperpetual and will not be revoked by the Internet Society or itssuccessors or assigns. This document and the information containedherein is provided on an "AS IS" basis and THE INTERNETSOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THEUSE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANYIMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULARPURPOSE.
相关文章推荐
- SDP: Session Description Protocol(会话描述协议) (RFC2327)
- SDP: Session Description Protocol(会话描述协议)
- 会话描述协议 (SDP: Session Description Protocol)
- SDP(Session Description Protocol会话描述协议)
- SDP(Session Description Protocol)模型介绍(RFC3264)
- 【VOLTE】SDP Session Description Protocol 会话描述协议
- SDP (Session Description Protocol)
- RFC3407 - Session Description Protocol (SDP) Simple Capability Declaration
- SDP: Session Description Protocol(会话描述协议)
- RFC 4796 - The Session Description Protocol (SDP) Content Attrib
- RFC 3407 - Session Description Protocol (SDP) Simple Capability Declaration
- SDP (Session Description Protocol)
- 【SIP教程】 SDP(Session Description Protocol)会话描述协议
- [TCP/IP][2012-6-16] SDP ( Session Description Protocol )
- SDP:会话描述协议(Session Description Protocol)
- SDP(Session Description Protocol)模型介绍(RFC3264)
- 何謂 SDP ( Session Description Protocol )?
- SDP(Session Description Protocol)模型介绍
- SDP: Session Description Protocol(会话描述协议)
- SDP(会话描述协议)- Session Description Protocol