[tor-commits] [stem/master] Bandwidth file 1.4 headers

atagar at torproject.org atagar at torproject.org
Sun Apr 21 23:49:36 UTC 2019


commit 0fb5efe1be34949f7fa13eaba8e48fedd4342f2b
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Apr 21 16:47:16 2019 -0700

    Bandwidth file 1.4 headers
    
    Parsing the headers added in bandwidth file version 1.4.0.
    
      https://trac.torproject.org/projects/tor/ticket/30160
---
 run_tests.py                                  |   9 +--
 stem/descriptor/bandwidth_file.py             |  93 ++++++++++++++++++++++-
 test/unit/descriptor/bandwidth_file.py        | 105 ++++++++++++++++++++++++++
 test/unit/descriptor/data/bandwidth_file_v1.4 |  84 +++++++++++++++++++++
 4 files changed, 284 insertions(+), 7 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index d5a16651..89c0b3de 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -109,12 +109,11 @@ def log_traceback(sig, frame):
   for p in multiprocessing.active_children():
     try:
       os.kill(p.pid, sig)
-    except OSError as e:
-      # If the process exited before we could kill it
-      if e.errno == errno.ESRCH: # No such process
-        pass
+    except OSError as exc:
+      if exc.errno == errno.ESRCH:
+        pass  # already exited, no such process
       else:
-        raise e
+        raise exc
 
   if sig == signal.SIGABRT:
     # we need to use os._exit() to abort every thread in the interpreter,
diff --git a/stem/descriptor/bandwidth_file.py b/stem/descriptor/bandwidth_file.py
index 75fe2639..a26b2d57 100644
--- a/stem/descriptor/bandwidth_file.py
+++ b/stem/descriptor/bandwidth_file.py
@@ -38,6 +38,53 @@ HEADER_DIV = b'====='
 HEADER_DIV_ALT = b'===='
 
 
+class RecentStats(object):
+  """
+  Statistical information collected over the last 'data_period' (by default
+  five days).
+
+  :var int consensus_count: number of consensuses published during this period
+
+  :var int prioritized_relays: number of relays prioritized to be measured
+  :var int prioritized_relay_lists: number of times a set of relays were
+    prioritized to be measured
+
+  :var int measurement_attempts: number of relay measurements we attempted
+  :var int measurement_failures: number of measurement attempts that failed
+
+  :var RelayFailures relay_failures: number of relays we failed to measure
+  """
+
+  def __init__(self):
+    self.consensus_count = None
+    self.prioritized_relays = None
+    self.prioritized_relay_lists = None
+    self.measurement_attempts = None
+    self.measurement_failures = None
+    self.relay_failures = RelayFailures()
+
+
+class RelayFailures(object):
+  """
+  Summary of the number of relays we were unable to measure.
+
+  :var int no_measurement: number of relays that did not have any successful
+    measurements
+  :var int insuffient_period: number of relays whos measurements were collected
+    over a period that was too small (1 day by default)
+  :var int insufficient_measurements: number of relays we did not collect
+    enough measurements for (2 by default)
+  :var int stale: number of relays whos latest measurement is too old (5 days
+    by default)
+  """
+
+  def __init__(self):
+    self.no_measurement = None
+    self.insuffient_period = None
+    self.insufficient_measurements = None
+    self.stale = None
+
+
 # Converts header attributes to a given type. Malformed fields should be
 # ignored according to the spec.
 
@@ -56,9 +103,15 @@ def _date(val):
     return None  # not an iso formatted date
 
 
+def _csv(val):
+  return map(lambda v: v.strip(), val.split(',')) if val is not None else None
+
+
 # mapping of attributes => (header, type)
 
 HEADER_ATTR = {
+  # version 1.1.0 introduced headers
+
   'version': ('version', _str),
 
   'software': ('software', _str),
@@ -69,11 +122,32 @@ HEADER_ATTR = {
   'created_at': ('file_created', _date),
   'generated_at': ('generator_started', _date),
 
+  # version 1.2.0 additions
+
   'consensus_size': ('number_consensus_relays', _int),
   'eligible_count': ('number_eligible_relays', _int),
   'eligible_percent': ('percent_eligible_relays', _int),
   'min_count': ('minimum_number_eligible_relays', _int),
   'min_percent': ('minimum_percent_eligible_relays', _int),
+
+  # version 1.3.0 additions
+
+  'scanner_country': ('scanner_country', _str),
+  'destinations_countries': ('destinations_countries', _csv),
+
+  # version 1.4.0 additions
+
+  'time_to_report_half_network': ('time_to_report_half_network', _int),
+
+  'recent_stats.consensus_count': ('recent_consensus_count', _int),
+  'recent_stats.prioritized_relay_lists': ('recent_priority_list_count', _int),
+  'recent_stats.prioritized_relays': ('recent_priority_relay_count', _int),
+  'recent_stats.measurement_attempts': ('recent_measurement_attempt_count', _int),
+  'recent_stats.measurement_failures': ('recent_measurement_failure_count', _int),
+  'recent_stats.relay_failures.no_measurement': ('recent_measurements_excluded_error_count', _int),
+  'recent_stats.relay_failures.insuffient_period': ('recent_measurements_excluded_near_count', _int),
+  'recent_stats.relay_failures.insufficient_measurements': ('recent_measurements_excluded_few_count', _int),
+  'recent_stats.relay_failures.stale': ('recent_measurements_excluded_old_count', _int),
 }
 
 HEADER_DEFAULT = {
@@ -131,9 +205,15 @@ def _parse_header(descriptor, entries):
     index += 1
 
   descriptor.header = header
+  descriptor.recent_stats = RecentStats()
+
+  for full_attr, (keyword, cls) in HEADER_ATTR.items():
+    obj = descriptor
+
+    for attr in full_attr.split('.')[:-1]:
+      obj = getattr(obj, attr)
 
-  for attr, (keyword, cls) in HEADER_ATTR.items():
-    setattr(descriptor, attr, cls(header.get(keyword, HEADER_DEFAULT.get(attr))))
+    setattr(obj, full_attr.split('.')[-1], cls(header.get(keyword, HEADER_DEFAULT.get(full_attr))))
 
   if version_index is not None and version_index != 1:
     raise ValueError("The 'version' header must be in the second position")
@@ -202,6 +282,15 @@ class BandwidthFile(Descriptor):
   :var int min_count: minimum eligible relays for results to be provided
   :var int min_percent: minimum measured percentage of the consensus
 
+  :var str scanner_country: country code where this scan took place
+  :var list destinations_countries: all country codes that were scanned
+
+  :var int time_to_report_half_network: estimated number of seconds required to
+    measure half the network, given recent measurements
+
+  :var RecentStats recent_stats: statistical information collected over the
+    last 'data_period' (by default five days)
+
   **\*** attribute is either required when we're parsed with validation or has
   a default value, others are left as **None** if undefined
   """
diff --git a/test/unit/descriptor/bandwidth_file.py b/test/unit/descriptor/bandwidth_file.py
index 7b1cd198..ddf171a2 100644
--- a/test/unit/descriptor/bandwidth_file.py
+++ b/test/unit/descriptor/bandwidth_file.py
@@ -52,6 +52,33 @@ EXPECTED_MEASUREMENT_2 = {
   'error_misc': '0',
 }
 
+EXPECTED_MEASUREMENT_3 = {
+  'desc_bw_obs_last': '70423',
+  'success': '13',
+  'desc_bw_obs_mean': '81784',
+  'bw_median': '2603',
+  'nick': 'whitsun',
+  'bw': '1',
+  'desc_bw_avg': '1073741824',
+  'time': '2019-04-21T10:22:16',
+  'bw_mean': '2714',
+  'error_circ': '1',
+  'error_stream': '0',
+  'node_id': '$8F0F49F2341C7F706D5B475815DBD3E5761334B3',
+  'error_misc': '0',
+  'consensus_bandwidth': '1000',
+  'consensus_bandwidth_is_unmeasured': 'False',
+  'desc_bw_bur': '1073741824',
+  'error_destination': '0',
+  'error_second_relay': '0',
+  'master_key_ed25519': 'acShTw35dmVSTkhMdmo9RFRLsP4QV+qOZrEJQubnvWY',
+  'relay_in_recent_consensus_count': '22',
+  'relay_recent_measurement_attempt_count': '1',
+  'relay_recent_measurements_excluded_error_count': '1',
+  'relay_recent_priority_list_count': '1',
+  'success': '3',
+}
+
 EXPECTED_NEW_HEADER_CONTENT = """
 1410723598
 version=1.1.0
@@ -103,6 +130,23 @@ class TestBandwidthFile(unittest.TestCase):
     self.assertEqual(None, desc.min_count)
     self.assertEqual(None, desc.min_percent)
 
+    self.assertEqual(None, desc.scanner_country)
+    self.assertEqual(None, desc.destinations_countries)
+    self.assertEqual(None, desc.time_to_report_half_network)
+
+    stats = desc.recent_stats
+    self.assertEqual(None, stats.consensus_count)
+    self.assertEqual(None, stats.prioritized_relays)
+    self.assertEqual(None, stats.prioritized_relay_lists)
+    self.assertEqual(None, stats.measurement_attempts)
+    self.assertEqual(None, stats.measurement_failures)
+
+    relay_failures = stats.relay_failures
+    self.assertEqual(None, relay_failures.no_measurement)
+    self.assertEqual(None, relay_failures.insuffient_period)
+    self.assertEqual(None, relay_failures.insufficient_measurements)
+    self.assertEqual(None, relay_failures.stale)
+
     self.assertEqual(94, len(desc.measurements))
     self.assertEqual(EXPECTED_MEASUREMENT_1, desc.measurements['D8B9CAA5B818DEFE80857F83FDABBB6429DCFCA0'])
 
@@ -130,9 +174,70 @@ class TestBandwidthFile(unittest.TestCase):
     self.assertEqual(3908, desc.min_count)
     self.assertEqual(60, desc.min_percent)
 
+    self.assertEqual(None, desc.scanner_country)
+    self.assertEqual(None, desc.destinations_countries)
+    self.assertEqual(None, desc.time_to_report_half_network)
+
+    stats = desc.recent_stats
+    self.assertEqual(None, stats.consensus_count)
+    self.assertEqual(None, stats.prioritized_relays)
+    self.assertEqual(None, stats.prioritized_relay_lists)
+    self.assertEqual(None, stats.measurement_attempts)
+    self.assertEqual(None, stats.measurement_failures)
+
+    relay_failures = stats.relay_failures
+    self.assertEqual(None, relay_failures.no_measurement)
+    self.assertEqual(None, relay_failures.insuffient_period)
+    self.assertEqual(None, relay_failures.insufficient_measurements)
+    self.assertEqual(None, relay_failures.stale)
+
     self.assertEqual(81, len(desc.measurements))
     self.assertEqual(EXPECTED_MEASUREMENT_2, desc.measurements['9C7E1AFDACC53228F6FB57B3A08C7D36240B8F6F'])
 
+  def test_format_v1_4(self):
+    """
+    Parse version 1.4 formatted files.
+    """
+
+    desc = list(stem.descriptor.parse_file(get_resource('bandwidth_file_v1.4'), 'bandwidth-file 1.4'))[0]
+
+    self.assertEqual(datetime.datetime(2019, 4, 21, 21, 34, 57), desc.timestamp)
+    self.assertEqual('1.4.0', desc.version)
+
+    self.assertEqual('sbws', desc.software)
+    self.assertEqual('1.1.0', desc.software_version)
+
+    self.assertEqual(datetime.datetime(2019, 4, 16, 21, 35, 7), desc.earliest_bandwidth)
+    self.assertEqual(datetime.datetime(2019, 4, 21, 21, 34, 57), desc.latest_bandwidth)
+    self.assertEqual(datetime.datetime(2019, 4, 21, 21, 35, 4), desc.created_at)
+    self.assertEqual(datetime.datetime(2019, 4, 20, 11, 40, 1), desc.generated_at)
+
+    self.assertEqual(6684, desc.consensus_size)
+    self.assertEqual(6459, desc.eligible_count)
+    self.assertEqual(97, desc.eligible_percent)
+    self.assertEqual(4010, desc.min_count)
+    self.assertEqual(60, desc.min_percent)
+
+    self.assertEqual('US', desc.scanner_country)
+    self.assertEqual(['ZZ'], desc.destinations_countries)
+    self.assertEqual(223519, desc.time_to_report_half_network)
+
+    stats = desc.recent_stats
+    self.assertEqual(34, stats.consensus_count)
+    self.assertEqual(86417, stats.prioritized_relays)
+    self.assertEqual(260, stats.prioritized_relay_lists)
+    self.assertEqual(86417, stats.measurement_attempts)
+    self.assertEqual(57023, stats.measurement_failures)
+
+    relay_failures = stats.relay_failures
+    self.assertEqual(788, relay_failures.no_measurement)
+    self.assertEqual(182, relay_failures.insuffient_period)
+    self.assertEqual(663, relay_failures.insufficient_measurements)
+    self.assertEqual(0, relay_failures.stale)
+
+    self.assertEqual(58, len(desc.measurements))
+    self.assertEqual(EXPECTED_MEASUREMENT_3, desc.measurements['8F0F49F2341C7F706D5B475815DBD3E5761334B3'])
+
   @patch('time.time', Mock(return_value = 1410723598.276578))
   def test_minimal_bandwidth_file(self):
     """
diff --git a/test/unit/descriptor/data/bandwidth_file_v1.4 b/test/unit/descriptor/data/bandwidth_file_v1.4
new file mode 100644
index 00000000..233ec10b
--- /dev/null
+++ b/test/unit/descriptor/data/bandwidth_file_v1.4
@@ -0,0 +1,84 @@
+1555882497
+version=1.4.0
+destinations_countries=ZZ
+earliest_bandwidth=2019-04-16T21:35:07
+file_created=2019-04-21T21:35:04
+generator_started=2019-04-20T11:40:01
+latest_bandwidth=2019-04-21T21:34:57
+minimum_number_eligible_relays=4010
+minimum_percent_eligible_relays=60
+number_consensus_relays=6684
+number_eligible_relays=6459
+percent_eligible_relays=97
+recent_consensus_count=34
+recent_measurement_attempt_count=86417
+recent_measurement_failure_count=57023
+recent_measurements_excluded_error_count=788
+recent_measurements_excluded_few_count=663
+recent_measurements_excluded_near_count=182
+recent_measurements_excluded_old_count=0
+recent_priority_list_count=260
+recent_priority_relay_count=86417
+scanner_country=US
+software=sbws
+software_version=1.1.0
+time_to_report_half_network=223519
+=====
+bw=1 bw_mean=21403 bw_median=21405 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=25600 desc_bw_bur=61440 desc_bw_obs_last=34105 desc_bw_obs_mean=36357 error_circ=2 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 nick=t7 node_id=$F63DF6AA4F395AD2F5F363333D104279F2171381 relay_in_recent_consensus_count=19 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T06:53:01
+bw=1 bw_mean=380199 bw_median=397005 consensus_bandwidth=395000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=512000 desc_bw_bur=512000 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=MAB0U2NzMiVSMflW9lSV7DilOcfUg1nFZ4Zeb7g4Vl0 nick=Unnamed node_id=$3E957D869E0DD829FA249E22D8A741AA30B938C2 relay_in_recent_consensus_count=27 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T15:29:15
+bw=1 bw_mean=29398 bw_median=29387 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=76800 desc_bw_bur=153600 desc_bw_obs_last=58500 desc_bw_obs_mean=55486 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=P06EH68TrHTjeHX9KTZ8AIVgH05D09gGyb9s9a0Jj8g nick=nibiru node_id=$7F786E9B32B1599B49433E76D6681959130FD019 relay_in_recent_consensus_count=22 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-21T09:38:06
+bw=1 bw_mean=2714 bw_median=2603 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=70423 desc_bw_obs_mean=81784 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=acShTw35dmVSTkhMdmo9RFRLsP4QV+qOZrEJQubnvWY nick=whitsun node_id=$8F0F49F2341C7F706D5B475815DBD3E5761334B3 relay_in_recent_consensus_count=22 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T10:22:16
+bw=1 bw_mean=188248 bw_median=188009 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=204800 desc_bw_bur=307200 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=ZYBv1WW6QIuWZyZHAzZekfPAiJmK5ntIBRwLr8cfcHI nick=Iqu7ge node_id=$2CA3219A203F120C9B28C9BE00C10C5F0C5DF484 relay_in_recent_consensus_count=10 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T22:36:33
+bw=1 bw_mean=807445 bw_median=911047 consensus_bandwidth=1190000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=Jbi1fwC4LaqxjmYfI1E3d03ozlo1ByPpsHmIOJlBzOY nick=snap269 node_id=$FDCF49562E65B1CC219410009BD48A9EED387C77 relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T06:11:25
+bw=1 bw_mean=631049 bw_median=622052 consensus_bandwidth=55000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1 desc_bw_bur=0 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=PPPhJHDc2FTZBzFgZFeVSTuHjFAOS/smj2iCnOeDadA nick=donate4Crowdfunding node_id=$BD4172533C3F7271ABCCD9F057E06FD91547C42B relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T00:10:24
+bw=1 bw_mean=9959 bw_median=7313 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=149603 desc_bw_obs_mean=86828 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=IkI18qXiueRUwJqwqMoZ9PTYdZNz9+ElpUfZmivmRqo nick=suntzu node_id=$697D7612A5EB6DB98226E98D180A779CB341C655 relay_in_recent_consensus_count=5 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-20T17:10:17
+bw=1 bw_mean=1039857 bw_median=1014723 consensus_bandwidth=6800000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=5242880 desc_bw_bur=8388608 desc_bw_obs_last=0 desc_bw_obs_mean=4728784 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=cHTjxZJ2pKV6WtLxEwJc2oUluL3LNkuurv9czKa9wOw nick=spaghetti node_id=$59CA96E7CDA30AB36C597B499C848BD845745EA0 relay_in_recent_consensus_count=6 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-20T18:26:53
+bw=1 bw_mean=18111 bw_median=15457 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=307200 desc_bw_bur=512000 desc_bw_obs_last=41605 desc_bw_obs_mean=81190 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=u3gfnO0muspu534tF+N+xi+tbbvq1m6xtivmYdO/YwY nick=pkswitchtorronto node_id=$73F6BF45E14C72C47B8B3D3568F6FF195B967A15 relay_in_recent_consensus_count=9 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-20T21:06:24
+bw=1 bw_mean=6328 bw_median=5705 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=80917 desc_bw_obs_mean=112251 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=2 master_key_ed25519=mbihLJ+8Pbv66GrsEW0S8yB6Iu08QnrPnoFkSxhGAsY nick=lader node_id=$CF773DE0B4F537BB80DA35643299403B7BF11AFA relay_in_recent_consensus_count=11 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-20T22:46:07
+bw=1 bw_mean=19938 bw_median=20395 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=76800 desc_bw_bur=524288 desc_bw_obs_last=54697 desc_bw_obs_mean=55364 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=VY8EuVyc6gnXkZs1LmXTT3BCc82gUtYeLPFZU8+noAE nick=Unnamed node_id=$99DEAFE8623642451EB8F7C1B8BC026457FAF85B relay_in_recent_consensus_count=11 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T23:28:12
+bw=1 bw_mean=58191 bw_median=57946 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=76800 desc_bw_bur=90112 desc_bw_obs_last=142605 desc_bw_obs_mean=139931 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=hGFYN/t1/tjgA8+OqgHcHWHWamX+IPU3b/S0I2ipht0 nick=itcanhappenhere node_id=$0B823502D34E15987BF6A8AB4557B600100B0EC5 relay_in_recent_consensus_count=15 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T02:52:16
+bw=1 bw_mean=32132 bw_median=18625 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=65536 desc_bw_bur=153600 desc_bw_obs_last=199486 desc_bw_obs_mean=181867 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=6DIWF95I7sYm5y2j7kRk6/qY3srcMf+ZQU4NADIcxb8 nick=GuruKopi node_id=$35449EB3D025CC24601FB43884F9699367D677CF relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T03:57:36
+bw=1 bw_mean=396820 bw_median=336591 consensus_bandwidth=1730000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=FhDwpSPN14hqHeCMgh1xUazxlTLDUMo/HSPuvhDyFBM nick=PESEC node_id=$683A668EBD5E275889B510CAEA45752016E3DE30 relay_in_recent_consensus_count=17 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=2 time=2019-04-21T04:56:27
+bw=1 bw_mean=8729 bw_median=8718 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1024000 desc_bw_bur=2048000 desc_bw_obs_last=50786 desc_bw_obs_mean=54875 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=yY7oCwfdoojVJoarPzmMMx47RZo+QPxF6jt5AbuXL2o nick=severalwdadwajunior node_id=$703D1DC9A96F34DCF7D698FE854FED081A4BE13C relay_in_recent_consensus_count=18 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T05:21:19
+bw=1 bw_mean=747719 bw_median=825687 consensus_bandwidth=1500000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=0 desc_bw_obs_mean=849408 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=x2F1QxlV0R85OWJniJXGVReGQwP0Ka1/CmERyPRl424 nick=snap269 node_id=$FE66738B7E6B3516E70E851ECA32A837DA0FED66 relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T10:47:23
+bw=1 bw_mean=31609 bw_median=38830 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=63976 desc_bw_obs_mean=60791 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=6iwHrySU1h49K8zDGSnjgMDuHnsJVWLqVZcQ936SHCs nick=snap269 node_id=$518B136C45A98BA6616E54AA329D29B13FA191DB relay_in_recent_consensus_count=9 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T11:25:25
+bw=1 bw_mean=30429 bw_median=43192 consensus_bandwidth=1000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=58367 desc_bw_obs_mean=57666 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=gfrdhgHGJFOmyFx9d/CzRbW/FeMZ93oEfXCgoqEFaAI nick=snap269 node_id=$16AABB2EAA582E897BCD48080349313E7AF8221D relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T14:03:49
+bw=1 bw_mean=185550 bw_median=181334 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=2 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=lGNYSbAx8toGLoF4SscKqZzAlGPqz+cwAA/NxXLJnGA nick=Ongared node_id=$7E4867681DEB4879C71CD4D63EF3EC231D534366 relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-20T11:46:05
+bw=1 bw_mean=453366 bw_median=512238 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1 desc_bw_bur=0 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=sTrv4H0VBa8UbqxoQWxS8ndX8g2Fl8QTnWZE6rpzP9k nick=donateDonationbased node_id=$0F45FCAC70DA935F5367A9B94264D1C46707E947 relay_in_recent_consensus_count=7 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T23:26:55
+bw=1 bw_mean=1072550 bw_median=718941 consensus_bandwidth=1390000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=Dn8dTxq3XuziqenuJds5PqgRESUVnlmXQiVhM63Ff4A nick=Debbie node_id=$A94DEB640E06E90BD98387624EE6D59DF20D91BD relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-19T04:32:08
+bw=1 bw_mean=931669 bw_median=901981 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=kI3qC9qQfEM8Ber3ngxNhLida7E/VIJWm9ofiNGRJJo nick=hellebuz node_id=$52D5FB2004C67127C73B71478238FA66122BD443 relay_in_recent_consensus_count=22 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T10:18:04
+bw=1 bw_mean=669850 bw_median=782470 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=32768000 desc_bw_bur=39321600 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=2 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=4zeLC/ooBsI1B/XYrs2ontESIMgFVvx/acK1iFtUlVw nick=torstockholm node_id=$5ED7E5EEC5FE07EE7EEF8005519ADB175E24B6DB relay_in_recent_consensus_count=27 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T15:47:05
+bw=1 bw_mean=384544 bw_median=405846 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=2 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 nick=zftktohanu2jfxxUeBz node_id=$6B2547FEAC0B85246DB3649522A72660DA4F346A relay_in_recent_consensus_count=29 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T17:01:15
+bw=1 bw_mean=662618 bw_median=762980 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=c83tAlDa/0M+t00ucRlRcAEKJnIAQpwIbP5ebtOF2Mk nick=VegasOnion node_id=$66EAE0A3A8B0E7029F493E48F19DBBB1967A2423 relay_in_recent_consensus_count=1 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T06:11:03
+bw=1 bw_mean=1010521 bw_median=941059 consensus_bandwidth=18900000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=12288000 desc_bw_bur=12288000 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=7PV1B+84IhXfpoz1sBS1Kb5mvKr3bQoXIKeCulgw51M nick=sauronkingofmortor node_id=$2D8AFA912E2B8623BB2CDACD19332209D524D1A3 relay_in_recent_consensus_count=3 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T15:01:43
+bw=1 bw_mean=801295 bw_median=703490 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=3932160 desc_bw_bur=3932160 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=O10Rs6JTsiM8AK7UN4P7ECvzlDmXe9OhYLmDNXfwGU0 nick=AnonNetherland00 node_id=$64AFFBBE017853193E190EF89D64602307B7C4D8 relay_in_recent_consensus_count=3 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T15:05:21
+bw=1 bw_mean=929220 bw_median=947505 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=J/PfHpCclL4lym9NK/gMLO+7RltiQaC7sh4txmLddnk nick=Ieditedtheconfig node_id=$E8C3FA7D135CE4703EA48CC46108C02BB52031D1 relay_in_recent_consensus_count=3 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T15:04:50
+bw=1 bw_mean=1137027 bw_median=1011789 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=5120000 desc_bw_bur=5632000 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=co2riWQXINjw2LkY2tbUzdMc14mVzOmkFMS85jzjzPA nick=tor98 node_id=$64EADE307AA3F5C9B5196AB21C51C9F89B2184D9 relay_in_recent_consensus_count=3 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T15:06:05
+bw=1 bw_mean=93008 bw_median=93113 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=102400 desc_bw_bur=204800 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=fGdcMh/HyD2aDctqzA4G3dgh0/r+BUb/uqbu7/XvfFc nick=ursula node_id=$4751FB559499DE05EA411DFEF2470B60D5DA8AE2 relay_in_recent_consensus_count=3 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T15:06:10
+bw=1 bw_mean=473551 bw_median=393498 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1310720 desc_bw_bur=1310720 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=Fah1AlOZdrYAOFPwVQg+ezs5+erXy7pfkAzmQ7ZetBE nick=salus node_id=$81784560C613C5F81B3C27B68A234E1A0C42A981 relay_in_recent_consensus_count=5 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T17:04:00
+bw=1 bw_mean=416282 bw_median=254338 consensus_bandwidth=8880000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=PoDjluh0AuCWze+mWxncVdBCjGKsY3/Ozl/ymJ0kA24 nick=tosk node_id=$B183A69592D2E8C8C487C054D0849E3C9561DC11 relay_in_recent_consensus_count=6 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T18:13:23
+bw=1 bw_mean=871316 bw_median=717463 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 nick=DeathStar002 node_id=$39987D752EC658A439228262737DC44E48164832 relay_in_recent_consensus_count=9 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=2 time=2019-04-20T20:54:23
+bw=1 bw_mean=619044 bw_median=578283 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=8192000 desc_bw_bur=9216000 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=JVSfobbrl+azn9EBlX81k/aBGCZpF78GaXoNhVB3pH0 nick=badabing node_id=$C637D62E52E6D0DAC947231E8AFB3D75E70AE3AE relay_in_recent_consensus_count=11 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T23:26:21
+bw=1 bw_mean=586076 bw_median=545343 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=pPjUY0K2qvl6TnbSsBNvHaD4AzkBXqCjYLb4w2W6oIA nick=whyme node_id=$8278CFFF4FABA7A6932359574A226EE198AC6ABA relay_in_recent_consensus_count=11 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-20T23:26:43
+bw=1 bw_mean=225851 bw_median=226576 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=409600 desc_bw_bur=819200 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=SzIhcB9UKWCJn5gd1xIr1DWVMRmxNFdAYLGgOB4C0GY nick=central2rave4you node_id=$332DC90B7938F15AA8B607C058C66CB005762CDD relay_in_recent_consensus_count=11 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=2 time=2019-04-20T23:51:15
+bw=1 bw_mean=383908 bw_median=381405 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=LOoDXSJnEZ/yL9MXz4Ho4E7d3SmWUsSI8WpZeWzN7yQ nick=snap269 node_id=$AC5654C67637C9BF97B2E343012CB70528586E9B relay_in_recent_consensus_count=13 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=2 time=2019-04-21T01:15:27
+bw=1 bw_mean=179210 bw_median=179467 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=196608 desc_bw_bur=393216 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=v3c3OM4JCQvK1ScvbtO1T2BSRPgb2XhGFGxKfNn6G/I nick=Sete node_id=$A9AFBC96CD42825F556F7A3801985CD2042607BB relay_in_recent_consensus_count=14 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T02:24:09
+bw=1 bw_mean=1016016 bw_median=917521 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=b7nn0dEaqGXVQ9HBPmkBVfDIUeb8Iwrz0IkTUiSFGjU nick=OSRelay2 node_id=$335FD0F2101E23405700FF1EC200340E804A903E relay_in_recent_consensus_count=14 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T02:24:39
+bw=1 bw_mean=373784 bw_median=375515 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 master_key_ed25519=kxN7MOH/oUWf+s0ll+zcfXgwMV77rGil3AtA9hbS/wk nick=furrybrigade node_id=$173F579A24FE2763D1357AA87C6B01059BEF18E3 relay_in_recent_consensus_count=17 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=2 time=2019-04-21T04:36:25
+bw=1 bw_mean=551405 bw_median=779227 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=262144 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=gL6eqamFOxBxxZo4ZHh9X66zXFhDgPwox56UTYjYynE nick=Unnamed node_id=$2EDB8B1CBA3EA2BE05C1122E419CAEE2CE3A7577 relay_in_recent_consensus_count=17 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T04:37:11
+bw=1 bw_mean=414955 bw_median=460026 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=RHZ61q8pMDVm18+zBd5CrHbBDXI5gLNiJh2TqZf8exI nick=poopwielder node_id=$7E4062413B006D3BA37F92235723341465CEF8C7 relay_in_recent_consensus_count=17 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T04:37:57
+bw=1 bw_mean=758197 bw_median=686226 consensus_bandwidth=802000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=394240 desc_bw_bur=61440000 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=qgyf68eOnJwJF/5Q+sTDrukzBxfVBxbN58DlWDj2FqA nick=vahShei7Eeth node_id=$6C1A8CBE589906EEC6E73F4F286AC29AF7521E1D relay_in_recent_consensus_count=22 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T10:15:02
+bw=1 bw_mean=687376 bw_median=720036 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=819200 desc_bw_bur=1126400 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=I4elr+i0u2F072zrNXpNHp63+7NjSucyofSdx8tnVqA nick=Unnamed node_id=$321A004A3CCDC98C5B987E9ACFBB4AD2D78E29B0 relay_in_recent_consensus_count=22 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T10:15:50
+bw=1 bw_mean=434140 bw_median=550161 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=gUPogFLVURdBKX/mzutp9aaCDFBVSlHA8+HqE454wBQ nick=SwissRelay42 node_id=$B2A23EDCFFA923B465AE4DB9A2428ED7E2C29ADD relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T15:26:59
+bw=1 bw_mean=767668 bw_median=540190 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=JH/hac6tDbr2FpVnArEZh+Co00ajNMCtZqNdZHPnZjI nick=slalix node_id=$472CDEFC95177D36FA0A45E2119867DC461BB88F relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T15:27:24
+bw=1 bw_mean=601475 bw_median=545961 consensus_bandwidth=1420000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=OKbDN/bczMN2lVMnH9zoIUapBrwoLOa+2N/M2s9wEoY nick=armik2 node_id=$0C0388BC552D7AC903F49390A40244FD3FFF44A2 relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T15:27:36
+bw=1 bw_mean=594942 bw_median=573495 consensus_bandwidth=3910000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=4194304 desc_bw_bur=6291456 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=KRIc4GWdnu6jzGMKU6nvzilAJQJq3aG5OAYoMTrVWjY nick=snap269 node_id=$5E4A0FC4EFB477F5AE730CB1482635B346C8F527 relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T18:20:03
+bw=1 bw_mean=444707 bw_median=470882 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=nlfGZeBWPz4BxAsChPurPooymKCWZlMTuMjMm01VcUo nick=slalix node_id=$70BD9ECBE1BDB383F04670ED1DB5ADFE60814259 relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T18:20:42
+bw=1 bw_mean=225459 bw_median=168079 consensus_bandwidth=0 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=0 desc_bw_obs_mean=1 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=BmYw3xQa51pm2isY7To/YlHTG59poD7+h4L6yFv4sd0 nick=moxiecolo node_id=$B023D779A32A363BA63B375A7A6B0649199B8418 relay_in_recent_consensus_count=26 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T18:21:21
+bw=2 bw_mean=50012 bw_median=77763 consensus_bandwidth=3000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=167017 desc_bw_obs_mean=171882 error_circ=1 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 nick=toosa node_id=$314793A8A3530A6FA47C9484AD1250032A4F9A66 relay_in_recent_consensus_count=19 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T06:42:22
+bw=2 bw_mean=36645 bw_median=44011 consensus_bandwidth=3000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=80896 desc_bw_bur=80896 desc_bw_obs_last=80149 desc_bw_obs_mean=79605 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=K9m8MIOa/NEIwmfwFJrm3p8SeW+lwzjqP66ygG/TP3o nick=salottisipuli node_id=$04ABF90AEF8556F3A7E0527722CDFA7FDCB66C59 relay_in_recent_consensus_count=21 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-21T08:20:07
+bw=2 bw_mean=146698 bw_median=56149 consensus_bandwidth=3000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=122457 desc_bw_obs_mean=116616 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=P3oGHtTeP+pwjdS4AesDjahKStiJOq99CWygTcjYxAo nick=sriyani node_id=$2AF1F03CA502A23D554EB61C6649C531674C9627 relay_in_recent_consensus_count=21 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-21T08:23:48
+bw=2 bw_mean=35699 bw_median=36470 consensus_bandwidth=3000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=40960 desc_bw_bur=81920 desc_bw_obs_last=48350 desc_bw_obs_mean=48108 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 nick=hottor01 node_id=$D0D2816EB56967430B9271ADDD9340A41A2E1683 relay_in_recent_consensus_count=22 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-21T09:55:25
+bw=2 bw_mean=4994 bw_median=4842 consensus_bandwidth=2000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=1073741824 desc_bw_bur=1073741824 desc_bw_obs_last=109396 desc_bw_obs_mean=97203 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=0 master_key_ed25519=kAdk+2XPBM1LWpfKf+JBfC3yKp+LFLh/K5sbPO8Gnso nick=nothaas node_id=$925F82CFAD0DDB839161FAB9E7355E774C730378 relay_in_recent_consensus_count=23 relay_recent_measurement_attempt_count=1 relay_recent_priority_list_count=1 success=4 time=2019-04-21T11:21:21
+bw=2 bw_mean=7219 bw_median=7356 consensus_bandwidth=2000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=76800 desc_bw_bur=76800 desc_bw_obs_last=76259 desc_bw_obs_mean=76837 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=2 master_key_ed25519=/Gk3GQhdhmASNPdGjReNdsWOHL1m2TGp4oAcvV0mXKI nick=ageinghacker node_id=$26AD3C1C18F1CD2B357A33FA7652A906DB13A8CC relay_in_recent_consensus_count=23 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=2 relay_recent_priority_list_count=1 success=2 time=2019-04-21T11:15:13
+bw=2 bw_mean=38871 bw_median=39022 consensus_bandwidth=3000 consensus_bandwidth_is_unmeasured=False desc_bw_avg=5242880 desc_bw_bur=10485760 desc_bw_obs_last=127367 desc_bw_obs_mean=125775 error_circ=0 error_destination=0 error_misc=0 error_second_relay=0 error_stream=1 nick=default node_id=$AD77073249E2DC7381E27D40DE686E4AF18D0123 relay_in_recent_consensus_count=27 relay_recent_measurement_attempt_count=1 relay_recent_measurements_excluded_error_count=1 relay_recent_priority_list_count=1 success=3 time=2019-04-21T15:31:49



More information about the tor-commits mailing list