Sunday, January 25, 2009

Automated Mirroring and the BitTorrent Protocol

As an avid Ubuntu supporter, I do what I can in my limited amount of free time to help. I submit hardware specs with my live USB drive, submit and comment on bug reports in Launchpad, create and vote on ideas in Ubuntu Brainstorm, my girlfriend gifted a shirt to me from the Ubuntu Shop (it was my idea), and tell everyone I know about this amazing operating system that I use.

There is one more big thing that I do to help Ubuntu; I seed its disk images. Currently, I am seeding the following images:
  1. Jaunty Alternate 64 bit
  2. Jaunty Alternate 32 bit
  3. Jaunty Desktop 64 bit
  4. Jaunty Desktop 32 bit
  5. Ubuntu 8.04.1 DVD 64 bit
  6. Ubuntu 8.04.1 DVD 32 bit
  7. Ubuntu 8.04.2 Alternate 64 bit
  8. Ubuntu 8.04.2 Alternate 32 bit
  9. Ubuntu 8.04.2 Desktop 64 bit
  10. Ubuntu 8.04.2 Desktop 32 bit
  11. Ubuntu 8.04.2 Server 64 bit
  12. Ubuntu 8.04.2 Server 32 bit
  13. Ubuntu 8.10 Alternate 64 bit
  14. Ubuntu 8.10 Alternate 32 bit
  15. Ubuntu 8.10 Desktop 64 bit
  16. Ubuntu 8.10 Desktop 32 bit
  17. Ubuntu 8.10 DVD 64 bit
  18. Ubuntu 8.10 DVD 32 bit
  19. Ubuntu 8.10 Server 64 bit
  20. Ubuntu 8.10 Server 32 bit
That is 26.8 GB of data. I have uploaded 638.0 GB since installing Ubuntu 8.10 and uploaded over 1 TB while using Ubuntu 8.04. Furthermore, I expect my average upload rate to increase since I only started seeding the DVD and 8.04 images in the last few days. (UPDATE: Now I average about 500 KB/s upload and have uploaded 910.6 GB since installing Ubuntu 8.10.)

I am able to achieve these numbers because of my superb Internet connection in my dorm room at Iowa State University. I used to measure my connection speed today. Using a server in the Twin Cities, Minnesota (44 ms ping at ~150 miles away), I measured 19,987 Kb/s down and 10,436 Kb/s up (or 20.5 MB/s down and 10.2 MB/s up). I have witnessed uploads to individual leechers at 5+ MB/s.

Even though I have helped out so much in the distribution of files, my Internet connection can upload more and my hard drive can store more files, plus I have to manage (or start) the torrents myself. The Ubuntu site makes it easy to find direct HTTP downloads of the newest images, but it is nontrivial to find all 20 of these torrent files. Moreover, when new alphas or maintenance packs are released, I have to manually get the new torrent files. It would be better if my ability to help Canonical upload were automated.

I wish there was a client-server program that would automate this process. Canonical would run the server version and people like me would run the client version. This program would essentially be a type of a distributed computing program. Normally, distributed programs exist in order to access more computational power. This program would be distributed in order to access more upload bandwidth. On the client side, I notify the server of my existence and specify the amount of disk space I will allocate. Then the server decides what files I should be uploading, which would work much like the BitTorrent protocol where rare pieces are shared first.

All the clients could certainly share their files over BitTorrent, but this program could also allow users to directly download from a client, similar to how mirrors work now. Moreover, this program could work with more than just disk images. In Ubuntu Brainstorm Idea 7792, someone requested that apt-get use the BitTorrent protocol. Going further than that, this program could also help distribute all the software updates and repositories: Main, Universe, Restricted, and Multiverse.

In summary, I want to be able to automatically help Canonical upload any and all files either using direct HTTP or BitTorrent.

No comments:

Post a Comment