8.2.4.3.14.1. Configuration

8.2.4.3.14.1.1. Enable

Whether a histogram is currently active on a port. When turned on, all the bucket counts are cleared to zero. Subsequently each packet matching the histogram source criteria is counted into one of the buckets. While a histogram is enabled its parameters cannot be changed.

Corresponding low-level API class: PD_ENABLE

await dataset.enable.set(on_off=enums.OnOff.ON)
await dataset.enable.set_on()
await dataset.enable.set(on_off=enums.OnOff.OFF)
await dataset.enable.set_off()

resp = await dataset.enable.get()
resp.on_off

8.2.4.3.14.1.2. Data Source

The source criteria specifying what is counted, and for which packets, by a histogram of a port.

Corresponding low-level API class: PD_SOURCE

await dataset.source.set(
    source_type=enums.SourceType.TX_IFG,
    which_packets=enums.PacketDetailSelection.ALL,
    identity=0
)
await dataset.source.set(
    source_type=enums.SourceType.TX_LEN,
    which_packets=enums.PacketDetailSelection.ALL,
    identity=0
)
await dataset.source.set(
    source_type=enums.SourceType.RX_IFG,
    which_packets=enums.PacketDetailSelection.ALL,
    identity=0
)
await dataset.source.set(
    source_type=enums.SourceType.RX_LEN,
    which_packets=enums.PacketDetailSelection.ALL,
    identity=0
)
await dataset.source.set(
    source_type=enums.SourceType.RX_LATENCY,
    which_packets=enums.PacketDetailSelection.ALL,
    identity=0
)
await dataset.source.set(
    source_type=enums.SourceType.RX_JITTER,
    which_packets=enums.PacketDetailSelection.ALL,
    identity=0
)

resp = await dataset.source.get()
resp.source_type
resp.which_packets
resp.identity

8.2.4.3.14.1.3. Data Range

The bucket ranges used for classifying the packets counted by a histogram of a port. The packets are either counted by length, measured in bytes, by inter- frame gap to the preceding packet, also measured in bytes, or by latency in transmission measured in nanoseconds. There are a fixed number of buckets, each middle bucket covering a fixed-size range of values which is a power of two. The first and last buckets count all the packets that do not fit within the ranges of the middle buckets. The buckets are placed at a certain offset by specifying the first value that should be counted by the first middle bucket.

Corresponding low-level API class: PD_RANGE

await dataset.range.set(
    start=1, #first value going into the second bucket
    step=1, # the span of each middle bucket: (1) 1,2,4,8,16,32,64,128,256,512 (bytes, non-latency histograms).(2) 16,32,64,128,...,1048576,2097152 (nanoseconds, latency histograms).
    bucket_count=10 # the total number of buckets
)

resp = await dataset.range.get()
resp.start
resp.step
resp.bucket_count

8.2.4.3.14.1.4. Data Samples

The current set of counts collected by a histogram for a port. There is one value for each bucket, but any trailing zeros are left out. The list is empty if all counts are zero.

Corresponding low-level API class: PD_SAMPLES

resp = await dataset.samples.get()
resp.packet_counts

8.2.4.3.14.1.5. Remove

Delete an existing histogram definition.

Corresponding low-level API class: PD_DELETE

# Remove a histogram on the port with an explicit histogram index by the index manager of the port.
await port.datasets.remove(position_idx=0)