Ono - Developer instructions

So You'd Like To Use Ono Peer Selection In Your Application...

As you've probably heard by now, the Ono plugin for the Azureus BitTorrent client is extremely effective at locating nearby peers, doing so with vanishingly small overheads. If you're a developer working on a distributed system, you may wonder how to make Ono's positioning service work for you. Fortunately, Ono's biased peer selection is not limited to Azureus, BitTorrent or Java. On this page, you'll find all resources related to porting your application to use Ono.

To begin, we've provided a boiled-down version of our original service, which is written in Java. To enable support for Ono biased peer selection in the greater BitTorrent community, we have also developed an extension to the OpenTracker distribution. Both of these packages are available at the bottom of this page. As ports to other languages become available, we will post them here; if you successfully port Ono to another language, please send it to us by contacting This email address is being protected from spambots. You need JavaScript enabled to view it. .


  • 4/30/2008: Opentracker code added
  • 4/12/2008: First version of this site is released.

Why Ono?

Ono is the Hawaiian word not only for the King Mackerel fish, but also for "good to eat". The word has an extremely positive connotation, and we hope you'll find our plugin as tasty as Ono itself. The Ono fish is also known as the "wahoo", a feeling that we hope you'll express upon noticing the increased efficiency of your deployments. Finally, Ono merges the theme of our research group (the Aqualab) with that of the first CDN we used for network measurements--Akamai (Hawaiian for "clever").



  • Nikola Borisov
  • Xian Yi Teng


  • We ask that you create an account on our website to access the software. Once you have created an account and logged in, download links will appear at the bottom of this page.
  • License: This software is released under the GPL, if you need a different license, please contact This email address is being protected from spambots. You need JavaScript enabled to view it. . Scripts for running the software are located in the src folder.
  • Instructions for building Opentracker
    1. Get zlib-devel
    2. Get libhashish
    3. Download opentracker_ono.tar.gz from this page
    4. Follow instructions in README

Frequently Asked Questions

  • Does this really work? In a paper pending publication, we show that our lightweight approach significantly reduces cross-ISP traffic and over 33% of the time it selects peers along paths that are within a single autonomous system (AS). Further, we find that our system locates peers along paths that have two orders of magnitude lower latency and 30% lower loss rates than those picked at random, and that these high-quality paths can lead to significant improvements in transfer rates.
  • What are the dependencies for the Ono peer selection service? The only dependencies are a list of CDN names and the ability to perform DNS lookups. If you reached this page, you have met the requirements. Both of these are provided by the default distribution.
  • Can I get a version of your software with a non-GPL license? For details regarding non-GPL licensing of our software, contact us at This email address is being protected from spambots. You need JavaScript enabled to view it. .
  • Why not just use class C subnets, AS numbers or measurement-based techniques for figuring out peer locality? While heuristic-based approaches such as class C subnets and AS numbers also scale well, the position information gained through them is not terribly useful and does not take into account dynamic network conditions. Ono, on the other hand, finds peers that are near one another by relying on preexisting infrastructure (CDNs) that perform extensive Internet measurements. Results from our early experience with this technique show that CDN-based clustering of peers is quite effective in practice.
  • Does this work with my operating system? In short, yes. Ono primarily relies on DNS to perform its functionality and we provide a 100% Java DNS implementation, so it should work anywhere that Java works. It has been extensively tested to work in Windows and Linux environments, and lightly tested in Mac environments. If you encounter a problem, please let us know!