The Subscribe Downstream Forking Feature manages the additional SIP legs that can result from forked subscriptions.
-
When Sentinel sends or forwards an initial SUBSCRIBE, a downstream proxy may fork the request to several targets.
-
Each target that accepts the SUBSCRIBE will send an initial NOTIFY back to Sentinel.
-
The first NOTIFY to arrive is associated with the original downstream leg, and will automatically be forwarded upstream by the B2BUA Feature if it previously forwarded the SUBSCRIBE .
-
If additional NOTIFYs arrive as a result of a fork, then the
SubscribeDownstreamForking
feature is needed to determine how to handle them. -
Each additional NOTIFY potentially creates a new SIP dialog, or leg in Sentinel.
-
If the event package (determined by the NOTIFY
Event:
header) does not support forking, then theSubscribeDownstreamForking
feature automatically rejects the NOTIFY with a 481 response, and no new leg is created. -
If the event package does support forking, then the
SubscribeDownstreamForking
feature creates new downstream and upstream legs, and schedules the NOTIFY to be forwarded upstream. The new upstream and downstream legs are linked, and subsequent requests on these legs will be handled by the B2BUA Feature. -
The names of event packages that are known to support forking are configured as per Forking event packages configuration.
-
Details
Feature script name |
SubscribeDownstreamForking |
---|---|
Applicable contexts |
SIP service |
Prerequisite features |
|
Feature execution point |
SubscriptionSipRequest [Pre] |
Example Call Flows
Session state inputs and outputs
Inputs
Name | Type | Format | Description |
---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key |
For selecting configuration data |
Outputs
Name | Type | Format | Description |
---|---|---|---|
ForkedNotifyResult |
ForkedNotifyResult |
Enum values: |
Describes the outcome of the feature:
|
Configuration
Forking event packages configuration
Parameter | Type | Description |
---|---|---|
ForkingEvents |
String[] |
Names of SIP event packages that support forking. |
The default set of event packages that support forking is:
-
call-completion
-
dialog
-
message-summary
-
refer
-
winfo
This is derived from the current list of standard event packages in the IANA SIP Event Packages Registry.
If an event package happens to be an event template package (such as winfo
above), all event packages that derive from it are handled automatically.
So the fictional package foo.winfo
will automatically support forking because winfo
does.
Additional event packages may be added as standards evolve, or to support proprietary events.
Statistics
Statistic | When incremented |
---|---|
ForkedSubscriptionAccepted |
A forked NOTIFY is accepted because the event package allows forked subscriptions. |
ForkedSubscriptionRejected |
A forked NOTIFY is rejected because the event package does not allow forked subscriptions. |
ForkedSubscriptionDownstreamLegError |
The feature is unable to create the leg representing the downstream side of a forked subscription. |
ForkedSubscriptionUpstreamLegError |
The feature is unable to create the leg representing the upstream side of a forked subscription. |