네트워크 프로세서

섬네일|Intel FWIXP422BB
**네트워크 프로세서**(network processor)는 네트워킹 애플리케이션 도메인을 특별히 겨냥한 기능 세트를 갖춘 집적 회로이다.

네트워크 프로세서는 일반적으로 소프트웨어 프로그래밍 가능 장치이며 다양한 유형의 장비 및 제품에 일반적으로 사용되는 범용 중앙 처리 장치와 유사한 일반적인 특성을 갖는다.

## 개발 역사
현대 통신 네트워크에서는 정보(음성, 비디오, 데이터)가 패킷 데이터로 전송(패킷 교환)된다. 이는 PSTN(공중 전화 교환망)이나 아날로그와 같이 정보를 아날로그 신호로 전달했던 기존 통신 네트워크와는 대조적이다. TV/라디오 네트워크. 이러한 패킷을 처리함으로써 이러한 형태의 패킷 데이터를 처리하도록 최적화된 집적 회로(IC)가 탄생했다. 네트워크 프로세서에는 이러한 네트워크 내에서 패킷 처리를 향상하고 최적화하기 위해 제공되는 특정 기능이나 아키텍처가 있다.

네트워크 프로세서는 특정 기능을 갖춘 IC로 진화했다. 이러한 발전으로 인해 더욱 복잡하고 유연한 IC가 탄생하게 되었다. 최신 회로는 프로그래밍이 가능하므로 단일 하드웨어 IC 설계가 적절한 소프트웨어가 설치된 경우 다양한 기능을 수행할 수 있다.

네트워크 프로세서는 다음과 같은 다양한 유형의 네트워크 장비 제조에 사용된다.
* 라우터, 소프트웨어 라우터, 스위치(네트워크간 프로세서)
* 방화벽
* 세션 구분 컨트롤러
* 침입 탐지 시스템
* 네트워크 모니터링 시스템
* 네트워크 보안

### 재구성 가능한 매치 테이블 (Reconfigurable Match-Tables)
재구성 가능한 매치 테이블(Reconfigurable Match-Tables, RMT)은 스위치에서 실행되는 네트워크 프로토콜이나 처리 방식에 대한 유연성을 유지하면서도 고속으로 작동할 수 있도록 2013년에 도입되었다. P4가 이 칩들을 프로그래밍하는 데 사용된다. 베어풋 네트웍스(Barefoot Networks)라는 회사가 이러한 프로세서를 중심으로 설립되었으며, 이후 2019년에 인텔에 인수되었다.
섬네일|RMP 파이프라인 설명
RMT 파이프라인은 세 가지 주요 단계인 프로그래머블 파서(parser), 매치-액션(Match-Action) 테이블, 그리고 프로그래머블 디파서(deparser)에 의존한다. 파서는 패킷을 청크(chunk) 단위로 읽고 이를 처리하여 해당 패킷에 어떤 프로토콜(이더넷, VLAN, IPv4...)이 사용되었는지 파악하며, 패킷의 특정 필드를 추출하여 패킷 헤더 벡터(PHV)에 저장한다. PHV의 특정 필드는 현재 헤더나 전체 패킷 길이와 같은 특수 용도로 예약될 수 있다. 프로토콜과 추출할 필드는 일반적으로 프로그래밍이 가능하다. 매치-액션 테이블은 입력 PHV를 읽고, 크로스바와 CAM 메모리를 사용하여 특정 필드를 매칭하는 일련의 유닛들이다. 그 결과는 PHV의 하나 이상의 필드에 작용하는 광범위한 명령어와 이 명령어를 지원하는 데이터가 된다. 출력 PHV는 다음 MA 단계나 디파서로 전송된다. 디파서는 PHV와 원본 패킷 및 메타데이터(PHV로 추출되지 않은 누락된 비트를 채우기 위해)를 가져와 수정된 패킷을 청크로 출력한다. 파서와 마찬가지로 일반적으로 프로그래밍이 가능하며 일부 설정 파일을 재사용할 수 있다.

