Why are Tags required to identify a SIP dialog?
In a word: "hairpinning".
"Hairpinning" is when a user agent makes a call to itself, mainly for the purposes of self-testing. (The other reason you might have this is because your proxy routes your call to yourself, called "tromboning". When done intentionally, it's a useful end-to-end test of your infrastructure.)
So let's say you send an INVITE to yourself, and answer it. Your user agent must then have two dialogs (each with identifiers), each representing one end of the call. If you only have a Call-ID
, then you don't know which dialog is the caller and which the callee.
The From
and To
tags here are the way you can unambiguously determine which dialog is which.