pub struct ProbeRateLimitConfig {
pub per_peer_rate_per_sec: Option<f64>,
pub per_peer_burst: Option<u32>,
pub per_ip_rate_per_sec: Option<f64>,
pub per_ip_burst: Option<u32>,
pub global_rate_per_sec: Option<f64>,
pub global_burst: Option<u32>,
pub max_tracked_per_ip: Option<usize>,
pub max_tracked_per_peer: Option<usize>,
}Expand description
[probe.rate_limit] — three-layer token-bucket settings (ADR 005 §Probe
rate limiting).
Mirrors [dht.rate_limit] in shape; only the defaults differ (ADR 005
specifies a tighter per-peer cap than ADR 022’s DHT layer because a probe
is unauthenticated and cheaper to flood). Setting any *_rate_per_sec to
0.0 disables that layer (operator opt-out); the matching *_burst must
also be 0 to avoid a deny-all configuration — the resolver enforces this
pairing, the same way security.per_source_* and dht.rate_limit.* are
paired.
Fields§
§per_peer_rate_per_sec: Option<f64>Per-peer (source NodeId) sustained rate. Absent => 5 req/s
(ADR 005 §Probe rate limiting). 0.0 disables the layer.
per_peer_burst: Option<u32>Per-peer burst capacity. Absent => 5. Required > 0 when
per_peer_rate_per_sec > 0.
per_ip_rate_per_sec: Option<f64>Per-IP sustained rate. Absent => 50 req/s. 0.0 disables.
per_ip_burst: Option<u32>Per-IP burst capacity. Absent => 200.
global_rate_per_sec: Option<f64>Global inbound probe sustained rate. Absent => 1000 req/s.
global_burst: Option<u32>Global inbound probe burst capacity. Absent => 2000.
max_tracked_per_ip: Option<usize>Hard cap on the per-IP keyed-limiter map. Absent => 4096. 0
makes the map unbounded — operator opt-in (#645).
max_tracked_per_peer: Option<usize>Hard cap on the per-peer (NodeId) keyed-limiter map. Absent =>
4096. 0 makes the map unbounded (#645).
Trait Implementations§
Source§impl Debug for ProbeRateLimitConfig
impl Debug for ProbeRateLimitConfig
Source§impl Default for ProbeRateLimitConfig
impl Default for ProbeRateLimitConfig
Source§impl<'de> Deserialize<'de> for ProbeRateLimitConfig
impl<'de> Deserialize<'de> for ProbeRateLimitConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for ProbeRateLimitConfig
impl RefUnwindSafe for ProbeRateLimitConfig
impl Send for ProbeRateLimitConfig
impl Sync for ProbeRateLimitConfig
impl Unpin for ProbeRateLimitConfig
impl UnsafeUnpin for ProbeRateLimitConfig
impl UnwindSafe for ProbeRateLimitConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more