LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 11-23-2011, 07:07 AM   #1
Aquarius_Girl
Senior Member
 
Registered: Dec 2008
Posts: 4,731
Blog Entries: 29

Rep: Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940
Network programming project ideas ;)


No, not homework, just for learning.

This is what I got already:
1. Client-Server chat program.
2. Implementing TCP/IP protocol.
3. Implementing remote logging library (courtesy SigTerm).

Don't want something which is most likely to get completed after years.
Don't want to waste time building crazy GUIs etc.
 
Old 11-23-2011, 07:32 AM   #2
SigTerm
Member
 
Registered: Dec 2009
Distribution: Slackware 12.2
Posts: 379

Rep: Reputation: 234Reputation: 234Reputation: 234
Quote:
Originally Posted by Anisha Kaul View Post
Don't want something which is most likely to get completed after years.
  1. trivial HTTP/FTP server.
  2. News reader.
  3. p2p client (bittorrent, edonkey, gnutella)
  4. A game. (You could fork KAsteroids clone from Qt examples or something).

My guess that if you go for #1..#3, then you'll spend most of time dealing with protocol, not with actual networking, although #3 will give most exposure to networking, since p2p means both client and server.
With #4, you'll have to deal with lag prediction, which is not directly related to networking.

So I'd go for logging library.
 
1 members found this post helpful.
Old 11-23-2011, 07:38 AM   #3
resetreset
Senior Member
 
Registered: Mar 2008
Location: Cyberspace
Distribution: Dynebolic, Ubuntu 10.10
Posts: 1,340

Rep: Reputation: 62
You want to IMPLEMENT Tcp/ip?!!! I tried to do that about a decade ago, but didn't complete the project.
I wish you best of luck if you're gonna do that!
 
Old 11-23-2011, 07:51 AM   #4
Juako
Member
 
Registered: Mar 2010
Posts: 202

Rep: Reputation: 84
A while ago someone was looking too for a networking project to do. I still think this would be nice .
 
1 members found this post helpful.
Old 11-23-2011, 08:02 AM   #5
corp769
LQ Guru
 
Registered: Apr 2005
Location: /dev/null
Posts: 5,818

Rep: Reputation: 1007Reputation: 1007Reputation: 1007Reputation: 1007Reputation: 1007Reputation: 1007Reputation: 1007Reputation: 1007
Quote:
Originally Posted by Juako View Post
A while ago someone was looking too for a networking project to do. I still think this would be nice .
Create it from scratch and learn, learn, and learn more!
 
Old 11-23-2011, 08:53 AM   #6
Aquarius_Girl
Senior Member
 
Registered: Dec 2008
Posts: 4,731

Original Poster
Blog Entries: 29

Rep: Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940
Thanks Juako and SigTerm.
Quote:
Originally Posted by Juako View Post
A while ago someone was looking too for a networking project to do. I still think this would be nice .
I actually don't know many of the technical terms used there,
so I'll read up on how does a load balancer work.

Also, I have to read up on that logging library. I may post
back within a few days.

Last edited by Aquarius_Girl; 11-23-2011 at 08:54 AM.
 
Old 11-23-2011, 10:16 AM   #7
Juako
Member
 
Registered: Mar 2010
Posts: 202

Rep: Reputation: 84
Quote:
Originally Posted by Anisha Kaul View Post
I actually don't know many of the technical terms used there,
so I'll read up on how does a load balancer work.
A loadbalancer in the context of network links (a "network" or "link" loadbalancer) essentially distributes traffic between two or more network links: the classic example is a network with multihomed WAN access, where you have two or more WAN links (assume for the typical use: Internet access).

You can use the redundant WAN links (presumably from different ISPs) to perform some failover when links fail, and fallback again to a more normal state when links get up again.

In this scenario, if you want to balance outgoing LAN traffic over a set of WAN links while at the same time accounting for failover/fallback, you have to think of:
  1. What links are going to be grouped into some specific "set" for traffic balancing and failover
  2. If any, what links are to be considered "primary" links for the set, that is, the links that should be working when everything is OK
  3. If any, what links are to be considered "secondary" links for the set, that is, the links that should be used in the case of primary link failure (in case a "set" has zero secondary links, the failover would consist just of removing temporarily the failed primary link from the set until it's up again)
  4. Determine HOW traffic is going to be distributed among a set of links: are some links going to handle more connections than others? or all traffic will be evenly distributed among live primaries?
  5. Determine how Layer 7 (application) will be affected by traffic redirections imposed by the balancer
  6. All of the above can be thought of a "balancing profile", it should have a name and be referenceable
  7. What LAN traffic will be associated with specific profiles? Perhaps there's several LANs with different needs, perhaps requirements change on different hours or week days, should VPN traffic be excluded?, etc etc.
  8. Link monitoring: what techniques are to be exploited for link state detection, how fast we can act upon events, is the monitoring algorithm linear or will it adapt to recent history of the state of the network?, etc etc.
  9. How can we modify these different aspects at runtime, while everything is working, and ideally with no end users noticing?
  10. Logging and reporting
  11. GUI frontends
  12. Modularity, plugins
  13. Integration with other tools or frameworks (like for example webmin)

So basically the user would set up a config file defining several profiles, and the program should dynamically keep up the network configuration (any of interface config, routes, route policies, iptables rules, and qdiscs) and adapt it constantly to the network state, trying to maintain at everytime the "best" possible state and to react as quickly as possible to state changes.

I actually almost finished an implementation, but it was in Mikrotik RouterOS. A lang in which you have to simulate multidimensional arrays for example, very minimal and quirky. That and ROS own bugs eventually got me fed up and dropped it. But it was starting to look very well! Though it was masochistic to use that for this project. Even Bash is pleasure and raw power compared to ROS scripting language .

Last edited by Juako; 11-23-2011 at 10:23 AM.
 
1 members found this post helpful.
Old 11-24-2011, 12:42 AM   #8
Aquarius_Girl
Senior Member
 
Registered: Dec 2008
Posts: 4,731

Original Poster
Blog Entries: 29

Rep: Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940Reputation: 940
Quote:
Originally Posted by SigTerm View Post
How about remote logging library? I.e. make a library that provides logging routines similar to qDebug(), is configurable and can send logging messages to multiple servers depending on message priority. Plus a server that can receive messages from multiple programs. Similar to a chat program, but much more practical/useful.
Today I read into qDebug keenly. Implementing that kind of library does
indeed sound "fun". I think I'll go with it.
Thanks for being around.


Juako:
Thanks for the detailed explanation of that project. But, I somehow feel
that it'll be better for me to learn to walk before attempting Gymnastics.
I'll surely consider your idea once I get something simpler done.

Last edited by Aquarius_Girl; 11-24-2011 at 12:45 AM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Programming Languages for Project Euler: Additional ideas? Geneset Programming 14 06-30-2009 03:36 AM
project ideas macomrades Linux - Networking 6 07-10-2008 09:48 AM
I need ideas for a small programming project Nylex Programming 6 08-13-2006 12:30 AM
Project ideas jaideep.dhok Linux - Security 4 11-17-2005 06:50 PM
Project Ideas rahul_kulkarni Programming 1 07-25-2005 02:09 AM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 01:11 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration