TODO 4.83 KB
Newer Older
Guillaume Bury's avatar
Guillaume Bury committed
1 2 3
G : We should focus on clearing the TODO List, then go to testing phase,
    since the end is nearing... ( I finish on august, 3 )

4
To be done :
5 6 7 8 9 10 11
    Catch a more precise exception thant Exception at line 108 in vifibnet.py
    ( UPnP forwarding )

    Upgrade the logging function in order to be able to log message like
    "Refreshing peers DB ... done", or add log messages to specify that an
    action advertised by a previous log message has been completed

Guillaume Bury's avatar
Guillaume Bury committed
12 13
    use the server as a bootstrap node -> switch peer discovery to be done
    by vifibnet directly ?
14

Guillaume Bury's avatar
Guillaume Bury committed
15 16
    Use an algorithm to choose which connections to keep and/or establish
    instead of pure randomness
Guillaume Bury's avatar
Guillaume Bury committed
17

Guillaume Bury's avatar
Guillaume Bury committed
18 19
    Replace comments at the beginning of functions with docstrings & give all
    fn docstrings
Guillaume Bury's avatar
Guillaume Bury committed
20

21 22
    In peers DB, flag the dead peers so we only choose them if necessary and we
    can remove them if we have enought peers
Guillaume Bury's avatar
Guillaume Bury committed
23

24
    Use a timeout for the server peersDB so we can flag unreachable peers and
25
    remove the peers whose certificate is no longer valid
Guillaume Bury's avatar
Guillaume Bury committed
26

27
    Specify a lease duration in ForwardViaUPnP
Guillaume Bury's avatar
Guillaume Bury committed
28

Guillaume Bury's avatar
Guillaume Bury committed
29
    Handle LAN internally in order not to have catastrophic results ....
Guillaume Bury's avatar
Guillaume Bury committed
30
    ( avahi could be used )
31

Guillaume Bury's avatar
Guillaume Bury committed
32
To be discussed:
33 34 35
    Ideas for the name :
          CON ( cloud overlay network ), cloudnet. From J.P -> already taken

Guillaume Bury's avatar
Guillaume Bury committed
36
    G, J : To get traffic stats ( bytes in/out ), you can use
Guillaume Bury's avatar
Guillaume Bury committed
37 38 39 40 41 42
          /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
43 44 45
        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.
46
    U : Great !!!
Guillaume Bury's avatar
Guillaume Bury committed
47

Guillaume Bury's avatar
Guillaume Bury committed
48 49 50 51 52 53 54
    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.
Guillaume Bury's avatar
Guillaume Bury committed
55
    U : from babel web page : "When the Babel daemon detects a wired network,
56
        it will use a larger interval between hellos".
Guillaume Bury's avatar
Guillaume Bury committed
57 58
        Moreover, it seems that the wireless option only means
        "hostile environment" which seems best for a resilient network.
59 60
        30 sec of hello interval seams also too much. The default value for
        babel is 4 sec (from babel man page).
Guillaume Bury's avatar
Guillaume Bury committed
61
        According to raphael's stats on the nexedi's server downtime,
Ulysse Beaugnon's avatar
Ulysse Beaugnon committed
62 63 64
        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
65 66 67 68 69 70
    G : ok, so babel hello-interval should be set to a lower value,
        we should do some tests to pinpoint the best compromise between
        speed and bandwith usage.
        Btw, is there a doc ( pdf, image, file ) resuming Raphael's stats
        on nexedi's server downtime ? it could be useful for the internship
        rapport
Guillaume Bury's avatar
Guillaume Bury committed
71

Guillaume Bury's avatar
Guillaume Bury committed
72 73 74 75 76
    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.
77
    U : what we need to do  is to keep the randomness. For this, we need a big
Guillaume Bury's avatar
Guillaume Bury committed
78
        enought DB to ensure we can still choose a peer as if it was choosen
79 80
        directly from the server. The requiered db size can be calculated from
        the number of connections and the refresh time.
81
    G : ok, you can erase this talk
82 83 84 85 86 87 88

    U : Why are --ip and internal-port mutually exclusive ?
        Currently upnp only forward via UDP. Should he also forward via TCP ?
        Why dont we only use UDP ?
        No error should be raised when no upnp is detected : we should allow
        machines having public IP to do an automatic configuration using the
        discovery by an other peer
89 90 91 92 93 94 95 96
    G : Actually, i was wrong, --ip and internal-port are no longer exclusive
        Julien said udp might not be used by some people because of
        restrictions imposed by the ISP ( FAI in french ), so we should
        allow both, and act according to the options specifying which servers
        to start (upd, tcp-server)

    G : I think the number of route going through an interface should be a
        Connection attribute, not a dict in tunnelManager