OpenFlow 기반 SDN 시험인프라확산및개선 sflow Traffic Monitoring System 매뉴얼 Document No. 10 Version 1.0 Date Author(s) Jeju Univ. Team

Similar documents
[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

Microsoft Word - src.doc

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

1217 WebTrafMon II

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft Word doc

슬라이드 1

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Remote UI Guide

제20회_해킹방지워크샵_(이재석)

Microsoft PowerPoint - tem_5

Assign an IP Address and Access the Video Stream - Installation Guide

Windows 8에서 BioStar 1 설치하기

0. 들어가기 전

슬라이드 제목 없음

TCP.IP.ppt

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Network seminar.key

bn2019_2

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc


[Brochure] KOR_TunA

PowerPoint Template

2009년 상반기 사업계획

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

Install stm32cubemx and st-link utility

Microsoft Word - NAT_1_.doc

Secure Programming Lecture1 : Introduction

UDP Flooding Attack 공격과 방어

Cloud Friendly System Architecture

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

ARMBOOT 1

시스템, 네트워크모니터링을통한보안강화 네트워크의미래를제시하는세미나 세미나 NetFocus 2003 : IT 관리자를위한네트워크보안방법론 피지피넷 /

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

일반적인 네트워크의 구성은 다음과 같다

. PC PC 3 [ ] [ ], [ ] [ ] [ ] 3 [ ] [ ], 4 [ ] [ ], 4 [Internet Protocol Version 4 (TCP/IPv4)] 5 [ ] 6 [ IP (O)], [ DNS (B)] 7 [ ] 한국어 -

Microsoft PowerPoint - thesis_della_1220_final

untitled

KISA-GD

(SW3704) Gingerbread Source Build & Working Guide

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

PowerPoint 프레젠테이션

Page 1 / 솔루션소개 Magento Magento 는강력한기능을제공하는오픈소스쇼핑몰제작관리도구입니다. 커스터마이징가 능한글로벌쇼핑몰구축시에사용을권장하며, 자체마켓플레이스를보유하고있을정도 로다양한기능을유 / 무료로추가할수있습니다. 2. 설치버전 하기명시된

슬라이드 1

MATLAB and Numerical Analysis

Microsoft PowerPoint - 06-IPAddress [호환 모드]

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

SMB_ICMP_UDP(huichang).PDF

슬라이드 1

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

PowerPoint Template

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Microsoft Word - release note-VRRP_Korean.doc

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

Microsoft PowerPoint - chap01-C언어개요.pptx

untitled

[로플랫]표준상품소개서_(1.042)

게시판 스팸 실시간 차단 시스템

시스템을 제공한다는 특징이 있다. ONOS[4]는 성능, 확장성, 가용성을 중시하는 분산형 SDN 컨트롤러이 며 편의성 있는 Web GUI 와 SDN 컴포넌트 단위의 계층 구조를 통해 어플리케이션을 개발하고 컨트롤 러에 탑재할 수 있는 기능들을 제공한다. 하지만 ONO

ISP and CodeVisionAVR C Compiler.hwp

Chapter11OSPF

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

윈도우시스템프로그래밍

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

2. 인터네트워킹 서로떨어져있는각각의수많은네트워크들을연결하여하나의네트워크처럼연결하여사용할수있도록해주는것 3. 인터네트워킹에필요한장비 1 리피터 (Repeater) - 데이터가전송되는동안케이블에서신호의손실인감쇄 (Attenuation) 현상이발생하는데, 리피터는감쇄되는신

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

vm-웨어-앞부속

슬라이드 1

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1)

Mango220 Android How to compile and Transfer image to Target

VZ94-한글매뉴얼

PowerPoint 프레젠테이션

Web Scraper in 30 Minutes 강철

hd1300_k_v1r2_Final_.PDF

Intra_DW_Ch4.PDF

Windows Server 2012

1아이리포 기술사회 모의고사 참조답안

GRE(Generic Routing Encapsulation) GRE는 Cisco에서개발한터널링프로토콜으로써특정네트워크망에서새로운 IP 헤더를인캡슐레이션하여패켓을전송하는 VPN 기능을제공한다. GRE 터널링을이용하여패켓을전송하면, 데이터를암호화하지않기때문에보안적으로는취

10X56_NWG_KOR.indd

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

The Self-Managing Database : Automatic Health Monitoring and Alerting

DBMS & SQL Server Installation Database Laboratory

Microsoft PowerPoint - L4-7Switch기본교육자료.ppt

Microsoft PowerPoint _TCP_IP

歯홍원기.PDF

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Subnet Address Internet Network G Network Network class B networ

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

OSI 참조 모델과 TCP/IP

Transcription:

OpenFlow 기반 SDN 시험인프라확산및개선 sflow Traffic Monitoring System 매뉴얼 OF@TEIN Document No. 10 Version 1.0 Date 2013-12-24 Author(s) Jeju Univ. OF@TEIN Team

OpenFlow 기반 SDN 시험인프라확산및개선 문서의연혁버전 날짜 작성자 비고 0.1 2013-10-16 송왕철, 장동석 제주대학교 0.3 2013-11-01 송왕철, 장동석 제주대학교 0.5 2013-11-20 송왕철, 장동석 제주대학교 0.9 2013-12-17 송왕철, 장동석 제주대학교 1.0 2013-12-24 송왕철, 장동석 제주대학교 본문서는한국정보화진흥원 (NIA) 의미래네트워크연구시험망 (KOREN) 사업 지원과제의연구결과로수행되었음 (13-951-00-001). This research was one of KOREN projects supported by National Information Society Agency (13-951-00-001).

Table of Contents A. Introduction 4 B. OF@TEIN sflow 시스템의구조 7 C. sflow 시스템의구조 11 C.1 Analytic engine sflow RT 11 C.2 REST API 12 C.3 Metric 13 D. Flow Analytics와 sflow2graphite 16 D.1 Flows 구성 16 D.2 Flows 정의 16 D.3 Flows Key 값들 17 D.4 Graphite: 실시간그래프도구 19 D.5 Deployment Diagram 20 E. 시각화도구 Graphite 21 E.1 sflow to Graphite 변환 21 E.2 Graphite Web User Interface 21 E.3 Graphite Dashboard 사용자인터페이스 23 F. 시스템구성 25 F.1 OF@TEIN 네트워크구성 25 G. 구축 - Openflow 기반 sflow Monitoring Configuration 28 G.1. Ubuntu 12.XX 기반의 sflow-rt Setup 28 G.2 Ubuntu 12.XX 기반의 Graphite Setup 29 G.3 sflow Agent 구성 32 G.3.1. open-vswitch 구성및설정 32 G.3.2. HP Procurve 3500 Series Configuration 33 G.3.2.1. 목적지 collector 구성하기 33 G.3.2.2. 목적지정보확인하기 34 G.3.2.3. 샘플링및폴링활성화하기 35 G.3.2.4. 샘플링및폴링통계치확인하기 35 G.4 Graphite에서의 WEB UI 구성및조작 37 G.5. Graphite에서의 Metric 정의및 XML 모델정의및표현 40 H. 결론 46 References 47 1

표목차 [ 표 1] sflow-rt로부터 JSON 인코딩된 metric 값이표현된 URL 4 [ 표 2] Graphite에대한세가지소프트웨어컴포턴트 5 [ 표 3] REST 데이터요소들 12 [ 표 4] REST 인터페이스 13 [ 표 5] Metric의종류 14 [ 표 6] Flow Key List 17 [ 표 7] sflow 모니터링시스템구성순서 28 [ 표 8] sflow-rt의설치 28 [ 표 9] 우분투 12.xx 환경에서의 Graphite 설치 29 [ 표 10] sflow 폴링의개념 32 [ 표 11] OVS 브릿지구성 32 [ 표 12] 생성된브릿지에 sflow 설정 33 [ 표 13] Linc 스피드에따른샘플링비율 33 [ 표 14] HP Procurve 3500 destination 구성 34 [ 표 15] HP Procurve 3500 destination 예시 34 [ 표 16] 설정된목적지정보확인 34 [ 표 17] 설정된목적지정보확인을위한예시 34 [ 표 18] 스위치포트에대한샘플링활성화 35 [ 표 19] 스위치샘플링개수설정 35 [ 표 20] 스위치포트폴링활성화 35 [ 표 21] 스위치포트폴링간격설정 35 [ 표 22] 설정된샘플링및폴링에대한통계치확인 36 [ 표 23] Graphite WEB UI 접근 37 [ 표 24] Graphite의유효시간단위표현 39 [ 표 25] XML을이용한 Flow의정의 40 [ 표 26] Graphite에서메트릭정의 40 [ 표 27] Graphite 시간범위에대한 Plot 표시 41 [ 표 28] test3.xml의생성 41 [ 표 29] test3.xml 42 [ 표 30] test3.xml를이용한 flow 정의 42 [ 표 31] test3.xml 실행화면 42 [ 표 32] metric.xml의생성 43 [ 표 33] metric의정의된 flow 입력 43 [ 표 34] metric.xml을이용한 metric 적용 43 [ 표 35] 생성된 xml에대한실행화면 44 2

