Seguimiento de las llamadas H323 en las trazas de CUCM.pdf

Breve explicación de como leer las trazas en CUCM para una llamada con H.323

Seguimiento de las llamadas H.323 en las trazas SDI de CUCM

VERSION 6  Click to view document history

Nota: Este documento es escrito para CUCM 5+ pero aplica para todas las versions de CUCM.

Habilitar las trazas

Seguir este documento para configurar las trazas en CUCM.  Poner especial atención a las casillas de H.225 y H.245.

Recrear el Problema / Realizar las llamadas de Prueba

Identificar el número que originó la llamada (Calling number), el número que recibe la llamada (Called number) y el tiempo exacto en que se hizo la llamada.

Descargar las Trazas Relevantes

Seguir las siguientes instrucciones para descargar las trazas de CUCM de todos los nodos en el cluster durante el tiempo en que se llevó a cabo la llamada.

Descargar una herramienta para facilitar el análisis

De preferencia se sugiere usar Notepad++ pero cualquier editor de textos que contenga un buscador y resaltador de textos funciona. 

Analizar las trazas

Identificar la llamada con el problema

La llamada de ejemplo tiene los siguientes detalles:

Número que origina la llamada (Calling Party) - 7021004

Número que recibe la llamada (Called Party) - 8011000

Tiempo de la llamada (Tomada del menú del teléfono en llamadas realizadas) - 11:45

Se puede utilizar cualquier herramienta de búsqueda para localizar la llamada.

Identificar el número que origina la llamada

La búsqueda contiene cosas como:

cn="7021004
dd="8011000”

Estas dos cadenas nos ayudan a encontrar la línea de Análisis de Dígitos en CUCM. 

“cn”  significa “Calling Number” (número que llama)

“dn” significa “Dialed Digits” (números marcados o número que recibe la llamada )

16/cm/trace/ccm/sdi/ccm00000002.txt:06/24/2010 11:45:32.095
CCM|Digit analysis: match(pi="2", fqcn="7021004", cn="7021004",plv="5", pss="",
TodFilteredPss="", dd="8011000",dac="0")

Si la búsqueda con 7 dígitos no produce ninguna salida, podríamos buscar con los últimos 4 dígitos hasta encontrar la llamada. 

Si nos basamos en la búsqueda, podemos ver que el archivo se encuentra en

cucm7-sub1/2010-06-24_11-47-16/cm/trace/ccm/sdi/ccm00000002.txt

También vemos cosas interesantes en la línea de Análisis de Dígitos:

pss="" y TodFilteredPss="" significa que el teléfono que realiza la llamada tiene un Calling Search Space de <None>.   Este valor contiene una lista ordenada de las particiones (Partitions) dentro del CSS (Calling Search Space).

Veamos el archivo ccm*02.txt donde encontramos el siguiente mensaje de SSCP del teléfono que realizó la llamada.

06/24/2010 11:45:32.089 CCM|StationInit: (0000003) SoftKeyEvent softKeyEvent=1(Redial) 

El indicador de TCP (TCP Handle) de este teléfono en particular es 0000003.  Esto indica que el teléfono fue el tercero en registrarse desde que el proceso de CCM inicio en este nodo.  Con la herramienta de búsqueda podemos encontrar los mensajes de SCCP que contienen el indicador de TCP (TCP Handle) 0000003. 

StationInit -  El telefono manda el mensaje a CUCM

StationD - CUCM manda el mensaje a CUCM

Vamos a resaltar el indicador de TCP en el siguiente segmento de trazas.

TCPHandle.png

Encontrar el Identificador del Proceso (ID) de la llamada y el Identificador del Proceso del número destino

Cada “call leg” tiene un identificador (CallID). Este identificador se conoce como CI.  Cada llamada tiene un proceso de “cdcc”  que es el proceso de control de la llamada. Esto se puede ver en las siguientes líneas del Análisis de Dígitos.

06/24/2010 11:45:32.095 CCM|Digit analysis: insert daResEntry to daResCache.
KeyCi=42514739 ,PID:Cdcc(2,174,4)

Aqui, el CI de la llamada es 42514739 y el cdcc (2,174,4).  También es útil resaltar estos identificadores en las trazas.

