KR101062148B1 - 실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법 - Google Patents

실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법 Download PDF

Info

Publication number
KR101062148B1
KR101062148B1 KR1020090065851A KR20090065851A KR101062148B1 KR 101062148 B1 KR101062148 B1 KR 101062148B1 KR 1020090065851 A KR1020090065851 A KR 1020090065851A KR 20090065851 A KR20090065851 A KR 20090065851A KR 101062148 B1 KR101062148 B1 KR 101062148B1
Authority
KR
South Korea
Prior art keywords
packet
host
capture card
block
memory
Prior art date
Application number
KR1020090065851A
Other languages
English (en)
Other versions
KR20110008485A (ko
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 KR1020090065851A priority Critical patent/KR101062148B1/ko
Publication of KR20110008485A publication Critical patent/KR20110008485A/ko
Application granted granted Critical
Publication of KR101062148B1 publication Critical patent/KR101062148B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 멀티프로세서시스템에 관한 것으로, 보다 상세하게는 하나의 멀티프로세서 시스템에서 패킷 프로세서 별로 패킷 처리를 하여 프로세서가 최대의 성능으로 사용되도록 하고, 특히 다수 개의 입력 수신포트에서 수신되는 고속의 패킷들을 실시간으로 처리할 수 있도록 하기 위한 멀티프로세서시스템과 패킷캡쳐카드의 구조설계에 관한 것이다.
이와 같은 본 발명의 특징은 패킷캡쳐카드와 호스트가 구비되고, 패킷캡쳐카드는 패킷수신포트, 패킷송신포트, 패킷캡쳐카드에서 사용되는 메모리부가 구비되며, 호스트는 호스트메모리부, 패킷프로세싱엔진이 구비된다. 패킷캡쳐카드는 수신포트를 통하여 연속된 패킷이 블록단위로 패킷캡쳐카드에 있는 메모리에 저장되도록 하고, 호스트메모리부에 블록단위의 패킷이 메모리콘트롤러를 통하여 전송되게 구비된다. 패킷프로세싱엔진은 호스트메모리부의 수신 시그널을 확인하여 패킷을 버리거나 통과시키는 명령을 패킷캡쳐카드 측에 전송되도록 하여, 패킷송신포트에서 패킷데이터가 송신되도록 하는 것을 특징으로 한다.
패킷, 데이터, 네트워크, 호스트, 패킷캡쳐카드, 블록덤프

Description

실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법{MULTI PROCESSOR SYSTEM FOR REAL TIME HIGH SPEED PACKET PROCESS AND PACKET PROCESSING METHOD THEREOF}
본 발명은 멀티프로세서시스템에 관한 것으로, 보다 상세하게는 하나의 멀티프로세서 시스템에서 패킷 프로세서 별로 패킷 처리가 가능하도록 하여 프로세서가 최대의 성능으로 사용되도록 하고, 특히 다수 개의 입력 수신포트에서 수신되는 고속의 패킷들을 실시간으로 처리되도록 하는 실시간 고속 패킷 처리를 위한 것으로, 내부 네트워크와 외부 네트워크 중간에 위치되어 외부에서 수신되는 패킷들 중 무결성 패킷만을 내부로 전송되게 하거나 내부에서 송신되는 패킷들 중에서 무결성 패킷만을 외부로 전송되도록 하기 위해 네트워크망에 하나의 멀티프로세서 시스템으로 기가 트래픽의 패킷들을 모두 검사 가능하게 하기 위한 멀티프로세서시스템에 관한 것이다.
일반적으로 기존의 네트워크인터페이스카드(NIC, Network Interface Card)에 서는 인터럽트로 시그널을 받아서 소프트웨어에서 처리하는 방법을 사용하고 있다.
이에 패킷의 최소 사이즈인 64바이트 기준으로 할 때 10Mbps에서는 약 14,800개, 100Mbps에서는 약 148,000개, 1Gbps에서는 약 1,480,000개의 패킷이 초당 수신된다. 10/100Mbps 정도의 트래픽은 종래 기술방법으로 어느 정도 처리 가능한 양의 인터럽트이지만, 기가급에서 인터럽트 방식으로 처리할 경우에는, 여러 CPU에 인터럽트를 분산하여 처리하게 되면, 과도한 인터럽트로 인한 오버헤드가 발생된다. 기존 프로세스가 실행 중에 인터럽트가 발생하게 되면, 다른 프로세스의 실행을 위해 현재 CPU에서 연산중인 값들을 저장하고, 인터럽트를 처리한 후에 다시 연산하던 값들을 복원해서 진행하게 되는데, 이러한 과정을 상당시간 지속하게 되면 전체 시스템 성능이 저하되는 것이다.
또한 과다한 인터럽트는 일정 개수만큼만 처리가 가능하기 때문에, 기가급에서와 같이 초당 인터럽트가 많이 발생되면 모든 인터럽트를 처리하지 못하게 되는 문제가 발생될 우려가 있는 것이다.
즉 네트워크인터페이스카드(NIC)에서의 과다한 인터럽트는 다른 입출력 장치들에도 영향을 주어, 전체적인 시스템 성능 저하를 일으키게 되며, 특히 기가급의 트래픽 처리에 어려움이 있게 되는 것이다.
또한 기가 속도의 트래픽 처리에 최적화되지 않은 TCP/IP 스택과 소켓의 사용은 불필요한 메모리 복사로 인하여 성능이 저하될 우려가 있는 것이다.
상기와 같은 문제점을 해소하기 위한 본 발명은 인터럽트를 사용하지 않고, 하나의 멀티프로세서 시스템에서 패킷 프로세서 별로 패킷 처리가 가능하도록 하여 프로세서가 최대의 성능으로 사용되도록 하고, 특히 다수 개의 입력 수신포트에서 수신되는 고속의 모든 패킷들을 실시간으로 처리되도록 하는 목적이 있다.
또한 네트워크의 수신 포트별로 각 패킷 데이터가 블록단위로 저장되도록 하고, 이렇게 저장된 블록단위의 패킷 데이터가 블록덤프에 의하여 호스트 메모리에 복사되도록 한 후, 블록 단위의 패킷 데이터에 대해 패킷 프로세싱이 진행되도록 함으로써, 성능이 향상되도록 하는 목적이 있다.
그리하여 패킷 수신에 대한 인터럽트 없이 연속된 패킷들로 이루어진 블록단위로 하여 패킷을 처리하기 때문에 고속의 패킷의 처리가 가능하고, 이러한 패킷 프로세싱을 위한 폴링, 패킷 프로세싱에 대한 판별신호 전송 등에 멀티 프로세서 중에서 하나의 프로세서만 관여하도록 하여, 다른 프로세서들이 다른 연산을 계속하는 중에도 패킷 프로세싱이 가능하도록 하는 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 실시간 고속 패킷 처리를 위한 멀티프로세서시스템은, 네트워크 망을 통하여 패킷 데이터를 수신받는 패킷캡쳐카드(10)가 구비되고, 상기 패킷캡쳐카드(10)로부터 패킷 데이터를 수신받아 패 킷의 추이, 감시, 무결성을 검증하는 패킷프로세싱이 수행되도록 하는 호스트(20)가 구비되며, 상기 패킷캡쳐카드(10)는 네트워크 망으로부터 패킷 데이터를 수신받는 패킷수신포트(11); 상기 패킷수신포트(11)를 통하여 수신된 패킷 데이터가 블록단위로 저장되는 패킷캡쳐카드메모리부(12); 상기 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 네트워크 망으로 송신되도록 하는 패킷송신포트(13)가 포함되어 구비되고, 상기 호스트(20)는 상기 패킷캡쳐카드(10)로부터 전송되는 블록단위의 패킷 데이터가 저장되도록 하는 호스트메모리부(22)와, 상기 호스트메모리부(22)에 패킷 데이터가 저장되었음을 판별하여 패킷프로세싱엔진(25)으로 패킷 데이터를 전송하도록 하는 호스트프로세서(21)가 구비되며, 상기 패킷캡쳐카드(10)로부터 전송되는 블록단위의 패킷 데이터가 상기 호스트메모리부(22)에 저장되도록 하는 메모리콘트롤러(27)가 구비되는 것을 특징으로 한다.
이에 상기 패킷캡쳐카드메모리부(12)는 상기 패킷수신포트(11)를 통하여 수신된 패킷 데이터가 저장되는 복수 개의 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n))이 구비되고, 상기 호스트메모리부(22)는 복수 개의 호스트메모리블록(host(1.1), host(1.2), host(1.3), host(2.1), host(2.2), host(2.3),... host(m.n))이 구비되며, 상기 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n)) 또는 상기 호스트메모리블록(host(1.1), host(1.2), host(1.3), host(2.1), host(2.2), host(2.3),... host(m.n))에는 블록번호, 패킷개수가 포함된 블록헤더, 패킷번호, 패킷길이가 포함된 패킷헤더, 그리고 패킷 데이터가 포함되어 구비되고, 상기 패킷캡쳐카드(10)는 상기 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n))의 해당 네트워크메모리블록에 패킷 데이터가 저장된 경우에는 해당 네트워크메모리블록 주소의 수신시그널비트가 "1"로 변경되도록 하여 상기 호스트메모리부(22)로 전송하도록 구비될 수 있다.
또한 상기 패킷캡쳐카드(10)는 상기 패킷캡쳐카드메모리부(12)의 복수 개의 네트워크메모리블록에 패킷들이 블록단위로 저장시, 하나의 네트워크메모리블록에서 패킷 길이의 총합이 Threshold 이상이 되면 다음 네트워크메모리블록에 저장되도록 구비될 수 있다.
그리고 상기 패킷캡쳐카드(10)는 하나의 네트워크메모리블록에 저장되는 시간이 설정되어, 설정된 저장 시간이 경과된 경우에 다음 네트워크메모리블록에 저장되도록 하여 수신과 송신 사이의 지연(Latency)을 최소화되도록 구비될 수 있다.
이에 더하여 상기 호스트(20)는 패킷프로세싱엔진(25)에 의해 판별된 수신된 패킷 데이터에 대하여 패킷의 추이, 감시, 무결성을 검증하는 패킷프로세싱을 수행하도록 하고, 상기 패킷캡쳐카드(10)의 해당 수신포트번호, 해당 블록번호, 해당 패킷, 해당 블록에 대한 정보와 함께 이들에 대한 해당 패킷의 DROP 또는 PASS의 판별데이터 신호가 패킷캡쳐카드(10) 측으로 전송되도록 구비되며, 상기 패킷캡쳐 카드(10)에서는 상기 호스트(20)로부터 패킷 프로세싱결과에 따라 패킷캡쳐카드(10)의 해당 수신 포트 번호, 해당 블록번호 및 해당 패킷번호에 대한 정보와 함께, 통과(PASS), 차단(DROP)의 명령을 수신받게 되고, 상기 패킷캡쳐카드메모리부(12) 저장된 해당 블록에 대한 데이터 중에서, DROP 대상의 패킷은 패킷캡쳐카드(10)에서 버려지고, PASS 대상의 패킷은 송신 포트를 통하여 전송되도록 구비될 수 있다.
또한 상기 패킷캡쳐카드(10)는 패킷캡쳐카드메모리부(12)에 저장된 블록 단위의 패킷 데이터가 메모리콘트롤러(27)에 의하여 블록덤프로 호스트(20)의 호스트메모리부(22)로 저장되도록 구비되어지되, 상기 패킷캡쳐카드메모리부(12) 링버퍼와 호스트메모리부(22) 링버퍼의 차이가 90% 이상일 경우, 패킷캡쳐카드(10)는 호스트메모리부(22)로의 블록덤프가 정지되도록 한다. 이는 호스트와 캡쳐카드간 메모리 블록의 중복 복사를 막기 위한 기능이다. 즉 링버퍼 인덱스 차이가 90% 이하가 될 때까지 패킷 수신처리를 정지하여 패킷을 버리도록 구비되거나, 링버퍼 인덱스 차이가 90% 이하가 될 때까지 호스트의 패킷프로세싱엔진 측으로의 전송이 정지되고 패킷송신포트로 전송되도록 구비될 수 있다.
나아가 본 발명은 상기의 멀티프로세서시스템을 이용한 실시간 고속 패킷 처리방법에 있어서, 네트워크 망을 통하여 전송된 패킷 데이터가 패킷수신포트(11)를 통하여 수신되어 패킷캡쳐카드메모리부(12)에 저장되도록 하는 패킷데이터수신단 계(S01); 상기 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 메모리콘트롤러(27) 측으로 전송되도록 하는 패킷데이터호스트전송단계(S02); 상기 메모리콘트롤러(27)에서 호스트메모리부(22) 측으로 패킷 데이터가 전송되도록 하는 호스트메모리저장단계(S03); 상기 호스트메모리부(22)에 저장된 패킷 데이터에 대하여 호스트프로세서(21)에서 패킷프로세싱엔진(25) 측으로 전송하여 패킷프로세싱되도록 하는 패킷프로세싱단계(S04); 상기 패킷프로세싱엔진(25)으로부터 패킷프로세싱된 결과 데이터를 호스트프로세서(21)에서 수신받아 패킷캡쳐카드(10) 측으로 전송되도록 하는 패킷프로세싱결과데이터 전송단계(S05); 상기 호스트프로세서(21)로부터 전송된 프로세싱결과 데이터를 패킷캡쳐카드(10) 측에서 판별하여 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 드롭되도록 하거나 또는 패킷송신포트(13)를 통하여 패스되도록 처리하는 패킷 데이터처리단계(S06)가 포함되어 구비되는 것을 특징으로 하는 멀티프로세서시스템을 이용한 실시간 고속 패킷 처리방법이 제공된다.
이에 상기 패킷데이터호스트전송단계(S02)는 저장이 완료된 네트워크메모리블록의 해당 블록이 호스트 메모리 덤프로 전송되도록 구비되고, 상기 호스트메모리저장단계(S03)에서는 상기 패킷데이터호스트전송단계(S02)에서 메모리덤프로 전송된 블록단위의 패킷 데이터가 호스트메모리블록에 저장되도록 구비되고, 해당 호스트메모리블록 주소의 수신시그널비트가 "1"이 되도록 구비될 수 있다.
상기와 같이 구성되는 본 발명은 인터럽트를 사용하지 않고, 하나의 멀티프로세서 시스템에서 패킷 프로세서 별로 패킷 처리가 가능하도록 하여 프로세서가 최대의 성능으로 사용되도록 하고, 특히 다수 개의 입력 수신포트에서 수신되는 고속의 패킷들을 실시간으로 처리되도록 하는 탁월한 효과가 있다.
또한 네트워크의 수신 포트별로 각 패킷 데이터가 블록단위로 저장되도록 하고, 이렇게 저장된 블록단위의 패킷 데이터가 블록덤프(DMA를 통한 메모리복사)에 의하여 호스트 메모리에 저장되도록 한 후, 블록 단위의 패킷 데이터에 대해 패킷 프로세싱이 진행되도록 하고, 패킷캡쳐카드의 패킷수신이벤트 시그널을 호스트메모리를 통해 처리함으로써, 장치간 병목현상을 줄여 성능이 향상되도록 하는 효과가 있다.
이하 첨부되는 도면을 참조하여 상세히 설명한다.
도 1은 본 발명에 따른 멀티프로세서시스템에 대한 개략적인 구성도, 도 2는 본 발명에 따른 멀티프로세서시스템에서 패킷프로세싱 대한 개략적인 순서도, 도 3은 본 발명에 따른 멀티프로세서시스템에서 포트별 블록 수신 시그널 인식에 대한 개략적인 처리예시도, 도 4는 본 발명에 따른 멀티프로세서시스템에서 패킷 수신 처리구조에 대한 개략적인 순서도, 도 5는 본 발명에 따른 멀티프로세서시스템에서 패킷 송신 처리구조에 대한 개략적인 순서도, 도 6은 본 발명에 따른 멀티프로세서 시스템의 패킷캡쳐카드에서의 패킷수신처리에 대한 개략적인 순서도, 도 7은 본 발명에 따른 멀티프로세서시스템의 호스트에서의 패킷수신처리에 대한 개략적인 순서도, 그리고 도 8은 본 발명에 따른 멀티프로세서시스템에서의 실시간 고속 패킷 처리방법에 대한 순서도가 각각 도시된 것이다.
즉 본 발명에 따른 실시간 고속 패킷 처리를 위한 멀티프로세서시스템(A)은 도 1 내지 도 8에 도시된 바와 같이, 네트워크 망과 연결되어 전송되는 패킷을 수신받고 송신하게 되는 패킷캡쳐카드(PCAP, Packet CAPture card)(10)가 구비되고, 이러한 패킷캡쳐카드(10)와 전기적으로 연결되는 호스트(Host)(20)가 구비되는 것이다. 즉 본 발명에 따른 패킷캡쳐카드(PCAP, 10)는 네트워크에서 수신되는 모든 패킷들을 실시간으로 RAW 패킷 그대로 메모리에 캡쳐하고, 캡쳐한 패킷을 호스트메모리로 복사하도록 하는 장치인 것이다.
좀더 상세하게 살펴보면, 패킷캡쳐카드(10)에서 네트워크 망을 통하여 전송되는 패킷 데이터를 수신받아 드롭(Drop) 또는 패스(Pass) 되도록 하며, 이러한 패킷캡쳐카드(10)와 호스트(20)가 연결되도록 구비되어, 상기 패킷캡쳐카드(10)로부터 패킷 데이터를 수신받는 호스트(20)에서 패킷의 추이, 감시, 무결성을 검증하는 패킷프로세싱이 수행되도록 하여 패킷프로세싱에 대한 결과값을 패킷캡쳐카드(10) 측으로 전송되도록 구비되는 것이다.
이에 무결성이란 해킹, 바이러스를 포함하는 패킷이나 접근 차단 IP, 유해 사이트 등과 관련되는 정보가 포함되지 않도록 하는 것이다. 그리고 이러한 장비로는 주로 IPS, IDS, FIREWALL, DDOS, 등과 관련되는 기술이 적용되는 보안장비에 사용될 수 있고, 사내 자료 유출 감시나 IP 별, 혹은 네트워크별 실시간 트래픽 감시가 필요한 장비 등에 적용될 수도 있을 것이다.
이러한 상기 패킷캡쳐카드(10)의 세부구성은 네트워크 망으로부터 패킷 데이터를 수신받는 패킷수신포트(11); 상기 패킷수신포트(11)를 통하여 수신된 패킷 데이터가 블록단위로 저장되는 패킷캡쳐카드메모리부(12); 상기 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 네트워크 망으로 송신되도록 하는 패킷송신포트(13)가 포함되어 구비되는 것이다.
또한 상기 호스트(20)는 상기 패킷캡쳐카드(10)로부터 전송되는 블록단위의 패킷 데이터가 저장되도록 하는 호스트메모리부(22)와, 상기 호스트메모리부(22)에 패킷 데이터가 저장되었음을 판별하여 패킷프로세싱엔진(25)으로 패킷 데이터를 전송하도록 하는 호스트프로세서(21)가 구비되는 것이다.
이와 함께 호스트(20)에는 상기 패킷캡쳐카드(10)로부터 전송되는 블록단위의 패킷 데이터가 상기 호스트메모리부(22)에 저장되도록 하는 메모리콘트롤러(27)가 더 구비되는 것을 특징으로 하고 있다.
그리고 패킷캡쳐카드메모리부(12)의 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n)) 또는 호스트메모리부(22)의 호스트메모리블록(host(1.1), host(1.2), host(1.3), host(2.1), host(2.2), host(2.3),... host(m.n)) 등에 있어서, "m"은 패킷캡쳐카드(10)의 패킷수신포트(11)의 수신포트번호, "n"은 네트워크메모리블록 또는 호스트메모리블록의 해당 블록 번호로 될 수도 있고, 또는 해당 메모리의 링버퍼 인덱스를 나타내도록 마련될 수도 있을 것이다. 이러한 본 발명의 네트워크메모리블록 또는 호스트메모리블록에서 이용되는 링버퍼는 미리 정해진 크기의 메모리 배열을 생성하여 시작 인덱스부터 차례대로 저장되도록 하고, 마지막 인덱스 부분에서는 다시 처음의 인덱스 저장영역으로 되돌려져 처음 영역부터 다시 저장되어 순환저장되도록 하는 방식으로, 본 발명에서와 같이 고속의 패킷을 처리하기 위해서 링버퍼 인덱스로 저장되도록 함이 바람직하다.
따라서 패킷캡쳐카드(10)의 각 패킷수신포트(11)의 수신포트 별로 있는 링버퍼의 해당 네트워크메모리블록들은, 호스트메모리부(22)에 각 패킷수신포트(11)의 각 수신포트별로 할당받은 해당 호스트메모리블록의 주소에 블록덤프되도록 마련되는 것이다. 따라서 네트워크메모리블록의 해당 블록의 데이터와 호스트메모리블록의 해당 블록의 데이터가 동일하게 되어, 이후 처리과정, 판별 등이 대응되도록 마련될 수 있을 것이다. 그리고 본 발명에서의 블록덤프는 패킷캡쳐카드(10)의 패킷캡쳐카드메모리부(12)에 저장되어 있는 하나의 블록의 데이터가 PCI-E를 통한 DMA엔진(메모리컨트롤러(27))을 통하여 호스트(20)의 호스트메모리부(22) 측 영역으로 블록을 복사하도록 하는 것을 말한다.
이와 같이 마련되는 본 발명에 따른 멀티프로세서시스템(A)을 이용한 실시간 고속 패킷 처리방법을 살펴보면 다음과 같다.
우선 네트워크 망을 통하여 전송된 패킷 데이터가 패킷수신포트(11)를 통하여 수신되어 패킷캡쳐카드메모리부(12)에 저장되도록 하는 패킷데이터수신단계(S01)가 수행된다.
상기와 같은 상기 패킷데이터수신단계(S01)에서는 수신된 패킷 데이터에 대하여, 다수의 블록으로 되는 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3), ... net(m.n)) 등에 링버퍼로 저장되도록 마련되는 것이다.
그리고 하나의 블록 안에는 블록헤더 데이터, 저장된 패킷데이터의 헤더 데이터, 그리고 저장된 패킷 데이터가 포함되고, 수신된 수신포트에 대한 데이터도 저장되는 것이다. 이에 상기 블록헤더 데이터는 해당 블록의 블록번호와 해당 블록에 저장된 총 패킷의 개수가 포함되도록 하며, 상기 패킷데이터의 헤더 데이터는 저장된 해당 패킷의 번호, 해당 패킷의 길이가 포함되도록 구비되고, 저장이 완료된 해당 블록 주소의 수신시그널비트가 "1"이 되도록 구비되는 것이다.
이와 같은 패킷캡쳐카드(10)의 패킷캡쳐카드메모리부(12)의 구성 예로는 DDR, SDRAM, SRAM 등과 같은 다양한 종류의 메모리가 이용될 수 있을 것이다. 그리고 이러한 패킷캡쳐카드메모리부(12)의 한 네트워크메모리블록에서는 패킷 길이의 총합이 미리 정해져 놓은 Threshold 이상이 되면 하나의 블록에 대한 저장이 중지되도록 하고, 다음 네트워크메모리블록에 저장되도록 마련된다.
그리고 하나의 네트워크메모리블록에 저장되는 시간이 설정되도록 하여, 저장의 시간이 만료되면 하나의 블록에 대하여 Threshold 이상이 되지 않더라도 해당 네트워크메모리블록에 대한 저장이 중지되도록 타임아웃을 설정하여 수신과 송신 사이의 지연(Latency)을 최소화하고 그리고 네트워크메모리블럭의 다음 인덱스에 저장되도록 한다.
그리고 이렇게 수신되어 저장된 패킷 데이터의 정보에 대하여, 상기 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 메모리콘트롤러(27) 측으로 전송되도록 하는 패킷데이터호스트전송단계(S02)가 수행된다.
즉 패킷캡쳐카드(10)에서는 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가, 네트워크메모리블록 단위로 하여 전송되도록 하는 블록 덤프로 하여 전송되도록 하는 것이다. 따라서 블록 덤프로 하여 전송되는 해당 블록단위의 전송데이터에는 블록헤더(블록번호, 패킷 개수), 패킷 헤더(패킷 번호, 패킷 길이), 패킷 데이터 등이 포함되어 파싱에 필요한 정보로 이용되는 것이다.
이에 패킷캡쳐카드(10)는 PCI, PCI-X, PCI-E 등이 지원되도록 구비될 수 있고, 고속 패킷의 필터링 처리를 위하여 H/W Logic 설계가 가능하도록 하며, 수정이 용이한 FPGA(Field Programmable Gate Array) 칩이 사용될 수 있을 것이다. 그리하여 패킷캡쳐카드(10)에는 패킷수신포트(11)를 통하여 수신되는 패킷 데이터를 패킷캡쳐카드메모리부(12)에 블록 단위로 저장되도록 하고, 이에 메모리콘트롤러(27)를 통하여 호스트(20)의 호스트메모리부(22)의 링버퍼에 블록단위로 메모리덤프를 할 수 있도록 마련되는 것이다. 이후 호스트(20)에서 소프트웨어 패킷프로세싱의 결과에 대한 판별 신호데이터를 수신받아, 해당 블록 안의 패킷 중에 DROP 패킷은 버리고, 그 외 PASS 패킷은 패킷송신포트(13)를 통하여 네트워크 망으로 송신되도록 하는 것이다.
특히 패킷캡쳐카드(10)와 호스트(20) 간에는 PCI-E DMA 엔진의 메모리콘트롤러(DMA, Direct Memory Access)(27)를 통하여 호스트(20)에 전송되도록 함이 바람직할 것이다. 이처럼 메모리콘트롤러(DMA, 27)를 통하여 호스트(20)의 호스트메모리부(22)로 직접 전송하게 되면, 호스트(20)의 호스트프로세서(21)의 간섭없이 전송하게 되므로, 데이터 전송에 따른 처리 간섭이 없어 시스템 버스의 입출력 장치 사이의 데이터 처리 및 전송에 대한 병목에 따른 처리지연 또는 오류를 줄일 수 있을 것이다. 이와 같은 메모리콘트롤러(DMA, 27)는 호스트프로세서(21)의 간섭없이 패킷캡쳐카드(10) 등과 같은 디바이스가 호스트메모리부(22) 측으로 데이터가 전송되도록 하는 것으로, 따라서 호스트(20)의 호스트프로세서(21) 등은 패킷캡쳐카드(10)에 있는 블록의 데이터가 메모리콘트롤러(27)를 통하여 호스트메모리부(22)로 전송되는 동안 어떤 동작이나 연산도 하지 않게 되고, 다른 프로세싱작업을 하게 되는 것이다.
이처럼 패킷캡쳐카드(10)에서 메모리콘트롤러(27) 측으로 블록단위의 블록 덤프로 전송되고, 이후 상기 메모리콘트롤러(27)에서 호스트메모리부(22) 측으로 패킷 데이터가 전송되도록 하는 호스트메모리저장단계(S03)가 수행된다. 이와 같은 호스트메모리저장단계(S03)에서는 블록단위의 블록덤프로 전송되는 데이터가 호스트메모리부(22)에 저장되는 것으로, 해당 호스트메모리블록에 저장된 데이터는 결국 패킷캡쳐카드메모리부(12)에 해당되는 네트워크메모리블록에 저장된 데이터와 동일하게 저장되는 것이다.
이에 패킷캡쳐카드(10)에서는 하나의 블록인 네트워크메모리블록이 생성되면 호스트메모리부(22)로 메모리덤프 시에 블록의 맨 마지막 비트, 즉 수신시그널비트로 사용되는 주소에 "1"로 변경하여 호스트메모리부(22) 측으로 블록덤프하게 된다.
이와 같은 수신시그널 비트는 패킷캡쳐카드(10)로부터 전송되는 패킷 데이터의 수신시그널을 받기 위한 것으로, 호스트프로세서(21)에서 값을 계속 체크하며 폴링하게 된다. 이러한 폴링(Polling)은 하나의 장치가 충돌 회피, 동기화 처리 등을 위하여 다른 장치 또는 프로그램의 상태를 주기적으로 검사하여, 일정한 조건이 만족할 때 자료처리를 하도록 하는 것이다. 이에 본 발명에서는 호스트(20)의 호스트프로세서(21)에서 호스트메모리부(22) 측의 블록에 대하여 폴링하도록 하여, 블록덤프로 저장되어 있는 블록을 검사하도록 하는 것이다.
그리고 상기 호스트메모리저장단계(S03)에서는 상기 패킷데이터호스트전송단계(S02)에서 메모리덤프로 전송된 블록단위의 패킷 데이터가 호스트메모리블록에 저장되도록 구비되고, 해당 호스트메모리블록 주소의 수신시그널비트가 "1"이 되도록 구비되는 것이다.
즉 호스트(20)에서는 메모리덤프 완료 되었음을 판별하기 위한 시그널이 작 동되게 된다. 이러한 시그널을 10Gbps 트래픽으로 수신되는 네트워크 데이터 전송 상황에서는, 전송되는 데이터에 대하여 인터럽트 방식의 종래방식으로 처리할 경우, 초당 수만 번의 인터럽트가 발생될 수 있어, 이러한 인터럽트 처리를 다 수행하지 못하기 때문에, 종래방식에서는 효과적으로 패킷 처리를 할 수 없게 될 우려가 있다.
그리하여 이러한 인터럽트 방식을 이용하지 않고, 호스트(20)에서는 폴링 방식을 이용하여 인터럽트 없이 실시간 패킷 수신을 처리함으로써 성능을 향상시킬 수 있는 것이다. 이를 위하여, 호스트(20)의 호스트프로세서(21)에서는 링버퍼의 호스트메모리부(22)에 블록덤프로 저장되는 데이터에 대하여, 해당 호스트메모리블록의 맨 마지막 비트를 계속 폴링하여 값의 변화를 계속 전송받게 된다. 이에 해당 호스트메모리블록에 기본 값인 "0"에서 "1"로 값이 변경된 것으로 하여 값을 전송받게 되면, 애플리케이션은 수신 시그널로 인식하여 해당 블록에 패킷 데이터가 수신되었음으로 하여 판별하게 된다. 이후 호스트프로세서(21)에서는 호스트메모리부(22)의 해당 호스트메모리블록의 데이터를 이용하여 패킷프로세싱을 하게 되는 것이다.
이러한 애플리케이션은 블록의 헤더와 패킷 헤더를 통하여 패킷 단위로 파싱하여 해당 블록의 유효성을 체크하고, 이후 패킷프로세싱엔진(25)으로 전송되도록 하여 패킷프로세싱에 따른 처리결과를 받게 된다.
따라서 PCI-E와 호스트프로세서(21)와의 신호송수신에 따른 병목을 줄이기 위해, PCI-E를 통한 패킷캡쳐카드(10)의 레지스터값을 폴링하는 방식이 아니라, 호스트메모리부(22)에 메모리 블록덤프로 패킷캡쳐카드(10)의 패킷캡쳐카드메모리부(12)의 패킷 데이터가 저장되도록 하고, 이처럼 블록덤프로 저장된 패킷 데이터에 대하여, 수신 여부를 판별하기 위하여 호스트메모리부(22)의 해당 호스트메모리블록에 대한 폴링을 하도록 마련되는 것이다. 특히 호스트메모리부(22)는 듀얼채널을 통한 버스 대역이 PCI-E 보다 훨씬 넓기 때문에 병목을 줄일 수 있는 것이다. 또한 OS 커널의 TCP/IP와 같은 스택을 사용하지 않고 RAW 패킷으로 이루어진 블록을 호스트메모리부(22)로 블록 덤프하기 때문에, 메모리 복사동작 없이 패킷 프로세싱을 수행함으로써 보다 향상된 시스템 설계가 가능하게 되는 것이다.
이처럼 상기 패킷캡쳐카드메모리부(12)에서는 다수의 메모리블록에 수신된 패킷 데이터가 저장되는 것이고, 패킷캡쳐카드메모리부(12)에 저장된 블록단위의 패킷 데이터는 메모리덤프로 하여 호스트메모리부(22)에 저장되는 것이다. 따라서 호스트메모리부(22)에 저장된 패킷 데이터와 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 서로 일치하게 되어, 이후 호스트메모리부(22)에 저장된 패킷 데이터를 분석하고, 이에 대한 판별된 사항은 그대로 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터에 대한 판별 사항과 동일하게 되는 것이다. 그리하여 패킷 데이터에 대한 판별에 대한 값을 단지 호스트(20)에서 패킷캡쳐카드(10) 측으로 전송하게 되면, 동일한 내용의 메모리블록의 위치만 판별하여 데이터 처리를 하도록 마련될 수 있는 것이다.
그리하여 다음으로 상기 호스트메모리부(22)에 저장된 패킷 데이터에 대하여 호스트프로세서(21)에서 패킷프로세싱엔진(25) 측으로 전송하여 패킷프로세싱되도록 하는 패킷프로세싱단계(S04)가 수행되는 것이다.
이와 같은 패킷프로세싱단계(S04)에서는 우선 해당 호스트메모리부(22)의 호스트메모리블록에 패킷 데이터가 저장되었는지를 판별하게 된다. 이를 위하여 호스트프로세서(21)에서는 수신시그널을 이용하여 판별하게 되는 것이다.
즉 호스트프로세서(21)에서는 호스트메모리부(22)에 있는 링버퍼의 시그널 비트를 계속 체크를 하게 된다. 이에 패킷캡쳐카드(10)의 패킷캡쳐카드메모리부(12)에 저장된 각 수신포트별 블록의 데이터가 호스트메모리부(22) 측의 각 링버퍼로 블록 덤프되었는지를 수신 시그널을 통하여 계속 체크하게 되는 것이다.
예를 들면 도 3 및 도 4에서와 같이, 호스트메모리부(22)의 호스트메모리블록(host 1.1), 호스트메모리블록(host 2.2)의 수신시그널비트를 계속 폴링하던 중, 시그널비트 값이 '0'에서 '1'로 변경되면, 시그널로 인식하여 해당 호스트메모리블록에 블록단위의 데이터가 블록덤프되었음으로 인식하게 된다. 따라서 호스트프로세서(21)에서는 블록덤프된 것으로 판별되는 해당 호스트메모리블록의 데이터를 패킷 단위로 파싱하고, 이러한 데이터를 패킷프로세싱엔진(25) 측으로 전송하여 패킷프로세싱이 수행되도록 하는 것이다.
그리고 패킷프로세싱엔진(25)의 패킷프로세싱에 따른 판별데이터는 패킷캡쳐카드(10) 측으로 전송하게 되며, 이에 따라 패킷캡쳐카드(10)에서는 해당 패킷캡쳐카드메모리부(12)에 저장된 해당 네트워크메모리블록의 패킷 데이터를 드롭(DROP) 또는 패스(PASS) 되도록 하는 것이다.
즉 호스트프로세서(21)에서는 호스트메모리블록에 대한 폴링을 통하여 블록덤프된 해당 호스트메모리블록의 데이터를 패킷프로세싱엔진(25) 측으로 전송하여 패킷프로세싱이 수행되도록 한 후, 호스트메모리부(22)의 해당 호스트메모리블록(도 4에서 호스트메모리블록(host 1.1), 호스트메모리블록(host 2.2))의 링버퍼 인덱스를 증가시키게 된다. 이후 해당 호스트메모리블록에 대한 수신 시그널 비트가 '1'로 체크될 때까지 계속해서 폴링과정을 반복하게 되는 것이다.
이러한 본 발명에 따른 멀티프로세서시스템의 호스트(20) 및 호스트프로세서(21) 등에 있어서는, 하드웨어/소프트웨어의 처리 성능에 따라 수신포트 1, 수신포트 2, 혹은 복수인 m개의 수신 포트에 대해서, 그리고 1개의 호스트메모리블록, 2개의 호스트메모리블록 또는 복수인 n개의 호스트블록에 대하여, 복수의 수신시그널 비트가 폴링되도록 구비될 수도 있을 것이다.
이에 더하여 본 발명에 따른 멀티프로세서시스템(A)의 호스트(20)는 듀얼코어 이상의 호스트프로세서(21)로 구비될 수 있도록 하는 멀티프로세싱 시스템으로 마련될 수도 있을 것이다. 즉 듀얼코어, 쿼드코어 등으로 구비될 수 있을 것이고, 이에 따라 1, 2, 4, 혹은 8개 이상의 프로세서로 하여 사용될 수도 있을 것이다.
즉 본 발명에 따른 멀티프로세서시스템(A)에서는 호스트프로세서(21)와 시스템의 성능에 따라 여러 개의 수신포트를 가진 인터페이스로 확장하여 설계할 수 있을 것이다. 하나의 서버 시스템 장비로 여러 망의 패킷들을 처리할 수 있게 되는 것이다.
이에 반하여 하나의 포트에 대해서만 한 개의 프로세서에 할당하여 사용될 경우에는 프로세서의 여유 자원이 부족하여 수신 시그널 비트에 대한 폴링 처리 이외에, 다른 애플리케이션에 사용되도록 하는 자원이 부족하게 될 수 있을 것이다. 따라서 본 발명에 따른 멀티프로세서시스템(A)에서는 하나의 호스트프로세서(21)에서 수개의 수신포트를 통하여 수신된 패킷 데이터를 처리하도록 마련된 것이다. 이에 이러한 복수 개의 프로세서로 되는 시스템의 OS에서 각 프로세서별로 처리되도록 마련될 수 있는 것이다. 따라서 1개의 호스트프로세서(21) 중의 어느 하나의 프로세서에서 호스트메모리부(22)의 2개 혹은 여러 개의 호스트메모리블록에 대한 폴링과정이 수행되도록 하고, 이에 따라 여러 개의 패킷수신포트를 통하여 수신된 패킷 데이터를 처리하도록 마련될 수도 있는 것이다.
그리고 상기 패킷프로세싱엔진(25)으로부터 결과 데이터를 호스트프로세서(21)에서 수신받아 패킷캡쳐카드(10) 측으로 전송되도록 하는 패킷프로세싱결과데이터 전송단계(S05)가 수행되는 것이다.
나아가 상기 호스트프로세서(21)로부터 전송된 프로세싱결과 데이터를 패킷캡쳐카드(10) 측에서 판별하여 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 드롭(DROP)되도록 하거나 또는 패킷송신포트(13)를 통하여 패스(PASS)되도록 처리하는 패킷 데이터처리단계(S06)가 수행되는 것이다.
즉 도 5에서의 예시된 도면을 참조하여 설명하면 다음과 같다.
- 명령 1 : 수신포트 1, 블록 1, 패킷 1 ==>> 차단(DROP)
- 명령 2 : 수신포트 1, 블록 1, 패킷 2 ==>> 통과(PASS)
- 명령 3 : 수신포트 1, 블록 2, 패킷 8 ==>> 통과(PASS)
이처럼 호스트(20)에서는 패킷캡쳐카드(10)를 통하여 전송된 패킷 데이터에 대하여 패킷의 추이, 감시, 무결성 등을 검증하는 패킷프로세싱을 수행하도록 패킷프로세싱엔진(25) 측으로 해당 패킷 데이터를 전송하게 된다. 그리하여 상기의 예에서와 같이 명령1에 대해서는 차단, 명령2와 명령3에 대해서는 통과로 하여 판별하게 된다. 그리하여 이러한 판별데이터를 패킷프로세싱엔진(25)에서 다시 호스트(20)의 호스트프로세서(21) 측으로 전송하게 되고, 패킷캡쳐카드(10)의 해당 수신포트번호, 해당 블록번호, 해당 패킷, 해당 블록에 대한 정보와 함께 이들에 대한 해당 패킷의 DROP 또는 PASS의 판별데이터 신호도 함께 호스트프로세서(21)에서 패킷캡쳐카드(10) 측으로 전송하게 되는 것이다. 이에 호스트(20)로부터 전송되는 패킷, 블록의 정보는 호스트(20)의 호스트메모리부(22)에 저장된 해당 패킷과 블록에 대한 정보로, 이러한 패킷과 블록의 정보는 이전 과정의 블록단위의 메모리 블록 덤프에 의하여, 동일한 구조로 하는 패킷캡쳐카드(10)의 패킷캡쳐카드메모리부(12)에서도 동일한 패킷 및 블록에 대한 판별정보가 되는 것이다.
즉 패킷캡쳐카드(10)에서는 호스트(20)로부터 패킷 프로세싱결과에 대한 패킷캡쳐카드(10)의 해당 수신 포트 번호, 해당 블록번호 및 해당 패킷번호에 대한 정보와 함께, 통과(PASS), 차단(DROP)의 명령을 수신받게 되고, 이에 따라 패킷캡쳐카드메모리부(12)의 해당 블록에 대한 데이터를 처리하게 되는 것이다. 그리고 DROP 패킷은 패킷캡쳐카드(10)에서 버려지고, PASS 패킷은 패킷 헤더를 제거 후 송신 포트를 통하여 전송되는 것이다. 즉 블록 1의 패킷 1은 버려지고, 이외 패킷들은 송신 포트를 통하여 전송된다.
또한 해당 블록이 패킷 프로세싱이 수행된 경우에는, 호스트(20)의 호스트메모리부(22)에서, 해당 블록에 대한 수신 시그널 비트를 '1'에서 '0'으로 변경하여, 해당 호스트메모리블록의 패킷프로세싱 수행이 완료되었음을 표기되도록 한다. 따라서 호스트프로세서(21)에서는 이처럼 수신 시그널 비트가 '0'으로 된 블록에 대한 폴링시에는 해당 블록에 대하여 패킷 프로세싱을 수행하지 않게 되는 것이다.
이처럼 본 발명에 따른 멀티프로세서시스템(A)에 의하면 1Gbps ~ 10Gbps 이상 등에서와 같은 고속의 트래픽을 요구하는 네트워크망에 흐르는 모든 패킷에 대하여, 트래픽의 추이, 감시, 무결성 등을 검증하고, 검증된 패킷만을 네트워크 망으로 보내야 하는 시스템에 적용될 수 있는 것이다.
그리고 상기 패킷캡쳐카드(10)는 패킷캡쳐카드메모리부(12)에 저장된 블록 단위의 패킷 데이터가 메모리콘트롤러(27)에 의하여 블록덤프로 호스트(20)의 호스트메모리부(22)로 저장되도록 구비되어지되, 상기 패킷캡쳐카드메모리부(12) 링버퍼와 호스트메모리부(22) 링버퍼의 차이가 90% 이상일 경우, 패킷캡쳐카드(10)에서는 호스트메모리부(22)로의 블록덤프가 정지되도록 하고, 패킷데이터를 판별하여, 해당 패킷 데이터가 통과(PASS) 또는 차단(DROP)되도록 구비될 수 있는 것이다.
이에 링버퍼 인덱스 차이가 90% 이하가 될 때까지 패킷 수신처리를 정지하여 패킷을 버리도록 구비되고, 링버퍼 인덱스 차이가 90% 이하가 될 때까지 호스트의 패킷프로세싱엔진 측으로의 전송이 정지되고 패킷송신포트로 전송되도록 구비되는 것이다.
이상으로 본 발명의 실시예에 대하여 상세히 설명하였으나, 이는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 일실시예를 기재한 것이므로, 상기 실시예의 기재에 의하여 본 발명의 기술적 사상이 제한적으로 해석되어서는 아니된다.
도 1은 본 발명에 따른 멀티프로세서시스템에 대한 개략적인 구성도.
도 2는 본 발명에 따른 멀티프로세서시스템에서 패킷프로세싱 대한 개략적인 순서도.
도 3은 본 발명에 따른 멀티프로세서시스템에서 포트별 블록 수신 시그널 인식에 대한 개략적인 처리예시도.
도 4는 본 발명에 따른 멀티프로세서시스템에서 패킷 수신 처리구조에 대한 개략적인 순서도.
도 5는 본 발명에 따른 멀티프로세서시스템에서 패킷 송신 처리구조에 대한 개략적인 예시도.
도 6은 본 발명에 따른 멀티프로세서시스템의 패킷캡쳐카드에서의 패킷수신처리에 대한 개략적인 순서도.
도 7은 본 발명에 따른 멀티프로세서시스템의 호스트에서의 패킷수신처리에 대한 개략적인 순서도.
도 8은 본 발명에 따른 멀티프로세서시스템에서의 실시간 고속 패킷 처리단계별 순서도.
<도면의 주요부분에 대한 부호의 설명>
A : 멀티프로세서시스템
10 : 패킷캡쳐카드 11 : 패킷수신포트
12 : 패킷캡쳐카드메모리부 13 : 패킷송신포트
20 : 호스트 21 : 호스트프로세서
22 : 호스트메모리부 25 : 패킷프로세싱엔진
27 : 메모리콘트롤러

