markus.kramer | 27 Feb 19:54 2015
Picon

"Altruistic" mode – only bandwidth matters, not share ratio

Hello all,
I want to distribute files within a corporate network using BitTorrent.

Being on a corporate network, a peer must behave strictly “altruistic” 
and share to anybody (from the corporate network) at the highest 
available bandwidth.
In my first test a seeding peer creates files every 15 minutes and a 
leeching peer requests them every 15 minutes.  My observation is that 
file distribution degrades after a while: the seed stops sharing every 
file and reduces bandwidth.

I assume this is caused by the tit-for-tat / reciprocity / mutuality 
principle that is at the heart of the BitTorrent protocol:  its 
intention is to “encourage” others to share, but from a corporate 
viewpoint, this encouragement is unneeded. As far as I understand it, a 
peer uses share ratio to choke and reduce bandwidth.

Can one configure libtorrent such that peers become “altruistic”, 
setting off the mutuality principle?
Has there been a former effort in this direction?

Best regards,
Markus

For further reading see https://github.com/markuskramerIgitt/Magni/wiki

------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
(Continue reading)

Angel Leon | 27 Feb 17:25 2015
Picon

create_torrent question. (adding custom entries inside "info" dictionary)

If you wanted to add a custom entry inside the `info` dictionary and have
its data  considered towards the calculation of the infohash of the
torrent, how would you go about it?

I see that the `m_info_dict` property holding it is private in the
`create_torrent` class and you can only get a hold of the `entry` object at
the last step when you invoke `generate()`

at that point I suppose that if I add entries inside the `info` dictionary,
and then serialize that entry, the torrent wouldn't be valid as the sha1
hash wouldn't match.

has anyone had this issue before, adding custom entries inside the "info"
dict and creating a torrent out of it?

Thanks,
Angel
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
Bedeho Mender | 25 Feb 11:44 2015
Picon

peer_plugin piece management

I have a peer level plugin which overrides the requesting and sending of
pieces.

1) Is it enough to simply take the torrent out of automanaged mode for
libtorrent to no longer attempt to send out requests and/or piece messages?

If not, how would you recommend a plugin take control of this properly and
fully?

2) When sending request messages, I am aware that pipelining is very
important for performance.

Does that apply both for the tcp and the µTP transport protocol?

Beyond making sure that you have 5 outstanding request messages sent to the
peer at all times, is there anything else which is important to pipeline
properly?

3) When a piece has been validated, as reported through
peer_plugin::on_piece_pass, does this
piece automatically get written to disk or the disk buffer?

If it gets written to the buffer, is there a way to force this piece to get
flushed to disk?

best
 Bedeho
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
(Continue reading)

Ricky Huang | 25 Feb 03:47 2015
Picon

TORRENT_EXPORT vs TORRENT_EXTRA_EXPORT generating undefined reference

Hello all,

I have finally upgraded libtorrent 1.0.3 from 0.16.3 (I know, I know, I am super late to the game).

While patching my software to work with the 1.0.3 library, I am encountering a “undefined reference to
`libtorrent::file::file()'” error with the following code:

> int save_file(boost::filesystem::path const& filename, std::vector<char>& v) {
>   using namespace libtorrent;
> 
>   file f;
>   error_code ec;
>   […]
> }

Looking into file.hpp, I noticed file class now uses TORRENT_EXTRA_EXPORT instead of TORRENT_EXPORT
from v0.16.  If I were to change all instances of TORRENT_EXTRA_EXPORT back to TORRENT_EXPORT, the
undefined error will go away.

I’ve tried to include libtorrent/export.hpp but that didn’t make a difference.

Has anyone encountered this, and how should I go about fixing this?

Thanks in advance.
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
(Continue reading)

Ricky Huang | 25 Feb 18:49 2015
Picon

TORRENT_EXTRA_EXPORT generating undefined reference

Weird, it seems like the last mail did not make it (I couldn’t find it in the mail archive).  Sorry for the
redundant email the last one did manage to get through.

==========

Hello all,

I have finally upgraded libtorrent 1.0.3 from 0.16.3 (I know, I know, I am super late to the game).

While patching my software to work with the 1.0.3 library, I am encountering a “undefined reference to
`libtorrent::file::file()'” error with the following code:

> int save_file(boost::filesystem::path const& filename, std::vector<char>& v) {
>   using namespace libtorrent;
> 
>   file f;
>   error_code ec;
>   […]
> }

Looking into file.hpp, I noticed file class now uses TORRENT_EXTRA_EXPORT instead of TORRENT_EXPORT
from v0.16.  If I were to change all instances of TORRENT_EXTRA_EXPORT back to TORRENT_EXPORT, the
undefined error will go away.

I’ve tried to include libtorrent/export.hpp but that didn’t make a difference.

Has anyone encountered this, and how should I go about fixing this?

Thanks in advance.
------------------------------------------------------------------------------
(Continue reading)

phixion | 20 Feb 09:32 2015
Picon

Client Sending Bad Data, Please Help!

Hello,

Running Deluge 1.3.11 with libtorrent-rasterbar 1.0.3.

