(Answer) (Category) SIP FAQ : (Category) SIP Protocol Operation :
What is the difference between tag and branch-id?
Branch IDs allow proxies to match responses to forked requests. Without them, a proxy wouldn't be able to tell which branch a response corresponds to. Tags, in To headers, are of no help here since they are not known until responses arrive. Tags are used by the UAC to distinguish multiple final responses from different UASs.

A UAS has no reliable way of determining if the request has been forked or not. Thus, to be safe it needs to add a tag. Proxies only insert tags into the final responses they generate themselves; they never insert tags into requests or responses they forward.

Since a request can be forked several times on its way to UAS, a single "tag" (or whatever you like to call it) added to the request by one of the proxies is not sufficient for the next forking proxy along the chain to match responses on its own branches; every proxy that forked the request would need to add its own unique IDs to the branches it created. This is precisely what's being achieved by the branch parameter in the Via header.

[Append to This Answer]
islepchin@dynamicsoft.com
2000-Jul-03 8:23pm
Previous: (Answer) What is the difference between a call leg and a call id?
Next: (Answer) How can one recognize a retransmitted, duplicate or looped request?
This document is: http://www.cs.columbia.edu/~hgs/sip/faq.cgi?file=24
[Search] [Appearance]
This is a Faq-O-Matic 2.710.
This FAQ administered by Henning Schulzrinne