그림목차 [ 그림 1] 스위치 / 라우터에임베디드된 sflow Agent 6 [ 그림 2] sflow system in OF@TEIN 7 [ 그림 3] sflow 응용의동작방식 8 [ 그림 4] SDN Flow Monitoring Application 9 [ 그림 5] sflow Agents와 Collector 11 [ 그림 6] sflow Deployment Diagram 20 [ 그림 7] Graphite WEB UI & Plot 21 [ 그림 8] Graphite WEB UI & Monitoring by OF@TEIN Sandbox(JEJU) 23 [ 그림 9] Graphite Dashboard 24 [ 그림 10] OF@TEIN 인프라확장 : 추가설치및운용 25 [ 그림 11] sflow system in OF@TEIN 26 [ 그림 12] GIST to JNU OF@TEIN sflow Sandbox 27 [ 그림 13] Graphite 접속 URL 37 [ 그림 14] Graphite Create Windowname 38 [ 그림 15] Graphite draw OF@TEIN Configuration 38 [ 그림 16] Graphite Graph Plot 39 [ 그림 17] Graphite Tree에표현된 Metric 45 [ 그림 18] Graphite Dashboard에표현된사용자정의된 Graph 45 3

A. Introduction OF@TEIN sflow 모니터링시스템은동남아시아에 TEIN [1] 망을통해연결된 SDN시스템들을통해대규모네트워크환경에있는사용자 flow에대해실시간으로트래픽정보를보여줄수있다. 트래픽샘플들은다양한네트워크장치들로부터수집될수있는데, 본시스템들은 TEIN 망을통해연결된각 Smart Rack 시스템상의 OVS(open virtual switches) 에서트래픽샘플을수집한다. sflow[2][3] 는작은오버헤드를가지면서모든종류의인터페이스에모니터링할수있도록설정이가능하며, 그샘플링비율도모니터링정책에따라각링크에대해결정할수있다. 먼저, sflow agent가네트워크장치에설정되면, 미리결정된샘플링비율에따라해당 agent가랜덤샘플링을하게되며, Gbps 이상의속도를갖는고속네트워크를모니터링하는데사용될수있다. 샘플된데이터는 UDP 패킷으로, sflow collector 소프트웨어가설치된특정호스트에전달되는데, 그 collector는통계값을계산하고, 그결과를그래픽으로보여질수있도록한다. 본 OF@TEIN 시스템에서는 sflow-rt를이용하며, TEIN상의 SDN 시스템들에있는 OVS로부터데이터를수집한 sflow 패킷들을처리한다. sflow-rt는 SDN 스택의제어플래인에설치되어있는데, sflow-rt는수신데이터그램을의미있는 metric값이나통계치값으로전환시키게된다. 이 metric값들은 RESTfull Northbound API를통해서프로그램을통해접근가능한데, HTTP 요청메시지를지원하는 Perl, Python, Java, Javascript, bash 등의다양한언어를이용하여 sflow-rt로부터 metric 값을가져오는데사용가능하며, 본 OF@TEIN 시스템에서는 python을사용하고있다. sflow2graphite 프로그램은 python으로되어있어서, JSON 포맷으로 sflow-rt 로부터통계치를가져오게되어있는데, 그결과치는 JSON으로인코딩된텍스트기반의값으로쉽게읽을수있고, 또한다양한프로그래밍도구들에대해지원될수있다. 다음과같은 URL이 sflow-rt로부터 JSON 인코딩된 metric 값을가져오는데사용된다. [ 표 1] sflow-rt 로부터 JSON 인코딩된 metric 값이표현된 URL. 여기서 server 는 sflow-rt 를구동하는호스트이며, agents 는호스트주소나이 름들에대한세미콜론으로구별된리스트이거나모든호스트를포함하는 ALL 로표시 4

될수있다. metrics는수집할메트릭들을콤마로구분된리스트이며, filter는 query 에포함하는호스트들을제한할때쓰인다. sflow2graphite는결과값을 graphite dashborad에보낸다. Graphite는오픈소스모니터링도구로서많은하드웨어에서잘동작한다. Graphite 실시간 charting 도구는시간대별로표시된데이터를저장하고나타내는데유연한방법들을제공하며, graphite 성능곡선들은웹응용을이용해구축될수있다. Graphite[4] 는두가지일을수행하는데, 첫째로시간배열 metric을저장하고, 둘째로웹응용에서요구에맞는 metric값들을그래프로랜더링한다. Graphite는다음의세가지소프트웨어컴포넌트로구성되어있다. [ 표 2] Graphite 에대한세가지소프트웨어컴포턴트. 1. carbon : 시간배열데이터를수신하는 Twisted 데몬 2. whisper : 시간배열데이터를저장하는단순데이터베이스라이브러리 (RRD 와비슷 ) 3. graphite 웹응용 : Cairo 를이용한그래프를렌더링하는 Django 웹응용 여기서 Cairo는 2D 그래픽라이브러리로서다중출력장치를지원하는데, 공개소프트웨어로서 LGPL(the GNU Lesser General Public License) 버전 2.1이나 MPL (the Mozilla Public License) 버전 1.1으로재배포가능하다. Cairo는모든출력미디어에일관된출력으로나타낼수있도록설계되었고, 디스플레이하드웨어가속을이용할수있다. sflow는스위치와라우터에임베디드된 multi-vendor 샘플링기술이다. 이는 sflow가모든인터페이스에서동시에 wire speed로응용레벨트래픽플로우를지속적으로모니터링할수있게한다. sflow 에이전트는하나의장치에서망관리소프트웨어의일부로서동작하는소프트웨어프로세스이다 ([ 그림 1] 참조 ). 5

[ 그림 1] 스위치 / 라우터에임베디드된 sflow Agent sflow agent는인터페이스카운터와플로우샘플들을 sflow 데이터그램으로조합하여 sflow collector로망을통해전송한다. 패킷샘플링은전형적으로스위칭 / 라우링 ASIC에서 wire-speed 성능으로수행되게된다. 각샘플된패킷과연관된포워딩 / 라우팅테이블상의항목들의상태또한기록되어진다. 이렇게구성된구성컴포넌트를이용하여, OF@TEIN망에서 sflow 모니터링시스템이구축되어 SDN 트래픽에대한모니터링데이터를수집하고, 그결과를유연한방식으로사용자에게제공하게된다. 6

OF@TEIN에서 sflow 시스템은 [ 그림 2] 와같은환경으로구성된다. sflow가모니터링할망에구성된각시스템은물리망위에서가상화된각각의노드들로서볼수있는데 [ 그림 2] 의하부에속한각시스템은 Open Stack 등과같은 platform 등에의해가상화된가상노드들로서, 각각 OVS를통해서트래픽이스위칭된다고본다. 이러한각각의 OVS 스위치에서 sflow 시스템은해당 metric을지정하고, 또한 flow에대해지정할수있고, 관련 threashold 값을지정할수있다. [ 그림 2] 에서왼쪽의 topology들은각 flowspace에서의가상망에대한 topology를나타내며, 가상망에서의특정노드를 click하면해당하는 sflow graph가보여지는데, 해당 metric 에대한값들이그래프로표시된다. [ 그림 2] sflow system in OF@TEIN. [ 그림 3] 에서 sflow 응용이가상화된네트워크에서어떤방식으로동작하는지에 대해서설명하고있다. [ 그림 2] 에서보듯이모니터링하려는네트워크는가상화되어 있어서, Open Stack[5] 의 Neutron[6] 등과같은 platform 을통해가상화된네트워 7

