RFC 9946 §4: Protocol Overview
The 15 Requirements of RFC 9946 §4, each quoted from the RFC with its state and the tests that prove it. Conformance explains the states.
| State | Requirements |
|---|---|
| Tested | 8 |
| Deviation | 1 |
| Operational | 6 |
RFC9946-4-1
Tested
All messages defined by this document SHALL use UDP transport [RFC0768].
Proving tests:
RFC9946-4-L1
Tested
It is the responsibility of the client process to manage the inter-related connections such as handling the individual connection setup successes and failures, cleaning up connections during a test (should some fail), and aggregating the individual test results into an overall set of performance statistics.
Note: Multi-Connection Test: Minimum Test Connections, failed Test Connections, the aggregate Sub-Interval.
Conformance Records: minimum-test-connections, multi-connection-isolated-failures, aggregate-clock-delta-min.
Proving tests:
crates/udpstp-core/tests/multi_connection_aggregation.rs::the_summed_capacity_never_exceeds_the_shared_bottleneckcrates/udpstp-core/tests/multi_connection_aggregation.rs::upstream_sub_intervals_are_summed_by_number_and_their_offset_measuredcrates/udpstp-core/tests/multi_connection_failures.rs::the_test_goes_on_when_one_fails_and_enough_remaincrates/udpstp-core/tests/multi_connection_failures.rs::below_the_minimum_the_rest_are_stopped_and_releasedcrates/udpstp-core/tests/multi_connection_failures.rs::test_connections_that_fall_silent_together_stop_the_testcrates/udpstp-core/tests/multi_connection_failures.rs::failures_are_counted_until_too_few_remaincrates/udpstp-core/tests/multi_connection_failures.rs::failures_apart_are_isolated_onescrates/udpstp-core/tests/multi_connection_start.rs::too_few_setups_abort_the_test_before_any_activationcrates/udpstp-core/tests/multi_connection_start.rs::a_lower_minimum_goes_on_with_the_setups_that_succeededcrates/udpstp-core/tests/multi_connection_start.rs::an_unanswered_setup_is_given_up_once_enough_have_succeededcrates/udpstp-core/tests/multi_connection_start.rs::servers_that_set_different_parameters_abort_the_testcrates/udpstp-core/tests/multi_connection_start.rs::an_acceptance_that_arrives_after_the_abort_is_stopped_at_once
RFC9946-4-L2
Tested
The server instance(s) would process each connection independently, as if they were coming from separate clients.
Conformance Records: multi-connection-agreement-checks.
Proving tests:
RFC9946-4-L3
Tested
Test Setup Request and Response: If a server instance is identified with a host name that resolves to both IPv4/IPv6 addresses, it is recommended to use the first address returned in the name resolution response, regardless of whether it is IPv4 or IPv6.
Note: Client host name resolution.
Proving tests:
RFC9946-4-L4
Tested
Distinct UDP port numbers will be assigned if all Setup Response messages originate from the same server in that case.
Note: An Ephemeral Port per Test Connection.
Proving tests:
RFC9946-4.1-1
Operational
Fixed-rate testing SHOULD only be activated for operation and maintenance purposes by operators within their local network domain.
Note: Who runs a Fixed-Rate Test, and where; the software limits it to Operator Keys (RFC9946-4.1-3).
RFC9946-4.1-2
Operational
If a subscriber requests a diagnostic test from the network operator, it strongly implies that there is no certainty on the bottleneck capacity and initiating a UDP Speed Test based on the load adjustment algorithm is RECOMMENDED.
Note: An operator’s choice of test.
RFC9946-4.1-3
Tested
To protect against misuse, a client (and in general, a consumer) MUST NOT be able to initiate a fixed-rate test.
Note: A Fixed-Rate Test needs an Operator Key.
Conformance Records: fixed-rate-needs-operator-key.
Proving tests:
crates/udpstp-core/tests/fixed_rate.rs::a_fixed_rate_test_is_refused_without_an_operator_keycrates/udpstp-core/tests/fixed_rate.rs::a_refused_downstream_fixed_rate_test_sends_no_load
RFC9946-4.1-L1
Tested
A network operator may conduct a fixed-rate test for a stable measurement at or near the maximum determined by the load rate adjustment algorithm for debugging purposes.
Note: srIndexConf a row with CHTA_SRIDX_ISSTART clear, under an Operator Key.
Proving tests:
crates/udpstp-core/tests/algorithm_b.rs::a_fixed_rate_test_holds_its_rowcrates/udpstp-core/tests/fixed_rate.rs::an_operator_runs_a_fixed_rate_test_at_the_requested_row
RFC9946-4.2-L1
Operational
Measurements that generate traffic on shared paths (including Wi-Fi and Internet paths) need to consider the impact on other traffic.
Note: A deployment statement.
RFC9946-4.2-L2
Operational
Fixed-rate testing operates without congestion control and therefore must not be executed over other operators’ network segments.
Note: Where an operator runs a Fixed-Rate Test.
RFC9946-4.2-L3
Operational
Fixed- rate testing, therefore, is limited to paths within a domain entirely managed and operated section-wise and end-to-end by the network operator performing the measurement.
Note: Where an operator runs a Fixed-Rate Test.
RFC9946-4.2-L4
Operational
When the risks of disruption to other flows has been considered, testing could be extended to include adjacent operational domains for which there is also a testing agreement.
Note: Where an operator runs a Fixed-Rate Test.
RFC9946-4.2-1
Deviation
The number of concurrent independent tests of a path SHALL be limited to one, regardless of the number of flows.
Note: Server admission: one activated Test per source.
Recorded in tests-per-source-above-one.
Conformance Records: path-approximated-by-source.
Proving tests:
crates/udpstp-core/src/admission.rs::the_test_connections_of_one_test_are_one_testcrates/udpstp-core/tests/tests_per_source.rs::a_second_test_from_the_same_source_is_refused_at_setupcrates/udpstp-core/tests/tests_per_source.rs::of_two_tests_set_up_together_the_second_is_refused_at_activation
RFC9946-4.2-L5
Tested
A load rate adjustment algorithm (see Section 5.1) is required to mitigate the impact of this congestion and to limit the duration of any congestion by terminating the test when sudden impairments or a loss of connectivity is detected.
Conformance Records: multi-connection-path-failure.
Proving tests: