# RFC 9097 §10: Security Considerations

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

| State | Requirements |
|---|--:|
| Tested | 6 |
| Operational | 1 |

## RFC9097-10-1 {#RFC9097-10-1}

**Operational**

> Cooperating Source and Destination hosts and agreements to test the path between the hosts are REQUIRED.

Note: Agreements between the parties that run the hosts.

## RFC9097-10-2 {#RFC9097-10-2}

**Tested**

> It is REQUIRED to have a user client-initiated setup handshake between cooperating hosts that allows firewalls to control inbound unsolicited UDP traffic that goes to either a control port (expected and with authentication) or ephemeral ports that are only created as needed.

Note: Setup exchange on the Standard Port; Test Connections on Ephemeral Ports.

Proving tests:

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

## RFC9097-10-3 {#RFC9097-10-3}

**Tested**

> Client-server authentication and integrity protection for feedback messages conveying measurements are RECOMMENDED.

Note: Authentication Mode 2 (RFC 9946 section 5.3.2).

Proving tests:

- [`crates/udpstp-core/tests/auth_mode_default.rs::a_server_without_mode_2_is_reported_and_the_client_does_not_fall_back`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/auth_mode_default.rs)
- [`crates/udpstp-core/tests/mode2_status.rs::each_status_pdu_is_signed_with_its_sender_s_key`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/mode2_status.rs)

## RFC9097-10-4 {#RFC9097-10-4}

**Tested**

> Hosts MUST limit the number of simultaneous tests to avoid resource exhaustion and inaccurate results.

Note: Admission.

Proving tests:

- [`crates/udpstp-core/src/admission.rs::a_cap_full_of_activated_tests_still_refuses`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/src/admission.rs)
- [`crates/udpstp-core/tests/unactivated_share.rs::a_new_setup_evicts_the_oldest_unactivated_test_connection`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/unactivated_share.rs)

## RFC9097-10-5 {#RFC9097-10-5}

**Tested**

> Senders MUST be rate limited.

Note: Sending Rate Table; Admitted Rate Cap.

Proving tests:

- [`crates/udpstp-core/tests/algorithm_b.rs::rows_stay_within_the_table_and_fast_mode_stops_at_1_gbps`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/algorithm_b.rs)
- [`crates/udpstp-core/tests/algorithm_capped.rs::fast_mode_stops_at_the_row_matching_max_bandwidth`](https://github.com/pederbe/udpstp/blob/c88fe32e0973594682a069c58de24fd703714277/crates/udpstp-core/tests/algorithm_capped.rs)

## RFC9097-10-L1 {#RFC9097-10-L1}

**Tested**

> The recommended load control search algorithm results in "ramp-up" from the lowest rate in the table.

Note: A Search Test starts at row 0 unless srIndexConf asks otherwise.

Proving tests:

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

## RFC9097-10-6 {#RFC9097-10-6}

**Tested**

> Testing with the Service Provider's measurement hosts SHOULD be limited in frequency and/or overall volume of test traffic (for example, the range of duration values, I, SHOULD be limited).

Note: testIntTime's maximum.

Proving tests:

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

