In SIP, certain actions such as initiating and terminating calls can only be performed by user agents, which are usually SIP clients running on endpoint devices. FIG. 1 is a schematic diagram illustrating an exemplary back-to-back user agent 100, which is a software process that contains two or more user agents back-to-back (e.g., a server side user agent and a client side user agent). As illustrated, a back-to-back user agent is often hosted by an application server in the signaling path between endpoints.
Back-to-back user agents designed and composed according to the Distributed Feature Composition (DFC) architecture can be used to implement SIP-based telecommunication services in a way that is both modular and compositional. However, SIP programmers tend to avoid back-to-back user agents for several reasons, including the fact that back-to-back user agents are inherently complex and difficult to program.