Subject: [MMUSIC] How big can SDP get

From: Cullen Jennings <[email-masked]>
Date: Mon, 15 May 2006 03:43:07 +0200

I have been wondering - how big an SDP offer might we actually see.  
Imagine a video conference device with two video streams, an audio  
stream, and IM. It can do several codecs. It is doing ICE with STUN.  
TURN, and local addresses. It has V4 and V6 addresses. It's passing  
around some complex keying for SRTP. The list goes on...

Do we end up this something that is just Big, or is it way too big?  
Thoughts on what situation might generate a really large SDP and then  
can someone construct an example and see how big it might get? I'll  
buy buy a beverage(s) of your choice at next IETF for person that  
constructs the largest practical SDP and if it is over 10k I will buy  
them bottle of scotch.

Cullen

_______________________________________________
mmusic mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/mmusic

---

From: "James M. Polk" <[email-masked]>
Date: Mon, 15 May 2006 13:14:50 -0500

At 03:43 AM 5/15/2006 +0200, Cullen Jennings wrote:
>constructs the largest practical SDP and if it is over 10k

Would this mean we can finally get rid of UDP, because SDP can get this big?

;-)

>I will buy

Port?

---

From: Magnus Westerlund <[email-masked]>
Date: Wed, 17 May 2006 15:19:05 +0200

Hi,

One thing is obvious. It is easy to make a large SDP file. Attached is a 
10744 bytes large SDP.

The SDP contains some errors as I have no interest of specifying unique 
ports for all ICE flows for example. However it should be possible to 
understand.

The session is intended to be a offer from a transcoding gateway to a 
session receiver of a presentation session with a text chat session. So 
there is one video showing the presenter, protected by a separate FEC 
stream (ULP). There is a second video with retransmission for the 
document cam. There is one  audio stream protected by a second stream of 
FEC. Then there is a text session for chatting and a subtitle session. 
Add ICE, ANAT, SRTP with security description and few other small 
extension and you broke the 10k barrier.

Then I haven't added media lables that also would make sense in this 
context.

Cheers

Magnus Westerlund

