SDP
(Session Description
Protocol)
SDP is purely a format for session
description. It does not incorporate a
transport protocol and it is intended to use
different transport protocols as SIP, SAP,
RTSP, HTTP.
SDP
● Session Initiation
● Streaming Media
● Email and the WWW
● Multicast Session Announcement
Example of SDP Usage
In general, SDP must convey sufficient
information to enable applications to join a
session and to announce the resources to
be used to any non-participants that may
need to know.
SDP
● Session name and purpose
● Times the session is active
● The media comprising the session
● Information needed to receive those
media(addresses, ports,formats , etc.)
SDP
● "application/sdp"
● ISO 10646 character set in UTF-8
encoding.
● <type>=<value>
SDP Specification
● Session Description
● Time Description
● Media description
SDP description order
v= (protocol version)
o= (originator and session identifier)
s= (session name)
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information -- not required if included in
all media)
b=* (zero or more bandwidth information lines)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
Session Description
t= (time the session is active)
r=* (zero or more repeat times)
Time Description
m= (media name and transport address)
i=* (media title)
c=* (connection information -- optional if included at
session level)
b=* (zero or more bandwidth information lines)
k=* (encryption key)
a=* (zero or more media attribute lines)
Media Description
● Protocol version (“v=”)
v=0
● Origin (“o=”)
o=<username> <sess-id> <sess-version> <nettype>
<addrtype> <unicast-address>
● Session name (“s”)
s=<session name>
● Session information (“i=”)
i=<session description>
● URI (“u=”)
u=<uri>
● Email and Phone (“e=” and “p=”)
e=<email-address> (e=j.doe@example.com (Jane Doe))
p=<phone-number> (p=+1 617 555-6011)
● Connection Data (“c=”)
c=<nettype> <addrtype> <connection-address>
(c=IN IP4 224.2.36.42/127)
● Bandwidth (“b=”)
b=<bwtype>:<bandwidth>
● Timing (“t=”)
t=<start-time> <stop-time>
● Repeat time (“r=”)
r=<repeat interval> <active duration> <offsets from
start-time>
t=3034423619 3042462419
r=604800 3600 0 90000
● Encription Keys (“k=”)
k=<method>
k=<method>:<encryption key>
k=base64:<encoded encryption key>
● Attributes (“a=”)
a=<attribute>:<value>
● Media Description
m=<media> <port> <proto> <fmt>
m=video 49170/2 RTP/AVP 31
a=cat:<category>
a=keywds:<keywords>
a=tool:<name and version of tool>
a=ptime:<packet time>
a=maxptime:<maximum packet time>
a=rtpmap:<payload type> <encoding
name>/<clock rate> [/<encoding
parameters>]
SDP Attributes
a=recvonly
a=sendrecv
a=sendonly
a=inactive
a=orient:<orientation>
a=type:<conference type>
a=charset:<character set>
SDP Attributes
a=sdplang:<language tag>
a=framerate:<frame rate>
a=quality:<quality>
SDP Attributes
[Offer]
v=0
o=alice 2890844526 2890844526 IN IP4 host.atlanta.
example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 8 97
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 iLBC/8000
m=video 51372 RTP/AVP 31 32
a=rtpmap:31 H261/90000
a=rtpmap:32 MPV/90000
Audio and Video
[Answer]
v=0
o=bob 2808844564 2808844564 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 0 8
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
m=video 0 RTP/AVP 31
a=rtpmap:31 H261/90000
[Second-Offer]
v=0
o=alice 2890844526 2890844527 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 51372 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 0 RTP/AVP 31
a=rtpmap:31 H261/90000
Audio and Video
[Second-Answer]
v=0
o=bob 2808844564 2808844565 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 0 RTP/AVP 31
a=rtpmap:31 H261/90000
[Offer]
v=0
o=alice 2890844526 2890844526 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 97
a=rtpmap:0 PCMU/8000
a=rtpmap:97 iLBC/8000
m=audio 49172 RTP/AVP 98
a=rtpmap:98 telephone-event/8000
a=sendonly
Two Audio Streams
[Answer]
v=0
o=bob 2808844564 2808844564 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 97
a=rtpmap:97 iLBC/8000
m=audio 49174 RTP/AVP 98
a=rtpmap:98 telephone-event/8000
[Offer]
v=0
o=alice 2890844526 2890844526 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 97
a=rtpmap:0 PCMU/8000
a=rtpmap:97 iLBC/8000
Hold and Unhold
[Answer]
v=0
o=bob 2808844564 2808844564 IN IP4
host.biloxi.example.com
s=
c=IN IP4 placeholder.biloxi.example.
com
t=0 0
m=audio 49172 RTP/AVP 97
a=rtpmap:97 iLBC/8000
a=sendonly
[Second-Offer]
v=0
o=bob 2808844564 2808844565 IN IP4 host.
biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49170 RTP/AVP 97
a=rtpmap:97 iLBC/8000
Hold and Unhold
[Second-Answer]
v=0
o=alice 2890844526 2890844527 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49178 RTP/AVP 97
a=rtpmap:97 iLBC/8000
[Offer]
v=0
o=alice 2890844526 2890844526 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 97
a=rtpmap:0 PCMU/8000
a=rtpmap:97 iLBC/8000
m=audio 49172 RTP/AVP 98
a=rtpmap:98 telephone-event/8000
a=sendonly
Hold with two streams
[Answer]
v=0
o=bob 2808844564 2808844564 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 97
a=rtpmap:97 iLBC/8000
m=audio 49174 RTP/AVP 98
a=rtpmap:98 telephone-event/8000
a=recvonly
[Second-Offer]
v=0
o=bob 2808844564 2808844565 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 97
a=rtpmap:97 iLBC/8000
a=sendonly
m=audio 49174 RTP/AVP 98
a=rtpmap:98 telephone-event/8000
a=recvonly
Hold with two streams
[Second-Answer]
v=0
o=alice 2890844526 2890844527 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 97
a=rtpmap:0 PCMU/8000
a=rtpmap:97 iLBC/8000
m=audio 49172 RTP/AVP 98
a=rtpmap:98 telephone-event/8000
a=sendonly
[Offer]
v=0
o=alice 2890844526 2890844526 IN IP4
host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Audio, then Video Added
[Answer]
v=0
o=bob 2808844564 2808844564 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
[Second-Offer]
v=0
o=alice 2890844526 2890844527 IN IP4 host.
atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 49172 RTP/AVP 31
a=rtpmap:31 H261/90000
Audio, then Video Added
[Second-Answer]
v=0
o=bob 2808844564 2808844565 IN IP4
host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 49168 RTP/AVP 31
a=rtpmap:31 H261/90000

