Archived

This topic is now archived and is closed to further replies.

Hisoka

Question about optimistic unchoking

Recommended Posts

Hello,

I'm writing a seminar paper about bittorrent protocol but I have some problems understanding the role of optimistic unchoking. The problem is that its role changes depending on the source. Some suggest that optimistic unchoking is used that the clients don't only favor the fastest peers but some say that it forces the clients to try other peers which might be faster. Which is it, or is it both?

As i understand, bittorrent seeks pareto efficiency by reciprocating to those peers that upload back. It keeps some connection choked (default is four). Choked connections are checked from time to time to seek better download speeds and optimistic unchoking forces the client to test peers by choking one peer and unchoking one. Is this correct?

Thank you in advance.

Share this post


Link to post
Share on other sites

The Optimistic Unchoke upload slot "roams around" between available peers to:

1.Make sure new peers have something to share (by giving them a hopefully rare piece of the torrent)

2.To seek faster peers that will return the favor.

3.(only loosely) to force a greater spreading of pieces among all peers so more peers can participate in uploading the torrent to others. (Otherwise in a torrent swarm of 1 peer and 10 peers, 4 peers could be uploading only to each other while the 6 others gained nothing.)

"It keeps some connection choked (default is four)."

Maybe I misunderstand, but I think you have it backwards. The vast majority of peers on a busy torrent will NOT be downloading from you most of the time. So in that sense, all BUT 4 are choked.

These 4 are upload slots -- 3 normal ones and 1 optimistic unchoke one.

However in light of all kinds of changes and multi-torrent clients, upload slots per torrent probably should vary depending on circumstances. The goal is to keep average upload speed PER upload slot at more efficient speeds relative to packet sizes AND to allow for quicker dissemination of completed torrent pieces. Below 1 KB/sec upload speed per upload slot, the packet overheads become proportionally more of the total packet size and bandwidth efficiency decreases. Above ~10 KB/sec upload speed per upload slot, few peers can return the favor as quickly. (Though a seed would not care and could distribute pieces faster at higher upload speed per upload slot.) From my own tests and estimates, an upload slot speed of 3-5 KB/sec is probably best for downloading busy torrents.

This means with 30 KB/sec total upload speed, that's only 6-10 total upload slots. That could be split with 2 upload slots per torrent and 5 total torrents or 6 upload slots and 1 torrent, however NO BitTorrent client at this time dynamically adjusts upload slots in a fully intelligent manner based on active torrents. (uTorrent comes the closest by reducing upload slots per torrent if <2 KB/sec per...but even it's only reacting after-the-fact.)

Having just 1 upload slot per torrent does not work well because of the insistence (by both uTorrent and the BitTorrent protocol spec) of having an optimistic unchoke upload slot for EVERY torrent, reducing tit-for-tat effectiveness to nearly nil.

Share this post


Link to post
Share on other sites