ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Don't want something which is most likely to get completed after years.
trivial HTTP/FTP server.
News reader.
p2p client (bittorrent, edonkey, gnutella)
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.
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!
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:
What links are going to be grouped into some specific "set" for traffic balancing and failover
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
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)
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?
Determine how Layer 7 (application) will be affected by traffic redirections imposed by the balancer
All of the above can be thought of a "balancing profile", it should have a name and be referenceable
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.
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.
How can we modify these different aspects at runtime, while everything is working, and ideally with no end users noticing?
Logging and reporting
GUI frontends
Modularity, plugins
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 .
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.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.