Skip to end of metadata
Go to start of metadata
Table of Contents
About this Page
  • This document details changing the DTMF event number in the SDP body.
  • This document features the Add Raw function. In this example, Add Raw is used to search for (and possibly replace) text in the SDP body.
  • This document is only an example of how SMM might be used. An incoming media/rtpmap cannot be successfully changed because the opposing SIP device will still expect events to arrive at the original mapping. If the mapping for 2833 digits is changed by an ingress SMM from 116 to 101, the opposing device will still expect to receive 2833 digits as RTP event 116. Changing the incoming SIP SDP does not change anything in the opposing SIP device.

Prerequistes

Requires Sonus SBC1000/2000 Version 2.2 or later

 

Summary

This document describes how to change the DTMF event number in an incoming SDP.

Changing the DTMF event number

In this particular instance, an incoming SDP used 116 for the DTMF event instead of the standard 101. The SMM configuration below repairs both the media (m line) and the attributes (a line) to modify 116 to 101.

m=audio 28048 RTP/AVP 18 116
c=IN IP4 41.87.234.68
a=rtpmap:18 G729/8000
a=rtpmap:116 telephone-event/8000

As mentioned in the About This Page, the device that originated the above SDP will still expect to receive telephone-events as RTP event 116. Changing the incoming SDP will cause the SBC to send events on 101, but the receiving device's RTP processor will still expect events to arrive at 116; DTMF digits will not function. This document is both an example of how to use the SMM Raw and Regex options, and is also a reminder that one must consider the actual protocols in order to successfully employ the SMM feature.

Configure the SBC1000/2000 Header Manipulation

  1. Create a new Mesasge Rule Table entry and populate the first Message Rule as shown below. This entry will modify the m line from
    m=audio 28048 RTP/AVP 18 116 to
    m=audio 28048 RTP/AVP 18 101.

    Figure : Create Message Rule Entry

     

  2. Create a second Message Rule entry in the table. This entry will modify the a line from
    a=rtpmap:116 telephone-event/8000 to
    a=rtpmap:101 telephone-event/8000 

    Figure : Create Second Message Rule Entry

     

  3. Add the SMM Table to the incoming Signaling Group.

    Figure : Add SMM Table

Debugging Output

   
2012-01-22 13:31:58,610] 1420 0001 com.net.ux.sip TRACE (Executive.cpp:58) - Run: Protocol Engine::getting ruleid (19)
[2012-01-22 13:31:58,610] 1421 0001 com.net.ux.sip TRACE (Executive.cpp:75) - Run: Processing Message Rule (Change dtmf from 116 to 101)
[2012-01-22 13:31:58,610] 1422 0001 com.net.ux.sip TRACE (Executive.cpp:127) - processMessageRule: Processing Message Rule (19)
[2012-01-22 13:31:58,610] 1423 0001 com.net.ux.sip TRACE (Executive.cpp:1252) - MatchSipMessageRule: StartLine from configuration (*)From Msg (INVITE sip:3539@10.1.1.74 SIP/2.0)
[2012-01-22 13:31:58,610] 1424 0001 com.net.ux.sip DEBUG (RegexRule.h:74) - debugInfo: RegexRule:: RuleType(0), Expression((m\=.*)116)

[2012-01-22 13:31:58,610] 1425 0001 com.net.ux.sip DEBUG (ProtocolField.h:93) - debugInfo: FieldElement:: FieldType(1) Source(\1101)
[2012-01-22 13:31:58,611] 1426 0001 com.net.ux.sip DEBUG (ProtocolField.h:211) - debugInfo: FieldElementLiteral:: stringLiteral(\1101)
[2012-01-22 13:31:58,611] 1427 0001 com.net.ux.sip DEBUG (RuleBase.h:123) - debugInfo: RuleBase:: RuleBaseType(0)  Result(1) Description(Change m line) valid(true), Condition Expression(No conditions for this header rule)
[2012-01-22 13:31:58,611] 1428 0001 com.net.ux.sip TRACE (Executive.cpp:186) - processMessageRule: Processing Regex rule
[2012-01-22 13:31:58,611] 1429 0001 com.net.ux.sip TRACE (Executive.cpp:727) - buildField: Building fields with element count=1
[2012-01-22 13:31:58,611] 1430 0001 com.net.ux.sip TRACE (Executive.cpp:755) - buildField: Building field literal
[2012-01-22 13:31:58,611] 1431 0001 com.net.ux.sip TRACE (Executive.cpp:295) - processRegexMessage: RuleRegex replacement=\1101, exp=(m\=.*)116
[2012-01-22 13:31:58,611] 1432 0001 com.net.ux.sip TRACE (Executive.cpp:785) - messageRegex: Executing Message Regex
[2012-01-22 13:31:58,612] 1433 0001 com.net.ux.sip WARN (GenericUriListHeader.cpp:41) - encode: encode error hdr:Contact uri-count:0 this:0x61fd58
[2012-01-22 13:31:58,612] 1434 0001 com.net.ux.sip WARN (GenericUriHeader.cpp:69) - encode: Error in Encoding uri:0x0 type:0 this:0x309bb0
[2012-01-22 13:31:58,612] 1435 0001 com.net.ux.sip WARN (GenericUriHeader.cpp:69) - encode: Error in Encoding uri:0x0 type:0 this:0x309c48
[2012-01-22 13:31:58,612] 1436 0001 com.net.ux.sip TRACE (SipMessage.cpp:1312) - getObjectValue: name:(0:Message) value:
[2012-01-22 13:31:58,613] 1437 0001 com.net.ux.sip TRACE (SipMessage.cpp:1392) - setObjectValue: name:(0:Message) value:INVITE sip:3539@10.1.1.74 SIP/2.0
Cisco-Guid: 4170650438-384321033-2730718288-2880066070
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, REFER, NOTIFY, REGISTER
Call-ID: 4-1f0@10.1.1.91
Contact: sip:anonymous@10.1.1.91
Content-Length: 177
Content-Type: application/sdp
CSeq: 552136960 INVITE
From:  <sip:anonymous@10.1.1.74>;tag=254b0000
P-Asserted-Identity: <sip:anonymous@10.1.1.74>
Privacy:
Remote-Party-Id: <sip:anonymous@10.1.1.74>; party=calling; privacy=full
To:  <sip:3539@10.1.1.74>
User-Agent: SHOUT 3.5v70
Via: SIP/2.0/UDP 10.1.1.91

v=0
o=- 0 0 IN IP4 10.1.1.91
s=SIP call via SHOUT
c=IN IP4 10.1.1.91
b=CT:1000
t=0 0
m=audio 16392 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:116 telephone-event/8000

[2012-01-22 13:31:58,613] 1438 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Unknown
[2012-01-22 13:31:58,614] 1439 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Allow
[2012-01-22 13:31:58,614] 1440 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Call-ID
[2012-01-22 13:31:58,614] 1441 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Contact
[2012-01-22 13:31:58,614] 1442 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Content-Length
[2012-01-22 13:31:58,614] 1443 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Content-Type
[2012-01-22 13:31:58,614] 1444 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type CSeq
[2012-01-22 13:31:58,614] 1445 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type From
[2012-01-22 13:31:58,614] 1446 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type P-Asserted-Identity
[2012-01-22 13:31:58,614] 1447 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Privacy
[2012-01-22 13:31:58,614] 1448 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Remote-Party-Id
[2012-01-22 13:31:58,614] 1449 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type To
[2012-01-22 13:31:58,615] 1450 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type User-Agent
[2012-01-22 13:31:58,615] 1451 0001 com.net.ux.sip TRACE (SipMessage.cpp:569) - decodeHeaders: SIP message Header type Via
[2012-01-22 13:31:58,616] 1452 0001 com.net.ux.sip TRACE (Executive.cpp:297) - processRegexMessage: RuleRegex return:(1)n
[2012-01-22 13:31:58,616] 1453 0001 com.net.ux.sip DEBUG (RegexRule.h:74) - debugInfo: RegexRule:: RuleType(0), Expression((a\=rtpmap:)116(.*))

[2012-01-22 13:31:58,616] 1454 0001 com.net.ux.sip DEBUG (ProtocolField.h:93) - debugInfo: FieldElement:: FieldType(1) Source(\1101\2)
[2012-01-22 13:31:58,616] 1455 0001 com.net.ux.sip DEBUG (ProtocolField.h:211) - debugInfo: FieldElementLiteral:: stringLiteral(\1101\2)
[2012-01-22 13:31:58,616] 1456 0001 com.net.ux.sip DEBUG (RuleBase.h:123) - debugInfo: RuleBase:: RuleBaseType(0)  Result(1) Description(Change rtpmap) valid(true), Condition Expression(No conditions for this header rule)
[2012-01-22 13:31:58,616] 1457 0001 com.net.ux.sip TRACE (Executive.cpp:186) - processMessageRule: Processing Regex rule
[2012-01-22 13:31:58,616] 1458 0001 com.net.ux.sip TRACE (Executive.cpp:727) - buildField: Building fields with element count=1
[2012-01-22 13:31:58,616] 1459 0001 com.net.ux.sip TRACE (Executive.cpp:755) - buildField: Building field literal
[2012-01-22 13:31:58,617] 1460 0001 com.net.ux.sip TRACE (Executive.cpp:295) - processRegexMessage: RuleRegex replacement=\1101\2, exp=(a\=rtpmap:)116(.*)
[2012-01-22 13:31:58,617] 1461 0001 com.net.ux.sip TRACE (Executive.cpp:785) - messageRegex: Executing Message Regex
[2012-01-22 13:31:58,617] 1462 0001 com.net.ux.sip TRACE (SipMessage.cpp:1312) - getObjectValue: name:(0:Message) value:
[2012-01-22 13:31:58,618] 1463 0001 com.net.ux.sip TRACE (SipMessage.cpp:1392) - setObjectValue: name:(0:Message) value:INVITE sip:3539@10.1.1.74 SIP/2.0
Cisco-Guid: 4170650438-384321033-2730718288-2880066070
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, REFER, NOTIFY, REGISTER
Call-ID: 4-1f0@10.1.1.91
Contact: <sip:anonymous@10.1.1.91>
Content-Length: 177
Content-Type: application/sdp
CSeq: 552136960 INVITE
From:  <sip:anonymous@10.1.1.74>;tag=254b0000
P-Asserted-Identity:  <sip:anonymous@10.1.1.74>
Privacy:
Remote-Party-Id:  <sip:anonymous@10.1.1.74>;party=calling;privacy=full
To:  <sip:3539@10.1.1.74>
User-Agent: SHOUT 3.5v70
Via: SIP/2.0/UDP 10.1.1.91

v=0
o=- 0 0 IN IP4 10.1.1.91
s=SIP call via SHOUT
c=IN IP4 10.1.1.91
b=CT:1000
t=0 0
m=audio 16392 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000

Important Notes

The SIP Header feature cannot generate a new SIP packet. Only arriving or leaving SIP packets changed via the SIP Header function.

Care must be exercised when modifying incoming SIP packets, especially with respects to the TO, FROM and RURI headers. Modifying tags, IDs or any other items that define the dialogue or transactions, will likely cause calls to not complete.

This configuration note does not detailed a supported configuration as changing the rtpmap on an incoming SDP does not change the sending device's internal rtpmaping.

  • No labels