You are here: CSP Developer’s Guide: Internet Protocol > 5 Session-Initiation Protocol (SIP) Software > SIP Support for MIME
Overview
Currently, the CSP Session Initiation Protocol (SIP) does not support Multipurpose Internet Mail Extensions (MIME) in outgoing messages. This feature allows a user to send proprietary MIME or standard MIME such as ISUP in outgoing messages. MIME data in incoming messages will be reported to the host.
Currently, MIME is supported by the SIP INVITE message. If the incoming INVITE message does not have SDP, then the CSP SIP stack assumes it is a delayed media scenario.
Pertinent Specifications
RFC 2046, RFC 3261
Description
The sending and reporting of MIME data requires the use of the new nested the new 0x2964 SIP MIME Information TLV to enhance the CSP SIP stack to send proprietary MIME in outgoing messages and report MIME data in incoming messages to the host.
This nested TLV contains the MIME header TLVs and MIME message body TLV and are listed below.
Header TLVs
• 0x295D Content Type (mandatory)
• 0x2965 SIP Content Encoding (optional, new)
• 0x2966 SIP Content Disposition (optional, new)
• 0x2967 SIP Content Language (optional, new)
Message Body TLV
• 0x2968 SIP MIME Message Body (mandatory, new)
The SIP MIME Message Body (0x2968) TLV is mandatory data. The Message Body data has to be provided by the host. If Content Type, mandatory header, is not provided by the host in the SIP Content Type (0x295D) TLV, then a default value of "application/custom" is inserted. All of the other headers listed above are optional and are populated only if provided by the host.
MIME will be included in the outgoing INVITE message only if data is available for tunneling. Otherwise, the other host provided TLVs (MIME headers) will be ignored.
Read and write access will be given to only one level of MIME (excluding the SDP). The message body will contain the SDP and another set of tunneled data.
MIME data in incoming INVITE messages is reported to the host in the PPL Event Indication (0x0043) and Request For Service with Data (0x002D) messages. The contents of the MIME (headers and message) are reported in associated TLVs without parsing. It is up to the host to interpret the MIME header contents and message body.
The MIME data can be tunneled in the outgoing INVITE message. The SIP Tunnel Type TLV (0x2936) is modified to include another type of tunneling which is the 0x0004 Customize Tunnel Type. It can be used to tunnel proprietary data within CSP SIP stack. For example, the contents of the data TLVs will not be parsed, but will be used in the outgoing message.
Refer to the detailed information on modified and new TLVs below.
Message Byte Length
The individual TLVs listed above do not have any individual limits on the message byte length, but collectively within the SIP MIME Information (0x2964) TLV the length must not exceed 780 bytes. A maximum of 780 bytes of MIME data (including headers, header content and the actual tunneled data) can be reported to the host. Any data beyond that will not be reported.
The CSP SIP stack allows NPDI data to be sent in a Route Control or Outseize Control message and followed by PPL Event Request message for subsequent data in order to support a call request. Sending NPDI data of a smaller byte size may only require using the Route Control or Outseize Control message. Using the PPL Event Request message may not be required.
The byte limitation for the total NPDI data (excluding redundant TLVs) in the API messages should not exceed 820 bytes.
Important! The SIP MIME Information (0x2964) TLV collective maximum byte length of 780 bytes and the total NPDI data maximum byte length of 820 bytes combined can not support messages of a size greater than 1500 bytes. The CSP nacks all SIP requests greater that 1500 bytes with the 513 message, Too Large.
API Call Control Messages
The following messages support the TLVs listed below that are used in the 0x0033 NPDI Universal ICB.
• Route Control (0x00E8)
• Outseize Control (0x002C)
• Request for Service with Data (0x002D)
• PPL Event Indication (0x0043)
• PPL Event Request (0x0044)
API and CSA Configuring and Querying
This feature can be configured either using the API or CSA.
API Configuring and Querying
The reporting of incoming MIME is a configurable option and is disabled by default. To enable this option, bit 20 of the 0x027F SIP Message Information Mask TLV has to be set and sent in the VoIP Protocol Configure (0x00EE) message.
MIME can be sent in an outgoing INVITE message by using the 0x2936 SIP Tunnel Type TLV, set to value 0x0004 Custom MIME Body in the Route Control (0x00E8) or Outseize Control (0x002C) message and followed by a PPL Event Request (0x0044) message for subsequent data. For a call, the tunnel type set using the SIP Tunnel Type TLV will have precedence over the tunnel type configured in the stack. If stack is preconfigured for a tunnel type, the host is not required to use the SIP Tunnel Type TLV (0x2936) unless the stack configuration for the tunnel type needs to be overridden.
MIME can also be sent in an outgoing INVITE message by using the 0x0270 SIP Tunnel Type TLV, set to value 0x0004 Custom MIME Body in the VoIP Protocol Configure (0x00EE) message.
These TLVs enable or disable the use of tunneled data and specify the tunneled data type.
• The SIP Tunnel Type (0x2936) TLV can be used to set the tunneled data type to 0x0004 Custom MIME Body on a per call basis.
• The SIP Tunnel Type (0x0270) TLV can be used to set the tunneled data type to 0x0004 Custom MIME Body to configure the stack.
In case tunneled data type is set both during configuration time and also on a per call basis, then the tunneled data type set on the per call basis takes precedence.
The VoIP Protocol Query (0x00EF) message is used to check the SIP Message Information Mask value.
CSA Configuring and Querying
To configure and query the SIP stack for this feature, view the Configure SIP Advanced screen, Additional Host Signaling Parameters, and select Report MIME Data in Incoming Messages.
Call Flow
TLV Details
Modified TLVs
The following TLVs have been abbreviated to show the inclusion of the Support for Multipurpose Internet Mail Extensions information as indicated by the change bars.
For all outgoing messages, this TLV enables and disables the use of tunneled data and specifies the tunneled data type.
Used in:
VoIP Protocol Configure message
VoIP Protocol Query message
Byte |
Description |
0, 1 |
Tag 0x0270 |
2, 3 |
Length 0x0002 |
4-6 |
Value[0-2] 0x0001 No tunneling (Default) 0x0002 CSP UPDF Tunneling 0x0004 Customize MIME Body |
0x027F SIP Message Information Mask
Used in:
VoIP Protocol Configure message
VoIP Protocol Query message
The host uses this TLV to specify the additional SIP message information to the host in the Request for Service with Data message.
Byte |
Description |
0, 1 |
Tag 0x027F |
2, 3 |
Length 0x0004 |
4-7 |
Value[0-3] This field is a 32-bit mask. Each bit selects specific
0 - Disabled (Default)
Bit 20 Selects reporting of MIME data in incoming messages. Bits 22-31 Reserved |
For all outgoing messages, this TLV enables and disables the use of tunneled data and specifies the tunneled data type.Used in:
0x0033 NPDI Universal ICB in:
Route Control message
Outseize Control message
PPL Event Request message
Byte |
Description |
0, 1 |
Tag 0x2936 |
2, 3 |
Length 0x0002 |
4-6 |
Value[0-2] 0x0001 No tunneling (Default) 0x0002 CSP UPDF Tunneling 0x0004 Custom MIME Body |
This TLV adds the content type to a SIP message. It also reports the content type, if present, in a SIP message. Prior to this feature, this TLV adds/reports content type only for the SIP INFO message. If there is a valid message body but the host has not supplied the content type, then the SIP stack adds the following content type as the default: "Content-Type: application/custom"
PPL Event Request message
PPL Event Indication message
Byte |
Description |
0, 1 |
Tag 0x295D |
2, 3 |
Length Variable (Maximum of 100) |
4-n |
Value Null terminated ASCII string |
New TLVs
Used in:
0x0033 NPDI Universal ICB in:
Route Control message
Outseize Control message
Request for Service with Data message
PPL Event Request message
PPL Event Indication message
Byte |
Description |
0, 1 |
Tag 0x2964 |
2, 3 |
Length Variable (Maximum of 780 bytes) |
Used in:
0x0033 NPDI Universal ICB
Byte |
Description |
0, 1 |
Tag 0x2965 |
2, 3 |
Length Variable |
4-n |
Value[0-n] Null Terminated ASII String |
0x2966 SIP Content Disposition
Used in:
0x0033 NPDI Universal ICB
Byte |
Description |
0, 1 |
Tag 0x2966 |
2, 3 |
Length Variable |
4-n |
Value[0-n] Null Terminated ASII String |
Used in:
0x0033 NPDI Universal ICB
Byte |
Description |
0, 1 |
Tag 0x2967 |
2, 3 |
Length Variable |
4-n |
Value[0-n] Null Terminated ASII String |
Used in:
0x0033 NPDI Universal ICB
Byte |
Description |
0, 1 |
Tag 0x2968 |
2, 3 |
Length Variable |
4-n |
Value[0-n] Null Terminated ASII String |