What is the difference between proxy server and back to back user agent (B2BUA) ?
The main difference is that proxy servers are transaction-stateful, while B2BUAs are call stateful. That means proxy servers keep state only during SIP transactions (that is at the beginning and and of a call) and do not keep any state during the whole call. A B2BUA acts merely as connection of two or more user agents which are connected through some means. B2BUAs keep some state (usually some structures in the memory) during the whole call. This property gives B2BUA some interesting features that proxies don’t have. For example B2BUA can tear down and existing call–proxies can’t do that. On the other hand B2BUAs can easily become a bottleneck in terms of scalability.