Por: Juan Carlos Albert y Leonardo Cruz

La plataforma Lync Server permite que dos o más personas colaboren utilizando distintos medios como video, audio y mensajería instantánea. Típicamente este tipo de colaboración es uno a uno, pero existen casos donde más de dos personas participan. Esto en Lync Server se le conoce como conferencia. Durante una conferencia entran en juego muchos más componentes y recursos de los que normalmente trabajan en comunicación uno a uno.

En una conferencia entran en juego los siguientes elementos del servidor Lync: Focus y Fábrica de Focus (Focus Factory), Servidor de Conferencias Web (Data MCU), Servidor de Conferencias Audio/Video (AVMCU) y el Servicio de uso compartido de aplicaciones (ASMCU).

Flujo de Datos en una Conferencia

La siguiente figura muestra un flujo de datos entre los componentes que participan cuando un cliente de la red interna inicia una conferencia y se une a ella.

image

Los pasos mostrados en la figura son:

  • Paso 1. El cliente de conferencia se comunica con el Focus Factory por medio de una búsqueda DNS o con la dirección configurada manualmente. El cliente envía la información requerida para crear la conferencia, como el ID, la lista inicial de participantes, información del rol del usuario y la fecha para expirar la conferencia en una solicitud de tipo SERVICE.
  • Paso 2. Focus Factory crea un registro de conferencia en la base de datos Back-End. Adicionalmente crea y regresa al cliente una dirección SIP URI que representa la conferencia.
  • Paso 3. El cliente de conferencia se conecta al Focus y establece dos diálogos con él. Un diálogo INVITE para unirse a la conferencia y agregar información adicional de comandos. El segundo diálogo es uno de tipo SUBSCRIBE/NOTIFY para obtener notificaciones de cambios de estados de la conferencia.
  • Paso 4. El servicio Focus se conecta a la base de datos Back-End y obtiene el registro de conferencia. Consulta a la base de datos para verificar que el cliente que se une a la conferencia es válido.
    Adicionalmente se validan y se aplican las políticas asignadas a la conferencia dependiendo de los permisos del usuario.
  • Paso 5. El servicio Focus solicita información al servicio Conferencing Server Factory sobre como conectar al servidor de conferencias (AV, Data, AppSharing).
  • Paso 6. El servicio Conferencing Server Factory encuentra el servidor de conferencia de acuerdo al tipo de solicitud hecha por el servicio Focus e intenta provisionar la conferencia en dicho servidor, con el fin de asignar recursos a la conferencia. Si el provisionamiento es exitoso, el servicio Conferencing Server Factory regresa al servicio Focus una dirección HTTP que le permite establecer el enlace de control con dicho servidor de conferencia.
  • Paso 7. El servicio Focus se comunica con el servidor de conferencia para entregarle comandos que inicien o terminen la conferencia, cambien la lista de participantes o alteren el estado de la conferencia.
  • Paso 8. El cliente se comunica con el servidor de conferencias. Si es servidor de conferencias de Audio/video, el protocolo de señalización es SIP y el medio se transporta sobre RTP/RTCP.

Conferencias Multipunto

Los clientes de Microsoft Lync ofrecen la posibilidad de escalar un audio o audio/video llamada, una sesión de mensajes instantáneos, o una llamada multimodal y sesión de mensajes instantáneos hacia una conferencia, realizando la escalación de todos las las formas de colaboración de manera integral. Los usuarios pueden agregar asistentes adicionales para llamadas de audio de uno a uno, arrastrando y soltando otros usuarios de la lista de contactos en Office Communicator o utilizando el menú Invitar en una ventana de conversación, donde aparece un selector de contacto y el usuario puede introducir un número de teléfono en la invitación. La misma operación también puede hacerse desde un teléfono de escritorio para conferencias de voz.

Arquitectura de Conferencias en Lync

La arquitectura de conferencias en Lync está basada en una topología de estrella donde todos los clientes se conectan a un pool central de servidores. La solución de conferencia en Lync típicamente tiene dos principales tipos de servidor que participan en la conferencia.

Primero se encuentra Focus Factory (fábrica de enfoques) que actúa como un administrador de conferencias. Esta administra la lista de participantes en una conferencia y las modalidades que varios participantes se encuentren usando actualmente. La fábrica de enfoques también termina la conexión de señalización de control con el líder de conferencia y asegura que los comandos (como silencio, expulsar, y otros) se encuentran propiamente canalizados a los servidores de medios correctos. La fábrica de enfoques mantiene la conexión con la base de datos de conferencias, utilizada para buscar conferencias reservadas y números de acceso telefónico.

Después se encuentran uno o más unidades de control multipunto (MCUs o Multipoint Control Units). La MCU provee capacidades de multiplexado de medios para conferencias. En el sistema Lync, existen los siguientes roles de MCU:

  • IM MCU provee mensajería instantánea entre múltiples participantes
  • Audio/Video MCU provee la mezcla de audio y conmutación de video entre múltiples participantes
  • Data MCU provee características de Live Meeting, como compartir escritorio, pizarrón y demás.

Debido a que la fábrica de enfoques administra las conferencias, a todos los clientes se les entrega una dirección para la fábrica de enfoques cuando son provisionados. Esta dirección se envía a través del mecanismo de aprovisionamiento en banda al iniciar sesión en el cliente Lync.

