Browse Source

Added ZT_DIRECT_PATH_PUSH_INTERVAL_MULTIPATH to decrease link aggregation time

Joseph Henry 6 years ago
parent
commit
d8ce1f7914
2 changed files with 11 additions and 1 deletions
  1. 9 0
      node/Constants.hpp
  2. 2 1
      node/Peer.cpp

+ 9 - 0
node/Constants.hpp

@@ -546,6 +546,15 @@
  */
 #define ZT_DIRECT_PATH_PUSH_INTERVAL_HAVEPATH 120000
 
+/**
+ * Interval between direct path pushes in milliseconds if we are currently in multipath
+ * mode. In this mode the distinction between ZT_DIRECT_PATH_PUSH_INTERVAL and
+ * ZT_DIRECT_PATH_PUSH_INTERVAL_HAVEPATH does not exist since we want to inform other
+ * peers of this peer's new link/address as soon as possible so that both peers can
+ * begin forming an aggregated link.
+ */
+#define ZT_DIRECT_PATH_PUSH_INTERVAL_MULTIPATH ZT_DIRECT_PATH_PUSH_INTERVAL_HAVEPATH / 16
+
 /**
  * Time horizon for push direct paths cutoff
  */

+ 2 - 1
node/Peer.cpp

@@ -210,7 +210,8 @@ void Peer::received(
 	// is done less frequently.
 	if (this->trustEstablished(now)) {
 		const int64_t sinceLastPush = now - _lastDirectPathPushSent;
-		if (sinceLastPush >= ((hops == 0) ? ZT_DIRECT_PATH_PUSH_INTERVAL_HAVEPATH : ZT_DIRECT_PATH_PUSH_INTERVAL)) {
+		if (sinceLastPush >= ((hops == 0) ? ZT_DIRECT_PATH_PUSH_INTERVAL_HAVEPATH : ZT_DIRECT_PATH_PUSH_INTERVAL)
+			|| (_canUseMultipath && (sinceLastPush >= (ZT_DIRECT_PATH_PUSH_INTERVAL_MULTIPATH)))) {
 			_lastDirectPathPushSent = now;
 			std::vector<InetAddress> pathsToPush(RR->node->directPaths());
 			if (pathsToPush.size() > 0) {