Kilka lat temu pytałem już o konfigurację downloadu przy pomocy ifb,
ale dyskusja utknęła w martwym punkcie. Udało mi się zrobić upload na ifb
(co za chwilkę opiszę).
Posiadam autoryzację pppoe i do downloadu obecnie używam imq.
Jeśli ktoś posiada jakieś informacje jak zrobić download na ifb to będę wdzięczny.
Pokażę tu przykład uploadu na ifb (upload jest podzielony na dwie części - upload do sewera/lan i upload do internetu)
Ponieważ używam pppoe zacznę od skryptów ip-up i ip-down
/etc/ppp/ip-up
Kod: Zaznacz cały
#!/bin/bash
#
# When the ppp link comes up, this script is called with the following
# parameters
# $1 the interface name used by pppd (e.g. ppp3)
# $2 the tty device name
# $3 the tty device speed
# $4 the local IP address for the interface
# $5 the remote IP address
# $6 the parameter specified by the 'ipparam' option to pppd
#
# wymagane pelne sciezki do tc
/sbin/tc qdisc add dev $1 ingress
/sbin/tc qdisc filter add dev $1 parent ffff: protocol ip prio 10 u32 match u32 0 0 flowid 1:0 action mirred egress redirect dev ifb0
/etc/ppp/ip-down
Kod: Zaznacz cały
#!/bin/bash
#
# When the ppp link comes up, this script is called with the following
# parameters
# $1 the interface name used by pppd (e.g. ppp3)
# $2 the tty device name
# $3 the tty device speed
# $4 the local IP address for the interface
# $5 the remote IP address
# $6 the parameter specified by the 'ipparam' option to pppd
#
# wymagane pelne sciezki do tc
/sbin/tc qdisc del dev $1 ingress
przykład podziału pasma (dla 3 pierwszych adresów ip w lan):
Kod: Zaznacz cały
# ladujemy moduly IFB
modprobe ifb numifbs=2
ip link set ifb0 up
ip link set ifb1 up
# -----------------UPLOAD --------------------
# kasujemy poprzednie kolejkowanie
tc qdisc del root dev ifb0 2> /dev/null
# tworzymy nowa kolejke glowna
tc qdisc add dev ifb0 root handle 1:0 hfsc default 2
# calkowity Upload (SUMA)
tc class add dev ifb0 parent 1:0 classid 1:1 hfsc ls m2 2928kbit ul m2 2928kbit
# ruch nigdzie nie klasyfikowany - wazne !!!
tc class add dev ifb0 parent 1:1 classid 1:2 hfsc ls m2 100kbit ul m2 100kbit
# upload do serwera lan
tc class add dev ifb0 parent 1:1 classid 1:3 hfsc ls m2 1228kbit ul m2 1228kbit
# upload do internetu
tc class add dev ifb0 parent 1:1 classid 1:4 hfsc ls m2 1600kbit ul m2 1600kbit
# reguly dla filtrow HASH
tc filter add dev ifb0 parent 1:0 protocol ip u32
tc filter add dev ifb0 parent 1:0 handle 2:0 protocol ip u32 divisor 256
tc filter add dev ifb0 parent 1:0 protocol ip u32 ht 800:: match ip src 10.0.1.0/24 hashkey mask 0x000000ff at 12 link 2:
# pasmo dla poszczegolnych uzytkownikow
#do serwera i LAN:
tc class add dev ifb0 parent 1:3 classid 1:1001 hfsc ls m2 102kbit ul m1 1024kbit d 3600s m2 512kbit
tc filter add dev ifb0 protocol ip preference 1 parent 1:0 u32 ht 2:0x1 match ip dst 10.0.0.0/20 match ip src 10.0.1.1 flowid 1:1001
tc qdisc add dev ifb0 parent 1:1001 handle 1001:0 sfq perturb 10
#upload internet
tc class add dev ifb0 parent 1:4 classid 1:2001 hfsc ls m2 50kbit ul m1 600kbit d 7200s m2 300kbit
tc filter add dev ifb0 protocol ip preference 2 parent 1:0 u32 ht 2:0x1 match ip src 10.0.1.1 flowid 1:2001
tc qdisc add dev ifb0 parent 1:2001 handle 2001:0 sfq perturb 10
#do serwera i LAN:
tc class add dev ifb0 parent 1:3 classid 1:1002 hfsc ls m2 102kbit ul m1 1024kbit d 3600s m2 512kbit
tc filter add dev ifb0 protocol ip preference 1 parent 1:0 u32 ht 2:0x2 match ip dst 10.0.0.0/20 match ip src 10.0.1.2 flowid 1:1002
tc qdisc add dev ifb0 parent 1:1002 handle 1002:0 sfq perturb 10
#upload internet
tc class add dev ifb0 parent 1:4 classid 1:2002 hfsc ls m2 50kbit ul m1 600kbit d 7200s m2 300kbit
tc filter add dev ifb0 protocol ip preference 2 parent 1:0 u32 ht 2:0x2 match ip src 10.0.1.2 flowid 1:2002
tc qdisc add dev ifb0 parent 1:2002 handle 2002:0 sfq perturb 10
#do serwera i LAN:
tc class add dev ifb0 parent 1:3 classid 1:1003 hfsc ls m2 102kbit ul m1 1024kbit d 3600s m2 512kbit
tc filter add dev ifb0 protocol ip preference 1 parent 1:0 u32 ht 2:0x3 match ip dst 10.0.0.0/20 match ip src 10.0.1.3 flowid 1:1003
tc qdisc add dev ifb0 parent 1:1003 handle 1003:0 sfq perturb 10
#upload internet
tc class add dev ifb0 parent 1:4 classid 1:2003 hfsc ls m2 50kbit ul m1 500kbit d 7200s m2 250kbit
tc filter add dev ifb0 protocol ip preference 2 parent 1:0 u32 ht 2:0x3 match ip src 10.0.1.3 flowid 1:2003
tc qdisc add dev ifb0 parent 1:2003 handle 2003:0 sfq perturb 10
Jak widać powyżej w pierwszej kolejności (preference 1) wyłapuję ruch kierowany do LAN + serwer (dst 10.0.0.0/20)
od klienta (src 10.0.1.1) i kieruję do odpowiedniej kolejki 1:1001.
Pozostałe pakiety (preference 2) które nie są przeznaczone do LAN lub serwera są kierowanie do kolejki 1:2001
przeznaczonej na upload do internetu dla tego klienta (src 10.0.1.1).
Przy okazji używam tu filtrów hashujących.
Tak to wygląda w skrócie. Wszystko ładnie działa.
Czy jest możliwe zrobienie na ifb downloadu mając autoryzację pppoe?
Chciałbym całkowicie zrezygnować z imq i pozostać tylko przy ifb.
Szukam jakiejś podpowiedzi i kierunku do dalszej walki z IFB
Pozdrowienia
aksnet