This one will be related to benchmarking and stats gathering : - Repo - Current functionality - To-Do List for toadlet and stats - Issues -----------------------------------------------------------------------------------------
| Repo The repository for the GSoC-2013 Transport Layer Project, which I'm developing can be found here (https://github.com/Quadrocube/fred-staging) at the branch transport_layer_modifications (probably should rename it and add another for actuall transport layer changes - the current code there is related to the base for benchmarking only). | Current functionality LinkStatistics class was presented to represent the gathered link indexes and two LinkStatistics fields were added to a PeerNode - the first one (linkStatsTotal) is used for attaching a benchmark-aware listener to it and serves for benchmark measurements. The other LinkStatistics field in PeerNode (shortRunLinkStats) will be utilized for a several actually transport-related modifications. LinkStatisticsToadlet acts as web-interface for the link sampling. Upon activation (Connections to Friends - select "test connection" near the friend's noderef - enter the sample size, press "Test conection"), it attaches a listener (LinkStatistics.StatsChangeTracker) to a chosen peerNode.linkStatsTotal, initiates a BulkTransfer of the given size, and monitors several usefull for later analysis activities. Currently it produces only a grand-total upon the end of the transfer but there are callbacks introduced that can be used to build up a more precise dynamic analytics. Note: In order for this to work, both testing and tested peer should be supplied with the version of freenet from this branch. Reason: it contains the receiver-side modification to get rid of the need to manualy accept each test. | To-do list for toadlet and stats - Introduce the monitoring of other characteristics of a connection - like e.g. bandwitdth measuring, average packet size seen, ... (Stats) - Implement the dynamic logs in form of graphs - currently the most vital things that will be usefull to have are (in order of importance): congestion_window_utilized-from-time graph, bandwidth-from-time graph, data_in_flight-from-time graph, payload_to_alldata-from-time, averageRTT-from-time, etc.. (Toadlet) - Localization (in a long term, not vital currently) (Toadlet) - Forbid the link sampling in case of huge load on the monitored node. There are already means to reject the test for the peer, but they are not used currently (See NodeDispatcher.java) (Toadlet) | Issues - As the look up of the field show, the easieset-to-use tool for such primitive plotting tasks seems to be JFreeChart. Any propositions? - Potentially very long locking in POST at toadlet - need to fix it somehow. Once again, a long-term thing. After all that is ready, I am passing to the implementation of the todo list discussed at the previous report and comparing the results obtained by that implementation against the benchmark results of the current one. And at last it will be possible to estimate the reasons for many suspicious transfer failures (e.g. LAN-transfering 1MiB files for minutes) and fix them. quadrocube