KR20120072038A - 패킷처리 장치 및 방법 - Google Patents

패킷처리 장치 및 방법 Download PDF

Info

Publication number
KR20120072038A
KR20120072038A KR1020100133802A KR20100133802A KR20120072038A KR 20120072038 A KR20120072038 A KR 20120072038A KR 1020100133802 A KR1020100133802 A KR 1020100133802A KR 20100133802 A KR20100133802 A KR 20100133802A KR 20120072038 A KR20120072038 A KR 20120072038A
Authority
KR
South Korea
Prior art keywords
packet
memory
processor
interface
command
Prior art date
Application number
KR1020100133802A
Other languages
English (en)
Inventor
박상길
김상완
이왕봉
윤상식
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020100133802A priority Critical patent/KR20120072038A/ko
Priority to US13/334,764 priority patent/US20120163392A1/en
Publication of KR20120072038A publication Critical patent/KR20120072038A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 특정 회사의 네트워크 프로세서 유닛(NPU)에서 제공되지 않는 신호를 갖는 경우 현장 프로그래머블 게이트 어레이(FPGA)에 구현하는 브리징 알고리즘을 통하여 빠른 시간 안에 제품을 만들어 낼 수 있다.

Description

패킷처리 장치 및 방법{Apparatus and method for processing packet}
본 발명은 네트워크 기능을 제공하는 하드웨어 장치에 관한 것으로, 보다 상세하게는 네트워크 프로세서 유닛이 제공하는 메모리 인터페이스(RLDRAM Interface : Reduced Latency Dynamic Random Access Memory Interface)를 통하여 터너리 캠(TCAM : Ternary Contents Addressable Memory)을 중재하는 기능을 갖는 패킷처리 장치 및 방법에 관한 것이다.
네트워크를 서비스하는 망 사업자의 수익관계는 더 이상 좋아지지 않으나, 네트워크 트래픽의 양은 스마트폰 등 Wi-Fi 기능을 갖는 hand-held 장비의 증가로 인하여 기하급수적으로 증가하고 있다.
이러한 네트워크 환경에서 망 사업자는 한정된 네트워크 파이프(대역폭)를 통하여 불특 정 다수의 트래픽에 대하여 네트워크 품질(QoS : Quality of Service)을 제공하여야 한다.
이러한 경우 망 사업자와 서비스 제공업자간의 합의에 의하여 경비를 분담하면 좋겠지만, 실상은 그러하지 못하여 망 사업자는 금전적인 이득이 없는 상태에서도 지속적인 네트워크 인프라를 증설하여야 한다.
이러한 현실에서 10 기가 이더넷(10GbE)을 통하여 고속의 서비스를 제공하는 네트워크에 설치되어 서비스를 효율적으로 제공하는 네트워크 장비 또는 기법이 필요하게 되었다.
현재 네트워크 장비는 스위치, 라우터, 특화된 기능을 갖는 in-line 장비, 보안장비 등이다. 이러한 장비는 하드웨어(Hardware)로서 목적한 기능을 제공하기 위해 주문형 반도체(ASIC : Application Specific Integrated Chip), 현장 프로그래머블 게이트 어레이(FPGA : Field Programmable Gate Array), 네트워크 프로세서 유닛(NPU : Network Processor Unit), 멀티-코어 프로세서 또는 메니-코어 프로세서(Multi-core Processor, Many-Core Processor)에 특정의 기능을 구현한다.
이러한 경우 현장 프로그래머블 게이트 어레이(FPGA)의 경우 외부의 칩(chip)과의 새로운 인터페이싱이 요구되는 경우, 현장 프로그래머블 게이트 어레이(FPGA) 프로그래밍에 의해 요구되는 새로운 인터페이스를 구현하여 제공할 수 있다.
현장 프로그래머블 게이트 어레이(FPGA)를 제외한 ASIC, NPU, 코어 기반 프로세서는 칩(Chip)을 제조한 회사에서 사전에 정의하여 구현된 인터페이스 이외의 인터페이스를 사용하기 위해서는 프로그래머블 게이트 어레이(FPGA) 등을 이용하여 ASIC, NPU 등의 특정 인터페이스와 상이한 새로운 chip이 제공하는 인터페이스를 중재하는 신호 중재기능(Bridging)을 구현하여야 한다.
본 발명은 수정이 불가능한 2개의 Chip을 중재하기 위한 브리징 역할을 하는 프로그래머블 게이트 어레이(FPGA)를 제공한다.
본 발명은 ASIC을 수정하여 다시 칩을 제조하는 고가의 프로세스를 통하지 않고 새롭게 인터페이싱 하기를 원하는 칩과의 시그널 인터페이스를 제공한다.
본 발명은 특정 회사의 네트워크 프로세서 유닛(NPU)에서 제공되지 않는 신호를 갖는 경우 프로그래머블 게이트 어레이(FPGA)에 구현하는 브리징 알고리즘을 통하여 빠른 시간 안에 제품을 만들어 낼 수 있다.
본 발명의 일 양상에 따른 상이한 인터페이스를 중재하는 패킷처리 장치는 네트워크에서 패킷을 처리하는 프로세서, 네트워크에서 패킷 매칭을 위한 테이블을 보유하는 메모리 및, 프로세서 및 메모리의 서로 상이한 인터페이스를 중재하여 프로세서 및 메모리 간의 통신가능한 인터페이스를 제공하는 게이트 어레이를 포함할 수 있다.
또한, 프로세서는 주문형 반도체(Application Specific Integrated Chip), 네트워크 처리 유닛(Network Processor Unit), 멀티코어 프로세서(Multi-core Processor), 메니-코어 프로세서(Many-Core Processor) 중 어느 하나에 해당하며, 사전에 정의하여 구현된 인터페이스만을 사용한다.
또한, 메모리는 또는 3계층 스위치에서 IP 주소 검색의 을 저장하는 터너리 캠(Ternary Content Addressable Memory)인 것이다.
또한, 게이트 어레이는 프로그래밍에 의해 프로세서와 메모리 간의 인터페이스를 제공하는 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array)인 것이다.
또한, 게이트 어레이는 프로세서의 인터페이스 및 메모리의 인터페이스를 통한 신호를 송수신하여 처리하고, 프로세서의 명령에 따라 메모리를 제어한다.
또한, 프로세서와 연결되어, 외부로부터 수신되는 패킷을 수신하거나 프로세서에서 처리된 패킷을 외부로 송신하는 트래픽 인터페이스를 더 포함할 수 있다.
또한, 트래픽 량을 포함하는 네트워크의 특성에 따라 트래픽 인터페이스를 하나 이상 포함한다.
본 발명의 다른 일 양상에 따른 상이한 인터페이스를 중재하는 패킷처리 방법은 네트워크 장치 상에서 프로세서 및 메모리의 서로 상이한 인터페이스를 중재하여 통신가능한 인터페이스를 제공하는 게이트 어레이를 통한 패킷처리 방법에 있어서, 외부로부터 패킷을 입력받는 단계, 패킷에 대한 MAC 어드레스 매칭을 수행하는 단계, 매칭 결과, 패킷에 대한 만족하는 MAC 어드레스가 존재하지 않는 경우 패킷을 파싱하는 단계, 패킷의 헤더필드를 이용하여 검색키(search key)를 생성하여 메모리를 검색하는 단계, 메모리에서 반환하는 인덱스(Rule Index)를 이용하여 메모리 상의 테이블을 룩업하는 단계 및 룩업된 메모리 값에 따라 패킷을 처리하는 단계를 포함할 수 있다.
또한, 매칭 결과, 패킷에 대한 만족하는 MAC 어드레스가 존재하는 경우 MAC 어드레스에 대한 기설정된 대응행위에 따라 패킷을 처리하는 단계를 더 포함할 수 있다.
또한, 메모리에서 반환하는 인덱스(Rule Index)가 존재하지 않는 경우, 패킷에 대해 유출 패킷 처리(Egress Packet Control)를 수행하는 단계를 더 포함할 수 있다.
또한, 패킷을 처리하는 단계는 룩업된 메모리 값에 따라, 패킷을 폐기(discard) 또는 리다이렉트(redirect), 메모리에 저장하거나, 패킷에 대해 유출 패킷 처리(Egress Packet Control)를 수행한다.
본 발명의 또 다른 일 양상에 따른 상이한 인터페이스를 중재하는 패킷처리 방법은 네트워크 장치 상에서 네트워크 처리 유닛(Network Processor Unit) 및 터너리 캠(Ternary Content Addressable Memory)의 서로 상이한 인터페이스를 중재하여 통신가능한 인터페이스를 제공하는 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array)를 통한 패킷처리 방법에 있어서, 네트워크 처리 유닛(NPU)로부터 전달받은 패킷의 MAC 어드레스와 데이터에 대한 명령을 특정 포맷을 기초로 해석하여 현장 프로그래머블 게이트 어레이(FPGA)의 명령큐(Instruction Queue)에 저장하는 단계, 명령큐에 저장된 명령을 명령이 지시하는 목적에 따라 현장 프로그래머블 게이트 어레이(FPGA)의 신호중재블록(signal bridging block) 또는 터너리 캠(TCAM) 인터페이스로 전달하는 단계, 명령이 신호중재블록에 전달된 경우, 신호중재블록 내의 특정 레지스트리 값을 반환받아 현장 프로그래머블 게이트 어레이(FPGA)의 결과큐(Result Queue)에 저장하는 단계, 명령이 터너리 캠 인터페이스로 전달된 경우, 명령을 상기 터너리 캠 명령으로 변환하여 터너리 캠에 접속하여 명령에 대한 레지스트리 값, 데이터 값 또는 비교검색 값을 반환받아 현장 프로그래머블 게이트 어레이(FPGA)의 결과큐(Result Queue)에 저장하는 단계 및 결과큐에 저장된 값을 네트워크 처리 유닛(NPU)으로 전달하는 단계를 포함할 수 있다.
또한, 네트워크 처리 유닛(NPU)으로부터 패킷을 전달받거나 결과큐에 저장된 값을 네트워크 처리 유닛(NPU)으로 전달할 경우, 현장 프로그래머블 게이트 어레이(FPGA)의 인터페이스를 통하여 기설정된 포맷으로 변환하는 단계를 더 포함할 수 있다.
본 발명은 네트워크 프로세서 유닛(NPU) 등을 이용하여 네트워크에 대한 패킷정보를 처리하는 카드 등에서 터너리 캠(TCAM)의 빠른 패킷 매칭(Packet Matching)을 통한 고속의 패킷에 대한 분류를 손쉽게 할 수 있다.
또한, 관심있는 패킷을 선별하여 추가적인 패킷의 페이로드 조회, 특정 프로토콜의 분석 등을 자동화하는 기능을 구현하는 네트워크 프로세서 유닛(NPU)을 제공할 수 있다.
본 발명은 사용하고자 하는 특정의 터너리 캠(TCAM)에 대한 인터페이스를 제공하지 않는 경우에 현장 프로그래머블 게이트 어레이(FPGA)를 이용하여 고속의 패킷분류를 가능하게 한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 서로 상이한 인터페이스 간 중재기능을 갖는 패킷처리 장치를 나타낸 블록도이다.
도 2는 본 발명의 바람직한 일 실시예에 따른 서로 상이한 인터페이스 간의 패킷을 처리하는 과정을 나타낸 흐름도이다.
도 3은 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 구성별로 패킷을 처리하는 과정을 나타낸 도면이다.
도 4는 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 현장 프로그래머블 게이트 어레이(FPGA)에 사용되는 읽기(read), 쓰기(write)신호를 나타낸 테이블이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 현장 프로그래머블 게이트 어레이(FPGA)에 사용되는 주소기반 명령어를 나타낸 테이블이다.
도 6은 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 현장 프로그래머블 게이트 어레이(FPGA)에 의해 서로 상이한 인터페이스 간 읽기(read), 쓰기(write)를 수행하는 과정을 나타낸 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 서로 상이한 인터페이스 간 중재기능을 갖는 패킷처리 장치를 나타낸 블록도이다. 도 1을 참조하면, 패킷처리 장치(100)는 인터페이스(101), 프로세서(102), 현장 프로그래머블 게이트 어레이(FPGA) (103), 메모리(104)를 포함할 수 있다.
프로세서(102)는 네트워크에서 패킷을 처리하고, 메모리(104)는 네트워크에서 패킷 매칭을 위한 테이블을 보유한다.
또한 현장 프로그래머블 게이트 어레이(FPGA)(103)는 프로세서(102) 및 메모리(104)의 서로 상이한 인터페이스를 중재하여 프로세서(102) 및 메모리(104) 간의 통신가능한 인터페이스를 제공한다.
패킷처리 장치(100)는 2개의 하드웨어 칩(102, 104))간에 인터페이스가 존재하지 않는 경우, 현장 프로그래머블 게이트 어레이(FPGA)(103)는 프로세서(102)의 인터페이스 및 메모리(104)의 인터페이스를 모두 송신 및 수신한다.
또한, 현장 프로그래머블 게이트 어레이(FPGA)(103)는 프로세서(102)의 인터페이스와 메모리(104)의 인터페이스를 모두 인지가능하며, 프로세서(102)의 신호에 따라 메모리(104)를 제어하기 위한 신호를 변환/관리/구동하는 역할을 수행한다.
패킷처리 장치(100)가 PCI() 타입 또는 어플라이언스(appliance) 또는 블레이드에 장착된 카드의 경우 네트워크 인터페이스(101)가 장착되어 있으며, 네트워크 인터페이스(101)를 통하여 패킷의 송신(Tx), 수신(Rx)을 제공한다.
도 2는 본 발명의 바람직한 일 실시예에 따른 서로 상이한 인터페이스 간의 패킷을 처리하는 과정을 나타낸 흐름도이다. 도 2는 도 1에 도시된 패킷처리 장치(100)에서 패킷을 처리하는 과정을 설명한다.
먼저, 패킷처리 장치(100)는 트래픽 인터페이스(101)을 통해 패킷을 입력받는다(201). MAC 주소(MAC address)에 기반한 패킷에 대한 대응을 하기 위해 MAC 주소 매칭(MAC Address Matching)을 수행한다(202).
MAC 주소 매칭 결과, 패킷에 대한 만족하는 MAC 어드레스가 존재하는 경우 사전에 정해진 대응행위를 수행(패킷 처리)한다(203).
또한, 매칭결과가 패킷에 대한 만족하는 MAC 어드레스가 존재하지 않는 경우 패킷을 구분하기 위해 패킷을 파싱한다(204).
파싱된 패킷의 근원지 주소, 목적지 주소, 프로토콜, 근원지 포트, 목적지 포트 등 패킷의 헤더 내용 중 구분을 할 수 있는 필드를 이용하여 TCAM과 같은 메모리(104)를 조회한다. 여러 가지 사전에 정리한 헤더필드를 이용하여 메모리(104)를 사용하기 위해 사전에 정의한 필드값에 일치하는 헤더필드의 값을 이용한 검색키(Search Key)를 생성한다(206).
이러한 검색키(Search Key)를 이용하여 메모리(104)를 검색한다(206). 메모리(104)의 검색 결과가 메모리(104)에서 반환하는 인덱스(Rule Index)가 존재하는 경우 메모리(104)가 반환해 주는 인덱스(Rule Index)를 기반으로 메모리를 룩업(Lookup)한다(207).
이러한 메모리(104)에는 패킷의 대응 결과를 사전에 정의하여 사용한다. 인덱스(Rule Index)에 해당하는 메모리의 값(209)에 의해 패킷의 대응행위를 사전에 정의된 결과를 적용할 수 있다(210,211,212,213).
메모리(104)의 검색 결과가 메모리(104)에서 반환하는 인덱스(Rule Index)가 존재하지 않는 경우(206) 현재의 패킷을 전송하기 위해 유출 패킷 처리(Egress Packet Control)를 수행하기 위한 AsyncFIFO와 같은 곳으로 전송(복사)한다(208).
도 3은 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 구성별로 패킷을 처리하는 과정을 나타낸 도면이다.
도 3은 도 1의 패킷처리 장치(100)의 프로세서(102)는 패킷처리 코어(310)로, 메모리(104)는 터너리 캠(TCAM, 340), 현장 프로그래머블 게이트 어레이(FPGA)(103)는 FPGA(330)로 구현하여 패킷을 처리하는 과정을 나타낸 것이다.
다시 말해, 도 3은 프로세서(102)가 FPGA가 아닌 상황에서 프로세서(102)와 인터페이스가 일치하지 않는 외부의 Co-processor인 메모리(104), 특히 TCAM(340)을 인터페이스 하기 위한 절차를 기술한 것이다.
또한, 프로세서(102)가 OCTEON 코어(310)인 경우 SDK(Software Development Kit)에서 제공하는 RLDRAM 인터페이스(320)를 이용하여 TCAM(340))을 사용하기 위해 FPGA(330)를 적용하는 패킷처리 장치에서 상이한(Heterogeneous)한 신호를 인터페이싱하기 위한 것이다.
도 3은 네트워크 프로세서 유닛(NPU)인 OCTREON 코어(310)이 내부의 RLDRAM 인터페이스(320)를 이용하여 FPGA(330)의 내부 레지스터에 접근하거나, TCAM(340)을 사용하고자 하는 명령을 수행할 수 있다.
패킷이 네트워크 인터페이스(101)를 통하여 OCTEON 코어(310)에 유입되면, 패킷의 데이터를 파싱하고, 파싱된 헤더필드의 값을 이용하여 TCAM(340)을 검색하기 위한 검색키를 생성하여 사용하고자 LLM Bus(311)와 I/O 버스(312)에 적정한 값을 생성하여 RLDRAM 인터페이스(320)를 이용하여 전송한다.
RLDRAM Interface(320)에서 제공하는 Address Bus(321)의 특정 영역의 값을 이용하여 FPGA(330)와 TCAM(340)에 사용하기 위한 명령을 Address Bus(321)의 주소기반 명령어를 적용하고 Instruction Bus(332)를 이용하여 FPGA(330)에게 전달하고, 패킷은 Data Bus(322) 및 Data Bus(331)를 이용하여 TCAM(340)에게 전달한다.
기타 표시된, 버스에 대한 설명은 다음과 같다.
Address Bus(341)는 TCAM(340)가 출력하는 패턴 매칭(Pattern Matching) 결과를 보여주는 신호이다.
DPR(342)은 TCAM(340))가 출력하는 Data Parity Error 신호이다.
또한, QK(333)는 FPGA(330)가 OCTEON 코어(310)으로 출력하는 클럭(Clock)으로서 FPGA(330)가 OCTEON 코어(310)의 읽기(Read) 명령에 따라, 데이터를 출력할 때 동기화되는 클럭(Clock)신호이다.
Data Bus(334)는 FPGA(330)가 OCTEON 코어(310)로 출력하는 데이터 신호이다.
이러한 과정으로 통하여 OCTREON 코어(310)는 FPGA(330)에 접근하거나, FPGA(330)을 통하여 TCAM(340)을 접근(read, write, search)한다.
도 4는 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 현장 프로그래머블 게이트 어레이(FPGA)에 사용되는 읽기(read), 쓰기(write)신호를 나타낸 테이블이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 현장 프로그래머블 게이트 어레이(FPGA)에 사용되는 주소기반 명령어를 나타낸 테이블이다.
현장 프로그래머 게이트 어레이(FPGA)에게 전달되는 주소기반 명령어 생성은 도 4및 도 5와 같은 테이블을 이용하여 적용할 수 있다.
도 4를 살펴보면, 도 3에 도시된 Address Bus(321)의 값에 의해서 FPGA(330)에 대한 Read, 1st Write, 2nd Write, Read & Write명령을 생성할 수 있다.
또한, 도 5를 살펴보면, RLDRAM Address[20:19]의 값에 따라 명령어를 분기하고 있음을 알 수 있다.
도 6은 본 발명의 바람직한 일 실시예에 따른 패킷처리 장치의 현장 프로그래머블 게이트 어레이(FPGA)에 의해 서로 상이한 인터페이스 간 읽기(read), 쓰기(write)를 수행하는 과정을 나타낸 도면이다. 도 6의 현장 프로그래머블 게이트 어레이(FPGA)(330)는 디버그/에러 제어 블록(Debug/Error Control Block, 410), 인터페이스(420), 명령큐(Intruction Queue, 430), 신호중재 블록(Signal Bridging Block, 440), TCAM 인터페이스(450), 결과큐(Results Queue, 460)을 포함한다.
도 6은 도 3의 버스(Bus) 간의 매핑관계에 기반한 주소를 기반으로 OCTEON(310)이 FPGA(330)와 TCAM(340)을 제어하는 일련의 절차를 화살표를 이용하여 나타낸 것이다.
코어(310)는 FPGA(330)를 통해서 TCAM(340)을 제어하고자 할 때, 특정한 명령포맷을 따른다. 도 6에서 쓰기 명령(Write Command, 320A)에 연결되어 있는 Write(1)(411), Write(2)(412), Delete(413), Read(1)(414), Read(2)(415) 및 Compare(416) 등의 명령은 모두 쓰기(Write) 동작에 해당하며, 읽기 명령(Read Command, 320B)에 연결되어 있는 Read(3)(461)는 읽기(Read) 동작에 해당한다.
코어(310)의 Write Command(320A)에 의해 전달받은 Address와 Data값에는 사전에 약속된 특정 포맷에 의거하여 명령큐(Instruction Queue, 430)는 이 명령을 해석하여 저장하며, 이를 신호중재 블록(Signal Bridging Block, 440)으로 전달한다.
신호중재 블록(Signal Bridging Block, 440) 내부에는 총 64개의 요청큐(Request Queue)를 가질 수 있으며, 명령큐(Instruction Queue, 430)로부터 받은 정보를 특정 포맷으로 변환하여 저장한다. 이를 정해진 순서에 따라, TCAM Interface(450) 또는 결과큐(Result Queue, 460)으로 데이터를 전달하게 된다.
TCAM Interfac(450)는 신호중재 블록(Signal Bridging Block, 440)으로부터 받은 정보를 TCAM Interface(450)를 통해 변환하여 TCAM(340)으로 명령을 전달하게 된다.
결과큐(Result Queue, 450)는 신호중재 블록(Signal Bridging Block, 440) 또는 TCAM Interface(450)으로부터 받은 정보를 내부의 Buffer-A, Buffer-B 또는 Buffer-C에 각각 저장하며, 코어(310)의 Read(1)(414), Read(2)(415)명령에 의해 이 값을 코어(310)로 전달한다.
각각의 블록 및 명령 전달에 대한 상세한 내용은 다음과 같다.
코어(310)는 OCTEON의 RLDRAM-II Interface Port를 나타낸다.
FPGA(330)는 Altera사의 Stratix-II EP2S30 디바이스 등을 사용할 수 있다.
TCAM(340)는 TCAM(Ternary Content-Addressable Memory)을 의미한다. Netlogic사의 NL71024 디바이스 등을 사용할 수 있다.
Write Command(320A) OCTEON(310)의 FPGA(such as RLDRAM-II Device)에 대한 쓰기(Write) 명령블록을 나타낸다.
Write(1)(411)은 OCTEON(310)이 FPGA(330)내의 특정 Register에 데이터를 쓰고자 할 때 사용하는 명령어이다. 이 명령을 받은 FPGA(330)는 명령을 해석하고 FPGA(330) 내부의 특정 Register에 값을 쓴다.
Write(2)(412)는 OCTEON이 FPGA(330)를 경유하여 TCAM(340)으로 데이터를 쓰고자 할 때 사용하는 명령어이다. 이 명령을 받은 FPGA(330)는 명령을 해석하고 이를 TCAM(340)에게 TCAM(#340)의 특정 Register 또는 Data/Mask에 값을 쓰도록 하는 명령을 내리게 된다
Delete(413)는 OCTEON(310)이 FPGA(330)를 경유하여 TCAM(340)의 데이터를 지우고자 할 때 사용하는 명령어이다. 이 명령을 받은 FPGA(330)는 명령을 해석하고 이를 TCAM(340)에게 TCAM(340)의 특정 Register 또는 데이터/마스크 값을 지우도록 하는 명령을 내리게 된다.
Read(1)(414)은 OCTEON(310)이 FPGA(330)내의 특정 Register를 읽고자 할 때 사용하는 명령어이다. 이 명령에 의해서 FPGA(330)내의 특정 Register의 값이 Results Queue(460)의 Buffer-A에 저장한다. 이후 OCTEON(310)은 Read(3)(461)을 사용하여 그 값을 읽을 수 있다.
Read(2)(415)는 OCTEON(310)이 FPGA(330)를 경유하여 TCAM(340)의 특정 Register 또는 데이터/마스크 값 등을 읽고자 할 때 사용하는 명령어이다. 이 명령을 받은 FPGA(330)는 명령을 해석하고 이를 TCAM(340)에게 TCAM(340)의 특정 Register 또는 데이터/마스크 값을 읽도록 하는 명령을 내리게 되며, TCAM(340)으로부터 받은 특정 값을 Result Queue(460)의 Buffer-B에 저장한다. 이후 OCTEON(310)은 Read(3)(461)를 사용하여 그 값을 읽을 수 있다.
Compare(416)는 OCTEON(310)이 검색하고자 하는 특정 패턴을 TCAM(340)으로 인가하여 그 결과를 알고자 할 때 사용하는 명령어이다. 이 명령을 받은 FPGA(330)는 명령을 해석하고 이를 TCAM(340)으로 Compare명령을 내리게 되며, TCAM(340)은 그 Compare결과를 출력하게 되고, FPGA(330)는 이 값을 Result Queue(460)의 Buffer-C에 저장한다. 이후 OCTEON(310)은 Read(3)(461)를 사용하여 그 값을 읽을 수 있다.
인터페이스(420)는 OCTEON(310) Port와의 연동 및 FPGA(330)내부의 명령큐(Instruction Queue, 430)과의 연동을 위한 블록이다. FPGA(330)는 OCTEON(310) 를 통해서 받은 Address와 Data를 FPGA(330) 내부에서 사용하기 쉬운 포맷으로 변경하고 이 값을 명령큐(Instruction Queue, 430)에 전달하게 된다.
명령큐(Instruction Queue, 430)는 인터페이스(420)로부터 받은 Address와 Data값을 해석하여 해당하는 명령에 따른 행위를 하는 블록이다. FPGA(330) 내부의 특정 Register값을 읽겠다는 명령어인 경우 해당하는 Register값을 결과큐(Result Queue, 460)의 Buffer-A로 저장하며, TCAM(340)으로 전달하는 명령어인 경우에는 TCAM 인터페이스(450)로 명령어를 전달한다.
신호중재 블록(Signal Bridging Block, 440)은 FPGA(330) 내부의 모든 Interface 블록들간의 연동을 위한 제어를 수행하며, 명령어를 전달하는 기능이 포함되고, 각 명령어 간 Sequence Numbering을 통하여 데이터 전달의 오류 등을 검출한다.
내부에 요구큐(Request Queue)가 존재하며, 요구큐(Request Queue)에는 FPGA(330) 내부의 Register를 Access(Read/Write)하거나, TCMA(340)을 Access(Read/Write)하고자 하는 명령들을 각 포맷에 맞도록 변환하여 요규큐(Request Queue)에 저장하고, 이를 TCAM 인터페이스(450)으로 전달하거나, 결과큐(Results Queue, 460)로 전달한다.
TCAM 인터페이스(450)는 신호중재 블록(Signal Bridging Block, 440)으로 부터 받은 명령정보를 TCAM 인터페이스 명령으로 변환하여 TCAM(340)을 Access(Read/Write)하는 블록이다. 또한 TCAM 인터페이스(450)은 TCAM(340)으로 부터 받은 Regiser값, Data값 또는 Compare검색 값 등을 결과큐(Results Queue, 460)로 보낸다.
결과큐(Results Queue, 460)는 FPGA(330) 또는 TCAM 인터페이스(450)으로부터 받은 정보들을 Buffer-A, Buffer-B 및 Buffer-C로 저장하게 된다.
Buffer-A는 읽고자 하는 FPGA(330)의 특정 Register값이 저장된다.
Buffer-B는 읽고자 하는 TCAM(340)의 특정 Register 및 Data/Mask값이 저장된다.
Buffer-C는 검색코자 하는 TCAM(340)의 특정 Index(TCAM Address)값이 저장된다.
OCTEON(310)이 읽기(Read) 명령을 내렸을 경우, 결과큐(Results Queue, 460)는 해당하는 읽기(Read) 명령과 연관된 Buffer에서 그 값을 읽어 OCTEON(310)으로 전달한다.
Read(3)(461)은 OCTEON(310) 상의 읽기(Read) 명령어이다. 이 명령을 통해서 OCTEON(310)은 실질적인 FPGA(330)의 특정 Register값, TCAM(340)의 특정 Register 또는 Data/Mask값을 읽게 된다.
읽기 명령(Read Command, 320B)는 OCTEON(310)의 읽기 명령(Read Command)을 지칭한다.
디버그/에러 베어 블록(Debug / Error Control Block, 410)은 각 블록들 내부의 에러 상태나 각 블록들간의 연동시 발생될 수 있는 각종 에러 등을 취합하고 이를 관리하며, 상호간 조율을 하는 블록이다.
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
310 네트워크 프로세서 유닛
320 인터페이스
330 FPGA
340 TCAM

Claims (13)

  1. 네트워크에서 패킷을 처리하는 프로세서;
    상기 네트워크에서 패킷 매칭을 위한 테이블을 보유하는 메모리; 및
    상기 프로세서 및 상기 메모리의 서로 상이한 인터페이스를 중재하여 상기 프로세서 및 상기 메모리 간의 통신가능한 인터페이스를 제공하는 게이트 어레이;를 포함하는 상이한 인터페이스를 중재하는 패킷처리 장치.
  2. 제 1 항에 있어서, 상기 프로세서는
    주문형 반도체(Application Specific Integrated Chip), 네트워크 처리 유닛(Network Processor Unit), 멀티코어 프로세서(Multi-core Processor), 메니-코어 프로세서(Many-Core Processor) 중 어느 하나에 해당하며,
    사전에 정의하여 구현된 인터페이스을 사용하는 상이한 인터페이스를 중재하는 패킷처리 장치.
  3. 제 1 항에 있어서, 상기 메모리는
    또는 3계층 스위치에서 IP 주소 검색의 을 저장하는 터너리 캠(Ternary Content Addressable Memory)인 상이한 인터페이스를 중재하는 패킷처리 장치.
  4. 제 1 항에 있어서, 상기 게이트 어레이는
    프로그래밍에 의해 상기 프로세서와 상기 메모리 간의 인터페이스를 제공하는 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array)인 상이한 인터페이스를 중재하는 패킷처리 장치.
  5. 제 1 항에 있어서, 상기 게이트 어레이는
    상기 프로세서의 인터페이스 및 상기 메모리의 인터페이스를 통한 신호를 송수신하여 처리하고, 상기 프로세서의 명령에 따라 상기 메모리를 제어하는 상이한 인터페이스를 중재하는 패킷처리 장치.
  6. 제 1 항에 있어서,
    상기 프로세서와 연결되어, 외부로부터 수신되는 패킷을 수신하거나 상기 프로세서에서 처리된 패킷을 외부로 송신하는 트래픽 인터페이스;를 더 포함하는 상이한 인터페이스를 중재하는 패킷처리 장치.
  7. 제 6 항에 있어서,
    트래픽 량을 포함하는 네트워크의 특성에 따라 상기 트래픽 인터페이스를 하나 이상 포함하는 상이한 인터페이스를 중재하는 패킷처리 장치.
  8. 네트워크 장치 상에서 프로세서 및 메모리의 서로 상이한 인터페이스를 중재하여 통신가능한 인터페이스를 제공하는 게이트 어레이를 통한 패킷처리 방법에 있어서,
    외부로부터 패킷을 입력받는 단계;
    상기 패킷에 대한 MAC 어드레스 매칭을 수행하는 단계;
    상기 매칭 결과, 상기 패킷에 대한 만족하는 MAC 어드레스가 존재하지 않는 경우 상기 패킷을 파싱하는 단계;
    상기 패킷의 헤더필드를 이용하여 검색키(search key)를 생성하여 상기 메모리를 검색하는 단계;
    상기 메모리에서 반환하는 인덱스(Rule Index)를 이용하여 상기 메모리 상의 테이블을 룩업하는 단계; 및
    상기 룩업된 메모리 값에 따라 상기 패킷을 처리하는 단계;를 포함하는 상이한 인터페이스를 중재하는 패킷처리 방법.
  9. 제 8 항에 있어서,
    상기 매칭 결과, 상기 패킷에 대한 만족하는 MAC 어드레스가 존재하는 경우 상기 MAC 어드레스에 대한 기설정된 대응행위에 따라 상기 패킷을 처리하는 단계;를 더 포함하는 상이한 인터페이스를 중재하는 패킷처리 방법.
  10. 제 8 항에 있어서,
    상기 메모리에서 반환하는 인덱스(Rule Index)가 존재하지 않는 경우, 상기 패킷에 대해 유출 패킷 처리(Egress Packet Control)를 수행하는 단계;를 더 포함하는 상이한 인터페이스를 중재하는 패킷처리 방법.
  11. 제 8 항에 있어서, 상기 패킷을 처리하는 단계는
    상기 룩업된 메모리 값에 따라,
    상기 패킷을 폐기(discard) 또는 리다이렉트(redirect), 상기 메모리에 저장하거나, 상기 패킷에 대해 유출 패킷 처리(Egress Packet Control)를 수행하는 상이한 인터페이스를 중재하는 패킷처리 방법.
  12. 네트워크 장치 상에서 네트워크 처리 유닛(Network Processor Unit) 및 터너리 캠(Ternary Content Addressable Memory)의 서로 상이한 인터페이스를 중재하여 통신가능한 인터페이스를 제공하는 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array)를 통한 패킷처리 방법에 있어서,
    상기 네트워크 처리 유닛(NPU)로부터 전달받은 패킷의 MAC 어드레스와 데이터에 대한 명령을 특정 포맷을 기초로 해석하여 상기 현장 프로그래머블 게이트 어레이(FPGA)의 명령큐(Instruction Queue)에 저장하는 단계;
    상기 명령큐에 저장된 명령을 상기 명령이 지시하는 목적에 따라 상기 현장 프로그래머블 게이트 어레이(FPGA)의 신호중재블록(signal bridging block) 또는 터너리 캠(TCAM) 인터페이스로 전달하는 단계;
    상기 명령이 상기 신호중재블록에 전달된 경우, 상기 신호중재블록 내의 특정 레지스트리 값을 반환받아 상기 현장 프로그래머블 게이트 어레이(FPGA)의 결과큐(Result Queue)에 저장하는 단계;
    상기 명령이 상기 터너리 캠 인터페이스로 전달된 경우, 상기 명령을 상기 터너리 캠 명령으로 변환하여 상기 터너리 캠에 접속하여 상기 명령에 대한 레지스트리 값, 데이터 값 또는 비교검색 값을 반환받아 상기 현장 프로그래머블 게이트 어레이(FPGA)의 결과큐(Result Queue)에 저장하는 단계; 및
    상기 결과큐에 저장된 값을 상기 네트워크 처리 유닛(NPU)으로 전달하는 단계;를 포함하는 상이한 인터페이스를 중재하는 패킷처리 방법.
  13. 제 12 항에 있어서,
    상기 네트워크 처리 유닛(NPU)으로부터 패킷을 전달받거나 상기 결과큐에 저장된 값을 상기 네트워크 처리 유닛(NPU)으로 전달할 경우, 상기 현장 프로그래머블 게이트 어레이(FPGA)의 인터페이스를 통하여 기설정된 포맷으로 변환하는 단계;를 더 포함하는 상이한 인터페이스를 중재하는 패킷처리 방법.