Claims (8)

  1. 네트워크 망을 통하여 패킷 데이터를 수신받는 패킷캡쳐카드(10)가 구비되고,
    상기 패킷캡쳐카드(10)로부터 패킷 데이터를 수신받아 패킷의 추이, 감시, 무결성을 검증하는 패킷프로세싱이 수행하는 패킷프로세싱엔진(25)이 포함된 호스트(20)가 구비되며,
    상기 패킷캡쳐카드(10)는 네트워크 망으로부터 패킷 데이터를 수신받는 패킷수신포트(11)와, 상기 패킷수신포트(11)를 통하여 수신된 패킷 데이터가 블록단위로 저장되는 패킷캡쳐카드메모리부(12)와, 상기 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 네트워크 망으로 송신되도록 하는 패킷송신포트(13)가 포함되어 구비된 멀티프로세서시스템에 있어서,
    상기 호스트(20)는 상기 패킷캡쳐카드(10)로부터 전송되는 블록단위의 패킷 데이터가 저장되도록 하는 호스트메모리부(22)와,
    상기 호스트메모리부(22)에 패킷 데이터가 저장되었음을 판별하여 패킷프로세싱엔진(25)으로 패킷 데이터를 전송하도록 하는 호스트프로세서(21)가 구비되고,
    상기 패킷캡쳐카드(10)로부터 전송되는 블록단위의 패킷 데이터가 상기 호스트메모리부(22)에 저장되도록 하는 메모리콘트롤러(27)가 구비되며,
    상기 호스트(20)는 패킷프로세싱엔진(25)에 의해 수신된 패킷 데이터에 대하여 패킷의 추이, 감시, 무결성을 검증하는 패킷프로세싱을 수행하도록 하고, 상기 패킷캡쳐카드(10)의 해당 수신포트번호에 대한 정보, 해당 블록번호에 대한 정보, 해당 패킷에 대한 정보, 해당 블록에 대한 정보와 함께 이들에 대한 해당 패킷의 DROP 또는 PASS의 판별데이터 신호가 패킷캡쳐카드(10) 측으로 전송되도록 구비되며,
    상기 패킷캡쳐카드(10)에서는 상기 호스트(20)에서의 패킷 프로세싱결과에 따라 패킷캡쳐카드(10)의 해당 수신 포트 번호에 대한 정보, 해당 블록번호에 대한 정보, 해당 패킷에 대한 정보 및 해당 블록에 대한 정보와 함께, 통과(PASS), 차단(DROP)의 명령을 상기 호스트(20)로부터 수신받게 되고, 상기 패킷캡쳐카드메모리부(12) 저장된 해당 블록에 대한 데이터 중에서, DROP 대상의 패킷은 패킷캡쳐카드(10)에서 버려지고, PASS 대상의 패킷은 송신 포트를 통하여 전송되도록 구비되는 것을 특징으로 하는 실시간 고속 패킷 처리를 위한 멀티프로세서시스템.
  2. 제 1항에 있어서,
    상기 패킷캡쳐카드메모리부(12)는 상기 패킷수신포트(11)를 통하여 수신된 패킷 데이터가 저장되는 복수 개의 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n))이 구비되고,
    상기 호스트메모리부(22)는 복수 개의 호스트메모리블록(host(1.1), host(1.2), host(1.3), host(2.1), host(2.2), host(2.3),... host(m.n))이 구비되며,
    상기 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n)) 또는 상기 호스트메모리블록(host(1.1), host(1.2), host(1.3), host(2.1), host(2.2), host(2.3),... host(m.n))에는 블록번호, 패킷개수가 포함된 블록헤더, 패킷번호, 패킷길이가 포함된 패킷헤더, 그리고 패킷 데이터가 포함되어 구비되고,
    상기 패킷캡쳐카드(10)는 상기 네트워크메모리블록(net(1.1), net(1.2), net(1.3), net(2.1), net(2.2), net(2.3).. net(m.n))의 해당 네트워크메모리블록에 패킷 데이터가 저장된 경우에는 해당 네트워크메모리블록 주소의 수신시그널비트가 "1"로 변경되도록 하여 상기 호스트메모리부(22)로 전송하도록 구비되는 것을 특징으로 하는 실시간 고속 패킷 처리를 위한 멀티프로세서시스템.
  3. 제 2항에 있어서,
    상기 패킷캡쳐카드(10)는 상기 패킷캡쳐카드메모리부(12)의 복수 개의 네트워크메모리블록에 패킷들이 블록단위로 저장시, 하나의 네트워크메모리블록에서 패킷 길이의 총합이 Threshold 이상이 되면 다음 네트워크메모리블록에 저장되도록 구비되거나,
    또는 상기 패킷캡쳐카드(10)는 상기 패킷캡쳐카드메모리부(12)의 복수 개의 네트워크메모리블록에 패킷들이 블록단위로 저장시, 하나의 네트워크메모리블록에 저장되는 시간이 설정되어, 설정된 저장 시간이 경과된 경우에 다음 네트워크메모리블록에 저장되도록 하여 수신과 송신 사이의 지연(Latency)을 최소화되도록 구비되는 것을 특징으로 하는 실시간 고속 패킷 처리를 위한 멀티프로세서시스템.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제 1항 내지 제 3항 중 어느 한 항의 멀티프로세서시스템을 이용한 실시간 고속 패킷 처리방법에 있어서,
    네트워크 망을 통하여 전송된 패킷 데이터가 패킷수신포트(11)를 통하여 수신되어 패킷캡쳐카드메모리부(12)에 저장되도록 하는 패킷데이터수신단계(S01);
    상기 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 메모리콘트롤러(27) 측으로 전송되도록 하는 패킷데이터호스트전송단계(S02);
    상기 메모리콘트롤러(27)에서 호스트메모리부(22) 측으로 패킷 데이터가 전송되도록 하는 호스트메모리저장단계(S03);
    상기 호스트메모리부(22)에 저장된 패킷 데이터에 대하여 호스트프로세서(21)에서 패킷프로세싱엔진(25) 측으로 전송하여 패킷프로세싱되도록 하는 패킷프로세싱단계(S04);
    상기 패킷프로세싱엔진(25)으로부터 패킷프로세싱된 결과 데이터를 호스트프로세서(21)에서 수신받아 패킷캡쳐카드(10) 측으로 전송되도록 하는 패킷프로세싱결과데이터 전송단계(S05);
    상기 호스트프로세서(21)로부터 전송된 프로세싱결과 데이터를 패킷캡쳐카드(10) 측에서 판별하여 패킷캡쳐카드메모리부(12)에 저장된 패킷 데이터가 드롭되도록 하거나 또는 패킷송신포트(13)를 통하여 패스되도록 처리하는 패킷 데이터처리단계(S06)가 포함되어 구비되는 것을 특징으로 하는 멀티프로세서시스템을 이용한 실시간 고속 패킷 처리방법.
  8. 제 7항에 있어서,
    상기 패킷데이터호스트전송단계(S02)는 저장이 완료된 네트워크메모리블록의 해당 블록이 호스트 메모리 덤프로 전송되도록 구비되고,
    상기 호스트메모리저장단계(S03)에서는 상기 패킷데이터호스트전송단계(S02)에서 메모리덤프로 전송된 블록단위의 패킷 데이터가 호스트메모리블록에 저장되도록 구비되고, 해당 호스트메모리블록 주소의 수신시그널비트가 "1"이 되도록 구비되는 것을 특징으로 하는 멀티프로세서시스템을 이용한 실시간 고속 패킷 처리방법.
