Prioritized Internet Sharing for Home Users?
precursor asks: "Like many of you, I share a house with a couple of other geeks. This is normally a hoot - until it comes time for bandwidth sharing on a single cable modem (it's hard to play games with a bunch of torrent junkies). What solutions have other Slashdot readers implemented for sharing or limiting certain types of bandwidth on a home network? We are especially interested in solutions that we could implement on an aging PC or on hardware that can be purchased on a budget."
For home it's easy. All you need is a baseball bat. It's when you can't get access to the other users that it starts to get tricky.
Yeah, I know, it's weird, but it can be achieved.
At home we are 3 intensive users sharing a 6.5mbps (~800k/sec) download and 880kbps (~120k/sec) upload.
What we do ? Well we RESPECT each other. Meaning ? We all 3 have Azureus for Bittorrent downloads, and the max upload speed we each set is 30k/sec. That means that even if all 3 of us upload at 30k/sec, there's still a 20-30k/sec available for gaming, browsing, etc. As for the download speed, we really rarely cap out the 800 barrier, so it's not much of a problem. But if it is for you, take the whole bandwidth, substract 10% of it, then split evenly between all of you by setting a maximum download speed in Azureus (I'm sure other BT clients can do this as well, but I love Azureus). TADAM !
Total time of implementation : 5 minutes. Total cost : 0$.
Learn more about queueing at the pf FAQ.
:) - Linux distro. The simplicity, if you've never experienced it before, can feel both constraining and liberating at the same time. Give it a try if you've got a spare box. It's hard to experiment without learning SOMETHING - and if you're here I'm sure you're into learning, right? So give it a whirl. If you're not sure what BSD to try, give this a read. If you just want to buy a router, learn from the recent Ask Slashdot - Home Routers w/ Decent QoS Performance?. Best of luck!
:)
See my previous post here for a pf.conf recipe to implement traffic shaping based on packet type. You could also prioritize via IP, require a ssh session to gain higher priorities for a specific IP (authpf), based on time of day, or any other number of factors.
THE guide to pf (packet filter) can be found here. pf will run on FreeBSD as well as, I believe, a few other open OSs. I think it's really the best. Almost any reader here could surely benefit from at least a partial working knowledge of packet filters ("firewalls") in general.
=======
EXTRA CREDIT
=======
Got a few connections you'd like to tie together into one? Read more about Address Pools and Load Balancing with pf.
Another Bandwidth management HOWTO for Linux systems (last revised in '03 - may be better for concepts than router config recipes)
bittorrent traffic shaping
A nice K5 article about packet filtering with OpenBSD firewalls
Prioritizing empty TCP ACKs with pf and ALTQ
Making the most out of a busy connection
Turn that old P5 and two network cards into an OpenBSD firewall and learn to setup your own router. You will learn a TON about TCP/IP, how to protect your internal network, and BSDs in general (they're pretty neat in the way that they don't have as much "cruft" as usually found in your typical - yeah, that works
If you're going to use OpenBSD (which I'd recommend for a firewall/NAT box), be sure to support the OS which strives for portability, standardization, correctness, proactive security and integrated cryptography by ordering a CD, T-shirt, book, or hacker bunker enhancing poster. OpenBSD supports binary emulation of most programs from SVR4 (Solaris), FreeBSD, Linux, BSD/OS, SunOS and HP-UX. Development is active and it won't let you down as a gatekeeper or internal server.
Puffy says "Stay off my computer!" and means it. I sleep well at night knowing "puffy" (the name of my box) is standing guard just behind my cable modem and in front of the 5+ computers my roommates and I are running inside. Has never let me down and doesn't get in my way. Keeps Freenet and torrents from introducing lag into my ssh sessions as well..... Good luck finding a solution to keeping your pipes clean