Naanou
About
Naanou currently has the following features as a P2P filesharing client:
- Based upon a highly scalable, high-performance completely decentralised
P2P architecture (Chord)
- Indexes on metadata of resources (images, AVI video, MP3 supported)
- Multi-user 'swarmed' download system
- Resources are fetched by an adaptive-size block transfer method
- Multiple blocks fetched simulatenously, from multiple users
- Blocks are immediately made available to other users - increasing the
availability of a resource
- Has a purty download monitor
- Offers web-based browsing of resources by user, as well as metadata-based
searching
- Various node discovery methods supported
- 'web service' via two simple PHP scripts
- Parsing of arbitary web content for special tags (this was done so a
client could bootstrap from say, parsing a forum page or running a Google
search)
- Manually defined 'well-known' addresses
- UDP broadcasts
From a programmer's point of view, Naanou has the following features, that
are ripe for reusing or extending:
- Written in C#, a .NET language
- Easy to extend in other .NET languages
- Somewhat multiplatform - support is improving
- Underlying P2P substrate independant of filesharing client, could be used
for any type of distributed messaging or publication/subscription of data
- Resource Exchanger
- Embedded HTTP daemon
- HTTP-based multi-source downloading - could be spun off into a download
manager
- Metadata extraction and indexing
- Implementation of the top-most listed features in a modular, easy to use
and fairly well documented system (via embedded C# XML
comments)
Now, the downsides are:
- System never tested with more than 15 concurrent nodes on separate physical
machines. Scalability not proven for my implementation of the Chord protocol
- Not completely bug-free
- As system was developed to a hard deadline, and everything (save five or
so classes) was made from scratch, some classes have been rushed and are lacking
in their design and or documentation
For some more information, please see my
Portfolio page on Naanou.
Wednesday, 12-Mar-2003 16:53:56 UTC