Protocolo C3P

La solución de conferencias de Lync está basada en el Protocolo de Control de Conferencias Centralizado (CCCP o Centralized Conference Control Protocol) también conocido como C3P. Este es un protocolo cliente servidor basado en XML dentro de SIP y provee los siguientes mecanismos:

  • Un documento de conferencia (o roaster) que enlista los participantes en la conferencia y a los distintos modos de interacción que participantes se encuentran usando actualmente.
  • Un mecanismo de comando/respuesta que permite a los clientes emitir comandos al servidor de conferencia (fábrica de enfoques) para que ellos puedan crear una conferencia o controlar aspectos de la misma.

Por ejemplo, AddConference es un comando C3P que se usa para agregar una conferencia a la fábrica de enfoques. La fábrica responde con un SIP URI de conferencia único que está basado en la dirección SIP del usuario. Por ejemplo:

sip:juancal@contoso.com;gruu;opaque=app:conf:focus:id:A0DB798E3EDA984FACAD30D1A8DCD35A

Esta es una dirección SIP que identifica de manera única a la conferencia de Lync. Esta dirección puede ser compartida por otros participantes para darles acceso a la conferencia. Esta es la misma dirección que se envía en el mensaje generado usando la funcionalidad de Invitar por Correo Electrónico en Lync. Debido a que la dirección de conferencia es creada usando la misma dirección que el usuario que la origina, se asegura que las políticas aplicadas a la conferencia se deriven de las políticas del creador. También significa que las políticas relacionadas a llamadas salientes de acceso telefónico a la PSTN se aplican basándose en las políticas y permisos del líder de la conferencia.

Otro comando C3P es AddUser, el cual agrega un participante a la conferencia. También especifica el rol de los participantes como un Asistente o Presentador. El líder o presentador tiene que agregarse a la conferencia usando el mismo comando, tan pronto como el comando AddConference se emite. El líder/presentador puede usar el comando AddUser para invitar clientes o dispositivos usando la misma dirección SIP, así como por medio de la PSTN. Para iniciar una llamada saliente a la PSTN desde la conferencia, existe un nodo XML <dialout> que se especifica en el comando AddUser.

Un tercer comando es GetConference, el cual es usado para obtener todas las capacidades de la conferencia. Una vez que el cliente se conecta a la fábrica de enfoques, necesita obtener la dirección SIP de los diferentes MCUs en el sistema, para así poder hablar directamente con estos elementos. Esta información de los MCU se obtiene del comando GetConference.

Como se crean las conferencias

El primer paso es crear una conferencia y establecer una sesión de señalización SIP con la fábrica de enfoques. El primer comando que usa un cliente es para crear una sesión de conferencia en la fábrica de enfoques para que el cliente pueda interactuar con la fábrica de enfoques. Esto se hace usando un mensaje SIP especial llamado SERVICE. El comando AddConference y su respuesta se envía y reciben por medio de la solicitud SERVICE y su respuesta 200 OK.

Una vez completado el intercambio de solicitud/respuesta, el cliente ha obtenido el ID de conferencia único que puede usar para hablar al enfoque y obtener información relacionada con el MCU, agregar otros usuarios y administrar la membresía de la conferencia.

Entonces el cliente se agrega él mismo a la conferencia enviando un mensaje SIP INVITE a la dirección de conferencia que contiene un comando AddUser C3P, especificando la sesión del mismo cliente. Esto completa el primer paso de crear una conferencia y unirse al enfoque.

El siguiente paso del cliente es unirse a los medios de diferentes MCUs. Por ejemplo, si la conferencia será una llamada de audio, entonces el cliente de Lync emite un mensaje SIP INVITE regular que contiene la descripción (SDP) de medios usada para la llamada de audio o de audio/video.

Note que una vez que la solicitud SERVICE se ha hecho, el primer comando AddUser se agrega en la carga del mensaje INVITE, en vez de un SDP. Una vez que el dialogo se ha creado, se envían otros comandos como agregar nuevos usuarios se envían como mensajes SIP INFO sobre el mismo diálogo INVITE hacia el enfoque. El primer comando C3P que se envía a la fábrica de enfoques es un comando GetConference que regresa las direcciones SIP del MCU. El cliente después establece una segunda sesión de medio (esta vez usando el SDP de audio) a la dirección SIP del MCU de audio y video indicado en la respuesta del GetConference.

Escalar una llamada punto a punto a una conferencia

Escalar una llamada punto a punto a una conferencia es un proceso más complejo. Esto es debido a que una llamada punto a punto debe mantenerse hasta que ambos participantes conmuten a la conferencia. Los clientes de Lync se conducen a un proceso de escalación sincronizado donde ambos clientes se unen a la conferencia antes de terminar la llamada punto a punto.

Digamos que la cuenta Juancal@contoso.com está llamando a leocruz@contoso.com y decide agregar a Dmartz@contoso.com en la conferencia. Al escalar la llamada punto a punto en la conferencia los siguientes pasos ocurren:

1. El cliente Lync de Juancal@contoso.com crea una session de conferencia basada en la fábrica de enfoques.

TL_INFO(TF_PROTOCOL) [9]0A38.3464::11/09/2011-16:44:01.166.05e36521 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(125))$$begin_record
Trace-Correlation-Id: 3964600872
Instance-Id: 04DC24C1
Direction: incoming
Peer: 172.28.64.219:49416
Message-Type: request
Start-Line: SERVICE sip:juancal@contoso.com;gruu;opaque=app:conf:focusfactory SIP/2.0
From: <sip:juancal@contoso.com>;tag=44adeb2aae;epid=a79166d571
To: <sip:juancal@contoso.com;gruu;opaque=app:conf:focusfactory>
CSeq: 1 SERVICE
Call-ID: 8f9c2104ab4b308a65e5d341b185fa07
Via: SIP/2.0/TLS 172.28.64.219:49416
Max-Forwards: 70
Contact: <sip:juancal@contoso.com;opaque=user:epid:ggChzWngsV2dixMJUQOEAgAA;gruu>
User-Agent: CPE/4.0.7577.296 OCPhone/4.0.7577.296 (Microsoft Lync 2010 Phone Edition)
Proxy-Authorization: TLS-DSK qop="auth", realm="SIP Communications Service", opaque="E3689D8D", targetname="SrvFE01.contoso.com", crand="e1961e53", cnum="72", response="fa31476f2d89c47d60a6a45a8b88fb14c6a708aa"
Content-Type: application/cccp+xml
Content-Length: 1319
Message-Body: <?xml version="1.0"?>
<request xmlns="urn:ietf:params:xml:ns:cccp" xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" C3PVersion="1" to="sip:juancal@contoso.com;gruu;opaque=app:conf:focusfactory" from="sip:juancal@contoso.com" requestId="18975712"><addConference><ci:conference-info xmlns:ci="urn:ietf:params:xml:ns:conference-info" entity="" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions"><ci:conference-description><msci:conference-id>4ZRN081H</msci:conference-id><msci:expiry-time>2011-11-10T00:44:00Z</msci:expiry-time><msci:admission-policy>anonymous</msci:admission-policy><cis:separator xmlns:cis="urn:ietf:params:xml:ns:conference-info-separator"></cis:separator><msci:pstn-access></msci:pstn-access><cis:separator xmlns:cis="urn:ietf:params:xml:ns:conference-info-separator"></cis:separator><msci:autopromote>2147483648</msci:autopromote><msci:pstn-lobby-bypass>true</msci:pstn-lobby-bypass><msci:server-mode>14</msci:server-mode></ci:conference-description><ci:conference-state><locked xmlns="urn:ietf:params:xml:ns:conference-info">false</locked></ci:conference-state><msci:conference-view><msci:entity-view entity="chat"/><msci:entity-view entity="audio-video"/></msci:conference-view></ci:conference-info></addConference></request>
$$end_record

2. El cliente Lync de Juancal@contoso.com se une a la conferencia y el MCU de Audio/Video con la llamada en pausa (flujo RTP inactivo)

TL_INFO(TF_PROTOCOL) [4]4590.356C::11/09/2011-16:44:04.339.0241b4cf (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(125))$$begin_record
Trace-Correlation-Id: 3867255056
Instance-Id: 04920F5C
Direction: incoming
Peer: POOLLYNC.contoso.com:58470
Message-Type: request
Start-Line: INVITE sip:POOLLYNC.contoso.com@contoso.com;gruu;opaque=srvr:Microsoft.Rtc.Applications.Cas:ABeI5eZTU1Ss3x1c2cGKxwAA SIP/2.0
From: <sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H>;epid=645FE4B8EB;tag=aa9b163e1d
To: <sip:POOLLYNC.contoso.com@contoso.com;gruu;opaque=srvr:Microsoft.Rtc.Applications.Cas:ABeI5eZTU1Ss3x1c2cGKxwAA>
CSeq: 16510 INVITE
Call-ID: 8acc5262-ec25-41fc-8c17-56b2d49834c4
MAX-FORWARDS: 70
VIA: SIP/2.0/TLS 172.20.92.19:58470;branch=z9hG4bKfb5c3dc
CONTACT: <sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H>;isFocus
CONTENT-LENGTH: 192
SUPPORTED: ms-dialog-route-set-update
SUPPORTED: timer
SUPPORTED: gruu-10
USER-AGENT: RTCC/4.0.0.0 AV-MCU
CONTENT-TYPE: application/ms-conf-invite+xml
ALLOW: ACK
Ms-Conversation-ID: f3n0s4VjtkWl2b4b0ml/2g==
Session-Expires: 1800
Min-SE: 90
Allow: CANCEL,BYE,INVITE,UPDATE
Message-Body: <Conferencing version="2.0">
<focus-uri>sip:juancal@contoso.com;gruu;opaque=app:conf:focus:id:4zrn081h</focus-uri>
<subject />
<audio available="true" />
</Conferencing>
$$end_record

