ice-ufrag
Also written ice-pwd, username fragment, a=ice-ufrag
The short username fragment each side generates for an ICE session. Changing it is what makes a restart a restart.
Each agent generates a ice-ufrag of 4 to 256 characters and an ice-pwd of 22 to 256, then publishes them in SDP. Every connectivity check sets USERNAME to the concatenation remote-ufrag:local-ufrag, and signs the message with the remote agent’s password.
That gives you two things at once. The username tells a receiving agent which ICE session a stray check belongs to, which matters when a restart is in flight and old and new checks are arriving on the same port. The password proves the check came from someone who read your SDP, so an attacker who can guess your address still cannot forge checks.
The ufrag is also the restart signal. An offer that carries a new ufrag and password is an ICE restart, by definition. Nothing else has to be flagged.