Multimedia Technologies, Ericsson Research EAB/TVA/A
----------------------------------------------------------------------
Ericsson AB                | Phone +46 8 4048287
Torshamsgatan 23           | Fax   +46 8 7575550
S-164 80 Stockholm, Sweden | mailto: [email-masked]
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=A huge SDP example containing a session with two video, one audio, subtiteling, chat protected by FEC
i=SDP is an Offer for a session offered by a transcoding entity
u=http://www.example.com/seminars/sdp.pdf
e=[email-masked] (Magnus Westerlund)
t=2873397496 2873404696
a=group:FEC 2 3
a=group:FEC 4 5
a=group:ANAT 1 8
a=group:ANAT 2 9
a=group:ANAT 3 10
a=group:ANAT 4 11
a=group:ANAT 5 12
a=group:ANAT 6 13
a=group:ANAT 7 14
a=ice-pwd:speEc3QGZiNWpVLFJhQX
m=video 49170 RTP/SAVPF 100 99 98 97 96 95
c=IN IP4 192.0.2.56
b=AS:256
b=TIAS:230000
b=RR:4000
b=RS:3000
a=maxprate:30
a=rtpmap:98 H264/90000                                            
a=fmtp:98 profile-level-id=42A01E; packetization-mode=0; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA== 
a=rtpmap:99 H264/90000                                            
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==
a=rtpmap:100 H264/90000                                           
a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45; sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf-cap=128000
a=rtcp-fb:* nack
a=rtpmap:97 rtx/90000 
a=fmtp:97 apt=100;rtx-time=3000 
a=rtpmap:96 rtx/90000 
a=fmtp:96 apt=99;rtx-time=3000 
a=rtpmap:95 rtx/90000 
a=fmtp:95 apt=98;rtx-time=3000 
a=mid:1
a=rtcp:51540
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49170
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51540
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=video 49172 RTP/SAVP 100 99 98 97 96 95
c=IN IP4 192.0.2.56
b=AS:384
b=TIAS:356000
b=RR:4000
b=RS:3000
a=maxprate:40
a=rtpmap:98 H264/90000                                            
a=fmtp:98 profile-level-id=42A01E; packetization-mode=0; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA== 
a=rtpmap:99 H264/90000                                            
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==
a=rtpmap:100 H264/90000                                           
a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45; sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf-cap=128000
a=mid:2
a=rtcp:51538
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49172
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51538
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=application 49174 RTP/SAVP 100
c=IN IP4 192.0.2.56
b=AS:103
b=TIAS:98000
b=RR:4000
b=RS:3000
a=maxprate:30
a=rtpmap:100 ulpfec/8000
a=mid:3
a=rtcp:51536
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49174
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51536
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=audio 49176 RTP/SAVP 101 100 99 98
c=IN IP4 192.0.2.56
b=AS:48
b=TIAS:42000
b=RR:4000
b=RS:3000
a=maxprate:20
a=rtpmap:98 AMR-WB/16000
a=fmtp:98 octet-align=1; mode-change-capability=2
a=rtpmap:99 AMR-WB/16000
a=fmtp:99 octet-align=1; crc=1; mode-change-capability=2
a=rtpmap:100 AMR-WB/16000/2
a=fmtp:100 octet-align=1; interleaving=30
a=rtpmap:101 AMR-WB+/72000/2
a=fmtp:101 interleaving=50; int-delay=160000; 
a=ptime:60
a=maxptime:200
a=mid:4
a=rtcp:51534
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49176
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51534
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=application 49178 RTP/SAVP 100
c=IN IP4 192.0.2.56
b=AS:20
b=TIAS:16000
b=RR:4000
b=RS:3000
a=maxprate:10
a=rtpmap:100 ulpfec/8000
a=mid:5
a=rtcp:51532
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32  
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49178
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51532
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=video 49180 RTP/SAVP 98
c=IN IP4 192.0.2.56
b=AS:10
b=TIAS:8000
b=RR:4000
b=RS:3000
a=maxprate:10
a=rtpmap:98 3gpp-tt/1000
a=fmtp:98 tx=100; ty=100; layer=0; height=80; width=100;
sver=6256,60; tx3g=81...
a=mid:6
a=rtcp:51530
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49180
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51530
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=text 49182 RTP/SAVP 98 100
c=IN IP4 192.0.2.56
b=AS:4
b=TIAS:3000
b=RR:4000
b=RS:3000
a=maxprate:5
a=rtpmap:98 t140/1000
a=rtpmap:100 red/1000
a=fmtp:100 98/98/98  
a=mid:7
a=rtcp:51528
a=sendrecv
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 192.0.2.56 49182
a=candidate 23456781 2 UDP 1.0 192.0.2.56 51528
a=candidate 34567812 1 UDP 0.7 10.0.0.1 41345
a=candidate 45678123 2 UDP 0.7 10.0.0.1 52567
a=candidate 56781234 1 UDP 0.3 192.0.2.100 49000
a=candidate 67812345 2 UDP 0.3 192.0.2.100 49001
m=video 49170 RTP/SAVPF 100 99 98 97 96 95
c=IN IP6 2001:DB8::1
b=AS:256
b=TIAS:230000
b=RR:4000
b=RS:3000
a=maxprate:30
a=rtpmap:98 H264/90000                                            
a=fmtp:98 profile-level-id=42A01E; packetization-mode=0; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA== 
a=rtpmap:99 H264/90000                                            
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==
a=rtpmap:100 H264/90000                                           
a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45; sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf-cap=128000
a=rtcp-fb:* nack
a=rtpmap:97 rtx/90000 
a=fmtp:97 apt=100;rtx-time=3000 
a=rtpmap:96 rtx/90000 
a=fmtp:96 apt=99;rtx-time=3000 
a=rtpmap:95 rtx/90000 
a=fmtp:95 apt=98;rtx-time=3000 
a=mid:8
a=rtcp:51540
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540      
m=video 49172 RTP/SAVP 100 99 98 97 96 95
c=IN IP6 2001:DB8::1
b=AS:384
b=TIAS:356000
b=RR:4000
b=RS:3000
a=maxprate:40
a=rtpmap:98 H264/90000                                            
a=fmtp:98 profile-level-id=42A01E; packetization-mode=0; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA== 
a=rtpmap:99 H264/90000                                            
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==
a=rtpmap:100 H264/90000                                           
a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45; sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf-cap=128000
a=mid:9
a=rtcp:51538
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540
m=application 49174 RTP/SAVP 100
c=IN IP6 2001:DB8::1
b=AS:103
b=TIAS:98000
b=RR:4000
b=RS:3000
a=maxprate:30
a=rtpmap:100 ulpfec/8000
a=mid:10
a=rtcp:51536
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540
m=audio 49176 RTP/SAVP 101 100 99 98
c=IN IP6 2001:DB8::1
b=AS:48
b=TIAS:42000
b=RR:4000
b=RS:3000
a=maxprate:20
a=rtpmap:98 AMR-WB/16000
a=fmtp:98 octet-align=1; mode-change-capability=2
a=rtpmap:99 AMR-WB/16000
a=fmtp:99 octet-align=1; crc=1; mode-change-capability=2
a=rtpmap:100 AMR-WB/16000/2
a=fmtp:100 octet-align=1; interleaving=30
a=rtpmap:101 AMR-WB+/72000/2
a=fmtp:101 interleaving=50; int-delay=160000; 
a=ptime:60
a=maxptime:200
a=mid:11
a=rtcp:51534
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540
m=application 49178 RTP/SAVP 100
c=IN IP6 2001:DB8::1
b=AS:20
b=TIAS:16000
b=RR:4000
b=RS:3000
a=maxprate:10
a=rtpmap:100 ulpfec/8000
a=mid:12
a=rtcp:51532
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32  
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540
m=video 49180 RTP/SAVP 98
c=IN IP6 2001:DB8::1
b=AS:10
b=TIAS:8000
b=RR:4000
b=RS:3000
a=maxprate:10
a=rtpmap:98 3gpp-tt/1000
a=fmtp:98 tx=100; ty=100; layer=0; height=80; width=100;
sver=6256,60; tx3g=81...
a=mid:13
a=rtcp:51530
a=sendonly
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540
m=text 49182 RTP/SAVP 98 100
c=IN IP6 2001:DB8::1
b=AS:5
b=TIAS:3000
b=RR:4000
b=RS:3000
a=maxprate:5
a=rtpmap:98 t140/1000
a=rtpmap:100 red/1000
a=fmtp:100 98/98/98  
a=mid:14
a=rtcp:51528
a=sendrecv
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 
a=candidate 12345678 1 UDP 1.0 2001:DB8::1 49170
a=candidate 23456781 2 UDP 1.0 2001:DB8::1 51540

