Document from Cisco on FoIP CUBE Third Party Interoperability

Hi there,
Here is the link to the CUBE Third-Party Interoperability Fax Guidelines – http://www.cisco.com/c/en/us/support/docs/voice/t38/116280-configure-cube-00.html

I decided to copy the Source code of the page just not mess around with the contents and images which help on understanding the Fax protocols with Cisco CUBE.

Also this makes it a nice link to keep in your toolbox.

Contents

Introduction
Prerequisites
Requirements
Components Used
Background Information
CUBE Fax Call Flows
FoIP Transport Methods
Fax Pass-Through
T.38 Fax Relay
CUBE Configuration
CUBE Pass-Through Configuration
CUBE T.38 Configuration
Time-Division Multiplexing (TDM) Gateway Configuration for Interworking with CUBE
Verify
Troubleshoot
SIP
T.38 Switchover
Fax Pass-Through Switchover
H323
T.38 Switchover
Fax Pass-Through Switchover
Symptom 1: CUBE Rejects ReINVITE with 488
Symptom 2: CUBE Rejects RequestMode with RequestModeReject
Vendor Specific Information
Verizon
Related Information

Introduction

This document describes how Fax over IP (FoIP) operates in Cisco Unified Border Element (CUBE) call flows with IP Service Providers.

Prerequisites

Requirements

Cisco recommends that you have knowledge of these topics:

  • CUBE Enterprise
  • Media Gateway Control Protocol (MGCP)
  • Session Initiation Protocol (SIP)
  • H323 Protocol Suite
  • T30 Signaling

Components Used

The information in this document is based on these software and hardware versions: Cisco IOS® Releases 12.4T, 15.0M, 15.0T, 15.1M, 15.1T, 15.2M, 15.2T, 15.3T on Cisco Integrated Services Routers (ISR) Series 2800, 3800, 2900, 3900, 3900e or the Cisco AS5400XM Universal Gateway

Note: This configuration example is not limited to the software versions and hardware platforms listed here.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Background Information

FoIP with CUBE operates in a multitude of environments and is implemented in order to leverage current VoIP networks for reliable fax services. There are multiple fax protocols that CUBE supports along with a multitude of switchover mechanisms. However, in the context of IP service providers, you must adhere to fax protocols and switchover methods that are supported by vendors outside of Cisco.

In FoIP call flows, CUBE is between the Terminating Gateway (TGW) and the Originating Gateway (OGW). From a signaling perspective, the CUBE configuration either permits, or denies, the switchover from a voice call to a fax call. Due to the fact that FoIP protocols are negotiated end-to-end in a VoIP environment, it is essential that everything from the OGW to the TGW are configured in order to use the same FoIP protocol.

It is important to know what FoIP flows are supported and what configuration is necessary on CUBE, as well as the TGWs and OGWs, in order to ensure reliable fax communication.

CUBE Fax Call Flows

Due to the fact that IP Service Providers typically have a mixed environment of Cisco and non-Cisco equipment, it is essential that you use an industry-standard method in order to switch from a voice call to a fax call. This means that the Named Signaling Event (NSE) cannot be used, since NSEs are Cisco-proprietary. There are exceptions to this rule, but they are extremely infrequent.

Note: The inability to use a protocol-based switchover means that Skinny Call Control Protocol (SCCP) is only used in fax call flows to IP Service Providers with G711ulaw and is a “best effort.”

FoIP Transport Methods

This document discusses two FoIP transport methods, Fax Pass-Through and T.38 Fax Relay.

Fax Pass-Through

Fax Pass-Through is a fax transport method where the T30 signals and page data are transported through the IP network as Pulse-Code Modulation (PCM)-encoded data, wrapped in Real-time Transport Protocol (RTP) frames.

The Fax Pass-Through switchover is triggered by the detection of the V.21 Preamble on the TGW. The resultant INVITE (for SIP) or Request Mode (for H323) is sent through the CUBE and the rest of the call signaling path to the OGW.

The Fax Pass-Through switchover switches over from any voice codec to the codec defined under the Fax Pass-Through configuration (this process is outlined later in this document).

