사이트 내 전체검색
[RHEL] Ethernet Bandwidth Limit 걸기 (속도 제한/QOS) 리눅스서버관리/서버관리
로빈아빠
https://cmd.kr/server/604 URL이 복사되었습니다.

본문

리눅스의 사실상 기본 패키지인 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

댓글목록

등록된 댓글이 없습니다.

1,139 (1/23P)

Search

Copyright © Cmd 명령어 3.148.107.255