# CCD

## Overview

{% hint style="info" %}
**CCD** stands for **Core Class Definition**. It is a list of class names which are in use on the service provider's network, used to configure Highlight to collect and report on Classes of Service.
{% endhint %}

Highlight can auto-discover Class of Service names from a traffic policy defined on an interface. The CCD[^1] table is used to:

* Map the class names on the router to a friendly name for Highlight to display
* Limit the classes discovered to only those of interest
* Associate incoming classes to their equivalent outbound class
* Define the DSCP[^2] value to use for performance tests run in that class
* Define which DSCP values are in the definition of a class — used for AppVis™

***

## Changing the CCD

**Override:** If the word Override is showing and the fields are greyed out, the current settings are inherited from a folder further up the tree structure. To alter these inherited values for this folder and any subfolder, click **Override** and the fields become editable.

**Revert:** If the word Revert is showing and the numeric fields are editable, the current settings are locally defined in this folder. To revert to the parent folder settings, click **Revert**.

Each line represents a class of service and the definition is made up of the following settings:

**Name:** The title of the class when displayed in Highlight. No spaces are permitted.

**Value:** The value field defines the actual class names configured on the router to be matched, plus the marker to be used (`dscp` or `precedence`) when running tests in the class. Each property must be space-separated from the next.

<table><thead><tr><th width="110">PropertyText</th><th>DescriptionText</th></tr></thead><tbody><tr><td><strong>cin</strong></td><td>The name of the inbound class-map(s). Multiple entries must be comma separated.</td></tr><tr><td><strong>cout</strong></td><td>The name of the outbound class-map(s). Multiple entries must be comma separated.</td></tr><tr><td><strong>marker</strong></td><td>The type of QoS marker used (<code>dscp</code> or <code>prec</code>).</td></tr><tr><td><strong>markspec</strong></td><td>The decimal DSCP or precedence value used for in-class performance testing.</td></tr></tbody></table>

**Save:** One save stores details for this and all other sections on Edit Folder.

### Example

Based on the router configuration in the [Device Configuration for Classes](https://help.highlight.net/device-setup/configuration-for-class-of-service#device-configuration) section, the CCD would look like:

<table data-header-hidden><thead><tr><th width="89"></th><th></th></tr></thead><tbody><tr><td><strong>Name</strong></td><td><code>Voice</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscpEF cout=premium marker=dscp markspec=46</code></td></tr><tr><td><strong>Name</strong></td><td><code>Business Critical</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscp26 cout=classic marker=dscp markspec=26</code></td></tr><tr><td><strong>Name</strong></td><td><code>Standard</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscp10 cout=standard marker=dscp markspec=10</code></td></tr><tr><td><strong>Name</strong></td><td><code>Best Effort</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=class-default cout=class-default marker=dscp markspec=0</code></td></tr></tbody></table>

{% hint style="info" %}
It will take up to 4 hours for Highlight pollers to adopt the new CCD. At that point a watch will need to revalidate for any new classes to be discovered. Revalidation generally happens following device reconfiguration; otherwise every 32 days.
{% endhint %}

***

## Child Policies

It is common that a router has a policy to shape the traffic, and a "child" policy to control the classes within that. In this example `main-policy` does the shaping and `class-policy` is the child:

```
policy-map main-policy
  class class-default
    shape average 282000000 1128000 0
      service-policy class-policy
```

Classes used in the child policy must be prefixed in the CCD with `class-default.` in order to be discovered. For example: `cout=class-default.premium`

It is common that partners may implement some customers with child policies and others without. The CCD can accommodate this by comma-separating the options. The example CCD from the previous section would then become:

<table data-header-hidden><thead><tr><th width="92"></th><th></th></tr></thead><tbody><tr><td><strong>Name</strong></td><td><code>Voice</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscpEF cout=premium,class-default.premium marker=dscp markspec=46</code></td></tr><tr><td><strong>Name</strong></td><td><code>Business Critical</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscp26 cout=classic,class-default.classic marker=dscp markspec=26</code></td></tr><tr><td><strong>Name</strong></td><td><code>Standard</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscp10 cout=standard,class-default.standard marker=dscp markspec=10</code></td></tr><tr><td><strong>Name</strong></td><td><code>Best Effort</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=class-default cout=class-default,class-default.class-default marker=dscp markspec=0</code></td></tr></tbody></table>

***

## AppVis Requirements

In order for AppVis to recognise which class is carrying particular traffic types, the DSCP values used in the router class definition must also be added to the Highlight CCD. For example, class `Business Critical` may carry traffic with DSCP values of 24, 28 and 30 in addition to DSCP 26.

These additional values must be added to the end of each CCD entry, comma separated. The example from the previous section would then become:

<table data-header-hidden><thead><tr><th width="80"></th><th></th></tr></thead><tbody><tr><td><strong>Name</strong></td><td><code>Voice</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscpEF cout=premium,class-default.premium marker=dscp markspec=46</code></td></tr><tr><td><strong>Name</strong></td><td><code>Business Critical</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscp26 cout=classic,class-default.classic marker=dscp markspec=26,24,28,30</code></td></tr><tr><td><strong>Name</strong></td><td><code>Standard</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=isDscp10 cout=standard,class-default.standard marker=dscp markspec=10,8,12,14</code></td></tr><tr><td><strong>Name</strong></td><td><code>Best Effort</code></td></tr><tr><td><strong>Value</strong></td><td><code>cin=class-default cout=class-default,class-default.class-default marker=dscp markspec=0</code></td></tr></tbody></table>

{% hint style="info" %}
The first value in each `markspec` list will be used for in-class performance tests.
{% endhint %}

[^1]: Core Class Definition

[^2]: Differentiated Services Code Point