TL_INFO(TF_PROTOCOL) [4]0A38.204C::11/09/2011-16:44:04.830.05ea5e49 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(125))$$begin_record
Trace-Correlation-Id: 729056537
Instance-Id: 04DC25B7
Direction: outgoing
Peer: SRVFE01.contoso.com:5063
Message-Type: request
Start-Line: INVITE sip:POOLLYNC.contoso.com:5063;transport=tls;ms-fe=SRVFE01.contoso.com SIP/2.0
From: "Datacenter C161"<sip:juancal@contoso.com>;tag=b6e277be3d;epid=a79166d571
To: <sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H>
CSeq: 1 INVITE
Call-ID: 8a1de41ebf92041b8a64f001c34d72e9
Record-Route: <sip:POOLLYNC.contoso.com:5061;transport=tls;ms-fe=SrvFE01.contoso.com;opaque=state:T:F;lr>;tag=9B149AF369B0C8EA50945A72EC85F63F
Via: SIP/2.0/TLS 172.20.92.19:58473;branch=z9hG4bK4159B09F.252CE5C905607A54;branched=FALSE
Max-Forwards: 69
P-Asserted-Identity: "Datacenter C161"<sip:juancal@contoso.com>,<tel:+525500003810;ext=3810>
ms-application-via: SVCLYNCSQL04.contoso.com_mon;ms-server=SrvFE01.contoso.com;ms-pool=POOLLYNC.contoso.com;ms-application=51FB453D-5B9F-45df-83B4-DD1F7E604A8
Via: SIP2.0/TLS 172.28.64.219:49416;ms-received-port=49416;ms-received-cid=43EC200
Contact: <sip:juancal@contoso.com;opaque=user:epid:ggChzWngsV2dixMJUQOEAgAA;gruu>
User-Agent: CPE/4.0.7577.296 OCPhone/4.0.7577.296 (Microsoft Lync 2010 Phone Edition)
Supported: ms-dialog-route-set-update
Ms-Conversation-ID: Acye/qSEeTueN6vyQ2NgKRp0ZBUFDQ==
Supported: timer
Supported: histinfo
Supported: ms-safe-transfer
Supported: ms-sender
Supported: ms-early-media
Supported: 100rel
ms-keep-alive: UAC;hop-hop=yes
Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REFER, NOTIFY, BENOTIFY, OPTIONS
ms-subnet: 172.28.64.0
Accept-Language: es-ES
ms-endpoint-location-data: NetworkScope;ms-media-location-type=Intranet
Supported: replaces
Supported: ms-conf-invite
Content-Type: multipart/alternative;boundary="ab12d06cc4209340f981b3aff16bd486"
Content-Length: 3977
ms-routing-phase: from-uri-routing-done
Call-Info: <sip:juancal@contoso.com;gruu;opaque=app:conf:focus:id:4ZRN081H>;purpose=ms-conf-uri
ms-user-data: ms-publiccloud=FALSE;ms-federation=FALSE
Message-Body: --ab12d06cc4209340f981b3aff16bd486
Content-Type: application/sdp
Content-ID: <462e9b970b49e54cd912be8ce0969af4@contoso.com>
Content-Transfer-Encoding: 7bit
Content-Disposition: session; handling=optional; ms-proxy-2007fallback
v=0
o=- 0 0 IN IP4 172.28.64.219
s=session
c=IN IP4 172.28.64.219
b=CT:99980
t=0 0
m=audio 5414 RTP/SAVP 114 9 111 0 8 115 97 13 118 101
a=candidate:30jjJugIM/o5+CXZAkAe09TxHPWZSO+oCPhMnSzyJEY 1 xBcvzdCD9aDCEmK1K/pYIg UDP 0.830 172.28.64.219 5414
a=candidate:30jjJugIM/o5+CXZAkAe09TxHPWZSO+oCPhMnSzyJEY 2 xBcvzdCD9aDCEmK1K/pYIg UDP 0.830 172.28.64.219 5415
a=candidate:tVXdWqIlXO5H4i7ITdzmGv+24v6lI8YrzFX5dMNlusE 1 NzTIUWnl5KNbvxhIWJSg1Q TCP 0.190 206.39.49.28 55029
a=candidate:tVXdWqIlXO5H4i7ITdzmGv+24v6lI8YrzFX5dMNlusE 2 NzTIUWnl5KNbvxhIWJSg1Q TCP 0.190 206.39.49.28 55029
a=candidate:1kC1ZjZpo4ovrnXVY/e98VEuEhfeaCinywO3smiaSkk 1 FKWR9VhhQLbdr6i4/8SLBg UDP 0.490 206.39.49.28 55478
a=candidate:1kC1ZjZpo4ovrnXVY/e98VEuEhfeaCinywO3smiaSkk 2 FKWR9VhhQLbdr6i4/8SLBg UDP 0.490 206.39.49.28 50285
a=candidate:ur8ZlCOdZuEiyWSzTqE8djEGqOVnw5LHjjKbSEASHuQ 1 2Y+X6ZyO/eEFSBaouzh35w TCP 0.250 172.28.64.219 5392
a=candidate:ur8ZlCOdZuEiyWSzTqE8djEGqOVnw5LHjjKbSEASHuQ 2 2Y+X6ZyO/eEFSBaouzh35w TCP 0.250 172.28.64.219 5392
a=cryptoscale:1 client AES_CM_128_HMAC_SHA1_80 inline:r/Zcj1CQT5BgKUmFJcxw1xPzJMXfhjTVTKQxvyBO|2^31|1:1
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:ol0Dl2NP2cZKdkScVfceKpxDGHxMLiU0I7yBXlGt|2^31|1:1
a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:G8SVaKf0cQZqqyKQWSmQTv4MKcyJFKa29S46BMX2|2^31
a=maxptime:200
a=inactive
a=rtpmap:114 x-msrta/16000
a=fmtp:114 bitrate=29000
a=rtpmap:9 G722/8000
a=rtpmap:111 SIREN/16000
a=fmtp:111 bitrate=16000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:115 x-msrta/8000
a=fmtp:115 bitrate=11800
a=rtpmap:97 RED/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=encryption:required
--ab12d06cc4209340f981b3aff16bd486
Content-Type: application/sdp
Content-ID: <76de7644d8bef0750c82ee5008fce53f@contoso.com>
Content-Transfer-Encoding: 7bit
Content-Disposition: session; handling=optional
v=0
o=- 0 0 IN IP4 172.28.64.219
s=session
c=IN IP4 172.28.64.219
b=CT:99980
t=0 0
m=audio 5422 RTP/SAVP 114 9 111 0 8 115 97 13 118 101
a=ice-ufrag:jOFy
a=ice-pwd:h25Tvij9Ev+n7X2Pke0duHDQ
a=candidate:1 1 UDP 2130706431 172.28.64.219 5422 typ host
a=candidate:1 2 UDP 2130705918 172.28.64.219 5423 typ host
a=candidate:2 1 TCP-PASS 6556159 206.39.49.28 50260 typ relay raddr 172.28.64.219 rport 5425
a=candidate:2 2 TCP-PASS 6556158 206.39.49.28 50260 typ relay raddr 172.28.64.219 rport 5425
a=candidate:3 1 UDP 16648703 206.39.49.28 56516 typ relay raddr 172.28.64.219 rport 5404
a=candidate:3 2 UDP 16648702 206.39.49.28 57376 typ relay raddr 172.28.64.219 rport 5405
a=candidate:4 1 TCP-ACT 7076863 206.39.49.28 50260 typ relay raddr 172.28.64.219 rport 5425
a=candidate:4 2 TCP-ACT 7076350 206.39.49.28 50260 typ relay raddr 172.28.64.219 rport 5425
a=candidate:5 1 TCP-ACT 1684797951 172.28.64.219 5425 typ srflx raddr 172.28.64.219 rport 5425
a=candidate:5 2 TCP-ACT 1684797438 172.28.64.219 5425 typ srflx raddr 172.28.64.219 rport 5425
a=cryptoscale:1 client AES_CM_128_HMAC_SHA1_80 inline:r/Zcj1CQT5BgKUmFJcxw1xPzJMXfhjTVTKQxvyBO|2^31|1:1
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:ol0Dl2NP2cZKdkScVfceKpxDGHxMLiU0I7yBXlGt|2^31|1:1
a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:G8SVaKf0cQZqqyKQWSmQTv4MKcyJFKa29S46BMX2|2^31
a=maxptime:200
a=inactive
a=rtpmap:114 x-msrta/16000
a=fmtp:114 bitrate=29000
a=rtpmap:9 G722/8000
a=rtpmap:111 SIREN/16000
a=fmtp:111 bitrate=16000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:115 x-msrta/8000
a=fmtp:115 bitrate=11800
a=rtpmap:97 RED/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=encryption:required
--ab12d06cc4209340f981b3aff16bd486--
$$end_record

3. Una vez que el cliente Lync de Juancal@contoso.com se une a la conferencia de manera exitosa, el teléfono Lync envia un mensaje App-INVITE a Leocruz@contoso.com especificando la dirección SIP de la conferencia.

TL_INFO(TF_PROTOCOL) [9]0A38.3464::11/09/2011-16:44:01.166.05e36521 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(125))$$begin_record
Trace-Correlation-Id: 3964600872
Instance-Id: 04DC24C1
Direction: incoming
Peer: 172.28.64.219:49416
Message-Type: request
Start-Line: SERVICE sip:juancal@contoso.com;gruu;opaque=app:conf:focusfactory SIP/2.0
From: <sip:juancal@contoso.com>;tag=44adeb2aae;epid=a79166d571
To: <sip:juancal@contoso.com;gruu;opaque=app:conf:focusfactory>
CSeq: 1 SERVICE
Call-ID: 8f9c2104ab4b308a65e5d341b185fa07
Via: SIP/2.0/TLS 172.28.64.219:49416
Max-Forwards: 70
Contact: <sip:juancal@contoso.com;opaque=user:epid:ggChzWngsV2dixMJUQOEAgAA;gruu>
User-Agent: CPE/4.0.7577.296 OCPhone/4.0.7577.296 (Microsoft Lync 2010 Phone Edition)
Proxy-Authorization: TLS-DSK qop="auth", realm="SIP Communications Service", opaque="E3689D8D", targetname="SrvFE01.contoso.com", crand="e1961e53", cnum="72", response="fa31476f2d89c47d60a6a45a8b88fb14c6a708aa"
Content-Type: application/cccp+xml
Content-Length: 1319
Message-Body: <?xml version="1.0"?>
<request xmlns="urn:ietf:params:xml:ns:cccp" xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" C3PVersion="1" to="sip:juancal@contoso.com;gruu;opaque=app:conf:focusfactory" from="sip:juancal@contoso.com" requestId="18975712"><addConference><ci:conference-info xmlns:ci="urn:ietf:params:xml:ns:conference-info" entity="" xmlns:msci="http://schemas.microsoft.com/rtc/2005/08/confinfoextensions"><ci:conference-description><msci:conference-id>4ZRN081H</msci:conference-id><msci:expiry-time>2011-11-10T00:44:00Z</msci:expiry-time><msci:admission-policy>anonymous</msci:admission-policy><cis:separator xmlns:cis="urn:ietf:params:xml:ns:conference-info-separator"></cis:separator><msci:pstn-access></msci:pstn-access><cis:separator xmlns:cis="urn:ietf:params:xml:ns:conference-info-separator"></cis:separator><msci:autopromote>2147483648</msci:autopromote><msci:pstn-lobby-bypass>true</msci:pstn-lobby-bypass><msci:server-mode>14</msci:server-mode></ci:conference-description><ci:conference-state><locked xmlns="urn:ietf:params:xml:ns:conference-info">false</locked></ci:conference-state><msci:conference-view><msci:entity-view entity="chat"/><msci:entity-view entity="audio-video"/></msci:conference-view></ci:conference-info></addConference></request>
$$end_record

