Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: Traffic Shapers & iptables


  • Subject: Re: lug-bg: Traffic Shapers & iptables
  • From: Valery Dachev <valery@xxxxxxxxxx>
  • Date: Sat, 31 Jan 2004 09:12:19 +0200

On Fri, 30 Jan 2004 15:58:30 +0200
Nickola Kolev <nikky@xxxxxxx> wrote:

> Здрасти,
> 
> On Fri, 30 Jan 2004 14:57:10 +0200
> Valery Dachev <valery@xxxxxxxxxx> wrote:
> 
> [ кръц ]
>  : ===
>  : iptables -A peering_in -m mark --set-mark 1
>  : iptables -A peering_in -s <mreja1> --set-mark 2
>  : ... ... ... ...
>  : iptables -A peering_in -s <mrejaN> --set-mark 2
>  : iptables -A peering_in -m mark --mark 1
>  : iptables -A peering_in -m mark --mark 2
>  : ===
> 
> Ако са ти точно такива правилата за маркиране с fwmark, не мога 
> да разбера защо са тия --set-mark 1, от които няма никакъв смисъл,
> защото накрая, без оглед на това какъв е изходния адрес/префикс,
> всичко ще бъде белязано с марка 2.

Не  е така. Забележи, че последните две правила на вършат нищо реално. Те
са accounting правила, а при всяко от по-предните не се излиза от
въпросната верига, а се продължава нататък. Т.е. наистина се маркират само
локалните и международните пакети поотделно. Сборът на двата брояча
накрая дава число близо до акаунтинг правило в началото на таблицата, т.е.
всички пакети стигат до края със съответната маркировка. Пробвал съм да
проверявам маркировката и във filter таблицата и резултатът е същият.

> [ кръц ]
>  : Добре, да речем, че ограничителят не работи. Това не е нормален
>  трафик...: Още повече, че сборът въобще не дава 60те кб/с отчитани
>  пак с MRTG по: същия този интерфейс. А във въпросните таблици влиза
>  само трафик от/към: този интерфейс.
>  : 
>  : Имам чувството, че пакетите, които са минали веднъж и са задържани
>  заради: ограничението, минават по-късно пак през правилата. Така ли е
>  ? А някаква: идея как да си реша проблема, така че и двете неща да
>  работят ?
> 
> Хм, пакетите не се задържат, а се дропят, което значи, че няма как
> да минат през тия правила по два пъти.

Дропят ?! Силно се съмнявам. Ако се дропят, ще има загуба на данни по пътя,
а въобще не е това идеята на кое да е ограничение. Още повече, че не става
дума за рутер, ами просто за някаква си машина.

> Според мен проблемът е, че (макар да не съм видял целия скрипт) не
> маркираш в таблицата mangle, която е единственото легално място за
> маркиране. Това, разбира се, е само предположение.

Маркирането става, именно там. Другаде за destination не можеш да сложиш
MARK, доколкото знам.

> Може ли да пуснеш част от истинския скрипт, а също и вече генерираните
> правила на cbq.init?

Прикачвам го. Ето как се компилират и правилата:
===
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1 cbq bandwidth 100Mbit avpkt 1000 cell 8
tc class change dev eth0 root cbq weight 10Mbit allot 1514
 
tc class add dev eth0 parent 1: classid 1:2 cbq bandwidth 100Mbit rate 64Kbit weight 8Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 isolated
tc qdisc add dev eth0 parent 1:2 handle 2 tbf rate 64Kbit buffer 10Kb/8 limit 15Kb mtu 1500
tc filter add dev eth0 parent 1:0 protocol ip prio 200 handle 1 fw classid 1:2
===

Благодаря отново,
Валери.
#!/bin/bash

FILE='/usr/local/etc/peering.txt'
CHAIN_OUT='peering_out'
CHAIN_IN='peering_in'

umask 077

iptables -t mangle -F $CHAIN_IN
iptables -t mangle -N $CHAIN_IN

iptables -t mangle -F $CHAIN_OUT
iptables -t mangle -N $CHAIN_OUT

for CHAIN in INPUT OUTPUT $CHAIN_IN $CHAIN_OUT; do
	iptables -t mangle -Z $CHAIN
done

# SET INTERNATIONAL NETWORKS FLAG
iptables -t mangle -A $CHAIN_IN -j MARK --set-mark 1
iptables -t mangle -A $CHAIN_OUT -j MARK --set-mark 1
	
# SET PEERING NETWORKS FLAG
for NETWORK in `egrep -v '^#' $FILE`; do
	iptables -t mangle -A $CHAIN_IN -s $NETWORK -j MARK --set-mark 2
	iptables -t mangle -A $CHAIN_OUT -d $NETWORK -j MARK --set-mark 2
done

# INTERNATIONAL
iptables -t mangle -A $CHAIN_IN -m mark --mark 1
iptables -t mangle -A $CHAIN_OUT -m mark --mark 1

# PEERING
iptables -t mangle -A $CHAIN_IN -m mark --mark 2
iptables -t mangle -A $CHAIN_OUT -m mark --mark 2


 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.