|
Design and Development of a BitTorrent Client and Distributed Tracker
Solution for Mobile Ad Hoc Networks
File
sharing and wireless networks are two domains gaining a lot of interest
nowadays. Solutions like BitTorrent and Emule are known to perform very well
over wired networks where end-to-end performances are almost guaranteed.
However, in wireless networks especially in the Ad Hoc mode, many constraints
appear as the lack of resources, the mobility, and the fact that nodes are at
the same time hosts and routers, which pose question marks on the performances
of these protocols with their default configuration.
The
Planète group-team is studying the problem within the context of the ITEA ExpeShare European project. Our current research aims at the design of an
architecture that allows both the lookup and sharing of digital content over
a wireless AdHoc network. This architecture will provide developers with a
set of primitives that they can use in building efficient P2P file sharing
applications.
Difficulties
are both in the lookup of data and in their sharing once localized. As a
solution for the sharing problem; we proposed the two following main
applications (services):
-
BitHoc Tracker: It is an implementation of a BitTorrent
tracker-less solution (membership management solution) for MANET nodes using
the Windows mobile 6 operating system. In fact, in the mobile Ad Hoc mode,
one cannot rely on a central server (for example a Tracker in a BitTorrent
application) which provides each peer periodically with the lists of peers
interested in the P2P service. The BitHoc Tracker handles this problem and
proposes a method to connect peers to each other in a distributed manner and
allows exchange of membership information. The objective of this service is to
enable peers to discover each other and keep informed about the peers joining
or leaving the P2P service overlay during the session.
-
BitHoc Client: It is an Implementation of an adapted version of
the BitTorrent protocol for mobile AdHoc Networks. The targeted operating
system is Windows Mobile 6. To ensure
content sharing, this service decides in distributed
manner of the structure of the overlay of data exchanges and the scheduling
of the sending of pieces of data among devices. This service is based on the
classical BitTorrent file sharing protocol which we adapted to the
constraints of the wireless ad hoc network. Namely, adapt the peer neighbours
(the ones to whom open data transfer connections) selection strategy and the
piece selection strategy to account for the topology of the network and the
scarcity and shared nature of resources.
Global Architecture
The figure above describes the
global architecture of our solution which includes 3 main components:
- The OLSR Ad Hoc routing service that updates periodically
the entries of device routing table.
- The Ad Hoc distributed
tracker solution: BitHoc Tracker that constructs and adapts the BitTorrent
trackers overlay, peer’s and torrent’s map based on the device routing
table.
- The adapted BitTorrent
client, BitHoc Client takes in charge the data sharing procedure (seeding,
leeching, and creation of MetaInfo files…). BitHoc Client uses the BitTorrent default HTTP messages like in the original protocol in order to ask the
local tracker for up-to-date information about the peers involved in a given
BitTorrent session.
BitHoc Client Description
Written
in C++ (Visual Studio 2008 Project), using Multiplatform socket library
adapted to Windows Mobile 6.
Ensures
the following features:
- It offers
the user a torrent wizard enabling him to create Torrent file from the mobile
device.
-
It manages practically the storage of created Meta Info files and
shared contents.
-
It allows both content leeching and seeding.
- It permits the user to pause and resume
a sharing session while conserving its context.
-
It shows the sharing status of each content (File name, Size,
Downloaded bytes, Elapsed Time, Number of peers included in the sharing
process, Number of uploaded bytes).
- It gives more details about a currently
shared content (the saving absolute path, Number of pieces, Tracker’s
announces URL, Piece Size, Slice Size...).
- It offers a configuration wizard
enabling the user to personalize the following parameters of the protocol:
·
Listen
port.
·
Contents
storage directory
·
Choke
timer.
·
Minimum
number of peers.
·
Maximum
number of peers.
·
Maximum
parallel leeching sessions.
·
Maximum active sessions.
- It gives the user the
opportunity to select the BitTorrent’s protocol version to use. He can choose
either the classic Internet version or a version adapted to mobile AdHoc
networks. For more details about this last one, please read the following
paper:
Mohamed
Karim Sbai, Chadi Barakat, Jaeyoung Choi, Anwar Al Hamra, Thierry Turletti,
"Adapting BitTorrent to wireless ad hoc networks" In proceedings of
7th International conference on ad hoc networks and wireless 2008 (AD-HOC
NOW), Sophia Antipolis, France, September 2008. (Download)
BitHoc Tracker Description
Written
in C++ (Visual Studio 2008 Project).
Ensures
the following functionalities:
- It allows a peer to join the membership
overlay. It consists in looking for peers that are already in the overlay and
getting the membership information from them. The new arrival information
will be after that disseminated to all peers of the membership overlay.
- It
allows a peer to leave the membership overlay. It consists in informing the
members of the overlay of the departure and restructuring the overlay to
account for this event. The membership overlay saved in the peers memory is
after that deleted. The function returns True if the peer succeeded in
leaving the membership overlay.
- It
offers a configuration wizard enabling the user to personalize the following
parameters:
- Http listening port.
- Broadcasting port.
- Broadcast address.
- Tracker client poll interval.
- It
allows real-time monitoring of the status of the overlay namely it tracks:
- The list of shared contents.
- The list of members per sharing session.
- The current topology of the ad hoc network
by getting up-to-date routing information.
- It
manages the tracing of events (joining, leaving nodes, etc)
- It
implements further sophisticated functionalities like debugging and remote
controlling (Sending ping requests, Sending status requests from remote
desktop web browser, etc …).
BitHoc
Search Engine Description
Written
in C# (Visual Studio 2008 Project + .Net Compact Framework).
Ensures
the following functionalities:
-
A user
willing to share some content with the members of his community needs to
indicate to the BitHoc Search Engine the location of the content in the
mobile device file system. First, the Search Engine creates implicitly a
meta-info file (torrent file) that identifies in a unique manner a sharing
session of the content. After that, the Search Engine publish the new torrent
file and a short text description of the related content (introduced by the
user), which will update the local torrent files database maintained in the
underlying BitHoc tracker via HTTP messages.
-
A
remote user, willing to share the same content, has to use the BitHoc search
Engine to find and download the torrent file. He specifies for that the name
of the content or some key words related to its description. The request is
sent via HTTP messages to its local tracker which looks for the closest match
in its local database. If there are no matches, it forwards the HTTP request
to the other trackers in the discovery overlay. Then it presents the received
results through an ergonomic user interface. Based on the details of received
answers (fitness to the search, number of peers involved in the sharing
session, number of seeders, and number of leechers ...), the user can choose
the torrent file to download, then start the content sharing using the BitHoc
client.
Implementation
(Weekly Updated Version)
-
Latest release of BitHoc Search Engine for Windows Mobile 6 (You need to install the .Net
Compact Framework within your mobile in order to be able to run the BitHoc
Search Engine). (Source Code
coming soon)
Note: This program is free software; you can
redistribute it and/or modify it under the terms of the terms of the GNU
General Public License version 3 as published by the Free Software
Foundation.
Screenshots
Dependencies
- OpenSSL library compiled for Pocket PC 2003 under Visual
Studio 2008 (Compatible with Windows Mobile 6).
- Multi
Platform C++ Sockets Library adapted to Pocket PC 2003 SDK and compiled under
Visual Studio 2008 (Compatible with Windows Mobile 6).
Related Publications
·
Mohamed
Karim Sbai, Emna Salhi, Chadi Barakat, "P2P Content sharing in
spontaneous multi-hop wireless networks", to appear in proceeding of the
International Conference on COMmunication Systems and Networks (COMSNETS),
India, January 2010.
·
Mohamed
Karim SBAI, Chadi BARAKAT, "Revisiting content sharing in wireless ad hoc
networks", to appear in
proceedings of the fourth workshop on self-organizing systems (IWSOS),
Zurich, December 2009.(Download)
·
Emna
Salhi, Karim Sbai, and Chadi Barakat, "Neighborhood selection in mobile
P2P networks", in proceeding of
the 11th Algotel conference, Carry-Le-Rouet, France, June 2009. (Download)
·
Mohamed
Karim Sbai, Emna Salhi, Chadi Barakat, "A membership management
protocol for mobile P2P networks",
in proceedings of the ACM Mobility Conference, Nice, September 2009. (Download)
·
Amir
Krifa, Mohamed Karim Sbai, Chadi BARAKAT, Thierry TURLETTI, "A Standalone
Content Sharing Application for Spontaneous Communities of Mobile Handhelds", demo description to appear in proceedings
of the ACM SIGCOMM Mobiheld Workshop, Barcelona,
Aug 2009. (Download)
·
Mohamed
Karim Sbai, Chadi Barakat, Jaeyoung Choi, Anwar Al Hamra, Thierry Turletti,
"AdaptingBitTorrent
to wireless ad hoc networks"
In proceedings of 7th International conference on ad hoc networks and
wireless 2008 (AD-HOC NOW), Sophia Antipolis, France, September 2008. (Download)
·
Amir
KRIFA, Mohamed Karim SBAI, Chadi BARAKAT, Thierry TURLETTI, "BitHoc: A content sharing
application for Wireless Ad hoc Networks", demo description to appear in proceedings
of the IEEE Percom conference, Galveston, Texas, March 2009. (Download)
·
Mohamed
Karim Sbai, Demonstration of BitHoc, ACM
SIGCOMM Mobiheld Workshop, Barcelona,
Aug 2009. (Download)
·
Mohamed
Karim Sbai, Poster presented in Percom conference, Galveston,
Texas, March 2009.(Download)
·
Mohamed
Karim Sbai, Presentation of a Membership Management Protocol for Mobile P2P
Networks, Mobility Conference,
Nice, France,
2009.
(Download)
·
Amir
Krifa, Presentation of the BitHoc package, Expeshare meeting, Oulou, Finlande, June 2009. (Download)
·
Amir
Krifa, Demonstration of BitHoc,
GEMALTO, Paris,
June 2009.
·
Amir
Krifa, Presentation of BitHoc, ENSI,
Tunisia,
Mars 2009.(Download)
People involved
·
Mohamed Karim Sbai
-
Please
send any general or development related question about BitHoc to bithoc-dev@lists-sop.inria.fr.
-
In order to join our mailing list, please send an
email to sympa@sophia.inria.fr with the command “SUB bithoc-dev email-address”.
|