TODO 4.51 KB
Newer Older
1
Bugs :
Guillaume Bury's avatar
Guillaume Bury committed
2
    When no peer is avalaible, the setup crash without the --no-boot option
3 4
    G : see below
    U : this is still a bug to be solved
5

6
To be done :
Guillaume Bury's avatar
Guillaume Bury committed
7 8
    Use an algorithm to choose which connections to keep and/or establish
    instead of pure randomness
9
    
Guillaume Bury's avatar
Guillaume Bury committed
10 11 12
    Find a name for the project : the projet is ( or should be ) independant
    from vifib, openvpn, babel, and so should the name; btw we aim to build a
    distributed, scalable, resilient VPN.... ( if it helps with the name )
13
    
Guillaume Bury's avatar
Guillaume Bury committed
14 15
    Replace comments at the beginning of functions with docstrings & give all
    fn docstrings
16
    
Guillaume Bury's avatar
Guillaume Bury committed
17 18
    Use the server events ( client connection/deconnection ) to do something
    useful
19
    
Guillaume Bury's avatar
Guillaume Bury committed
20 21
    In peers DB, remove some peers when they are too many of them -> remove the
    dead peers
22 23 24 25 26
    
    Use a timeout for the peersDB 
    G : removing the dead peers should be enough
    U : I was speaking of the server peers DB
    
27
    Specify a lease duration in ForwardViaUPnP
28
    
Guillaume Bury's avatar
Guillaume Bury committed
29
    Handle LAN internally in order not to have catastrophic results ....
30

Guillaume Bury's avatar
Guillaume Bury committed
31
To be discussed:
Guillaume Bury's avatar
Guillaume Bury committed
32
    G, J : To get traffic stats ( bytes in/out ), you can use
Guillaume Bury's avatar
Guillaume Bury committed
33 34 35 36 37 38
          /sys/class/net/interface/statistics/rx_bytes, etc...
        or /proc/net/dev/snmp6/interface ( all in one file ). This can be enough
        if used as follows: get traffic diff from last time we checked in order
        to choose which connection is significantly unused compared to others,
        and close it. Of course, too recent connections (i.e. those for which we
        have no previous stat) would be always kept.
Guillaume Bury's avatar
Guillaume Bury committed
39 40 41
        This should be combined with routing table (i.e. how many nodes are
        served by each tunnel), which is possibly redundant.
        ip6tables should be avoided if possible.
42
    U : Great !!!
Guillaume Bury's avatar
Guillaume Bury committed
43

Guillaume Bury's avatar
Guillaume Bury committed
44 45 46 47 48 49 50
    U : Babel seems to be very long to establish the routes : maybe we should
        tell him thant we are not on a wired network but on a mobile network ?
    G : babel establish routes quickly enough i'd say. There are two new
        options : hello and wireless, for hello_interval and treating all
        interfaces as wireless. However, treating an interface as wireless
        doesn't lessen the hello_interval, it only changes how babel estimates
        quality link, and cost.
51 52 53 54 55 56 57
    U : from babel web page : "When the Babel daemon detects a wired network, 
        it will use a larger interval between hellos".
        Moreover, it seems that the wireless option only means 
        "hostile environment" which seems best for a resilient network. 
        30 sec of hello interval seams also too much. The default value for
        babel is 4 sec (from babel man page).
        According to raphael's stats on the nexedi's server downtime, 
Ulysse Beaugnon's avatar
Ulysse Beaugnon committed
58 59 60
        45% of the problems dont last more than 2 minutes, 55% no more than
        3 minutes If it takes 2 min to detect a dead connection, then we wont be
        solving many problems with our overlay network
Guillaume Bury's avatar
Guillaume Bury committed
61

Guillaume Bury's avatar
Guillaume Bury committed
62 63 64 65 66
    U : The peer DB size should depend on the number of connection and the
        refresh time
    G : ?! I don't agree, the db size should be proportional ( with a factor
        like 0.01 or less ) to the total number of peers in the entire network,
        with maybe a max size.
67 68 69 70
    U : what we need to do  is to keep the randomness. For this, we need a big
        enought DB to ensure we can still choose a peer as if it was choosen 
        directly from the server. The requiered db size can be calculated from
        the number of connections and the refresh time.
Guillaume Bury's avatar
Guillaume Bury committed
71

72 73 74 75
    U : Remove the --no-boot option since we know when no node is avalaible
    G : the no-boot option is only useful when the server knows no peer,
        irl it should never happen, no-boot is a debug option
    U : Ok, but the server knows when no peers is avalaible, doesn't he ?
Guillaume Bury's avatar
Guillaume Bury committed
76 77
    G : Well when no peer is available the SQL request ( + next() method ) raise
        a StopIteration exception
78 79
    U : Well, I don't think this is a good thing. When not in debug, a node 
        cannot now if their is anyone else already connected
Guillaume Bury's avatar
Guillaume Bury committed
80

81
    G : don't reconnect to server each time we repopulate in peers_db ?
Guillaume Bury's avatar
Guillaume Bury committed
82 83 84 85 86 87
    U : From what I've read on the internet, when you create a server object,
        you don't connect to the server, You only connect to the server once you
        send a request for a methode and then you can automatically use the same
        connection for 15sec
    G : ok, it justs need testing ( for when some requests for the server will
        require to be plugged in the network )
88

Guillaume Bury's avatar
Guillaume Bury committed
89 90
    U : Use more than one boostrap node
    G : we'll use the server as a bootstrap node