Back-to-back user agent

A back-to-back user agent (B2BUA) is a logical network element in Session Initiation Protocol (SIP) applications.[1] SIP is a signaling protocol for managing multimedia Voice over Internet Protocol (VoIP) telephone calls. A back-to-back user agent operates between both end points of a communications session and divides the communication channel into two call legs, and mediates all SIP signaling between the endpoints of the session, from establishment to termination. As all control messages for each call flow through the B2BUA, a service provider may implement value-added features available during the call.

In the originating call leg, the B2BUA acts as a user agent server (UAS) and processes the request as a user agent client (UAC) to the destination end, handling the signaling between end points back-to-back. A B2BUA maintains complete state for the calls it handles. Each side of a B2BUA operates as a standard SIP user agent network element as specified in RFC 3261.

In addition to call management, a B2BUA may provide billing services, internetworking for protocol conversions, and hiding of network-internal topology and information.

B2BUAs are often implemented in media gateways to bridge the media streams, in addition to the signaling path, for full control over the session.

A signaling gateway, part of a session border controller, is an example of a B2BUA.

Call flow diagram

                        B2BUA           
   Alice                Server                 Bob
     |                    | |                    |
     |      INVITE     F1 | |                    |
     |------------------->| |                    |
     |    100 Trying   F2 | |                    |
     |<-------------------| |       INVITE    F3 |
     |                    | |------------------->|
     |                    | |    100 Trying   F4 |
     |                    | |<-------------------|
     |                    | |    180 Ringing  F5 |
     |   180 Ringing   F6 | |<-------------------|
     |<-------------------| |                    |
     |                    | |       200 OK    F7 |
     |      200 OK     F8 | |<-------------------|
     |<-------------------| |         ACK     F9 |
     |         ACK    F10 | |------------------->|
     |------------------->| |                    |
     |      RTP Media     | |      RTP Media     |
     |<==================>| |<==================>|
     |        BYE     F11 | |                    |
     |------------------->| |        BYE     F12 |
     |      200 OK    F13 | |------------------->|
     |<-------------------| |       200 OK   F14 |
     |                    | |<-------------------|
     |                    | |                    |
gollark: ++Delete <@319753218592866315> (killing kittenenes)
gollark: Replace kittens with kitten IDs in a backing database for kitten storage.
gollark: I do like how some languages (many languages) do immutable strings.
gollark: In some languages strings are "interned".
gollark: It is probably sometimes, although honestly you could probably just use enums?

See also

References

  1. RFC 3261, SIP: Session Initiation Protocol, IETF, The Internet Society (2002)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.