mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-02 07:20:51 +00:00
Temporarily disable the symmetric NAT port prediction code since the current version adds protocol overhead and probably is not that effective.
This commit is contained in:
parent
e3e5137757
commit
ee8682ac75
@ -163,6 +163,7 @@ void Peer::received(
|
|||||||
}
|
}
|
||||||
} else break;
|
} else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the path isn't a duplicate of the same localSocket AND we haven't already determined a replacePath,
|
// If the path isn't a duplicate of the same localSocket AND we haven't already determined a replacePath,
|
||||||
// then find the worst path and replace it.
|
// then find the worst path and replace it.
|
||||||
if (!redundant && replacePath == ZT_MAX_PEER_NETWORK_PATHS) {
|
if (!redundant && replacePath == ZT_MAX_PEER_NETWORK_PATHS) {
|
||||||
@ -180,6 +181,7 @@ void Peer::received(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (replacePath != ZT_MAX_PEER_NETWORK_PATHS) {
|
if (replacePath != ZT_MAX_PEER_NETWORK_PATHS) {
|
||||||
if (verb == Packet::VERB_OK) {
|
if (verb == Packet::VERB_OK) {
|
||||||
RR->t->peerLearnedNewPath(tPtr,networkId,*this,path,packetId);
|
RR->t->peerLearnedNewPath(tPtr,networkId,*this,path,packetId);
|
||||||
@ -203,15 +205,14 @@ void Peer::received(
|
|||||||
// all known external addresses for ourselves. We now do this even if we
|
// all known external addresses for ourselves. We now do this even if we
|
||||||
// have a current path since we'll want to use new ones too.
|
// have a current path since we'll want to use new ones too.
|
||||||
if (this->trustEstablished(now)) {
|
if (this->trustEstablished(now)) {
|
||||||
if ((now - _lastDirectPathPushSent) >= ZT_DIRECT_PATH_PUSH_INTERVAL) {
|
const uint64_t sinceLastPush = now - _lastDirectPathPushSent;
|
||||||
|
if (sinceLastPush >= ZT_DIRECT_PATH_PUSH_INTERVAL) {
|
||||||
_lastDirectPathPushSent = now;
|
_lastDirectPathPushSent = now;
|
||||||
|
|
||||||
std::vector<InetAddress> pathsToPush;
|
// Start with explicitly known direct endpoint paths.
|
||||||
|
std::vector<InetAddress> pathsToPush(RR->node->directPaths());
|
||||||
std::vector<InetAddress> dps(RR->node->directPaths());
|
|
||||||
for(std::vector<InetAddress>::const_iterator i(dps.begin());i!=dps.end();++i)
|
|
||||||
pathsToPush.push_back(*i);
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
// Do symmetric NAT prediction if we are communicating indirectly.
|
// Do symmetric NAT prediction if we are communicating indirectly.
|
||||||
if (hops > 0) {
|
if (hops > 0) {
|
||||||
std::vector<InetAddress> sym(RR->sa->getSymmetricNatPredictions());
|
std::vector<InetAddress> sym(RR->sa->getSymmetricNatPredictions());
|
||||||
@ -224,6 +225,7 @@ void Peer::received(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pathsToPush.size() > 0) {
|
if (pathsToPush.size() > 0) {
|
||||||
std::vector<InetAddress>::const_iterator p(pathsToPush.begin());
|
std::vector<InetAddress>::const_iterator p(pathsToPush.begin());
|
||||||
@ -258,6 +260,7 @@ void Peer::received(
|
|||||||
|
|
||||||
if (count) {
|
if (count) {
|
||||||
outp.setAt(ZT_PACKET_IDX_PAYLOAD,(uint16_t)count);
|
outp.setAt(ZT_PACKET_IDX_PAYLOAD,(uint16_t)count);
|
||||||
|
outp.compress();
|
||||||
outp.armor(_key,true);
|
outp.armor(_key,true);
|
||||||
path->send(RR,tPtr,outp.data(),outp.size(),now);
|
path->send(RR,tPtr,outp.data(),outp.size(),now);
|
||||||
}
|
}
|
||||||
|
@ -124,6 +124,7 @@ void SelfAwareness::clean(int64_t now)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
std::vector<InetAddress> SelfAwareness::getSymmetricNatPredictions()
|
std::vector<InetAddress> SelfAwareness::getSymmetricNatPredictions()
|
||||||
{
|
{
|
||||||
/* This is based on ideas and strategies found here:
|
/* This is based on ideas and strategies found here:
|
||||||
@ -206,5 +207,6 @@ std::vector<InetAddress> SelfAwareness::getSymmetricNatPredictions()
|
|||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace ZeroTier
|
} // namespace ZeroTier
|
||||||
|
@ -64,12 +64,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
void clean(int64_t now);
|
void clean(int64_t now);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/**
|
/**
|
||||||
* If we appear to be behind a symmetric NAT, get predictions for possible external endpoints
|
* If we appear to be behind a symmetric NAT, get predictions for possible external endpoints
|
||||||
*
|
*
|
||||||
* @return Symmetric NAT predictions or empty vector if none
|
* @return Symmetric NAT predictions or empty vector if none
|
||||||
*/
|
*/
|
||||||
std::vector<InetAddress> getSymmetricNatPredictions();
|
std::vector<InetAddress> getSymmetricNatPredictions();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct PhySurfaceKey
|
struct PhySurfaceKey
|
||||||
|
Loading…
x
Reference in New Issue
Block a user