I'm a member of a private site and I was disabled for sending bad data
announces. Since then I started running Deluge in debug logging mode so
that I could see if any problems occurred.

Sure enough I was banned again, for the same reason.

The admin told me that I was sending bad announces on a few torrents and
gave me the name of 1 of them.

Here's my log from that torrent, can you see anything incorrect in the log
that shows my client is doing something wrong?

Private information has been removed and replaced with "< >":

http://pastebin.com/hAxBSHRR

Regards,

Phixion
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
(Continue reading)

Thomas Vincent-Sweet | 18 Feb 16:36 2015
Picon

completed_time of torrent not reset/updated when torrent files need to be redownloaded

Hi,

It seems that the completed_time of a torrent doesn't change after it has
finished once.

Way to reproduce:
-Finish download of a torrent and stop session.
-Delete manually one of the files
-Launch the torrent session again, loading fastresume data. (fails due to
missing file)
-The completed_date stays the same even when the torrent finishes
downloading a second (or nth) time.

As a consequence, it looks like a torrent finished downloading a few days
before even if it is downloading missing files again. Just isn't consistent
as I expect it to be set whenever we go from downloading to finished state.

Looking at the code (I'm using version 0.16.19, but 1.0.3 looks similar) it
seems like the only time completed_date is reset to 0 is when piece
priorities are updated and the torrent which was finished is in fact not
finished (see torrent.cpp resume_download() and update_peer_interest()
 functions).

Is this done on purpose? Shouldn't we be resetting the completed_time to 0
whenever a torrent is in downloading state ? (which I thought it would do)

Thanks,
Thomas
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
(Continue reading)

Steven Siloti | 16 Feb 23:07 2015
Picon

Persistent credit BEP v4

For the next revision of my persistent credit extension there are some 
major protocol changes so I am publishing the updated BEP while I am 
still working on updating the implementation. As usual, the updated BEP 
is available here:

https://github.com/ssiloti/bep-persistent-credit/blob/master/one-hop-rep.rst

The first big change is to the receipts issued for intermediaries. I 
originally made these use a single session identifier and a cumulative 
volume counter across a series of receipts in the hopes that I could 
avoid having to implement robust retry logic. It turns out I ended up 
implementing robust retries anyways so I've discarded this system in 
favor of assigning a unique sequence number to each receipt.

The second major change was made to improve resistance to double 
spending. A shortcoming of the existing protocol is that it does not 
allow the client to query an intermediary for a peer's current standing. 
The only indication the client has that a peer's balance has been 
exhausted is when a receipt is rejected. Moreover, there is no way for a 
downloading peer to get an update of its standing at an intermediary 
when it uses the standing to get unchoked. This means that even honest 
clients will inadvertently attempt to double spend. To close these holes 
two new messages are added: a "get_standing" DHT query and a 
"your_standing" message. The "get_standing" query is used to get a 
peer's current standing at an intermediary immediately after unchoking 
the peer on the basis of that standing. This way the client can cut off 
a double spender shortly after unchoking rather than having to wait for 
the first receipt. Once a new standing is received from an intermediary 
it is passed on to the downloading peer using the "your_standing" 
message. Obviously a malicious client could ignore this message and 
(Continue reading)

Steve W | 11 Feb 21:56 2015
Picon

Rarest first

 
Hi

I’m trying to get a grasp of how rarest first works. If my understanding is correct, the client looks at its
peers and identifies the rarest N pieces, where N is a relatively small number. Does that mean that the
client would only request these N pieces and no more (thus giving them the preference over other pieces)
for the entire session?

Thanks

Steve

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Libtorrent-discuss mailing list
Libtorrent-discuss <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libtorrent-discuss
Jeff Waller | 11 Feb 09:00 2015
Picon

Continued throughput problems (v 1.0.3)

There appears to be continued throughput problems in version 1.0 I’m 
not seeing a sustained rate anywhere near the possible throughput.
8 MBytes/sec versus 25 Mbytes/sec baseline (scp).  The interface is
wired.

Or when the bandwidth delay production is high (200 Mbits/sec, 150 ms RTT)
the situation is even worse — e.g. 250 Kbytes/sec out of 20 Mbytes/sec
possible (scp).

Additionally, when multiple peers are active, the overall speed appears
to drop rather than increase.

uTP doesn’t seem be be used, although that can be simply a reporting
problem on my part.

I certainly could have misconfigured some of the session settings, I made
some assumptions which might prove to be incorrect.

The number of peers is small, but the bandwidth is high > 100 Mbits, yet
data is being shared at quite low rates.

I could use some help understanding why, and of course ultimately 
improving things.  The goal of course is to as much as possible, use up
all available bandwidth.

-Jeff
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
(Continue reading)

Ömer Faruk Özer | 30 Jan 15:40 2015
Picon

hash check

Hi,

I need to take specific actions when a file is changed after it has
downloaded.

I can't find how to detect this situation.

hash_failed_alert is never called. I assume this alert is sent only when a
downloaded piece fails hash check.

force_recheck does not generate this alert too. It would be great if a
specific alert is generated when file checking detects something is wrong.

Thanks in advance
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/

Gmane