# RFC 9097 §7: IP-Layer Sender Bit Rate Singleton Metric Definitions

The 10 Requirements of RFC 9097 §7, each quoted from the RFC with its state and the tests that prove it. [Conformance](index.md) explains the states.

| State | Requirements |
|---|--:|
| Tested | 7 |
| Deviation | 1 |
| Not applicable | 2 |

## RFC9097-7.2-1 {#RFC9097-7.2-1}

**Not applicable**

> This section lists the REQUIRED input factors to specify the metric, beyond those listed in Section 4.

Note: An introduction to the section's Requirements, each recorded with its own ID; nothing to do beyond them.

## RFC9097-7.2-L1 {#RFC9097-7.2-L1}

**Tested**

> The nominal duration of N sub-intervals in S (default st = 0.05 seconds).

Note: st, one Trial Interval.

Proving tests:

- [`crates/udpstp-core/tests/sub_interval_results.rs::an_upstream_client_reports_what_it_sent_per_st`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/sub_interval_results.rs)

## RFC9097-7.2-2 {#RFC9097-7.2-2}

**Tested**

> S SHALL be longer than I, primarily to account for on-demand activation of the path, or any preamble to testing required, and the delay of the path.

Proving tests:

- [`crates/udpstp-core/tests/stop_exchange.rs::the_test_stops_gracefully_when_the_servers_test_interval_ends`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/stop_exchange.rs)

## RFC9097-7.2-3 {#RFC9097-7.2-3}

**Tested**

> st SHOULD be much smaller than the sub-interval dt and on the same order as FT; otherwise, the rate measurement will include many rate adjustments and include more time smoothing, possibly smoothing the interval that contains the Maximum IP-Layer Capacity (and therefore losing relevance).

Proving tests:

- [`crates/udpstp-core/tests/sub_interval_results.rs::an_upstream_client_reports_what_it_sent_per_st`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/sub_interval_results.rs)

## RFC9097-7.3-1 {#RFC9097-7.3-1}

**Not applicable**

> This section defines the REQUIRED aspects of the IP-Layer Sender Bit Rate Metric (unless otherwise indicated) for measurements at the specified Source on packets addressed for the intended Destination host and matching the required Type-P:

Note: An introduction to the section's Requirements, each recorded with its own ID; nothing to do beyond them.

## RFC9097-7.3-2 {#RFC9097-7.3-2}

**Tested**

> Define the IP-Layer Sender Bit Rate, B(S,st), to be the number of IP- Layer bits (including header and data fields) that are transmitted from the Source with address pair Src and Dst during one contiguous sub-interval, st, during the test interval S (where S SHALL be longer than I) and where the fixed-size packet count during that single sub- interval st also provides the number of IP-Layer bits in any interval, [stn,stn+1].

Note: IP-Layer Sender Bit Rate.

Proving tests:

- [`crates/udpstp-core/tests/sub_interval_results.rs::an_upstream_client_reports_what_it_sent_per_st`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/sub_interval_results.rs)

## RFC9097-7.3-3 {#RFC9097-7.3-3}

**Tested**

> Measurements according to this definition SHALL use the UDP transport layer.

Proving tests:

- [`crates/udpstp/tests/loopback.rs::a_client_completes_the_control_phase_over_ipv4_loopback`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp/tests/loopback.rs)

## RFC9097-7.3-4 {#RFC9097-7.3-4}

**Deviation**

> Any feedback from the Dst host to the Src host received by the Src host during an interval [stn,stn+1] SHOULD NOT result in an adaptation of the Src host traffic conditioning during this interval (rate adjustment occurs on st interval boundaries).

Recorded in [rate-changes-when-a-status-pdu-arrives](../conformance/deviations.md#rate-changes-when-a-status-pdu-arrives).

## RFC9097-7.4-1 {#RFC9097-7.4-1}

**Tested**

> Both the Sender and Receiver (or Source and Destination) bit rates SHOULD be assessed as part of an IP-Layer Capacity measurement.

Proving tests:

- [`crates/udpstp/src/results.rs::an_upstream_test`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp/src/results.rs)
- [`crates/udpstp/tests/loopback.rs::fixed_rate_tests_complete_over_loopback`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp/tests/loopback.rs)
- [`crates/udpstp-core/src/data_phase.rs::sender_estimate_keeps_ordinary_gaps_duplicates_and_out_of_order_load`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/src/data_phase.rs)
- [`crates/udpstp-core/tests/sender_estimate.rs::the_estimate_follows_what_the_server_sent_despite_loss`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/sender_estimate.rs)
- [`crates/udpstp-core/tests/sub_interval_results.rs::an_upstream_client_reports_what_it_sent_per_st`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/sub_interval_results.rs)

## RFC9097-7.5-1 {#RFC9097-7.5-1}

**Tested**

> The IP-Layer Sender Bit Rate SHALL be reported with meaningful resolution, in units of Megabits per second (which, to avoid any confusion, is 1,000,000 bits per second).

Proving tests:

- [`crates/udpstp/src/results.rs::an_upstream_test`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp/src/results.rs)

