mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
The default send and receive buffer sizes on Linux are too small (only ~200 KB). Checking `nstat` after an iperf run revealed that the number of dropped packets in the first interval directly correlates with the number of receive buffer errors reported by `nstat`. We already try to increase the send and receive buffer sizes for our UDP socket but unfortunately, we cannot increase them beyond what the system limits them to. To workaround this, we try to set `rmem_max` and `wmem_max` during startup of the Linux headless client and Gateway. This behaviour can be disabled by setting `FIREZONE_NO_INC_BUF=true`. This doesn't work in Docker unfortunately, so we set the values manually in the CI perf tests and verify after the test that we didn't encounter any send and receive buffer errors. It is yet to be determined how we should deal with this problem for all the GUI clients. See #10350 as an issue tracking that. Unfortunately, this doesn't fix all packet drops during the first iperf interval. With this PR, we now see packet drops on the interface itself.
49 lines
1.9 KiB
TOML
49 lines
1.9 KiB
TOML
[package]
|
|
name = "firezone-headless-client"
|
|
# mark:next-headless-version
|
|
version = "1.5.4"
|
|
edition = { workspace = true }
|
|
authors = ["Firezone, Inc."]
|
|
license = { workspace = true }
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
anyhow = { workspace = true }
|
|
backoff = { workspace = true }
|
|
clap = { workspace = true, features = ["derive", "env", "string"] }
|
|
client-shared = { workspace = true }
|
|
connlib-model = { workspace = true }
|
|
dns-types = { workspace = true }
|
|
firezone-bin-shared = { workspace = true }
|
|
firezone-logging = { workspace = true }
|
|
firezone-telemetry = { workspace = true }
|
|
futures = { workspace = true }
|
|
humantime = { workspace = true }
|
|
ip-packet = { workspace = true }
|
|
opentelemetry = { workspace = true, features = ["metrics"] }
|
|
opentelemetry-otlp = { workspace = true, features = ["metrics", "grpc-tonic"] }
|
|
opentelemetry-stdout = { workspace = true, features = ["metrics"] }
|
|
opentelemetry_sdk = { workspace = true, features = ["rt-tokio"] }
|
|
phoenix-channel = { workspace = true }
|
|
rustls = { workspace = true }
|
|
secrecy = { workspace = true }
|
|
socket-factory = { workspace = true }
|
|
# This actually relies on many other features in Tokio, so this will probably
|
|
# fail to build outside the workspace. <https://github.com/firezone/firezone/pull/4328#discussion_r1540342142>
|
|
tokio = { workspace = true, features = ["macros", "signal", "process", "time", "fs", "rt"] }
|
|
tokio-stream = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true, features = ["env-filter"] }
|
|
url = { workspace = true }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
libc = { workspace = true }
|
|
nix = { workspace = true, features = ["fs", "user", "socket"] }
|
|
sd-notify = { workspace = true }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
known-folders = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|