bryn1u 17 Zgłoś post Napisano Maj 25, 2010 Na jednym z serwerów mam spory download (obrazy iso płyt). Niestety niektórzy userzy używający różnych akceleratorów pobierania plików potrafią tak zapchać łącze, że dla innych ledwo starcza. Czy da się to jakoś dynamicznie i sprawiedliwie podzielić? Łącze do serwera to 8Mbit. Od razu mówię że limitowanie ruchu na sztywno nie wchodzi w grę. Wiem jak to zrobić we FreeBSD za pomocą ipfw+dummynet, ale zmiana systemu będzie uciążliwa. We FreeBSD regułki wyglądałyby następująco: ipfw add pipe 1 tcp fron any to 10.0.0.1 80 ipfw queue 1 config weight 5 pipe 2 mask src-ip 0xffffffff ipfw pipe 1 config 8Mbit/s Ta reguła wydaje mi się że jest łatwa do rozszyfrowania, ale na wszelki wypadek wyjaśniam. Szerokość pipe’a jest ustawiona na 8M bo takie jest tam łącze symetryczne. Przy takiej konfiguracji każdemu użytkownikowi zostanie dynamicznie przydzielone takie samo pasmo z/do serwera, czyli np. - jeśli dwóch będzie użytkowników ściągało jednocześnie to każdy dostanie po 4M łącza - jeśli dwóch będzie użytkowników ściągało jednocześnie ale jeden z nich otworzy kilka sesji jednoczesnego pobierania (np. takie windowsowe programy typu flashget co dzielą plik na części i otwierają wiele sesji na raz) to i tak każdy dostanie po 4M - przy 4 użytkowników jednoczesnych podzieli to się samo równo po 2 M na głowę bez względu na liczbę otwartych połączeń. Da się coś takiego w linuksie uzyskać w podobnie prosty sposób? Z gory dziękuje. Pozdrawiam. Udostępnij ten post Link to postu Udostępnij na innych stronach
ahes 83 Zgłoś post Napisano Maj 25, 2010 Na jednym z serwerów mam spory download (obrazy iso płyt). Niestety niektórzy userzy używający różnych akceleratorów pobierania plików potrafią tak zapchać łącze, że dla innych ledwo starcza. Czy da się to jakoś dynamicznie i sprawiedliwie podzielić? Łącze do serwera to 8Mbit. Od razu mówię że limitowanie ruchu na Lepiej ogranicz ilość połączeń per klient. Ewentualnie jeśli masz nginx to możesz skorzystać z opcji limit_rate. Udostępnij ten post Link to postu Udostępnij na innych stronach
que_pasa 5 Zgłoś post Napisano Maj 25, 2010 Lepiej ogranicz ilość połączeń per klient. Do ilu żeby było sensownie, do 4, 20 czy 50? Nic mu to nie da w jego przypadku, znajdzie się kilku z "flashgetami" i zapchają mu momentalnie łącze. Ewentualnie jeśli masz nginx to możesz skorzystać z opcji limit_rate. Czy limit_rate nie ustawi mu na sztywno prędkości wysyłania? To nie będzie dynamiczny przydział. Udostępnij ten post Link to postu Udostępnij na innych stronach
bryn1u 17 Zgłoś post Napisano Maj 25, 2010 Chodzi mi o sama metode. Czy jest podobne rozwiazanie jak w przypadku freebsd wklepacaz pare linijek ? Czy poprostu trzeba jajko kompilowac ? Udostępnij ten post Link to postu Udostępnij na innych stronach
ahes 83 Zgłoś post Napisano Maj 25, 2010 Do ilu żeby było sensownie, do 4, 20 czy 50? Nic mu to nie da w jego przypadku, znajdzie się kilku z "flashgetami" i zapchają mu momentalnie łącze. Czy limit_rate nie ustawi mu na sztywno prędkości wysyłania? To nie będzie dynamiczny przydział. Sensownie to do 1 połączenia Jest problem, ponieważ to jest per ip. Jak będą lecieć z natu to wytnie pozostałych. A limit rate określa max prędkość per klient. Aczkolwiek masz racje, to nie jest dynamiczny podział. Na linuksie najłatwiej będzie to zrobić tak: Kolejki HTB wraz z SFQ, markowanie selektorem u32 i będzie cacy. W sumie to kilka poleceń, ale nie robiłem tego wieki i gdzieś pogubiłem moje magiczne skrypty. Przeczytaj LARTC, rozdział 9 i klikniesz to przed śniadaniem. Udostępnij ten post Link to postu Udostępnij na innych stronach