瀏覽代碼

Twiddle ROUTER_{MAX_COSMETIC_TIME_DIFFERENCE,MAX_AGE_TO_PUBLISH}

This is ticket 2479. Roger's original explanation was:

   We have a series of bugs where relays publish a descriptor within
   12 hours of their last descriptor, but the authorities drop it
   because it's not different "enough" from the last one and it's
   too close to the last one.

   The original goal of this idea was to a) reduce the number of new
   descriptors authorities accept (and thus have to store) and b)
   reduce the total number of descriptors that clients and mirrors
   fetch. It's a defense against bugs where relays publish a new
   descriptor every minute.

   Now that we're putting out one consensus per hour, we're doing
   better at the total damage that can be caused by 'b'.

   There are broader-scale design changes that would help here, and
   we've had a trac entry open for years about how relays should
   recognize that they're not in the consensus, or recognize when
   their publish failed, and republish sooner.

   In the mean time, I think we should change some of the parameters
   to make the problem less painful.
Nick Mathewson 12 年之前
父節點
當前提交
cc35157805
共有 3 個文件被更改,包括 10 次插入2 次删除
  1. 8 0
      changes/bug2749
  2. 1 1
      src/or/or.h
  3. 1 1
      src/or/routerlist.c

+ 8 - 0
changes/bug2749

@@ -0,0 +1,8 @@
+  o Changed parameters (authorities):
+    - Authorities are now a little more lenient at accepting older
+      router descriptors, or newer router descriptors that don't make
+      big changes. This should help ameliorate past and future issues
+      where routers think they have uploaded valid descriptors, but the
+      authorities don't think so. Fix for ticket 2479.
+
+

+ 1 - 1
src/or/or.h

@@ -187,7 +187,7 @@
 #define ROUTER_MAX_AGE (60*60*48)
 /** How old can a router get before we (as a server) will no longer
  * consider it live? In seconds. */
-#define ROUTER_MAX_AGE_TO_PUBLISH (60*60*20)
+#define ROUTER_MAX_AGE_TO_PUBLISH (60*60*24)
 /** How old do we let a saved descriptor get before force-removing it? */
 #define OLD_ROUTER_DESC_MAX_AGE (60*60*24*5)
 

+ 1 - 1
src/or/routerlist.c

@@ -5082,7 +5082,7 @@ router_reset_descriptor_download_failures(void)
 
 /** Any changes in a router descriptor's publication time larger than this are
  * automatically non-cosmetic. */
-#define ROUTER_MAX_COSMETIC_TIME_DIFFERENCE (12*60*60)
+#define ROUTER_MAX_COSMETIC_TIME_DIFFERENCE (2*60*60)
 
 /** We allow uptime to vary from how much it ought to be by this much. */
 #define ROUTER_ALLOW_UPTIME_DRIFT (6*60*60)