MRTG 의운영및활용 Operation and Use of MRTG 정재훈 (J.H. Jeong ) 이승윤 (S.Y. Lee) 김용진 (Y.J. Kim) 차세대인터넷표준연구팀연구원 차세대인터넷표준연구팀선임연구원 차세대인터넷표준연구팀책임연구원, 팀장 본고는라우터에연결된네트워크링크상의트래픽부하를측정하기위해사용되는 MRTG 의동작원리를기술하고 MRTG 의설치법및구성방법에대해설명한다. 또한 MRTG 의활용방안에대해서도기술한다. I. 서론 MRTG(Multi Router Traffic Grapher) 는네트워크링크상의트래픽로드를측정하는도구로서, SNMP(Simple Network Management Protocol) 을이용하여라우터나스위치등으로부터트래픽정보를수집하여웹에서트래픽상황을실시간적으로보여준다 [1]. MRTG는 ( 그림 1) 과같이라우터의인터페이스를통해오고간트래픽상황을일목요연하게나타내는 HTML 페이지를주기적으로생성해준다. ( 그림 1) MRTG II. SNMP SNMP는 Network device 사이에서 Management information의교환을가능하게하는 Application layer protocol이다 [2]. SNMP는네트워크관리자가 Network performance 를관리할수있게하고 Network problem 을찾아해결할수있게도와준다. 또한 Network growth( 망증설 ) 에대한계획수립에자료를제공한다. SNMP는현재 SNMPv1, SNMPv2, 그리고 SNMPv3까지세가지버전이구 현되어있고, IPv6를지원하기위해 IETF에서표준화되고있는중이다. 1. SNMP-Managed Network 의구성 SNMP-managed network 는 3가지중요요소, 즉 Managed Device, Agent, Network-Management System(NMS) 로구성되어있다 [3]. ( 그림 2) 는 SNMP를이용하여망을관리하는 Internet Management Model을보여주고있다. 53
전자통신동향분석제 17 권제 3 호 2002 년 6 월 NMS User Interface Network Management App. SNMP SNMP SNMP Agent Agent Agent MIB MIB MIB Managed Device Managed Device Managed Device ( 그림 2) SNMP 로 Network Management 를하는 Internet Management Model 가. Managed Device Managed Device는 SNMP Agent를포함하고있는네트워크노드로서 Manged network에상주하는라우터, ATM 스위치, 브리지, 허브같은네트워크장비를비롯하여액세스서버, 컴퓨터호스트그리고프린터같은장비를의미한다. Managed Device는 Management information을수집하여 MIB(Management Information Base) 에저장한다 [4]. 나. Agent Agent는 Managed Device 안에서실행되는 Network-management software module 로서 Management information 을가공한뒤 SNMP를이용하여 NMS에전달한다. 또한 Managed Device에특정이벤트가발생하였을때도 SNMP를이용하여 NMS에게통보한다. 다. NMS NMS는 Managed Device들을모니터링하고제 어하는응용프로그램인 Network Management Application과사용자가가공된 Network Management Information을보고 Managed Device를제어할수있게도와주는 User Interface로구성되어있다. MRTG도 NMS의한종류로써사용자가웹브라우즈를통해측정결과를그래픽하게볼수있게한다. 2. SNMP 의 Protocol ol Operation SNMP는 Request와 Reply로동작하는단순한프로토콜이다. 즉 NMS가 Request를 Managed Device들에게보내면 Managed Device는 NMS에게 Reply를보낸다. SNMPv1에서는 4가지의 Operation(Get, GetNext, Set, Trap) 을이용하여 Network Management Function을수행한다 [5]. Get Operation은 NMS가 Agent로부터하나또는그이상의 Object instance의값을가져오기위해사용된다. GetNext Operation은 NMS가 Agent 가관리하는테이블이나리스트에서그다음의 Object instance의값을가져오기위해사용된다. Set 54
MRTG 의운영및활용 Operation은 NMS가 Agent가관리하는하나또는그이상의 Object instance의값을설정하기위해사용된다. Trap Operation 은 Agent가중요한 Event 를비동기적으로 NMS에게알리기위해사용된다. ( 그림 3) 은 NMS와 Agent간의 SNMP Protocol Operation을통한상호작용을보여주고있다. NMS 가 Get Operation을담은메시지를 Agent 에게보내면, Agent는해당 Operation을수행한뒤수행결과를 Reply 메시지를통해 NMS에게알려준다. Get Request 해야한다. 본고는이세가지라이브러리를설치하는과정을기술한뒤 MRTG를설치하고구성하는방법을기술한다 [9]. 그다음으로 MRTG 운영을위해 Managed Device인 Cisco 라우터에 SNMP Agent를실행시키기위한라우터구성방법에대해서도기술한다. 1. 그래픽라이브러리설치그래픽라이브러리와 MRTG 설치프로그램을 /usr/local/src에설치한다. 이디렉토리가없을때는먼저 mkdir 로디렉토리 /usr/local/src 를생성한다. GetNext Request Set Request Reply Reply Trap 가. zlib 설치 ftp://sunsite.cnlab-switch.ch/mirror/infozip/ zlib/ 에서 zlib.tar.gz를다운로드하고, ( 그림 4) 와같은순서로 zlib를설치한다. NMS Managed Device with Agent ( 그림 3) NMS 와 Agent 간의 SNMP Protocol Operation 을통한상호작용 III. MRTG 설치과정 본고의 MRTG NMS는 Solaris 8 워크스테이션에서운영되고, Agent가운영되는 Managed Device는 Cisco 라우터라고전제하고설치과정을기술한다. Linux나 FreeBSD도설치하는방법은거의동일하다. MRTG의결과는웹을통해볼수있는데, 웹서버인 Apache가설치되어있지않으면 Apache를먼저설치해야한다 [6]. MRTG를설치하기위해서는먼저 GNU C Compiler(gcc)[7] 와 Perl[8] 이설치되어있어야한다. 또한 MRTG가컴파일되기위해서는그래픽에관련된라이브러리인 gd, libpng 그리고 zlib를설치 # cd /usr/local/src # gunzip c zlib.tar.gz tar xvf - # mv zlib-1.1.3 zlib # cd zlib #./configure # make ( 그림 4) zlib 설치과정나. libpng 설치 http://www.libpng.org/pub/png/src/ 에서 libpng- 1.2.1.tar.gz를다운로드하고, ( 그림 5) 와같은순서로 libpng 를설치한다. # cd /usr/local/src # gunzip c libpng-1.2.1.tar.gz tar xvf - # mv libpng-1.2.1 libpng # cd libpng # make f scripts/makefile.std CC=gcc ZLIBLIB =../zlib ZLIBING=../zlib ( 그림 5) libpng 설치과정 55
전자통신동향분석제 17 권제 3 호 2002 년 6 월 다. gd 설치 http://www.boutell.com/gd/http/ 에서 gd-1.8. 3.tar.gz를다운로드하고, ( 그림 6) 과같은순서로 gd를설치한다. # cd /usr/local/src # gunzip c gd-1.8.3.tar.gz tar xvf - # mv gd-1.8.3 gd # cd gd # make INCLUDEDIRS="-I. -I../zlib -I../libpng" LIBDIRS ="-L. -L../zlib -L../libpng" LIBS="-lgd -lpng -lz -lm" ( 그림 6) gd 설치과정 2. MRTG 설치 ( 그림 7) 은 MRTG가설치되는네트워크의구성도를보여주고있다. MRTG는 IP 주소가 129.25.16.65인 Solaris 8 워크스테이션에설치되고, SNMP Agent를운영하는것은 Cisco 7500 라우터이다. # cd /usr/local/src # gunzip c mrtg-2.9.17.tar.gz tar xvf - # cd mrtg-2.9.17 #./configure --prefix=/usr/local/mrtg-2 --with-gd=/usr/local/ src/gd --with-z=/usr/local/src/zlib --with-png=/usr/local/src /libpng # make; make install ( 그림 8) MRTG 설치과정 figuration file) 의 Path에 /usr/local/mrtg-2/bin/ 를포함시킨다. 나. MRTG 구성파일생성 MRTG로 Network Device를모니터링하기위해서는 MRTG 프로세스 (mrtg) 가이용하는구성파일인 mrtg.cfg를만들어야하는데, 디렉토리 /usr/ local/mrtg-2/bin/ 에위치하는 cfgmaker라는프로그램으로 mrtg.cfg를쉽게만들수있다. ( 그림 9) 와같은방법으로 MRTG 구성파일을만든다. cfgmaker의다양한옵션정보를통해 MRTG를보다세밀하게동작시킬수있다 [10],[11]. MRTG NMS Solaris 8 Managed Device with Agent Cisco 7500 6Bone # mkdir /home/mrtg # cd /usr/local/src/mrtg-2.9.17 #./cfgmaker --global 'WorkDir: /home/mrtg' --global 'Options [_]: bits,growright' --ifref=descry --output /home/mrtg/cfg/ mrtg.cfg 6bone @ipv6-5.etri.re.kr 129.25.16.65 129.25.16.147 129.25.25.86 Community Name : 6bone ( 그림 7) MRTG 설치네트워크구성도가. MRTG Compilation http://people.ee.ethz.ch/~oetiker/webtools/ mrtg/pub/ 에서 mrtg-2.9.17.tar.gz를다운로드하고, ( 그림 8) 과같은순서로 MRTG를설치한다. 디렉토리 /usr/local/mrtg-2/ 에 MRTG가설치된다. MRTG 프로세스실행파일 (mrtg) 은 /usr/local/ mrtg-2/bin/ 에위치하므로 Shell 구성파일 (con- ( 그림 9) MRTG 구성파일생성과정옵션 --global WorkDir: /home/mrtg 는 MRTG 의작업디렉토리가 /home/mrtg이라고나타내는데, 작업디렉토리는 MRTG 로그파일과 MRTG 웹페이지가만들어지는곳이다. 옵션 --global Options[_]: bits,growright 는 MRTG 그래프에서트래픽량은 bits per second로표시하고가로축의시간은오른쪽으로증가하게한다는의미이다. 옵션 --ifref=descr은 MRTG 그래프를생성할때이더넷인터페이스같은물리적인인터페이스뿐 56
MRTG 의운영및활용 만아니라 Tunnel Interface 같은논리적인인터페이스도포함할것을지시한다. 대신에 --ifref=ip를사용하면물리적인터페이스에대해서만 MRTG 그래프를생성한다. 6Bone에사용되는라우터인경우에는 Tunnel Interface에대해서도트래픽관찰을할필요가있으므로옵션 --ifref=descr를사용하기를권장한다 [13]. 옵션 --output /home/mrtg/cfg/mrtg.cfg은 MRTG 구성파일 mrtg.cfg를생성해서디렉토리 /home/mrtg/cfg/ 에복사하게한다는의미이다. 인자 6bone@ipv6-5.etri.re.kr 은두가지의의미를포함하고있다. 6bone 은 Community 이름으로써 MRTG가관장하는영역을나타낸다. 즉 MRTG 측정에관여하는 MRTG NMS의응용프로그램 (Network Management Application, User Interface) 과 Managed Device에서실행되는 Agent가하나의 Community 를만든다. 본고에서는 6bone 이라는 Community 를형성해서 MRTG를운영한다. 라우터에서도 6bone 이라는 Community 에있는 MRTG NMS가 SNMP Request를할때만 SNMP Reply를보낸다고설정해야한다. ipv6-5.etri.re.kr 는 MRTG가관장하는 Community에속해있으면서 Agent를실행하는라우터의도메인이름이다. cfgmaker를실행하여만들어진 mrtg.cfg 파일 <VirtualHost 129.25.16.65> ServerAdmin paul@etri.re.kr DocumentRoot /www/htdocs/6bone-kr ServerName www.6bone.ne.kr ErrorLog logs/www.6bone.ne.kr-error_log CustomLog logs/www.6bone.ne.kr-access_log common <Directory "/www/htdocs/6bone-kr/mrtg"> AllowOverride all Options all Order allow,deny Allow from all </Directory> </VirtualHost> ( 그림 10) 웹서버의구성파일 httpd.conf 설정 을포함하는디렉토리 /home/mrtg/cfg는웹서버에의해보여질수있도록해야하는데, Apache의 httpd.conf에서 /home/mrtg/cfg 디렉토리가웹서버에의해탐색될수있게설정해야한다 [12]. ( 그림 10) 은본고에서사용하는웹서버의 httpd.conf 파일에서디렉토리 /home/mrtg/cfg가웹서버에의해보이게하는부분이다. /www/htdocs/6bonekr/mrtg는 /home/mrtg를가리키고있는 Symbolic link이다. 다. MRTG 인덱스파일생성 MRTG는각인터페이스별로트래픽출입량을일목요연하게나타내는 MRTG 인덱스파일을생성하는유틸리티인 indexmaker를제공하고있다. indexmaker는 ( 그림 11) 과같은인덱스파일을생성하고사용자가특정그래프를지정하면보다상세한통계정보를담은 MRTG 그래프페이지를볼수있게한다. 인덱스파일을생성하는방법은다음과같다. MRTG 인덱스파일을 mrtg-index.html이라고하면 ( 그림 12) 와같이 indexmaker 가 MRTG 초기화파일인 mrtg.cfg 를이용하여인덱스파일을만들수있다. 이와같이만들어진인덱스파일을 MRTG 가표시될홈페이지의적당한디렉토리 ( 예 :/www/ htdocs/6bone-kr/mrtg) 로이동시키고웹브라우저를통해이인덱스파일을접근할수있게하면된다. 라. 라우터에서의 SNMP 설정 ( 그림 7) 의 Cisco 라우터가 SNMP Agent 로동작하기위해서는 ( 그림 13) 과같이 SNMP 기능이작동하도록 SNMP 구성정보를라우터구성정보 (running-config) 에추가해야한다. < 표 1> 은 ( 그림 13) 의라우터에서의 SNMP 설정을위한명령어에대해설명한다. ( 그림 13) 과같이구성하면, MRTG NMS(129.25.16.65) 가주기적으로 Cisco 라우터 (129.25.16.147) 에게 Get Request를하고 Cisco 라우터는 MRTG NMS에게 57
전자통신동향분석제 17 권제 3 호 2002 년 6 월 ( 그림 11) MRTG 인덱스페이지 # /usr/local/mrtg-2/bin/indexmaker /home/mrtg/cfg/mrtg.cfg > mrtg-index.html # mv mrtg-index.html /www/htdocs/6bone-kr/mrtg ( 그림 12) MRTG 인덱스파일생성과정 < 표 1> SNMP 설정명령 SNMP 설정명령 snmp-server contact paul@etri.re.kr snmp-server location ETRI-PEC-L15 access-list 5 permit 129.25.16.65 snmp-server community 6bone RO 5 snmp-server host 129.25.16.65 passwd-6bone interface Loopback0 ip address 179.16. 254.3 255.255.0.0 exit snmp-server trapsource Loopback0 snmp-server enable traps 설명 Managed node 인 Cisco 라우터를관리하는사람은 paul@etri.re.kr 이다. Cisco 라우터의물리적인위치는 ETRI-PEC-L15 이다. IP 주소가 129.25.16.65 인호스트만이이라우터에접근할수있도록하기위해 5 라는 Access-list 항목을만든다. Community name 이 6bone 이고, Access-list 항목 5 에속하는호스트만이 SNMP Request 를할수있게한다. SNMP notification 을받을호스트가 129.25.16.65 이고호스트가사용할 Passwd 는 passwd-6bone 이다. Ethernet shutdown 이발생해도 SNMP Management Flow 를중단시키지않게하기위해 SNMP Trap 의소스를 Loopback interface 로설정해야한다. 그러기위해서는현재라우터구성에 Loopback interface 가설정되어있지않으면 ( 그림 12) 와같이 Private address 179.16.254.3 을 IP 주소로갖는 Loopback0 를만들어야한다. Loopback0 를만들고나서, Trap source 를 Loopback0 로설정한다. SNMP Trap 을 Enable 시킨다. 6bone-kr# config terminal 6bone-kr(config)# snmp-server contact paul@etri.re.kr 6bone-kr(config)# snmp-server location ETRI-PEC-L15 6bone-kr(config)# access-list 5 permit 129.25.16.65 6bone-kr(config)# snmp-server community 6bone RO 5 6bone-kr(config)# snmp-server host 129.25.16.65 passwd- 6bone 6bone-kr(config-if)# interface Loopback0 6bone-kr(config-if)# ip address 179.16.254.3 255.255.0.0 6bone-kr(config-if)# exit 6bone-kr(config)# snmp-server trap-source Loopback0 6bone-kr(config)# snmp-server enable traps 6bone-kr(config)# exit 6bone-kr# write ( 그림 13) 라우터에서의 SNMP 설정 ( 그림 14) 라우터에서의 SNMP 통계정보 (statistics information) 58
MRTG 의운영및활용 Reply를전송한다. ( 그림 14) 는 Cisco 라우터의 SNMP 통계정보를보여주고있는데, SNMP 설정정보와현재까지의 SNMP 입출력패킷에대한정보를볼수있다. IV. MRTG 운영 1. MRTG 의실행방법 MRTG를실행시키는방법은두가지가있다. 하나는 cron을이용하여주기적으로 MRTG를실행시키는것이고, 다른하나는 MRTG를 Daemon 모드에서실행시켜서주기적으로 Request를하게하는것이다. 먼저 ( 그림 15) 의명령을두번반복해서실행시킨다. 이명령은 Cisco 라우터를 Query하여 MRTG 트래픽그래프와웹페이지를생성한다. 처음두번이명령을실행하면로그파일이없다는경고메시지가나타나지만, 문제가있는것이아니므로무시해도된다. 을실행시키어 cron table 을다시읽게하는과정을나타내고있다. 이렇게하면 cron 데몬은매 5분마다 MRTG를실행시키고, MRTG 실행일시를 MRTG 로그파일 (/var/log/mrtg.log) 에저장한다. 참고로 MRTG가실행되는 OS가 FreeBSD일경우에는 cron table 은 /etc/crontab이다. 나. Daemon 모드에서의 MRTG 실행 MRTG를 Daemon(mrtg) 으로실행시킬수있는데, ( 그림 17) 처럼 MRTG 구성파일인 /home/mrtg/ cfg/mrtg.cfg에서 MRTG가 Daemon 으로실행되게하고, 5분단위로 MRTG 갱신작업을수행하게해야한다. mrtg 가시스템이부팅될때시작될수있게하기위해서는 ( 그림 18) 의 Script(S65mrtg) 를만들어서시스템부팅시에 Daemon 들을실행시키는디렉토리인 /etc/rc2.d 에위치시켜야한다. 참고로 FreeBSD 경우에는 ( 그림 18) 의 Script 내용중 2번행의실행명령을 /etc/rc 파일의가장마지막부분에추가하면된다. # /usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/ ( 그림 15) MRTG 실행가. Cron 을이용한 MRTG의주기적인실행 MRTG는통상 5분단위로실행시키므로 cron을통하여실행시킬때도 5분단위로 ( 그림 15) 의명령을실행한다. ( 그림 16) 은 root의 cron table(/var/ spool/cron/crontabs/root) 을 vi 에디터로수정한뒤 kill 명령어로 cron 데몬을중단시키고새로 cron # vi /var/spool/cron/crontabs/root 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg- 2/bin/mrtg /home/mrtg/cfg/mrtg.cfg logging /var/log/mrtg.log # ps ef grep cron root 29269 1 0 16:14:42? 0:00 cron # kill 29269 # cron ( 그림 16) Cron을이용한 MRTG의주기적인실행 ### Global Defaults # to get bits instead of bytes and graphs growing to the right # Options[_]: growright,bits WorkDir: /home/mrtg Options[_]: bits,growright # mrtg runs as daemon # RunAsDaemon: Yes Interval: 5 ( 그림 17) MRTG 를 Daemon 으로실행시키기위해수정된 MRTG 초기화파일 (mrtg.cfg) 1 #!/bin/sh 2 /usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg -- logging/var/log/mrtg.log ( 그림 18) MRTG 를 Daemon 으로실행시킬 Script (S65mrtg) 59
전자통신동향분석제 17 권제 3 호 2002 년 6 월 참고로 cron으로주기적으로 MRTG를실행시키면매실행시 MRTG 초기화파일인 mrtg.cfg를계속읽고초기화해야하는단점이있으므로, MRTG 를 Daemon으로실행시키는것이 cron으로주기적으로 MRTG를실행시키는것보다시스템운영측면에서더효율적이다. 따라서 Daemon 모드에서 MRTG를실행시킬것을권장한다. 2. MRTG 의운영지금까지 MRTG의설치과정에대해설명하였다. 지금부터는 MRTG를통해 6Bone-KR의트래픽측정현황을설명한다. ( 그림 19) 는 6Bone-KR의 Topology를보여주고있다 [13]. ETRI의 6Bone 라우터 (Cisco 7500) 는다른기관들과 Configured Tunneling 으로 6Bone을구성 하고있다. MRTG를이용하면각 Tunnel에대한트래픽의출입량을쉽게파악할수있다. ( 그림 20) 은 ETRI의 6Bone 라우터에대한 MRTG 인덱스페이지를보여주고있다. ( 그림 21) 은 6Bone을통해 ETRI의 6Bone 라우터와 BGP 피어링을맺고있는일본 NTT의 6Bone 라우터사이를오고간트래픽통계를보여주고있다. MRTG의한계점은특정인터페이스 ( 물리적인터페이스또는논리적인터페이스 ) 를통해오고간트래픽의총합만볼수있다. 각링크에대해보다정밀하게트래픽분석을하기위해서는 CAIDA의 Cflowd 같은수동적측정도구를이용해야한다 [14]-[16]. Cflowd의측정결과를 MRTG 처럼 Visual하게보기위해서는 CAIDA의 FlowScan을이용하면된다 [17]. ( 그림 22) 는 Cflowd로측정된결과를 FlowScan으로가공하여얻어진그래프이다. ( 그림 19) 6Bone-KR 의 Topology 현황 60
MRTG 의운영및활용 V. 결론 ( 그림 20) ETRI 6Bone 라우터의 MRTG 인덱스페이지 MRTG는특정라우터에연결된링크를통해오고간트래픽량을기간별로일목요연하게나타내기때문에링크별트래픽현황파악뿐만아니라네트워크를구성하는링크의증설여부판단에대한정보를제공할수있다. 또한단절된링크의위치파악을쉽게할수있도록도와줄수도있다. 이와같이 MRTG는기본적인수동적트래픽측정도구로써네트워크관리에중요한도구로사용될수있다. 참고문헌 ( 그림 21) 6Bone-KR 과일본 NTT 사이의출입트래픽통계 ( 그림 22) FlowScan 을통해가공된트래픽통계그래프 [1] MRTG(Multi Router Traffic Grapher), http://people.ee.ethz.ch/~oetiker/webtools/mrtg/ [2] J. Case, M. Fedor, M. Schoffstall, and J. Davin, A Simple Network Management Protocol(SNMP), RFC 1098, May 1990. [3] Cisco Technology - Simple Network Management Protocol, http://www.cisco.com/warp/public/535/3. html [4] K. McCloghrie and M. Rose, Management Information Base for Network Management of TCP/IPbased Internets, RFC 1156, May 1990. [5] Cisco Technology Enabling Management Protocols: NTP, SNMP, and Syslog, http://www.cisco. com/unvercd/cc/td/doc/cisintwk/intsolns/as5xipmo /sysmgt.htm [6] Apache Website, http://httpd.apache.org/ [7] GNU C Compiler, http://gcc.gnu.org/ [8] Perl, http://www.perl.com/ [9] MRTG Installation, http://people.ee.ethz.ch/~oetiker /webtools/mrtg/unix-guide.html [10] cfgmaker Manpage, http://people.ee.ethz.ch/~ oetiker/webtools/mrtg/cfgmaker.html [11] cfgmaker Configuration Options, http://people.ee. ethz.ch/~oetiker/webtools/mrtg/cfgmaker.html [12] Apache Directory directive, http://httpd.apache. org/docs-2.0/mod/core.html#directory [13] 6Bone-KR Website, http://www.6bone.ne.kr [14] CAIDA Cflowd, http://www.caida.org/tools/measurement/cflowd/ [15] 정재훈, 이승윤, 김용진, 인터넷트래픽수동적측정 61
전자통신동향분석제 17 권제 3 호 2002 년 6 월 도구 Cflowd의설치및설정방법 (for Linux 2.4.5), IPv6 포럼코리아기술문서 TM2001-006, 2001. [16] 정재훈, 이승윤, 김용진, 인터넷트래픽측정방법및시스템, 전자통신동향분석, 통권 71호, 2001. 10., pp. 33 45. [17] CAIDA FlowScan, http://www.caida.org/tools/utilities/flowscan/ 62