트래픽 제한
- OS : RHEL4
# rpm -qi iproute Name : iproute Relocations: (not relocatable) Version : 2.6.9 Vendor: Red Hat, Inc. Release : 3 Build Date: 2004년 09월 20일 (월) 오후 06시 21분 34초 Install Date: 2005년 08월 15일 (월) 오전 03시 58분 52초 Build Host: porky.build.redhat.com Group : 응용프로그램/시스템 Source RPM: iproute-2.6.9-3.src.rpm Size : 1997359 License: GNU GPL Signature : DSA/SHA1, 2005년 01월 06일 (목) 오전 08시 19분 38초, Key ID 219180cddb42a60e Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Summary : 어드밴스 IP 라우팅과 네트워크 장치 설정 도구들. Description : iproute 패키지에는 ip와 rtmon과 같은 네트워킹 유틸리티가 포함되어 있습니다. 이러한 유틸리티는 Linux 2.2.x 커널의 고급 네트워킹 기능을 사용하기 위하여 만들어 졌습니다.
- tc - show / manipulate traffic control settings
#!/bin/sh# Functionally almost identical to the CBQ sample configuration above:
#tc qdisc add dev eth0 root handle 1: htb default 30
tc qdisc add dev eth0 root handle 1: htb default 10tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit burst 15k
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k
#tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k
#tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k# The author then recommends SFQ for beneath these classes:
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
#tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
#tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10# Add the filters which direct traffic to the right classes:
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
#match ip dport 80 0xffff flowid 1:10#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
#match ip sport 25 0xffff flowid 1:20#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
#match ip dport 22 0xffff flowid 1:30tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip src 211.119.136.240/32 match ip dst 211.119.136.240/32 flowid 1:10#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
#match ip dst 211.119.136.240/32 flowid 1:10#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
#match ip src 211.119.136.240/32 flowid 1:10#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
#match ip src 211.119.136.240/32 match ip sport 80 0xffff flowid 1:10
목적 : 업/다운 5Mbps 로 제한 (프로토콜에 관계없이)
위와 같이 설정해서
서버에서 외부로만 5Mbps 로 제한되고
외부에서 서버로 5Mbps 제한이 안되는데
혹시 TC 로 트래픽 제한해 보신분 있으신가요?
- [root@ask ~]# tc -s filter show dev eth0
filter parent 1: protocol ip pref 1 u32
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10 (rule hit 874471 success 0)
match d37788f0/ffffffff at 12 (success 874471 )
match d37788f0/ffffffff at 16 (success 0 )
[root@ask ~]# tc -d filter show dev eth0
filter parent 1: protocol ip pref 1 u32
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10
match d37788f0/ffffffff at 12
match d37788f0/ffffffff at 16
[root@ask ~]#
목적지 IP 주소를 맞춰보도록 해서 들어오는 트래픽을 제어하시려는 거라면
목적지 IP 주소를 맞춰보도록 해서 들어오는 트래픽을 제어하시려는 거라면, 보시다시피 적용이 되지 않습니다. tc를 통해 제어하는 트래픽 셰이핑은 내보내는 트래픽에만 적용되기 때문입니다.
정석은 서버 앞에 있는 게이트웨이에서 서버로 향하는 트래픽을 제어하는 것이겠습니다만, 그게 불가능하거나 '어느 정도의' 대역폭 제어만으로도 충분하다면 iptables의 limit match로도 유사한(초당 바이트가 아닌 초당 패킷) 효과를 낼 수 있습니다.
하면 패킷을 초당 100개까지만 받습니다. (limit 모듈 설치 안 돼 있으면 낭패...-_-;; )
초당 바이트를 제어하는 match나 target이 있을 법도 한데 찾아봐도 안 보이네요.
$PWD `date`
netfilter의 IMQ를 사용해보시는것도 좋은 방법입니다.그리
netfilter의 IMQ를 사용해보시는것도 좋은 방법입니다.
그리고 커널 옵션을 들여다보면 ingress qos에 대한 내용도 있습니다. (동작하는지 어떤지는 잘 모르겠습니다마는)
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
check out "netshaper"tc보다 훨씬 사용하기 편합
check out "netshaper"
tc보다 훨씬 사용하기 편합니다.
Fever Pitch!
[code:1][root@ask ~]# ifconfig -
imq 를 설치해서 해결 했습니다. 답글 주신분께 감사 드립니다. :D
댓글 달기