I'd like to work on a 2-3 month long project (full time) that involves coding in C++ and is related to networks (protocol stacks). I was considering writing my own network stack but that doesn't seem as interesting. It would be great to find an idea to implement a tcp/ip-like stack for distributed system/GPUs that is better as far as network performance goes. I have been googling this for 3 hours but haven't come across anything that seems worth spending 2 months on. Open source projects like netperf seem beyond my scope. I'd really like a relatively small stand alone project that I can work on, at my own pace. The intent of this project is to utilize my free time on a project (that I might later release under open source license) and gain expertise and hands-on experience in C++, networks, parallel programming, GPU, distributed systems etc.
I seem to have hit a roadblock while finding ideas (or perhaps I am not too clear on what I exactly what to do). So any suggestions would be really appreciated. Thanks!
The main goal of a distributed system is to make it easy for users to access remote resources, and to share them with other users in a controlled manner. Resources can be virtually anything, typical examples of resources are printers, storage facilities, data, files, web pages, and networks.
A distributed system is a collection of computer programs that utilize computational resources across multiple, separate computation nodes to achieve a common, shared goal.
Telephone and cellular networks are also examples of distributed networks. Telephone networks have been around for over a century and it started as an early example of a peer to peer network. Cellular networks are distributed networks with base stations physically distributed in areas called cells.
The key goals of a distributed system include: Transparency: Achieving the image of a single system image without concealing the details of the location, access, migration, concurrency, failure, relocation, persistence and resources to the users. Openness: Making the network easier to configure and modify.
If you are specifically interested in doing network programming with an emphasis on distribution and GPU/graphics stuff, you may want to check out the open source (GPL) CIGI project (sourceforge project site:
CIGI is an open simulation protocol for communication between a host device and IG (image generator). The Common Image Generator Interface (CIGI) is an interface designed to promote a standard way for a host device to communicate with an image generator (IG) in the simulation industry.
CIGI is a fairly active project on sourceforge, initiated and backed by BOEING, and is multi-platform software:
The goal of the Common Image Generator Interface (CIGI) SG is to evaluate industry and government interest in developing a standard image generator interface. Typically, today's Image Generator (IG) vendors have their own closed, proprietary run-time interfaces. At I/ITSEC'02, Boeing proposed their Open Source Common Image Generator Interface (CIGI) as a run-time interface that could be adopted by the simulation community. Boeing indicated that they would like to see a standards organization adopt CIGI and develop it into a robust and broadly accepted simulation industry image generator run-time interface standard. The SG is discussing this proposal, evaluating alternatives, and generating recommendations and a proposed action plan.
Here's some wireshark-based info on CIGI
Have you tried Ace Wrappers. http://www.cs.wustl.edu/~schmidt/ACE.html It provide well tested pattern based C++ implementation for distributed network programming.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With