Bassa Offline Downloader.
Overview
This project aimed on building an offline downloader that could download large files (via HTTP or FTP) at a given time period after queuing such requests.
History
A simple survey done on our university network (with an adhoc approach) which had lot of unhappy users due to slow response time triggered this project. This particular network is very busy during office hours, and users who download large files like ISO images, video data files, etc.. make the situation even worse. This type of network will often become unusable during peak hours and eventually create a dissatisfied and unhappy group of users during a short time span. But it is quite noteworthy that this network (and any other similar network) is underutilized after office hours and during weekends. Further during our survey we found that classical 80-20 rule prevailing on this network. That means 20% of the population use 80% of the network bandwidth while 80% of the population use 20% of the bandwidth. This information was visualized with a software called Squish that integrates with Squid proxy server. By using Squish with our proxy server we were able to monitor the amount of bandwidth consumed by each user (based on IP address) during a given period of time.
Conclusion
After this short and adhoc survey we came to following conclusions.
Solution
After coming to above conclusions, we came up with an idea of an offline downloader which could fight against four facts mentioned above. The proposed offline downloader should have following basic properties to overcome problems mentioned earlier.
After birth of Bassa
By satisfying above two requirements we were able to fully utilize unused bandwidth we have been paying for. We were able to brake the 80-20 rule during office hours by queuing all the large file downloads initiated by demanding users. And finally users who were earlier unhappy was satisfied about the new response time of the network infrastructure. And also now we can guarantee that no redundant downloads are made by users (This will save some more bandwidth).