Note: An MGCP gateway cannot be configured in order to initiate upspeed to G.711 for Fax Pass-Through. Therefore, any fax that uses pass-through on the CUBE that terminates to an MGCP gateway must be routed with G.711 codec.

Note: Fax Pass-Through should not be configured with H.323 if the initial codec is G.711. This causes a H.245 request mode to be sent to switch to G.711 when G.711 is already negotiated. CUCM responds with a H.245 request mode rejection.

T.38 Fax Relay

Fax Relay is a fax transport method where the TGWs and OGWs detect the T30 signals and page data. The gateways take those signals and convert them into relay messages, which are digital representations of the analog signals. Those relay messages are then sent through the IP network.

The T.38 Fax Relay switchover is also triggered by the detection of the V.21 preamble on the TGW.

  • When the TGW operates with SIP, detection of the V.21 preamble triggers a T.38 ReINVITE (similar to what was previously described).
  • When the TGW operates with H323, detection of the V.21 preamble triggers a T.38 Request Mode.
  • When the TGW operates with MGCP, detection of the V.21 preamble triggers a notify (NTFY), which is sent to the Call Agent. The Call Agent then responds with a 200 OK, and sends either a Request Mode or a ReINVITE to CUBE, which depends on the VoIP protocol used.

Debug examples are in the Troubleshoot section of this document.

CUBE Configuration

CUBE can be configured for FoIP in two places: globally under voice service voip as well as under the dial-peer. Configuration at the dial-peer matched for a given call always takes precedence over the global configuration. Configuration for T.38 and Fax Pass-Through can be configured at the same time if under different dial-peers, so that both protocols are simultaneously supported.

CUBE Pass-Through Configuration

In order to configure Fax Pass-Through under voice service voip, use this command (in bold):

voice service voip
 no ip address trusted authenticate
 allow-connections h323 to h323
 allow-connections h323 to sip
 allow-connections sip to h323
 allow-connections sip to sip
 fax protocol pass-through g711ulaw

In order to configure Fax Pass-Through at the dial-peer, use this command (in bold):

dial-peer voice 1 voip
 description T38 Test
 destination-pattern ^1000$
 session protocol sipv2
 session target ipv4:192.168.0.1
 dtmf-relay rtp-nte
 fax protocol pass-through g711ulaw
 no vad

Note: Fax Pass-through is not the same as Fax Passthrough. Fax Passthrough leverages Cisco Network Services Engines (NSEs) in order to switch over from a voice call to a fax call.

CUBE T.38 Configuration

Note: T.38 Version 3 (Super G3 fax speeds) is supported in Cisco IOS Versions 15.1(1)T and later.

In order to configure T.38 Version 0 (G3 fax speed) under voice service voip, use this command (in bold):

voice service voip
 no ip address trusted authenticate
 allow-connections h323 to h323
 allow-connections h323 to sip
 allow-connections sip to h323
 allow-connections sip to sip
 fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback none

In order to configure T.38 at the dial-peer, use this command (in bold):

dial-peer voice 1 voip
 description T38 Test
 destination-pattern ^1000$
 session protocol sipv2
 session target ipv4:192.168.0.1
 dtmf-relay rtp-nte
 fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback none
 no vad

In order to configure T.38 Version 3, either under voice service VoIP or at the dial-peer, use this command:

fax protocol t38 version 3 ls-redundancy 0 hs-redundancy 0 fallback none

If a Media Transfer Protocol (MTP) is used when interworking through a CUBE, it must support codec passthrough. Cisco Unified Communications Manager (CUCM) MTP supports codec passthrough for Version 8.6.1 and later. Cisco IOS MTP must have codec pass-through in the Digital Signal Processor (DSP) Farm configuration:

dspfarm profile 2 mtp  
 codec pass-through
 codec g729r8
 maximum sessions software 50
 associate application SCCP

Time-Division Multiplexing (TDM) Gateway Configuration for Interworking with CUBE

For an SCCP controlled TDM gateway, this configuration is used for Fax Pass-Through.

voice service voip
no modem passthrough
 fax protocol none
 no fax-relay sg3-to-g3

Note: The codec in the regions setting for this interworking must be G.711. As noted previously, an SCCP gateway cannot be set to use T.38 when interworking with CUBE.

In order to configure Fax Pass-Through for SIP and H.323 TDM gateways interworking with CUBE, enter:

