Mapping of Diversion Information Between Diversion and History-Info Headers
History-Info and Diversion are two headers commonly used in SIP signaling used to convey information related to call transfer and call diversion. The Oracle Communications Session Border Controller (OCSBC) supports mapping and interworking between networks that support the History-Info versus the Diversion header. You implement this interworking on the OCSBC using the diversion-info-mapping-mode parameter on egress sip-interface configuration elements. This interworking, and the subsequent header behaviors comply with RFC 6044. When configured, the OCSBC monitors signaling for the presence of History-info headers that comply with RFC 6044 and Diversion headers that comply with RFC 5806 to trigger the interworking.
The History-Info header is the standard solution adopted by the Internet Engineering Task Force (IETF) for storing re-targeting information. The non-standard Diversion header is also used in many existing network implementations. Individual networks typically use one or the other. As both headers address call forwarding needs but have different syntaxes, having both present in a signaling request can cause diverting information to be misinterpreted, thereby making an interworking solution necessary. In addition to using different syntaxes, these methods also use different reason codes for the diversions, different security flags, and list events using opposite chronology. The diversion header lists the last diversion first; the History-Info header lists the first diversion last.
You enable this interworking using the diversion-info-mapping-mode parameter on sip-interface elements. The OCSBC applies the configuration at the egress interface. You can configure the following header interworking modes:
- Diversion to History-Info,
- History-info to Diversion, or
- A combination of Diversion to History-Info interworking and a forced insertion of the History-info header if the INVITE contains neither.
When interworking from a History-Info header to a Diversion header for each, the OCSBC initializes the new Diversion header with the value of the History-Info header. The presence of re-direction headers and the absence of a to-tag in the To header of an initial INVITE triggers the OCSBC to perform the interworking.
Note:
This feature supports only SIP-URIs in the diversion header. There is no supported conversion from TEL-URI to SIP-URI.History-Info to Diversion Header Interworking
When configured for this interworking, the OCSBC takes the following steps for all History-Info headers except the last in the incoming initial INVITE:
- Create a new diversion header.
- Extract the cause
parameter from the subsequent History-Info header if any, and add a reason
parameter to the Diversion header, using the following conversion table.
History-Info Cause Diversion Reason 404 Unknown (default value) 302 unconditional 486 user-busy 408 no-answer 480 deflection 487 deflection 503 unavailable - If a cause is not present, use the default value Unknown for the reason parameter.
- If the History-Info
header contains a privacy parameter, add a Privacy parameter to the Diversion
header, using the following conversion table.
History-Info Privacy Diversion Privacy history full Field absent or none Off (default value) - If there is no privacy parameter, use the default value Off in the Diversion header.
- Add a counter parameter with the value 1.
- Delete the History-Info header.
The diagram below provides an example flow and the header text used for this example.
Diversion to History-Info Header Interworking
When configured for this interworking, the OCSBC takes the following steps for all Diversion headers in the incoming initial INVITE:
- Create a new History-Info header.
- Add the index header parameter.
- Set the value for the first header to 1. Append .1 to the value of the last_index_value for the subsequent headers.
- If the Diversion header
contains a privacy parameter, add the Privacy header parameter to the
History-Info header using the following conversion table.
Diversion Privacy History-Info Privacy full history name history uri history off none - If the previous Diversion
header contains a reason parameter, add the
cause header
parameter to the History-Info header using the following conversion table. The
OCSBC does not add a
cause parameter to the first History-info entry.
Diversion Reason History-Info Cause unknown 404 (default value) unconditional 302 user-busy 486 no-answer 408 deflection 480 unavailable 404 time-of-day 404 do-not-disturb 404 follow-me 404 out-of-service 404 away 404 - If there is no reason parameter for any History-info headers, set the parameter to the default value of 404.
- Remove the diversion header from the outgoing INVITE.
The diagram below provides an example flow and the header text used for this example.