FoIP – Fax Over IP – Análisis de call Flow de T.38

T.38 es un estándar de 1998 para permitir que los faxes se envíen a través de redes IP entre diferentes terminales G3 (terminales fax), y poder enviar faxes a través de VoIP.

Si intentásemos enviar un fax a través de VoIP, al utilizarse en algunos casos códecs con compresión de voz, no siempre el resultado sería satisfactorio. Esto en gran parte es debido a que si se envía una tasa superior de ciertos baudios (símbolos/muestras por segundo), y luego se comprime la voz (a través de los códecs), se puede perder información propia del fax, quedando este ilegible o imposible de transmitir. El teorema de Nyquist (velocidad de muestreo) aplica aquí, dado que en una señal ya muestreada uno no puede tomar menos muestras por segundos que se ha utilizado para digitalizar la señal.

Generalmente, si se desea enviar un fax convencionalmente a través de VoIP (sin utilizar protocolos auxiliares) se debe de utilizar G711 (a-law o u-law dependiendo si estamos en USA o Europa) y una velocidad máxima de 9600 baudios (por motivos relativos a Nyquist ya explicados). Este método, que consiste en enviar el FAX sin procesado extra, como si de voz se tratase, se conoce como pass-through, dado que lo único que se hace es conectar los dos terminales directamente, y hacer que pase el audio de uno a otro. En este caso el audio lleva un fax dentro (si lo capturamos con Wireshark u otro sniffer podremos ver los tonos que se envían entre ellos sin problema).

El envío de faxes con Pass-Through es muy sensible a problemas en la línea, y si se pierden paquetes durante la transmisión es probable acabar con problemas en los envíos.

