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