Con “dmpidreq” y “dmpidres” (Request and Response) podemos obtener el ID de proceso (pid) del número al que mandaremos la llamada:

06/24/2010 11:45:32.096 CCM|Digit analysis: wait_DmPidRes- Partition=[] Pattern=[801XXXX]
Where=[], cmDeviceType=[AccessDevice], OutsideDialtone =[1], DeviceOverride=[0],
PID=RouteListControl(1,100,61,2)

Podemos ver que el Patrón de Ruteo (Route Pattern) usado fue el 801XXXX y este patrón apunta a RouteListControl. El Identificador de ese proceso es (1,100,61,2).

Seguir el proceso de la llamada en el nodo correcto

El proceso Route List Control existe en el Nodo 1 (el publisher) y actualmente estamos en el subscriber.  Esto significa que el subscriber tiene que enviar un mensaje al Route List Control en el publisher.

Vamos a ver las trazas en el publisher al momento de la llamada, 11:45:32.096

cucm7-pub\2010-06-24_11-47-15\cm\trace\ccm\sdi\ccm00000002.txt

06/24/2010 11:45:32.100 CCM|RouteListControl::idle_CcSetupReq - RouteList(ICT_RL)

Esta es la petición de entrada del sub al pub.  Podemos ver que la llamada va a una Lista de Ruteo (Route List) que se llama "ICT_RL".  La Lista de Ruteo (Route List) pasa por el Grupo de Ruteo (Route Group), y podemos ver como se escoge un miembro del Grupo de Ruteo (Route Group) en el siguiente fragmento

06/24/2010 11:45:32.101 CCM|SMDMSharedData::findLocalDevice - Name=ICTto801
Key=005cee5b-ef72-4919-4855-5983ba8b23f2 isActvie=1 Pid=(1,153,7) found

Encontrar el proceso de establecimiento de la llamada de salida con H.225

Aquí podemos ver el proceso de salida de H.225.  El CUCM esta intentando establecer una conexión TCP de salida.

06/24/2010 11:45:32.188 CCM|H225D::restart0_TcpConnectionInfo: H225Cdpc(1,100,154,3)

Ahora vemos el mensaje de salida de h.323:

