Thursday, April 2, 2009

U:D Transparency

I would like more transparency in the information accessed by BitTorrent clients about BitTorrent users' use of the client. Click the title for more.

µTorrent reports the following information:
  • IP address (sometimes)
  • BitTorrent client
  • Flags
  • Percent Completion for specified torrent
    (all of the following fields are also for a specific torrent)
  • Download speed (answers "How fast am I getting data from them?")
  • Upload speed (answers "How fast am I giving them data?")
  • Requests
  • Uploaded (answers "How much data have I given them since I last turned on the client?")
  • Downloaded (answers "How much data have I gotten from them since I last turned on the client?")
  • Peer Download speed (answers "How fast are they downloading from all peers?")


I would like µTorrent to report the following information in addition to what was listed above:
  • Micro-Total Uploaded (answers "How much data have I given this person in total for this specific torrent?", regardless of how many times BitTorrent was turned on and off)
  • Macro-Total Uploaded (answers "How much data have I given this IP address ever?")
  • Micro-Total Downloaded
  • Macro-Total Downloaded
  • Peer Upload speed (answers "How fast is this peer seeding other peers?")
  • Peer U:D (answers "What is the ratio of uploading to downloading done by this peer for this specific torrent?" Not just between the two of us, but between him and all other peers involved with this torrent.)
  • Peer Global U:D (answers "What is this peer's overall ratio for uploading to downloading?" Does not include instances where the peer was unable to make connections with other peers who had less than 100% of the data unless the peer has outgoing connections disabled, in which case it very much will include those instances as well.)


I think it's obvious why I would like access to this data: so that I can better determine which of two identities is most likely in the following scenario:

"A person has 89% of a 1.3 GB open-source software program being shared via BitTorrent. I have only 22%. I presently see" (see the first list of the features µTorrent already offers) "that I have uploaded to him 266 MB, or roughly 20% of the total file, or roughly 91% of all the data I have. While he could potentially provide me with the missing 69%, he is by no means obligated to. However, 'fair is fair,' and so it would be nice if he would at least seed me 266 MB that he has and which I do not yet have. However, I noticed that while my upload speed to him is in excess of 100 kbps, my download speed from him is less than 5 kbps. Recognizing that he could not have access to an ISP with such disparate UL/DL parameters (save the DSL talk or cable-in-big-cities talk, folks, 1:20 is a pretty unlikely ratio even in such scenarios), I conclude that he should be able to seed me faster than 5 kbps."

Here is what we still need to know before we can pass judgment on this person:
(A) how much is he seeding others right now?
(B) how much has he seeded others for this specific torrent across all time?
(C) how much has he seeded others period across all time?

I don't want to waste time dissecting the various permutations and their relative goodnesses or badnesses: let's just agree that if he fails to meet my requirements for A, B, and C, then I would be justified in choosing to block all incoming and outgoing connections between he and I, whereas if he meets my expectations (overall) that I will accept the situation for what it is. In other words, is he:

Personality #1: someone who leeches and never seeds? or is he
Personality #2: someone who seeds his due share (establishing a 1:1 ratio), but I just can't see that because I've shown up towards the end of his journey with this torrent, and so for all I know his ratio is 1.397:1 right now and for that reason he's told his client, "Don't seed any more. We've already given them enough. Download, and we should level out to around 1.000:1 shortly" ?

'Cause I don't want to block Person #2, but I do want to block Person #1. And in fact, I am also Person #2. I don't seed something to a 5.0 or 10.0 or 20.0 ratio. I think that's a dumb waste of my own resources, e.g. a tax on my hard drive, on my electric bill, on my bandwidth, on many things. So I wouldn't want to be banned, either, if someone like me was being seeded by the real me and that like-me person thought to himself, "Gee, what a dick!" because I had throttled my UL speed to below 10 kbps but only because a bunch of asshole leechers downloaded from me without seeding back to me and so the result was that I quickly developed a 3:1 UL-to-DL ratio.