KR1020100133802A 2010-12-23 2010-12-23 패킷처리 장치 및 방법 KR20120072038A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100133802A KR20120072038A (ko) 2010-12-23 2010-12-23 패킷처리 장치 및 방법
US13/334,764 US20120163392A1 (en) 2010-12-23 2011-12-22 Packet processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100133802A KR20120072038A (ko) 2010-12-23 2010-12-23 패킷처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20120072038A true KR20120072038A (ko) 2012-07-03

Family

ID=46316750

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100133802A KR20120072038A (ko) 2010-12-23 2010-12-23 패킷처리 장치 및 방법

Country Status (2)

Country Link
US (1) US20120163392A1 (ko)
KR (1) KR20120072038A (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672239B1 (en) * 2012-10-16 2017-06-06 Marvell Israel (M.I.S.L.) Ltd. Efficient content addressable memory (CAM) architecture
CN103297296B (zh) * 2013-05-30 2016-06-29 大连梯耐德网络技术有限公司 一种基于fpga的逻辑运算查找方法和系统
CN103580975A (zh) * 2013-11-22 2014-02-12 北京机械设备研究所 一种在线可重配置的通用化总线数据转换方法
CN104133692A (zh) * 2014-06-13 2014-11-05 大连梯耐德网络技术有限公司 一种基于fpga动态重构技术实现对tcam的多元化配置系统及配置方法
CN106302174A (zh) * 2015-06-12 2017-01-04 中兴通讯股份有限公司 一种实现路由查找的方法及装置
US10389626B2 (en) * 2017-03-28 2019-08-20 Alaxala Networks Corporation Transfer device
US10397116B1 (en) * 2017-05-05 2019-08-27 Amazon Technologies, Inc. Access control based on range-matching
CN108881033B (zh) * 2018-06-20 2021-04-02 湖南戎腾网络科技有限公司 基于fpga+npu的面向lte网络的高速用户溯源方法
CN111654886B (zh) * 2020-05-27 2023-06-27 杭州迪普科技股份有限公司 一种限制用户带宽的方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080304481A1 (en) * 2005-07-12 2008-12-11 Paul Thomas Gurney System and Method of Offloading Protocol Functions
US8054744B1 (en) * 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
US20090276604A1 (en) * 2008-05-01 2009-11-05 Broadcom Corporation Assigning memory for address types
US8434087B2 (en) * 2008-08-29 2013-04-30 International Business Machines Corporation Distributed acceleration devices management for streams processing
US8365187B2 (en) * 2010-02-22 2013-01-29 Juniper Networks, Inc. Analysis of short term CPU spikes in an operating system kernel
US20120099591A1 (en) * 2010-10-26 2012-04-26 Dell Products, Lp System and Method for Scalable Flow Aware Network Architecture for Openflow Based Network Virtualization

Also Published As

Publication number Publication date
US20120163392A1 (en) 2012-06-28

Similar Documents

Publication Publication Date Title
KR20120072038A (ko) 패킷처리 장치 및 방법
US10742779B2 (en) Configurable parser and a method for parsing information units
JP6861257B2 (ja) 金融ネットワーク
US11221972B1 (en) Methods and systems for increasing fairness for small vs large NVMe IO commands
CN108055202B (zh) 一种报文处理设备和方法
US8174984B2 (en) Managing traffic on virtualized lanes between a network switch and a virtual machine
CN110971586B (zh) 网络接口设备和网络接口设备中的方法
US8209457B2 (en) Systems and methods for efficient handling of data traffic and processing within a processing device
WO2017114286A1 (zh) 基于混合云平台的网络管理系统
US8571848B2 (en) System and method of network emlation for test of on-line server processing heavy traffic
US9356844B2 (en) Efficient application recognition in network traffic
US9590922B2 (en) Programmable and high performance switch for data center networks
US9172602B1 (en) Method and system for auto-negotiation
US8478853B2 (en) Handling of multiple MAC unicast addresses with virtual machines
JP2006511126A (ja) ネットワーク処理機能を実行する方法および装置
US10686731B2 (en) Network interface device
US11750418B2 (en) Cross network bridging
US20190158403A1 (en) Shared memory communication in software defined networking
US8817799B2 (en) Network processor for supporting residential gateway applications
US10581762B2 (en) Packet scheduling in a switch for reducing cache-miss rate at a destination network node
WO2017028398A1 (zh) 通信处理方法和装置
US9282000B1 (en) Network devices having configurable receive packet queues and related methods
US10877911B1 (en) Pattern generation using a direct memory access engine
JPWO2014126094A1 (ja) 通信システム、通信方法、制御装置、制御装置の制御方法及びプログラム
US10176146B2 (en) Integration pattern implementations using reconfigurable logic devices

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid