본문 바로가기

카테고리 없음

네트워크 트래픽 분석 기술, NetFlow 소개와 활용

[출처 : http://helloworld.naver.com/helloworld/textyle/310727]


NetFlow는 Cisco Systems가 개발한 네트워크 프로토콜로, 누가 언제 어디서 무엇을 어떻게 하는 데에 네트워크를 사용하는지에 관한 정보를 제공합니다. 이와 같은 정보를 분석하면 장애를 유발할 수 있는 네트워크 취약점을 파악하여 장애를 예방할 수 있으며 효율적으로 네트워크를 운영할 수 있습니다. 이는 곧 비용 절감과 수익 향상으로 이어집니다.

10여 년 전에 발표된 이 기술이 요즘 더욱 각광을 받는 것은 최근 급변하는 IT 환경 때문입니다. 사용자는 모바일로 급속히 옮겨가고 서버에는 가상화와 클라우드가 도입되면서, 어떤 애플리케이션이 얼마만큼의 트래픽을 발생하는지 분석할 필요성이 생겼습니다. 또한 전통적인 데이터에 영상과 음성이 통합되면서 통신 품질을 보장하기 위해 더 높은 네트워크 효율에 대한 요구가 증가하고 있습니다.

이 글에서는 네트워크가 어떻게 사용되고 있는지 보여 줄 수 있는 중요한 기술인 NetFlow를 소개합니다.

전통적인 SNMP 성능 모니터링

전통적으로는 네트워크를 모니터링할 때 전적으로 SNMP(Simple Network Management Protocol)에 의존했다. SNMP를 이용하면 특정 구간의 트래픽이 얼마나 되는지, 특정 스위치의 트래픽이 얼마나 되는지에 대한 실시간 데이터를 <그림 1>과 같이 bps(bits per second) 단위로 볼 수 있다.

a72fa7c2ba4ef02819d089dda422966d.png

그림 1 네트워크 모니터링 그래프

그런데 어디에서 이런 트래픽이 시작되는지, 어떤 애플리케이션이 사용하는지 또는 특정 소스에서 어느 정도의 대역폭을 사용하는지와 같은 정보를 알고 싶은 때가 있다. 이런 정보는 SNMP를 이용한 모니터링만으로 알 수 없다. 물론 모든 패킷을 분석하면 가능하지만, 10Gbps 이상의 트래픽을 실시간으로 분석하려면 리소스가 너무 많이 필요하다.

그래서 흐름(flow)이라는 개념이 사용된다. RFC 3917에서는 흐름을 "특정 시간 동안 네트워크상의 지정된 관찰 지점을 지나가는 패킷의 집합"이라고 정의한다. 간단히 이야기하면 흐름이란 패킷의 출발지와 목적지 정보 등을 가진 데이터라고 할 수 있다.

SNMP는 트래픽 정보를 실시간으로 제공할뿐 아니라 네트워크 장비의 CPU와 메모리 사용량도 제공한다(NetFlow는 IP 흐름의 시작 시간과 종료 시간을 제공하지만 SNMP와 같은 수준의 실시간 데이터를 제공하지는 못한다). 이처럼 SNMP의 장점도 있지만 트래픽의 특성을 파악하기에는 부족하다. 따라서 더 많은 정보를 갖고 있는 NetFlow를 사용하여 IP 흐름의 특성을 파악하는 것을 권장한다.

네트워크 상황 분석을 위한 NetFlow

네트워크 흐름이 어디에서 어디로 어떻게 가는지를 이해하고 분석하는 것은 네트워크 성능에 매우 중요하다. 흐름을 분석하면 더 정확하게 네트워크 장비의 용량을 산정할 수 있으며, 목적에 따라 QoS(Quality of Service)를 적절히 적용하여 네트워크 리소스 사용을 최적화할 수 있다. 또한 네트워크 흐름을 분석한 정보는 보안적인 측면에서 DoS(Denial of Service)와 네트워크에서 생성되는 웜(worm) 등 여러 보안 위협을 탐지하는 데 중요한 역할을 한다.

f68bd24dcefc3de1283f117b7f90bd8a.png

그림 2 NetFlow 구조(이미지 출처: http://en.wikipedia.org/wiki/Netflow)

NetFlow는 IT 인프라에서 발생하는 여러 문제를 해결하는 데 다음과 같은 도움을 준다.

  • 새로운 애플리케이션이 유발하는 네트워크 변화 분석
    VoIP나 원격지의 상황 변화와 같은 새로운 네트워크 환경을 분석한다.
  • WAN 통신 사용량 최대값 감소
    네트워크 사용량이 많은 애플리케이션을 분석하고, 애플리케이션 정책 변경에 따른 WAN 통신 영향을 측정한다.
  • 네트워크 구성의 취약점 파악 및 문제 해결
    네트워크 사용이 많은 지점(hog)이 있거나 네트워크 성능이 낮을 때 명령어 인터페이스(CLI, Command Line Interface)나 리포트 도구를 사용해서 원인을 진단한다.
  • 권한 없는 WAN 통신 탐지
    네트워크 폭주를 유발하는 애플리케이션을 구별함으로써 네트워크 효율성을 높여 비용을 절감한다.
  • 비정상적인 활동 탐지 및 보안
    비정상적인 활동 탐지와 웜 분석에 사용할 수 있다.
  • QoS 매개변수 유효성 검사
    각 CoS(Class of Service)에 적절한 대역폭이 할당되어 있는지, 대역폭이 너무 크거나 작게 할당되는 경우는 없는지 확인한다.

NetFlow의 네트워크 흐름 분석

스위치나 라우터를 통하는 패킷들은 IP 패킷 속성으로 구분할 수 있다. 이런 속성은 IP 패킷의 지문 또는 신분증과 같으며, 패킷이 새로운 것인지 아니면 다른 것과 비슷한 것인지를 구분한다.

전통적으로 IP 흐름 분석은 IP 패킷 속성 중 5개에서 많게는 7개의 속성을 기반으로 한다. NetFlow가 사용하는 IP 패킷의 속성은 다음과 같다.

  • 출발지 IP 주소
  • 목적지 IP 주소
  • 출발지 포트
  • 목적지 포트
  • 레이어 3 프로토콜
  • CoS(Class of Service)
  • 라우터 또는 스위치 인터페이스

출발지/도착지 IP 주소, 포트, 프로토콜 인터페이스, CoS가 같은 패킷은 하나의 흐름으로 묶인다. 그리고 하나로 묶은 흐름의 패킷과 바이트는 더한다. 이렇게 수집된 대용량의 네트워크 정보는 NetFlow 캐시라고 불리는 NetFlow 데이터베이스에 저장되므로 추후에 쉽게 확장 가능하다.

ff282dde1abf3b37dd0842073b55037b.png

그림 3 NetFlow 캐시에서 Flow 생성(이미지 출처:http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6555/ps6601/prod_white_paper0900aecd80406232.html)

이 흐름은 네트워크 현황을 이해하는 데 매우 유용하다.

  • 누가 트래픽을 시작했는지 출발지 주소로 알 수 있다.
  • 누가 트래픽을 받는지 목적지 주소로 알 수 있다.
  • 어떤 애플리케이션이 트래픽을 얼마나 어떻게 사용하는지 포트 정보로 알 수 있다.
  • CoS로 트래픽의 우선순위를 확인하여 통신 품질을 보장할 수 있다.
  • 네트워크 장비가 어떻게 트래픽을 사용하는지 인터페이스 정보로 알 수 있다.
  • 누적된 패킷과 바이트 수로 트래픽의 양을 알 수 있다.

NetFlow의 데이터 접근 방법

NetFlow의 데이터에 접근하는 방법은 기본적으로 크게 두 가지이다. 명령어 인터페이스와 리포트 도구이다. 즉각적으로 네트워크 현황을 파악해야 한다면 NetFlow CLI(Command Line Interface)를 사용하면 된다. CLI는 문제 해결에 매우 유용하다.

또는 NetFlow 정보를 "NetFlow collector"라 불리는 원격 서버로 보낼 수 있다. NetFlow collector는 전송된 흐름 정보를 수집, 분석하고 종합하여 트래픽과 보안 정보를 분석한다. SNMP polling과는 달리, NetFlow export는 정기적으로 NetFlow collector에 정보를 푸시한다. 일반적으로 NetFlow 캐시는 지속적으로 흐름 정보를 저장하고, 스위치나 라우터는 NetFlow 캐시에서 종료되거나 소멸된 흐름 정보를 찾아서 NetFlow collector 서버로 보낸다. 네트워크 통신이 끝나면 TCP 통신에서는 TCP FIN 플래그를 받으면서 흐름이 종료된다.

NetFlow 정보 리포트 기능을 구현하려면 다음 단계를 따른다.

  1. NetFlow는 흐름을 캡처하여 NetFlow 캐시에 흐름 정보를 저장하도록 설정한다.
  2. NetFlow export는 Collector로 흐름 정보를 보내도록 설정한다.
  3. NetFlow export는 NetFlow 캐시에서 종료된 흐름 정보를 찾아서 NetFlow collector로 전송한다.
  4. 약 30에서 50개의 흐름 정보가 묶여서 UDP 형식으로 NetFlow collector 서버에 전송된다.
  5. NetFlow collector 소프트웨어는 수집한 데이터로 실시간 또는 통계 리포트를 생성한다.

45900aa214ea95bae92d68c7ddd1b458.png

그림 4 NetCache의 데이터 흐름(이미지 출처:http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6555/ps6601/prod_white_paper0900aecd80406232.html)

흐름 정보 전송 시기 결정

특정 시간 동안 새로운 패킷이 도착하지 않거나 흐름이 타이머보다 더 오래 지속되었을 때, 또는 TCP 플래그가 흐름 종료를 알려주었을 때(FIN, RST 플래그) 흐름 정보는 NetFlow collector로 전송될 준비가 된다. 흐름이 비활성 상태인지 또는 너무 오래 지속되었는지 측정하는 타이머가 있는데, 비활성 흐름 타이머의 초기값은 15초이고 활성 흐름 타이머의 초기값은 30분이다.

NetFlow collector는 흐름을 합치고 트래픽을 모을 수 있다. 예를 들어, 활성 흐름 타이머보다 길게 지속되는 FTP 다운로드는 여러 개의 흐름으로 나뉘어 전송될 수 있으며, NetFlow collector는 해당 흐름을 모아서 특정 시간 동안의 FTP 통신 트래픽을 보여줄 수 있다.

흐름의 export 데이터 형식

일반적으로 export version이라고 불리는 여러 종류의 export packet 형식이 있다. 이 export version에는 version 5, 7, 9 등이 있는데 가장 많이 사용하는 것은 NetFlow export version 5이다. version 9가 가장 최근의 형식이며, 보안, 트래픽 분석, 멀티캐스트 등에서 이점이 있다.

NetFlow의 발달

NetFlow의 발달은 캐싱 기술의 발달과 함께했다. NetFlow를 사용하려는 많은 시도가 있었지만, 몇 해 전까지만 해도 NetFlow 설정 때문에 과도한 NetFlow 캐싱을 수행하여 스위칭 역할까지 제대로 수행하지 못하는 경우도 있었다. 최근에는 NetFlow 기술이 많이 안정화되었고, 트래픽 분석과 트래픽 통신을 아무런 문제없이 동시에 수행하는 많은 장비가 있다.

Cisco Systems는 NetFlow의 업그레이드 버전인 Flexible NetFlow까지 선보여 더 정확한 분석을 가능하게 했다. 최근에는 많은 Network 장비 벤더에서 NetFlow와 유사한 기술인 SFlow, CFlow를 지원하는 장비를 판매하고 있다.

마치며

인터넷 초창기에는 네트워크상에서 대역폭이 얼마나 사용되고 있는지만 알아도 충분했지만 요즘은 그것만으로 충분하지 않다. 왜냐하면 네트워크가 거의 항상 사용되고 있어 단순 대역폭 사용량만으로는 네트워크 현황이나 문제점을 분석할 수 없기 때문이다. 그래서 지금은 네트워크에서 애플리케이션들이 어떻게 동작하는지를 이해하고, 누가 대역폭을 얼마나 사용하고 무엇을 하며 네트워크 상황 변화가 어떤 영향을 미치는지를 파악할 수 있어야 한다.

NetFlow는 네트워크가 어떻게 사용되고 있는지 보여줄 수 있는 매우 중요한 기술이다. 네트워크 상황을 명확하고 분명하게 분석하는 것이 지금처럼 중요한 적은 없었다. 현재 인프라솔루션개발랩에서는 NetFlow 기술을 이용한 모니터링 솔루션을 개발하고 있으며, 이는 전세계에서 사용하는 NHN 서비스를 더 상세히 모니터링하여 서비스의 안전성에 큰 기여를 할 수 있을 것이라 믿는다. 새로운 모니터링 솔루션이 서비스 개발자들에게 많은 도움이 되었으면 한다.

참고자료

  1. Introduction to Cisco IOS NetFlow:http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6555/ps6601/prod_white_paper0900aecd80406232.html
  2. Designing Cisco Network Service Architectures (ARCH) Foundation Learning Guide: (CCDP ARCH 642-874), Third Edition
  3. NetFlow Application: http://netflow.caligare.com/applications.htm
  4. NetFlow Analyzer: http://www.manageengine.com/products/netflow/
  5. Wikipedia+NetFlow: http://en.wikipedia.org/wiki/Netflow


[출처 : http://helloworld.naver.com/helloworld/textyle/310727]