크는 Floodlight[7] 등의 controller등의요청에의해각 topology가 flowspace마다생성이된다고가정하며, 이에 Floodlight는전체적인네트워크에대한 view를가지고있으며또한 flowvisor[8] 기반으로할당된 flowspace마다모니터링할수있는상태를유지할수있다. sflow 측에서생각해보면, collector 측에서지속적으로 probing을하던가 floodlight측에서변화가생길때마다 notification을받던가해서, flow가있다는것을알면, collector 측에서 floodlight에서 flow 정보를받아와서, 해당 flow key 값들을이용하여, 그 flow를 filtering하여모니터링할수있게하고, 관련 metric을설정하여볼수있게된다. [ 그림 3] sflow 응용의동작방식 이모든것은 REST API[9] 를통해서이뤄질것으로생각하고있고, sflow 측에서 floodlight에서 flow에대한정보를받아오면그것을통해 xml 기반으로 flow에대한정의를하는파일을생성하므로써, 자동화해서그래프로해당 flow에대한그래프가적절히 plotting될수있다. 이러한과정은 [ 그림 4] 와같은차례로나타낼수있으며, 이차례는 [ 그림 3] 에나타난번호와같은절차를나타낸것이다. 8

[ 그림 4] SDN Flow Monitoring Application. 1 토폴로지정보요청 sflow 응용은 Floodlight Controller에현재의토폴로지정보를 REST API를통하여요청할수있다. - Floodlight는 Open Stack 등과같이가상화된 VM들의 network connection에기반한가상화된 topology를유지하면서, 그에대한정보를 sflow 응용에게넘겨줄수있다. SDN 응용은 Avior GUI를이용하여네트워크토폴로지그래프를보여줄수있다. 2 Flow Definition 네트워크상의각 OVS들은새로운 flow가생겼을때, 이를 Floodlight와같은 controller에게통고하고, 그해당 flow key에대한정보를가지고있다. - sflow 응용은정기적으로 Floodlight에게질의하여, 네트워크상의 flow들에대한현재상태를가져올수있다. Floodlight는새로운 flow가생길때마다, flow 정보를 sflow 응용에게통보해줄수있다. 이러한정보를이용하여, flow들의 key값을이용하여 flow를정의하는 XML 파일을만들수있고, 해당 XML을이용하여 sflow 응용이해당 Flow 정보를 monitoring할수있도록한다. 3 Metric 값구하기 sflow-rt 로부터정기적으로 flow statistics, interface counters 와같은 metric 값을 fetch 해온다. 9

4 Metric 값의 plotting monitoring 된 metric 값들을 plotting 한 graph 들을생성하기위해 Graphite 로 metric 값전달 10

[ 그림 5] 는 sflow 시스템의기본구성요소를보여준다. 망전체에걸쳐서구축분포되는 sflow agent는 sflow 데이터그램의스트림을중심에있는 sflow collector 로지속적으로전송하게되고, 전송된데이터그램들은분석엔진에의해분석되어서트래픽플로우에대한풍부하면서실시간이고망전체에걸친 visibility를제공하게된다. [ 그림 5] sflow Agents 와 Collector. C.1 nalytic engine sflow RT sflow-rt 분석엔진은망장비들로부터 sflow 데이터그램의스트림을지속적으로수신하여그들을실행가능한메트릭으로변환하여 REST API를통해접근가능하도록한다. RESTflow API는각 SDN 응용이사용자편이에맞춘측정을구성하고 metric들을수집하고임계값을설정하며, notification을수신할수있게해준다. 응용들은 controller가망에적응하도록명령을주므로써, 변화하는망트래픽에반응할수있게된다. 11

C.2 REST API REST(Representational State Transfer) 는 WWW와같은분산하이퍼미디어시스템에대한소프트웨어구조중의한유형이다. REST라는이름은 2000년에 Roy Fielding에의해도입되어네트워킹커뮤니티에널리퍼지게되었다. REST는엄격한의미에서망구조원칙들의모음이라고할수있는데, 그원칙들이란자원들이어떻게정의되고어떻게주소화되는가를개괄하는것이다. 이는종종넓은의미에서, SOAP와같이추가적인메시지전송계층없이혹은 HTTP 쿠키를통한세션트래킹없이 HTTP 상에서도메인특정적인데이터를전송하는단순한인터페이스를기술하는데사용될수있다. REST에있는정보의주요추상화는자원이다. 문서나이미지, 어떤지역의날씨정보와같은일시적인서비스, 다른자원의모음등과같은, 이름을붙일수있는어떤정보이던자원이될수있다. 자원은어떤 entity들의집합에대한개념적인 mapping인것이다. REST는자원식별자를사용하여컴포넌트간의작용에연루된특정자원들을식별해낸다. REST connector들은, 멤버쉽함수나처리소프트웨어의유형에관계없이, 자원의값들의집합에접근하고조작하기위한범용적인터페이스를제공한다. URL 및 URN은그러한자원식별자의예이다. REST 컴포넌트들은 representation을이용하여자원에대한 action을수행하므로써, 자원의현재상태을알아내거나컴포넌트들사이에 representation을전달한다. representation 은바이트시퀀스에그바이트들을묘사하기위한 representation 메타데이터를더한것이다. 하나의 representation은데이터, 그데이터를묘사하는메타데이터, 또한가끔씩그메타데이터를묘사하는메타데이터로구성되어있다. 메타데이터는이름-값짝의형태를취하고있으며, 이름은그값의구조와 semantics를정의하는표준에따른다. [ 표 3] REST 데이터요소들. 데이터요소 예 resource resource identifier representation representation metadata resource metadata control data hypertext reference 의개념적 target URL, URN HTML 문서, JPEG 이미지매체유형, 최근정정시간소스링크, 대체자원등 if-modified-since, cache-control REST 는다양한 connector 유형들을이용하여자원을접근하고자원 representation 을전송하는액티비티들을인캡슐레이션한다. 그 connector 들은컴 포넌트통신을위한추상인터페이스를나타내는데, 개념들을완전하게분리하고자 12

원및통신메카니즘에대한하부구현방식을감춤으로써복잡성을제거하였다. [ 표 4] REST 인터페이스. Connector 예 client server cache libwww.libwww-perl libwww. Apache API, NSAPI 브라우저캐쉬, Akamai 캐쉬망 resolver bind (DNS lookup 라이브러리 ) tunnel SOCKS, HTTP CONNECT 후의 SSL REST는표준이아니고아키텍쳐스타일이기때문에별도로정해진표준문서나개발도구는존재하지않지만, 현재널리사용되는 HT TP, URL, XML/HTML/GIF/ 등다양한형식의표준을사용하고있으며 REST의기본개념에충실하게설계된서비스를 Restful 하다고말하고있다. RESTful 구조의주요부분은잘정의된통신인터페이스로, POST, GET, PUT 및 DELETE와같은 HTTP 메소드들을가지고있다. 이들은데이터베이스기법과연관된 CRUD (CREATE, READ, UPDATE, DELETE) 동작들과다음과같이종종비교된다. o PUT은 CREATE 혹은 PASTE OVER와동일 o GET은 READ 혹은 COPY와동일 o POST은 UPDATE 혹은 PASTE AFTER와동일 o DELETE는 DELETE 혹은 CUT와동일 REST에서사용하는데이터는주로 XML, JSON, RSS이사용된다. 대부분의 OPEN API 서비스가 XML, JSON을지원하고있으며 JSON은사용의단순함과그자체가이미자바스크립트의구조체이기때문에별도의해석도구없이사용할수있기때문에요즘에는많이사용되고, 추천되고있다. C.3 Metric metric 은 flow 나인터페이스트래픽에대한축적값을나타내는데, sflow 에서사 용되는 metric 들을다음에보였다. 13