4. El teléfono Lync de Leocruz@contoso.com inicia el paso de escalación y entonces se une al enfoque y al MCU de Audio y Video con el flujo de audio en pausa.

TL_INFO(TF_PROTOCOL) [8]4590.48F0::11/09/2011-16:44:09.856.02496c70 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(125))$$begin_record
Trace-Correlation-Id: 1165483498
Instance-Id: 0492107F
Direction: incoming
Peer: 172.20.92.17:51690
Message-Type: request
Start-Line: INVITE sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H SIP/2.0
From: <sip:leocruz@contoso.com>;tag=4340562b60;epid=02ceec8f1b
To: <sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H>;tag=107dbd34f;epid=645FE4B8EB
CSeq: 2 INVITE
Call-ID: 03b98bc804d14e333a49ea4bbb5ae893
Via: SIP/2.0/TLS 172.28.32.12:51690
Max-Forwards: 70
Route: <sip:POOLLYNC.contoso.com:5061;transport=tls;ms-fe=SrvFE02.contoso.com;opaque=state:T:Tc.Gz5YGy6p9FmKgGDQYzd0jccT:F:Fc.Gz5YGy6p9FmKgGDQYzd0jccT:Eu:Ci.R4efbc00;lr;ms-route-sig=hiUYr-Lw77VUa00rQlYfdO35ZDW1ry-SqY-7uxRTLEub4QT7e1pupZ1AAA>
Contact: <sip:leocruz@contoso.com;opaque=user:epid:U7Fc4Lxi4leiCLGvRD1scAAA;gruu>
User-Agent: CPE/4.0.7577.250 OCPhone/4.0.7577.250 (Microsoft Lync 2010 Phone Edition)
Supported: ms-dialog-route-set-update
Ms-Conversation-ID: Acye/qSEeTueN6vyQ2NgKRp0ZBUFDQ==
Supported: timer
Supported: histinfo
Supported: ms-safe-transfer
Supported: ms-sender
Supported: ms-early-media Supported: 100rel
ms-keep-alive: UAC;hop-hop=yes
ms-subnet: 172.28.32.0
ms-endpoint-location-data: NetworkScope;ms-media-location-type=Intranet
Proxy-Authorization: TLS-DSK qop="auth", realm="SIP Communications Service", opaque="993663F6", targetname="SrvFE02.contoso.com", crand="0b3cdc65", cnum="61", response="fddbe67579a8f8663ec915a7f75fde9312fe4e54"
Content-Type: application/sdp
Content-Length: 1432
Message-Body: v=0
o=- 0 0 IN IP4 172.28.32.12
s=session
c=IN IP4 172.28.32.12
b=CT:99980
t=0 0
m=audio 5418 RTP/SAVP 9 111 0 8 97 13 118 101
a=ice-ufrag:CUX7
a=ice-pwd:uFECw7Uew36/S9IjYl5kZYLg
a=candidate:1 1 UDP 2130706431 172.28.32.12 5418 typ host
a=candidate:1 2 UDP 2130705918 172.28.32.12 5419 typ host
a=candidate:2 1 TCP-PASS 6556159 206.39.49.27 57171 typ relay raddr 172.28.32.12 rport 5399
a=candidate:2 2 TCP-PASS 6556158 206.39.49.27 57171 typ relay raddr 172.28.32.12 rport 5399
a=candidate:3 1 UDP 16648703 206.39.49.27 53460 typ relay raddr 172.28.32.12 rport 5428
a=candidate:3 2 UDP 16648702 206.39.49.27 57848 typ relay raddr 172.28.32.12 rport 5429
a=candidate:4 1 TCP-ACT 7076863 206.39.49.27 57171 typ relay raddr 172.28.32.12 rport 5399
a=candidate:4 2 TCP-ACT 7076350 206.39.49.27 57171 typ relay raddr 172.28.32.12 rport 5399
a=candidate:5 1 TCP-ACT 1684797951 172.28.32.12 5399 typ srflx raddr 172.28.32.12 rport 5399
a=candidate:5 2 TCP-ACT 1684797438 172.28.32.12 5399 typ srflx raddr 172.28.32.12 rport 5399
a=cryptoscale:1 client AES_CM_128_HMAC_SHA1_80 inline:Vt7xIMsg0l1X0j43KAJfoCBV+KBmo5oxMYNFip6u|2^31|1:1
a=maxptime:200
a=rtpmap:9 G722/8000
a=rtpmap:111 SIREN/16000
a=fmtp:111 bitrate=16000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 RED/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=encryption:required
$$end_record