---

From: Cullen Jennings <[email-masked]>
Date: Wed, 17 May 2006 15:33:11 +0200

Awesome - thanks. That answers the 10k question. Bottle of scotch or  
do you have some other preferred beverage?

On May 17, 2006, at 3:19 PM, Magnus Westerlund wrote:

> Hi,
>
> One thing is obvious. It is easy to make a large SDP file. Attached  
> is a 10744 bytes large SDP.
>
> The SDP contains some errors as I have no interest of specifying  
> unique ports for all ICE flows for example. However it should be  
> possible to understand.
>
> The session is intended to be a offer from a transcoding gateway to  
> a session receiver of a presentation session with a text chat  
> session. So there is one video showing the presenter, protected by  
> a separate FEC stream (ULP). There is a second video with  
> retransmission for the document cam. There is one  audio stream  
> protected by a second stream of FEC. Then there is a text session  
> for chatting and a subtitle session. Add ICE, ANAT, SRTP with  
> security description and few other small extension and you broke  
> the 10k barrier.
>
> Then I haven't added media lables that also would make sense in  
> this context.
>
> Cheers
>
> Magnus Westerlund
>
> s=A huge SDP example containing a session with two video, one  
> audio, subtiteling, chat protected by FEC
> a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop- 
> parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45;  
> sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf- 
> cap=128000
> a=rtcp-fb:* nack
> a=rtpmap:97 rtx/90000
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop- 
> parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45;  
> sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf- 
> cap=128000
> a=mid:2
> a=rtcp:51538
> a=sendonly
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop- 
> parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45;  
> sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf- 
> cap=128000
> a=rtcp-fb:* nack
> a=rtpmap:97 rtx/90000
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=fmtp:100 profile-level-id=42A01E; packetization-mode=2; sprop- 
> parameter-sets=Z0IACpZTBYmI,aMljiA==; sprop-interleaving-depth=45;  
> sprop-deint-buf-req=64000; sprop-init-buf-time=102478; deint-buf- 
> cap=128000
> a=mid:9
> a=rtcp:51538
> a=sendonly
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
> a=crypto:1 AES_CM_128_HMAC_SHA1_80  
> inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32