Aruba Analytics Data Collections (ADCs) are script-defined rules to provide statistics about different types of network traffic passing through a switch. Network traffic statistics can be gathered based on many different frame or packet characteristics, including—but not limited to—the following:

  • Source IP address (IPv4 or IPv6)

  • Destination IP address (IPv4 or IPv6)

  • Layer 3 (IP) protocol

  • Layer 4 application ports

  • Physical switch port

You can create ADCs and view ADC information through NAE scripts only. Multiple agents can use the same ADC.

ADCs are one of two types: IPv4 and IPv6. There can be multiple ADCs of each type.

ADCs are similar to ACLs in the following ways:

  • ADCs and ACLs are installed in the switch hardware ASIC and share underlying mechanisms and limitations, including using TCAM entries.

  • ADCs and ACLs are defined in switch configuration database in similar ways.

An ADC is composed of one or more ADC entries ordered and prioritized by sequence numbers. The lowest sequence number is the highest prioritized ADC entry. The ADC processes a packet sequentially against entries in the list until either the packet matches an ADC entry or the last ADC entry in the list has been evaluated.


  • When the agent instantiated from the script that defines the ADC is disabled or deleted, the NAE deletes the ADC. Disabling or deleting the agent is the only method to delete the ADC.

  • If the switch is configured to create an automatic checkpoint (using the checkpoint auto <time> command), the NAE does not create the ADC.

  • The ADCList class includes methods to add entries and to get entries. After an entry is added, it cannot be modified or deleted.

The following is an example of a script that defines an ADC list and entries:

Manifest = {
    'Name': 'adc_hit_counters_monitor',
    'Description': 'Network Analytics Agent Script to monitor'
                   'ADC hit counters',
    'Version': '1.0',
    'Author': 'Aruba Networks'

ParameterDefinitions = {
    'office365_traffic_bound': {
        'Name': 'office365_traffic_bound',
        'Description': 'Traffic flow to/from Office 365, '
                       'paramater options: \'to\' or \'from\', default is \'to\'',
        'Type': 'String',
        'Default': 'to'

# IPv4Addresses contains a large list of IP addresses. For readability,
# a small sample of addresses is shown in this example.
IPv4Addresses = ["", "", "",
                 "", "", "",
                 "", "",

class Agent(NAE):

    def __init__(self):
        if str(self.params['office365_traffic_bound']) == 'to':
            self.adc_outgress = ADCList("office365_outgress", ADCList.Type.IPV4, "Traffic from Office365")
            for i in range(0, len(IPv4Addresses)):
                entry = ADCEntry(ADCEntry.Type.MATCH).dst_ip(IPv4Addresses[i])
                self.adc_outgress.add_entry(i, entry)
            ipv4_outgress_traffic = Rate(
                "/rest/v1/system/adc_lists/office365_outgress/ipv4?attributes=statistics.*", "15s")
            ipv4_outgress_sum = Sum(ipv4_outgress_traffic)
            self.ipv4_outgress_monitor = Monitor(
                ipv4_outgress_sum, "Ipv4 Traffic to Office365")
        elif str(self.params['office365_traffic_bound']) == 'from':
            self.adc_ingress = ADCList("office365_ingress", ADCList.Type.IPV4, "Traffic to Office365")
            for i in range(0, len(IPv4Addresses)):
                entry = ADCEntry(ADCEntry.Type.MATCH).src_ip(IPv4Addresses[i])
                self.adc_ingress.add_entry(i, entry)
            ipv4_ingress_traffic = Rate(
                "/rest/v1/system/adc_lists/office365_ingress/ipv4?attributes=statistics.*", "15s")
            ipv4_ingress_sum = Sum(ipv4_ingress_traffic)
            self.ipv4_ingress_monitor = Monitor(
                ipv4_ingress_sum, "Ipv4 Traffic from Office365")
            raise Exception("Invalid Parameters, "
                            "please create agent with parameter 'to' or 'from', default: \'to\'")