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
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
does not provide MSRP B2BUA functionality, and relays MSRP payload while providing peripheral
functionality.
MSRP session setup is similar to audio and video sessions. For details, see refer to MSRP Session Setup and MSRP Call Flow Example pages.
Note |
---|
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 Configuration
Enabling MSRP on the SBC
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:
Code Block |
---|
|
% set addressContext <addressContextName> zone <zoneName> sipTrunkGroup <trunkGroupName> media msrp <enabled | disabled> |
See Refer to SIP Trunk Group - Media - CLI or SIP Trunk Group - Media (EMA) for configuration details.
Source Address Filtering
The
supports source address filtering for MSRP packets. If enabled, the
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.
Code Block |
---|
|
% 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.
TCP Listener Port Range
This port range is used by the
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
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.
Code Block |
---|
|
% 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
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".
Code Block |
---|
|
% 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.
Reserving Interface Bandwidth
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" %.
Code Block |
---|
|
% 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.
MSRP Call Admission Control
The number of active MSRP sessions allowed on the
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.
Code Block |
---|
|
% set addressContext <addressContextName> zone <zoneName> sipTrunkGroup <trunkGroupName> cac tcpMediaLimit <0...5000> |
See SIP Trunk Group - CAC - CLI or Sip SIP Trunk Group - CacCAC (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
. However, SIP session are still established through the
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:
Code Block |
---|
|
% 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:
Code Block |
---|
|
% 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:
NAT
MSRP UAs residing behind NAT can be configured at the SIP trunk group as follows. For example:
Code Block |
---|
|
% 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:
Code Block |
---|
|
% 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.
MSRP Stats and CDR
The
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:
Code Block |
---|
|
> 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:
Code Block |
---|
|
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" |