FlexNIC는 이 모델을 네트워크 인터페이스 컨트롤러에 적용하여, 서버가 프로토콜 유연성을 유지하고 CPU 오버헤드를 증가시키지 않으면서 고속으로 패킷을 송수신할 수 있도록 시도한다.

## 일반 기능
패킷 프로세서로서의 일반적인 역할에서, 네트워크 프로세서에는 보통 다음과 같은 최적화된 기능들이 포함된다:

* 패턴 매칭 – 패킷 스트림 내의 패킷에서 특정 비트 또는 바이트 패턴을 찾아내는 능력.
* 키 조회 – 결과(일반적으로 라우팅 정보)를 찾기 위해 키(일반적으로 패킷의 주소)를 사용하여 데이터베이스 조회를 신속하게 수행하는 능력.
* 계산
* 데이터 비트필드 조작 – 패킷이 처리되는 동안 패킷에 포함된 특정 데이터 필드를 변경하는 능력.
* 큐 관리 – 패킷이 수신, 처리 및 전송 예약됨에 따라 큐에 저장된다.
* 제어 처리 – 패킷 처리의 미세 작업(micro operations)은 시스템의 다른 노드와의 통신 및 조정을 포함하는 거시적 수준에서 제어된다.
* 패킷 버퍼의 신속한 할당 및 재순환.

## 아키텍처 패러다임
높은 데이터 전송률을 처리하기 위해 몇 가지 아키텍처 패러다임이 일반적으로 사용된다:

* 프로세서의 파이프라인 - 파이프라인의 각 단계는 위에 나열된 기능 중 하나를 수행하는 프로세서로 구성된다.
* 종종 멀티스레딩을 포함하는 다수의 프로세서를 이용한 병렬 처리.
* 당면한 작업을 더 효율적으로 완수하기 위한 특화된 마이크로코드 엔진.
* 멀티코어 아키텍처의 등장으로 네트워크 프로세서는 상위 계층(L4-L7) 처리에 사용될 수 있다.

또한, L2-L3 네트워크 처리의 핵심 요소이며 과거에는 다양한 코프로세서에 의해 실행되었던 트래픽 관리가 네트워크 프로세서 아키텍처의 필수적인 부분이 되었으며, 실리콘 면적의 상당 부분이 통합 트래픽 매니저에 할당된다. 현대의 네트워크 프로세서는 코어 간의 작은 메시지(몇 개의 데이터 워드) 교환에 최적화된 저지연 고대역폭 온칩 상호 연결 네트워크도 갖추고 있다. 이러한 네트워크는 공유 메모리의 표준적인 사용 외에도 효율적인 코어 간 통신을 위한 대안 시설로 사용될 수 있다.

## 응용 분야
네트워크 프로세서의 일반적인 기능을 사용하여 소프트웨어 프로그램은 네트워크 프로세서가 실행하는 애플리케이션을 구현하며, 그 결과 물리적 장비가 작업을 수행하거나 서비스를 제공하게 된다. 네트워크 프로세서에서 실행되는 소프트웨어로 구현되는 일반적인 애플리케이션 유형은 다음과 같다:

* 패킷 또는 프레임 판별 및 포워딩, 즉 라우터 또는 스위치의 기본 동작.
* 서비스 품질(QoS) 보장 – 다양한 유형 또는 클래스의 패킷을 식별하고 다른 유형 또는 클래스의 패킷을 희생하면서 일부 유형 또는 클래스의 패킷에 우선 처리를 제공함.
* 액세스 제어 기능 – 특정 패킷 또는 패킷 스트림이 네트워크 장비를 통과하도록 허용할지 여부를 결정함.
* 데이터 스트림의 암호화 – 내장된 하드웨어 기반 암호화 엔진을 통해 프로세서가 개별 데이터 흐름을 암호화할 수 있음.
* TCP 오프로드 처리

## 같이 보기
* 멀티 코어
* 컴퓨터 공학
* 인터넷
* 대기행렬이론

## 각주

분류:임베디드 마이크로프로세서
분류:네트워크 하드웨어
분류:하드웨어 가속
분류:ASIC
분류:시스템 온 칩