The valid T.38 parameters for SDP are listed in the ITU T.38 specification in Annex D. Endpoints capable of processing T.38 data can exchange SDP messages to establish the parameters of a T.38 media session. There are a number of parameters to exchange besides the usual ports and addresses. Most of them are used to explain what features the offeror supports. During the negotiation phase, the offeror will enumerate their supported features, generate SDP to describe them, and send that SDP to the other endpoint. The other end is then expected to configure their T.38 media stream so that it will meet the requirements, or reject the session if the requirements can’t be met.
T.38 parameters are encoded in SDP within media sections using the ‘image’ media type as described in RFC-6466. They use the SDP attribute syntax which is described in RFC-8866. The following is an example of a T.38 media section in SDP:
m=image 1234 udptl t38 a=T38FaxVersion:0 a=T38MaxBitrate:9600 a=T38FaxRateManagement:transferredTCF a=T38FaxMaxBuffer:512 a=T38FaxMaxDatagram:158 a=T38FaxMaxIFP:72 a=T38FaxUdpEc:t38UDPRedundancy |
The following table has more information about some of the T.38 parameters that can be included in SDP:
NAME | VALUES | DESCRIPTION |
T38FaxVersion | 0 3 | Specifies the version of the T.38 protocol to use. Different versions are not interoperable, so this must be negotiated. Generally, version 0 is used unless V.34 support is required, which needs version 3. |
T38MaxBitrate | Any valid bitrate in bits per second | Tells the maximum bitrate that the offeror supports. |
T38FaxRateManagement | localTCF transferredTCF | Sets the training data transfer mode. The T.38 spec defines two modes, local and transferred. Local is usually only used for TCP implementations. This is the only mandatory parameter. |
T38FaxMaxBuffer | Any value in bytes | Tells the size of the offeror’s receive buffer. This information is relayed so the other side can avoid causing an overflow. |
T38FaxMaxDatagram | Any value in bytes | Tells the maximum T.38 packet size that can be accepted by the offeror. The transmitter should not generate any T.38 packets larger than this. |
T38FaxMaxIFP | Any value in bytes | Tells the maximum frame size that can be accepted by the offeror. Each T.38 packet may contain multiple frames if redundancy error correction is used. |
T38FaxUdpEC | t38UDPFEC t38UDPRedundancy t38UDPNoEC | Sets the error correction scheme for a T.38 session. The offeror will set the value they want to use, and the answerer can agree or disagree. |