A Simple Napster Style Peer to Peer File Sharing System solution

$27.99

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (2 votes)

This% project% has% two% purposes:% first% to% get% you% familiarize% with% sockets/RPCs/RMIs,% processes, threads,%
makefiles;%second%to%learn%the%design%and%internals%of%a%NapsterLstyle%peerLtoLpeer%(P2P)%file%sharing system.
You%can%be%creative%with%this%project.%You%are%free%to%use%any%programming%languages%(C,%C++, Java,%etc)%and%
any%abstractions%such%as%sockets,%RPCs,%RMIs,%threads,%events,%etc.%that%might%be needed.%Also,%you%are%free%to%
use%any%computer%as%long%as%it%runs%Linux. Your%assignment%will%be%graded%in%a%Linux%environment,%and%you%
will%loose many%points%if%the%TAs%cannot%compile%and%run%your%assignments.%
In%this%project,%you%need%to%design%a%simple%P2P%system%that%has%two%components:
1. A”central”indexing”server. This%server%indexes%the%contents%of%all%of%the%peers%that%register%with%it.%It%
also% provides% search% facility% to% peers.% In% our% simple% version,% you% don’t% need% to% implement%
sophisticated%searching%algorithms;%an%exact%match%will%be%fine.%Minimally,%the%server%should%provide%
the%following%interface%to%the%peer%clients:
• registry(peer%id,%file%name,%…)%LL invoked%by%a%peer%to%register%all%its%files%with%the%indexing%server.%
The%server%then%builds%the%index%for%the%peer.%Other%sophisticated%algorithms%such%as%automatic%
indexing%are%not%required,%but%feel%free%to%do%whatever%is%reasonable.%You%may%provide%optional%
information%to%the%server%to%make%it%more%’real’,%such%as%the%clients’%bandwidth,%etc.
• search(file%name)%LL this%procedure%should%search%the%index%and%return%all%the%matching%peers%to%
the%requestor.
2. A” peer. A% peer% is% both% a% client% and% a% server.% As% a% client,% the% user% specifies% a% file% name with% the%
indexing%server%using%”lookup”.%The%indexing%server%returns%a%list%of%all%other peers%that%hold%the%file.%
The%user%can%pick%one%such%peer%and%the%client%then%connects%to this%peer%and%downloads%the%file.%As%
a%server,%the%peer%waits%for%requests%from%other%peers and%sends%the%requested%file%when%receiving%a%
request. Minimally,%the%peer%server%should%provide%the%following%interface%to%the%peer%client:
• obtain(file%name)%LL invoked%by%a%peer%to%download%a%file%from%another%peer.
Other%requirements:
• Both% the% indexing% server% and% a% peer% server% should% be% able% to% accept%multiple% client requests% at% the%
same% time.% This% could% be% easily% done% using% threads.% Be% aware% of% the% thread synchronizing% issues% to%
avoid%inconsistency%or%deadlock%in%your%system.
For%full%credit,%you%need%to%only%support%text%files;%for%10%points%extra%credit,%you%can%add%support%for%
binary%files.%
• No%GUIs%are%required.%Simple%command%line%interfaces%are%fine.
Extra”Credit:
• 5 points: Add%support%for%both%text%and%binary files in%the%transfer
• 10″points: Add%support%for%data%resilience%by%allowing%a%configurable%replication%factor (system%wide)
2 Evaluation!and!Measurement
Deploy%at%least%3%peers%and%1%indexing%server.%They%can%be%setup%on%the%same%machine%(different directories)%
or%different%machines;%if%you%are%having% trouble% running%on% the%same%machine%due% to%overlapping%ports%on%
your%processes,% feel% free% to%setup%4 virtual%machines (VM) on%your%system%and% run%each%peer%and%indexing%
server% on% a% separate% VM.% Each% peer% has% in% its% shared% directory% (all% of% which% are% indexed at% the% indexing%
server)%at%least%10%text%files%of%varying%sizes%(for%example%1k,%2k,%…,%10k).%Make sure%some%files%are%replicated%
at%more%than%one%peer%sites%(so%your%query%will%give%you%multiple results%to%select).
Do%a%simple%experiment%study%to%evaluate%the%behavior%of%your%system.%Compute%the%average response%time%
per%client%search%request%by%measuring%the%response%time%seen%by%a%client,%such%as 1000%sequential%requests.%
Also,%measure% the% response% times% when%multiple% clients% are concurrently%making% requests% to% the% indexing%
server,% for% instance,% you% can% vary% the% number% of concurrent% clients% (N)% and% observe% how% the% average%
response%time%changes,%make%necessary%plots to%support%your%conclusions.
3!What!you!will!submit &!Grading
When%you%have%finished%implementing%the%complete%assignment%as%described%above,%you%should submit%your%
solution% to% ‘digital% drop% box’% on% blackboard. Each% program% must% work% correctly% and% be% detailed% inLline%
documented.%You%should%hand%in:
1. Source”Code”(30 points): You%must%hand%in%all%your%source%code,%including%with%inLline%documentation.
2. Makefile/Ant” (5″points):”You%must% use%Makefiles%or%Ant% to%automate%your% programming%assignment%
compilation
3. Manual (10″points): A%detailed%manual%describing%how%the%program%works.%The%manual%should%be able%
to%instruct%users%other%than%the%developer%to%run%the%program%step%by%step.
4. Compiles”Correctly (10″points): Your%code%must%compile%in%a%Linux environment.%
5. Output”file (10″points): A%copy%of%the%output%generated%by%running%your%program.%When%it downloads%a%
file,%have%your%program%print%a%message%”display% file%’foo'”% (don’t%print%the actual%file%contents%if%they%
are%large).%When%a%peer%issues%a%query%(lookup)%to%the%indexing server,%having%your%program%print%the%
returned%results%in%a%nicely%formatted%manner. Describe%any%cases%for which%your%program%is%known%not%
to%work%correctly
6. Design”Doc (15 points): You%must%write%about% how% your% program%was% designed,%what% tradeoffs% you%
made,%etc.%Also%describe%possible%improvements%and%extensions%to%your program%(and%sketch%how%they%
might%be%made).
7. Performance”Evaluation”(20″points):”You%are%to%conduct%a%basic%performance%evaluation
8. Extra”Credit”(15 points): Binary files support%and%data%replication.%
Please%put%all%of% the%above%into%one%.zip%or%.tar% file,%and%upload%it% to%‘digital%drop%box’%on blackboard’.%The%
name%of%.zip%or%.tar%should%follow%this%format: “PROG#_LASTNAME_FIRSTNAME.{zip|tar|pdf}”.
Please%do%NOT%email%your%files%to%the%professor%and%TA!!
Grades%for%late%programs%will%be%lowered%10%%per%day points%per%day%late%(beyond%the%7Lday%late%pass).