[RHEL] Ethernet Bandwidth Limit 걸기 (속도 제한/QOS) 리눅스서버관리/서버관리
로빈아빠
본문
리눅스의 사실상 기본 패키지인 iproute안에는 tc(Traffic Control)이라는 명령어가 포함되어 있습니다.
이 명령어를 사용하여 네트워크 스위치의 도움 없이도 자체적으로 자신의 이더넷 속도를 제한 할 수 있습니다.
이는 보통 네트워크에서 말하는 QOS(Quality Of Service)와 비슷한 기능을 제공합니다.
하지만 저비용으로 고효율을 낼 수 있다는 점에서 매우 괜찮은 방법인듯 합니다.
1) 요구 사항
- iproute RPM 패키지가 설치되어있어야 함
- 리눅스 커널의 iproute 파트의 Traffic Control 옵션(Netlink포함)이 활성화 되어있어야 함.
- 리눅스 커널 2.4버젼 이후의 경우 기본적으로 대부분의 Traffic Control 옵션이 활성화 되어있음.
2) 시스템 명령어 추가
- shaping이라는 명령을 추가합니다.
$ vi /etc/init.d/shaping
- 다음의 소스코드를 입력합니다.
#!/bin/bash
# tc uses the following units when passed as a parameter.
# kbps: Kilobytes per second
# mbps: Megabytes per second
# kbit: Kilobits per second
# mbit: Megabits per second
# bps: Bytes per second
# Amounts of data can be specified in:
# kb or k: Kilobytes
# mb or m: Megabytes
# mbit: Megabits
# kbit: Kilobits
# To get the byte figure from bits, divide the number by 8 bit
#
# tc명령어의 위치를 입력합니다.
TC=/sbin/tc
# 대역폭을 제한하기 위한 이더넷 인터페이스를 지정합니다.
IF=eth0
# 다운로드 속도 제한
DNLD=15mbit
# 업로드 속도 제한
UPLD=15mbit
# 속도 제한을 적용할 호스트의 IP 주소
IP=123.123.123.123
# Filter options for limiting the intended interface.
U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32"
start() {
# We'll use Hierarchical Token Bucket (HTB) to shape bandwidth.
# For detailed configuration options, please consult Linux man
# page.
$TC qdisc add dev $IF root handle 1: htb default 30
$TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
$TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
$U32 match ip dst $IP/32 flowid 1:1
$U32 match ip src $IP/32 flowid 1:2
# The first line creates the root qdisc, and the next two lines
관련링크
댓글목록
등록된 댓글이 없습니다.