[Tech Guide] 2.NPU 기반의 유해트래픽 방지시스템의 성능과 개발환경
상태바
[Tech Guide] 2.NPU 기반의 유해트래픽 방지시스템의 성능과 개발환경
  • 승인 2004.12.02 00:00
  • 댓글 0
이 기사를 공유합니다

연·재·순·서

1. 유해트래픽 방지를 위한 NPU 필요성
2. NPU 기반의 유해트래픽 방지시스템의 성능과 개발환경(이번 호)
3. NPU의 미래와 새로운 프로세서 대두

“하드웨어 사양에 대해
충분히 이해하라”

애플리케이션별 프로그래밍 모델 수립 중요 …
다양한 경우 고려한 설계 필수

한승철
지모컴 연구소 소장

지난 호에서는 대용량 인터넷 트래픽에서 유해트래픽 차단을 위한 NPU 필요성에 대해서 살펴봤다. 이번 호에서는 네트워크 프로세서(NPU)의 실제적인 패킷 처리 성능과 네트워크 프로세서 기반에서 프로그래밍하는 방법과 개발 환경에 대해서 알아보자. <편집자>

네트워크 프로세서의 성능을 측정하는 방법은 여러 가지가 있겠지만 여기서는 일반적인 성능 측정 방법인 쓰루풋(Throughput)과 레이턴시(Latency) 측정 자료를 중심으로 살펴보자.

NPU 성능

<그림 1>은 ‘이즈칩(EZchip) NP-1c’ 네트워크 프로세서의 성능 자료이다. 톨리그룹에서 제공하는 자료로 객관적인 측정 결과를 보여 준다.
톨리그룹에서는 IPv4, IPv6, MPLS 등의 다양한 패킷 사이즈, 제로(zero) 패킷 손실률에 대해서 와이어 스피드(wire-speed) 트래픽을 보냈을 때에 성능이 얼마나 되는지 측정했다. <그림 1>에서 보면 알 수 있듯이 다양한 패킷 사이즈에서도 고르게 동일한 성능이 나오는 것을 알 수 있다. 일반적인 프로세서를 사용한 장비는 일반적으로 작은 패킷 크기에서는 성능이 안 좋고 큰 패킷 크기에서는 좋은 성능이 나오지만 네트워크 프로세서는 패킷 입출력 성능이 매우 우수해 패킷 크기에 거의 영향을 받지 않는다.
톨리그룹에서는 IPv4, IPv6에 대해서 패킷 지연시간을 측정했다. 패킷 지연시간은 패킷을 한 포트에서 보내고 그것을 다른 포트에서 받아서 다시 보낸 포트로 패킷을 전송하는 경우에 지연된 시간을 측정한 것이다. 이즈칩의 경우 IPv4 트래픽을 전송대역 100%를 보냈을 때 측정한 경우 평균 2.83㎲이고, 최소 지연시간은 2.70㎲, 최대 지연시간은 3.28이다. IPv6 트래픽을 전송대역 100%를 보냈을 경우는 평균 2.68㎲이다.

<그림 3>은 쓰루풋과 지연시간을 측정하기 위해 구성한 테스트 베드 환경이다. 스마트 비트(SmartBits) 600장비에 2개의 기가 포트 모듈을 장착해 한 포트에서 다른 한 포트로 패킷을 주고 받는 시험을 할 수 있다.

<그림 4>의 그래프는 인텔 IXP2400 네트워크 프로세서의 성능 자료다. 톨리그룹에서 제공하는 자료로 객관적인 측정 결과를 보여 준다.
톨리그룹에서는 IPv6의 다양한 패킷 사이즈, 제로 패킷 손실률에 대해서 와이어 스피드 트래픽을 보내었을 때에 성능이 얼마나 되는지 측정했다. <그림 5>의 그래프에서 보면 알 수 있듯이 다양한 패킷 사이즈에서도 고르게 동일한 성능이 나오는 것을 알 수 있다.
톨리그룹에서는 IPv6에 대해서 패킷 지연시간을 측정했다. IPv6 트래픽을 전송대역 100%를 보냈을 때에 평균 56㎲이다.

<그림 6>은 위의 쓰루풋과 지연시간을 측정하기 위해 구성한 테스트 베드 환경이다. Ixia 1600 장비에 기가 두 포트 모듈을 장착해 한 포트에서 다른 한 포트로 패킷을 주고 받는 시험을 할 수 있다.

