O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve como configurar um cenário de laboratório de Digital Video Broadcasting - Cable (DVB-C) com o kit de ferramentas TSDuck, VLC e cBR-8.
A Cisco recomenda que você tenha conhecimento destes tópicos:
Este documento não se restringe a versões de software e hardware específicas.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
O cenário apresentado neste documento, ilustrado na figura abaixo, envolve o cBR-8 como iCMTS, uma máquina virtual Linux (VM) usada como streaming de vídeo com VLC e uma VM Linux com TSDuck. O sistema de criptografia DVB-Symulcrypt é recriado, onde o cBR8 age como Sincronizador de Simulptografia (SCS), e a VM TSDuck desempenha a função de Gerador de Mensagens de Controle de Direitos (ECMG), pois seria um servidor Nagra.

A VM que atua como um otimizador simplesmente envia um videoclipe armazenado localmente, que faz loops para simular um fluxo contínuo. O cBR-8 tem uma sessão baseada em tabela (estática) configurada para esta simulação, e não há um Set-Top Box (STB) ou modem que solicite o fluxo de VoD, ele é iniciado manualmente no stream.
Quando o fluxo é recebido, o cBR-8 tenta se comunicar com o servidor ECMG configurado, para criptografar o fluxo de vídeo e troca as mensagens descritas no fluxo de chamada na figura acima. Essas mensagens são trocadas claramente com TSDuck, que é bom para analisar o conteúdo das mensagens e depurações. Além disso, TSDuck responde a todas as solicitações enviadas, sem verificar a exatidão dos parâmetros como ca-system-id, access-Criteria, etc.
Se o cBR-8 não conseguir se comunicar com o ECMG, o fluxo é enviado em branco devido à falha na limpeza da instrução.
Em um cenário real, há a necessidade de enviar aos STBs uma mensagem de gerenciamento de direitos (EMM), que autoriza o receptor a descriptografar uma palavra de controle (CW) específica. Os EMMs podem ser enviados através do cBR-8 ou em um canal separado para os receptores, e o TSDuck também tem a função de simular o Gerador de EMM (EMMG)
Aqui está um exemplo de como configurar sessões de vídeo DVB em cBR-8. Os critérios de acesso são normalmente fornecidos pelo Sistema de Acesso Condicional (CAS). Nesse caso de simulação, você pode gerar um número hexadecimal aleatório, bem como para o ca-system-id.
O virtual-edge-input-ip é o destino IP do fluxo, que, nesse caso, não é um destino real, mas deve ser o mesmo IP usado para enviar o fluxo de vídeo do stream.
cable video
encryption
linecard 1/0 ca-system dvb scrambler dvb-csa
dvb
ecmg NAGRA_ELK id 1
mode tier-based
type nagra
ca-system-id 2775 3
auto-channel-id
ecm-pid-source auto 48 8190
connection id 1 priority 1 10.48.88.12 3337
overrule
min-cp-duration 300000
tier-based
ecmg name NAGRA_ELK access-criteria c972bfd7701e6d28069ae85f5d701d63ac1aec4a
fail-to-clear
enable
service-distribution-group SDG-ACDC-LAB-TEST1 id 1
onid 100
rf-port integrated-cable 1/0/3
virtual-carrier-group VCG-ACDC-LAB-TEST1 id 1
encrypt
service-type narrowcast
rf-channel 32-35 tsid 42496-42499 output-port-number 1-4
bind-vcg
vcg VCG-ACDC-LAB-TEST1 sdg SDG-ACDC-LAB-TEST1
logical-edge-device LED-ACDC-LAB-TEST1 id 1
protocol table-based
virtual-edge-input-ip 10.10.10.10 input-port-number 1
vcg VCG-ACDC-LAB-TEST1
active
table-based
vcg VCG-ACDC-LAB-TEST1
rf-channel 32
session vod1 input-port 1 start-udp-port 65 num-sessions-per-qam 1 processing-type remap start-program 1
!
controller Integrated-Cable 1/0/3
max-carrier 44
base-channel-power 40
rf-chan 32 35
type VIDEO
frequency 850000000
rf-output NORMAL
power-adjust 0.0
qam-profile 3
Neste dispositivo, você pode simplesmente instalar o VLC a partir da linha de comando e iniciar um fluxo de um arquivo de vídeo armazenado localmente.
Você pode consultar a Documentação oficial.
Uma vez instalado o VLC, a linha de comando abaixo mostra como iniciar um fluxo do arquivo chamado cisco-tac-lab.mov, especificar o IP de destino e a porta, o tsid e a porta no cBR-8 e fazer um loop do vídeo para simular um fluxo contínuo (—repita):
cvlc cisco-tac-lab.mov — sout '#duplicata{dst=udp{mux=ts,dst=10.10.10:65,tsid=42496,port=65}}' — repita &
Faça o download do TSDuck do site oficial: TSDuck e consulte a documentação do guia do usuário para instalar e encontrar informações sobre os recursos.
Quando o TSDuck é instalado, você pode executar o recurso ECMG em uma porta específica (-p), com opção verbosa (-v) e o nível desejado de depurações (-d#).
Exemplo:
sudo tsecmg -p 3337 -v -d7
Depois de configurar a sessão de vídeo no cBR-8, você pode verificar se a sessão foi criada, pois essa é uma configuração baseada em tabela, a sessão está sempre presente e não mostra nenhum fluxo de entrada:
acdc-cbr8-2#show cable video session all Session Output Frequency Streaming Sess Session Source UDP Output Input Output Input Output Encrypt Encrypt Low PMV Session Id Port Hz Type Type Ucast Dest IP/Mcast IP (S,G) Port Program State State Bitrate Bitrate Type Status Lat NUM Name ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1048576 1 850000000 Remap UDP 10.10.10.10 65 1 OFF ON 0 0 DVB Pending N - vod1.1.0.1.32.65
Depois de iniciar o fluxo de vídeo, você poderá ver que ele é enviado em branco, conforme a instrução fail-to-clear no cBR-8 se o ECMG ainda não estiver ativo:
acdc-cbr8-2#show cable video sess logical-edge-device id 1 Session Output Frequency Streaming Sess Session Source UDP Output Input Output Input Output Encrypt Encrypt Low PMV Session Id Port Hz Type Type Ucast Dest IP/Mcast IP (S,G) Port Program State State Bitrate Bitrate Type Status Lat NUM Name ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1048576 1 850000000 Remap UDP 10.10.10.10 65 1 ACTIVE-PSI ON 15403951 15164562 DVB Clear N - vod1.1.0.1.32.65
Quando você inicia o ECMG também, você pode ver que a sessão de vídeo agora está criptografada:
acdc-cbr8-2#sh cable video sess logical-edge-device id 1 Session Output Frequency Streaming Sess Session Source UDP Output Input Output Input Output Encrypt Encrypt Low PMV Session Id Port Hz Type Type Ucast Dest IP/Mcast IP (S,G) Port Program State State Bitrate Bitrate Type Status Lat NUM Name ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1048576 1 850000000 Remap UDP 10.10.10.10 65 1 ACTIVE-PSI ON 15353613 15476997 DVB Encrypted N - vod1.1.0.1.32.65
A sessão criptografada em detalhes:
acdc-cbr8-2#sh cable video sess logical-edge-device id 1 session-id 1048576
Session Name : vod1.1.0.1.32.65
Session Id : 1048576
Creation Time : Thu Dec 6 14:12:54 2018
Output Port : 1
TSID : 42496
ONID : 100
Number of Sources : 1
Destination IP : 10.10.10.10
UDP Port : 65
Config Bitrate : not specified
Jitter : 100 ms
Processing Type : Remap
Stream Rate : VBR
Program Number : 1
Idle Timeout : 2000 msec
Init Timeout : 2000 msec
Off Timeout : 60 sec
Encryption Type : DVB
Encryption Status : Encrypted
Input Session Stats:
====================
State: ACTIVE-PSI, Uptime: 0 days 00:31:33
IP Packets: In 899927, RTP 0, Drop 0
TP Packets: In 6299489, PCR 6408, PSI 4424, Null 0
Unreference 2212, Discontinuity 0
Errors: Sync loss 0, CC error 795, PCR Jump 7,
Underflow 215, Overflow 4, Block 0
Bitrate: Measured 16483732 bps, PCR 17930489 bps
Output Session Stats:
=====================
State: ON, Uptime: 0 days 00:31:33
TP Packets: In 6297330, PCR 6395, PSI 4416,
Drop 12801, Forward 6280113, Insert 6029
Errors: Info Overrun 0, Info Error 0, Block 0, Overdue 54210,
Invalid Rate 0, Underflow 0, Overflow 0
Bitrate: Measured 16433824 bps
PAT Info:
=========
Version 26, TSID 8724, len 16, section 0/0
Program 1: PMT 32
Input PMT Info:
===============
Program 1, Version 28, PCR 100, Info len 0
PID 100: Type 27, Info len 6, (lang eng)
Output PMT Info:
================
Program 1, Version 5, PCR 49, Info len 6, (CA SYS-ID 10101, PID 79)
PID 49: Type 27, Info len 6, (lang eng)
Output PID Map:
===============
PID 32 -> 48
PID 100 -> 49
E o comando para mostrar o status da conexão ECMG:
acdc-cbr8-2#show cable video encryption dvb ecmg id 1 connection --------------------------------------------------------------------------------------------------------------------------------------------------- ECMG ECMG ECMG CA Sys CA Subsys PID Lower Upper Streams/ Open Streams/ Auto Chan Slot ECMG ECMG ID Name Type ID ID Source limit limit ECMG ECMG ID Connections Application --------------------------------------------------------------------------------------------------------------------------------------------------- 1 NAGRA_ELK nagra 0x2775 0x3 auto 48 8190 1 1 Enabled RP 1 Tier-Based ECMG Connections for ECMG ID = 1 ----------------------------------------------------------------- Conn Conn IP Port Channel Conn Open -ID Priority Address Number ID Status Streams ----------------------------------------------------------------- 1 1 10.48.88.12 3337 1 Open 1 -----------------------------------------------------------------
Note: Quando um ECM é recebido pelo cBR-8, ele é armazenado no cache e, se a conexão com o ECMG for perdida, o ECM em cache é usado para criptografia até que um novo seja recebido.
Graças às depurações habilitadas, você pode ver todas as mensagens trocadas entre o ECMG e o SCS (consulte o fluxo de chamadas ilustrado na figura inicial):
cisco@simulcrypt:~$ sudo tsecmg -p 3337 -v -d7
debug level set to 7
* Debug: setting socket reuse address to 1
* Debug: binding socket to 0.0.0.0:3337
* Debug: server listen, backlog is 5
* TCP server listening on 0.0.0.0:3337, using ECMG <=> SCS protocol version 2
* Debug: server accepting clients
* Debug: received connection from 88.88.88.89:56102
* Debug: server accepting clients
* 88.88.88.89:56102: 2018/12/06 14:38:35: session started
* Debug: received message from 88.88.88.89:56102
channel_setup (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0001
ECM_channel_id = 0x0001
Super_CAS_id = 0x27750003
* Debug: sending message to 88.88.88.89:56102
channel_status (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0003
ECM_channel_id = 0x0001
section_TSpkt_flag = 1
AC_delay_start = 200
AC_delay_stop = 200
delay_start = 200
delay_stop = 200
transition_delay_start = -500
transition_delay_stop = 0
ECM_rep_period = 100
max_streams = 0
min_CP_duration = 10
lead_CW = 1
CW_per_msg = 2
max_comp_time = 100
* Debug: received message from 88.88.88.89:56102
stream_setup (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0101
ECM_channel_id = 0x0001
ECM_stream_id = 0x0001
ECM_id = 0x0001
nominal_CP_duration = 100
* Debug: sending message to 88.88.88.89:56102
stream_status (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0103
ECM_channel_id = 0x0001
ECM_stream_id = 0x0001
ECM_id = 0x0001
access_criteria_transfer_mode = 0
* Debug: received message from 88.88.88.89:56102
CW_provision (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0201
ECM_channel_id = 0x0001
ECM_stream_id = 0x0001
CP_number = 0
access_criteria (20 bytes) =
C9 72 BF D7 70 1E 6D 28 06 9A E8 5F 5D 70 1D 63 AC 1A EC 4A
CP = 0
CW (8 bytes) = 4E 0A 45 9D DC 10 4A 36
CP = 1
CW (8 bytes) = AB FF 00 AA 9C 4F 11 FC
* Debug: sending message to 88.88.88.89:56102
ECM_response (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0202
ECM_channel_id = 0x0001
ECM_stream_id = 0x0001
CP_number = 0
ECM_datagram (188 bytes) =
47 5F FF 10 00 80 70 35 80 AA 03 00 30 00 10 00 08 4E 0A 45 9D DC
10 4A 36 00 11 00 08 AB FF 00 AA 9C 4F 11 FC 00 12 00 14 C9 72 BF
D7 70 1E 6D 28 06 9A E8 5F 5D 70 1D 63 AC 1A EC 4A FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF
* Debug: received message from 88.88.88.89:56102
channel_test (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0002
ECM_channel_id = 0x0001
* Debug: sending message to 88.88.88.89:56102
channel_status (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0003
ECM_channel_id = 0x0001
section_TSpkt_flag = 1
AC_delay_start = 200
AC_delay_stop = 200
delay_start = 200
delay_stop = 200
transition_delay_start = -500
transition_delay_stop = 0
ECM_rep_period = 100
max_streams = 0
min_CP_duration = 10
lead_CW = 1
CW_per_msg = 2
max_comp_time = 100
* Debug: received message from 88.88.88.89:56102
stream_test (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0102
ECM_channel_id = 0x0001
ECM_stream_id = 0x0001
* Debug: sending message to 88.88.88.89:56102
stream_status (ECMG<=>SCS)
protocol_version = 0x02
message_type = 0x0103
ECM_channel_id = 0x0001
ECM_stream_id = 0x0001
ECM_id = 0x0001
access_criteria_transfer_mode = 0
No cBR-8, você pode solucionar problemas de criptografia com os rastreamentos correspondentes da plataforma do supervisor definidos para o nível de depuração ou ruído (não se esqueça de restaurar o nível de aviso no final):
set platform software trace sup-veman rp ative scs debug
Uma troca correta de mensagens entre cBR-8 e ECMG é semelhante a esta:
show platform software trace message sup-veman rp active reverse 12/07 15:34:43.963 [scs]: [47872]: (debug): ECMG Send channel_setup for channel_id 1 12/07 15:34:43.965 [scs]: [47872]: (debug): ECMG Received channel_status for channel_id 1 12/07 15:34:43.965 [scs]: [47872]: (info): ECMG Channel 0 setup to ip 10.48.88.12 port 3337 12/07 15:34:43.965 [scs]: [47872]: (debug): Open stream 1 12/07 15:34:43.965 [scs]: [47872]: (debug): ECMG Send stream_setup for channel_id 1, stream_id 1 12/07 15:34:43.965 [scs]: [47872]: (debug): ECMG Received stream_status for channel_id 1, stream_id 1 12/07 15:34:43.965 [scs]: [47872]: (info): ECMG Stream 1 setup to ip 10.48.88.12 port 3337 12/07 15:34:43.965 [scs]: [47872]: (debug): Request ECM for CP 0 12/07 15:34:43.965 [scs]: [47872]: (debug): ECMG Send CW_provision with 20 AC bytes for channel_id 1, stream_id 1 12/07 15:34:43.966 [scs]: [47872]: (debug): Received ECM_response for channel_id 1, stream_id 1 12/07 15:34:43.966 [scs]: [47872]: (debug): ECMGp: Forward ECM pkts to SCS 12/07 15:34:43.966 [scs]: [47872]: (debug): Received ECM for CP 0 12/07 15:34:56.015 [scs]: [47872]: (debug): ECMG Send channel_test for channel_id 1 12/07 15:34:56.016 [scs]: [47872]: (debug): ECMG Received channel_status for channel_id 1 12/07 15:35:18.039 [scs]: [47872]: (debug): ECMG Send stream_test for channel_id 1, stream_id 1 12/07 15:35:18.042 [scs]: [47872]: (debug): ECMG Received stream_status for channel_id 1, stream_id 1
Feedback