Interworking RFC 2833 and KPML for Hairpin Sessions

The SBC supports RFC 2833-KPML interworking scenarios that include forwarded calls that hairpin to an endpoint out the original interface. If the initial callee supports one of these digit encapsulation methods, and the caller and final callee support the other, the default SBC behavior of preferring RFC 2833 may block the KPML digit tranmission. You can configure the SBC to support interworking within these hairpin scenarios in the egress direction.

Forwarded hairpin calls can cause a problem to RFC 2833-to-KPML interworking for which the SBC can recognize and compensate. The issue exists for both RFC 2833-to-KPML and KPML-to-RFC 2833 calls, wherein a called endpoint that requires this interworking forwards the call back to the SBC, which hairpins the call to an endpoint that supports the initial encapsulation.

By default, the SBC uses RFC 2833 for digit transmission if there is an SDP attribute that includes telephone-event. This remains true even if there is also an allow event parameter set to kpml. The above scenario results in an SDP that includes both, causing the SBC to present digit encapsulation towards the KPML endpoint within RFC 2833 RTP.

To compensate for environments that need to support this hairpin forwarding, you can enable the kpmlRFC2833-iwf-on-hairpin parameter on the applicable session-agent or sip-interface. When configured for this hairpin support:

  • RFC 2833-to-KPML with hairpin to a RFC 2833 endstation—Although the SBC receives an SDP answer that supports both KPML and RFC 2833 from KPML side, it honors the SUBSCRIBE request from the KPML endpoint and generates NOTIFY requests with DTMF digits towards the KPML end point.
  • KPML-to-RFC 2833 with hairpin to a KPML endstation—Although the SBC receives an SDP offer that supports both KPML and telephone event from the KPML endpoint, it sends NOTIFY requests with the DTMF digits towards the RFC 2833 end point.

The diagram below shows an endpoint supporting RFC 2833 initiating a call, which terminates via hairpin on another RFC 2833 endpoint. The call initially targets an endpoint supporting KPML, but is forwarded back to the SBC. SDP2 includes the KPML allow event parameter and the telephone-event attribute. But this configuration causes the SBC to send digits to the KPML endpoint using NOTIFY message, and encapsulate those same digits in RTP for the RFC 2833 endpoints.

Bi-Directional Subscriptions

Within the context of hairpinned sessions that starts from a KPML endpoint and ultimately targets a KPML endpoint, the SBC both accepts the SUBSCRIBE from the called endpoint, and sends a SUBSCRIBE to the calling endpoint. In the diagram below, The SBC hairpins a call originating from a KPML endpoint, towards an RFC 2833 endpoint, and back out the initial interface to another KPML endpoint. Within the context of the INVITE signaling, the SBC issues and receives KPML SUBSCRIBE messages from both endpoints. Given the preference outlined in RFC 4370 that KPML subscriptions be unique to each DIALOG, the SBC monitors the local tag (From:) to discriminate between subscriptions, thereby supporting bi-directional subscriptions.

Configuration Considerations

You configure this support by enabling the kpmlRFC2833-iwf-on-hairpin parameter on the applicable sip-interface and/or session-agent.

Important configuration considerations include:

  • Set the rfcRFC 2833-mode parameter to preferred on the leg with the RFC 2833 endpoint.
  • Set the kpml-interworking and kpmlRFC2833-iwf-on-hairpin parameters to enabled on the leg with the KPML end point.
  • The session-agent configuration takes precedence.
  • If you target a configured session-agent and configure this interworking on the sip-interface, configure kpml-interworking to inherit on the session-agent.