dellemc.enterprise_sonic.sonic_copp module – Manage CoPP configuration on SONiC

Note

This module is part of the dellemc.enterprise_sonic collection (version 3.2.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install dellemc.enterprise_sonic.

To use it in a playbook, specify: dellemc.enterprise_sonic.sonic_copp.

New in dellemc.enterprise_sonic 2.1.0

Synopsis

  • This module provides configuration management of CoPP for devices running SONiC

Parameters

Parameter

Comments

config

dictionary

Specifies CoPP configurations

copp_groups

list / elements=dictionary

List of CoPP entries that comprise a CoPP group

cbs

string

Committed bucket size in packets or bytes

cir

string

Committed information rate in bps or pps (packets per second)

copp_name

string / required

Name of CoPP classifier

queue

integer

CoPP queue ID

trap_action

string

CoPP trap action

Choices:

  • "copy"

  • "copy_cancel"

  • "deny"

  • "drop"

  • "forward"

  • "log"

  • "transit"

  • "trap"

trap_priority

integer

CoPP trap priority

copp_traps

list / elements=dictionary

added in dellemc.enterprise_sonic 3.1.0

List of CoPP entries that comprise a CoPP trap

name

string / required

Name of CoPP trap

trap_group

string

Name of CoPP group

trap_protocol_ids

string

Comma separated string of trap protocol IDs

state

string

The state of the configuration after module completion

Choices:

  • "merged" ← (default)

  • "deleted"

  • "replaced"

  • "overridden"

Notes

Note

  • Tested against Enterprise SONiC Distribution by Dell Technologies.

  • Supports check_mode.

Examples

# Using "merged" state
#
# Before state:
# -------------
#
# sonic# show copp actions
# (No "copp actions" configuration present)
# sonic# show copp classifiers
# (No "copp classifiers" configuration present)

- name: Merge CoPP configuration
  dellemc.enterprise_sonic.sonic_copp:
    config:
      copp_groups:
        - copp_name: 'copp-1'
          trap_priority: 1
          trap_action: 'drop'
          queue: 1
          cir: '45'
          cbs: '45'
        - copp_name: 'copp-2'
          trap_priority: 2
          trap_action: 'forward'
          queue: 2
          cir: '90'
          cbs: '90'
      copp_traps:
        - name: 'trap-1'
          trap_protocol_ids: 'id1,id2,id3'
          trap_group: 'copp-1'
    state: merged

# After state:
# ------------
#
# sonic# show copp actions
# CoPP action group copp-1
#    trap-action drop
#    trap-priority 1
#    trap-queue 1
#    police cir 45 cbs 45
# CoPP action group copp-2
#    trap-action forward
#    trap-priority 2
#    trap-queue 2
#    police cir 90 cbs 90
# sonic# show copp classifiers
# Class-map trap-1 match-type copp
#   protocol id1
#   protocol id2
#   protocol id3


# Using "replaced" state
#
# Before state:
# -------------
#
# sonic# show copp actions
# CoPP action group copp-1
#    trap-action drop
#    trap-priority 1
#    trap-queue 1
#    police cir 45 cbs 45
# CoPP action group copp-2
#    trap-action forward
#    trap-priority 2
#    trap-queue 2
#    police cir 55 cbs 55
# sonic# show copp classifiers
# Class-map trap-1 match-type copp
#   protocol id1
#   protocol id2
#   protocol id3

- name: Replace CoPP configuration
  dellemc.enterprise_sonic.sonic_copp:
    config:
      copp_groups:
        - copp_name: 'copp-1'
          trap_priority: 2
          trap_action: 'forward'
          queue: 2
        - copp_name: 'copp-3'
          trap_priority: 3
          trap_action: 'drop'
          queue: 3
          cir: '1000'
          cbs: '1000'
      copp_traps:
        - name: 'trap-1'
          trap_protocol_ids: 'id1'
          trap_group: 'copp-2'
    state: replaced

# After state:
# ------------
#
# sonic# show copp actions
# CoPP action group copp-1
#    trap-action forward
#    trap-priority 2
#    trap-queue 2
# CoPP action group copp-2
#    trap-action forward
#    trap-priority 2
#    trap-queue 2
#    police cir 55 cbs 55
# CoPP action group copp-3
#    trap-action drop
#    trap-priority 3
#    trap-queue 3
#    police cir 1000 cbs 1000
# sonic# show copp classifiers
# Class-map trap-1 match-type copp
#   protocol id1


# Using "overridden" state
#
# Before state:
# -------------
#
# sonic# show copp actions
# CoPP action group copp-1
#    trap-action forward
#    trap-priority 2
#    trap-queue 2
# CoPP action group copp-3
#    trap-action drop
#    trap-priority 3
#    trap-queue 3
#    police cir 1000 cbs 1000
# Class-map trap-1 match-type copp
#   protocol id1

- name: Override CoPP configuration
  dellemc.enterprise_sonic.sonic_copp:
    config:
      copp_groups:
        - copp_name: 'copp-4'
          trap_priority: 4
          trap_action: 'forward'
          queue: 4
          cir: 200
          cbs: 200
    state: overridden

# After state:
# ------------
#
# sonic# show copp actions
# CoPP action group copp-4
#    trap-action forward
#    trap-priority 4
#    trap-queue 4
#    police cir 200 cbs 200


# Using "deleted" state
#
# Before state:
# -------------
#
# sonic# show copp actions
# CoPP action group copp-1
#    trap-action drop
#    trap-priority 1
#    trap-queue 1
#    police cir 45 cbs 45
# CoPP action group copp-2
#    trap-action forward
#    trap-priority 2
#    trap-queue 2
#    police cir 90 cbs 90
# Class-map trap-1 match-type copp

- name: Delete CoPP configuration
  dellemc.enterprise_sonic.sonic_copp:
    config:
      copp_groups:
        - copp_name: 'copp-1'
          cir: '45'
          cbs: '45'
        - copp_name: 'copp-2'
      copp_traps:
        - name: 'trap-1'
    state: deleted

# After state:
# ------------
#
# sonic# show copp actions
# CoPP action group copp-1
#    trap-action drop
#    trap-priority 1
#    trap-queue 1

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

after

dictionary

The configuration resulting from module invocation.

Returned: when changed

after(generated)

dictionary

The configuration that would be generated by non-check mode module invocation.

Returned: when check_mode

before

dictionary

The configuration prior to the module invocation.

Returned: always

commands

list / elements=string

The set of commands pushed to the remote device.

Returned: always

Sample: ["command 1", "command 2", "command 3"]

Authors

    1. Talabi (@stalabi1)