Przesłanka:
Lokalizacja na wsi, niewiele opcji dla połączeń internetowych o dużej przepustowości. Zdecydowanie najszybszy jest Internet satelitarny, ale jest drogi (zarówno koszt sprzętu, jak i miesięczny i ma wady opóźnień), więc wiele gospodarstw domowych chciałoby się nim podzielić.
Jest to samo w sobie proste - skonfiguruj router z podsiecią dla każdego gospodarstwa domowego (sieci VLAN lub portów fizycznych), zablokuj ruch między nimi i skonfiguruj modem tak, aby kierował się do tych podsieci lub skonfiguruj podwójną translację NAT.
Problem:
Sposób normalnego działania protokołu TCP oznacza, że każde połączenie TCP uzyska mniej więcej 1 / n dostępnej przepustowości, gdzie n jest liczbą połączeń. Więc jeśli jedno gospodarstwo domowe / użytkownik utworzy wiele połączeń, uzyska większy udział w ogólnym połączeniu. To nie jest szczególnie uczciwe - przy nasyconym łączu każde gospodarstwo domowe powinno otrzymać równy udział. Z drugiej strony, gdy nikt inny nie korzysta z połączenia, powinno być możliwe wykorzystanie pełnej przepustowości.
Załóżmy na przykład, że 4 gospodarstwa domowe mają połączenie typu down down o przepustowości 12 Mb / s. Jeśli jeden z nich pobiera / przesyła strumieniowo / cokolwiek innego, powinien mieć możliwość korzystania z pełnego 12 Mb / s (lub wystarczająco blisko). Jeśli 2 gospodarstwa domowe korzystają z połączenia, powinny uzyskać 6 Mb / s, niezależnie od tego, czy jedno gospodarstwo pobiera 1 plik, a drugie 11. (bez zarządzania przepustowością każdy plik pobierałby w przybliżeniu 1 Mb / s) 3 gospodarstwa domowe uzyskać 4 Mb / s każdy i tak dalej.
Co do tej pory wypracowałem:
Najlepszą lokalizacją do wdrożenia takiej polityki (dla dalszego rynku) byłby drugi koniec wąskiej rury, tj. U dostawcy usług internetowych. Oczywiście nie jest to możliwe w tym przypadku, więc dobrze byłoby móc to jakoś przybliżyć. Ale jak? Czy istnieją gotowe routery, które obsługują coś takiego? Czy mogę skonfigurować do tego system Linux lub BSD? Nie musi być kuloodporny - źle zachowujący się serwer TCP lub agresywna usługa UDP może prawdopodobnie obejść wszystko, co mogę zrobić na moim końcu - ale powinien działać w typowym przypadku większości ruchu składającego się z dużej liczby zgodnych z RFC Połączenia TCP.
Żeby było jasne, nie mówię o ustalaniu priorytetów określonych aplikacji, ale raczej o agregowaniu ruchu do / z określonych urządzeń Ethernet lub zakresów adresów IP. Nadawanie niektórym ruchom wyższego priorytetu niż innym ruchom wydaje się być dobrze obsługiwane, ale sytuacja jest mniej jasna, gdy próbuje się równomiernie przydzielić przepustowość klasom ruchu.
W sieci znajduje się wiele źle napisanych / bezmyślnie zwróconych / w inny sposób niedoinformowanych informacji na temat kształtowania ruchu. Dokumentacja sprzętu routera jest strasznie nieokreślona, więc wydaje mi się, że biegam w kółko.
Jak rozumiem, sposobem na zachowanie TCP w ten sposób jest w efekcie symulacja nieco węższej potoku niż jest w rzeczywistości dostępna i sztuczne upuszczanie pakietów, aby się wycofała. Myślę więc, że byłoby dość proste dać każdemu dokładnie 3 Mb / s w powyższym przykładzie poprzez sztuczne upuszczenie jakichkolwiek dodatkowych pakietów. To tak naprawdę nie wykorzystuje efektywnie połączenia, ponieważ przez większość czasu jest wolna pojemność.
Czy istnieje sposób na zrobienie tego, o co proszę? Czy robię to źle? Jestem (a raczej pytane gospodarstwa domowe) chętnie wydaje na to pieniądze - niezależnie od tego, czy jest to router / urządzenie w przystępnej cenie, czy zwykłe urządzenie do dystrybucji dystrybucji Linux lub BSD.