Para evitar esto, se crea el protocolo T.38, RFC 3362 (https://tools.ietf.org/html/rfc3362), el cual permite encapsular  T.30 (protocolo PSTN para enviar faxes) a través de IP. El escenario general es el siguiente: se envía faxes a través de de T.30, unos conversores de analógico/digital a IP lo traducen en T.38, encapsulando T.30, y se procede a realizar el envio extremo a extremo, tal y como en la imagen se puede apreciar.

Mucha de la señalización que veremos dentro de este articulo es T.30, dado que T.38 simplemente es el soporte para encapsular señalización T.30 dentro de este protocolo.

1

Este es el caso en que necesitaremos entender qué sucede, dado que es el único que podremos analizar en VoIP (el pass-through sólo podemos averiguar si la calidad de audio es correcta o no).

Cuando se envía un fax existen diferentes fases, las cuales vamos a proceder a detallar.

  • Fase A: Establecimiento de canal.
  • Fase B: Pre-mensajes e intercambio de capacidades. Negociación.
  • Fase C: Transferencia de imagen.
    • Fase C1: Pre-imagen test.
    • Fase C2 : Transferencia imagen.
  • Fase D: Procesos post-mensajes.
  • Fase E: Finalización de la llamada.

Es muy importante recordar las  velocidades de fax que existen, según los estándares. Estas se pueden ver en la siguiente tabla:

2

Dicho esto, vamos a intentar ver que mensajes existen en cada fase y cómo se realiza un flujo de llamada de FAX.

 

Fase A: Establecimiento de canal

Se establece la llamada y se detecta que se quiere transmitir un fax, dado que se envía durante unos tres segundos los famosos tonos de FAX. Aquí estamos dentro del dominio SIP, y lo que es el protocolo T.38 aún no ha empezado a actuar en la transacción.

3

 

El hecho de que un extremo detecte sonido de FAX produce que se realice un RE-INVITE. Estos tonos se conocen como ANS (ANSwering tone) y se dan en la primera fase del fax.

Tal y como se puede ver en la siguiente imagen, cuando se detecta el tono ANS (enviados a través de RTP en la conversación), dentro del dialogo SIP se renegocian las capacidades del medio que se va a retransmitir. Recordemos que SIP significa Session Initation Protocol, y simplemente sirve para que dos end-points se descubran y negocien (a través de SDP) cómo se van a enviar un flujo de datos. Cómo sea ese flujo de datos, es indiferente para SIP.

4

Es entonces cuando comienzan a aparecer los tonos dentro de T.38. Los primeros que se intercambian son conocidos como CNG y CED.

CNG(CalliNG tone): Es el tono que genera la máquina que envía el fax. Es un tono a 1100Hz. En este caso es el RTP (g711A) que se puede ver en primer lugar.

CED (CallED terminal identification tone): Es el tono que genera la máquina que recibe el fax. Es un tono a 2100Hz. Es el RTP (g711A) que se genera después del primer flujo RTP en sentido inverso.

5

En el caso que vemos como se procede a enviar dentro de SDP del mensaje INVITE y su 200OK el protocolo T.38, indicándose algunas de sus capacidades dentro de este.

6

Es importante que no olvidemos que aún nos encontramos en la Fase A: Establecimiento de canal para el envío de fax. Aún no se ha procedido a realizar ningún tipo de negociación a nivel de fax, a pesar de haber intercambiado las capacidades por SIP.

 

Fase B: Pre-mensajes e intercambio de capacidades. Negociación

Una vez que ya se ha detectado que la comunicación era entre dos faxes, y se da como finalizada la Fase A, se procede a realizar la negociación T.38 para intercambiar datos propios de la comunicación de fax, tal y como el llamante, el numero llamado y las velocidades de intercambio.

7

Estos son los mensajes que se intercambian durante esta fase entre los dos dispositivos:

CSI (Called Subscriber): Este mensaje sirve para que las máquinas intercambien sus identidades. Los terminales internacionales realizan su intercambio de identidades a través de este mensaje. En el caso inferior, el número llamado no se identifica (aparece “Number: unkown” en el campo).

8

DIS (Digital Identification Signal): Es un mensaje obligatorio/mandatorio, en cual los faxes que reciben describen sus capacidades para realizar las transferencias de archivos. Es una propuesta de negociación. En este caso, el fax que recibe dispone de v.27 y v.29 para recibir este fax.

9

DCS (Digital Command Signal): A través de este mensaje, los dos extremos de fax informan sobre la velocidad que van a utilizar para la transmisión, dado que el que envía el fax hace un set de las capacidades que va a proceder a utilizar para ello. En el caso de la imagen inferior se puede ver cómo se desea transferir a través de v.29 (9600 baudios).

10

TSI (Transmitting Subscriber Identification): Con este mensaje se informa al terminal que recibirá la llamada quien está generando el fax. En el cuadrado negro de la imagen inferior se puede ver el número llamante.

11

Una vez intercambiados estos mensajes se procederá a realizar la transferencia de la imagen del FAX, tal y como vamos a exponer a continuación.

 

Fase C: Transferencia de la imagen

En la fase C se procede, finalmente, a realizar la transferencia del FAX. Esta fase se divide en dos partes, una de training o pre-testeo del canal, que ayudará a evaluar cómo se encuentra el camino entre origen y destino, y otra donde finalmente se procederá a enviar la información del FAX.

Fase C1: Pre-imagen test

En esta sub-fase se realiza el envío de lo que es la pre-imagen. Para ello se utilizan los mensajes de preámbulo.

TCF (Test Pattern): Este es un mensaje que envía cero de forma continuada durante 1.5 segundos aproximadamente. Sirve como patrón para corroborar  que el canal se puede utilizar a la velocidad que se desea.

12

13

CFR (Confirmation to Receive): Se confirma que se ha recibido correctamente el training enviado por la otra parte (TCF).

14

FTT (Failure To Train): indica que el patrón recibido no es correcto. La máquina llamante deberá de bajar la tasa de transmisión, y enviar de nuevo un mensaje DCS seguido de un TCF para probar el canal con un nuevo datarate. Este proceso de bajar la velocidad se puede llegar a realizar hasta tres veces. En caso de que bajando tres veces la velocidad no resulte suficiente, el fax se desconectará.

15

En esta imagen superior se ve que cuando se recibe un FTT se realiza de nuevo un DCS donde se negocia una velocidad inferior, y los siguientes Trainings se envían a una velocidad inferior (de 9600 baudios a 7200 baudios).

Es importante recordar que entre los diferentes mensajes aparece preámbulos:

VXX-Preamble: Antes de intercambiar un mensaje entre emisor y receptor (y viceversa), se envía un preámbulo con los caracteres 01111110 en binario (0x7E) que se remite durante 1 segundo aproximadamente. De esta forma se controla el acceso al medio. Si un lado no recibe respuesta, después de tres retransmisiones se desconectará.

16

Fase C2: Transferencia imagen

Una vez realizado la transferencia de la pre-imagen y de haber determinado que todo funciona correctamente, finalmente se procederá a enviar los datos del FAX. En la imagen inferior se puede ver el intercambio de mensajes entre las dos entidades donde se la transferencia de la misma.

17

Desde el terminal que origina el fax se podrán enviar los siguientes mensajes:

MPS (Multi-Page-Signal): Lo origina el llamante para indicar que hay más páginas que van a seguir a la transmisión que se ha completado. En la última página del fax se envía un EOP. La entidad receptora contestará con un mensaje de tipo MCF, RTP, o RTN (dependiento del resultado).

EOP (End-Of-Page): Lo origina el llamante, para decir que todas las paginas han sido transmitidas. Si todo ha funcionado correcto, se procede a la última fase del envío de FAX, la fase E.

EOM (End-Of-Message) : Indica el final de una página, para que ambas máquinas (recepción-transmisión) puedan volver a fase B.

NSF (Non  Standard Funtion): Opcionalmente las máquinas de fax puden intercambiar otros mensajes no estándares, los cuales se engloban dentro de estos mensajes NSF, dado que no están soportados por el estándar.

Las respuestas a estos mensajes se analizarán en la siguiente fase, procesos de post-mensajes, que serán las respuestas que el receptor del fax nos dará a estos envíos.

 

Fase D: Procesos post-mensajes

Respuestas del destino de fax:

MCF (Message Confirmation): La imagen se ha recibido correctamente, y se pueden proceder a recibir nuevas páginas sin problema, o en caso de que se haya acabado la transacción, desconectar la llamada.

18

RTP (Re-Train positive): Indica que la imagen ha sido recibida pero que existen algunos errores y que la línea debe de ser re-evaluada antes de enviar el siguiente mensaje. Por ello, lo siguiente será enviar un mensaje de DCS/TCF para retestear la línea, pero no se volverá a enviar la información, dado que es suficientemente buena.

19

RTN (Retrain Negative): El receptor considera que la señal es inaceptable. En este caso se deberá de volver a enviar un DCS/TCF para retestear la línea y se volverá a reenviar el mensaje que no ha llegado correctamente.

Fase E: Finalización de la llamada

El extremo que se encarga de enviar el FAX debe de indicar con un mensaje de tipo DCN que quiere desconectar la comunicación a nivel de T.38. Esto vendrá acompañado de un BYE a nivel de SIP, tal y como se puede ver en las imágenes inferiores.

DCN (Disconnect): Este mensaje se acaba enviando para desconectar la sesión de fax. DCN se utiliza en algunos casos, cuando la transmisión no ha sido satisfactoria, para volver a enviar el fax en pass-through (no siempre es para finalizar la transacción).

20

 

Bueno, espero que esta entrada os haya sido de utilidad. Para mi ha sido clave, dado que ahora puedo entender un poco más cómo funciona esto del FAX y el T.38. Si algo me queda pendiente es analizar a fondo la correspondencia entre el contenido de SDP de T.38 con los mensajes que dentro de este se intercambian (pero esto ya lo haré en posts siguientes).

 

Referencias:

https://tools.ietf.org/html/rfc3362

http://what-when-how.com/voip/pstn-fax-call-phases-voip/

http://wiki.voipinnovations.com/display/VI/T.38

http://www.cisco.com/c/en/us/support/docs/voice/fax-modem-over-ip/20227-faxrelay-tsguide.html#topic1-1

Anuncios