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.