voice service voip
 no modem passthrough
 no fax-relay sg3-to-g3 
 fax protocol pass-through g711ulaw

In order to configure T.38 for SIP and H.323 TDM gateways interworking with CUBE, enter:

voice service voip
 no modem passthrough
 fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback none

Note: T.38 Version 3 can be used if it is configured on the CUBE and is supported by the SIP service provider.

In order to configure an MGCP TDM gateway for Fax Pass-Through inteworking with CUBE, enter:

no mgcp fax-relay sg3-to-g3
no mgcp package fxr-package
mgcp fax t38 inhibit
no mgcp modem passthrough voip mode nse

Note: Since a MGCP gateway does not support upspeeding for Fax Pass-Through, the regions in CUCM between the MGCP gateway and the CUBE must have a codec of G.711.

Verify

There is currently no verification procedure available for this configuration.

Troubleshoot

In order to troubleshoot this issue on CUBE, these debugs must be enabled.

SIP

Enable these debugs for SIP:

debug voip ccapi inout
debug ccsip mess

After the voice call is set up, the TGW sends a SIP ReINVITE to the OGW through CUBE. If the switchover is successful, the OGW responds with a SIP 200 OK with the correct Session Description Protocol (SDP) parameters.

T.38 Switchover

INVITE sip:2101@10.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK171D71
Remote-Party-ID: <sip:1101@10.0.0.2>;party=calling;screen=no;privacy=off
From: <sip:8141101@10.0.0.2>;tag=8D815D8-646
To: <sip:2101@10.0.0.1>;tag=DD4D344-21B2
Date: Fri, 25 Feb 2011 19:25:15 GMT
Call-ID: 32395B08-403E11E0-818C9D5B-499FBE40@10.0.0.1
Supported: 100rel,timer,resource-priority,replaces,sdp-anat
Min-SE:  1800
Cisco-Guid: 786980147-1077809632-2173148507-1235205696
User-Agent: Cisco-SIPGateway/IOS-12.x
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, 
NOTIFY, INFO, REGISTER
CSeq: 101 INVITE
Max-Forwards: 70
Timestamp: 1298661915
Contact: <sip:8141101@10.0.0.2:5060>
Expires: 180
Allow-Events: telephone-event
Content-Type: application/sdp
Content-Length: 384

v=0
o=CiscoSystemsSIP-GW-UserAgent 3745 9509 IN IP4 10.0.0.2
s=SIP Call
c=IN IP4 10.0.0.2
t=0 0
m=image 17682 udptl t38
c=IN IP4 10.0.0.2
a=T38FaxVersion:0
a=T38MaxBitRate:7200
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxBuffer:200
a=T38FaxMaxDatagram:180
a=T38FaxUdpEC:t38UDPRedundancy

!!NOTE!! Not all of the above bolded fields are required.
The above is an example of how Cisco implements T38.

SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK171D71
From: <sip:8141101@10.0.0.2>;tag=8D815D8-646
To: <sip:2101@10.0.0.1>;tag=DD4D344-21B2
Date: Fri, 25 Feb 2011 17:48:05 GMT
Call-ID: 32395B08-403E11E0-818C9D5B-499FBE40@10.0.0.1
CSeq: 101 INVITE
Allow-Events: telephone-event
Server: Cisco-SIPGateway/IOS-12.x
Content-Length: 0

176443: Feb 25 17:48:05.360:
//134/2EE85D338187/SIP/Msg/ccsipDisplayMsg:
Sent:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK171D71
From: <sip:8141101@10.0.0.2>;tag=8D815D8-646
To: <sip:2101@10.0.0.1>;tag=DD4D344-21B2
Date: Fri, 25 Feb 2011 17:48:05 GMT
Call-ID: 32395B08-403E11E0-818C9D5B-499FBE40@10.0.0.1
CSeq: 101 INVITE
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE,
NOTIFY, INFO, REGISTER
Allow-Events: telephone-event
Remote-Party-ID: <sip:2101@10.0.0.1>
;party=called;screen=no;privacy=off
Contact: <sip:2101@10.0.0.1:5060>
Supported: replaces
Supported: sdp-anat
Server: Cisco-SIPGateway/IOS-12.x
Supported: timer
Content-Type: application/sdp
Content-Length: 384

