ICE protocol was updated in RFC 8445. ICE lite predates that RFC. The details on ICE Lite in RFC 8445 is provided in Appendix A. It is very sketchy. However, way back in 2007, an attempt was made to formalize what ICE Lite was. That was in this draft RFC. It is fairly descriptive but some of the statements conflict those in RFC 8445. For example, RFC 8445 does allow for both peers to be ICE LITE while the draft document suggests otherwise.
Can someone point out the exceptions or corrections in the draft RFC on ICE LITE which will make it compatible with RFC 8445? Or point to a document that describes ICE LITE in more detail that the description in RFC 8445?
I am NOT using libnice but as there is no relevant tag on ICE, I used libnice hoping that users of libnice will have some info.
pion/ice has an option for ICE Lite. I did some things via trial and error, but here is what I learned along the way.
From RFC 8445 6.1.1. Determining Role
Both lite: The initiating agent that started the ICE processing MUST
take the controlling role, and the other MUST take the controlled
role. In this case, no connectivity checks are ever sent.
Rather, once the candidates are exchanged, each agent performs the
processing described in Section 8 without connectivity checks. It
is possible that both agents will believe they are controlled or
controlling. In the latter case, the conflict is resolved through
glare detection capabilities in the signaling protocol enabling
the candidate exchange. The state of ICE processing for each data
stream is considered to be Running, and the state of ICE overall
is Running.
I haven't found an extensive single place to learn about ICE Lite. But you can look at how pion/ice
behaves, and happy to answer more individual questions!