06/24/2010 11:45:32.193 CCM|SPROCRas - {
  h323-uu-pdu 
  {
    h323-message-body setup : 
      {
        protocolIdentifier { 0 0 8 2250 0 5 },
        sourceAddress 
        {
          dialedDigits : "7021004",
          h323-ID : {"7021004", {0, 0, 0, 0}, ...}
        },
        sourceInfo 
        {
          vendor 
          {
            vendor 
            {
              t35CountryCode 181,
              t35Extension 0,
              manufacturerCode 18
            },
            productId '436973636F43616C6C4D616E61676572'H,
            versionId '31'H
          },
          terminal 
          {
          },
          mc FALSE,
          undefinedNode FALSE
        },
        destinationAddress 
        {
          dialedDigits : "8011000"
        },
        activeMC FALSE,
        conferenceID '807B41849C7D31C2030003010E302CCF'H,
        conferenceGoal create : NULL,
        callType pointToPoint : NULL,
        sourceCallSignalAddress ipAddress : 
          {
            ip '0E302C15'H,
            port 1720
          },
        |<CLID::StandAloneCluster><NID::CUCM7-PUB><LVL::State Transition><MASK::0100>
06/24/2010 11:45:32.193 CCM|callIdentifier 
        {
          guid '807B41849C7D31C2030003010E302CCF'H

La parte más importante del mensaje para llevar seguimiento de la llamada es el “guid” ya que es el identificador único de la llamada. '807B41849C7D31C2030003010E302CCF'H.

Junto con el cuerpo del mensaje de H.225 existe más información sobre el mensaje de H.225.

11:45:32.193 CCM|Out Message -- H225SetupMsg -- Protocol= H225Protocol

11:45:32.193 CCM|Ie - H225BearerCapabilityIe IEData= 04 03 80 90 A2

11:45:32.193 CCM|Ie - H225CallingPartyIe IEData= 6C 09 00 81 37 30 32 31 30 30 34
11:45:32.193 CCM|Ie - Q931CalledPartyIe IEData= 70 08 80 38 30 31 31 30 30 30 
11:45:32.194 CCM|IsdnMsgData2= 08 02 00 03 05 04 03 80 90 A2 6C 09 00 81 37 30 32
11:45:32.212 CCM|In  Message -- H225CallProceedingMsg -- Protocol= H225Protocol
11:45:32.212 CCM|IsdnMsgData1= 08 02 80 03 02 7E 00 55 05 21 80 06 00 08 91 4A 00

Estos mensajes nos ayudan a llevar el seguimiento de la llamada.  Podemos ver que el primer mensaje es el mensaje de salida para que la llamada se establezca.  Este contiene los valores en ASCII del número que realiza la llamada y del número que recibe la llamada.

Número que origina la llamada (Calling) - 37 30 32 31 30 30 34

Número que recibe la llamada (Called) - 38 30 31 31 30 30 30

Para determinar el número que llama y el número que recibe, se tiene que remover el primer número 3 en cada par de dígitos.  Por ejemplo en el número que origina la llamada si removemos el 3 quedaría 7021004.

El segundo mensaje lo recibe el CUCM y es de Proceder (Proceeding).  El identificador es 0 03. El primer carácter indica la dirección.  En este caso el 0 significa de salida.  La dirección de salida será + 8 (hex), u 8 en este caso.

Encontrar el puerto negociado de H.245

Los mensajes de Establecimiento (Setup), Proceder (Proceeding), Alerta (Alerting), Conectar (Connect), Liberación completada (Release Complete) serán intercambiados con H.225.  Estos mensajes son para el control de la llamada.   Hay otro protocolo llamado H.245 que es usado para negociar la dirección IP, los puertos de UDP y el códec que se usará para la llamada.

Ya sea en el mensaje de Alerta (Alerting), o Conectar (Connect) se podrá apreciar una sesión de H.245.  Esto activa que el número que origina la llamada establezca una nueva sesión TCP con el que recibe la llamada para intercambiar mensajes de H.245.

Con ayuda de Notepad++ se busca el guid en todas las trazas, después en los mensajes de H.225 se encuentra el puerto.

H245Port.png

Se puede observar que el puerto de  H.245 es 58820 y viene en el mensaje de Conectar (Connect) a las 11:45:34 (cuando el número que recibe la llamada contesta).

Localizar el Identificador de H.245 (TTPid) basado en el puerto de H.245

Ahora que se encontró el puerto de H.245 podemos ver el identificador del proceso que nos permitirá encontrar los mensajes H.245 de esta llamada.

Nota

El proceso siguiente solo aplica para llamadas de "Slow   Start" calls.

El puerto de H.245 lo encontramos en una línea como la siguiente:

06/24/2010 11:45:34.167 CCM|H245Interface(3)::start_Transition, (H245Client session)
ip = (14.48.44.80), port = 58820, TA provided by Callee

Podemos ver que la interfaz de H.245 tiene un Identificador de 3. H245Interface(3). Todos los mensajes de H.245 de esta llamada utilizarán ese Identificador.   En el siguiente fragmento se puede observar el Identificador de dicho proceso.

06/24/2010 11:45:34.181 CCM|H245ASN - TtPid=(1,100,16,3) -Outgoing -value
MultimediaSystemControlMessage ::= request : terminalCapabilitySet

Este es un mensaje de salida llamado TCS (Terminal Capability Set).  El identificador que se va a usar es TtPid=(1,100,16,3).  Con ayuda de Notepad++ se puede buscar todos los registros de ese identificador.

TTPidSearch.png

Encontrar las capacidades en el mensaje de TCS (Terminal Capability Set)

Cada lado anuncia las capacidades que soporta en el mensaje de TCS.  Primero un lado anuncia todas las capacidades soportadas y después el otro lado responde con las capacidades que tiene en común.   El mensaje de TCS es de la siguiente forma:

        {
          capabilityTableEntryNumber 3,
          capability receiveAudioCapability : g711Ulaw64k : 40
        },
        {
          capabilityTableEntryNumber 4,
          capability receiveAudioCapability : g711Alaw64k : 40
        },
        {
          capabilityTableEntryNumber 5,
          capability receiveAudioCapability : g729wAnnexB : 6
        },
        {
          capabilityTableEntryNumber 6,
          capability receiveAudioCapability : g729AnnexAwAnnexB : 6
        },
        {
          capabilityTableEntryNumber 7,
          capability receiveAudioCapability : g729 : 6
        },
        {
          capabilityTableEntryNumber 8,
          capability receiveAudioCapability : g729AnnexA : 6
        },
        {
          capabilityTableEntryNumber 9,
          capability receiveAndTransmitUserInputCapability : dtmf : NULL

G.711U/A @ a 40 msec paquetización

G.729/A/B @ a 60 msec paquetización

Encontrar el Códec, la dirección IP y los puertos UDP usados en la llamada

Si vemos las trazas del subscriber donde el teléfono que realiza la llamada se registra podemos observar que la configuración de la Región se establece con el códec g.711.

06/24/2010 11:45:34.194 CCM|RegionsServer::MatchCapabilities -- kbps=64,
capACount=6, capBCount=8

En el publisher se indica que se usa G.711 @ 20 msec

06/24/2010 11:45:34.246 CCM|H245ASN - TtPid=(1,100,16,3) -Outgoing -value
MultimediaSystemControlMessage ::= request : openLogicalChannel : 
    {
      forwardLogicalChannelNumber 1,
      forwardLogicalChannelParameters 
      {
        dataType audioData : g711Ulaw64k : 20

También obtenemos un mensaje de entrada para G.711 @ 20msec

En el subscriber podemos regresar al indicador de TCP (TCP Handle) y ver que al teléfono se le indica que use G.711. El teléfono responde (StationInit) que va a escuchar en el puerto UDP 24418.

06/24/2010 11:45:34.255 CCM|StationInit: (0000003) OpenReceiveChannelAck Status=0,
IpAddr=IpAddr.type:0 ipAddr:0x0e302ccf000000000000000000000000(14.48.44.207),
Port=24418, PartyID=33554435

Si regresamos al nodo donde la sesión de H.245 se establece, podemos ver el mensaje de salida OpenLogicalChannelAck. Se puede observar que el puerto de UDP RTP que enviamos por H.323 es el mismo puerto donde el teléfono responde en el mensaje de SCCP ORCAck, 24418.

06/24/2010 11:45:34.257 CCM|H245ASN - TtPid=(1,100,16,3) -Outgoing -value
MultimediaSystemControlMessage ::= response : openLogicalChannelAck : 
    {
      forwardLogicalChannelNumber 1,
      forwardMultiplexAckParameters h2250LogicalChannelAckParameters : 
        {
          sessionID 1,
          mediaChannel unicastAddress : iPAddress : 
              {
                network '0E302CCF'H,
                tsapIdentifier 24418
              },

El mensaje de entrada OpenLogicalChannelAck indica que el teléfono que recibe la llamada estará escuchando en el puerto 23362

06/24/2010 11:45:34.259 CCM|H245ASN - TtPid=(1,100,16,3) -Incoming -value
MultimediaSystemControlMessage ::= response : openLogicalChannelAck : 
    {
      forwardLogicalChannelNumber 1,
      forwardMultiplexAckParameters h2250LogicalChannelAckParameters : 
        {
          sessionID 1,
          mediaChannel unicastAddress : iPAddress : 
              {
                network '0E302CCC'H,
                tsapIdentifier 23362
              },

Regresando al publisher vemos como el CUCM instruye  enviar RTP a esta dirección IP y puerto usando el códec previamente establecido.

06/24/2010 11:45:34.260 CCM|StationD:    (0000003) startMediaTransmission

conferenceID=42514739 passThruPartyID=33554435 remoteIpAddress=IpAddr.type:0
ipAddr:0x0e302ccc000000000000000000000000(14.48.44.204) remotePortNumber=23362
milliSecondPacketSize=20 compr

Historial de versiones
Revisión n.º
1 de 1
Última actualización:
‎04-18-2011 03:09 PM
Actualizado por:
 
Etiquetas (1)