Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Informações de Apoio

Configurar

Diagrama de Rede

Configurações

Verificar

Troubleshooting

Introduction

Este documento descreve as etapas para configurar e solucionar problemas de integração do Cisco Meeting Server (CMS) com o Next Generation Streamer e o Uploader. O Streamer de próxima geração foi apresentado a partir do CMS versão 3.0 e é baseado no Session Initiation Protocol (SIP).

Prerequisites

Requirements

A Cisco recomenda que você tenha conhecimento destes tópicos:

- CMS Callbridge(s) versão 3.0 ou posterior com licença(s) de gravação/transmissão. (uma licença de gravação permitirá uma chamada de transmissão)

- Vbrick Distributed Media Engine (DME) (usado para publicar o fluxo ao vivo do serviço de transmissão CMS)

- Vbrick Rev (opcional: necessário somente se o Live Streaming precisar ser compartilhado fora da rede interna ou multicast

- O diretório Network File System (NFS) é necessário e pode ser configurado no Windows Server ou Linux.

- Para o servidor Windows, siga as etapas para Implantar o Network File System (NFS) no Windows

- Para Linux, siga as etapas para implementar o sistema de arquivos de rede no Linux

Componentes Utilizados

As informações neste documento são baseadas nestas versões de software e hardware:

- CMS 3.2 e superior com 'Gravador' e/ou licença(s) 'Streamer'. (a licença do gravador também permite que você faça stream)

- VBrick Distributed Media Engine (DME) 3.15.0 Rhel7

- Vbrick Rev (O carregador é usado com o servidor vBrick Rev. Nenhuma importação manual de gravações é necessária)

- Windows Server 2012 R2 com NFS

Informações de Apoio

O CMS Versão 2.1 e posterior introduziu suporte para transmissão ao vivo com o carregador CMS usando o protocolo de mensagens em tempo real (RTMP - Real-Time Messaging Protocol) padrão. No CMS 3.0, o Next Generation Streamer foi introduzido, que é um componente baseado em SIP. A versão anterior à 3.0 usava Extensible Messaging and Presence Protocol (XMPP) . O CMS versão 3.1 e superior suportam o protocolo RTMPS e, portanto, a comunicação entre o componente de fluxo do CMS e o servidor externo pode ser criptografada. Isso permite que o streaming CMS se integre a qualquer plataforma de streaming que suporte RTMP(S) (Youtube, Facebook, Wowza, etc.). Atualmente, o CMS Streamer foi testado com Vbrick DME como um servidor de transmissão externa e é a plataforma recomendada para integração.

A integração do Live Streaming (Webcast) com o VBrick DME permite que os usuários assistam a qualquer conferência CMS ao vivo em qualquer lugar dentro da rede, a partir de diferentes dispositivos. Além disso, quando o VBrick Rev é usado ao longo do VBrick DME, isso estende essa capacidade de visualização de fora da rede interna para cada usuário autorizado do VBrick Rev. Além disso, o componente Uploader do CMS simplifica o fluxo de trabalho para carregar gravações do Meeting Server para o gerenciador de conteúdo de vídeo, Vbrick, de um NFS configurado conectado a um Meeting Server. Nenhuma importação manual de gravações é necessária. Quando o componente Carregador é configurado e ativado, as gravações são enviadas do NFS para Vbrick.

Streamer

The information in this document was created from the devices in a specific lab environment. Todos os dispositivos usados aqui começaram com configurações limpas (padrão). If your network is live, make sure that you understand the potential impact of any command.

Carregador

O componente Carregador pode ser instalado no mesmo servidor que o componente Gravador ou em um servidor separado. Se estiver instalado no mesmo servidor que o Gravador, adicione algumas vCPUs para ele usar. Se executado em um servidor diferente, use a mesma especificação de servidor do Gravador: VM dedicada com no mínimo 4 núcleos físicos e 4 GB de RAM.

O Servidor de Reunião executando o Uploader exigirá permissões de Leitura e Gravação para o NFS (Network File Sharing, compartilhamento de arquivos de rede). O carregador deve ser executado em um servidor de reunião diferente e não em Call Bridge que hospeda as conferências.

Configurar

Diagrama de Rede

Há vários cenários compatíveis para implantar o Streamer e o Uploader com o CMS, como: um único callbridge com vários servidores de streaming, um cluster callbridge com um único servidor de streaming e um cluster callbridge com vários servidores de streaming. Este documento baseia-se em uma implantação básica com um cluster de callbridge conectando-se a um único servidor de carregador, já que todas as etapas de configuração com esse cenário também se aplicam a outros cenários.

Como mostrado na imagem acima

Cluster CMS CallBridge

Streamer/Recorder do CMS

Carregador CMS

VBrick DME para transmissão

VBrick Rev para transmissão

Configurações

Streamer

Supõe-se que a callbridge já está configurada e aceitando chamadas.

Etapa 1. Certificados

Os novos componentes do navegador não exigem a escuta de conexões https, no entanto, ele ouve as conexões SIP , o servidor do navegador deve ter um certificado válido para a comunicação 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

Obter o certificado assinado da Autoridade de Certificação (AC) local. Carregue o certificado de geração usando o protocolo SFTP para o servidor Streamer. Verificado se os certificados foram carregados com êxito.

Neste documento, os certificados curinga são usados para simplificar. Use o guia de certificado para referência.

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

Etapa 2. Configuração de MMP/SSH

- Configure a interface de escuta do navegador e as portas TCP e TLS SIP para escutar usando o comando MMP

stream sip Listen <interface> <tcp-port|none> <tls-port|none>

Streader> Streader SIP Listen a 7000 7001

Para usar somente a conexão sip TLS. Configure a conexão TCP sip como "none" o comando está abaixo

Streader> Streader SIP Ouça um none 7001

- Aplicar certificados para o servidor de transmissão

stream> stream sip certs tac.key tac.cer

- Selecione a qualidade para transmissão

stream> resolução de sip mais simples 720p

- Habilitar streaming

Streer> Streader Habilitar

- Opcionalmente, se TLS estiver configurado, você poderá executar a verificação TLS para SIP no navegador

stream> tls sip trust ROOTCA.cer

Observação: para que a conexão TLS seja segura, recomendamos habilitar a verificação TLS.

stream> tls sip verify enable

- Verifique se as informações de configuração inseridas acima estão corretas

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

- Ative o navegador usando o comando: "habilitar dinamizador". Todas as mensagens devem mostrar "SUCESSO" como abaixo

streamer> streamer enable

SUCCESS: Key and certificate pair match

SUCCESS: Streamer enabled

Etapa 3. configuração de API

Essa configuração é executada no CMS que hospeda o CallBridge. Abaixo, API na interface Webadmin do CMS. Qualquer cliente REST como Postman, Poster também pode ser usado para fazer isso.

Quando o novo streaming SIP estiver ativado, ele poderá ser configurado e usado na Call Bridge em /callProfiles para sipStreamerUri.

Para usar API no servidor CMS. Ir Para Webadmin > Configuração > API

- Criar perfil de chamada

- Configurar sipStreamuri=demo@streamer.com e 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 e StreamingMode= Automático/Manual

- Adicione o perfil de chamada do navegador criado acima ao /system/files. Esta é uma configuração global e o "sipStreamerUri" configurado será usado para operação de simplificar.

Adicionar callProfile ao sistema/perfis

- Adicione o VBrick 'streamURL' aos espaços usados para transmissão. Como referência, um espaço chamado 'Stream' foi criado usando a interface da Web do CMS

Espaço usado para transmissão

- Modifique o espaço para adicionar "StreamURL". O 'streamURL' no seguinte formato:  rtmp://<VBrickBroadcastUsername>:<VBrickBroadcastPassword>@<VBrick IP ou FQDN>/live/NameoftheStream. No exemplo, eu o configurei como "rtmp://broadcast:broadcast@10.106.81.40/live/SpaceStream77"

Etapa 4. Criar "Regras de Saída"

Configure, uma URI personalizada que mapeia para uma regra outboundDialPlan (o domínio pode ser qualquer coisa, por exemplo, "stream.com"). Configure uma regra outboundDialPlan para corresponder ao domínio usado em StreerUri para rotear.

Criar regras de saída

Como mostrado na imagem acima, para o Stream SIP, se portas padrão para SIP (5060,5061) não forem usadas, então é obrigatório especificar portas na configuração do Stream e incluir o seguinte número de porta para conectar ao campo "proxy sip para usar" quando outboundDialPlanRule está configurado para o serviço.

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

Carregador

- Especifique o NFS e o diretório onde as gravações serão armazenadas que o carregador monitorará

stream> uploader nfs 192.168.15.38:Gravação

- Especifique o Servidor de Reunião que o Carregador consultará para obter informações de gravação

stream> uploader cms host join.mextp.local

- Especifique a porta do Web Admin no Servidor de Reunião executando a Call Bridge

stream> uploader cms port 445

- Especifique o usuário com acesso à API no Meeting Server que executa a Call Bridge

carregador> carregador cms user apiadmin

stream> uploader cms password

Insira a senha:

- Adicione o pacote de certificados do CMS ao repositório confiável do Meeting Server

Crie um pacote de certificados (crt-bundle) contendo uma cópia do certificado da AC raiz e todos os certificados intermediários na cadeia do Administrador da Web no Servidor de Reunião executando a Call Bridge.

stream> carregador cms trust ROOTCA.cer

- Configure o host Vbrick e a porta à qual o carregador se conectará

Streader> carregador rev host ciscotac.rev-na.demo.vbrick.com

Streader> uploader rev port 443

Observação: o padrão da porta é 443, a menos que especificado de outra forma

- Adicionar um usuário Vbrick Rev que tem permissão de API para carregar gravações de vídeo

stream> uploader rev user tacuser

stream> uploader rev password

Insira a senha:

- Adicione o pacote de certificado ao repositório confiável do Vbrick Rev

Crie um pacote de certificados (crt-bundle) contendo uma cópia do certificado da AC raiz e todos os certificados intermediários na cadeia do servidor Vbrick Rev

stream> uploader rev trust vbrickbundle.cer

- Verificar a configuração do carregador e ativar o carregador

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

Se a configuração estiver correta, use o comando "uploader enable" para ativar o componente Uploader. Todas as mensagens devem mostrar "SUCESSO" como mostrado abaixo.

streamer> uploader enable

SUCCESS: uploader enabled

Verificar

Streamer

Transmissão em fluxo e conexão de uma chamada em fluxo sip

Carregador

Você pode ver o log de um evento bem-sucedido no syslog após o uploader.

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

Troubleshooting

Streamer

1. Sem licença

O Streamer exigia uma licença de "gravador" no servidor com componente callbridge. Se isso não estiver presente ou se a licença for insuficiente, os erros como mostrado abaixo serão vistos nos registros de eventos.

Certifique-se de adicionar a licença necessária. O status da licença pode ser verificado na CLI usando o 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.Porta TLS

Se a porta TLS estiver configurada e nenhum certificado for aplicado. Configurar certificados para streaming para usar TLS

Se o certificado não estiver disponível. Configurar somente a porta TCP

streamer> streamer sip listen a 7000 7001

streamer> streamer enable

FAILURE: TLS port set but no certificates configured

FAILURE: Streamer configuration not complete

Agora você tem 2 opções para remover a porta TLS ou para adicionar o certificado SIP TLS Trust e Streamer

A Cisco recomenda ter a porta TLS habilitada.

3. Sream RTMP não configurado corretamente

Você verá um erro nos logs

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

Verifique o procedimento na configuração do navegador e configure corretamente a URL RTMP no formato "rtmp://<VBrickBroadcastUsername>:<VBrickBroadcastPassword>@<VBrick IP ou FQDN>/live/NameoftheStream"

4.Problemas relacionados ao roteamento de chamadas

Como o CMS Streader é um cliente baseado em SIP e, conforme discutido anteriormente, ele exige que o roteamento esteja estabelecido. Isso pode causar situações em que as chamadas podem falhar. Considere este exemplo, em que o CMS Callbridge enviou uma chamada de saída, mas falhou com o seguinte 'timeout de transação - nenhuma resposta provisória enviando erro de CONVITE'

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 as configurações de chamadas de saída nos servidores CMS Callbridge para validar o local para o qual está sendo enviado e se está sendo definido corretamente. Verifique também se o perfil de chamada está configurado com URI de fluxo correto e se o mesmo está associado ao Cospace.

Carregador

1. Os detalhes de Vbrick não estão corretos.

Você pode ver um erro no log do carregador

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

Certifique-se de ter configurado as credenciais e a porta corretas para o servidor vbrick.  Verifique também se o Uploader deve conseguir acessar a porta do webadmin do CMS callbridge.