diff --git a/easytier/src/dns/config/dns.rs b/easytier/src/dns/config/dns.rs index 9f999196..6b096d11 100644 --- a/easytier/src/dns/config/dns.rs +++ b/easytier/src/dns/config/dns.rs @@ -1,6 +1,6 @@ use crate::dns::config::policy::DnsPolicyConfig; use crate::dns::config::zone::ZoneConfig; -use crate::dns::config::{DNS_DEFAULT_ADDRESS, DNS_DEFAULT_TLD}; +use crate::dns::config::{DNS_DEFAULT_ADDRESS, DNS_DEFAULT_DOMAIN}; use crate::dns::server::DnsServer; use crate::dns::utils::addr::NameServerAddrGroup; use crate::dns::utils::parse; @@ -23,7 +23,7 @@ pub struct DnsConfig { #[serde(flatten)] pub policies: HashMap, name: LowerName, - #[derivative(Default(value = "DNS_DEFAULT_TLD.clone()"))] + #[derivative(Default(value = "DNS_DEFAULT_DOMAIN.clone()"))] pub domain: LowerName, #[derivative(Default(value = "vec![DNS_DEFAULT_ADDRESS].into()"))] #[serde(deserialize_with = "DnsConfig::deserialize_addresses")] diff --git a/easytier/src/dns/config/mod.rs b/easytier/src/dns/config/mod.rs index bcf85e28..220c91a9 100644 --- a/easytier/src/dns/config/mod.rs +++ b/easytier/src/dns/config/mod.rs @@ -12,18 +12,14 @@ pub use dns::*; mod policy; pub mod zone; -pub static DNS_DEFAULT_TLD: LazyLock = +pub static DNS_DEFAULT_DOMAIN: LazyLock = LazyLock::new(|| LowerName::from_str("et.net.").unwrap()); pub const DNS_DEFAULT_ADDRESS: NameServerAddr = NameServerAddr { protocol: Protocol::Udp, addr: SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(100, 100, 100, 101), 53)), }; -pub static DNS_SERVER_RPC_ADDR: LazyLock = - LazyLock::new(|| Url::parse("tcp://127.0.0.1:49813").unwrap()); -pub const DNS_SERVER_ELECTION_INTERVAL: Duration = Duration::from_secs(5); - -pub(super) static DNS_SUPPORTED_PROTOCOLS: [Protocol; 2] = [ +pub static DNS_SUPPORTED_PROTOCOLS: [Protocol; 2] = [ Protocol::Udp, Protocol::Tcp, // Protocol::Tls, @@ -31,3 +27,12 @@ pub(super) static DNS_SUPPORTED_PROTOCOLS: [Protocol; 2] = [ // Protocol::Quic, // Protocol::H3, ]; + +pub static DNS_SERVER_RPC_ADDR: LazyLock = + LazyLock::new(|| Url::parse("tcp://127.0.0.1:49813").unwrap()); + +pub const DNS_NODE_TTI: Duration = Duration::from_secs(5); + +pub const DNS_NODE_RR_INTERVAL: Duration = Duration::from_secs(1); +pub const DNS_SERVER_ELECTION_INTERVAL: Duration = Duration::from_secs(5); +pub const DNS_PEER_TTI: Duration = Duration::from_secs(3); diff --git a/easytier/src/dns/node.rs b/easytier/src/dns/node.rs index 9c9e9baf..fe91a034 100644 --- a/easytier/src/dns/node.rs +++ b/easytier/src/dns/node.rs @@ -1,6 +1,8 @@ use crate::common::global_ctx::{ArcGlobalCtx, GlobalCtxEvent}; use crate::common::join_joinset_background; -use crate::dns::config::{DnsGlobalCtxExt, DNS_SERVER_ELECTION_INTERVAL, DNS_SERVER_RPC_ADDR}; +use crate::dns::config::{ + DnsGlobalCtxExt, DNS_NODE_RR_INTERVAL, DNS_SERVER_ELECTION_INTERVAL, DNS_SERVER_RPC_ADDR, +}; use crate::dns::peer_mgr::DnsPeerMgr; use crate::dns::server::DnsServer; #[cfg(feature = "tun")] @@ -13,7 +15,6 @@ use crate::proto::rpc_types::controller::BaseController; use crate::tunnel::tcp::{TcpTunnelConnector, TcpTunnelListener}; use crate::utils::AsyncRuntime; use std::sync::{Arc, Mutex}; -use std::time::Duration; use tokio::sync::{broadcast, Notify}; use tokio::task::JoinSet; use tokio::time::{sleep, sleep_until, Instant}; @@ -132,7 +133,6 @@ impl DnsNode { ..Default::default() }; - let rr_interval = Duration::from_secs(1); let mut last_heartbeat = Instant::now(); let sleep = sleep_until(last_heartbeat); tokio::pin!(sleep); @@ -145,9 +145,9 @@ impl DnsNode { // Dynamic interval: slower if dirty (throttled), faster if clean (fast liveness check) let next_heartbeat = last_heartbeat + if self.mgr.dirty.peek() { - rr_interval + DNS_NODE_RR_INTERVAL } else { - rr_interval / 4 + DNS_NODE_RR_INTERVAL / 4 }; sleep.as_mut().reset(next_heartbeat); @@ -250,6 +250,7 @@ mod tests { use crate::proto::rpc_types; use crate::tunnel::common::tests::wait_for_condition; use std::sync::atomic::{AtomicBool, Ordering}; + use std::time::Duration; use tokio::sync::Mutex; #[derive(Debug)] diff --git a/easytier/src/dns/node_mgr.rs b/easytier/src/dns/node_mgr.rs index d2115079..fe586ae5 100644 --- a/easytier/src/dns/node_mgr.rs +++ b/easytier/src/dns/node_mgr.rs @@ -1,3 +1,4 @@ +use crate::dns::config::DNS_NODE_TTI; use crate::dns::utils::addr::NameServerAddr; use crate::dns::utils::dirty::DirtyFlag; use crate::dns::zone::{Zone, ZoneGroup}; @@ -11,7 +12,6 @@ use hickory_server::authority::Catalog; use itertools::Itertools; use moka::future::Cache; use std::collections::HashSet; -use std::time::Duration; use tracing::instrument; use uuid::Uuid; @@ -36,8 +36,6 @@ impl TryFrom<&DnsSnapshot> for DnsNodeInfo { } } -const DNS_NODE_TTI: Duration = Duration::from_secs(5); - #[derive(Debug, Default)] pub struct DnsNodeMgrDirtyFlags { pub catalog: DirtyFlag, diff --git a/easytier/src/dns/peer_mgr.rs b/easytier/src/dns/peer_mgr.rs index b4e74e65..ef39725a 100644 --- a/easytier/src/dns/peer_mgr.rs +++ b/easytier/src/dns/peer_mgr.rs @@ -1,6 +1,6 @@ use crate::common::global_ctx::ArcGlobalCtx; use crate::common::PeerId; -use crate::dns::config::{DnsExportConfig, DnsGlobalCtxExt}; +use crate::dns::config::{DnsExportConfig, DnsGlobalCtxExt, DNS_PEER_TTI}; use crate::dns::utils::dirty::DirtyFlag; use crate::dns::zone::ZoneGroup; use crate::peer_center::instance::PeerCenterPeerManagerTrait; @@ -18,7 +18,6 @@ use itertools::Itertools; use moka::future::Cache; use std::ops::Deref; use std::sync::Arc; -use std::time::Duration; use tracing::instrument; #[derive(Debug, Clone)] @@ -39,8 +38,6 @@ impl TryFrom for DnsPeerInfo { } } -const DNS_PEER_TTI: Duration = Duration::from_secs(3); - #[derive(Debug)] pub struct DnsPeerMgrInner { peers: Cache, diff --git a/easytier/src/dns/server.rs b/easytier/src/dns/server.rs index 0b10c3e9..900e148f 100644 --- a/easytier/src/dns/server.rs +++ b/easytier/src/dns/server.rs @@ -286,8 +286,7 @@ impl DnsServer { if let Some(system) = nic_ctx .ifname() .await - .map(|ifname| system::get(&ifname).ok()) - .flatten() + .and_then(|ifname| system::get(&ifname).ok()) .flatten() { let _ = system.clean();