[ 표 5] Metric 의종류. metric eth_alignmenterrors eth_carriersenseerrors 내용 배열오류 : 일반적으로 Ethernet 패킷에대한부적절한바이트배열을가리킴 반송감지에러 eth_deferredtx 지연전송 : 지연이란반송주파수를통해프레임을보내려는동안 chip 이지연되는것을가리킴 eth_excessivecollisions 과도한충돌 eth_fcserrors FCS 오류. FCS 오류를포함한수신패킷의수 eth_internalmacrxerrors 내부 Mac 수신오류 Ifinerrors 상위계층프로토콜로전달될수없는오류를포함한인바운드패킷의개수 Ifinmulticastpkts 인터페이스에의해수신된멀티캐스트패킷의전체개수 Ifinoctets 인터페이스에의해수신된바이트전체개수 Ifinpkts 인터페이스에의해수신된오류없는패킷의전체개수 Ifoutoctets 인터페이스에의해전송된바이트전체개수 Ifoutpkts 인터페이스에의해전송된패킷의전체개수 eth_internalmactxerrors 내부 Mac 송신오류 eth_latecollisions 늦은충돌개수. 늦은충돌이란 preamble 을전송한이후에충돌이발생하는경우 eth_multiplecollisions 다중충돌의전체개수 eth_singlecollisions 단일충돌의전체개수 eth_sqetesterrors eth_symbolerrors 심볼에러의전체개수 ifinucastpkts 인터페이스에서송신된유니캐스트패킷의전체개수 ifinunknownprotos ifinutilization ifoperstatus 인터페이스의현재운용상태 ifoututilization 14

metric 내용 ifspeed 인터페이스의현재대역폭예측 [ 단위 : bits per second] eth_toolongs ifadminstatus 인터페이스의희망상태 ifdirection ifinbroadcastpkts 인터페이스에수신된브로드캐스트패킷의전체개수 ifindex 인터페이스인덱스 ifindiscards 폐기된수신패킷의개수 ifoutbroadcastpkts 인터페이스에서전송된브로드캐스트패킷의전체개수 ifoutdiscards 폐기된송신패킷의개수 ifouterrors 오류로인해전송될수없는아웃바운드패킷의개수 ifoutmulticastpkts 인터페이스에서전송된멀티캐스트패킷의전체개수 ifoutucastpkts 인터페이스에서전송된유니캐스트패킷의전체개수 iftype 인터페이스유형 15

Flow Analytics 와 sflow2graphite D.1 Flows 구성 트래픽에서의 flow 란특정시간구간내에서관찰되는패킷의집합으로 flow key 와같은공통적인성질을갖고있다. flow key 는보통, IP 소스및목적지주소와 TCP/UDP 포트번호와같은패킷헤더의필드값들에의해지정된다. D.2 Flows 정의 트래픽 flow 는다음과같은속성을이용하여정의된다. name : flow 사양을식별하는데쓰이는이름 keys : flowkey 속성들의목록 ( 예 : ipsource,ipdestination, tcpsourceport, tcpdestinationport, ipsource.i (= tunneled address)) value : 숫자 flowkey 속성 ( 예 : 프레임, 바이트, 요청, 시간 ) filter : flowkey들을필터링하는부울식표현 ( 예 : sourcegroup=local& tcpdestinationport=80, 8080 & destinationgroup=internal sourcegroup == external) 다음의 prefix 들은값필드가계산되는방식을변경할때사용될수있다. rate : <flowkey> 예 : rate:requests avg : <flowkey> 예 : avg:duration count : <flowkey> 예 : count:ipsource 16

D.3 Flows Key 값들 다음 [ 표 6] 은 flow key 들에대한리스트이다. keys Arphardwaretype Arpipsender Arpmacsender Arpmactarget 설명 ARP: 네트워크프로토콜유형을표시. 예 : Ethernet 은 1, Fibre Channel 은 18 ARP: 전송측 IP 주소 ARP: 전송측 MAC 주소 ARP: 의도하는수신자의 MAC 주소 Arpoperation ARP: 송신자가수행하는동작을지정 : 요청은 1 답변은 2 Arpprotocoltype ARP: ARP 요청이의도하는인터네트워크프로토콜을지정. IPv4 의경우, 0x0800 Bytes Direction Dnsaa DNS: 권한있는답변 (authoritative answer). 예 : false Dnsancount DNS: DNS 답변에있는엔트리의개수. 예 : 0 Dnsarcount DNS: 자원섹션에있는엔트리의개수. 예 : 0 Dnsnscount DNS: 네임서버섹션에있는엔트리의개수 Dnsopcode DNS: op code. 예 : 0 Dnsqclass 질의클래스. 예 : 1 Dnsqdcount 질의에있는엔트리의개수. 예 : 1 tcpdestinationport tcpflags tcpoffset dnsqname TCP: 목적지포트 TCP: 플래그들 TCP: offset 질의에있는도메인이름. 예 : google.com dnsqr request=false, response=true. 예 : false dnsqtypename dnsra 질의유형이름. 예 : MX(15) recursion available. 예 : true dnsrcode 응답코드. 예 : 0 dnsrd dnstc recursion 요망됨. 예 : false Truncated. 예 : false dnsz Reserved. 예 : 0 ethernetprotocol frames [ 표 6] Flow Key List. icmp6code Icmp v6 코드 : 이값은메시지유형에따라다르며, 메시지 granularity 에대한추가적인수준을제공함 17

[ 표 6] Flow Key List. icmp6type Icmpcode icmptype keys icmpunreachablepor t tcpsourceport 설명 Type 은메시지의유형을지정. 0~127 범위의값들은오류메시지를지정하고, 128~255 범위의값들은정보메시지를가리킴 ICMPv4 코드 ICMPv4 유형 ICMPv4 포트도달불가능. 목적지도달불가능메시지는전달하고자하는프레임이궁극적인목적지에다다를수없기때문에폐기되었음을가리킴 TCP 소스포트 tcpwindow udpbytes Inputifindex ip6bytes ip6destination ip6dscp ip6ecn ip6extensions ip6nexthdr ip6source ip6tos ip6ttl Ipbytes Ipdestination IPv6 목적지주소 IPv6 ECN (Explicit Congestion Notification) IPv6 에서다음헤더의유형을지정. 이필드는보통패킷의페이로드에서사용되는전달계층프로토콜을지정 IPv6 소스주소 IPv6 Type of Service IPv6 TTL IPv4 목적지주소 Ipdscp Differentiated Services Code Point (DSCP): 최근의기술은이 DSCP 필 드를 differentiated services을위해사용 Ipecn IPv4 ECN (Explicit Congestion Notification) Ipflags 3 개의비트필드를이용하여 fragment 를제어하고식별하는데쓰임. bit 0: bit 1: Reserved; must be zero. Don't Fragment (DF) bit 2: More Fragments (MF) Ipfragoffset fragment 오프셋필드. 8-바이트블록단위로측정되며, 13비트길이이며, 쪼개지지않은원래의 IP 데이터그램의시작점에서상대적인특정 fragment의오프셋을지정. 첫 fragment의오프셋값은 0임 Udpsourceport vlandestination Tcpseqno Ipid Ipprotocol Ipsource Iptos ipttl UDP 소스포트 VLAN MAC 목적지주소 TCP 시퀀스번호 이필드는식별필드로서단일 IP 데이터그램에서 fragment 로나눠진모든패킷을식별 IP 데이터그램의데이터부분에쓰이는프로토콜을나타냄. 예 : TCP, UDP, IGMP, ICMP, GRE, RSVP, OSPF, 등. 패킷의송신측 IPv4 주소 IPv4 TOS (Type of Service) IPv4 TTL (Time to Live) 18

[ 표 6] Flow Key List. keys isbroadcast ismulticast isunicast macdestination macdestinationvend or Macsource Macsourcevendor Outputifcount Outputifindex Stack Tcpackno Vlandestinationpriori ty Vlansource udpdestinationport 패킷이브로드캐스트되었는지여부패킷이멀티캐스트되었는지여부패킷이유니캐스트되었는지여부패킷의수신자의 MAC 주소패킷의소스의 MAC 주소 VLAN 소스 MAC 주소 UDP 목적지포트 설명 D.4 Graphite: 실시간그래프도구 Graphite 는실시간시간순의데이터를효율적으로저장하고표시하는 all-in-one 솔루션이다. 주요특징은효율적으로저장하면서또한매우빠르게데이터를불러올 수있다는것이다. Graphite 는다음의주요컴포넌트로구성되어있다. Whisper (Storage) - 이컴포넌트는데이터에대한 persistent storage 를제공함. - 효율적인시간순데이터베이스임. Carbon (collection/aggregation) - 이컴포넌트는 graphite의주요부분임. - 세개의프로세스로구성되어있는데, 각각은들어오는데이터를수신처리하는부분과그데이터를 aggregate하는부분, 이를데이터로저장하여견고히하는부분으로이뤄짐. graphite-web (display) - 이컴포넌트는 graphite 의 front end 임 - retrieval 을위한 dashboard 를제공하고, metric 에대한 19

