The B2BUA feature provides back-to-back user agent functionality to Sentinel.
Details
Feature script name |
B2BUA |
---|---|
Applicable contexts |
SIP service |
Call-Type |
All |
Feature execution points |
SipAccess_SessionAccept SipAccess_PartyRequest SipAccess_PartyResponse SipMidSession_PartyRequest SipMidSession_PartyResponse SubscriptionAccept SubscriptionSipRequest SubscriptionSipResponse SipTransaction_Accept SipTransaction_Request SipTransaction_Response |
SAS Support |
Yes |
Prerequisite features |
None |
Network Operator Config |
Yes |
Subscriber Config |
None |
POJO or SBB |
POJO |
Feature FSMs |
None |
Feature Parameters |
None |
RA Entity Links |
None |
Network Operator Data
B2BUA feature configuration is stored on a profile table called SipB2BUAConfigProfileTable
.
Data is scoped according to a Sentinel selection key.
Attribute Name | Type | Default | Description |
---|---|---|---|
PreserveCallIdOverB2BUA |
boolean |
false |
If true, the outgoing dialog will use the same SIP Call-ID as the incoming dialog. |
SendEarlyInitialInviteACK |
boolean |
false |
If true, on receiving a 2xx Response to an Initial INVITE request, an ACK will be sent on the dialog, and the incoming ACK will not be sent on the linked leg. |
Statistics
B2BUA
feature statistics are tracked by the sentinel.sip
SBB and can be found under the following parameter set:
SLEE-Usage → sentinel.sip service ID → sentinel.sip SBB ID → feature.B2BUA
Statistic | Type | Description |
---|---|---|
Started |
Counter |
Incremented when the feature is invoked. |
FailedToStart |
Counter |
Incremented when Sentinel encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning. |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel aborts execution. |
FailedToCreateOutgoingLeg |
Counter |
Incremented when an error occurs while attempting to create a new SIP leg. |
FailedToCreateOutgoingMessage |
Counter |
Incremented when an error occurs while attempting to create a new SIP message. |
FailedToForwardMessage |
Counter |
Incremented when the feature fails to forward a message for any reason. |
FailedToLinkLegs |
Counter |
Incremented when the feature fails to link the triggering leg to a newly created B2BUA leg. |
FailedToSendNewErrorResponse |
Counter |
Incremented when an error occurs while the feature is attempting to directly respond to an inbound request with an error response. |
LegAlreadyLinkedOnInitialRequest |
Counter |
Incremented when the feature detects that the leg an inbound initial request was received on already has a linked leg. |
SessionEndingOnInitialRequest |
Counter |
Incremented when the feature detects that the session is already ending while processing an initial request. |
LegsNotLinkedOnNonInitialMessage |
Counter |
Incremented when the feature detects that the leg a non-initial request or response was received on is not linked to another leg. |
ForwardedResponse |
Counter |
Incremented when a SIP response is successfully forwarded across the B2BUA. |
ForwardedRequest |
Counter |
Incremented when a SIP request is successfully forwarded across the B2BUA. |
SentErrorResponse |
Counter |
Incremented when the feature directly answers an incoming request with an error response. |
SentEarlyAck |
Counter |
Incremented when the feature generates an immediate ACK to an incoming INVITE-2XX response. |
SuppressedAckAfterEarlyAck |
Counter |
Incremented when the feature does not forward an inbound ACK due to it having already sent one on the linked leg. |
Behaviour
Basic Behaviour
The B2BUA feature divides the communication channel into two legs and mediates all SIP signaling between both ends of the session.
On receipt of an initial SIP request (i.e. a request without a To tag), the feature creates an outgoing leg, links it to the triggering leg, and forwards an equivalent request on the new leg. The forwarded request will have a new call ID unless the feature has been specifically configured to preserve the call ID across the B2BUA. If the initial request is received on a leg that is already linked to another leg, the feature will not create a new leg or attempt to forward the message on the existing leg. If another feature ends the session before the B2BUA feature processes the initial request, a new leg will not be created and the request will not be forwarded.
For all other incoming SIP messages the feature adds an equivalent outgoing SIP message to the linked leg’s message queue. If there in no leg linked to the triggering leg, the feature will not attempt to forward the message.
This feature is a critical system feature, many features rely on the functionality and success of this feature, including the B2BUA SCUR, B2BUA ECUR, B2BUA IEC, and SDP Comparison features. See Sentinel SIP Feature Execution Points for more about running critical features. |
Early ACKs
If configured to do so, on an incoming success response to an initial INVITE, the feature will send an early ACK on the triggering leg, and will subsequently not forward the ACK received on the linked leg. An early ACK will not be sent if SDP negotiation has not been completed (offer & answer).
Error Responses
There are a number of cases where the feature will generate and send an error response for an inbound request instead of forwarding the request:
-
When the feature forwards a request on a linked leg, it will decrement the value of the
Max-Forwards
header on the outbound request. If the value reaches 0, the feature will generate and send a 483 (Too Many Hops) response. -
If the feature receives a request and is unable to forward it on the linked leg due a to a SIP transaction already being in progress on that leg, it will send a 491 (Request Pending) response.
-
If an internal error occurs that prevents the request from being forwarded, the feature will send a 500 (Server Internal Error) response.