linux:
iptabes + nat + iproute2 (для хитрых заворотов с маркерами по иптэблсу)
Шейперы:в1. (Динамический) tc & QoS - в свое время сильно долго с ним парился. Суть в том что создаешь классы и рулишь юзера (ипы) в класс. Нагрузка зависит от скоростей каналов, пользователей и интенсивности
в2. (Статический) iptables: limit & limit-burst - в частном случае подбирается методом тыка, т.к. сильно зависит от многих факторов и т.п., и т.д. ( метод не очень красивый, т.к. считает только кол. пакетов, а не все содержимое, но намного легче чем ТС). если сеть не коммерческая, то можно заставить железку типа linksys & dd-wrt обслуживать всю сеть... скажем компов на 20, лично я так 15 машин держал.
если считать трафло не нужно, то за пол часа по в2 строится весь сервер :), если нужно, то учи баш - блочишь иптейбл, снимаешь статистику, запускаешь тейблз, скидываешь цифры в БД, суммируешь, выбираешь зажравшихся, удаляешь с иптйблза / для красоты к БД крутишь(точнее пишешь сам на пхп или чемугодно, я например мордашку за час навуаял на парсере3, которым пять лет пользовался для обслуги 60 клиентов).
В любом случае при динамическом шейпировании нужно часть канала отдать на резерв (для погашении перегрузок) от 10% до 30% все зависит от многих факторов.
Если сеть "домашняя" и скажем режешь для 10 компов 1 МиБ, то проще статически прикинуть или поровну как для 5 компов порезать. Себе ессесно заготовить 3-5 ипов с разной порезкой и сидеть, по быстее :) а если комуто в онлайне погамать не хватает - переходишь да другой ип и отпускаешь часть канала.
Если бушь штудить:
https://www.opennet.ru/docs/RUS/iptables/
https://www.opennet.ru/docs/RUS/bash_scripting_guide/
http://www.mysql.ru/docs/man/
ну, http и скриптовый язык выбирай сам