v=0
o=CiscoSystemsSIP-GW-UserAgent 5552 9399 IN IP4 10.0.0.1
s=SIP Call
c=IN IP4 10.0.0.1
t=0 0
m=image 16710 udptl t38
c=IN IP4 10.0.0.1
a=T38FaxVersion:0
a=T38MaxBitRate:7200
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxBuffer:200
a=T38FaxMaxDatagram:320
a=T38FaxUdpEC:t38UDPRedundancy

ACK sip:2101@10.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK181B79
From: <sip:8141101@10.0.0.2>;tag=8D815D8-646
To: <sip:2101@10.0.0.1>;tag=DD4D344-21B2
Date: Fri, 25 Feb 2011 19:25:15 GMT
Call-ID: 32395B08-403E11E0-818C9D5B-499FBE40@10.0.0.1
Max-Forwards: 70
CSeq: 101 ACK
Allow-Events: telephone-event
Content-Length: 0

Fax Pass-Through Switchover

INVITE sip:2101@10.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK154F2
Remote-Party-ID: <sip:1101@10.0.0.2>;party=calling;screen=no;privacy=off
From: <sip:8131101@10.0.0.2>;tag=8D66B94-7BF
To: <sip:2101@10.0.0.1>;tag=DD32900-5D4
Date: Fri, 25 Feb 2011 19:23:25 GMT
Call-ID: F12F0BBB-403D11E0-81869D5B-499FBE40@10.0.0.1
Supported: 100rel,timer,resource-priority,replaces,sdp-anat
Min-SE:  1800
Cisco-Guid: 3990792353-1077744096-2172755291-1235205696
User-Agent: Cisco-SIPGateway/IOS-12.x
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, 
NOTIFY, INFO, REGISTER
CSeq: 101 INVITE
Max-Forwards: 70
Timestamp: 1298661805
Contact: <sip:8131101@10.0.0.2:5060>
Expires: 180
Allow-Events: telephone-event
Content-Type: application/sdp
Content-Length: 174

v=0
o=CiscoSystemsSIP-GW-UserAgent 107 1892 IN IP4 10.0.0.2
s=SIP Call
c=IN IP4 10.0.0.2
t=0 0
m=audio 16464 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=silenceSupp:off – – – –

SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK154F2
From: <sip:8131101@10.0.0.2>;tag=8D66B94-7BF
To: <sip:2101@10.0.0.1>;tag=DD32900-5D4
Date: Fri, 25 Feb 2011 17:46:16 GMT
Call-ID: F12F0BBB-403D11E0-81869D5B-499FBE40@10.0.0.1
CSeq: 101 INVITE
Allow-Events: telephone-event
Server: Cisco-SIPGateway/IOS-12.x
Content-Length: 0

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK154F2
From: <sip:8131101@10.0.0.2>;tag=8D66B94-7BF
To: <sip:2101@10.0.0.1>;tag=DD32900-5D4
Date: Fri, 25 Feb 2011 17:46:16 GMT
Call-ID: F12F0BBB-403D11E0-81869D5B-499FBE40@10.0.0.1
CSeq: 101 INVITE
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE,
NOTIFY, INFO, REGISTER
Allow-Events: telephone-event
Remote-Party-ID: <sip:2101@10.0.0.1>;party=called;screen=no;privacy=off
Contact: <sip:2101@10.0.0.1:5060>
Supported: replaces
Supported: sdp-anat
Server: Cisco-SIPGateway/IOS-12.x
Supported: timer
Content-Type: application/sdp
Content-Length: 194

v=0
o=CiscoSystemsSIP-GW-UserAgent 4896 2709 IN IP4 10.0.0.1
s=SIP Call
c=IN IP4 10.0.0.1
t=0 0
m=audio 19054 RTP/AVP 0
c=IN IP4 10.0.0.1
a=rtpmap:0 PCMU/8000
a=silenceSupp:off – – – –