5. Una vez que el teléfono Lync the Leocruz@contoso.com se une exitosamente al MCU de Audio/Video, envía un mensaje BYE a la sesión punto a punto.

6. Ambos teléfonos Lync de Juancal@contoso.com y Leocruz@contoso.com se activan el flujo de RTP al MCU de Audio/Video al mismo tiempo para mantener la continuidad de la llamada.

7. Entonces el teléfono Lync de Juancal@contoso.com envía un mensaje App-INVITE al cliente Dmartz@contoso.com para invitarlo a la conferencia.

TL_INFO(TF_PROTOCOL) [0]4590.3E34::11/09/2011-16:44:11.271.024d4c20 (SIPStack,SIPAdminLog::TraceProtocolRecord:SIPAdminLog.cpp(125))$$begin_record
Trace-Correlation-Id: 1123026313
Instance-Id: 04921101
Direction: incoming
Peer: POOLLYNC.contoso.com:58470
Message-Type: request
Start-Line: INVITE sip:+525500006849;ext=6849@contoso.com;user=phone SIP/2.0
From: <sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H>;epid=645FE4B8EB;tag=d17debde2a
To: <sip:+525500006849;ext=6849@contoso.com;user=phone>
CSeq: 16514 INVITE
Call-ID: 35b1334b-12cc-4680-8bfc-05f3a4e89492
MAX-FORWARDS: 70
VIA: SIP/2.0/TLS 172.20.92.19:58470;branch=z9hG4bKb93dae91
CONTACT: <sip:juancal@contoso.com;gruu;opaque=app:conf:audio-video:id:4ZRN081H>;isFocus
CONTENT-LENGTH: 3628
REFERRED-BY: <sip:juancal@contoso.com>;ms-identity="MIIBwAYJKoZIhvcNAQcCoIIBsTCCAa0CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGCAYwwggGIAgEBMGUwVzESMBAGCgmSJomT8ixkARkWAm14MRMwEQYKCZIiZPyLGQBGRYDZ29iMRswGQYKCZImiZPyLGQBGRYLcHJlc2lkZW5jaWExDzANBgNVBAMTBkNBUk9PVAIKG6FWPAAAAAAAcDAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUBIIBAIuzZNZMDDSbjJlEc/QSIT12OZURQJSBuN6N1FIcg+S6fmcSpRga9mJGNtwFeH5rOOgXWrj6yih2dWi33MV7/w/7NJ+fNph6NuZYVkrFcKfu8qxQ6aUHp+xs/RKk1xC702Wup0pJXBoc+8tB456ilGjmsWDPlaIpz0fSs0bNueGusK3jaOxLSAVohqx+Vrvf21fCg3iMTq31SevKs3Zx5jAopLcBOr5+19uixLGrqgSD1kSXX43OSLs6Tl8hwCTrqwKYK7fy5pqnuYPHDELQaNcI0ebwjWqJnv7jypRJ4VoO4TucNrVHqWT9mv2LUbwaa6TCb7ywOKyqrT7yG/O/vgg=:Wed, 09 Nov 2011 16:44:11 GMT";ms-identity-info="sip:POOLLYNC.contoso.com:5063;ms-fe=SrvFE01.contoso.com;transport=Tls";ms-identity-alg=rsa-sha1
SUPPORTED: ms-dialog-route-set-update
SUPPORTED: timer
SUPPORTED: gruu-10
USER-AGENT: RTCC/4.0.0.0 AV-MCU
CONTENT-TYPE: multipart/alternative; boundary=Q67grouN1CqDOUFPTYYKt9IulRQBQgx6
ALLOW: ACK
Ms-Sensitivity: private-no-diversion
Ms-Conversation-Id: Acye/qSEeTueN6vyQ2NgKRp0ZBUFDQ==
ms-focus-uri: <sip:juancal@contoso.com;gruu;opaque=app:conf:focus:id:4zrn081h>
ms-endpoint-location-data: NetworkScope;ms-media-location-type=intranet
Session-Expires: 1800
Min-SE: 90
Allow: CANCEL,BYE,INVITE,UPDATE
Message-Body: --Q67grouN1CqDOUFPTYYKt9IulRQBQgx6
Content-Type: application/sdp
Content-ID: 14419d94-7fde-436c-871e-b0949f26afae
Content-Disposition: session;handling=optional;ms-proxy-2007fallback
v=0
o=- 8646 0 IN IP4 172.20.92.19
s=session
c=IN IP4 172.20.92.19
b=CT:1000000
t=0 0
m=audio 50450 RTP/SAVP 9 111 0 8 97 101 13 118
c=IN IP4 172.20.92.19
a=rtcp:50451
a=candidate:/6Zz74kp8qAHLrz8NPLCqw7ojlylv9c4cQ6ORltTUio 1 pZu5IoBWUZIJjwMIHBHL+w UDP 0.830 172.20.92.19 50450
a=candidate:/6Zz74kp8qAHLrz8NPLCqw7ojlylv9c4cQ6ORltTUio 2 pZu5IoBWUZIJjwMIHBHL+w UDP 0.830 172.20.92.19 50451
a=candidate:Gm27T10qX+oF/+mMCwhUr7GvMfcfDl5cDjddUOOays4 1 jNkTYM+0rhdNVs4mCc4vzA TCP 0.110 206.39.49.27 51501
a=candidate:Gm27T10qX+oF/+mMCwhUr7GvMfcfDl5cDjddUOOays4 2 jNkTYM+0rhdNVs4mCc4vzA TCP 0.110 206.39.49.27 51501
a=candidate:cqLXn9Y0cxfqM9ctWrsBiJndpQs9lzOQQRRN2OAfLf0 1 jTyvQgubjGjP3PAdtlDj5w UDP 0.420 206.39.49.27 58949
a=candidate:cqLXn9Y0cxfqM9ctWrsBiJndpQs9lzOQQRRN2OAfLf0 2 jTyvQgubjGjP3PAdtlDj5w UDP 0.420 206.39.49.27 54533
a=candidate:abq9r6hOE2b1Vpp19ldPyLCncUzNjs+KIxu3SVYsP9I 1 1pFx+43GCWcT1Iteapan/Q TCP 0.250 172.20.92.19 53090
a=candidate:abq9r6hOE2b1Vpp19ldPyLCncUzNjs+KIxu3SVYsP9I 2 1pFx+43GCWcT1Iteapan/Q TCP 0.250 172.20.92.19 53090
a=label:main-audio
a=cryptoscale:1 server AES_CM_128_HMAC_SHA1_80 inline:xm07hyxUZHSRzAboQu1SUcPiVKeNnnn7SSlwn7uQ|2^31|1:1
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:Kf77MQJnLqUvRbzGjBODX8mi/rkK0B02opFX7tMw|2^31|1:1
a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:4TxBYTMVru74uKbwFia9wQHnSKLzTEkmjE4gfnqp|2^31
a=rtpmap:9 g722/8000
a=rtpmap:111 SIREN/16000
a=fmtp:111 bitrate=16000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 RED/8000
a=fmtp:97 red/8000
a=rtpmap:101 telephone-event/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=ptime:20
--Q67grouN1CqDOUFPTYYKt9IulRQBQgx6
Content-Type: application/sdp
Content-ID: 1bbb9450-654f-46b7-8848-cd4d4d2dfd49
v=0
o=- 8647 0 IN IP4 172.20.92.19
s=session
c=IN IP4 172.20.92.19
b=CT:1000000
t=0 0
m=audio 55310 RTP/SAVP 9 111 0 8 97 101 13 118
c=IN IP4 172.20.92.19
a=rtcp:55311
a=ice-ufrag:7xjT
a=ice-pwd:pvlOIC4TEYz9bBhk+ehuXhja
a=candidate:1 1 UDP 2130706431 172.20.92.19 55310 typ host
a=candidate:1 2 UDP 2130705918 172.20.92.19 55311 typ host
a=candidate:2 1 tcp-pass 6554111 206.39.49.27 55098 typ relay raddr 172.20.92.19 rport 55222
a=candidate:2 2 tcp-pass 6554110 206.39.49.27 55098 typ relay raddr 172.20.92.19 rport 55222
a=candidate:3 1 UDP 16646911 206.39.49.27 50995 typ relay raddr 172.20.92.19 rport 49384
a=candidate:3 2 UDP 16646910 206.39.49.27 50590 typ relay raddr 172.20.92.19 rport 49385
a=candidate:4 1 tcp-act 7076863 206.39.49.27 55098 typ relay raddr 172.20.92.19 rport 55222
a=candidate:4 2 tcp-act 7076350 206.39.49.27 55098 typ relay raddr 172.20.92.19 rport 55222
a=candidate:5 1 tcp-act 1684797951 172.20.92.19 55222 typ srflx raddr 172.20.92.19 rport 55222
a=candidate:5 2 tcp-act 1684797438 172.20.92.19 55222 typ srflx raddr 172.20.92.19 rport 55222
a=label:main-audio
a=cryptoscale:1 server AES_CM_128_HMAC_SHA1_80 inline:xm07hyxUZHSRzAboQu1SUcPiVKeNnnn7SSlwn7uQ|2^31|1:1
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:Ar589pC7/8zcuL3tYiu4Fb3qfkPXHDjmZAR7bk0+|2^31|1:1
a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:+uoDPtwND8TKME9GYs0UP+4+ZjUjpQl9UHqsYPSm|2^31
a=rtpmap:9 g722/8000
a=rtpmap:111 SIREN/16000
a=fmtp:111 bitrate=16000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 RED/8000
a=fmtp:97 red/8000
a=rtpmap:101 telephone-event/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=ptime:20
--Q67grouN1CqDOUFPTYYKt9IulRQBQgx6--
$$end_record

Es importante notar que esta secuencia de pasos se ejecuta cuidadosamente. Si el cliente de Dmartz@contoso.com no se puede unir al servidor de conferencias, el proceso de escalar falla y la llamada punto a punto continua.

La gráfica del flujo de llamada es como sigue:

image

Durante la llamadas, los usuarios de teléfonos Lync que se encuentran hablando no perciben ninguna interrupción en el audio durante la construcción de la conferencia debido a que ambos se conectan al MCU de Audio y Video (con el flujo de audio inactivo) antes de terminar la llamada actual.