visualization 을담당하며, 강력한 plotting API 를제공 D.5 Deployment Diagram [ 그림 6] sflow Deployment Diagram. 20

시각화도구 Graphite E.1 sflow to Graphite 변환 sflow2graphite는 python 프로그램으로, sflow-rt로부터의 flow statistics를시간순으로변환하는데쓰이며, 그데이터는 graphite dashboard에 plotting된다. 우리시스템에서는표준 XML 모델을이용하여인터페이스카운터에대한것은물론이고사용자가정의한 flow들에대한 plot을제공할수있다. E.2 Graphite Web User Interface http://117:17.102.142 를입력하고, graphite 의 Web UI 의왼쪽면에있는 tree 에서몇 가지 metric 을선택하면, 아래그림과같은 plot 을얻을수있다. [ 그림 7] Graphite WEB UI & Plot. 21

graphite 웹인터페이스를열면, 두개의패널을볼수있다. 왼쪽패널은브라우저트리로구성되어있는데, 거기서몇몇 metric을선택하면, composer라불리는오른쪽패널에실시간그래프를나타내보여준다. 브라우저트리와 composer는둘로구분되어있어서, 마우스로잘아끌어그크기를조정할수있다. 새로운그래프하나를직접추가하려면, 브라우저트리에서일련의 metric들을선택하면, 그값에대한그래프가그래프패널에추가되어진다. 반대로, 어떤일련의 metric들에대한그래프가존재하면, 지워질수있다. Graphite는시간범위를상대적이나절대적인값으로셋팅가능하다. 상대적인시간범위가대부분공통적으로사용되는데, 상대적인범위를세팅하기위해서는, 툴바의제일왼쪽에있는버튼인 Select Recent Data 버튼을클릭하고나타낼시간범위를입력하면된다. 기본값으로, 그래프패널은과거 24시간동안의그래프를보인다. 절대적시간범위를세팅하려면, 툴바의가운데있는 Select Data Range 버튼을클릭하고 calendar 윈도를이용해서시작과끝일시를지정하면된다. graphite composer의아래쪽에위치한툴바버튼을이용하여 graph를 customize할수있다. graph 옵션들을이용하면다음의것들을할수있다. Graph Title : 그래프의제목을세팅함 Display : 다음의옵션을제공 - fonts : 폰트이름, 굵기, 이택릭, 크기, 색깔 - colors : 색깔리스트, 배경색깔, 주요그리드선색깔등 - legends : 범례숨기기등 - line thickness : 선굵기지정 - 그래프요소숨기기 : graph만보이기, X축숨기기, Y축숨기기, 그리드숨기기 Line Mode : 선이 rendering되는방법을규정 (sloped, staircase, connected) Area Mode : 선아래부분이채워질지, 선들이누적된형식으로보이게할지결정 X-Axis : X축에대한 date/time에대한시간포맷을지정하고, time stamp 해석을위한 time zone 등을지정함 Y-Axis : Y축이 rendering되는방식을지정 - Y축의최대 / 최저값 - 그려질선들의갯수 - drawing을위한 logarithmic scale - Y축라벨과 grid line 사이의 step 등 22

[ 그림 8] Graphite WEB UI & Monitoring by OF@TEIN Sandbox(JEJU). http://117:17.102.142 의주소를통해 graphite web UI 접근을하면, 브라우저트리창에서원하는 metric들을클릭하여선택할수있다. 선택된 metric들은 composer 참에하나의 graph로보여지게된다. 하나의 metric을다시클릭하게되면, 그래프에서그 plotting을제거할수있다. E.3 Graphite Dashboard 사용자인터페이스 dashboard 인터페이스는어떤시간에하나이상의그래프를보이기위한도구이며, 모든그래프는같은시간범위에대해서보여준다. dashboard UI는 http://117:17.102.142/dashboard 의주소나 composer 인터페이스상단에있는링크를이용하여접근가능하다. Dashboard 인터페이스를열게되면페이지상단에 completer라는메뉴를볼수있는데, Competer는일련의메트릭을선택하게되면 graph 패널에실시간그래프를보이도록하는것이다. graph 패널과 completer는분리되어있어서두개사이의크기를마우스로조정가능하다. completer의다른메뉴가브라우저트리인데, 이는 graph 패널의왼쪽에있는메뉴로서이모드로설정하면 Dashboard Configure UI 메뉴를이용할수있다. completer와브라우저트리는같은역할을하는것으로사용자선호도에따라선택하면된다. 새로운그래프를더하고자하면, completer나브라우저트리에서일련의 metric을선택하면, 그 23

metric 값에대한그래프가아래에보인그림과같이 Dashboard의끝에추가된다. 하지만반대로, 만일그 metric 값이이미 dashboard에존재한다면, 제거된다. 하나의그래프에하나이상의 metric을보이는가장간단한방법은각각을개별 graph로추가하여그 graph들을조합하는것이다. 두개의 graph를조합하기위해서는, 한 graph를다른하나위로마우스로끌고와서, Drop to Merge 라는메시지가나올때까지기다리면된다. graph를 drop하면그해당 graph는양쪽그래프의모든 metric 값을나타내게된다. 필요한 metric 값만큼이를반복하면된다. 한 graph위에서마우스를배회시키면, 바로위에적십자아이콘이보이게되는데, 이를클릭하면해당 dashboard에서그 graph를삭제하게된다. [ 그림 9] Graphite Dashboard. 24

F.1 OF@TEIN 네트워크구성 [ 그림 10] OF@TEIN 인프라확장 : 추가설치및운용. 본과제에서개발하는 sflow 시스템이구동될 OF@TEIN 네트워크의구성은그림15 처럼구성이되어있으며광주과학기술원을중심으로제주대학교, 고려대, 포항공대, KOREN NOC와연결된구성과함께 OF@TEIN 에협력하는동남아시아 5개국 ( 필리핀, 베트남, 태국, 인도네시아말레이시아 ) 로연결및구성되어있다. 그림15 에서표현되어있는 TBD #1은말레이시아, TB2 #2는파키스탄에구성될예정이며 TBD #1인말레이시아는현재구성이완료된상태이다. 국내에구성되어있는 SmartXrack 은기존의 A type과함께 B type으로구성되었었는데현재는보다향상된성능과편리한원격관리를위해서국내 5개학교및기관에 SmartXrack Type C 가배포되어있으며보다강력한성능을수행할수있도록구성및연결이되어있다. 25

[ 그림 11] sflow system in OF@TEIN. 본작업에서개발하는 sflow Monitoring System 은 [ 그림 11] 과같은 OF@TEIN 네트워크에가상화된 Topology 의대한네트워크를모니터하려는것이다. 이는그림 10의각노드가 [ 그림 11] 에서보이는각가상화된머신인 VM들사이를 OVS를통해연결된각가상화된네트워크 topology 에대해그상태값을구하는것이다. 이러한상태값은각 Flowsapce 마다다른 topology상태로개별적으로모니터링되어나타낼것이며, 이는그림 3에서와같이 Floodlight 와의작용을통해서현재의가상화된 Topology 에대한정보를얻어내고, 그해당 Topology 에대한 Flow 정보를구한이후, 각 Flow에대한다양한 Metric 값들을 Web 기반으로사용자에게제공하려는것이다. 현단계에서는 [ 그림 12] 와같이 GIST 와제주대학교사이에 Testbed 를구성하여 sflow Monitoring 이이뤄지고있다. 향후 OF@TEIN 의하드웨어시스템의구축의진척도에따라우리가작업하는 sflow 모니터링시스템을 OF@TEIN 망에실제로구축해나갈것이다. 26

s [ 그림 12] GIST to JNU OF@TEIN sflow Sandbox. 27

