doc: abstract + architecture
[p2p-kernel-protocol.git] / doc / src / introduction.tex
index bac26ce..1e3b57e 100644 (file)
@@ -1,4 +1,39 @@
 
 \section{Introduction}
 \label{sec:intro}
-Paper introduction.
+
+Peer-to-peer protocols currently form the most heavily used protocol class in
+the Internet, along with BitTorrent, the most popular protocol for content
+distribution. A high number of studies and investigations have been undertaken
+to measure, analyse and improve the inner workings of the BitTorrent protocol.
+However, enhancing the protocols used at the network layer is not the only
+approach to improving file sharing techniques, but also optimizing the client
+implementations (P2P applications). As usually these applications are not CPU
+but rather I/O bound, new research opportunities have appeared in the
+Operating Systems field.
+
+This paper aims to improve peer-to-peer technologies by providing a reliable
+and performing implementation of the SWIFT\cite{swift} multiparty protocol at
+the kernel level. Basically we developed a new UNIX kernel module that
+provides the implementation of a completely new protocol, capable of
+transferring multiple files between multiple peers using a single system call.
+We are very confident that this approach must improve the performance of P2P
+file sharing application by reducing the overhead of the kernel context
+switches caused by multiple system calls.
+
+Currently, the most efficient implementation of an file content distribution
+application in an UNIX environment is using the \texttt{sendfile} system call.
+This implementation uses a zero-copy mechanism that transfers the content of a
+file from the hard disk to the network interface without passing any data to
+userspace. Considering these qualifications, we have compared our module's
+benchmarks with \texttt{sendfile}'s in order to classify the enhancements
+brought by this implementation.
+
+The content of this paper is organized as it follows: in the next section we
+will present some related work on the multiparty topics. In Section
+\ref{sec:design} we describe how the kernel module was designed to be
+used in userspace, followed by the actual implementation in Section
+\ref{sec:implementation}. In the next two sections we will present
+some performance tests we have conducted along with the results achieved.
+Finally, in Section \ref{sec:conclusions} we will draw some conclusions
+followed by the some further work that has to be done.