In this section:
The SBC Core supports Message Session Relay Protocol (MSRP), which is typically used for Instant messaging and File Transfer applications over TCP or TLS. MSRP is established, similar to any other media application such as Audio or Video, using Session Initiation Protocol (SIP) by exchanging the Session Description Protocol (SDP) using the offer/answer model. The SBC mostly adheres to RFC 6714 Connection Establishment for Media Anchoring and RFC 4145 TCP-Based Media Transport in the Session Description Protocol while also considering the key concepts as defined in RFC 4975. The SBC does not provide MSRP B2BUA functionality, and relays MSRP payload while providing peripheral SBC functionality.
MSRP session setup is similar to audio and video sessions. For details, refer to MSRP Session Setup and MSRP Call Flow Example.
MSRP/TCP and BFCP/TCP use ephemeral port range and are not displayed as regular media. BFCP/UDP uses media port range (UDP), therefore, it is visible.
MSRP support is enabled or disabled on a per-trunk group basis, and is controlled by the SIP trunk group media flag called "msrp". By default, MSRP is enabled. The CLI syntax is shown below:
% set addressContext <addressContextName> zone <zoneName> sipTrunkGroup <trunkGroupName> media msrp <enabled | disabled>
Refer to SIP Trunk Group - Media - CLI or SIP Trunk Group - Media (EMA) for configuration details.
The SBC supports source address filtering for MSRP packets. If enabled, the SBC accepts the TCP connection only from the IP address negotiated in SDP. If disabled, SBC does not perform any source address validation before accepting TCP connection. This is enabled by default. The CLI syntax is shown below.
% set addressContext <addressContextName> zone <zoneName> sipTrunkGroup <trunkGroupName> media sourceAddressFiltering <enabled | disabled>
See SIP Trunk Group - Media - CLI or SIP Trunk Group - Media (EMA) for configuration details.
This port range is used by the SBC to advertise which TCP port can accept connections. A unique unused port from this range is included in the SDP media line in the offer or answer towards the MSRP UAs. The SBC uses a port from this range per MSRP call leg, if it takes up a TCP server role. The default range is 1024 to 65535.
% set system media tcpPortRange {1024..65535}
See Media System - CLI for configuration details.
Differentiated Services Code Point (DSCP) is an IP packet field that enables different levels of service to be assigned to network traffic. DSCP is the combination of IP Precedence and Type of Service fields. The SBC supports DSCP marking of MSRP packets using the "typeOfService" configurable in the Packet Service Profile to set six most significant bits of Type of Service byte in an IP header. The CLI syntax is shown below. Default value is "0".
% set profiles media packetServiceProfile <profileName> qosValues msrpDscp <value to be set>
See Packet Service Profile - CLI or Media Profiles - Packet Service Profile (EMA) for configuration details.
MSRP traffic can consume significant bandwidth depending upon the application. For example, a UA that wishes to transfer a file using MSRP can potentially use up significant amount of bandwidth as compared to a UA that uses MSRP to send an instant message. To limit bandwidth usage, reserve a percentage of bandwidth across all physical interfaces using the following CLI command. The default value is "0" %.
% set system media dedicatedBWForNonRTPMedia <0...50>
For default values, the bandwidth available for RTP traffic across all interfaces will continue to be 95%, MSRP shares the 5% remaining bandwidth with signaling. This is suitable only when the expected bandwidth usage for MSRP is minimal and not expected to grow any larger.
Ideally, a percentage of the interface should be reserved for MSRP by setting a non-zero value. This will accordingly reduce the available bandwidth for RTP from 95%. However, this will guarantee that aggregate MSRP traffic usage does not exceed the reserved bandwidth, thereby not interfering with RTP or Signaling.
See Media System - CLI for configuration details.
The number of active MSRP sessions allowed on the SBC can be restricted using the following CLI command. The MSRP active session limit can be specified per trunk group (default value is unlimited). Once this configured limit is reached, no new MSRP sessions are accepted, but are instead rejected gracefully with a 488 response code to the INVITE.
% set addressContext <addressContextName> zone <zoneName> sipTrunkGroup <trunkGroupName> cac tcpMediaLimit <0...5000>
See SIP Trunk Group - CAC - CLI or SIP Trunk Group - CAC (EMA) for configuration details.
MSRP can be configured for Direct Media mode similarly to audio or video. In Direct Media mode, MSRP packets are exchanged directly between the UAs without traversing the SBC. However, SIP session are still established through the SBC and exist in the signaling path until the SIP sessions are torn down.
To configure MSRP for Direct Media, do the following:
Enable the Direct Media flag in the Packet Service Profiles. If using different packet service profiles on both legs of the call, enable Direct Media on both packet service profiles. For example:
% set profiles media packetServiceProfile PUBLIC_leg flags useDirectMedia enable % set profiles media packetServiceProfile PRIVATE_leg flags useDirectMedia enable
Enable the Direct Media control flag on the SIP trunk groups used for both legs of the MSRP session. For example:
% set addressContext default zone PUBLIC sipTrunkGroup PUBLIC_TG media directMediaAllowed enabled % set addressContext default zone PRIVATE sipTrunkGroup PRIVATE_TG media directMediaAllowed enabled
See following pages for configuration details:
MSRP UAs residing behind NAT can be configured at the SIP trunk group as follows. For example:
% set addressContext default zone PUBLIC sipTrunkGroup PUBLIC_TG services natTraversal mediaNat enabled
As described in the "Connection Negotiation" section of MSRP Session Setup page, with NAT enabled, the SBC always plays a TCP server role expecting the UAs to connect to it. To ensure that no malicious client connects to the SBC, enable the following configuration to validate that the connecting peer’s MSRP IP address belongs to the same subnet as the SIP signaling IP from where the INVITE originated. For example:
% set addressContext default zone PUBLIC sipTrunkGroup PUBLIC_TG services natTraversal secureMediaNatPrefix 29
See SIP Trunk Group - Services - CLI or SIP Trunk Group - Services (EMA) for configuration details.
The SBC collects and displays basic statistics per MSRP session, such as the number of bytes exchanged and the TCP IP and Port information of the UAs involved in the session. The statistics can be displayed either using the CLI commands below or by viewing in the Call Detail Record as shown below.
CLI Example:
> show status global callMediaStatus callMediaStatus 786432 { mediaStreamsInCall audio,TCP/MSRP/CHAT; : mediaStream3Label TCP/MSRP/CHAT; ingressMediaStream3OctetsSent 136; ingressMediaStream3OctetsReceived 136; egressMediaStream3OctetsSent 136; egressMediaStream3OctetsReceived 136; egressMediaStream3TcpRole server; ingressMediaStream3TcpRole server; > show status global callDetailStatus callDetailStatus 786432 { mediaStreams audio,TCP/MSRP/CHAT; : ingressMediaStream3LocalIpSockAddr "10.7.16.108/ 2000"; ingressMediaStream3RemoteIpSockAddr "10.7.6.40/ 42580"; egressMediaStream3LocalIpSockAddr "10.7.16.109/ 2000"; egressMediaStream3RemoteIpSockAddr "10.7.6.40/ 42579";
See Show Status Global (CLI) or Global - Call Media Status (EMA) for details.
Call Detail Record Example:
230.14 mediaType2 : TCP/MSRP/FILEXFER 230.15 streamIndex2 : 2 230.16 ingress codec used2 : n/a 230.17 ingress local IP2 : 10.54.20.29:2000 230.18 ingress remote IP2 : 10.70.56.124:59112 230.22 egress local IP2 : 10.54.21.29:2000 230.23 egress remote IP2 : 10.54.21.29:2001 231.16 mediaType2 : TCP/MSRP/FILEXFER 231.17 streamIndex2 : 2 231.18 ingress packetSent2 : 0 231.19 ingress packetReceived2 : 0 231.20 ingress octetSent2 : 804 231.21 ingress octetReceived2 : 5634 231.22 ingress packetLost2 : 0 231.23 ingress packetDiscarded2 : 0 231.24 egress packetSent2 : 0 231.25 egress packetReceived2 : 0 231.26 egress octetSent2 : 5634 231.27 egress octetReceived2 : 804 231.28 egress packetLost2 : 0 231.29 egress packetDiscarded2 : 0"