NPU 개발
네트워크 프로세서는 내부에 패킷 처리 엔진과 범용 프로세서 두 개의 코어가 내장돼 있다. 각각의 코어는 고속 네트워크 처리에 맞는 기능을 담당해 처리한다.
패킷 처리 엔진은 각 벤더마다 고유한 하드웨어 엔진을 개발해 사용하고 범용 프로세서는 일반적인 프로세서 코어(ARM, XScale, MIPS 등)를 사용한다. 하드웨어 기반으로 되어 있는 패킷 처리 엔진에는 일반적인 운영체제를 사용하지 않고 하드웨어에 맞게 개발된 언어 기반의 운영체제를 사용한다. 이러한 운영체제는 일반적인 운영체제에서 제공하는 기능들을 제공하지 않고 특수한 목적, 즉 고속 패킷 처리에 필요한 기능만을 제공한다. 이러한 기능에는 패킷 입출력을 위한 고속 패킷 버퍼링, 패킷 헤더 및 페이로드(payload) 분석, 해쉬, 고속 인덱싱 등이다.
범용 프로세서는 하드웨어 엔진에서 처리하는 고속 처리 부분 중 복잡한 처리와 하드웨어 제어 타 리소스와의 연동 등의 기능을 제공한다. 이러한 프로세서를 통해서 하드웨어 엔진에서 할 수 없는 여러 가지 기능을 처리할 수 있어 비로소 NPU는 네트워크 기능 등을 제대로 수행할 수 있게 된다.
네트워크 프로세서 기반에서 프로그램을 개발하기 위해서는 우선 선택한 네트워크 프로세서의 하드웨어 사양에서 대해서 충분하게 숙지해야 한다. 하드웨어 사양에 대해서 잘 알기 위해서는 각 벤더에서 제공하는 하드웨어 관련 매뉴얼을 읽도록 한다. 하드웨어 관련한 내용은 프로세서뿐만 아니라 프로세서와 인터페이스하는 디바이스 MAC, PCI 칩 등 관련 내용도 확실하게 숙지하고 있어야 한다.
향후에 벤더가 제공하는 드라이버 외에 추가로 드라이버를 제작하는 경우에 필요로 할 뿐만 아니라 기본으로 제공되는 드라이버를 사용해 디버깅하는 경우에도 반드시 필요하다. 아직 네트워크 프로세서는 범용 프로세서처럼 많은 개발자가 다루지 않고 있고 다루더라도 회사에서 소수의 개발자만이 개발하기 때문에 벤더의 드라이버의 안정성은 실제로 여러 방법으로 시험해 보지 않는 한 검증할 수 없다. 개발한 제품을 네트워크 환경에 적용시키기 위해서는 네트워크에서 사용되는 각각의 기능을 여러 가지 방법으로 장기간 시험을 해야만 한다.
네트워크 프로세서가 거의 알려지지 않았을 무렵에 인텔IXP 네트워크 프로세서와 인연을 갖고 제품 개발을 해왔는데, 초창기의 제품이다 보니 개발하는데 있어서 여러 가지면으로 어려운 점이 많았다. 이러한 문제점들을 극복하고 시장에 제품을 내놓기까지 수많은 어려움이 있었고 현재 나오는 네트워크 프로세서는 이러한 어려움의 많은 부분이 해결돼 다행이라고 생각된다. 앞으로의 NPU 개발 방법에 대해서는 주로 IXP 2400 네트워크 프로세서를 개발과 관련된 것을 위주로 설명하려고 한다.
사용자가 개발하려고 하는 애플리케이션에 따라 전체적인 프로그래밍 모델을 세우는 것이 무엇보다도 중요하다. 초기에 이러한 구조를 잡지 못하면 개발하면서 수없이 수정을 해야 하므로 가능하면 많은 경우를 생각해 설계를 하기 바란다.
저자의 경우는 네트워크 프로세서를 네트워크 보안 솔루션에 적용시켰기 때문에 많은 보안작업을 고속으로 처리하기 위한 구조를 만들어 프로그래밍했다. 예를 들어 보안 작업에는 네트워크 주소변환(Network Address Translation), 상태검사(Stateful Inspection), 레이어 4 필터링, 접근통제, 레이어 7 필터링, Dos/DDoS 차단 등이 있다. 일반적으로 네트워크 프로세서는 네트워크 장비에 사용되는 경우가 대부분이기 때문에 이것에 대한 참조 소스를 구하기는 어려울 것이다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.