Archive for май, 2009
Маркиране на българския и международен трафик, за по лесно шейпване.
by Илия Няголов on май.29, 2009, under Мрежата
Нещо доста елементарно, но пък ценно!
Интернет трафика го получавам през два vlan-а , през единия българския трафик, а през другия международния трафик и го посрещам посредством два рутера. За по-лесно шейпване го маркирам на двата рутера и го подавам към терминалите, посредством ToS битовете.
Малко информация за ToS – Type of Service (Тип на услугата). Използва се, за да могат да се използват различни пътища за пакети с различни ToS полета.
На рутера за българския трафик, правя следното.
#mark bg traffic
$IPTABLES -t mangle -A FORWARD -o eth2 -j TOS –set-tos 0x08
На рутера за международен трафик, правя следното.
#mark int traffic
$IPTABLES -t mangle -A FORWARD -o eth2 -j TOS –set-tos 0x10
На терминалите правя следното.
############
if (($main::speed_in1) or ($main::speed_in2)){
# in = receive out = transmit
push @FW_ACTIONS, „$TC qdisc del dev $INTERFACE root“;
#push @FW_ACTIONS, „echo ‘$TC qdisc del dev $INTERFACE root’ >> $tc_log“;push @FW_ACTIONS, „$TC qdisc add dev $INTERFACE root handle 1: htb default 20“;
#push @FW_ACTIONS, „echo ‘$TC qdisc add dev $INTERFACE root handle 1: htb default 20’ >> $tc_log“;push @FW_ACTIONS, „$TC class add dev $INTERFACE parent 1: classid 1:1 htb rate „. $main::speed_in_sum .“kbit“;
#push @FW_ACTIONS, „echo ‘$TC class add dev $INTERFACE parent 1: classid 1:1 htb rate „. $main::speed_in_sum .“kbit’ >> $tc_log“;
}
########################
if ($main::speed_in1) {
push @FW_ACTIONS, „$TC class add dev $INTERFACE parent 1:1 classid 1:10 htb rate „. $main::speed_in1 .“kbit“;
#push @FW_ACTIONS, „echo ‘$TC class add dev $INTERFACE parent 1:1 classid 1:10 htb rate „. $main::speed_in1 .“kbit’ >> $tc_log“;push @FW_ACTIONS, „$TC filter add dev $INTERFACE protocol ip parent 1: prio 10 u32 match ip tos 0x10 0xff flowid 1:10“;
#push @FW_ACTIONS, „echo ‘$TC filter add dev $INTERFACE protocol ip parent 1: prio 10 u32 match ip tos 0x10 0xff flowid 1:10’ >> $tc_log“;}
if ($main::speed_in2) {
push @FW_ACTIONS, „$TC class add dev $INTERFACE parent 1:1 classid 1:20 htb rate „. $main::speed_in2 .“kbit“;
#push @FW_ACTIONS, „echo ‘$TC class add dev $INTERFACE parent 1:1 classid 1:20 htb rate „. $main::speed_in2 .“kbit’ >> $tc_log“;push @FW_ACTIONS, „$TC filter add dev $INTERFACE protocol ip parent 1: prio 20 u32 match ip tos 0x08 0xff flowid 1:20“;
#push @FW_ACTIONS, „echo ‘$TC filter add dev $INTERFACE protocol ip parent 1: prio 20 u32 match ip tos 0x08 0xff flowid 1:20’ >> $tc_log“;
}
Забележка: показал съм само част от скрипта за идеята, но не целия! Всеки който поне малко разбира ще разбере за какво иде реч 🙂 .