Furthermore, if this data was available, I think a lot of people like me would act on it, and it would force the leechers, out of purely self-motivated reasons, to quit being so leechy and to seed back at least as much as they take when possible. (As mentioned, there's always going to be someone who shows up late to the party. Such people shouldn't be penalized just because they're UL-to-DL ratio is abysmally low.)

3 comments:

Sean said...

That's silly because people can't control who they seed to and who they download from. The only control I focus on is to limit my upload, and that's so that I can still use my connection for other things and I don't think that's an unreasonable thing to do. You're going to have to accept that you get what you get, focusing on fine-tuned control is only going to make your torrents slower. Just limit your global upload and be done with it.

SuiginChou said...

I wrote a lengthy(-er) reply which I'll save to Notepad for now, but I'll sum it up with one gourmand analogy:

I accept that you do not agree with my high standards for fine dining ("waste of money," "all tastes the same to me," "cruel to not eat at someone's restaurant who can't help the local sights/smells/sounds," etc), but I don't accept your conclusion that my request for a Michelin handbook is foolish. I'm not forcing you to eat at 3-star restaurants: I am asking the BT community to make a client which facilitates identifying who are the Gordon Ramsays and Martha Stewarts of the community vs. who are the school lunch chefs and Burger King managers. If I choose to eat only haute cuisine, does that mean I have limited options? You bet it does. But it's my choice to make.

I don't see how it's a problem either for me or of mine unless I was to become upset about how few peers I'm connected to now that I've banned 90% of them. The thing is, I wouldn't be upset: this is a conscious decision I'm making quite happily, because I value the principle of the matter that highly. And it's one which, should I decide I don't like how it plays out, I could easily undo. After all, only the most sophisticated of computer hackers (if even) could tell that I had blocked them previously and was now groveling at their feet for bandwidth. Most people would never know I had vanished in the first place --

Unless the idea was so popular with the community that they notice all the good seeds are vanishing and they're becoming saddled with their own horrible, miserable lot. You know the kind of people I'm talking about: you're the sole seed when you finish getting the file from the previous seed (he retires the moment you finish), and you have a ratio of 2.0. By the time you leave, you've got a 5.0 U:D ratio, and you've seeded two individuals 100% and several other individuals a composite of 100%. You decide enough's enough: there are two seeds (not counting yourself) and the torrent health is rated at a 3 (meaning there's 3x as much data in the swarm as the file is large). And so you kill your connection. You sign on the next day, and you see hundreds of peers all stuck at 23% -- because somebody clearly decided he was good enough to sign off and leave these peers with nothing after he managed to get for himself what it was that they all came here for. Some of the stuck peers sign on to a forum you go to and beg you, "MOAR," "SEED PLZ", "Seed, faggot!", and other retarded JeffK/4chan/whatever speak they're calling it these days. When you see shit like that, it pisses you off: because you seeded not one, not two, but five times as much as you downloaded; you left the torrent with not one but two peers at 100%, and another third composite-peer (between many individuals) at 100%, and yet still the torrent died. That means that three or more people were selfish assholes. I should very much like to IP ban such people from making incoming connections with me. It's not possible to ban the specific culprits with BT logging torrent histories (which would all but kill the protocol, given its most popular uses), but it should still be possible to enable users to ban peers they are connected to in real time by reporting to them information which is stored encrypted inside of the client and cannot be modified except by the most diehard of programmers (if even them: maybe the encryption key could be really long and stored on the client's home server or something).

SuiginChou said...

My other big pet peeve is when a peer joins a torrent long after I did -- say it's a 1.0 GB file and I'm sitting at 33% when they arrive -- and despite the fact that I seed them everything I have (everything!), (a) they never seed back to me, and (b) they have the gall to leave the swarm the moment they finish getting the file for themselves ... while I'm still in the swarm trying to get it! In other words, leechers who lap you in part because you gave them a helping hand. I really hate those people. I wouldn't hate them if (for example) they had a download speed of 2.0 Mbps whereas I could only get one of 200 Kbps. It would only be natural for them to finish before I did, assuming they make connections with other peers simultaneously. But when the guy downloads from you at a rate of only 20 kbps, and when you see (on µTorrent) that his overall download speed for the swarm is 100 kbps, it begs the questions, "How?" and "Why?" How did you lap me if your DL speed is lower than mine and I had the head start? And why would you not lend me a helping hand?

If you finish before me, and I significantly help to get you there, and I have no evidence that you seeded anybody in the swarm, and you leave before I get the file? You go on my shit list. That's what I already do now, but (as mentioned) I don't have the important piece of info which is did he or didn't he perhaps seed other people and I just couldn't see that? This is why it'd be really useful for µTorrent to at least let me know (at a bare minimum) what a peer's current UL speed is across the entire swarm. It lets me know for DL, so I don't see why it doesn't let me know for UL.