[Spce-user] Does rtpengine support trickle ICE?

Richard Fuchs rfuchs at sipwise.com
Fri May 1 14:09:41 EDT 2020


On 01/05/2020 12.10, Anthony Alba wrote:
> 1. "With a matching content type, the SDP fragment is used to update
> rtpengine's list of ICE candidates. "
> What is meant by "matching content type" here?

This is according to the SDP trickle ICE draft: 
https://tools.ietf.org/html/draft-ietf-mmusic-trickle-ice-sip-18

SDP fragments are sent as SIP INFO messages with a content type of 
application/trickle-ice-sdpfrag

>
> 2. Is this what we should send to rtpengine: as "fragment" SDP, i.e,
>
> a=ice-pwd:asd88fgpdd777uzjYhagZg
> ...
> a=end-of-candidates
>
> INFO sip:alice at example.com SIP/2.0
>        ...
>        Info-Package: trickle-ice
>        Content-type: application/sdp
>        Content-Disposition: Info-Package
>        Content-length: ...
>
>        a=ice-pwd:asd88fgpdd777uzjYhagZg
>        a=ice-ufrag:8hhY
>        m=audio 9 RTP/AVP 0
>        a=mid:1
>        a=candidate:1 1 UDP 2130706431 2001:db8:a0b:12f0::1 5000 typ host
>        a=candidate:1 2 UDP 2130706431 2001:db8:a0b:12f0::1 5001 typ host
>        a=candidate:2 1 UDP 1694498815 2001:db8:a0b:12f0::3 5000 typ srflx
>           raddr 2001:db8:a0b:12f0::1 rport 8998
>        a=candidate:2 2 UDP 1694498815 2001:db8:a0b:12f0::3 5001 typ srflx
>           raddr 2001:db8:a0b:12f0::1 rport 8998
>        a=end-of-candidates
>        m=audio 9 RTP/AVP 0
>        a=mid:2
>        a=candidate:1 1 UDP 2130706431 2001:db8:a0b:12f0::1 6000 typ host
>        a=candidate:1 2 UDP 2130706431 2001:db8:a0b:12f0::1 6001 typ host
>        a=candidate:2 1 UDP 1694498815 2001:db8:a0b:12f0::3 6000 typ srflx
>           raddr 2001:db8:a0b:12f0::1 rport 9998
>        a=candidate:2 2 UDP 1694498815 2001:db8:a0b:12f0::3 6001 typ srflx
>           raddr 2001:db8:a0b:12f0::1 rport 9998
>        a=end-of-candidates

Yes, that should work, except that it has the wrong content type. You're 
probably looking at an older version of the draft I mentioned.

But you also can "hand craft" these trickle ICE updates towards 
rtpengine. It literally is like any other offer but with `fragment` in 
the flags to make it accept the skinned down SDP. The resulting output 
SDP should be discarded.

> Another question: from the ng protocol perspective what is the mininum
> SDP that is needed to match
> the media?
>
> The browsers OnIceCandidate event just generates the candidate without
> ice-pwd/ice-ufrag anymore.
>
> Can we send a fragment SDP like
>
> m=audio 9 RTP/AVP 0
> a=candidate:1 1 UDP 2130706431 2001:db8:a0b:12f0::1 5000 typ host
> a=candidate:1 2 UDP 2130706431 2001:db8:a0b:12f0::1 5001 typ host
> a=candidate:2 1 UDP 1694498815 2001:db8:a0b:12f0::3 5000 typ srflx
>           raddr 2001:db8:a0b:12f0::1 rport 8998
>   a=candidate:2 2 UDP 1694498815 2001:db8:a0b:12f0::3 5001 typ srflx
>           raddr 2001:db8:a0b:12f0::1 rport 8998
>   a=end-of-candidates
>
> and rtpengine will remember the ice-pwd/ice-ufrag from the initial offer?
> How many of a=mid, a=msid, a=ssrc must be included to match?
I'm not 100% certain about the missing ufrag/pwd, but I believe it 
should work without those as well. (It's been a while since dealing with 
trickle ICE so my memory generally is a bit vague on the topic.)

Matching of media sections happens based on their order: the first `m=` 
line must correspond to the previous first `m=` line, and so on. That's 
all that's required.

Cheers





More information about the Spce-user mailing list