Pull request: AG-28771-conf-ups-mode

Squashed commit of the following:

commit 20444221d69579a4fbcdcc7912f9707014ada93c
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Dec 22 13:06:00 2023 +0200

    Configuration: upstreams

commit 1064b37c01c91c739bbf880da1bc995a6b61d1a8
Merge: e04dbf1 44aab90
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Dec 22 12:16:16 2023 +0200

    Merge remote-tracking branch 'origin/master' into AG-28771-conf-ups-mode

commit e04dbf102a6f0ec55d76b9780a8508f8f9b800cc
Author: Dimitry Kolyshev <dkolyshev@adguard.com>
Date:   Fri Dec 22 12:15:17 2023 +0200

    Configuration: upstreams
Dimitry Kolyshev 2023-12-25 14:17:07 +03:00
parent 44aab90450
commit 0169bf11de
1 changed files with 19 additions and 7 deletions

@ -510,14 +510,26 @@ Settings are stored in [YAML format](https://en.wikipedia.org/wiki/YAML), possib
**Since v0.108.0-b.4** the domain-specific upstreams are validated for **Since v0.108.0-b.4** the domain-specific upstreams are validated for
being a valid ARPA domain pointing to a locally-served network. being a valid ARPA domain pointing to a locally-served network.
- `all_servers`: Enables parallel queries to all configured upstream servers - `all_servers` (**before v0.107.44**): Enables parallel queries to all
to speed up resolving. If enabled, the queries are sent to each server configured upstream servers to speed up resolving. If enabled, the queries
simultaneously and the first response is chosen. If disabled, the queries are sent to each server simultaneously and the first response is chosen.
are sent to each upstream server one-by-one and then sorted by RTT. Note If disabled, the queries are sent to each upstream server one-by-one and
that more stable upstream servers are preferred by the algorithm. then sorted by RTT. Note that more stable upstream servers are preferred
by the algorithm.
- `fastest_addr`: Use the Fastest Address algorithm. It finds an IP address - `fastest_addr` (**before v0.107.44**): Use the Fastest Address algorithm.
with the lowest latency and returns this IP address in DNS response. It finds an IP address with the lowest latency and returns this IP address
in DNS response.
- `upstream_mode` (**since v0.107.44**): The mode describes the logic
through which the upstreams will be used. The possible values are:
- `load_balance`: Queries are sent to each upstream server one-by-one.
AdGuard Home uses its weighted random server selection algorithm to use
the fastest server more often.
- `parallel`: Parallel queries to all configured upstream servers to speed
up resolving.
- `fastest_addr`: It finds an IP address with the lowest latency and
returns this IP address in DNS response.
- `fastest_timeout` (**since v0.107.0**): The timeout used for dialing the - `fastest_timeout` (**since v0.107.0**): The timeout used for dialing the
addresses while picking the fastest. Values other than positive ones are addresses while picking the fastest. Values other than positive ones are