오늘은 리눅스 서버에서 기본적으로 네트워크 대역폭을 제어할 수 있는 방법에 대해 알아보도록 하겠습니다.
서버호스팅을 이용하다 보면 서버 사양만 고려하고 대역폭과 트래픽에 대해 쉽게 간과하여 자칫 트래픽 과금 폭탄을 맞을 수 있습니다.
해당 내용은 이전에 작성한 포스팅을 참고하시기 바랍니다.
[트래픽 계산 및 과금 방법 포스팅 바로가기]
호스트메카를 포함한 여러 호스팅 업체에서는 특별한 케이스 외 일반적으로 대역폭을 별도로 제한하지 않습니다.
이유는 간단하죠.
요금체계가 트래픽 과금 방식이기 때문입니다.
일정량의 기본 트래픽을 제공하고 초과되는 트래픽에 대해 별도 과금하여 회사 매출로 이어지게되는…
그리고 업체에서 직접 대역폭을 제한할 경우, 고객이 원하는 인터넷 속도를 맞출 수가 없게되죠. 그건 바로 고객 불만 사항으로 접수될테구요.
어찌됐든 업체에서 제공해 주지 않는다고 해서 그냥 쓰시는 분들도 있겠지만, 추가로 돈내기 싫으신 분들은 직접 제어하는 게 좋겠죠?
그래서 대표적으로 많이 쓰는 두 가지 방법을 소개해 드릴까 합니다. 바로 ethtool 과 tc !!
그럼 하나하나 살펴보도록 하죠.
[ethtool]
– ethtool은 리눅스 내 네트워크 상태 정보를 알아보거나 설정하는데 사용되는 명령어 입니다.
– 기본 사용법 : ethtool 장치명
[설명]Supported link modes지원 가능한 링크 모드Supported auto-negotiation자동협상인식기능의 지원여부Speed현재 속도 (대역폭)Duplex전송 모드Auto-negotiation자동협상인식기능 동작 여부
위 내용을 바탕으로 살펴보면,
테스트 서버의 지원 가능한 랜카드의 대역폭은 10/100/1000 이며, auto-negotiation 기능을 사용할 수 있습니다.
또 현재 연결된 네트워크 속도(대역폭)는 100Mb/s이며, 전송 모드는 Full 상태임을 알 수 있습니다.
그럼 ethtool을 이용하여 설정을 변경해 볼까요?
설정은 네트워크 속도 : 10Mb/s, 전송 모드 Full, auto-negotiation : off 로 하겠습니다.
– 설정 사용법 : ethtool -s 장치명 speed (10/100/1000) duplex (full/half) autoneg (on/off)
ethtool 명령어를 이용해 쉽게 10Mb/s 로 대역폭이 제한되었음을 확인할 수 있습니다.
편리하긴 하지만 한가지 문제가 있겠죠? 바로 세밀한 대역폭 조절이 어렵다는 것!!
ethtool은 Supported link modes에 지원되는 값으로만 설정이 가능하기에 30/50/80 등 사용자가 지정한 값으로는 조절이 불가합니다.
그럴 때 이용할 수 있는 명령어가 바로 tc 입니다.
tc를 이용하면 사용자가 직접 장치별 대역폭을 지정해서 사용할 수 있습니다.
또 해당 명령어를 사용하기 쉽게 스크립트 형태로 제공하고 있으니 참고하시기 바랍니다.
[tc 스크립트 바로가기]
[tc]
– 리눅스 기본 패키지인 iproute 안에 내장된 명령어로 Traffic Control의 약자입니다.
네트워크 스위치의 도움 없이 서버 자체에서 이더넷 속도를 제한할 수 있으며, QOS(Quality Of Service)와 비슷한 기능을 제공합니다.
* 링크 내 해당 스크립트에서 수정할 부분은 아래와 같습니다.
22라인 IF=eth0 # Interface (장치명)
25라인 DNLD=1mbit # DOWNLOAD Limit (다운로드 제한)
28라인 UPLD=1mbit # UPLOAD Limit (업로드 제한)
31라인 IP=216.3.128.12 # Host IP (서버 IP)
자 그럼 저는 원하는 값으로 수정하였으니, 스크립트를 실행하고 결과를 확인해 보도록 하겠습니다.
외부에서 파일을 다운로드 할 때의 트래픽 변화입니다. 제가 제한을 어떻게 걸었는지 아시겠죠?
35 > 25 > 15 mb로 설저을 변경하면서 테스트를 진행하였습니다.
잘 적용이 되는 듯 합니다만, 한가지 특이한 점은 서버 기준 Out트래픽(UPLD)만 제한이 되고, In트래픽은 제한되지 않습니다.
원인은 tc를 통해 제어하는 트래픽 세이핑 방법은 Out트래픽에만 적용되기 때문인데요. 추후 In트래픽 제한 방법에 대해 별도 소개하도록 하겠습니다.
여기까지가 가장 기본적인 tc 사용법이며 활용 방법은 무궁무진합니다.
tc를 잘 활용하면, 특정 IP 서버 혹은 특정 국가별 대역폭 조절도 가능하죠. 자세한 건 검색을 통해서 확인하시기 바랍니다.
댓글 없음:
댓글 쓰기