G. 구축 - Openflow 기반 sflow Monitoring Configuration OF@TEIN 네트워크에서 sflow Monitoring 시스템을구축하고동작하여데이터를생성하기위해서는표 8과같이명시된순서로나열할수있다. 이별첨부분은해당보고서를참고하는사용자가보다쉽고빠르게 sflow 모니터링시스템을구축하기위해서도움형식으로만들어졌으며해당부분은크게 5가지부분으로표현되고있다. [ 표 7] sflow 모니터링시스템구성순서 순서 No_1 No_2 No_3 No_4 No_5 구성내용 Ubuntu 12.XX 기반의 sflow-rt Setup Ubuntu 12.XX 기반의 Graphite Setup Graphite 에서의 Metric 정의및 XML 모델정의 sflow Agent 구성 WEB UI 구성및조작 G. 1. Ubuntu 12.XX 기반의 sflow-rt Setup sflow-rt 는 Java 1.6 이나그이상의버전이필요하며, 다음명령을이용해서소 프트웨어를다운로드하고설치및실행이가능하다. [ 표 8] sflow-rt 의설치. wget http://www.inmon.com/products/sflow-rt/sflow-rt.tar.gz tar -xvzf sflow-rt.tar.gz cd sflow-rt./start.sh 사용자는웹브라우저를이용하여 http://server:8008 에접근하여온라인도움을얻 을수있고, REST API 이용이가능하다. 28

G.2 Ubuntu 12.XX 기반의 Graphite Setup [ 표 9] 우분투 12.xx 환경에서의 Graphite 설치. cd sudo apt-get update sudo apt-get upgrade wget https://launchpad.net/graphite/0.9/0.9.10/+download/graphite-web-0.9.10.tar.gz wget https://launchpad.net/graphite/0.9/0.9.10/+download/carbon-0.9.10.tar.gz wget https://launchpad.net/graphite/0.9/0.9.10/+download/whisper-0.9.10.tar.gz tar -zxvf graphite-web-0.9.10.tar.gz tar -zxvf carbon-0.9.10.tar.gz tar zxvf whisper-0.9.10.tar.gz mv graphite-web-0.9.10 graphite mv carbon-0.9.10 carbon mv whisper-0.9.10 whisper rm graphite-web-0.9.10.tar.gz rm carbon-0.9.10.tar.gz rm whisper-0.9.10.tar.gz sudo apt-get install --assume-yes apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 build-essential python3.2 python-dev libpython3.2 python3-minimal libapache2-mod-wsgi libaprutil1-ldap memcached python-cairo-dev python-django python-ldap python-memcache python-pysqlite2 sqlite3 erlang-os-mon erlang-snmp rabbitmq-server bzr expect ssh libapache2-mod-python python-setuptools sudo easy_install django-tagging sudo easy_install zope.interface sudo easy_install twisted sudo easy_install txamqp #################################### 29

# INSTALL WHISPER #################################### cd ~/whisper sudo python setup.py install #################################### # INSTALL CARBON #################################### cd ~/carbon sudo python setup.py install cd /opt/graphite/conf sudo cp carbon.conf.example carbon.conf sudo cp storage-schemas.conf.example storage-schemas.conf sudo gedit storage-schemas.conf ### Replace contents of storage-schemas.conf to be the following [stats] priority = 110 pattern =.* retentions = 10:2160,60:10080,600:262974 # 형식 : retentions = 15s:7d, 30s:14d, 1m:21d, 15m:5y #################################### # CONFIGURE GRAPHITE (webapp) #################################### cd ~/graphite sudo python check-dependencies.py sudo python setup.py install ################### # CONFIGURE APACHE ################### 30

cd ~/graphite/examples sudo cp example-graphite-vhost.conf /etc/apache2/sites-available/default sudo cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi sudo mkdir /etc/httpd sudo mkdir /etc/httpd/wsgi sudo gedit /etc/apache2/sites-available/default ##### # Change the line: WSGISocketPrefix run/wsgi # To: WSGISocketPrefix /etc/httpd/wsgi ##### sudo /etc/init.d/apache2 reload #################################### # INITIAL DATABASE CREATION #################################### cd /opt/graphite/webapp/graphite/ sudo python manage.py syncdb # follow prompts to setup django admin user sudo chown -R www-data:www-data /opt/graphite/storage/ sudo /etc/init.d/apache2 restart cd /opt/graphite/webapp/graphite sudo cp local_settings.py.example local_settings.py #################################### # START CARBON #################################### cd /opt/graphite/ sudo./bin/carbon-cache.py start 31

G.3 sflow Agent 구성 G.3.1. open-vswitch 구성및설정 클라우드데이터센터는아주많은물리적서버들로구성되어있고, 각각은물리망을가상머신에연결하는하나이상의가상스위치들과함께하이퍼바이저를구동하고있다. 클라우드데이터센터에서아주많은수의가상스위치에대한구성을조정하고관리하는것은복잡한작업이다. 이러한문제를해결하기위해, Xen 클라우드플랫폼의일부인 Open vswitch 구성메카니즘이 OpenFlow 구성프로토콜을이용하는것으로옮겨져왔다. OpenFlow 구성프로토콜을사용하므로써클라우드내에있는모든 Open vswitch 인스턴스들에대한구성을중앙에서관리할수있게되었다. Open vswitch 패키지의일부로설치된, ovs-vsctl command line 도구는 vswitch에구성명령을실행하는데이용될수있다. 다음의명령은 Open vswitch가 512개에하나씩패킷을샘플링하고, 매 30초마다카운터를폴링하며, 기본 sflow port인 6343번을통해 UDP상에서 analyzer(10.0.0.50) 로 sflow 데이터그램을보내도록구성하고있다. [ 표 10] sflow 폴링의개념. SFLOWUUID=`ovs-vsctl create sflow agent=eth0 target=\"10.0.0.50:6343\" header=128 sampling=512 polling=30` 생성된브릿지의구성을한다. ovs-vsctl list br [ 표 11] OVS 브릿지구성. 각브리지에 sflow 설정을적용한다. ( 이예에서는 xenbr0 and xenbr1): 32

[ 표 12] 생성된브릿지에 sflow 설정. ovs-vsctl set bridge xenbr0 sflow=$sflowuuid ovs-vsctl set bridge xenbr1 sflow=$sflowuuid 적절한패킷샘플링율을선택하는것은스위치에서 sflow를구성하는데중요한부분이다. 다음의표는대부분의망에있어서일반적인트래픽모니터링에아주잘작동할값들을제시하고있다. 하지만, 트래픽레벨이특별히높다면, 샘플링율은더낮아질수도있다. 예를들어 10Gbps 링크에서 2000 패킷에하나의샘플링이아니라 5000에하나의샘플링으로설정할수있다. [ 표 13] Linc 스피드에따른샘플링비율. Link Speed 샘플링율 10Mbps 1 in 200 100Mbps 1 in 500 1Gbps 1 in 1000 10Gbps 1 in 2000 패킷샘플링은하드웨어에구현되어있어서, 모든인터페이스가아주작은오버헤드로모니터링될수있다. 카운터폴링간격을적절한값으로선택해서링크이용율이정확하게추적될수있어야한다. 일반적으로폴링간격은, Nyquist-Shannon 샘플링이론에근거해서, 데이터가리포트되는것보다최소한 2배이상으로카운터값을 export하도록세팅되어야한다. G.3.2. HP Procurve 3500 Series Configuration G.3.2.1. 목적지 collector 구성하기 각스위치에서세개까지의 collector 가목적지로구성될수있다. 33

[ 표 14] HP Procurve 3500 destination 구성. 5406zl(config)# sflow <1-3> destination <IP-addr> <udp-port-for-sflow> 예를들어, 10.3.108.36 를목적지로구성하려면 : [ 표 15] HP Procurve 3500 destination 예시. 5406zl(config)# sflow 1 destination 10.3.108.36 sflow 를위해사용하는기본 UDP 포트는 6343 가쓰인다. G.3.2.2. 목적지정보확인하기 설정된목적지에대한정보를확인하려면 : [ 표 16] 설정된목적지정보확인. 5406zl(config)# show sflow <1-3> destination 예를들면, [ 표 17] 설정된목적지정보확인을위한예시. 5406zl(config)# show sflow 1 destination Destination Instance : 1 sflow : Enabled Datagrams Sent : 557592 Destination Address : 10.3.108.36 Receiver Port : 6343 Owner : 10.3.108.36;procurve-server.proact... Timeout (seconds) : 415 Max Datagram Size : 1400 Datagram Version Support : 5 34

G.3.2.3. 샘플링및폴링활성화하기 스위치포트에대한샘플링을활성화하려면 : [ 표 18] 스위치포트에대한샘플링활성화. 5406zl(config)# sflow <1-3> sampling <ports-list> N 여기서 N 은샘플된패킷의개수이며, 0 에서 16441700 의범위에서설정가능하다. 예를들어 : [ 표 19] 스위치샘플링개수설정. 5406zl(config)# sflow 1 sampling all 500 스위치포트에대한폴링을활성화하려면 : [ 표 20] 스위치포트폴링활성화. 5406zl(config)# sflow <1-3> sampling <ports-list> P 여기서 P 는카운터의두번의폴링사이의간격으로, 초단위로표시하며, 0 에서 16777215 의값을가질수있다. 예를들어 : [ 표 21] 스위치포트폴링간격설정. 5406zl(config)# sflow 1 polling all 20 G.3.2.4. 샘플링및폴링통계치확인하기 샘플링및폴링에대한통계치를확인하려면 : 35

[ 표 22] 설정된샘플링및폴링에대한통계치확인. 5406zl(config)# show sflow 1 sampling Port Sampling Dropped Polling Enabled Rate Header Samples Enabled Interval ----- + ------- -------- ------ ---------- + ------- -------- A1 Yes(1) 60 128 0 Yes(1) 20 A23 Yes(1) 60 128 0 Yes(1) 20 A24 Yes(1) 60 128 0 Yes(1) 20 B24 Yes(1) 60 128 0 Yes(1) 20 5406zl(config)# show sflow 1 sampling A1 Port Sampling Dropped Polling Enabled Rate Header Samples Enabled Interval ----- + ------- -------- ------ ---------- + ------- -------- A1 Yes(1) 60 128 0 Yes(1) 20 36

G.4 Graphite 에서의 WEB UI 구성및조작 Graphite dashboard는인터넷을통해접근가능한 Web 응용이다. dashboard에대한 URL은 graphite가설치된컴퓨터의 IP 주소이다. 예를들어, graphite가 117.17.102.142의주소로설정되어있다면, 사용자는다음과같이자신의브라우저주소창에 URL를입력하므로써접근할수있다. dashboard 웹페이지는같은머신에서돌고있는아파치웹서버에의해제공된다. http://117.17.102.142/ http://117.17.102.142/dashboard/ [ 표 23] Graphite WEB UI 접근. Graphite의큰장점중의하나가 CLI를이용할수있다는것인데, CLI에접근하려면, http://graphite-ip/cli 를열면아래와같은 prompt를볼수있다. 해당 CLI를이용하면구문분석혹은통계에대한내용을설정할수있으며자세한사항은뒤에설명하도록한다. 우선적으로 CLI에대한기본적인조작법을설명하도록한다. [ 그림 13] Graphite 접속 URL. CLI 내에서 plot 을간단히그려낼수있다. 윈도우내에서그 plot 을그릴수있다. 새로운윈도우하나를생성해내려면 create windowname 을입력하면스크린위에 popup 되어나온다. 37

[ 그림 14] Graphite Create Windowname. 이제윈도우에서우리의 metric 들을 plot 할수있다. CLI 에서 draw OFTEIN 을 입력하면 graphite 는자동적으로 namespace OFTEIN 에대한모든가능한값들을 보여주게된다. [ 그림 15] Graphite draw OF@TEIN Configuration. graphite CLI에서 wildcards를사용할수있는데, draw OFTEIN.sum:ifin* in OFTEIN_in_packets 을입력하면, graphite는윈도우 OFTEIN_in_packets에서 metric plot을보여준다. 그 wildcard에매칭이되는모든그래프는개별적으로플롯된다. graph들의 time scale을바꾸는것은매우쉽다. Timescale은 RELATIVE_TIME 38

을이용하여규정된다. RELATIVE_TIME 은현재시간에서부터의시간의길이이다. 따라서이값은 (-) 표시가항상먼저오고, 이후에시간단위가따라온다. 유효한시 간단위는아래와같다. Abbreviation s min h d w Unit Seconds Minutes Hours Days Weeks [ 표 24] Graphite 의유효시간단위표현. 만일 change OFTEIN_in_packets from to 2h 이라고입력하면, timescale 은 순간적으로바뀐다. 이는최근두시간동안의통계를보여준다. [ 그림 16] Graphite Graph Plot. 나중에앞서저장된 view 를찾아서불러와야하는경우에, 단순히 views 라고 입력하면저장된모든 view 들의리스트를볼수있다. 그중에특정 view 를불러오 기위해서 load viewname 을입력하면, 해당하는 view 를가져올수있다. 39

G.5. Graphite 에서의 Metric 정의및 XML 모델정의및표현 사용자는 xml 데이터모델을이용하여 flow를정의할수있다. G5절에서는일반적으로 XML을이용하여 Flow를정의하는기본적인개념과 Graphite에서메트릭을정의하는방법에대한개념을제시하고그하나의예로서 test3.xml을정의하여 Graphite에서 GRE 터널간의 Flow에대한정보를확인할수있는방법에대해서설명하고자한다. [ 표 25] XML을이용한 Flow의정의. <?xml version="1.0"?> <flows> <!-- Flow keys are a set of comma delimited packet attributes --> <flow name="flood3" keys="ipsource" value="bytes" /> <flow name="flood4" keys="ipsource,ipdestination" value="frames" /> <flow name="tcp1" keys="ipsource,ipdestination,tcpsourceport,tcpdestinationport" value="frames" /> </flows> 사용자 / 관리자는다음과같은템플릿을사용하여 XML 파일에서모니터링할 메트릭을지정해야한다. 생성된메트릭은 Graphite 에최종적으로표현된다. [ 표 26] Graphite에서메트릭정의. <?xml version="1.0"?> <metrics> <!-- metrics are a set of comma delimited flow names and interface counters --> flood3,flood4,tcp1,sum:ifinpkts,avg:ifinpkts,max:ifinpkts,min:ifinpkts,sum:ifoutpk ts,avg:ifoutpkts,avg:ifinucastpkts,sum:ifinucastpkts,avg:ifoutucastpkts,sum:ifoutu castpkts,sum:ifinmulticastpkts,avg:ifinmulticastpkts,sum:ifinbroadcastpkts,avg:ifi nbroadcastpkts,sum:ifinerrors,sum:ifindiscards,sum:ifouterrors,sum:ifoutdiscards,m ax:ifinpkts,max:ifinerrors,max:ifindiscards,max:ifouterrors,max:ifoutdiscards </metrics> 40

기본적으로, graphite 는최근 6 시간동안의 metric 값들을유지한다. graphite 서 버에서다음의명령을수행하므로써, graphite 가확장된시간범위에대해 plot 을나 타내도록할수있다. [ 표 27] Graphite 시간범위에대한 Plot 표시. sudo find /opt/graphite/storage/whisper -type f -name "*.wsp" xargs -I file./bin/whisper-resize.py --xfilesfactor=0.0 --nobackup file 15s:7d 30s:14d 1m:21d 15m:5y 사용자가설정한 XML 의데이터모델및 Metric 이정의가완료되면다음명령을 이용하여 Graphite 에표현할수있다. 다음은사용자가 test3 라는 flow 정의 xml 을생성하고 metric 에추가후 Graphite 에표현하는과정을소개하려한다. 아래 [ 표 29] 는아래에생성된경로에 test3.xml 이라는 xml 파일을생성하는것을보여주고있다. cd /sdn/mytools/traffic_flows/ sudo apt-get update sudo apt-get upgrade vim /sdn/mytools/traffic_flows/test3.xml [ 표 28] test3.xml 의생성. xml 파일이생성되면다음과같은사항을입력하여사용자가설정한 flow의정의를표현할수있다. [ 표 30] 은제주-광주사이에생성한 GRE 터널에움직이는 Flow 를모니터링하기위해서아래와같이정의하였다. SourcePort와 DestinationPort를입력하고구성된구문으로작성하면생성된터널에관한 flow가정의되는것을알수있다. 41

