개요
자체 대역폭 관리 프로그램 FireQoS에 대해 간략하게 알아보고 설치, 설정 방법을 살펴본다.
왜, 언제 FireQoS가 필요한가?
간혹 학교나 연구소 같은 비영리 기관의 경우 도입 초기에 충분한 대역폭을 고려하여 통신 회선 계약을 했음에도 불구 내부적으로 대역폭의 균형 조정 문제로 인해 통신 속도가 매우 느린 경우가 있다. 심지어는 통신 회선 계약 당시의 예상 최대 사용량을 훌쩍 넘겨 전산실에서 QoS(대역폭 조절)를 걸어두었으나 전송 과정에서 전송 대역폭을 넘겼을 경우 연결을 유지하는 옵션 값을 넣지 않아 해당 서버, 클라이언트의 네트워크 세션 연결이 끊어지는 경우가 있다. 이는 기관 네트워크 엔지니어의 오덕력(?)이 부조칸 탓이지만, 공생을 위해 까내리지 말고 잠재 실력의 성장을 빌도록 하자(…) 이를 해결하기 위한 대안책으로 업링크보다 아주 약간 낮게 대역폭을 자체 설정하여 네트워크 연결성을 유지할 수 있는 방법이 있다. 그 역할을 해주는 자체 QoS 관리자가 FireQoS이다.
manpages.ubuntu.com 의 FireQoS 설명을 그대로 빌리자면 “fireqos - an easy to use but powerful traffic shaping tool”로, 말 그대로 사용하기 쉽고 강력한 대역폭 제어(x → 제한) 도구이다. 대역폭이 늘어나면 대패로 나무판 표면을 밀듯이 그야말로 “각을 뜨는(?)” 역할을 한다. 컴퓨터 공학 전공자라면 네트워크 이론 시간에 TCP/IP의 전송 윈도우에 대해 배웠을건데, FireQoS는 TCP/IP 전송 프로토콜의 동작 방식에 따라 일정 길이의 패킷 윈도우 사이즈 한계를 정해놓고, 전송 성공이 이루어질 때마다 한계 이상으로 늘어나는 패킷 윈도우를 잘라내도록 하여 전송 속도가 정해둔 설정값 이상 늘어나지 않게 한다.
설치
당연히 우분투니까 되게 쉽다.
$ sudo apt-get install firehol fireqos;
fireqos가 우리가 사용할 패키지인데 firehol이 같이 딸려온다. 왜 두 개를 설치해야 하는지는 모름.
설정
아래 예시는 1Gbps 회선 환경에서 업링크 라우터에서 100Mbps로 대역폭 QoS를 걸어두었을 경우 그나마 안전한(?) 설정을 보여준다. 예시 설정 파일의 실제 위치는 /etc/firehol/fireqos.conf 이다.
# FireQOS configuration file
#
# See fireqos.conf(5) manual page and FireQOS Manual for details.
#
# This configuration file is for illustration purpose only and
# will shape no traffic.
#
#
DEVICE=eno1
INPUT_SPEED=92160kbit
OUTPUT_SPEED=92160kbit
interface $DEVICE usl-in input rate $INPUT_SPEED
interface $DEVICE usl-out output rate $OUTPUT_SPEED
DEVICE 변수에 들어가는 이름은 실제 업링크(통신사) IP를 할당하는 NIC의 이름이다. 별 다른 설정을 하지 않고 메인보드의 NIC를 사용한다면 대부분 eno1이나, 제조사의 보드 설계 또는 사용하는 머신의 형태 등에 따라 Primary NIC 이름이 달라질 수 있음을 참고하자.
INPUT_SPEED와 OUTPUT_SPEED의 경우 업링크의 대역폭을 100Mbps로 QoS 설정했을 때, 연결이 끊어지지 않고 그나마 최고의 속도를 낼 수 있는 “실험으로 찾아낸” 값이다. 물론 절대적인 최적의 값은 아니므로, 비슷한 식의 환경일 경우 값을 늘려보거나 줄여보거나 하는 식으로 적정 상한 값을 찾아 설정하면 별로 만족스럽진 않더라도 원하는 수준의 네트워크 연결 안정성은 충분히 확보할 수 있다.
동작
데몬 기반으로 동작한다. 아래 명령 실행시 프롬프트 모양에 주의한다. 프롬프트가 $으로 끝나면 일반 사용자 계정이지만 #으로 끝나면 루트 계정이다. 루트 계정 어떻게 들어가나요? 왜 루트 계정으로 실행해야 하나요? 는 이 문서의 주제 범위를 벗어나므로 자유게시판에 질문하도록 한다. 최신 우분투 버전에서는 SystemD로 대동단결. #ypa
# systemctl enable fireqos;
# systemctl start fireqos;
질문
자유 게시판에 질문하면 아마 숨어있는 고수가 잉어처럼 팔딱팔딱 뛰어주시겠지 (…) #작성자는아무것도모름 #잉어빵먹고싶다