KR1020090065851A 2009-07-20 2009-07-20 실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법 KR101062148B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090065851A KR101062148B1 (ko) 2009-07-20 2009-07-20 실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090065851A KR101062148B1 (ko) 2009-07-20 2009-07-20 실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법

Publications (2)

Publication Number Publication Date
KR20110008485A KR20110008485A (ko) 2011-01-27
KR101062148B1 true KR101062148B1 (ko) 2011-09-05

Family

ID=43614478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090065851A KR101062148B1 (ko) 2009-07-20 2009-07-20 실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법

Country Status (1)

Country Link
KR (1) KR101062148B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101456605B1 (ko) * 2011-11-22 2014-11-03 (주)랜버드 테크놀러지 멀티프로세서를 이용한 패킷 처리 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101245261B1 (ko) * 2011-03-03 2013-03-19 (주)네오위즈게임즈 패킷 덤핑 시스템, 관리단말 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101456605B1 (ko) * 2011-11-22 2014-11-03 (주)랜버드 테크놀러지 멀티프로세서를 이용한 패킷 처리 장치

Also Published As

Publication number Publication date
KR20110008485A (ko) 2011-01-27

Similar Documents

Publication Publication Date Title
US8358655B2 (en) Computer system and network interface supporting class of service queues
US7240130B2 (en) Method of transmitting data through an 12C router
US6970921B1 (en) Network interface supporting virtual paths for quality of service
US8949582B2 (en) Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
US20140068134A1 (en) Data transmission apparatus, system, and method
US10887252B2 (en) Efficient scatter-gather over an uplink
US20040107361A1 (en) System for high speed network intrusion detection
US8683221B2 (en) Configurable memory encryption with constant pipeline delay in a multi-core processor
US10078543B2 (en) Correctable error filtering for input/output subsystem
US7630304B2 (en) Method of overflow recovery of I2C packets on an I2C router
US8885480B2 (en) Packet priority in a network processor
US9866639B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
CN109657463B (zh) 一种报文洪泛攻击的防御方法及装置
CN112995238B (zh) 一种减轻DDoS攻击的方法、可编程交换机及SDN控制器
US8438641B2 (en) Security protocol processing for anti-replay protection
US20040255070A1 (en) Inter-integrated circuit router for supporting independent transmission rates
KR101062148B1 (ko) 실시간 고속 패킷 처리를 위한 멀티프로세서시스템 및 이를 이용한 실시간 고속 패킷 처리방법
US8402320B2 (en) Input/output device including a mechanism for error handling in multiple processor and multi-function systems
US11228668B2 (en) Efficient packet processing for express data paths
EP3466015B1 (en) Method and network node for handling sctp packets
US9906468B2 (en) Packet traffic control in a network processor
US9270686B1 (en) Zero copy packet buffering using shadow sends
US8289966B1 (en) Packet ingress/egress block and system and method for receiving, transmitting, and managing packetized data
US10599549B2 (en) Packet backpressure detection method, apparatus, and device
JP2009116561A (ja) データ転送システム

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140807

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150914

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151105

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170727

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180830

Year of fee payment: 8