[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