mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-20 17:00:49 +00:00
Tune NAT-t keepalives so that timing is better obeyed, clean up a build warning, and fix a potential source of network recursion (though harmless).
This commit is contained in:
parent
13f14c2f4c
commit
7d62dbe9f7
@ -264,7 +264,7 @@
|
||||
* This is also how often pings will be retried to upstream peers (relays, roots)
|
||||
* constantly until something is heard.
|
||||
*/
|
||||
#define ZT_PING_CHECK_INVERVAL 6250
|
||||
#define ZT_PING_CHECK_INVERVAL 9500
|
||||
|
||||
/**
|
||||
* Delay between ordinary case pings of direct links
|
||||
|
@ -448,7 +448,6 @@ class _AnnounceMulticastGroupsToAll
|
||||
public:
|
||||
_AnnounceMulticastGroupsToAll(const RuntimeEnvironment *renv,Network *nw) :
|
||||
_now(renv->node->now()),
|
||||
RR(renv),
|
||||
_network(nw),
|
||||
_rootAddresses(renv->topology->rootAddresses()),
|
||||
_allMulticastGroups(nw->_allMulticastGroups())
|
||||
@ -458,7 +457,6 @@ public:
|
||||
|
||||
private:
|
||||
uint64_t _now;
|
||||
const RuntimeEnvironment *RR;
|
||||
Network *_network;
|
||||
std::vector<Address> _rootAddresses;
|
||||
std::vector<MulticastGroup> _allMulticastGroups;
|
||||
|
@ -173,6 +173,7 @@ void Peer::attemptToContactAt(const RuntimeEnvironment *RR,const InetAddress &lo
|
||||
RR->identity.serialize(outp,false);
|
||||
atAddress.serialize(outp);
|
||||
outp.armor(_key,false); // HELLO is sent in the clear
|
||||
RR->antiRec->logOutgoingZT(outp.data(),outp.size());
|
||||
RR->node->putPacket(localAddr,atAddress,outp.data(),outp.size());
|
||||
}
|
||||
|
||||
@ -182,12 +183,12 @@ void Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now)
|
||||
RemotePath *const bestPath = _getBestPath(now);
|
||||
if (bestPath) {
|
||||
if ((now - bestPath->lastReceived()) >= ZT_PEER_DIRECT_PING_DELAY) {
|
||||
TRACE("PING %s(%s)",_id.address().toString().c_str(),bestPath->address().toString().c_str());
|
||||
TRACE("PING %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),bestPath->address().toString().c_str(),now - bestPath->lastSend(),now - bestPath->lastReceived());
|
||||
attemptToContactAt(RR,bestPath->localAddress(),bestPath->address(),now);
|
||||
bestPath->sent(now);
|
||||
} else if (((now - bestPath->lastSend()) >= ZT_NAT_KEEPALIVE_DELAY)&&(!bestPath->reliable())) {
|
||||
TRACE("NAT keepalive %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),bestPath->address().toString().c_str(),now - bestPath->lastSend(),now - bestPath->lastReceived());
|
||||
_natKeepaliveBuf += (uint32_t)((now * 0x9e3779b1) >> 1); // tumble this around to send constantly varying (meaningless) payloads
|
||||
TRACE("NAT keepalive %s(%s)",_id.address().toString().c_str(),bestPath->address().toString().c_str());
|
||||
RR->node->putPacket(bestPath->localAddress(),bestPath->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf));
|
||||
bestPath->sent(now);
|
||||
}
|
||||
@ -202,6 +203,8 @@ void Peer::pushDirectPaths(const RuntimeEnvironment *RR,RemotePath *path,uint64_
|
||||
_lastDirectPathPush = now;
|
||||
|
||||
std::vector<Path> dps(RR->node->directPaths());
|
||||
if (dps.empty())
|
||||
return;
|
||||
|
||||
#ifdef ZT_TRACE
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user