<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SASA DESIGN &#187; Linux</title>
	<atom:link href="http://blog.sa-sa.eu/kategoriq/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.sa-sa.eu</link>
	<description>Open Your mind, Open Your Source Code!</description>
	<lastBuildDate>Thu, 03 Feb 2011 19:27:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Делене на трафика по ToS(DSCP)</title>
		<link>http://blog.sa-sa.eu/statiq/460</link>
		<comments>http://blog.sa-sa.eu/statiq/460#comments</comments>
		<pubDate>Thu, 31 Dec 2009 12:02:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[QoS]]></category>

		<guid isPermaLink="false">http://blog.sa-sa.eu/?p=460</guid>
		<description><![CDATA[<p>Една полезна и хубава статия за делене на трафик от <a href="http://www.rousse-lan.com/archives/170">Добромир Галинов Добрев</a></p>
<div style="width:20%; float: left; padding-right: 0em; display: inline;" class="post_column_left"><img src="http://blog.sa-sa.eu/img/linux.jpg" alt="Ubuntu" /></div>С няколко стъпки ще Ви покажа как да делите трафика на клиентите си на Български и Международен с един интерфейс.</p>
<p>Да предположим, че получавате вашия трафик от 2 vlan-a, 1 за българския и 1 за международния трафик.<br />
Правите следното нещо за да маркирате пакетите:</p>
<div class="code">
/sbin/iptables -A PREROUTING -t mangle -i ${bg_interface} -j DSCP &#8211;set-dscp 0&#215;0<br />
/sbin/iptables -A PREROUTING -t mangle -i ${int_interface -j DSCP &#8211;set-dscp 0x2e
</div>
<p>С тази команда току що сложихте ToS(0×0) за българския и ToS(0xb8) за международния.<br />
Вие пускате на вашият клиент български и международен по 1 vlan, но не знаете как да разграничите скоростите? Ето един лесен вариант:<span id="more-460"></span></p>
<div class="code">
/sbin/tc qdisc add dev ${client_vlan) root handle 1: htb default 60<br />
/sbin/tc class add dev ${client_vlan) parent 1: classid 1:1 htb rate 100Mbit(общ капацитет)</p>
<p>/sbin/tc class add dev ${client_vlan) parent 1:1 classid 1:30 htb rate \<br />
70Mbit ceil 70Mbit prio 0<br />
/sbin/tc qdisc add dev ${client_vlan) parent 1:30 sfq perturb 10</p>
<p>/sbin/tc filter add dev ${client_vlan) protocol ip parent 1:0 prio 1 u32 \<br />
match ip tos 0&#215;0(български трафик) 0xff flowid 1:30</p>
<p>/sbin/tc class add dev ${client_vlan) parent 1:1 classid 1:31 htb rate \<br />
30Mbit ceil 30Mbit prio 0<br />
/sbin/tc qdisc add dev ${client_vlan) parent 1:31 sfq perturb 10</p>
<p>/sbin/tc filter add dev ${client_vlan) protocol ip parent 1:0 prio 1 u32 \<br />
match ip tos 0xb8(международен трафик) 0xff flowid 1:31
</p></div>
<p>Това е само за даунлинк трафика, можете да шейпнете ъплинк трафика на клиента по същия начин, но използвайки ingress( аз не маркирам международен и ползвам общ ъплинк шейп)</p>
<div class="code">
/sbin/tc qdisc add dev ${client_vlan) handle ffff: ingress<br />
/sbin/tc filter add dev ${client_vlan) parent ffff: protocol ip prio 7 u32 match ip dst 0.0.0.0/0 police rate 50Mbit burst 128k drop flowid :1
</div>
<p>Така вашият клиент вече не може да се възползва от по-ниския ви межународен трафик <img src='http://blog.sa-sa.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ето вариант да следите колко български и международен прави рисувайки проста графика:<br />
Добавяме следните таблици:</p>
<div class="code">
/sbin/iptables -t mangle -N CLIENT_IN<br />
/sbin/iptables -t mangle -N CLIENT_OUT<br />
/sbin/iptables -t mangle -A PREROUTING -j CLIENT_IN<br />
/sbin/iptables -t mangle -A POSTROUTING -j CLIENT_OUT<br />
/sbin/iptables -t mangle -A CLIENT_IN -m dscp &#8211;dscp 0&#215;0 -j RETURN -o ${client_vlan)<br />
/sbin/iptables -t mangle -A CLIENT_OUT -m dscp &#8211;dscp 0&#215;0 -j RETURN -i ${client_vlan)<br />
/sbin/iptables -t mangle -A CLIENT_IN -m dscp &#8211;dscp 0x2e -j RETURN -o ${client_vlan)<br />
/sbin/iptables -t mangle -A CLIENT_OUT -m dscp &#8211;dscp 0x2e -j RETURN -i ${client_vlan)
</div>
<p>По този начин виждате колко бг и международен трафик прави вашият клиент и със помощта на туулове като rrdtool/mrtg можете да го следите.</p>
<p>Надявам се да съм бил полезен.</p>
<p>Послепис: По този начин можете да маркирате не само български/международен, но и всякакъв трафик:</p>
<div class="code">
Пример:<br />
/usr/sbin/iptables -A POSTROUTING -t mangle -s 192.168.0.0/16 -j DSCP &#8211;set-dscp 0x0d<br />
/usr/sbin/iptables -A POSTROUTING -t mangle -s 10.0.0.0/8 -j DSCP &#8211;set-dscp 0x0d<br />
/usr/sbin/iptables -A POSTROUTING -t mangle -s 169.254.0.0/16 -j DSCP &#8211;set-dscp 0x0d<br />
/usr/sbin/iptables -A POSTROUTING -t mangle -s 172.16.0.0/12 -j DSCP &#8211;set-dscp 0x0d
</div>
<p>—-<br />
Маркиране на локалния трафик и просто добавяте следния ред в шейп скрипта:</p>
<div class="code">
/sbin/tc class add dev ${client_vlan} parent 1:1 classid 1:32 htb rate \<br />
100Mbit ceil 100Mbit(като разбутвате главния клас да е 200Mbps) prio 0<br />
/sbin/tc qdisc add dev ${client_vlan} parent 1:32 sfq perturb 10</p>
<p>/sbin/tc filter add dev ${client_vlan} protocol ip parent 1:0 prio 1 u32 \<br />
match ip tos 0&#215;34(dscp 0x0d) 0xff flowid 1:32
</p></div>
<p><strong>Линкове:</strong></p>
<ul>
<li><a href="http://www.rousse-lan.com/archives/170" target="_blank">Добромир Галинов Добрев</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://blog.sa-sa.eu/statiq/460/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