<?xml version="1.0"?> <flows> <!-- Flow keys are a set of comma delimited packet attributes --> filter="ipsource=192.168.16.10&ipdestination=192.168.16.11" /> <flow name="testtcp3" keys="ipsource,ipdestination,tcpsourceport,tcpdestinationport" value="frames" /> </flows> [ 표 29] test3.xml 사용자가모니터링하고자하는 SourcePort 와 DestinationPort 가정의되었으면, 아래에표현된명령어를통해서 Flow 의정의를진행할수있다. 아래에 [ 표 31] 에표 현하였지만, 생성된 xml 과같은곳에서실행을해야해당 flow 를정의할수있다. cd /sdn/mytools/traffic_flows/./parse_flows.py f test3.xml [ 표 30] test3.xml 를이용한 flow 정의 위에표현한 [ 표 31] 처럼 flow를정의하게되면다음과로그가표현되게된다. 해당로그는사용자가생성한 flow name이정상적으로정의되었는지확인할수있으며, 생성된 flow name에따른표현하고자하는 Metric 값이정확히표현되었는지확인할수있다. http://localhost:8008/flow/test3/json, {'keys':'ipsource,ipdestination','value':'frames','filter':'ipsource=192.168.16.10&ipd estination=192.168.16.11'} 200 http://localhost:8008/flow/testtcp3/json, {'keys':'ipsource,ipdestination,tcpsourceport,tcpdestinationport','value':'frames'} 200 http://localhost:8008/flow/testflood3/json, {'keys':'ipsource','value':'bytes'}200 [ 표 31] test3.xml 실행화면 flow 에대한정의가완료되었으면그해당 flow 에대한 metric 을정의하여야하 는데, xml 을정의한것처럼진행방법은매우쉽게표현할수있다. 우선적으로 [ 표 33] 에서표현하는경로로이동하여 metric.xml 파일을구성하도록한다. 42

cd /sdn/mytools/metric vim metric.xml [ 표 32] metric.xml 의생성. metric 파일이생성되면, 사용자는표현하고자하는 flow 를입력하여 Graphite 에 표현할수있다. 정의된 flow 를 metric 에표현하는방법은 [ 표 34] 에표현되어있다. <?xml version="1.0"?> <metrics> <!-- metrics are a set of comma delimited flow names and interface counters --> testflood3, test3, testtcp3, </metrics> [ 표 33] metric 의정의된 flow 입력. metric의정의가완료되면위에 test3.xml의 flow를정의한것처럼동일한방법으로 metric를정의하게된다. [ 표 35] 에표현되어있는것처럼동일경로에서 metric 에적용하게되면 [ 표 36] 에표현한실행로그가표현되게되는데최대 3분정도소요되며그이후에는 Graphite에표시되어정상적으로생성된 GRE터널의흐르는 Flow 를확인할수있다. cd /sdn/mytools/metric./parse_flows.py m metric.xml [ 표 34] metric.xml 을이용한 metric 적용 43

http://localhost:8008/metric/all/testflood3,test3,testtcp3/json ht t p : //l ocal host : 8008/met ri c/all/t e st f l ood3, t es t 3, t e st t cp3/j s on, http://localhost:8008/metric/all/testflood3,test3,testtcp3/json http://localhost:8008/metric/all/testflood3,test3,testtcp3/json [{u'lastupdate': 31930, u'lastupdatemin': 31930, u'topkeys': [{u'lastupdate': 31929, u'value': 0.0032443006830149457, u'key': u'61.252.60.85'}, {u'lastupdate': 144390, u'value': 5.401888268498886e-23, u'key': u'61.252.60.65'}, {u'lastupdate': 203929, u'value': 2.0171095245806314e-33, u'key': u'203.247.171.1'}, {u'lastupdate': 837979, u'value': 3.851243971903611e-145, u'key': u'192.168.0.1'}, {u'lastupdate': 1147289, u'value': 5.240368639001965e-199, u'key': u'116.89.186.109'}], u'metricn': 7, u'agent': u'61.252.60.75', u'datasource': u'7', u'metricvalue': 0.0032443006830149457, u'lastupdatemax': 244930, u'metricname': u'testflood3'}, {u'metricname': u'test3'}, {u'lastupdate': 133960, u'lastupdatemin': 133960, u'topkeys': [{u'lastupdate': 133960, u'value': 5.689594479164838e-23, u'key': u'103.22.221.51,61.252.60.74,54312,9229'}], u'metricn': 1, u'agent': u'61.252.60.75', u'datasource': u'1', u'metricvalue': 5.689594479164838e-23, u'lastupdatemax': 133960, u'metricname': u'testtcp3'}] metric time = 1387779783 OFTEIN.testflood3 0.003244 1387779783 OFTEIN.testtcp3 0.000000 1387779783 [ 표 35] 생성된 xml 에대한실행화면 위의과정이완료되었으면사용자는 Graphite를설치한머신의 ip를 Chrome & Firefox 브라우저에아이피를입력하면 Web UI로접속하게된다. ( 단, 인터넷익스플로러는지원하지않거나, 그래프표현의문제가있으니사용을자제하는것을추천한다.) 접속한 Graphite Tree를기준으로사용자가정의한 flow에따른 Metric이추가된것을확인할수있으며해당메트릭을클릭하면우측화면과같이그래프가표현되게된다. 44

[ 그림 17] Graphite Tree 에표현된 Metric. 또한그래프를단순하게확인하는것뿐만아니라, 정의된 metric이 2개이상일경우에는 [ 그림 9] 에표현되어있는 Graphtite가제공하는 Dashboard 에표시하여가독성을높이는방법도있다. 아래에제공된그림은 test3.xml에서정의한 1개의 flow를 Metric에적용시켜서 Dashboard에표시한것을나타낸것이다. [ 그림 18] Graphite Dashboard 에표현된사용자정의된 Graph 45

네트워크를구성하고그것을적절히운용하려면, 그네트워크상태를잘아는것은그운용의시작에해당한다. 본작업에서는 sflow monitoring 시스템에대하여작업을하였다. OF@TEIN망이 GIST를중심으로제주대학교, 고려대학교, 포항공대등과연결하고, 또한동남아시아여러나라와연결하여구성되었고, 그물리망위에가상적으로다양한망들이올라올수있도록구성된 SDN 망을적절하게모니터일하는시스템을구성하였다. 본 monitoring 시스템을구성하기위해서, Floodlight와같은 SDN controller와 REST API를통해작용할수있는기능을갖춘 sflow 시스템을도입하여구축하였고, Openflow switch들에는 sflow agent가동작하도록하여, 관찰된 metric 값이모여질수있도록하였다. 다시 sflow collector에해당하는 sflow-rt로 metric 데이터가모이도록하여, XML로정의된 flow에대하여그값을구하고, 이를 Graphite 를통해나타날수있도록하였다. 본시스템은 Open Stack 등과같은가상화된도구를이용하여, SDN 위의각 VM node들이가상적으로연결되어있을때이를적절히모니터링하고자하는시스템이며, 이러한전체적이 procedure를소화할수있는시스템이구성되도록하였다. 현재작업상황은실험실내에서의자체테스트베드상에서구동하도록하고있고, Floodlight 등과같은 controller와의 interaction도앞으로구성해야할것이다. 향후개발작업을통해시스템을완성도있게개발하고, 앞으로동남아시아여러나라에구축되는각시스템에설치하여, OF@TEIN 망에서망사용자들이자신의 flowspace 내에서트래픽을관찰하거나, OF@TEIN 망운용자들이실질적으로 monitoring하는도구가되도록작업해나갈것이다. 46

[1] http://teincc.org/teincc/ [2] http://www.sflow.org/ [3] http://blog.sflow.com/ [4] http://graphite.wikidot.com/ [5] http://www.openstack.org/ [6] https://wiki.openstack.org/wiki/neutron [7] http://www.projectfloodlight.org/floodlight/ [8] https://openflow.stanford.edu/display/docs/flowvisor [9] http://en.wikipedia.org/wiki/representational_state_transfer 47

OF@TEIN sflow Traffic Monitoring 시스템구축및운용매뉴얼 l 제주대학교의확인과허가없이이문서를무단수정및배포하는것을 금지합니다. l 이문서의기술적인내용은 OF@TEIN 프로젝트의진행과함께별도의 예고없이변경될수있습니다. l 최신의정보로갱신된매뉴얼에대한정보와매뉴얼에대한문의사항 은아래의정보를참조하시길바랍니다. n n Homepage: ce.jejunu.ac.kr E-mail: laskkor26@gmail.com 작성기관 : 국립제주대학교 작성년월 : 2013/12 48