1 (edytowany przez tomason 2012-02-11 17:15:59)

Temat: Zarządzanie pasmem

Witam,
Wydzieliłem dodatkowy interfejs sieciowy i przypiąłem mu radio.
Chcę stworzyć prostego Hotspota, ale chciałbym mu ograniczyć pasmo np. dać główną kolejkę 512kbit/s download i 128kbit/s i podzielić na userów tak, żeby każdy zawsze miał dostępne PASMO/ilość_userów, a gdy jest dostępne więcej pasma bo drugi user nie korzysta to żeby dostał całe pasmo. Ew. jakieś podobne rozwiązanie.

Co na OpenWRT działa najlepiej? Jakieś HTB + IMQ, widziałem też Gargoyle, a może jeszcze jakieś inne rozwiązanie?

Pozdrawiam

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

2

Odp: Zarządzanie pasmem

To to samo. Tak samo jak w normalnym linuksie, wszystko opiera się na tc/iptables/ip i modułach. Rozwiązania które znajdziesz w sieci możesz i tu zastosować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Zarządzanie pasmem

Przygotowałem coś takiego:

#!/bin/sh

insmod cls_fw > /dev/null                                     
insmod sch_hfsc > /dev/null                                        
insmod sch_sfq > /dev/null                                        
insmod sch_red > /dev/null
insmod sch_htb > /dev/null
insmod cls_u32 > /dev/null

WAN=$(uci get network.wan.ifname)

echo "TC LAN"
tc qdisc del dev br-lan root
tc qdisc add dev br-lan root handle 1: htb
tc class add dev br-lan parent 1: classid 1:1 htb rate 512kbit
tc class add dev br-lan parent 1:1 classid 1:2 htb rate 200kbit ceil 512kbit prio 3
tc qdisc add dev br-lan parent 1:2 handle 2: sfq perturb 10
tc filter add dev br-lan parent 1: prio 3 protocol ip handle 2 fw flowid 1:2
iptables -t mangle -A POSTROUTING -s 172.16.104.0/24 -j MARK --set-mark 2

echo "TC WAN"
tc qdisc del dev eth0.2 root
tc qdisc add dev eth0.2 root handle 1: htb
tc class add dev eth0.2 parent 1: classid 1:1 htb rate 128kbit
tc class add dev eth0.2 parent 1:1 classid 1:2 htb rate 50kbit ceil 128kbit prio 3
tc qdisc add dev eth0.2 parent 1:2 handle 2: sfq perturb 10
tc filter add dev eth0.2 parent 1: prio 3 protocol ip handle 2 fw flowid 1:2
iptables -t mangle -A PREROUTING -d 172.16.104.0/24 -j MARK --set-mark 2
echo "END"

Faktycznie ogranicza download do 0,5Mbps, natomiast upload pozostaje nietknięty.
W czym może być problem?

2. Dlaczego dla oznaczania ruchu na cele ograniczenia downloadu obowiązuje regułka?:

iptables -t mangle -A POSTROUTING -s 172.16.104.0/24 -j MARK --set-mark 2

Ta regułka łapie pakiety, tuż przed wysłaniem do odbiorcy, pochodzące z mojej sieci lokalnej i znaczy je znacznikiem 0x2.
... a zawsze myślałem, że skoro to download to powinno być PREROUTING -d 172.16.104.0/24 (czyli ruch przychodzący nie ważne skąd, ale do mojej sieci).

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

4 (edytowany przez tomason 2012-03-08 11:05:13)

Odp: Zarządzanie pasmem

Witam,
Mam jeszcze pytanie, Cezary będziesz pewnie wiedział.
Chcę ograniczyć ruch dla Hotspota na Chillispocie.
Poza tym, że sesja każdego klienta jest ograniczana (wewnętrzny mechanizm Chillispota) to jeszcze chciałem ograniczyć łączne pasmo na interfejsie... i tutaj zaczynają się schody, bo ni jak regułki nie działają.
Działają one prawidłowo dla interfejsu br-lan, wtedy ograniczają upload poprawnie, ale w przypadku Hotspota, który został wydzielony na dodatkowym interfejsie mam mętlik.

#OGRANICZENIE UPLOADU JESZCZE PRZED SQUIDEM
tc qdisc del dev imq0 root
ip link set imq0 up
tc qdisc add dev imq0 root handle 1: htb
tc class add dev imq0 parent 1: classid 1:1 htb rate $[UPLOAD2]kbit
tc qdisc add dev imq0 parent 1:1 handle 2: sfq


#DLA HOTSPOTU, ALE KTÓRA LINIJKA PREROUTING JEST WŁAŚCIWA? (żadna linijka generalnie nie działa poprawnie)
#br-hotspot ma ifname eth0.3, a tun0 to wirtualny interfejs Chillispot

#tc filter add dev imq0 parent 1:0 protocol ip prio 1 u32 match ip src 0.0.0.0/0 flowid 1:1

#iptables -t mangle -A PREROUTING -i br-hotspot -j IMQ --todev 0
#iptables -t mangle -A PREROUTING -i eth0.3 -j IMQ --todev 0
#iptables -t mangle -A PREROUTING -i tun0 -j IMQ --todev 0

#DLA LANu (działa prawidłowo)
#tc filter add dev imq0 parent 1:0 protocol ip prio 1 u32 match ip src 172.16.104.0/24 flowid 1:1
#iptables -t mangle -A PREROUTING -i br-lan -j IMQ --todev 0
Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables