telemetry_interface_packet_counters_test - openconfig/featureprofiles GitHub Wiki
Validate interfaces counters including both IPv4 and IPv6 counters.
In the automated ondatra test, verify the presence of the telemetry paths of the following features:
-
Configure Interface and add load-interval:
- /interfaces/interface/rates/config/load-interval
-
Configure IPv4 and IPv6 addresses under subinterface:
- /interfaces/interface/config/enabled
- /interfaces/interface/subinterfaces/subinterface/config/enabled
- /interfaces/interface/subinterfaces/subinterface/ipv4/config/enabled
- /interfaces/interface/subinterfaces/subinterface/ipv6/config/enabled
Validate that subinterface and IPv4 and IPv6 addresses are enabled:
- /interfaces/interface/subinterfaces/subinterface/state/enabled
- /interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/enabled
- /interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/enabled
-
Validate that Interface has load-interval configured:
- /interfaces/interface/rates/state/load-interval
-
Validate if counters are being updated consistently
Check the presence of packet counter paths and monitor counters every 30 seconds. Generate traffic to get atleast 10 or more samples.
- /interfaces/interface[name='port']/state/counters/in-pkts
- /interfaces/interface[name='port']/state/counters/out-pkts
- /interfaces/interface[name='port']/state/counters/last-clear
- /interfaces/interface[name='port']/subinterfaces/subinterface[index='index-id']/ipv4/state/counters/in-pkts
- /interfaces/interface[name='port']/subinterfaces/subinterface[index='index-id']/ipv6/state/counters/in-pkts
-
Subinterfaces counters:
Check the presence of packet counter paths
- /interfaces/interface/subinterfaces/subinterface/state/counters/in-octets
- TODO: /interfaces/interface[name=port]/subinterfaces/subinterface[index='index']/ipv4/state/counters/in-pkts
- TODO: /interfaces/interface[name=port]/subinterfaces/subinterface[index='index']/ipv4/state/counters/out-pkts
- TODO: /interfaces/interface[name=port]/subinterfaces/subinterface[index='index']/ipv6/state/counters/in-discarded-pkts
- TODO: /interfaces/interface[name=port]/subinterfaces/subinterface[index='index']/ipv6/state/counters/out-discarded-pkts
-
Ethernet interface counters
Check the presence of counter path including 'in-maxsize-exceeded'
- TODO: /interfaces/interface/ethernet/state/counters/in-maxsize-exceeded
- /interfaces/interface/ethernet/state/counters/in-mac-pause-frames
- /interfaces/interface/ethernet/state/counters/out-mac-pause-frames
- /interfaces/interface/ethernet/state/counters/in-crc-errors
- /interfaces/interface/ethernet/state/counters/in-fragment-frames
- /interfaces/interface/ethernet/state/counters/in-jabber-frames
- /interfaces/interface/ethernet/state/counters/in-oversize-frames
-
Interface CPU and management
Check the presence of CPU and management paths
- TODO: /interfaces/interface/state/cpu
- TODO: /interfaces/interface/state/management
The test uses a 2 port ATE setup where 2 ports are used as a singleton interface Ports are configured with ipv4, ipv6 interfaces on DUT and ATE. Traffic is sent and from ATE to DUT and the counters are verified.
{
"openconfig-interfaces:interfaces": {
"interface": [
{
"config": {
"description": "Input interface port1",
"enabled": true,
"name": "port1",
"type": "iana-if-type:ethernetCsmacd"
},
"name": "port1",
"openconfig-if-rates:rates": {
"config": {
"load-interval": 30
}
},
"subinterfaces": {
"subinterface": [
{
"config": {
"enabled": true,
"index": 0
},
"index": 0,
"openconfig-if-ip:ipv4": {
"addresses": {
"address": [
{
"config": {
"ip": "198.51.100.0",
"prefix-length": 31
},
"ip": "198.51.100.0"
}
]
},
"config": {
"enabled": true
}
},
"openconfig-if-ip:ipv6": {
"addresses": {
"address": [
{
"config": {
"ip": "2001:DB8::1",
"prefix-length": 126
},
"ip": "2001:DB8::1"
}
]
},
"config": {
"enabled": true
}
}
}
]
}
}
]
}
}The below yaml defines the OC paths intended to be covered by this test. OC paths used for test setup are not listed here.
paths:
## Config Paths ##
/interfaces/interface/config/enabled:
/interfaces/interface/subinterfaces/subinterface/config/enabled:
/interfaces/interface/subinterfaces/subinterface/ipv4/config/enabled:
/interfaces/interface/subinterfaces/subinterface/ipv6/config/enabled:
/interfaces/interface/rates/config/load-interval:
## State Paths ##
/interfaces/interface/state/oper-status:
/interfaces/interface/state/counters/carrier-transitions:
/interfaces/interface/state/counters/in-broadcast-pkts:
/interfaces/interface/state/counters/in-discards:
/interfaces/interface/state/counters/in-errors:
/interfaces/interface/state/counters/in-fcs-errors:
/interfaces/interface/state/counters/in-multicast-pkts:
/interfaces/interface/state/counters/in-octets:
/interfaces/interface/state/counters/in-pkts:
/interfaces/interface/state/counters/in-unicast-pkts:
/interfaces/interface/state/counters/out-broadcast-pkts:
/interfaces/interface/state/counters/out-discards:
/interfaces/interface/state/counters/out-errors:
/interfaces/interface/state/counters/out-multicast-pkts:
/interfaces/interface/state/counters/out-octets:
/interfaces/interface/state/counters/out-pkts:
/interfaces/interface/state/counters/out-unicast-pkts:
/interfaces/interface/state/counters/last-clear:
/interfaces/interface/rates/state/load-interval:
/interfaces/interface/subinterfaces/subinterface/state/enabled:
/interfaces/interface/subinterfaces/subinterface/state/counters/in-octets:
/interfaces/interface/subinterfaces/subinterface/state/counters/out-broadcast-pkts:
/interfaces/interface/subinterfaces/subinterface/state/counters/carrier-transitions:
/interfaces/interface/subinterfaces/subinterface/state/counters/out-errors:
/interfaces/interface/subinterfaces/subinterface/state/counters/last-clear:
/interfaces/interface/subinterfaces/subinterface/state/counters/in-errors:
/interfaces/interface/subinterfaces/subinterface/state/counters/in-unknown-protos:
/interfaces/interface/subinterfaces/subinterface/state/counters/in-broadcast-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv4/state/enabled:
/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/enabled:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-discarded-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-discarded-pkts:
/interfaces/interface/ethernet/state/counters/in-maxsize-exceeded:
/interfaces/interface/ethernet/state/counters/in-mac-pause-frames:
/interfaces/interface/ethernet/state/counters/out-mac-pause-frames:
/interfaces/interface/ethernet/state/counters/in-crc-errors:
/interfaces/interface/ethernet/state/counters/in-fragment-frames:
/interfaces/interface/ethernet/state/counters/in-jabber-frames:
/interfaces/interface/ethernet/state/counters/in-oversize-frames:
/interfaces/interface/state/cpu:
/interfaces/interface/state/management:
rpcs:
gnmi:
gNMI.Subscribe:
gNMI.Set:- Specify the minimum DUT-type
- FFF - fixed form factor is enough for this test. However it can run also on a MFF testbed. gNMI.Set:
- FFF - fixed form factor