Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement support for transfers via BitTorrent #6479

Closed
rcarpa opened this issue Jan 22, 2024 · 0 comments
Closed

implement support for transfers via BitTorrent #6479

rcarpa opened this issue Jan 22, 2024 · 0 comments
Assignees
Milestone

Comments

@rcarpa
Copy link
Contributor

rcarpa commented Jan 22, 2024

Rucio already supports two 3rd party copy drivers: globus and FTS. However, both of these strongly rely on non-standart/wlcg-specific extensions to execute transfers between source and destination RSEs.

What if we could just install an of-the-shelf bittorrent client on each RSE and use its administrative interface to move the desired data. In theory, it would even be possible to perform "true" multi-source transfers this way.

rcarpa added a commit to rcarpa/rucio that referenced this issue Jan 22, 2024
Additional metadata is added to each file did: the merkle root and
piece layers used by the bittorrent v2 format. This way, we can
reconstruct the .torrent files from this data, allowing us to
transfer files directly between RSEs using bittorrent clients
running on each of the RSEs.

This, initial implementation, relies on the qBittorrent client, but
other clients which support bittorrent v2 could be added later.

A new RSE protocol was needed for the task. The protocol must be
configured with the hostname+port of the bittorrent's data channel
and the 'magnet' scheme. We use custom extensions to the magnet
format to store the name/scope/path of a replica, so the link is not
currently importable into existing torrent clients, but this leaves
the door open for the future. It would be possible to generate magnet
links which actually work with such clients directly in list-replicas.
@bari12 bari12 closed this as completed in 16951cc Jan 26, 2024
voetberg pushed a commit to voetberg/rucio that referenced this issue Mar 21, 2024
Additional metadata is added to each file did: the merkle root and
piece layers used by the bittorrent v2 format. This way, we can
reconstruct the .torrent files from this data, allowing us to
transfer files directly between RSEs using bittorrent clients
running on each of the RSEs.

This, initial implementation, relies on the qBittorrent client, but
other clients which support bittorrent v2 could be added later.

A new RSE protocol was needed for the task. The protocol must be
configured with the hostname+port of the bittorrent's data channel
and the 'magnet' scheme. We use custom extensions to the magnet
format to store the name/scope/path of a replica, so the link is not
currently importable into existing torrent clients, but this leaves
the door open for the future. It would be possible to generate magnet
links which actually work with such clients directly in list-replicas.
voetberg pushed a commit to voetberg/rucio that referenced this issue Apr 15, 2024
Additional metadata is added to each file did: the merkle root and
piece layers used by the bittorrent v2 format. This way, we can
reconstruct the .torrent files from this data, allowing us to
transfer files directly between RSEs using bittorrent clients
running on each of the RSEs.

This, initial implementation, relies on the qBittorrent client, but
other clients which support bittorrent v2 could be added later.

A new RSE protocol was needed for the task. The protocol must be
configured with the hostname+port of the bittorrent's data channel
and the 'magnet' scheme. We use custom extensions to the magnet
format to store the name/scope/path of a replica, so the link is not
currently importable into existing torrent clients, but this leaves
the door open for the future. It would be possible to generate magnet
links which actually work with such clients directly in list-replicas.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants