aiortc / aioice

asyncio-based Interactive Connectivity Establishment (RFC 5245)
BSD 3-Clause "New" or "Revised" License
104 stars 51 forks source link

Does aioice support ice-lite? #15

Closed duhoobo closed 4 years ago

duhoobo commented 4 years ago

RFC 5245 is supported according to README, I thought ICE lite implementation was supported as well.

I write a demo running behind a NAT, trying to make a connection with WebRTC gateway which employs ICE lite implemetation.

The demo won't take a role as "controlling agent" while gateway as initiator (OFFERing sdp). This behavior seems not compatible with RFC 5245.

RFC 5245, 2.7. Lite Implementations

When a lite implementation connects with a full implementation, the full agent takes the role of the controlling agent, and the lite agent takes on the controlled role.

jlaine commented 4 years ago

You are correct there isn't currently any specific code for ICE Lite, I need to read up on the subject.

For your specific use case, to be clear: the gateway (ice lite) is offering the SDP to aioice?

ibc commented 4 years ago

Some news here. My scenario is as follows:

jlaine commented 4 years ago

OK, if I understand correctly there is no issue with aioice after all: it's an ICE full agent, and behaving correctly right? If so let's move the conversation back to aiortc.

ibc commented 4 years ago

Let's say it works because we figured out the DTLS role that aiortc assumes regardless it's SDP offerer or SDP answered :)

jlaine commented 4 years ago

OK I think this issue can be closed: aioice should now interop correctly with an ICE Lite peer. The only issue I found was that we always used agressive nomination. If you set connection.remote_is_lite, aioice will now use regular nomination.