measurement: adapt the echo probe rate to loss and RTT, and weight samples by the time they stand for
udp_echo and tcp_echo run at the lowest rate that still proves the loss bound and keeps the RTT p99 confidence interval within tolerance, go to the maximum when the line loses packets or its RTT rises, and back off exponentially when it is unreachable. Every echo row carries a weight (the time it stands for, in grid intervals) and the analysis ops accumulate loss and RTT by it, so p50/p95/p99 and loss stay time-averaged when the rate changes. State changes are logged for audit.
This commit is contained in:
1 parent
57acecdb86
commit
e0376b5e33
15 files changed
+858
-55
No files matched your search
@@ -186,6 +186,8 @@ public sealed class BlockSpec
|
||||
|
||||
public long Int(string name) => Params.GetInt(name);
|
||||
|
||||
public double Number(string name) => Params.GetNumber(name);
|
||||
|
||||
public bool Bool(string name) => Params.GetBool(name);
|
||||
|
||||
/// <summary>参数或端口变化时调和器重启这个积木(不含流编号:Agent 的流编号每次重建都会重新分配)。</summary>
|
||||
@@ -221,6 +223,9 @@ public sealed class BlockEnv
|
||||
|
||||
public QuicDatagramTransport? Datagrams { get; init; }
|
||||
|
||||
/// <summary>拨号方:这条线路在每个时刻(单调时钟,微秒)丢包的历史概率(0 到 1),自适应探测用它在高发时段提前升频;没有历史为 null。</summary>
|
||||
public Func<long, double?>? LossPrior { get; init; }
|
||||
|
||||
/// <summary>监听方的准入策略(限速等);拨号方为 null。</summary>
|
||||
public IAdmission? Admission { get; init; }
|
||||
|
||||
@@ -257,6 +262,7 @@ public sealed class BlockEnv
|
||||
Log = Log,
|
||||
Session = () => session,
|
||||
Datagrams = Datagrams,
|
||||
LossPrior = LossPrior,
|
||||
Admission = Admission,
|
||||
Counters = Counters,
|
||||
TcpListen = TcpListen,
|
||||
|
||||
Reference in new issue
Block a user