- Cisco Unified Border Element Enterprise Protocol-Independent Features and Setup
- SIP-to-SIP Extended Feature Functionality for Session Border Controllers
- Bandwidth-Based Call Admission Control
- Interworking Between RSVP Capable and RSVP Incapable Networks
- Cisco Resource Reservation Protocol Agent
- SIP INFO Method for DTMF Tone Generation
- DTMF Events through SIP Signaling
- Call Progress Analysis Over IP-to-IP Media Session
- Codec Preference Lists
- AAC-LD MP4A-LATM Codec Support on Cisco UBE
- Multicast Music-on-Hold Support on Cisco UBE
- Network-Based Recording
- Video Recording - Additional Configurations
- TDoS Attack Mitigation
- Cisco Unified Communications Gateway Services--Extended Media Forking
- Dynamic Payload Type Interworking for DTMF and Codec Packets for SIP-to-SIP Calls
- iLBC Support for SIP and H.323
- DSP-Based Functionality on the Cisco UBE Enterprise Including Transcoding and Transrating
- Acoustic Shock Protection
- Noise Reduction
- SIP Ability to Send a SIP Registration Message on a Border Element
- SIP Profiles
- Session Refresh with Reinvites
- SIP Stack Portability
- VoIP for IPv6
- Interworking of Secure RTP calls for SIP and H.323
- Cisco UBE Support for SRTP-RTP Internetworking
- Support for SRTP Termination
- WebEx Telepresence Media Support Over Single SIP Session
- SIP SRTP Fallback to Nonsecure RTP
- Support for Software Media Termination Point
- Cisco Unified Communication Trusted Firewall Control
- Cisco Unified Communication Trusted Firewall Control-Version II
- Finding Feature Information
- Domain-Based Routing Support on the Cisco UBE
- URI-Based Dialing Enhancements
- Additional References
- Glossary
- Feature Information for SIP Profiles
- Information About SIP Profiles
- Restrictions for SIP Profiles
- How to Configure SIP Profiles
- Configuring a SIP Profile to Manipulate SIP Request or Response Headers
- Configuring SIP Profile Using Rule Tag
- Configuring a SIP Profile for Non-standard SIP Header
- Upgrading or Downgrading SIP Profile Configurations
- Configuring a SIP Profile as an Outbound Profile
- Configuring a SIP Profile as an Inbound Profile
- Verifying SIP Profiles
- Troubleshooting SIP Profiles
- Examples: Adding, Modifying, Removing SIP Profiles
- Example: Adding a SIP, SDP, or Peer Header
- Example: Modifying a SIP, SDP, or Peer Header
- Example: Remove a SIP, SDP, or Peer Header
- Example: Inserting SIP Profile Rules
- Example: Upgrading and Downgrading SIP Profiles automatically
- Example: Modifying Diversion Headers
- Example: Sample SIP Profile Application on SIP Invite Message
- Example: Sample SIP Profile for Non-Standard SIP Headers
SIP Profiles
Session Initiation Protocol (SIP) profiles change SIP incoming or outgoing messages so that interoperability between incompatible devices can be ensured.
SIP profiles can be configured with rules to add, remove, copy, or modify the SIP, Session Description Protocol (SDP), and peer headers that enter or leave CUBE. The rules in a SIP profile configuration can also be tagged with a unique number. Tagging the rules allows you to insert or delete rules at any position of the existing SIP profile configuration without deleting and reconfiguring the entire voice-class sip profile.
You can use the following tool to test your SIP profile on an incoming message. http://cantor.cisco.com/sip-profiles.html
Feature Information for SIP Profiles
The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.
Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Feature Name |
Releases |
Feature Information |
---|---|---|
SIP Profiles (for inbound messages) |
Cisco IOS 15.4(2)T Cisco IOS XE 3.12S |
This feature extends support to inbound messages. This feature modifies the following commands: The inbound keyword was added to the sip-profiles and voice-class sip profiles commands. |
Support for Rotary calls and Media Forking |
Cisco IOS 15.3(1)T |
With CSCty41575, this feature was enhanced to support forked and rotary calls. |
Configuring SIP Profile (Add, Delete or Modify) |
Cisco IOS 12.4(15)XZ Cisco IOS 12.4(20)T Cisco IOS XE 2.5 |
This feature allows users to change (add, delete, or modify) the standard SIP messages that are sent or received for better interworking with different SIP entities. This feature introduces the following commands: voice class sip-profiles, response, request. |
Support for Non-Standard SIP Headers |
Cisco IOS 15.5(2)T |
This feature allows users to add, copy, delete, or modify non-standard (for example, X-Cisco-Recording-Participant) using SIP profiles. The word keyword was added to the sip-profiles command to allow the user to configure any non-standard SIP header. |
Support for tagging rules in a SIP profile configuration |
Cisco IOS 15.5(2)T Cisco IOS XE 3.15S |
This feature allows users to tag the rules in a SIP profile configuration. Tagging the rules allows users to insert or delete rules at any position of the existing SIP profile configuration without deleting and reconfiguring the entire voice-class sip profile. The following command is introduced in voice class sip profiles configuration mode to tag and insert rules: rule This feature also allows users to upgrade or downgrade all the existing SIP profile configurations to rule-format and non-rule format. The following commands are introduced in global configuration mode: voice sip sip-profiles upgrade, voice sip sip-profiles downgrade |
Information About SIP Profiles
Protocol translation and repair is a key Cisco Unified Border Element (CUBE) function. CUBE can be deployed between two devices that support the same VoIP protocol (For example. SIP), but do not interwork because of differences in how the protocol is implemented or interpreted. CUBE can customize the SIP messaging on either side to what the devices in that segment of the network expects to see by normalizing the SIP messaging on the network border, or between two non-interoperable devices within the network.
Service providers may have policies for which SIP messaging fields should be present (or what constitutes valid values for the header fields) before a SIP call enters their network. Similarly, enterprises and small businesses may have policies for the information that can enter or exit their networks for policy or security reasons from a service provider SIP trunk.
In order to customize SIP messaging in both directions, you can place and configure a CUBE with a SIP profile at the boundary of these networks.
In addition to network policy compliance, the CUBE SIP profiles can be used to resolve incompatibilities between SIP devices inside the enterprise network. These are the situations in which incompatibilities can arise:
- A device rejects an unknown header (value or parameter) instead of ignoring it
- A device sends incorrect data in a SIP message
- A device does not implement (or implements incorrectly) protocol procedures
- A device expects an optional header value or parameter, or an optional protocol procedure that can be implemented in multiple ways
- A device sends a value or parameter that must be changed or suppressed before it leaves or enters the network
- Variations in the SIP standards on how to achieve certain functions
The SIP profiles feature on CUBE provides a solution to these incompatibilities and customization issues.
SIP profiles can also be used to change a header name from the long form to the compact form. For example, From to f. This can be used as a way to reduce the length of a SIP message. By default, the device never sends the compact form of the SIP messages although it receives either the long or the short form.
Important Characteristics of SIP Profiles
Given below are a few important notes for SIP Profiles:
-
Copy Variables u01 to u99 are shared by inbound and outbound SIP Profiles.
-
Session Initiation Protocol (SIP) and Session Description Protocol (SDP) headers are supported. SDP can be either a standalone body or part of a Multipurpose Internet Mail Extensions (MIME) message.
- The rules configured for an INVITE message are applied only to the first INVITE of a call. A special REINVITE keyword is used to manipulate subsequent INVITEs of a CALL.
- Manipulation of SIP headers by outbound SIP profiles occurs as the last step before the message leaves the CUBE device; that is, after destination dial-peer matching has taken place. Changes to the SIP messages are not remembered or acted on by the CUBE application. The Content-length field is recalculated after the SIP Profiles rules are applied to the outgoing message.
- If the ANY keyword is used in place of a header, it indicates that a rule must be applied to any message within the specified category.
- SIP header modification can be cryptic. It is easier to remove a header and add it back (with the new value), rather than modifying it.
- To include '?' (question-mark) character as part of match-pattern or replace-pattern, you need to press "Ctrl+v" keys and then type '?'. This is needed to treat ‘?’ as a input character itself instead of usual device help prompt.
- For header values used to
add, modify or copy a header:
- If a whitespace occurs, the entire value must be included between double quotes. For example, “User-Agent: CISCO CUBE”
Inbound SIP Profile:
- If the incoming message contains multiple instances of same header, the header values are stored as a comma separated list, and this needs to be considered while modifying it.
-
Modification by an inbound SIP profile takes place before regular SIP call processing happens so that behavior of CUBE would be as if it received the message directly without modification.
If inbound dial peer matching fails as required information could not be extracted from headers (like Request-URI, Via, From or To) due to issues in them, global dial peers are applied. An example is a request with invalid SIP-Req-URI.
-
After modification by inbound SIP Profiles, the parameters in SIP message might change, which might change the inbound dial-peer matched when actual dial-peer lookup is done.
-
In the register pass-through feature, there is only one dial-peer for register and response. So both register from phone and response from registrar would go through the same inbound sip profile under the dial-peer if any.
Restrictions for SIP Profiles
- Removal or addition of mandatory headers is not supported. You can only modify mandatory headers Mandatory SIP headers include To, From, Via, CSeq, Call-Id, and Max-Forwards. Mandatory SDP headers include v, o, s, t ,c, and m.
- Addition or removal of entire Multipurpose Internet Mail Extensions (MIME) or (Session Description Protocol) SDP bodies from SIP messages.
-
Syntax checking is not performed on SIP messages after SIP profile rules have been applied. Changes specified in the SIP profile should result in valid SIP protocol exchanges.
- The header length (including header name) after modification should not exceed 300 characters. Max header length for add value is approximately 220 characters. Max SDP length is 2048 characters. If any header length exceeds this maximum value after applying SIP profiles, then the profile is not applied.
- If a header-name is changed to its compact form, SIP profile rules cannot be applied on that header. Thus a SIP profile rule modifying a header name to its compact form must be the last rule on that header.
- We cannot modify the "image" m-line attributes (m=image 16850 udptl t38) using SIP profiles. SIP profiles can be applied only on audio and video m-lines in SDP.
- In a high-availability (HA) scenario, SIP profiles copy variable data is not check-pointed to standby.
-
Existing limitations and restrictions of outbound SIP profiles apply to inbound SIP profiles as well.
-
You cannot configure more than 99 variables for the SIP profiles copy option.
-
Once a SIP profile is configured using rule tag, you cannot add rules without tags in the same profile and vice-versa.
How to Configure SIP Profiles
To configure SIP Profiles, you must first configure the SIP Profile globally, and apply it at either to all dial peers (globally) or to a single dial peer (dial-peer level). After a SIP profile is configured, it can be applied as an inbound or outbound profile.
- Configuring a SIP Profile to Manipulate SIP Request or Response Headers
- Configuring SIP Profile Using Rule Tag
- Configuring a SIP Profile for Non-standard SIP Header
- Upgrading or Downgrading SIP Profile Configurations
- Configuring a SIP Profile as an Outbound Profile
- Configuring a SIP Profile as an Inbound Profile
- Verifying SIP Profiles
- Troubleshooting SIP Profiles
- Examples: Adding, Modifying, Removing SIP Profiles
Configuring a SIP Profile to Manipulate SIP Request or Response Headers
- response message [method method-type] {sip-header | sdp-header} header-to-add add header-value-to-add
- response message [method method-type] {sip-header | sdp-header} header-to-remove remove
- response message [method method-type] {sip-header | sdp-header} header-to-modify modify header-value-to-match header-value-to-replace
1.
enable
2.
configure
terminal
3.
voice
class
sip-profiles
profile-id
4.
Enter one of
the following to add, remove, modify SIP headers:
5.
Enter one of
the following to add, remove, or modify SIP response headers:
6.
end
DETAILED STEPS
Configuring SIP Profile Using Rule Tag
-
If a rule is added with the tag of an existing rule, then the existing rule is overwritten with the new rule.
-
For inserting a rule at the desired position, the SIP profile configuration should be in rule format. In case the SIP profile is in non-rule format, upgrade the SIP profiles to rule format before inserting a rule.
-
If a new rule is inserted, the new rule takes the position specified in before tag. The subsequent rules are incremented sequentially.
-
Once the rule is removed, the tag belonging to the removed rule remains vacant. The tags associated with the subsequent rules remain unchanged.
-
If a rule is added to a vacant tag, the new rule gets associated with the vacant tag and the subsequent rules remain unchanged.
1.
enable
2.
configure
terminal
3.
voice
class
sip-profiles
profile-id
4.
Enter one of
the following to add, copy, modify, or remove a SIP request or response headers
to a SIP profile configuration:
5.
Enter one of
the following to insert a rule in between the existing set of rules to add,
remove, or modify SIP request or response headers:
6.
Enter the
following to delete a rule:
7.
end
DETAILED STEPS
Configuring a SIP Profile for Non-standard SIP Header
- request message {sip-header } non-standard-header-to-add add non-standard-header-value-to-add
- request message {sip-header } non-standard-header-to-copy copy non-standard-header-value-to-match copy-variable
- request message {sip-header } non-standard-header-to-remove remove
- request message {sip-header } non-standard-header-to-modify modify non-standard-header-value-to-match non-standard-header-value-to-replace
- response message [method method-type] {sip-header } non-standard-header-to-add add non-standard-header-value-to-add
- response message [method method-type] {sip-header} non-standard-header-to-copy copy non-standard-header-value-to-match copy-variable
- response message [method method-type] {sip-header} non-standard-header-to-remove remove
- response message [method method-type] {sip-header} non-standard-header-to-modify modify non-standard-header-value-to-match non-standard-header-value-to-replace
1.
enable
2.
configure
terminal
3.
voice
class
sip-profiles
profile-id
4.
Enter one of
the following to add, copy, remove, or modify non-standard SIP request headers:
5.
Enter one of
the following to add, copy, remove, or modify non-standard SIP response
headers:
6.
end
DETAILED STEPS
Upgrading or Downgrading SIP Profile Configurations
Note | We recommend that you downgrade the SIP profiles to non-rule format configuration before migrating to a version below Cisco IOS Release 15.5(2)T or Cisco IOS-XE Release 3.15S. If you migrate without downgrading the SIP profile configurations, then all the SIP profile configurations is lost after migration. |
1.
enable
2.
Enter the
following to upgrade SIP profiles configurations to rule-format:
3.
Enter the
following to downgrade SIP profiles configurations to non-rule format:
4.
end
DETAILED STEPS
Now apply the SIP Profile as an inbound or outbound SIP profile.
Configuring a SIP Profile as an Outbound Profile
1.
enable
2.
configure
terminal
3.
Apply the SIP
profile to a dial peer:
4.
end
DETAILED STEPS
Configuring a SIP Profile as an Inbound Profile
You can configure a SIP profile as an inbound profile applied globally or to a single inbound dial peer. Inbound SIP profiles feature must be enabled before applying it to dial peers.
1.
enable
2.
configure
terminal
3.
voice service voip
4.
sip
5.
sip-profiles
inbound
6.
Apply the
SIP profile to a dial peer:
7.
end
DETAILED STEPS
Verifying SIP Profiles
1.
show dial-peer voice
id |
include
profile
DETAILED STEPS
Troubleshooting SIP Profiles
1.
debug ccsip all
DETAILED STEPS
Examples: Adding, Modifying, Removing SIP Profiles
Example: Adding a SIP, SDP, or Peer Header
Example: Adding "b=AS:4000" SDP header to the video-media Header of the INVITE SDP Request Messages
Device(config)# voice class sip-profiles 10 Device(config-class)# request INVITE sdp-header Video-Bandwidth-Info add "b=AS:4000" Device(config-class)# end
Example: Adding "b=AS:4000" SDP header to the video-media Header of the INVITE SDP Request Messages in rule format
Device(config)# voice class sip-profiles 10 Device(config-class)# rule 1 request INVITE sdp-header Video-Bandwidth-Info add "b=AS:4000" Device(config-class)# end
Example: Adding the Retry-After Header to the SIP 480 Response Messages
Device(config)# voice class sip-profiles 20 Device(config-class)# response 480 sip-header Retry-After add “Retry-After: 60” Device(config-class)# end
Example: Adding the Retry-After Header to the SIP 480 Response Messages in rule format
Device(config)# voice class sip-profiles 20 Device(config-class)# rule 1 response 480 sip-header Retry-After add “Retry-After: 60” Device(config-class)# end
Example: Adding "User-Agent: SIP-GW-UA" to the User-Agent Field of the 200 Response SIP Messages
Device(config)# voice class sip-profiles 40 Device(config-class)# response 200 sip-header User-Agent add "User-Agent: SIP-GW-UA" Device(config-class)# end
Example: Adding "User-Agent: SIP-GW-UA" to the User-Agent Field of the 200 Response SIP Messages in rule format
Device(config)# voice class sip-profiles 40 Device(config-class)# rule 1 response 200 sip-header User-Agent add "User-Agent: SIP-GW-UA" Device(config-class)# end
Applying the SIP Profiles
! Applying SIP profiles globally Device(config)# voice service voip Device (config-voi-serv) sip-profiles 20 Device (config-voi-serv) end ! Applying SIP profiles to one dial peer only Device (config) dial-peer voice 10 voip Device (config-dial-peer) voice-class sip profiles 30 Device (config-dial-peer) voice-class sip profiles 40 Device (config-dial-peer) voice-class sip profiles 10 Device (config-dial-peer) end
Example: Modifying a SIP, SDP, or Peer Header
Example: Modifying SIP-Req-URI of the Header of the INVITE and RE-INVITE SIP Request Messages to include "user=phone"
Device(config)# voice class sip-profiles 30 Device(config-class)# request INVITE sip-header SIP-Req-URI modify "; SIP/2.0" ";user=phone SIP/2.0" Device(config-class)# request RE-INVITE sip-header SIP-Req-URI modify "; SIP/2.0" ";user=phone SIP/2.0" Device(config-class)# end
Example: Modifying SIP-Req-URI of the Header of the INVITE and RE-INVITE SIP Request Messages to include "user=phone" in rule format
Device(config)# voice class sip-profiles 30 Device(config-class)# rule 1 request INVITE sip-header SIP-Req-URI modify "; SIP/2.0" ";user=phone SIP/2.0" Device(config-class)# rule 2 request RE-INVITE sip-header SIP-Req-URI modify "; SIP/2.0" ";user=phone SIP/2.0" Device(config-class)# end
Modify the From Field of a SIP INVITE Request Messages to “gateway@gw-ip-address” Format
For example, modify 2222000020@10.13.24.7 to gateway@10.13.24.7
Device(config)# voice class sip-profiles 20 Device(config-class)# request INVITE sip-header From modify "(<.*:)(.*@)" "\1gateway@"
Modify the From Field of a SIP INVITE Request Messages to “gateway@gw-ip-address” Format in rule format
For example, modify 2222000020@10.13.24.7 to gateway@10.13.24.7
Device(config)# voice class sip-profiles 20 Device(config-class)# rule 1 request INVITE sip-header From modify "(<.*:)(.*@)" "\1gateway@"
Replace "CiscoSystems-SIP-GW-UserAgent" with "-" in the Originator Header of the SDP in INVITE Request Messages
Device(config)# voice class sip-profiles 10 Device(config-class)# request INVITE sdp-header Session-Owner modify "CiscoSystems-SIP-GW-UserAgent“ "-"
Replace "CiscoSystems-SIP-GW-UserAgent" with "-" in the Originator Header of the SDP in INVITE Request Messages in rule format
Device(config)# voice class sip-profiles 10 Device(config-class)# rule 1 request INVITE sdp-header Session-Owner modify "CiscoSystems-SIP-GW-UserAgent“ "-"
Convert "sip uri" to "tel uri" in Req-URI, From and To Headers of SIP INVITE Request Messages
For example, modify sip:2222000020@9.13.24.6:5060” to “tel:2222000020
Device(config)# voice class sip-profiles 40 Device(config-class)# request INVITE sip-header SIP-Req-URI modify "sip:(.*)@[^ ]+" "tel:\1" Device(config-class)# request INVITE sip-header From modify "<sip:(.*)@.*>" "<tel:\1>" Device(config-class)# request INVITE sip-header To modify "<sip:(.*)@.*>" "<tel:\1>"
Convert "sip uri" to "tel uri" in Req-URI, From and To Headers of SIP INVITE Request Messagesin rule format
For example, modify sip:2222000020@9.13.24.6:5060” to “tel:2222000020
Device(config)# voice class sip-profiles 40 Device(config-class)# rule 1 request INVITE sip-header SIP-Req-URI modify "sip:(.*)@[^ ]+" "tel:\1" Device(config-class)# rule 2 request INVITE sip-header From modify "<sip:(.*)@.*>" "<tel:\1>" Device(config-class)# rule 3 request INVITE sip-header To modify "<sip:(.*)@.*>" "<tel:\1>"
Example: Change the Audio Attribute Ptime:20 to Ptime:30
Inbound ptime:
a=ptime:20
Outbound ptime:
a=ptime:30
Device(config)# voice class sip-profiles 103 Device(config-class)# request ANY sdp-header Audio-Attribute modify "a=ptime:20" "a=ptime:30"
Example: Modify Audio direction "Audio-Attribute"
Some service providers or customer equipment reply to delay offer invites and or re-invites that contain a=inactive with a=inactive, a=recvonly, or a=sendonly. This can create an issue when trying to transfer or retrieve a call from hold. The result is normally one-way audio after hold or resume or transfer or moh is not heard. To resolve this issue changing the audio attribute to Sendrecv prevents the provider from replaying back with a=inactive, a=recvonly, or a=sendonly.
Case 1:
Inbound Audio-Attribute a=inactive Outbound Audio-Attribute a=sendrecv
Case 2:
Inbound Audio-Attribute a=recvonly Outbound Audio-Attribute a=sendrecv
Case 3
Inbound Audio-Attribute a=sendonly Outbound Audio-Attribute a=sendrecv
Device(config)# voice class sip-profiles 104 Device(config-class)# request any sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv" Device(config-class)# request any sdp-header Audio-Attribute modify "a=recvonly" "a=sendrecv" Device(config-class)# request any sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv" Device(config-class)# response any sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv" Device(config-class)# response any sdp-header Audio-Attribute modify "a=recvonly" "a=sendrecv" Device(config-class)# response any sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
Applying the SIP Profiles to Dial Peers
! Applying SIP Profiles globally Device(config)# voice service voip Device (config-voi-serv) sip-profiles 20 Device (config-voi-serv) sip-profiles 10 Device (config-voi-serv) sip-profiles 40 Device (config-voi-serv) sip-profiles 103 Device (config-voi-serv) sip-profiles 104 Device (config-voi-serv) exit ! Applying SIP Profiles to one dial peer only Device (config) dial-peer voice 90 voip Device (config-dial-peer) voice-class sip profiles 30
Example: Remove a SIP, SDP, or Peer Header
Remove Cisco-Guid SIP header from all Requests and Responses
Device(config)# voice class sip-profiles 20 Device(config-class)# request ANY sip-header Cisco-Guid remove Device(config-class)# response ANY sip-header Cisco-Guid remove Device(config-class)# end
Remove Server Header from 100 and 180 SIP Response Messages
Device(config)# voice class sip-profiles 20 Device(config-class)# response 100 sip-header Server remove Device(config-class)# response 180 sip-header Server remove Device(config-class)# end
Removing a SIP Profile rule in rule format configuration
SIP Profile configuration in rule format
Device(config)# voice class sip-profiles 10 Device(config-class)# rule 1 request any sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv" Device(config-class)# rule 2 request any sdp-header Audio-Attribute modify "a=recvonly" "a=sendrecv" Device(config-class)# end
Removing the rule using rule tag
Device(config)# voice class sip-profiles 10 Device(config-class)# no rule 1 Device(config-class)# end
Once the rule is removed, the tag belonging to the removed rule remains vacant. The tags associated with the subsequent rules are unchanged.
The SIP Profile configuration after removing the rule
Device(config)# voice class sip-profiles 10 Device(config-class)# rule 2 request any sdp-header Audio-Attribute modify "a=recvonly" "a=sendrecv" Device(config-class)# end
Example: Inserting SIP Profile Rules
Example: Inserting a SIP Profile Rule
Inserting a SIP profile rule to a SIP Profile
Device(config)#voice class sip-profiles 1 Device(config-class)#rule 1 request INVITE sip-header Contact Modify “(.*)” “\1;temp=xyz” Device(config-class)#rule 2 request INVITE sip-header Supported Add “Supported: ” Device(config-class)#rule before 2 request INVITE sip-header To Modify “(.*)” “\1;temp=abc”
The SIP Profile after inserting the new rule
Device(config)#voice class sip-profiles 1 Device(config-class)#rule 1 request INVITE sip-header Contact Modify “(.*)” “\1;temp=xyz” Device(config-class)#rule 2 request INVITE sip-header To Modify “(.*)” “\1;temp=abc” Device(config-class)#rule 3 request INVITE sip-header Supported Add “Supported: ”
Example: Upgrading and Downgrading SIP Profiles automatically
Upgrading SIP Profiles
Before upgrading a SIP Profile
Device#voice class sip-profiles 1 Device#request INVITE sip-header Contact Modify “(.*)” “\1;temp=xyz” Device#request INVITE sip-header Supported Add “Supported: ” Device#voice sip sip-profiles upgrade
After Upgrading a SIP Profile
Device#voice class sip-profiles 1 Device#rule 1 request INVITE sip-header Contact Modify “(.*)” “\1;temp=xyz” Device#rule 2 request INVITE sip-header Supported Add “Supported: ”
Downgrading SIP Profiles
Before downgrading a SIP Profile
Device#voice class sip-profiles 1 Device#rule 1 request INVITE sip-header Contact Modify “(.*)” “\1;temp=xyz” Device#rule 2 request INVITE sip-header Supported Add “Supported: ” Device#voice sip sip-profiles downgrade
After downgrading a SIP Profile
Device#voice class sip-profiles 1 Device#request INVITE sip-header Contact Modify “(.*)” “\1;temp=xyz” Device#request INVITE sip-header Supported Add “Supported: ”
Example: Modifying Diversion Headers
Example: Modify Diversion Headers from Three-Digit Extensions to Ten Digits.
Most service providers require a ten digit diversion header. Prior to Call manager 8.6, Call manager would only send the extension in the diversion header. A SIP profile can be used to make the diversion header ten digits.
Call manager version 8.6 and above has the field “Redirecting Party Transformation CSS” which lets you expand the diversion header on the call manager.
The SIP profile will look for a diversion header containing "<sip:5..." , where ... stands for the three-digit extension and then concatenates 9789365 with these three digits.
Original Diversion Header:
Diversion:<sip:5100@161.44.77.193>;privacy=off;reason=unconditional;counter=1;screen=no
Modified Diversion Header:
Diversion: <sip:9789365100@10.86.176.19>;privacy=off;reason=unconditional;counter=1;screen=no
Device(config)# voice class sip-profiles 101 Device(config-class)# request Invite sip-header Diversion modify "<sip:5(...)@" "<sip:9789365\1@" Device(config-class)# end
Example: Create a Diversion header depending on the area code in the From field
Most service providers require a redirected call to have a diversion header that contains a full 10 digit number that is associated with a SIP trunk group. Sometimes, a SIP trunk may cover several different area codes, states, and geographic locations. In this scenario, the service provider may require a specific number to be placed in the diversion header depending on the calling party number.
In the below example, if the From field has an area code of 978 "<sip:978", the SIP profile leaves the From field as is and adds a diversion header.
Device(config)# voice class sip-profiles 102 Device(config-class)# request INVITE sip-header From modify "From:(.*)<sip:978(.*)@(.*)" "From:\1<sip:978\2@\3\x0ADiversion: <sip:9789365000@10.86.176.19:5060;privacy=off;reason=unconditional;counter=1;screen=no"
The below diversion header is added. There was no diversion header before this was added:
Diversion: <sip:9789365000@10.86.176.19:5060;transport=udp>"
Example: Sample SIP Profile Application on SIP Invite Message
The SIP profile configured is below:
voice class sip-profiles 1 request INVITE sdp-header Audio-Bandwidth-Info add "b=AS:1600“ request ANY sip-header Cisco-Guid remove request INVITE sdp-header Session-Owner modify "CiscoSystems-SIP-GW-UserAgent" "-“
The SIP INVITE message before the SIP profile has been applied is show below:
INVITE sip:2222000020@9.13.40.250:5060 SIP/2.0 Via: SIP/2.0/UDP 9.13.40.249:5060;branch=z9hG4bK1A203F From: "sipp " <sip:1111000010@9.13.40.249>;tag=F11AE0-1D8D To: <sip:2222000020@9.13.40.250> Date: Mon, 29 Oct 2007 19:02:04 GMT Call-ID: 4561B116-858811DC-804DEF2E-4CF2D71B@9.13.40.249 Cisco-Guid: 1163870326-2240287196-2152197934-1290983195 Content-Length: 290 v=0 o=CiscoSystemsSIP-GW-UserAgent 6906 8069 IN IP4 9.13.40.249 s=SIP Call c=IN IP4 9.13.40.249 t=0 0 m=audio 17070 RTP/AVP 0 c=IN IP4 9.13.40.249 a=rtpmap:0 PCMU/8000 a=ptime:20
INVITE sip:2222000020@9.13.40.250:5060 SIP/2.0 Via: SIP/2.0/UDP 9.13.40.249:5060;branch=z9hG4bK1A203F From: "sipp " <sip:1111000010@9.13.40.249>;tag=F11AE0-1D8D To: <sip:2222000020@9.13.40.250> Date: Mon, 29 Oct 2007 19:02:04 GMT Call-ID: 4561B116-858811DC-804DEF2E-4CF2D71B@9.13.40.249 Content-Length: 279 v=0 o=- 6906 8069 IN IP4 9.13.40.249 s=SIP Call c=IN IP4 9.13.40.249 t=0 0 m=audio 17070 RTP/AVP 0 c=IN IP4 9.13.40.249 a=rtpmap:0 PCMU/8000 a=ptime:20 b=AS:1600
Example: Sample SIP Profile for Non-Standard SIP Headers
Prior to Cisco IOS Release 15.5(2)T, there was no method to add, copy, delete, or modify any non-standard SIP headers like 'X-Cisco-Recording-Participant' using SIP profiles. The SIP profile will look for the new option "WORD" that allows the user to change any non-standard SIP header.
voice class sip-profiles 1 request INVITE sip-header X-Cisco-Recording-Participant copy "sip:(.*)@" u01 request INVITE sip-header X-Cisco-Recording-Participant modify "sip:sipp@" "sip:1000@" request INVITE sip-header My-Info add "My-Info: MF Call" request INVITE sip-header My-Info remove