Introduction

    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.

    Prerequisites

    Requirements

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

    • DVB-C
    • Symulcrypt
    • VoD
    • cBR-8

    Componentes Utilizados

    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.

    Informações de Apoio

    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)

    Configurar

    Sessões de vídeo cBR-8

    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

    Streamer

    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 &

    ECMG

    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

    Verificar

    No cBR-8

    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.

    No ECMG

    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

    Troubleshoot

    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

    Informações Relacionadas