Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Configurar

Diagrama de la red

Configuraciones

Verificación

Resolución de problemas

Introducción

Este documento describe los pasos para configurar y resolver problemas de integración de Cisco Meeting Server (CMS) con Next Generation Streamer y Uploader. El optimizador de última generación se presentó desde la versión 3.0 de CMS y se basa en el protocolo de inicio de sesión (SIP).

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- CMS Callbridge(s) Versión 3.0 o posterior con licencia de grabación/transmisión. (una licencia de grabación permitirá una llamada de streaming)

- Vbrick Distributed Media Engine (DME) (se utiliza para publicar la secuencia en directo desde el servicio CMS Streaming)

- Vbrick Rev (opcional: solo se requiere si Live Streaming necesita compartirse fuera de la red interna o multidifusión

- El directorio Network File System (NFS) es necesario y se puede configurar en Windows Server o Linux.

- Para el servidor de Windows, siga los pasos para implementar el sistema de archivos de red (NFS) en Windows

- Para Linux, siga los pasos para implementar el sistema de archivos de red en Linux

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- CMS 3.2 y superiores con licencia 'Recorder' y/o 'Streamer'. (la licencia del grabador también le permitirá transmitir)

- Motor de medios distribuidos (DME) 3.15.0 Rhel7 de VBrick

- Vbrick Rev (Cargador se utiliza con el servidor vBrick Rev. No se requiere la importación manual de grabaciones)

- Windows Server 2012 R2 con NFS

Antecedentes

CMS versión 2.1 y posteriores introdujeron compatibilidad para transmisión en directo con CMS Streaming mediante el protocolo de mensajería en tiempo real (RTMP) estándar. En CMS 3.0, se introdujo Next Generation Streamer, que es un componente basado en SIP. La versión anterior a la 3.0 usaba Extensible Messaging and Presence Protocol (XMPP) . La versión 3.1 y posterior de CMS admiten el protocolo RTMPS y, por lo tanto, la comunicación entre el componente CMS Streaming y el servidor externo se puede cifrar. Esto permite que la secuencia de CMS se integre con cualquier plataforma de transmisión que soporte RTMP(S) (Youtube, Facebook, Wowza, etc). Actualmente, el CMS Streamer se ha probado con Vbrick DME como servidor externo de streaming y es la plataforma recomendada para la integración.

La integración de streaming en directo (Webcast) con VBrick DME permite a los usuarios ver cualquier conferencia CMS transmitida en directo desde cualquier lugar de la red desde diferentes dispositivos. Además, cuando VBrick Rev se utiliza a lo largo de VBrick DME, esto amplía esta capacidad de visualización desde fuera de la red interna para cada usuario autorizado de VBrick Rev.Además, el componente CMS Uploader simplifica el flujo de trabajo para cargar grabaciones de Meeting Server en el administrador de contenido de vídeo, Vbrick, desde un NFS configurado conectado a un servidor de reuniones. No se requiere la importación manual de grabaciones. Una vez que se configura y habilita el componente Uploader, las grabaciones se envían desde NFS a Vbrick.

Streamer

The information in this document was created from the devices in a specific lab environment. Todos los dispositivos utilizados aquí comenzaron con configuraciones despejadas (predeterminadas). If your network is live, make sure that you understand the potential impact of any command.

Cargador

El componente Cargador se puede instalar en el mismo servidor que el componente Grabadora o en un servidor independiente. Si se instala en el mismo servidor que la grabadora, agregue un par de vCPU para que la utilice. Si se ejecuta en un servidor diferente, utilice la misma especificación de servidor que para la grabadora: VM dedicada con un mínimo de 4 núcleos físicos y 4 GB de RAM.

El servidor de reuniones que ejecuta el cargador necesitará permisos de lectura y escritura para el uso compartido de archivos de red (NFS). El Cargador debe ejecutarse en un servidor de reuniones diferente y no en el Call Bridge que aloja las conferencias.

Configurar

Diagrama de la red

Existen varios escenarios compatibles para implementar Streamer y Uploader con CMS, como: callbridge único con varios servidores de transmisión, un clúster callbridge con un único servidor de transmisión y un clúster callbridge con varios servidores de transmisión. Este documento se basa en una implementación básica con un clúster de callbridge que se conecta a un único servidor optimizador, Cargador, ya que todos los pasos de configuración con este escenario se aplican también a otros escenarios.

Como se muestra en la imagen anterior

Clúster de CallBridge de CMS

Optimizador/Grabador CMS

Cargador de CMS

DME de VBrick para transmisión

VBrick Rev para streaming

Configuraciones

Streamer

Se supone que callbridge ya está configurando y aceptando llamadas.

Paso 1. Certificados

Los nuevos componentes de streaming no requieren escuchar las conexiones https, sin embargo, escucha las conexiones SIP , el servidor de streaming debe tener un certificado válido para la comunicación TLS.

streamer> pki csr tac CN:.*.tptac9.com subjectAltName:streamer.tptac9.com

..............

......

Created key file tac.key and CSR tac.csr

CSR file tac.csr ready for download via SFTP

Consiga el certificado firmado por la autoridad de certificación local (CA). Cargue el certificado generado mediante el protocolo de transferencia de archivos seguro (SFTP) en el servidor Streamer. Activado para confirmar los certificados cargados correctamente.

En este documento, los certificados comodín se utilizan para simplificar. Utilice la guía del certificado como referencia.

https://www.cisco.com/c/dam/en/us/td/docs/conferencing/ciscoMeetingServer/Deployment_Guide/Version-3-1/Certificate-Guidelines-for-all-Deployments-3-1.pdf

streamer> pki list

User supplied certificates and keys:

tac.key

tac.cer

ROOTCA.cer

example.key

example.csr

tac.csr

Paso 2. Configuración de MMP/SSH

- Configure la interfaz de escucha del optimizador y los puertos TCP y TLS SIP para escuchar mediante el comando MMP

streaming sip hear <interface> <tcp-port|none> <tls-port|none>

streer> streaming sip escuche un 7000 7001

Para utilizar sólo la conexión SIP de TLS. Configure la conexión SIP TCP como "none" el comando que aparece a continuación

streer> streaming sip escucha nada 7001

- Aplicar certificados para el servidor de streaming

streer> streer sip certs tac.key tac.cer

- Seleccione la calidad para la transmisión

streer> simplificar la resolución 720p del sip

- Habilitar la agilización

optimier> enable

- Opcionalmente, si TLS está configurado, puede realizar la verificación de TLS para SIP en el optimizador

streer> tls sip trust ROOTCA.cer

Nota: Para que la conexión TLS sea segura, recomendamos habilitar la verificación TLS.

streer> tls sip verify enable

- Verificar que la información de configuración introducida arriba es correcta

streamer> streamer

Enabled                 : false

SIP interfaces          : tcp a:7000, tls a:7001

SIP key file            : tac.key

SIP certificate file    : tac.cer

SIP CA Bundle file      : none

SIP Resolution          : 720p

SIP traffic trace       : Disabled

Call Limit              : none

- Habilite el optimizador mediante el comando: "activar". Todos los mensajes deben mostrar "ÉXITO" como se indica a continuación

streamer> streamer enable

SUCCESS: Key and certificate pair match

SUCCESS: Streamer enabled

Paso 3. configuración de API

Esta configuración se realiza en el CMS que aloja CallBridge. A continuación, API en la interfaz Webadmin de CMS. Cualquier cliente REST como Postman, Poster también se puede utilizar para realizar esto.

Una vez habilitada la nueva secuencia SIP, se puede configurar y utilizar en el Call Bridge en /callProfiles para sipStreamerUri.

Para utilizar la API en el servidor CMS. Vaya a Webadmin > Configuration > API

- Crear perfil de llamada

- Configure sipStreamuri=demo@streamer.com & StreamingMode= Automático/Manual

The user part of the configured "sipStreamuri" (i.e. the part before '@' symbol) has no significant meaning, and for the new SIP streamer component, although required, it can usually be anything, e.g. "streamer@streamer.com".The important part of the URI is the "domain" part.

Configurar sipStreamuri=demo@streamer.com & StreamingMode= Automático/Manual

- Agregue el callProfile de simplificación creado arriba a /system/profiles. Esta es una configuración global y el "sipStreamerUri" configurado se utilizará para la operación de streaming.

Agregar el callProfile al sistema/perfiles

- Agregue el VBrick 'streamURL' a los espacios utilizados para la transmisión. Como referencia, se creó un espacio denominado "Stream" mediante la interfaz web de CMS

Espacio utilizado para streaming

- Modifique el espacio para agregar "StreamURL". El 'streamURL' con el siguiente formato:  rtmp://<VBrickBroadcastUsername>:<VBrickBroadcastPassword>@<VBrick IP o FQDN>/live/NameoftheStream. En el ejemplo lo configuré como "rtmp://broadcast:broadcast@10.106.81.40/live/SpaceStream77"

Paso 4. Crear "reglas salientes"

Configure, un identificador URI personalizado que se asigna a una regla de plan de marcación saliente (el dominio puede ser cualquier cosa, por ejemplo "streer.com"). Configure una regla OutboundDialPlan para que coincida con el dominio utilizado en StreerUri para rutear.

Crear reglas salientes

Como se muestra en la imagen anterior, para la simplificación de SIP, si no se utilizan los puertos predeterminados para SIP (5060,5061), es obligatorio especificar puertos en la configuración del optimizador e incluir el siguiente número de puerto para conectarse al proxy sip que se utilice cuando se configure la regla de plan de marcación saliente para el servicio.

streamer> streamer

Enabled                 : true

SIP interfaces          : tcp a:7000, tls a:7001

SIP key file            : tac.key

SIP certificate file    : tac.cer

SIP CA Bundle file      : none

SIP Resolution          : 720p

SIP traffic trace       : Disabled

Call Limit              : none

Cargador

- Especifique el NFS y el directorio donde se almacenarán las grabaciones que supervisará el Cargador

streer> cargador nfs 192.168.15.38:Grabación

- Especifique el servidor de reuniones que el cargador solicitará para obtener información de grabación

streer> cargador cms host Join.mextp.local

- Especifique el puerto de administración web en el servidor de reuniones que ejecuta el puente de llamada

streer> cargador cms port 445

- Especifique el usuario con acceso API en el servidor de reuniones que ejecuta el puente de llamadas

streer> cargader cms user apiadmin

streer> Carader cms password

Introduzca la contraseña:

- Agregue el paquete de certificados de CMS al almacén de confianza de Meeting Server

Cree un paquete de certificados (crt-bundle) que contenga una copia del certificado de la CA raíz y todos los certificados intermedios de la cadena para el administrador web en el servidor de reuniones que ejecuta el puente de llamadas.

streer> cargar cms trust ROOTCA.cer

- Configure el host Vbrick y el puerto al que se conectará el Cargador

streer> rev host ciscotac.rev-na.demo.vbrick.com

streer> cargador puerto rev 443

Nota: El puerto predeterminado es 443 a menos que se especifique otra

- Agregue un usuario de Vbrick Rev que tenga permiso API para cargar grabaciones de vídeo

trigger rev user tacuser

streer> cargader rev password

Introduzca la contraseña:

- Agregue el paquete de certificados al almacén de confianza Vbrick Rev

Cree un paquete de certificados (crt-bundle) que contenga una copia del certificado de la CA raíz y todos los certificados intermedios de la cadena para el servidor Vbrick Rev

streer> cargar rev trust vbrickbundle.cer

- Verifique la configuración del cargador y habilite el cargador

streamer> uploader

Enabled                          : false

NFS hostname                     : 192.168.15.38

NFS directory                    : Recording

CMS host                         : join.mextp.local

CMS port                         : 445

CMS user                         : apiadmin

CMS trust bundle                 : ROOTCA.cer

Vbrick Rev hostname              : ciscotac.rev-na.demo.vbrick.com

Vbrick Rev port                  : 443

Vbrick Rev username              : tacuser

Vbrick Rev trust bundle          : brick.cer

View access                      : Public

cospace_member_access            : edit

recording_owned_by_cospace_owner : false

fallback_owner                   : admin

comments_enabled                 : true

ratings_enabled                  : true

downloads_enabled                : true

active_upon_upload               : true

delete_after_upload              : false

Si la configuración es correcta, utilice el comando upload enable para habilitar el componente Uploader. Todos los mensajes deben mostrar "ÉXITO" como se muestra a continuación.

streamer> uploader enable

SUCCESS: uploader enabled

Verificación

Streamer

Funcionamiento de streaming y conexión de una llamada sip streaming

Cargador

Puede ver el registro de un evento exitoso en syslog, seguido de la carga.

Jun 17 22:24:41.867 user.info cms-02 Uploader[1]: scanning directory: /mnt/recordings/forwardedCalls

Jun 17 22:24:41.867 user.info cms-02 Uploader[1]: scanning directory: /mnt/recordings/spaces

Jun 17 22:24:41.869 user.info cms-02 Uploader[1]: checking the status of /mnt/recordings/spaces/8a7076e2-6db6-47e9-98ee-3bd063e32559/20210618032309+0000_vid-id=c4605aaf-dc49-4cd7-9174-c46185ba1983@vbrick.mp4

Jun 17 22:24:41.870 user.info cms-02 Uploader[1]: Getting from: https://ciscotac.rev-na.demo.vbrick.com:443/api/v1/videos/c4605aaf-dc49-4cd7-9174-c46185ba1983/status

Jun 17 22:24:42.035 user.info cms-02 Uploader[1]: Received vbrick response status code: 200

Jun 17 22:24:42.035 user.info cms-02 Uploader[1]: vbrick response: main.vbrickStatusResp{Status:"Ready"}

Jun 17 22:24:42.035 user.info cms-02 Uploader[1]: file 20210618032309+0000_vid-id=c4605aaf-dc49-4cd7-9174-c46185ba1983@vbrick.mp4 vid c4605aaf-dc49-4cd7-9174-c46185ba1983 status Ready

Jun 17 22:24:42.035 user.info cms-02 Uploader[1]: Getting from: https://ciscotac.rev-na.demo.vbrick.com:443/api/v1/videos/c4605aaf-dc49-4cd7-9174-c46185ba1983/playback-url

Jun 17 22:24:42.200 user.info cms-02 Uploader[1]: Received vbrick response 200

Resolución de problemas

Streamer

1. Sin licencia

Simplifique la licencia de "registrador" requerida en el servidor que tenga el componente callbridge. Si eso no existe o no hay una licencia suficiente, los errores como se muestra a continuación se verán en los registros de eventos.

Asegúrese de agregar la licencia necesaria. El estado de la licencia se puede comprobar en la CLI mediante el comando "license"

cms1> license

Feature: callbridge status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: turn status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: webbridge status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: customizations status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: local_license_mode status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: recording status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: personal status: Activated expiry: 2023-Apr-28 (690 days remain)

Feature: shared status: Activated expiry: 2023-Apr-28 (690 days remain)

2.Puerto TLS

· Si se ha configurado el puerto TLS y no se aplican certificados. Configurar certificados para que la secuencia de comandos utilice TLS

· Si el certificado no está disponible. Configure sólo el puerto TCP

streamer> streamer sip listen a 7000 7001

streamer> streamer enable

FAILURE: TLS port set but no certificates configured

FAILURE: Streamer configuration not complete

Ahora tiene 2 opciones, ya sea para quitar el puerto TLS o para agregar SIP TLS Trust y certificado Streamer

Cisco recomienda que el puerto TLS esté habilitado.

3. El rango de RTMP no está configurado correctamente

Verá un error en los registros

daemon.info streamer streamer-sip[2280]:  144500.368 : INFO    : call 3: retrieved stream URL from RTCP: "rtmp://broadcast:broadcast@10.106.81.40/test"

daemon.info streamer streamer-sip[2280]:  144500.368 : INFO    : call 3: parsing rtmp://broadcast:broadcast@10.106.81.40/test

daemon.info streamer streamer-sip[2280]:  144500.368 : INFO    : call 3: RTMP stream="test"

daemon.info streamer streamer-sip[2280]:  144500.368 : INFO    : call 3: RTMP server="rtmp://10.106.81.40:1935/test"

daemon.info streamer streamer-sip[2280]:  144500.370 : INFO    : call 3: Connected to RTMP server

daemon.info streamer streamer-sip[2280]:  144500.370 : INFO    : call 3: C2 pending - len 1536

daemon.info streamer streamer-sip[2280]:  144500.370 :         : call 3: snd: create new chunk stream 2

daemon.info streamer streamer-sip[2280]:  144500.370 :         : call 3: snd: create new chunk stream 3

daemon.info streamer streamer-sip[2280]:  144500.370 : INFO    : call 3: RTMP sent chunk size of 4096 and connect message

daemon.info streamer streamer-sip[2280]:  144500.410 : ERROR   : call 3: connection : far end closed connection 5

Compruebe el procedimiento en la configuración de RTMP y configure correctamente la URL de RTMP con el formato "rtmp://<VBrickBroadcastUsername>:<VBrickBroadcastPassword>@<VBrick IP o FQDN>/live/NameoftheStream"

4.Problemas relacionados con el enrutamiento de llamadas

Debido a que CMS Streamer es un cliente basado en SIP y como se ha mencionado anteriormente, es necesario que el ruteo esté en su lugar. Esto podría provocar situaciones en las que las llamadas podrían fallar. Considere este ejemplo, donde CMS Callbridge envió una llamada saliente, pero falló con el siguiente error 'timeout de transacción - no hay respuestas provisionales enviando INVITE'

2021-06-28  17:37:02.412  Info     user 'guest300535034' starting streaming (space 'test')

2021-06-28  17:37:02.413  Info     API call leg bc0917df-589c-4628-887d-79481d322fed in call 63f0b174-831e-4a12-b4ee-27186d4162af (API call 00286960-9af9-4d5d-9ca7-20dd40425292)

2021-06-28  17:37:02.413  Info     call 44: outgoing SIP call to "demo@streamer.com" from space "test"

2021-06-28  17:37:02.413  Info     call 44: configured - API call leg bc0917df-589c-4628-887d-79481d322fed with SIP call ID "7d37a80e-7996-4e8d-aa87-77c9d4729cec"

2021-06-28  17:37:04.482  Info     call 42: receiver report 1 interval for rx video 0 = 6113ms (period 6108ms) 00000000

2021-06-28  17:37:22.074  Info     call 44: falling back to unencrypted control connection...

2021-06-28  17:37:54.075  Info     call 44: ending; local SIP teardown with reason 7 (transaction timeout - no provisional responses sending INVITE) - not connected after 0:52

2021-06-28  17:37:54.075  Info     call 44: destroying API call leg bc0917df-589c-4628-887d-79481d322fed

2021-06-28  17:37:54.076  Info     streaming call leg for space 'test' disconnected with reason 7 (transaction timeout - no provisional responses sending INVITE)

Revise la configuración de llamadas salientes en los servidores CMS Callbridge para validar la ubicación a la que se envía y si se ha configurado correctamente. Compruebe también si el perfil de llamada está configurado con el URI de la secuencia correcta y lo mismo está asociado con Cospace.

Cargador

1. Los detalles de Vbrick no son correctos.

Puede ver un error en el registro del cargador

Jun 27 11:29:27.864 user.info streamer Uploader[1]: Received vbrick response 500

Jun 27 11:29:27.864 user.info streamer Uploader[1]: posting to: https://sales.vbrick.com:443/api/v1/user/login

Jun 27 11:29:47.870 user.info streamer Uploader[1]: Received vbrick response 500

Jun 27 11:29:47.870 user.err streamer Uploader[1]: Failed to initialise Vbrick Client

Jun 27 11:29:47.870 user.err streamer Uploader[1]: vbrick returned status code: 500

Asegúrese de haber configurado las credenciales y el puerto correctos para el servidor vbrick.  Asegúrese también de que Uploader pueda alcanzar el puerto CMS callbridge webadmin.