The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
This document describes how to configure and troubleshoot Video on Demand (VoD) with Generic QAM Interface (GQI) protocol and PowerKEY encryption on the Cisco CBR-8 device.
Further information on how to configure, verify, and troubleshoot these featurescan be found in Cisco cBR Converged Broadband Routers Video Features.
Cisco recommends that you have knowledge of these topics:
This document is not restricted to specific software and hardware versions.
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. If your network is live, ensure that you understand the potential impact of any command.
This is a configuration example on a CBR-8 for 1 line card, with 1 Logical Edge Device (LED), and 1 service group.
cable video [...] mgmt-intf VirtualPortGroup 0 encryption linecard 1/0 ca-system powerkey scrambler des service-distribution-group SG1 id 1 rf-port integrated-cable 1/0/0 virtual-carrier-group SG1 id 1 encrypt service-type narrowcast rf-channel 32 tsid 10188 output-port-number 1 rf-channel 33-53 tsid 10189-10209 output-port-number 2-22 bind-vcg vcg SG1 sdg SG1 logical-edge-device LED1 id 1 protocol gqi mgmt-ip 10.10.10.10 mac-address aaaa.bbbb.cccc server 10.20.30.40 keepalive retry 3 interval 10 reset interval 8 virtual-edge-input-ip 10.0.0.1 input-port-number 1 vcg SG1 active
Once a VoD session is started, its output on the cBR-8 must look like this:
cBR-8#show cable video session all LED Session Output Streaming Sess Session Source UDP Output Input Output Input Output Encrypt Encrypt Low PMV Session Id Id Port Type Type Ucast Dest IP/Mcast IP (S,G) Port Program State State Bitrate Bitrate Type Status Lat NUM Name ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 1 1 Remap UDP 10.0.0.1 1000 1 ACTIVE-PSI ON 14475285 14465257 PowerKey Encrypted N - 0x4C83DE87450000035B74
If a VoD request is valid, in a correctly working environment, it triggers a session creation on the cBR-8 from a video management system device as the Cisco Videoscape Session Resource Manager (VSRM).
If you do not see the VoD session created on the cBR-8 under the command show cable video session all, other than external issues as connectivity, routing, VSRM misconfiguration, etc., it is possible that the cBR-8 replied with an error code to the GQI Create Session Request coming from the VSRM.
For example, the Create Session Response Code 9002000 is the positive answer, while 9002000A is an error code which means that the channel bandwidth is unavailable. You can find a list of the response codes in this table, from the Time Warner Cable Switched Digital Video Channel Change Message Interface Specification (TWC-SDV-CCMIS):
Description | Code |
---|---|
GQI_NO_ERROR | 0x90020000 |
GQI_ERROR_RPC_OUT_OF_MEMORY | 0x90020001 |
GQI_ERROR_RPC_HARDWARE_FAILURE | 0x90020002 |
GQI_ERROR_RPC_SESSION_NOT_FOUND | 0x90020003 |
GQI_ERROR_RPC_MISSING_MSK | 0x90020004 |
GQI_ERROR_RPC_SESSION_ALREADY_EXISTS | 0x90020005 |
GQI_ERROR_RPC_INSUFFICIENT_MEMORY | 0x90020006 |
GQI_ERROR_RPC_INSUFFICIENT_CAPACITY | 0x90020007 |
GQI_ERROR_RPC_PROVISION_FAILURE |
0x90020008 |
GQI_ERROR_RPC_PROGRAM_NUMBER_CONFLICT |
0x90020009 |
GQI_ERROR_RPC_BANDWIDTH_UNAVAILABLE |
0x9002000A |
GQI_ERROR_RPC_SAME_GIGAIP |
0x9002000B |
GQI_ERROR_RPC_GIGAIP_INVALID |
0x9002000C |
GQI_ERROR_RPC_GIGAIP_FAILURE |
0x9002000D |
GQI_ERROR_RPC_GROUP_SDB_SESSION_FAILURE |
0x9002000E |
GQI_ERROR_RPC_INSUFFICIENT_OUTPUT_CAPACITY | 0x9002000F |
GQI_ERROR_RPC_ROUTE_CONFLICT_OUTPUT | 0x90020010 |
GQI_ERROR_RPC_ROUTE_CONFLICT_INPUT | 0x90020011 |
GQI_ERROR_RPC_ROUTE_NOT_FOUND | 0x90020012 |
GQI_ERROR_RPC_ROUTE_ALREADY_EXISTS | 0x90020013 |
GQI_ERROR_RPC_INVALID_MULTICAST_ADDRESS | 0x90020014 |
GQI_ERROR_RPC_INVALID_SOURCE_ADDRESS | 0x90020015 |
GQI_ERROR_RPC_STAT_MUX_GROUP_DEJITTER_FAILURE | 0x90020016 |
GQI_ERROR_RPC_GIGE_TYPE_CONFLICT | 0x90020017 |
You can check the GQI messages in the cBR-8 by enabling the platform traces to debug or noise level of verbosity, and restore it to notice level after the troubleshoot:
cBR-8#set platform software trace led-01 rp active vgqi-mgmt noise
cBR-8#set platform software trace led-01 rp active vgqi-msg noise
Once the traces are set, you can request a VoD session, and then check the output of the traces with show platform software trace message led-01 rp active.
Here is an example of the GQI transaction in the cBR-8 traces, with the 9002000A error code sent to the VSRM. In this case the VSRM does not initiate the session on the cBR-8:
cBR-8#show platform software trace message led-01 rp active 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijklmnopabc, Received GQI Create Session V2 Request from 10.20.30.40 to 10.10.10.10 <<<<<<<<<<<<< the request points at LED1 mgmt-ip 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-msg] [24599]: UUID: 0, ra: 0, TID: 0 (info): abcdefghijklmnopabcdefghijklmnopabcdef -> Received GQI Create Session Request: Transaction Header: Transaction ID: 4F75000F Response Program Number: 30000082 Session ID: Session ID Length: 10 Session ID Value: 54 52 00 64 6A 7F 06 99 11 E1 Incomming Program Number: 62351 Outgoing Program Number: 62351 Input Port Number: 1 Output Port Number: 1 Session Rate: 125000 Is Multicast: 1 Input UDP Port: PORT# Multicast Details: Source Address Len: 3 Source IP Address Value: 10.20.31.40, 0.0.0.0, 0.0.0.0, Group IP Address: IP, IP, IP, UDP Port : 0, 0, 0, NO PID Remapping: 1 Encryption: 0 Override Session Flag 0 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijklmnopabcd - GQI Input Port 1 is mapped to LED IP Address 10.0.0.1 <<<<<<<<<<<<< input mapping correctly pointing at LED1 IP 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijklmnopa - GQI Output Port 1 maps to physical QAM -> slot 2 port 1 channel 32 <<<<<<<<<<<<< output mapping incorrect: QAM 2/0/1:32 does not belong to LED1 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijklmnopabcd -> QAM Bandwidth request 125000 has exceeded the available bw 0 on QAM 2/0/1:32 <<<<<<<< Bandwidth exceeded error 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): Converting vgqi_rc_e (-22) to GQI Reponse Status code 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdef, Allocating GQI Response: GQI Server IP 10.20.30.40, LED Mgmt IP 10.10.10.10 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop, Sending GQI Create Session V1/V2 Response from 10.10.10.10 to 10.20.30.40 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-mgmt] [24833]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijk -> Client 0xfac14b422, conn_state = 4, req_type = 3, req version 2, conn version 2, sock = 19 2019/01/10 09:02:59.618 {led1_R0-0}{1}: [vgqi-msg] [24833]: UUID: 0, ra: 0, TID: 0 (info): abcdefghijklmnopabcdefghijklmnopabcdefgh -> Sending GQI Create Session Response: Result Code: 9002000A <<<<<<< error code response Transaction Header: Transaction ID: 4F75000F Response Program Number: 30000082 Session ID: Session ID Length: 10 Session ID Value: 54 52 00 64 6A 7F 06 99 11 E1 2019/01/10 09:02:59.710 {led1_R0-0}{1}: [vgqi-mgmt] [24599]: UUID: 0, ra: 0, TID: 0 (debug): abcdefghijklmnopabcdefghijkl -> ev_check_disconnect::remote fd 3 (0x0) has been disconnected
In this example, there is an incorrect bind in the cBR-8, possibly due to a misconfiguration or eventually a software defect to be further investigated by Cisco.
The internal bind in the cBR-8 can be verified with the commands described below.
This command shows a summary of the video databases for a single LED, where you can find information on each database name and ID, tables name and ID within a database, and key ID for each table. These indexes are needed for the next commands.
acdc-cbr8-2#show platform software vpm led1-ui rp active dbms data summary Database Name: led-default-database Database Id: 53 Database Name: Video Config Database Database Id: 54 <<<<< Database name and ID Table: DS Channel Table Table Id: 0 Record Count: 4 <<<< Table name, ID, and records number ------------------------------------------------------------------------ Table Options -------------------------------------------- Snapshot: DISABLED Replication: DISABLED Shadowing: DISABLED Dynamic Mem Allocation: ENABLED Key Name Engine ID ------------------------------------------------------ vcfg_dbms_qam_key AVL 1 <<<<<< key ID --More--
Once you identify what database and table you want to dump, you can use the command show platform software vpm led1-ui rp active dbms table dump <database ID> <table ID> <key ID> to display the content of the records. In this case you want to inspect the database 54 “Video Config Database”, table 0 “DS Channel Table” which has only Key ID 1:
acdc-cbr8-2#show platform software vpm led1-ui rp active dbms table dump 54 0 1 Record: Slot: 1, Bay: 0, Port: 0, Channel: 32 Logical QAM id: 48, Previous LQAM Id: 65535 QRG Role: none SD group id: 1, VC group id: 1 Admin state: 1, Operational state: 1, Previous Operation State: 0 TSID: 10188 Override TSID: not configured Encryption Support: Powerkey Resource Id: 0 ONID: 100 PSI Interval: 100 Output Port number: 1 Power Adjust: 400 dBmV Annex Type: ANNEX A Modulation: 256QAM Interleaver: QAM_INTERLEAVER_I_12_J_17 Frequency: 850000000 Bandwidth: 51253960 bps Symbol Rate: 6952 Low Latency: 0 Channel Width: 8000000 Hz NIT Reference: 0 --More--
From the output above, you can see that VCG 1 is correctly mapped to SDG 1, and that the first channel of LED 1 is 1/0/0:32 as per configuration.
Make always sure that the traffic that enters the session contains the expected parameters configured for that video session, like for example the TSID.
If you already know what record you want to access, you can obtain the same output displayed above with the command show platform software vpm led1-ui rp active dbms record 54 0 1 1/0/0:32
A session stuck in PowerKey Pending can look like this on the cBR-8:
cBR-8#show cable video session 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 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 1 850000000 Remap UDP 10.0.0.1 1000 1 OFF PENDING 0 0 PowerKey Pending N - 0x4C83DE87450000035B74
The first parameters that need to be observed are the input and output bitrate.
If the input rate is 0, normally it means that there is really no traffic in input on the cBR-8 for this session, and the cause of the problem must be investigated outside the cBR-8.
Anyway, in order to verify this fact, you can create a packet capture on the incoming links in this way:
Step 1. Create an access list that permits all the input IPs configured under the affected LED, in this case you have only 1 IP address:
cBR-8(config)#ip access-list extended TAC_VOD
cBR-8(config)#permit ip any host 10.0.0.1
Step 2. Check on which interfaces of the cBR-8 you expect to receive the VoD traffic, sometimes on all the interfaces of the supervisor in slot 4 and slot 5. In this case you have to configure 2 different captures, as it is not possible to configure 8 interfaces in a single capture:
cBR-8#monitor capture TAC_VOD interface range Te4/1/0, Te4/1/1, Te4/1/2, Te4/1/3 both access-list TAC_VOD buffer size 100
Step 3. Verify the configuration and start the monitor capture:
cBR-8#show monitor capture TAC_VOD
cBR-8#monitor capture TAC_VOD start
Step 4. Request a new VoD session on LED 1 and check if there are packets being captured (you have different options for the level of detail for the packets display):
cBR-8#show monitor capture TAC_VOD buff <brief/detail/dump>
Step 5. Once done, these commands can be used to save the capture in the harddisk, stop the monitor capture, and remove it from the configuration:
cBR-8#monitor capture TAC_VOD export harddisk:/TAC_VOD.pcap
cBR-8#monitor capture TAC_VOD stop
cBR-8#no monitor capture TAC_VOD
In case the packet capture shows no packets, then perform the steps described in case 1 in order to debug the GQI protocol itself.
Otherwise, use these debugs in order to verify the proper operation of PowerKEY on the cBR-8:
set platform software trace led-01 rp active vsess-mgmt debug
set platform software trace led-01 rp active vsess-msg debug
show platform software trace message led-01 rp active
set platform software trace pk-ecmg 1/0 pk_ecmg-chnl debug
set platform software trace pk-ecmg 1/0 pk_ecmg-ipc debug
set platform software trace pk-ecmg 1/0 pk_ecmg-main debug
set platform software trace pk-ecmg 1/0 pk_ecmg-stream debug
show platform software trace message pk-ecmg 1/0
Note: Do not forget to restore all the platform traces to the notice level once you are done with the troubleshoot.