ACK sip:2101@10.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.2:5060;branch=z9hG4bK16A56
From: <sip:8131101@10.0.0.2>;tag=8D66B94-7BF
To: <sip:2101@10.0.0.1>;tag=DD32900-5D4
Date: Fri, 25 Feb 2011 19:23:25 GMT
Call-ID: F12F0BBB-403D11E0-81869D5B-499FBE40@10.0.0.1
Max-Forwards: 70
CSeq: 101 ACK
Allow-Events: telephone-event
Content-Length: 0

H323

Enable these debugs for H323:

debug voip ccapi inout
debug cch323 all
debug h225 asn1
debug h245 asn1

After the voice call is set up, the TGW sends a H245 RequestMode to the OGW through CUBE. If the switchover is successful, the OGW responds with a RequestModeAck.

T.38 Switchover

value MultimediaSystemControlMessage ::= request : requestMode :
    {
      sequenceNumber 1
      requestedModes
      {

{

{
type dataMode :
{
application t38fax :
{
t38FaxProtocol udp : NULL
t38FaxProfile
{
fillBitRemoval FALSE
transcodingJBIG FALSE
transcodingMMR FALSE
version 0
t38FaxRateManagement transferredTCF : NULL
t38FaxUdpOptions
{
t38FaxMaxBuffer 200
t38FaxMaxDatagram 72
t38FaxUdpEC t38UDPRedundancy : NULL
}
}
}
bitRate 144
}
}
}
}
}

001378: May 31 20:56:19.745: H245 MSC OUTGOING PDU ::=

value MultimediaSystemControlMessage ::= response :
requestModeAck :
{
sequenceNumber 1
response willTransmitMostPreferredMode : NULL
}

Fax Pass-Through Switchover

value MultimediaSystemControlMessage ::= request : requestMode :
     {
      sequenceNumber 1
      requestedModes 
      {

{

{
type audioMode : g711Ulaw64k : NULL
}
}
}
}

value MultimediaSystemControlMessage ::= response :
requestModeAck :
{
sequenceNumber 1
response willTransmitMostPreferredMode : NULL
}

Symptom 1: CUBE Rejects ReINVITE with 488

If you encounter this problem, complete these steps:

  1. Enable debugs and collect for a test call.
  2. Verify that T.38 or Fax Pass-Through is configured globally.
  3. If T.38 or Fax Pass-Through is not configured globally, ensure that T.38 or Fax Pass-Through is configured under both the incoming and outgoing dial-peers based on the Call Control Application Programming Interface (CCAPI) debugs.
  4. If the problem is still not resolved, enable debug ccsip all (in a logging buffer with logging buffered 5000000 debug) in order to determine why SIP rejects this ReINVITE.

Symptom 2: CUBE Rejects RequestMode with RequestModeReject

If you encounter this problem, complete these steps:

  1. Enable debugs and collect for a test call.
  2. Verify that T.38 or Fax Pass-Through is configured globally.
  3. If T.38 or Fax Pass-Through is not configured globally, ensure that T.38 or Fax Pass-Through is configured under both the incoming and outgoing dial-peers based on the CCAPI debugs.
  4. If the problem is still not resolved, enable debug h225 events, debug h225 q931, and debug h245 events in order to determine why H323 rejects this RequestMode.

Vendor Specific Information

Verizon

  • The Cisco Technical Assistance Center (TAC) has noticed that, although Verizon claims support for T.38 over SIP, they never initiate a switchover from a voice call to T.38 when they operate at the TGW.
  • This is a known limitation in their environment, and it does not appear that they are going to fix it.
  • When the OGW is a FoIP server, you can usually set the server to initiate a switchover even when it is the OGW.
  • When a Cisco GW is the OGW, there is currently no way to force the switchover when the Cisco GW acts as the OGW.
  • Cisco bug ID CSCud72998 is the enhancement request to support the T.38 switchover when the Cisco GW is the OGW.


About the Author:

Andres Sarmiento, CCIE # 53520 (Collaboration)
With more than 13 years of experience, Andres is specialized in the Unified Communications and Collaboration technologies. Consulted for several companies in South Florida, also Financial Institutions on behalf of Cisco Systems. Andres has been involved in high-profile implementations including Cisco technologies; such as Data Center, UC & Collaboration, Contact Center Express, Routing & Switching, Security and Hosted IPT Service provider infrastructures.

You can follow Andres using Twitter, LinkedIn or Facebook

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top