SDP (Session Description Protocol)

  • 1.
  • 2.
    SDP is purelya format for session description. It does not incorporate a transport protocol and it is intended to use different transport protocols as SIP, SAP, RTSP, HTTP. SDP
  • 3.
    ● Session Initiation ●Streaming Media ● Email and the WWW ● Multicast Session Announcement Example of SDP Usage
  • 4.
    In general, SDPmust convey sufficient information to enable applications to join a session and to announce the resources to be used to any non-participants that may need to know. SDP
  • 5.
    ● Session nameand purpose ● Times the session is active ● The media comprising the session ● Information needed to receive those media(addresses, ports,formats , etc.) SDP
  • 6.
    ● "application/sdp" ● ISO10646 character set in UTF-8 encoding. ● <type>=<value> SDP Specification
  • 7.
    ● Session Description ●Time Description ● Media description SDP description order
  • 8.
    v= (protocol version) o=(originator and session identifier) s= (session name) i=* (session information) u=* (URI of description) e=* (email address) p=* (phone number) c=* (connection information -- not required if included in all media) b=* (zero or more bandwidth information lines) z=* (time zone adjustments) k=* (encryption key) a=* (zero or more session attribute lines) Session Description
  • 9.
    t= (time thesession is active) r=* (zero or more repeat times) Time Description
  • 10.
    m= (media nameand transport address) i=* (media title) c=* (connection information -- optional if included at session level) b=* (zero or more bandwidth information lines) k=* (encryption key) a=* (zero or more media attribute lines) Media Description
  • 11.
    ● Protocol version(“v=”) v=0 ● Origin (“o=”) o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address> ● Session name (“s”) s=<session name> ● Session information (“i=”) i=<session description>
  • 12.
    ● URI (“u=”) u=<uri> ●Email and Phone (“e=” and “p=”) e=<email-address> (e=j.doe@example.com (Jane Doe)) p=<phone-number> (p=+1 617 555-6011) ● Connection Data (“c=”) c=<nettype> <addrtype> <connection-address> (c=IN IP4 224.2.36.42/127) ● Bandwidth (“b=”) b=<bwtype>:<bandwidth>
  • 13.
    ● Timing (“t=”) t=<start-time><stop-time> ● Repeat time (“r=”) r=<repeat interval> <active duration> <offsets from start-time> t=3034423619 3042462419 r=604800 3600 0 90000 ● Encription Keys (“k=”) k=<method> k=<method>:<encryption key> k=base64:<encoded encryption key>
  • 14.
    ● Attributes (“a=”) a=<attribute>:<value> ●Media Description m=<media> <port> <proto> <fmt> m=video 49170/2 RTP/AVP 31
  • 15.
    a=cat:<category> a=keywds:<keywords> a=tool:<name and versionof tool> a=ptime:<packet time> a=maxptime:<maximum packet time> a=rtpmap:<payload type> <encoding name>/<clock rate> [/<encoding parameters>] SDP Attributes
  • 16.
  • 17.
  • 18.
    [Offer] v=0 o=alice 2890844526 2890844526IN IP4 host.atlanta. example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 8 97 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:97 iLBC/8000 m=video 51372 RTP/AVP 31 32 a=rtpmap:31 H261/90000 a=rtpmap:32 MPV/90000 Audio and Video [Answer] v=0 o=bob 2808844564 2808844564 IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 0 8 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 m=video 0 RTP/AVP 31 a=rtpmap:31 H261/90000
  • 19.
    [Second-Offer] v=0 o=alice 2890844526 2890844527IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 0 RTP/AVP 31 a=rtpmap:31 H261/90000 Audio and Video [Second-Answer] v=0 o=bob 2808844564 2808844565 IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 0 RTP/AVP 31 a=rtpmap:31 H261/90000
  • 20.
    [Offer] v=0 o=alice 2890844526 2890844526IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 97 a=rtpmap:0 PCMU/8000 a=rtpmap:97 iLBC/8000 m=audio 49172 RTP/AVP 98 a=rtpmap:98 telephone-event/8000 a=sendonly Two Audio Streams [Answer] v=0 o=bob 2808844564 2808844564 IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 97 a=rtpmap:97 iLBC/8000 m=audio 49174 RTP/AVP 98 a=rtpmap:98 telephone-event/8000
  • 21.
    [Offer] v=0 o=alice 2890844526 2890844526IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 97 a=rtpmap:0 PCMU/8000 a=rtpmap:97 iLBC/8000 Hold and Unhold [Answer] v=0 o=bob 2808844564 2808844564 IN IP4 host.biloxi.example.com s= c=IN IP4 placeholder.biloxi.example. com t=0 0 m=audio 49172 RTP/AVP 97 a=rtpmap:97 iLBC/8000 a=sendonly
  • 22.
    [Second-Offer] v=0 o=bob 2808844564 2808844565IN IP4 host. biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49170 RTP/AVP 97 a=rtpmap:97 iLBC/8000 Hold and Unhold [Second-Answer] v=0 o=alice 2890844526 2890844527 IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49178 RTP/AVP 97 a=rtpmap:97 iLBC/8000
  • 23.
    [Offer] v=0 o=alice 2890844526 2890844526IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 97 a=rtpmap:0 PCMU/8000 a=rtpmap:97 iLBC/8000 m=audio 49172 RTP/AVP 98 a=rtpmap:98 telephone-event/8000 a=sendonly Hold with two streams [Answer] v=0 o=bob 2808844564 2808844564 IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 97 a=rtpmap:97 iLBC/8000 m=audio 49174 RTP/AVP 98 a=rtpmap:98 telephone-event/8000 a=recvonly
  • 24.
    [Second-Offer] v=0 o=bob 2808844564 2808844565IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 97 a=rtpmap:97 iLBC/8000 a=sendonly m=audio 49174 RTP/AVP 98 a=rtpmap:98 telephone-event/8000 a=recvonly Hold with two streams [Second-Answer] v=0 o=alice 2890844526 2890844527 IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 97 a=rtpmap:0 PCMU/8000 a=rtpmap:97 iLBC/8000 m=audio 49172 RTP/AVP 98 a=rtpmap:98 telephone-event/8000 a=sendonly
  • 25.
    [Offer] v=0 o=alice 2890844526 2890844526IN IP4 host.atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Audio, then Video Added [Answer] v=0 o=bob 2808844564 2808844564 IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000
  • 26.
    [Second-Offer] v=0 o=alice 2890844526 2890844527IN IP4 host. atlanta.example.com s= c=IN IP4 host.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 49172 RTP/AVP 31 a=rtpmap:31 H261/90000 Audio, then Video Added [Second-Answer] v=0 o=bob 2808844564 2808844565 IN IP4 host.biloxi.example.com s= c=IN IP4 host.biloxi.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 49168 RTP/AVP 31 a=rtpmap:31 H261/90000