8.2.4.3.10. Traffic Control

8.2.4.3.10.1. Rate Percent

The port-level rate of the traffic transmitted for a port in sequential tx mode, expressed in millionths of the effective rate for the port. The bandwidth consumption includes the inter-frame gaps, and does not depend on the length of the packets for the streams.

Corresponding low-level API class: P_RATEFRACTION

# Traffic Control - Rate Percent
await port.rate.fraction.set(port_rate_ppm=1_000_000)

resp = await port.rate.fraction.get()
resp.port_rate_ppm

8.2.4.3.10.2. Rate L2 Bits Per Second

The port-level rate of the traffic transmitted for a port in sequential tx mode, expressed in units of bits per-second at layer-2, thus including the Ethernet header but excluding the inter-frame gap. The bandwidth consumption is somewhat dependent on the length of the packets generated for the stream, and also on the inter-frame gap for the port.

Corresponding low-level API class: P_RATEL2BPS

# Traffic Control - Rate L2 Bits Per Second
await port.rate.l2_bps.set(port_rate_bps=1_000_000)

resp = await port.rate.l2_bps.get()
resp.port_rate_bps

8.2.4.3.10.3. Rate Frames Per Second

The port-level rate of the traffic transmitted for a port in sequential tx mode, expressed in packets per second. The bandwidth consumption is heavily dependent on the length of the packets generated for the streams, and also on the inter-frame gap for the port.

Corresponding low-level API class: P_RATEPPS

# Traffic Control - Rate Frames Per Second
await port.rate.pps.set(port_rate_pps=10_000)

resp = await port.rate.pps.get()
resp.port_rate_pps

8.2.4.3.10.4. Start and Stop

Whether a port is transmitting packets. When on, the port generates a sequence of packets with contributions from each stream that is enabled. The streams are configured using the PS_xxx parameters.

Note

If any of the specified packet sizes cannot fit into the packet generator, this command will return FAILED and not start the traffic. While traffic is on the streams for this port cannot be enabled or disabled, and the configuration of those streams that are enabled cannot be changed.

Corresponding low-level API class: P_TRAFFIC

# Traffic Control - Start and Stop
await port.traffic.state.set(on_off=enums.StartOrStop.START)
await port.traffic.state.set_start()
await port.traffic.state.set(on_off=enums.StartOrStop.STOP)
await port.traffic.state.set_stop()

resp = await port.traffic.state.get()
resp.on_off

8.2.4.3.10.5. Traffic Error

Obtain the traffic error which has occurred in the last *_TRAFFIC or C_TRAFFICSYNC command.

Corresponding low-level API class: P_TRAFFICERR

# Traffic Control - Traffic Error
resp = await port.traffic.error.get()
resp.error

8.2.4.3.10.6. Single Frame TX

Transmits a single packet from a port, independent of the stream definitions, and independent of whether traffic is on. A valid Frame Check Sum is written into the final four bytes.

Corresponding low-level API class: P_XMITONE

# Traffic Control - Single Frame TX
await port.tx_single_pkt.send.set(hex_data=Hex("00000000000102030405060800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"))

8.2.4.3.10.7. Single Frame Time

The time at which the latest packet was transmitted using the P_XMITONE command. The time reference is the same used by the time stamps of captured packets.

Corresponding low-level API class: P_XMITONETIME

# Traffic Control - Single Frame Time
resp = await port.tx_single_pkt.time.get()
resp.nanoseconds