This project is for a multi-tiered decentralized framework to be created in C#. This can be a library that can be included in client applications to form a mesh of supernodes and leafnodes. This is a common (hybrid) network architecture.
Supernodes are responsible for relaying traffic, leafnodes are clients that are firewalled. As such, this project will need to traverse firewalls to the best of its ability either by UDP hole punching or TURN.
The nodes must be addressable directly because there will be chat rooms that can be searched for (DHT style) and entered. In a given room, users can be admins and users can be kicked/banned.
Rooms will be located and can be used across the network, we do NOT want pnrp based solutions. This needs to be able to run on XP/Vista platforms.
Users can publish and view both voice and video in chat rooms AND private messages. The network needs to self-adjust, so if a supernode goes down, the network is still maintained.
Each user can have a list of contacts by username (usernames are unique across the mesh). Users can also open their own rooms. The mesh should have a form of load-balancing and routing, so if userA has 30 webcam viewers, all the load isnt directly placed on userA having to send multiple streams to the 30 viewers.
Once again, this can be a library (dll), in fact, that is preferred. The UI can be designed by us. What we need is the networking architecture as described.