T38 Fax Relay
T.38 is a fax relay standard defined by the ITU-T. Because it is a standard, T.38 is now the predominant choice for fax relay scenarios, especially in networks where multivendor interoperability is necessary.
Cisco voice gateways fully support the original 1998 version of the T.38 specification. Although later versions of T.38 introduce such features as Real-Time Protocol (RTP) encapsulation and support for SG3/V.34 faxing, these are not discussed in this chapter. Only the aspects of T.38 related to the Cisco-supported 1998 version are covered.
T.38 defines three transport methods: UDP, TCP, and RTP. Currently, Cisco voice gateways only use UDP encapsulation as diagrammed in Figure 5-4. The TCP encapsulation method is optional, and RTP encapsulation is introduced in a later version of the T.38 specification.
Figure 5-4 UDP Encapsulated T.38
Figure 5-4 UDP Encapsulated T.38

- 2 Bytes
For T.38 to provide additional error control when using UDP, a UDP transport layer (UDPTL) header is included. This header is simply a 2-byte sequence number to assist in internet fax packet (IFP) reordering at the receiving gateway. Also, the T.38 UDPTL encapsulation does not use an assigned UDP port number. In the case of Cisco voice gateways, the existing RTP port numbers set up during the initial voice call are reused by T.38 fax relay.
Inside the UDPTL payload, IFPs transport the T.30 and T.4 fax information. Optional redundancy or forward error checking (FEC) packets may also reside in the UDPTL payload.
There are two types of IFPs: T30_INDICATOR packets and T30_DATA packets. Indicator packets signal T.30 messages such as calling tone (CNG), called terminal identification (CED), and the various trainings for different modulations, while T30_DATA handles the HDLC message framing and the transmission of fax page data.
Both of these IFP types include a sequence number. Upon transmission of a T30_INDICATOR or T30_DATA IFP, this sequence number becomes the UDPTL header. When this occurs, the IFP packet immediately following the UDPTL header in the UDPTL payload is referred to as the primary. Additional IFPs can be included after the primary, and these are referred to as secondaries. Secondary IFP packets are mostly seen when an error correction method such as redundancy is used. Redundancy for T.38 fax relay along with primary and secondary IFPs are discussed later in this section. The IFP format for a T30_INDICATOR packet is illustrated in Figure 5-5.
Figure 5-5 T.38 T30JNDICATORIFP Frame Format
|
16 bit Sequence Number |
||||
|
IFP Size (bytes) |
Data Field |
Type |
T30_INDICATOR |
Fill |
The T30_INDICATOR packet is only 2 bytes, not including the sequence number. The most important field is the T30_INDICATOR field itself, and the value here specifies the exact T.30 message that is being signaled. Table 5-1 defines the T30_INDICATOR field and the other fields that make up this IFP.
Table 5-1 T.38 T30_INDICATOR IFP Frame Field Definitions
|
Field Name |
Value |
Definition |
|
Sequence Number |
0x00-0x1111 |
16-bit sequence number to uniquely identify the IFP |
|
IFP Size (in bytes) |
1 |
1-byte for T30_INDICATOR packets (does not include sequence number or IFP Size fields) |
|
Data Field |
0 |
Only set when optional data field is present |
|
Type |
0 |
T30_INDICAT0R message |
|
T30_INDICATOR |
0x00 |
No Signal |
|
0x01 |
CNG |
|
|
0x02 |
CED |
|
|
0x03 |
V.21 Preamble (HDLC flags) |
|
|
0x04 |
V.27 2400 bps training |
|
|
0x05 |
V.27 4800 bps training |
|
|
0x06 |
V.29 7200 bps training |
|
|
0x07 |
V.29 9600 bps training |
|
|
0x08 |
V.17 7200 bps short training |
|
|
0x09 |
V.17 7200 bps long training |
continues continues
|
Field Name |
Value |
Definition |
|
T30_INDICATOR (Continued) |
0x0a |
V.17 9600 bps short training |
|
0x0b |
V.17 9600 bps long training |
|
|
0x0c |
V.17 12000 bps short training |
|
|
0x0d |
V.17 12000 bps long training |
|
|
0x0e |
V.17 14400 bps short training |
|
|
0x0f |
V.17 14400 bps long training |
|
|
Fill |
0 |
Last bit set to 0 |
The T30_INDICATOR IFP provides an efficient method for transporting fax signals across VoIP. Instead of CNG and CED tones and training signals being captured and played out on the far side, T.38 uses a simple T30_INDICATOR IFP message. This saves bandwidth and processing time on the voice gateways.
NOTE As Figure 5-3 illustrates, Cisco voice gateways do not switch over to T.38 fax relay until the V.21 preamble or fax flags are detected. Because the CNG and CED signals are transmitted before the V.21 preamble and the subsequent switchover to T.38 fax relay, the CNG and CED signals are passed using the original voice codec in the RTP media stream. Therefore, the CNG and CED T30_INDICATOR messages are not typically seen with Cisco gateways. However, other vendors do use these messages frequently, and they can be seen when Cisco voice gateways interoperate with third-party T.38 devices.
An interesting T30_INDICATOR message to note is No Signal. This message specifies that there is currently not a TDM fax signal present on the voice gateway. When fax signals are not being received on the telephony interface, Cisco gateways tend to send this message quite regularly, whereas other brands of voice gateways might send this message more sparingly.
The other IFP packet type found in T.38 is T30_DATA. These packets handle the T.30 HDLC control information and the Phase C image data. The frame format for a T30_DATA IFP is diagrammed in Figure 5-6.
Figure 5-6 T.38 T30_DATA IFP Frame Format
First Field Type
Second Field Type
First Field Type
Second Field Type
|
16 bit Sequence Number |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
IFP Size (bytes) |
Data/ Field |
Type T30_DATA TYPE |
Fill |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Field Count |
Data/ No Data |
Field-Type |
Fill |
Fill |
Fill |
Fill |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Length of Data Field (in bytes, N) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Byte 0 |
Data Byte 1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Byte 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Byte N |
Data/ No Data |
Field-Type |
Fill |
Fill |
Fill |
Fill |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Length of Data Field (in bytes, M) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Byte 0 |
Data Byte 1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Byte 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data Byte M |
The T30_DATA packet contains some fields that are the same as those found in the T30_ INDICATOR message. However, there are also a number of new fields that may contain a range of values. Table 5-2 details each of the IFP frame fields and their values for a T.38 T30_DATA packet. Table 5-2 T.38 T30_DATA IFP Frame Field Definitions
continues continues
The shaded fields in Figure 5-6 illustrate how multiple Field-Types can be transported in the same T30_DATA IFP. The lighter shading indicates the first Field-Type and its information, and the darker shading highlights an additional Field-Type within the same IFP. One common example of multiple Field-Types in a single IFP may occur at the end of a T.30 message. The last portion of data for the T.30 message and the HDLC frame's FCS status can occupy the same IFP and a Field-Type of HDLC Data and HDLC-FCS-OK will be present. On the other hand, when there are large HDLC frames present, such as during the transfer of fax image data, it might be necessary to separate an HDLC frame into multiple packets. Although sending large T.38 packets is possible, the T.38 standard recommends that smaller packets be sent. Figure 5-7 illustrates this concept by showing how a T.30 digital identification signal (DIS) message is broken into IFP packets by a Cisco voice gateway. Note that the data transport headers are not shown, and only the basic IFP fields of T30_DATA TYPE and Field-Type are shown for simplicity. Figure 5-7 Segmenting of a T.30 Message into T.38 IFPs
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


Post a comment