Приміщення:
Розташування в сільській місцевості, не так багато варіантів для високосмугового підключення до Інтернету. Найшвидший на сьогоднішній день - супутниковий Інтернет, але він дорогий (як обладнання, так і щомісячна вартість та має недоліки), тому кілька домогосподарств хотіли б поділитися ним.
Це само по собі - встановити маршрутизатор з підмережею для кожного домогосподарства (VLAN або фізичні порти), заблокувати трафік між ними і налаштувати модем для маршруту до цих підмереж або встановити подвійний NAT.
Проблема:
Те, як зазвичай працює TCP, означає, що кожне TCP-з'єднання отримає більш-менш 1 / n наявної пропускної здатності, де n - кількість з'єднань. Отже, якщо одне домогосподарство / користувач створить безліч зв’язків, вони отримають більшу частку в загальному зв’язку. Це не особливо справедливо - при насиченому зв’язку кожне домогосподарство повинно отримувати рівну частку. З іншого боку, коли ніхто більше не використовує з'єднання, слід мати можливість використовувати повну пропускну здатність.
Наприклад, скажімо, що 4 домочадці мають спільне з'єднання 12 Мбіт / с. Якщо хтось із них завантажує / потокове / що завгодно, він повинен мати можливість використовувати повних 12 Мбіт / с (або достатньо близько). Якщо підключення використовують 2 домогосподарства, вони повинні отримувати 6 Мбіт / с кожне, незалежно від того, чи одне домогосподарство завантажує 1 файл, а інше 11. (без управління пропускною здатністю кожен файл завантажуватиме приблизно 1 Мбіт / с у цьому випадку) 3 домогосподарства отримуйте 4Mbit / s кожен тощо.
Що я до цього часу працював:
Найкраще місце для здійснення такої політики (для нижньої течії) було б на іншому кінці вузької труби, тобто у провайдера. Очевидно, що в цьому випадку це неможливо, тож було б добре якось наблизити його. Але як? Чи є маршрутизатори, які підтримують щось подібне? Чи можна налаштувати поле Linux або BSD для цього? Це не повинно бути кулезахисним - недоброзичливий TCP-сервер або агресивна служба UDP може, мабуть, обійти все, що я можу зробити в своєму кінці, - але це повинно працювати для загального випадку більшості трафіку, що складається з безлічі сумісних з RFC TCP-з'єднання.
Щоб було зрозуміло, я не говорю про пріоритетність конкретних додатків, а про агрегацію трафіку до / від конкретних пристроїв Ethernet або діапазону IP-адрес. Надання деякому трафіку більш високого пріоритету, ніж інший трафік, здається, добре підтримується, але ситуація менш зрозуміла, коли намагаються однаково розподілити пропускну здатність для класів трафіку.
В Інтернеті є багато погано написаної / недумно регенерованої / інакше неінформованої інформації про формування трафіку. Документація на апаратне забезпечення маршрутизатора жахливо не специфічна, тому я, здається, бігаю по колах.
Як я розумію, спосіб змусити TCP поводитись таким чином - це фактично імітувати трохи вужчу трубу, ніж це дійсно доступно, і штучно скидати пакети, щоб відмовитись. Тому я думаю, що було б досить просто дати всім рівно 3 Мбіт / с у наведеному вище прикладі, штучно скинувши зайві пакети. Це дійсно не ефективно використовує з'єднання, оскільки більшість часу є запасна ємність.
Чи є спосіб зробити те, про що я прошу? Невже я про це не так? Я (а точніше, домочадці, на які йдеться в питаннях) готові витратити гроші на це - будь то маршрутизатор / прилад з помірною ціною або загальний короб для управління дистрибутивом Linux або BSD.