[tor-commits] [bridgedb/master] 4297 - Warn about bridge pools + dynamic filtering

aagbsn at torproject.org aagbsn at torproject.org
Sat Mar 16 23:46:31 UTC 2013


commit ee4d719b3dcd99ab60c6d1db14302abe62667959
Author: aagbsn <aagbsn at extc.org>
Date:   Mon Jan 9 11:04:17 2012 -0800

    4297 - Warn about bridge pools + dynamic filtering
    
    If using dynamic bridge filtering, the IPBasedDistributor must
    be suppled wth a filtering function that will select the correct pool
    for the requesting IP.
    
    The filter could be implemented in a similar fashion as the existing
    approach, which is to map the requesting ip address to an
    area and assign then map the areas to pools of bridges.
    
    An alternate approach would define bridge pools by a set of
    corresponding country codes. The pools may either be of roughly equal
    size to simplify bridge assignment, or weighted by the aggregate bridge
    users from those countries.
    
    Presently, BridgeDB does neither. There are very few IPv6 bridges, so
    bypassing bridge clustering should be OK for the short term.
    
    Deliverables for Sponsor E require that BridgeDB be able to reassign
    blocked bridges to other countries; the extensions to BridgeDB required
    to implement this policy will replace the current clusters with bridge
    pools that correspond to geographic regions and address the current
    filter limitations.
---
 lib/bridgedb/Dist.py   |    4 ++++
 lib/bridgedb/Server.py |    6 +++++-
 2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/lib/bridgedb/Dist.py b/lib/bridgedb/Dist.py
index afc3592..6a459be 100644
--- a/lib/bridgedb/Dist.py
+++ b/lib/bridgedb/Dist.py
@@ -123,8 +123,12 @@ class IPBasedDistributor(bridgedb.Bridges.BridgeHolder):
                 return ring.getBridges(pos, N, countryCode)
 
         # dynamic filter construction
+        #XXX: may bypass clusters! front-end must supply clustering function
+        # or provide another mechanism (perhaps geoip based) to sort and select
+        # bridges from separate pools.
         if bridgeFilterRules:
             logging.debug("bridgeFilterRules: %s" % bridgeFilterRules)
+            #XXX: is there a better way to cache by ruleset signature?
             ruleset = frozenset(bridgeFilterRules)
             if ruleset in self.splitter.filterRings.keys():
                 logging.debug("Cache hit %s" % ruleset)
diff --git a/lib/bridgedb/Server.py b/lib/bridgedb/Server.py
index 45cbee0..6db4522 100644
--- a/lib/bridgedb/Server.py
+++ b/lib/bridgedb/Server.py
@@ -154,9 +154,13 @@ class WebResource(twisted.web.resource.Resource):
 
         if ip:
             if ipv6:
+                #XXX: this ruleset bypasses areamapper and bridge clusters.
+                #     for now, there are very few IPv6 bridges.
                 rules=[filterBridgesByIP6]
             else:
-                rules=[filterBridgesByIP4]
+                #XXX: default to areamapper + cluster, does not use oraddress
+                rules = None
+                #rules=[filterBridgesByIP4]
 
             bridges = self.distributor.getBridgesForIP(ip, interval,
                                                        self.nBridgesToGive,





More information about the tor-commits mailing list