KR101115098B1 - Flow processing unit and method for controlling flow processing unit - Google Patents

Flow processing unit and method for controlling flow processing unit Download PDF

Info

Publication number
KR101115098B1
KR101115098B1 KR1020100025325A KR20100025325A KR101115098B1 KR 101115098 B1 KR101115098 B1 KR 101115098B1 KR 1020100025325 A KR1020100025325 A KR 1020100025325A KR 20100025325 A KR20100025325 A KR 20100025325A KR 101115098 B1 KR101115098 B1 KR 101115098B1
Authority
KR
South Korea
Prior art keywords
flow
processing unit
session
core
packet
Prior art date
Application number
KR1020100025325A
Other languages
Korean (ko)
Other versions
KR20110106096A (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 KR1020100025325A priority Critical patent/KR101115098B1/en
Publication of KR20110106096A publication Critical patent/KR20110106096A/en
Application granted granted Critical
Publication of KR101115098B1 publication Critical patent/KR101115098B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control

Landscapes

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

Abstract

서버 기반의 UTM(Unified Thread Management) 플랫폼에서 패킷이 아닌, 플로우(flow) 단위로 처리 함으로써, 성능을 획기적으로 개선할 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 개시한다.
일 실시예로서, 플로우 프로세싱 유닛은, 입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우로 결정하고, 상기 결정된 플로우에 대해 세션을 부여하는 컨트롤러, 및 상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리하는 프로세서를 포함하여 구성할 수 있다.
Disclosed are a flow processing unit and a flow processing unit control method capable of significantly improving performance by processing in a flow unit rather than a packet in a server-based Unified Thread Management (UTM) platform.
In one embodiment, the flow processing unit comprises a controller for determining an input packet, an output packet corresponding to the input packet as a single flow, and granting a session to the determined flow, and a core assigned to the session. It can be configured to include a processor for signal processing for the flow.

Description

플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법{FLOW PROCESSING UNIT AND METHOD FOR CONTROLLING FLOW PROCESSING UNIT}FLOW PROCESSING UNIT AND METHOD FOR CONTROLLING FLOW PROCESSING UNIT}

본 발명의 실시예들은 플로우 프로세싱 유닛(Flow Processing Unit, FPU) 및 플로우 프로세싱 유닛 제어 방법에 관한 것이다.Embodiments of the present invention relate to a flow processing unit (FPU) and a flow processing unit control method.

일반적으로, 인터넷은 접속 시 별도의 사용자 인증 절차가 필요 없기 때문에 보안에 취약하다. 이에 따라, 초기에는 외부에서 내부망을 보호하기 위한 방화벽이 개발되었으며, 이후, 패킷 페이로드(Payload)에 감춰진 유해 패턴을 검사하는 침입방지시스템(IPS)과, 웹 방화벽, Anti-Virus, SIP 보안 등 어플리케이션 별로 그 영역이 전문화, 확대되고 있다.In general, the Internet is vulnerable to security because the Internet does not require a separate user authentication procedure. As a result, a firewall was developed to protect the internal network from the outside, and then, an intrusion prevention system (IPS) that inspects harmful patterns hidden in the packet payload, web firewall, anti-virus, and SIP security. This area is specialized and expanded by application.

보안 영역이 확대 됨에 따라, 여러 보안장비의 관리 및 운영에 따른 비용 증가, 보안장비간 정책 불일치로 인한 보안성 저하 문제가 대두되어, 2005년부터 통합보안장비(Unified Threat Management)가 네트워크 보안장비의 대세를 이루고 있다.As the security area expands, the increased security costs associated with the management and operation of various security devices and the deterioration of security due to policy inconsistency among security devices have emerged. It is in full swing.

또한, 광대역 인터넷 속도의 증가, 스마트 폰 보급에 따른 무선 인터넷 트래픽 증가는 네트워크 대역폭을 증대시켜 고성능 보안장비를 요구하고 있다.In addition, the increase of broadband Internet speed and the increase of wireless Internet traffic due to the spread of smart phones have increased the network bandwidth and demand high performance security equipment.

종래 고성능의 전문장비는 H/W 방식의 개발방법을 취하고, 복합기능의 범용장비는 S/W 방식의 개발방법을 취하였으나, 현재는 고성능과 복합기능을 동시에 해결하는 방법론이 요구되고 있다.Conventional high-performance professional equipment takes the development method of the H / W method, the general-purpose equipment of the composite function has taken the development method of the S / W method, but now a methodology for solving the high performance and complex functions at the same time is required.

고성능을 해결하기 위한 NPU(Network Processor Unit, Intel의 IXP2400 시리즈), ASIC, NSP(Network Security Processor, Cavium사의 Octeon 시리즈) 방식은 근본적으로 날로 발전해가는 이질적이고, 혼합적인 공격에 대응하는 데 한계를 가진다. 또한, 범용 서버 보드에서 S/W기반 UTM은 네트워크 트래픽 처리만으로도 대부분의 CPU 자원을 소진하여 다양한 보안기능을 처리하기 어렵다.The NPU (Network Processor Unit, Intel's IXP2400 series), ASIC, and NSP (Network Security Processor, Cavium's Octeon series) methods for solving high performance are fundamentally limited in responding to increasingly heterogeneous and mixed attacks. . In addition, S / W-based UTM on general-purpose server boards consumes most of the CPU resources just by processing network traffic, making it difficult to handle various security functions.

도 1은 종래의 일실시예에 따른 서버 기반의 네트워크 보안장비의 구조를 도시한 도면이다.1 is a diagram illustrating the structure of a server-based network security equipment according to a conventional embodiment.

도 1에는 전형적인 PC 서버 하드웨어 기반의 보안장비 시스템의 구조가 도시되어 있다. PCI 버스에 NIC(Network Interface Card)가 장착되어, 네트워크는 물리적으로 내부망과 외부망(또는 Trust망과 Un-Trust망)으로 분리되며, 모든 네트워크를 지나가는 패킷에 대해서 보안 기능이 수행된다.Figure 1 shows the structure of a typical PC server hardware based security equipment system. With a network interface card (NIC) on the PCI bus, the network is physically separated into an internal network and an external network (or a trust network and an un-trust network), and security functions are performed on packets passing through all networks.

보안 정책에 대한 적합 여부, 패킷의 페이로드에서 유해 데이터 여부, 그리고, 외부의 도청/위조에 대비한 암호화 및 인증과 같은 보안 기능의 주 용도에 따라, 네트워크 보안 장비는 방화벽, IPS(Intrusion Prevention System), VPN(Virtual Private Network), WAF(Web Application Firewall), AV(Anti-Virus), AS(Anti-Spam)으로 나뉘며, 최근에는 이런 기능이 통합되어 UTM(Unified Thread Management) 제품군이 등장하게 된다.Depending on compliance with security policies, the presence of harmful data in the payload of packets, and the primary use of security features such as encryption and authentication against external eavesdropping / forgeries, network security devices can be classified into firewalls, IPS (Intrusion Prevention System) ), Virtual Private Network (VPN), Web Application Firewall (WAF), Anti-Virus (AV), and Anti-Spam (AS) .In recent years, these functions have been integrated to introduce the UTM (Unified Thread Management) product line. .

각 보안기능은 어플리케이션(application) 영역에서 Proxy 형태로 구현하거나, 성능을 빠르게 하기 위해 Kernel 영역에서 구현될 수 있으며, UTM 제품에서는 이들 방법을 혼재하여 구현하고 있다.Each security function can be implemented in the form of proxy in the application area or in the kernel area for faster performance. UTM products implement these methods in a mixture.

흔히, Proxy 방식은 어플리케이션 레이어에서 동작하기 때문에 Network input/output(I/O)이 발생할 때마다, 커널-App 영역간 패킷 내용의 복사로 오버헤드가 매우 높다. 하지만, Proxy로 구현되는 만큼 정교한 제어가 가능하며 보안성 검토를 자세하게 확인할 수 있다. 이에 따라, 일반적으로 Anti-Virus 제품은 Proxy로 구현되고 있다.In general, since the Proxy method operates at the application layer, whenever network input / output (I / O) occurs, the overhead of copying packet contents between kernel and app areas is very high. However, as it is implemented as a proxy, it can control precisely and check the security review in detail. Accordingly, Anti-Virus products are generally implemented as proxies.

앞서 보여준 보안장비 구조는 일반 시스템에서 소프트웨어만으로 보안기능을 구현하는 경우이다. 보안기능은 소프트웨어에 전적으로 의존하므로 어떠한 보안기능도 구현 가능하다.The security equipment structure shown above is a case where the security function is implemented only by software in a general system. Since security functions depend entirely on software, any security function can be implemented.

하지만, 네트워크 장비의 중요한 평가지수로 성능지수가 있다. 라우터는 PPS로 장비의 성능을 측정하며 기본적으로 제공하는 기능으로 인해 성능이 떨어지지 않아야 한다. 즉, 어떤 패킷에 대해서도 Wire-Speed를 제공하는 것이 목표가 되겠다.However, there is a performance index as an important evaluation index of network equipment. Routers measure the performance of their equipment in PPS and should not degrade due to the features they provide. In other words, the goal is to provide wire-speed for any packet.

아래 표 1에는 1Gbps 대역폭에 존재하는 패킷 크기별 개수가 도시되어 있다.Table 1 below shows the number of packet sizes in the 1 Gbps bandwidth.

Figure 112010017998661-pat00001
Figure 112010017998661-pat00001

1Gbps 네트워크 환경에서 양방향 통신(Full Duplex)로 운영할 시 보안장비를 통과하는 패킷 개수는 최대 3백만 개에 이른다. 즉, 1Gbps 2포트 보안장비는 3백만 개의 패킷을 읽고 정책을 검사하고 다른 인터페이스로 패킷을 포워딩해야 wire-speed가 보장되는 것이다.When operating in full duplex in a 1Gbps network environment, up to 3 million packets pass through security devices. In other words, a 1Gbps two-port security device must read 3 million packets, inspect the policy, and forward the packets to another interface to ensure wire-speed.

현재 3.0GHz 프로세서가 ILP(명령어 수준의 병렬처리)까지 고려 했을 때 1코어당 6000MIPS 정도 된다. 즉, 프로세서는 1초에 6000M 인스트럭션을 수행할 수 있으며, 전체 인스트럭션을 패킷 처리에만 사용할 경우 1패킷당 2000 인스트럭션 내에 처리가 완결되어야 함을 의미한다.Today's 3.0 GHz processors take into account ILP (Instruction Level Parallelism), which is about 6000 MIPS per core. That is, the processor can execute 6000M instructions in one second, and if the entire instruction is used only for packet processing, it means that the processing must be completed within 2000 instructions per packet.

패킷처리를 크게 작업단위로 나열하면, 『인터럽트 모드로 진입 → NIC ISR 처리 → 패킷에 대해 정책 검사 → 라우팅 테이블 검사 → 다음 NIC로 패킷 송신 →인터럽트 모드에서 exit』와 같다.If packet processing is largely listed as a unit of work, it is equivalent to `` enter interrupt mode → NIC ISR processing → check policy for packet → check routing table → send packet to next NIC → exit from interrupt mode ''.

예를 들어, NIS ISR 처리만 하더라도 패킷 메모리 할당, 패킷 멀티케스트 주소 유무 확인, NIC 관련 디스크립터 작업, 패킷에 대한 프로토콜별 sanity check 작업 등 작업 체인이 길어 전체 필요 인스트럭션 수는 수십 K 라인을 넘어선다. 따라서, 서버 기반의 네트워크 보안장비는 wire-speed에 현격히 떨어지는 성능만 제공되며 이러한 성능을 극복하기 위해 여러 가지 하드웨어 기술이 소개되고 있다.For example, even with NIS ISR processing, the total number of instructions is more than a few tens of K lines because of the long chain of tasks such as packet memory allocation, packet multicast address checking, NIC-related descriptors, and protocol-specific sanity checks. As a result, server-based network security devices offer significantly less performance at wire-speed, and several hardware technologies have been introduced to overcome these capabilities.

ASIC 기반, NPU(Network Processor Unit) 기반, NSP(Network Security Processor) 기반, Server Blade 기반 여러 기술이 소개되고 있으나, UTM처럼 보안기능이 점점 복잡해지고 있어 적용에 어려움이 있다. 이에 따라, 기능을 단순화시키고 전용하드웨어를 채택한 고성능 전문 보안제품과, 일반 서버 기반의 통합 네트워크 보안제품이 병존하고 있는 실정이다.ASIC-based, NPU (Network Processor Unit) -based, NSP (Network Security Processor) -based, and Server Blade-based technologies are being introduced, but security functions are becoming more complex, like UTM. Accordingly, high-performance professional security products that simplify functions and adopt dedicated hardware and general network-based integrated network security products coexist.

하지만, 공격이 L3에서 L7으로 옮겨가고 있고, 이질적이며 복합적이고 혼합공격이 발생하면서, 고성능의 UTM 장비를 제작하는 방법론이 요구되고 있다. ASIC, NPU, NSP 방법에 따르면, 단순한 보안장비만을 제작할 수 있다.However, as attacks move from L3 to L7, heterogeneous, complex and mixed attacks occur, there is a need for a methodology for building high-performance UTM equipment. According to the ASIC, NPU, and NSP methods, only simple security equipment can be manufactured.

기존 서버기반의 하드웨어의 문제점으로는, 우선, 과도한 Network I/O 연산 문제가 있다. 원래 서버는 제한된 어플리케이션을 효율적으로 운영하기 위해 고안된 컴퓨터 시스템이다. 즉, TCP/IP 통신 프로토콜이 OSI 통신 표준으로 자리 잡으면서 클라이언트-서버 모델이라는 어플리케이션 표준 개발 방법론이 도입되었으며, 서버 시스템도 이에 맞춰 개발되었다. 이하, 도 2와 도 3을 참조하여, 기존 서버기반의 하드웨어에서 과도한 Network I/O 연산 문제를 설명한다.The problem with the existing server-based hardware, first of all, is the excessive network I / O operation problem. Originally, a server is a computer system designed to run limited applications efficiently. In other words, as the TCP / IP communication protocol became an OSI communication standard, an application standard development methodology called a client-server model was introduced, and a server system was developed accordingly. Hereinafter, referring to FIGS. 2 and 3, excessive network I / O operation problems in the existing server-based hardware will be described.

도 2는 종래의 일실시예에 따른 서버 기반의 하드웨어에서, 웹 또는 메일 서비스가 운영되는 과정을 도시한 도면이다.2 is a diagram illustrating a process of operating a web or mail service in server-based hardware according to an exemplary embodiment.

도 2를 참조하면, 외부로부터 수신되는 패킷이 서비스 데몬으로 입력되거나, 또는 서비스 데몬에서 외부로 응답 패킷이 출력된다. 즉, NIC 카드와, NIC ISR, 및 서비스 데몬은 각각 자연스럽게 연결되며, 이에 따라, 서버의 자원이 효과적으로 서비스에 할당되는 구조를 보인다.Referring to FIG. 2, a packet received from the outside is input to the service daemon, or a response packet is output from the service daemon to the outside. That is, the NIC card, the NIC ISR, and the service daemon are naturally connected to each other, and thus, a server resource is effectively allocated to the service.

도 3은 종래의 일실시예에 따른 서버 기반의 하드웨어에서, 네트워크 보안장비로 운영되는 과정을 도시한 도면이다.3 is a diagram illustrating a process of operating as a network security device in a server-based hardware according to an embodiment of the present invention.

도 3을 참조하면, 보안장비에서 보안 모듈은 기본적으로 bypass 또는 drop을 수행할 수 있다. 그런데, 기존 하드웨어에서는 작업이 세분화됨에 따라, 패킷 처리에 CPU 리소스의 대부분이 소진되는 문제점이 있다. 즉, bypass라는 한 작업단위는 먼저 eth0 NIC ISR에서 Rx 수신 처리하는 1단계와, eth1 NIC로 Tx 전송 후 ISR 처리로 2단계로 나뉘어 처리되면서, CPU 리소스를 낭비하게 된다.Referring to FIG. 3, the security module in the security device may basically perform bypass or drop. However, in the existing hardware, as the work is broken down, most of the CPU resources are exhausted in packet processing. In other words, a work unit called bypass is divided into two stages: first step of receiving Rx from eth0 NIC ISR and two steps of ISR processing after transmitting Tx to eth1 NIC, thus wasting CPU resources.

기존 서버기반의 하드웨어의 또 다른 문제점으로는, 멀티코어 수 증가에 따른 성능 향상 제약이 있다. 프로세서의 성능 향상은 기존의 동작 주파수 증대에서 점차 운영되는 코어 수를 늘리는 멀티코어로 바뀌고 있다. 소프트웨어 입장에서 보자면 기존에 SMP(Shared Memory Processor) 구성과 동일하며, 단지 프로세서 숫자가 2개에서 4개~8개로 늘어나는 것과 동일하다. 서버 기반 네트워크 보안장비의 성능은 멀티코어를 효과적으로 사용해야 하는데, NIC 기반에서는 원천적으로 코어 수와 비례한 성능 향상을 얻기 어렵다. 이하, 도 4를 참조하여, 기존 서버기반의 하드웨어에서 성능 향상 제약 문제를 설명한다.Another problem of the existing server-based hardware, there is a performance improvement constraints due to the increase in the number of multicores. Processor performance improvements are shifting from traditional operating frequency increases to multicores, which increase the number of operating cores. From a software perspective, it's the same as the traditional Shared Memory Processor (SMP) configuration, just as the number of processors increases from two to four to eight. The performance of server-based network security equipment should use multicore effectively, and it is difficult to achieve performance increase in proportion to the number of cores inherent in NIC-based network. Hereinafter, with reference to FIG. 4, the performance improvement constraint problem in the existing server-based hardware.

도 4는 종래의 일실시예에 따른 서버 기반의 네트워크 보안장비에서 패킷을 처리하는 과정을 도시한 도면이다.4 is a diagram illustrating a process of processing a packet in a server-based network security device according to an exemplary embodiment.

도 4를 참조하면, 내부망에 eth0, 외부인터넷망에 eth1이 연결되어 있다고 하면, eth0, eht1 NIC(NETWORK INTERFACE CARD)는 각각 IRQ를 CPU0, CPU1에 binding하여 NIC ISR 처리량(throughput)을 증대시킨다.Referring to FIG. 4, if eth0 is connected to the internal network and eth1 is connected to the external internet network, the eth0 and eht1 NICs (NETWORK INTERFACE CARD) bind the IRQs to CPU0 and CPU1 to increase the NIC ISR throughput. .

내부 IP A에서 외부 웹서버 B로 접속했을 때, 클라이언트에서 웹서버로 출력되는 패킷은 CPU0에서 처리하고, 웹서버에서 Client로 입력되는 패킷은 CPU1에서 처리된다. 이때, 패킷의 형태, IP 또는 포트 값이 달라도, 동일 작업으로서 세션을 기반으로 처리되어야 한다.When connecting from the internal IP A to the external web server B, the packet output from the client to the web server is processed by CPU0, and the packet input from the web server to the client is processed by CPU1. At this time, even if the packet type, IP, or port value is different, it should be processed based on the session as the same operation.

즉, 세션테이블에 접근할 때는 consistency를 유지하기 위해 동기화 연산이 필요하며, 동일 세션을 처리할 때는 코어 수에 관계 없이 한 개 코어에서만 작업이 진행되고, 나머지 코어는 spinlock이 풀릴 때까지 대기상태가 된다.In other words, when accessing the session table, a synchronization operation is required to maintain consistency.When processing the same session, work is performed on only one core regardless of the number of cores, and the other cores are idle until the spinlock is released. do.

기존의 웹/메일 서버에서는 패킷 단위로 처리하면 충분하지만, 네트워크 보안 모듈에서 패킷 단위로 처리하면 메커니즘과 맞지 않게 된다. 지속적으로 위협의 형태가 복합적, 이질적, 혼합적으로 진화하고 있어 단일 보안 장비를 Cascade로 연결해서는 공격에 대응할 수 없다. 따라서, UTM 플랫폼을 서버 기반으로 하되, 성능을 획기적으로 개선할 수 있는 방법이 필요하게 되었다. 이와 같이 성능을 개선하기 위한 방안으로, 본 발명에서는 패킷이 아닌, 플로우(flow) 단위로 처리 가능한 네트워크 보안장비를 제안하고자 한다.In a traditional web / mail server, processing by packet is sufficient, but processing by packet in a network security module does not fit the mechanism. As threats continue to evolve in a complex, heterogeneous, or mixed fashion, connecting single security devices to cascades cannot cope with attacks. Therefore, there is a need for a method that is based on the UTM platform, but can dramatically improve performance. As a method for improving performance as described above, the present invention is to propose a network security equipment that can be processed in units of flows, not packets.

본 발명의 일실시예는 서버 기반의 UTM(Unified Thread Management) 플랫폼에서 패킷이 아닌, 플로우(flow) 단위로 처리 함으로써, 성능을 획기적으로 개선할 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.An embodiment of the present invention provides a method for controlling a flow processing unit and a flow processing unit that can significantly improve performance by processing a flow unit rather than a packet in a server-based Unified Thread Management (UTM) platform. do.

또한, 본 발명의 일실시예는 네트워크 장비에서 패킷 처리 작업단위인 패킷 포워딩을 기본으로 하는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method based on packet forwarding which is a packet processing work unit in a network equipment.

또한, 본 발명의 일실시예는 카드 내 포트간 패킷 포워딩에 따르는 호스트 작업을 최소화할 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method capable of minimizing a host operation due to packet forwarding between ports in a card.

또한, 본 발명의 일실시예는 패킷 저장용 버퍼에 대한 alloc/free 로직을 직접 수행할 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method capable of directly performing alloc / free logic on a packet storing buffer.

또한, 본 발명의 일실시예는 TCP/UDP Checksum 계산 및 단일 연산으로 포트간 패킷 포워딩을 수행할 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method capable of performing packet forwarding between ports in a TCP / UDP checksum calculation and a single operation.

또한, 본 발명의 일실시예는 패킷에 세션정보를 유지하여 호스트에서 세션 동기화 작업을 경감시킬 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method capable of reducing session synchronization work in a host by maintaining session information in a packet.

또한, 본 발명의 일실시예는 서버 기반의 하드웨어에서 패킷 포워딩 처리를 함으로써, 기존 NIC 카드에서 패킷 포워딩을 하는데 따른 Network I/O instruction(ISR) 부하가 원천적으로 경감될 수 있도록 하는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention is a flow processing unit for reducing the network I / O instruction (ISR) load due to packet forwarding in the existing NIC card by performing packet forwarding processing in server-based hardware and A flow processing unit control method is provided.

또한, 본 발명의 일실시예는 자체적으로 세션을 유지하여 동일 세션 내 패킷은 동일 CPU에게로 인터럽트를 발생시켜, 세션 동기화 비용을 제거할 수 있는 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method capable of eliminating session synchronization costs by maintaining a session on its own, causing packets in the same session to interrupt the same CPU.

또한, 본 발명의 일실시예는 다중 GbE MAC를 포함한 FPGA에서 구현 가능하고, 기존 PC 서버 보드에서도 충분히 빠른 고성능의 UTM 보안장비 제작이 가능한 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법을 제공한다.In addition, an embodiment of the present invention provides a flow processing unit and a flow processing unit control method that can be implemented in an FPGA including a multi-GbE MAC, and capable of producing a high performance UTM security device that is fast enough even in an existing PC server board.

상기의 목적을 이루기 위한, 플로우 프로세싱 유닛은, 입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우로 결정하고, 상기 결정된 플로우에 대해 세션을 부여하는 컨트롤러, 및 상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리하는 프로세서를 포함한다.In order to achieve the above object, a flow processing unit includes an input packet, a controller for determining an output packet corresponding to the input packet as a single flow and granting a session to the determined flow, and a core assigned to the session. And a processor for signal processing for the flow.

또한, 상기 목적을 달성하기 위한 기술적 방법으로서, 플로우 프로세싱 유닛 제어 방법은, 입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우로 결정하는 단계와, 상기 결정된 플로우에 대해 세션을 부여하는 단계, 및 상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리하는 단계를 포함한다.In addition, as a technical method for achieving the above object, the flow processing unit control method, the step of determining the input packet, the output packet corresponding to the input packet as a single flow, and granting a session to the determined flow And signaling the flow at the core assigned to the session.

본 발명의 일실시예에 따르면, 서버 기반의 UTM(Unified Thread Management) 플랫폼에서 패킷이 아닌, 플로우(flow) 단위로 처리 함으로써, 성능을 획기적으로 개선할 수 있게 된다.According to one embodiment of the present invention, performance can be dramatically improved by processing in units of flows rather than packets in a server-based Unified Thread Management (UTM) platform.

또한, 본 발명의 일실시예에 따르면, 서버 기반의 하드웨어에서 패킷 포워딩 처리를 함으로써, 기존 NIC 카드에서 패킷 포워딩에 소요되는 패킷 수신 또는 패킷 송신에 관한 ISR 처리가 필요 없게 된다.In addition, according to an embodiment of the present invention, by performing the packet forwarding process in the server-based hardware, there is no need for ISR processing for packet reception or packet transmission required for packet forwarding in the existing NIC card.

또한, 본 발명의 일실시예에 따르면, 패킷에 세션정보를 유지하여 호스트에서 세션 동기화 작업을 경감시킬 수 있고, 이에 따라, SMP(Security Management Portal) 시스템에서 멀티코어 수 증대에 따른 성능 확장성(Scalability)을 얻을 수 있게 된다.In addition, according to an embodiment of the present invention, by maintaining the session information in the packet it is possible to reduce the session synchronization operation in the host, accordingly, performance scalability according to the increase in the number of multi-core in the SMP (Security Management Portal) system ( Scalability) can be obtained.

도 1은 종래의 일실시예에 따른 서버 기반의 네트워크 보안장비의 구조를 도시한 도면이다.
도 2는 종래의 일실시예에 따른 서버 기반의 하드웨어에서, 웹 또는 메일 서비스가 운영되는 과정을 도시한 도면이다.
도 3은 종래의 일실시예에 따른 서버 기반의 하드웨어에서, 네트워크 보안장비로 운영되는 과정을 도시한 도면이다.
도 4는 종래의 일실시예에 따른 서버 기반의 네트워크 보안장비에서 패킷을 처리하는 과정을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 플로우 프로세싱 유닛의 내부구성을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 플로우 프로세싱 유닛에서, 패킷 포워딩을 처리하는 일례를 도시한 도면이다.
도 7는 본 발명의 일실시예에 따른 플로우 프로세싱 유닛에서, 동일한 세션 내 패킷을 처리하는 일례를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 플로우 프로세싱 유닛 제어 방법의 순서를 도시한 흐름도이다.
1 is a diagram illustrating the structure of a server-based network security equipment according to a conventional embodiment.
2 is a diagram illustrating a process of operating a web or mail service in server-based hardware according to an exemplary embodiment.
3 is a diagram illustrating a process of operating as a network security device in a server-based hardware according to an embodiment of the present invention.
4 is a diagram illustrating a process of processing a packet in a server-based network security device according to an exemplary embodiment.
5 is a diagram illustrating an internal configuration of a flow processing unit according to an embodiment of the present invention.
6 is a diagram illustrating an example of processing packet forwarding in a flow processing unit according to an embodiment of the present invention.
7 is a diagram illustrating an example of processing a packet in the same session in a flow processing unit according to an embodiment of the present invention.
8 is a flowchart illustrating a sequence of a method for controlling a flow processing unit according to an embodiment of the present invention.

이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited or limited by the embodiments. Like reference numerals in the drawings denote like elements.

도 5는 본 발명의 일실시예에 따른 플로우 프로세싱 유닛의 내부구성을 도시한 도면이다.5 is a diagram illustrating an internal configuration of a flow processing unit according to an embodiment of the present invention.

도 5를 참조하면, 본 발명의 일실시예에 따른 플로우 프로세싱 유닛(Flow Processing Unit, FPU)(500)은 컨트롤러(510) 및 프로세서(520)를 포함하여 구성될 수 있다. 또한, 본 발명의 다른 실시예에 따른 플로우 프로세싱 유닛(500)은 데이터베이스(530)를 더 포함하여 구성될 수도 있다.Referring to FIG. 5, a flow processing unit (FPU) 500 according to an embodiment of the present invention may include a controller 510 and a processor 520. In addition, the flow processing unit 500 according to another embodiment of the present invention may further include a database 530.

컨트롤러(510)는 입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우(flow)로 결정하고, 상기 결정된 플로우에 대해 세션을 부여하는 역할을 한다.The controller 510 determines an input packet and an output packet corresponding to the input packet as a single flow and assigns a session to the determined flow.

일례로, 데이터베이스(530)는 플로우 별 부여되는 세션과, 상기 코어에 관한 코어정보를 대응시켜 기록할 수 있으며, 컨트롤러(510)는 제1 포트를 경유하는 입력 패킷으로부터 코어정보를 획득하고, 상기 획득한 코어정보와 대응하여 기록된 세션을 데이터베이스(530)에서 검색하며, 상기 검색된 세션을 상기 입력 패킷이 속하는 플로우에 부여할 수 있다.For example, the database 530 may record the session-specific session and the core information about the core in correspondence with each other, and the controller 510 obtains the core information from the input packet via the first port. The session recorded in correspondence with the acquired core information may be searched in the database 530, and the searched session may be assigned to a flow to which the input packet belongs.

프로세서(520)는 상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리하는 역할을 한다. 일례로, 프로세서(520)는 복수의 코어 중에서, 세션에 기할당되지 않은 코어, 또는 가장 적은 사용량을 갖는 코어를, 상기 세션에 할당할 수 있다.The processor 520 is responsible for signaling the flow in the core assigned to the session. In one example, the processor 520 may allocate, among the plurality of cores, a core not assigned to the session or a core having the least amount of usage to the session.

이때, 프로세서(520)는 디스크립터(540)를 포함하여 구성될 수 있다.In this case, the processor 520 may include a descriptor 540.

여기서, 디스크립터(540)는 제1 포트를 경유하는 입력 패킷에 관한 디스크립트 정보를 보관되는 코어 내 버퍼를 지정하는 역할을 할 수 있다.Here, the descriptor 540 may serve to designate a buffer in the core that stores the descriptive information regarding the input packet via the first port.

즉, 디스크립터(540)는 상기 입력 패킷이 속하는 플로우의 출력 패킷에 대한 신호 처리시, 프로세서(520)에 의해, 상기 지정된 버퍼로부터 상기 디스크립트 정보가 획득되도록 할 수 있다.That is, the descriptor 540 may cause the processor 520 to acquire the descriptive information from the designated buffer when processing a signal for an output packet of a flow to which the input packet belongs.

예를 들어, 플로우 프로세싱 유닛(500)은 ⅰ) MAC에서 패킷을 수신하고, ⅱ) IP/TCP 헤더에서 5-tuple 정보를 추출하여 기존 세션테이블에서 검색하고, ⅲ) 신규 세션이면 세션테이블에 등록하고 사용량이 적은 코어를 할당하고, ⅳ) 기존 세션테이블이 존재하면 해당 세션에 기 할당된 코어 정보를 얻고, ⅴ) 버퍼 Pool에서 패킷 버퍼를 할당하고 패킷을 버퍼로 DMA 전송하고, ⅵ) 코어별 Ring Descriptor 내용을 업데이트하고, ⅶ) 해당 코어에게 MSI/MSI-X 인터럽트를 발생시킴으로써, 패킷을 수신 처리할 수 있게 된다.For example, the flow processing unit 500 i) receives a packet from the MAC, ii) extracts 5-tuple information from the IP / TCP header, retrieves it from the existing session table, and iii) registers it in the session table if it is a new session. Allocate cores with low usage, iii) If there is an existing session table, obtain the core information pre-allocated for the session, iii) Allocate a packet buffer in the buffer pool, DMA transfer the packet to the buffer, and iv) By updating the contents of the ring descriptor and iii) generating an MSI / MSI-X interrupt to the core, the packet can be received and processed.

따라서, 본 발명의 일실시예에 따르면, 서버 기반의 UTM(Unified Thread Management) 플랫폼에서 패킷이 아닌, 플로우(flow) 단위로 처리 함으로써, 성능을 획기적으로 개선할 수 있게 된다.Therefore, according to an embodiment of the present invention, the server-based Unified Thread Management (UTM) platform, by processing the flow (units) rather than packets, it is possible to significantly improve the performance.

또한, 본 발명의 일실시예에 따르면, 서버 기반의 하드웨어에서 패킷 포워딩 처리를 함으로써, 기존 NIC 카드에서 패킷 포워딩에 소요되는 패킷 수신 또는 패킷 송신에 관한 ISR 처리가 필요 없게 된다.In addition, according to an embodiment of the present invention, by performing the packet forwarding process in the server-based hardware, there is no need for ISR processing for packet reception or packet transmission required for packet forwarding in the existing NIC card.

또한, 본 발명의 일실시예에 따르면, 패킷에 세션정보를 유지하여 호스트에서 세션 동기화 작업을 경감시킬 수 있고, 이에 따라, SMP(Security Management Portal) 시스템에서 멀티코어 수 증대에 따른 성능 확장성(Scalability)을 얻을 수 있게 된다.In addition, according to an embodiment of the present invention, by maintaining the session information in the packet it is possible to reduce the session synchronization operation in the host, accordingly, performance scalability according to the increase in the number of multi-core in the SMP (Security Management Portal) system ( Scalability) can be obtained.

도 6은 본 발명의 일실시예에 따른 플로우 프로세싱 유닛에서, 패킷 포워딩을 처리하는 일례를 도시한 도면이다.6 is a diagram illustrating an example of processing packet forwarding in a flow processing unit according to an embodiment of the present invention.

도 6을 참조하면, 본 발명의 일실시예에 따른 플로우 프로세싱 유닛은 입력 패킷(In 패킷)과, 입력 패킷에 상응하는 출력 패킷(Out 패킷)을 단일의 플로우(flow)로 결정하고, 결정된 플로우에 대해 세션을 부여하여 신호 처리 할 수 있다.Referring to FIG. 6, a flow processing unit according to an embodiment of the present invention determines an input packet (In packet) and an output packet (Out packet) corresponding to the input packet as a single flow, and determines the determined flow. Signaling can be done by granting a session to.

도 7는 본 발명의 일실시예에 따른 플로우 프로세싱 유닛에서, 동일한 세션 내 패킷을 처리하는 일례를 도시한 도면이다.7 is a diagram illustrating an example of processing a packet in the same session in a flow processing unit according to an embodiment of the present invention.

도 7을 참조하면, 내부망 호스트 A,B에서 인터넷 웹서버 X,Y를 각각 접속하는 경우, 기존의 방식에서는 NIC별로 IRQ가 CPU에게 분할 됨에 따라, A→X와 X→A는 패킷은 다른 CPU에 의해 처리되면서, 세션테이블 업데이트 시 동기화 작업이 필요하게 된다.Referring to FIG. 7, when the Internet web servers X and Y are connected to the internal network hosts A and B, respectively, in the conventional scheme, as IRQs are divided into CPUs by NICs, A → X and X → A are different from each other. As handled by the CPU, synchronization is required to update the session table.

반면, 본 발명의 일실시예에 따른 플로우 프로세싱 유닛에서는 자체적으로 세션을 유지하여 동일 세션 내 패킷은 동일 CPU에게로 인터럽트를 발생시켜, 세션 동기화 비용을 제거할 수 있게 된다.On the other hand, the flow processing unit according to an embodiment of the present invention maintains its own session, and packets in the same session generate interrupts to the same CPU, thereby eliminating the cost of session synchronization.

도 8은 본 발명의 일실시예에 따른 플로우 프로세싱 유닛 제어 방법의 순서를 도시한 흐름도이다.8 is a flowchart illustrating a sequence of a method for controlling a flow processing unit according to an embodiment of the present invention.

본 발명의 일실시예에 따른 플로우 프로세싱 유닛 제어 방법은 도 5에 도시된 플로우 프로세싱 유닛(500)에 의해 구현될 수 있다. 이하, 도 8의 설명에서는 상술한 도 5를 함께 참조하여 도 8을 설명하여 발명의 이해를 도모한다.The flow processing unit control method according to an embodiment of the present invention may be implemented by the flow processing unit 500 shown in FIG. Hereinafter, in the description of FIG. 8, FIG. 8 will be described with reference to FIG. 5 described above to understand the invention.

단계 810에서 플로우 프로세싱 유닛(500)은 입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우(flow)로 결정하고, 단계 820에서 플로우 프로세싱 유닛(500)은 상기 결정된 플로우에 대해 세션을 부여한다.In step 810, the flow processing unit 500 determines an input packet and an output packet corresponding to the input packet as a single flow. In step 820, the flow processing unit 500 establishes a session for the determined flow. Grant.

일례로, 데이터베이스(530)는 플로우 별 부여되는 세션과, 상기 코어에 관한 코어정보를 대응시켜 기록할 수 있으며, 컨트롤러(510)는 제1 포트를 경유하는 입력 패킷으로부터 코어정보를 획득하고, 상기 획득한 코어정보와 대응하여 기록된 세션을 데이터베이스(530)에서 검색하며, 상기 검색된 세션을 상기 입력 패킷이 속하는 플로우에 부여할 수 있다.For example, the database 530 may record the session-specific session and the core information about the core in correspondence with each other, and the controller 510 obtains the core information from the input packet via the first port. The session recorded in correspondence with the acquired core information may be searched in the database 530, and the searched session may be assigned to a flow to which the input packet belongs.

단계 820에서 플로우 프로세싱 유닛(500)은 상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리한다.In step 820, the flow processing unit 500 signals the flow in the core assigned to the session.

일례로, 프로세서(520)는 복수의 코어 중에서, 세션에 기할당되지 않은 코어, 또는 가장 적은 사용량을 갖는 코어를, 상기 세션에 할당할 수 있다.In one example, the processor 520 may allocate, among the plurality of cores, a core not assigned to the session or a core having the least amount of usage to the session.

이때, 프로세서(520)는 디스크립터(540)를 포함하여 구성될 수 있다.In this case, the processor 520 may include a descriptor 540.

여기서, 디스크립터(540)는 제1 포트를 경유하는 입력 패킷에 관한 디스크립트 정보를 보관되는 코어 내 버퍼를 지정하는 역할을 할 수 있다.Here, the descriptor 540 may serve to designate a buffer in the core that stores the descriptive information regarding the input packet via the first port.

즉, 디스크립터(540)는 상기 입력 패킷이 속하는 플로우의 출력 패킷에 대한 신호 처리시, 프로세서(520)에 의해, 상기 지정된 버퍼로부터 상기 디스크립트 정보가 획득되도록 할 수 있다.That is, the descriptor 540 may cause the processor 520 to acquire the descriptive information from the designated buffer when processing a signal for an output packet of a flow to which the input packet belongs.

예를 들어, 플로우 프로세싱 유닛(500)은 ⅰ) MAC에서 패킷을 수신하고, ⅱ) IP/TCP 헤더에서 5-tuple 정보를 추출하여 기존 세션테이블에서 검색하고, ⅲ) 신규 세션이면 세션테이블에 등록하고 사용량이 적은 코어를 할당하고, ⅳ) 기존 세션테이블이 존재하면 해당 세션에 기 할당된 코어 정보를 얻고, ⅴ) 버퍼 Pool에서 패킷 버퍼를 할당하고 패킷을 버퍼로 DMA 전송하고, ⅵ) 코어별 Ring Descriptor 내용을 업데이트하고, ⅶ) 해당 코어에게 MSI/MSI-X 인터럽트를 발생시킴으로써, 패킷을 수신 처리할 수 있게 된다.For example, the flow processing unit 500 i) receives a packet from the MAC, ii) extracts 5-tuple information from the IP / TCP header, retrieves it from the existing session table, and iii) registers it in the session table if it is a new session. Allocate cores with low usage, iii) If there is an existing session table, obtain the core information pre-allocated for the session, iii) Allocate a packet buffer in the buffer pool, DMA transfer the packet to the buffer, and iv) By updating the contents of the ring descriptor and iii) generating an MSI / MSI-X interrupt to the core, the packet can be received and processed.

따라서, 본 발명의 일실시예에 따르면, 서버 기반의 UTM(Unified Thread Management) 플랫폼에서 패킷이 아닌, 플로우(flow) 단위로 처리 함으로써, 성능을 획기적으로 개선할 수 있게 된다.Therefore, according to an embodiment of the present invention, the server-based Unified Thread Management (UTM) platform, by processing the flow (units) rather than packets, it is possible to significantly improve the performance.

또한, 본 발명의 일실시예에 따르면, 서버 기반의 하드웨어에서 패킷 포워딩 처리를 함으로써, 기존 NIC 카드에서 패킷 포워딩에 소요되는 패킷 수신 또는 패킷 송신에 관한 ISR 처리가 필요 없게 된다.In addition, according to an embodiment of the present invention, by performing the packet forwarding process in the server-based hardware, there is no need for ISR processing for packet reception or packet transmission required for packet forwarding in the existing NIC card.

또한, 본 발명의 일실시예에 따르면, 패킷에 세션정보를 유지하여 호스트에서 세션 동기화 작업을 경감시킬 수 있고, 이에 따라, SMP(Security Management Portal) 시스템에서 멀티코어 수 증대에 따른 성능 확장성(Scalability)을 얻을 수 있게 된다.In addition, according to an embodiment of the present invention, by maintaining the session information in the packet it is possible to reduce the session synchronization operation in the host, accordingly, performance scalability according to the increase in the number of multi-core in the SMP (Security Management Portal) system ( Scalability) can be obtained.

또한, 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.Further, embodiments of the present invention include a computer readable medium having program instructions for performing various computer implemented operations. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.

이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.As described above, the present invention has been described by specific embodiments such as specific components and the like. For those skilled in the art to which the present invention pertains, various modifications and variations are possible. Therefore, the spirit of the present invention should not be construed as being limited to the described embodiments, and all of the equivalents or equivalents of the claims, as well as the following claims, are included in the scope of the present invention.

500: 플로우 프로세싱 유닛
510: 컨트롤러
520: 프로세서
530: 데이터베이스
540: 디스크립터
500: flow processing unit
510: controller
520: processor
530: database
540: descriptor

Claims (10)

입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우로 결정하고, 상기 결정된 플로우에 대해 세션을 부여하는 컨트롤러; 및
상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리하고, 제1 포트를 경유하는 입력 패킷에 관한 디스크립트 정보를 보관되는 코어 내 버퍼를 지정하는 디스크립터를 포함하는 프로세서
를 포함하는 플로우 프로세싱 유닛.
A controller for determining an input packet and an output packet corresponding to the input packet as a single flow and assigning a session to the determined flow; And
A processor that signals the flow in the core assigned to the session and a descriptor that specifies a buffer in the core that stores descriptive information about the input packet via the first port.
Flow processing unit comprising a.
제1항에 있어서,
상기 프로세서는,
복수의 코어 중에서, 세션에 기할당되지 않은 코어, 또는 가장 적은 사용량을 갖는 코어를, 상기 세션에 할당하는, 플로우 프로세싱 유닛.
The method of claim 1,
The processor comprising:
And assign, among the plurality of cores, a core not assigned to a session or a core having the least amount of usage to the session.
제1항에 있어서,
플로우 별 부여되는 세션과, 상기 코어에 관한 코어정보를 대응시켜 기록하는 데이터베이스
를 더 포함하고,
상기 컨트롤러는,
제1 포트를 경유하는 입력 패킷으로부터 코어정보를 획득하고, 상기 획득한 코어정보와 대응하여 기록된 세션을 상기 데이터베이스에서 검색하며, 상기 검색된 세션을 상기 입력 패킷이 속하는 플로우에 부여하는, 플로우 프로세싱 유닛.
The method of claim 1,
Database that records the session-specific sessions and the core information on the cores in association with each other
Further comprising:
The controller,
A flow processing unit for acquiring core information from an input packet via a first port, retrieving a session recorded corresponding to the acquired core information from the database, and assigning the retrieved session to a flow to which the input packet belongs; .
삭제delete 제1항에 있어서,
상기 디스크립터는,
상기 입력 패킷이 속하는 플로우의 출력 패킷에 대한 신호 처리시, 상기 프로세서에 의해, 상기 지정된 버퍼로부터 상기 디스크립트 정보가 획득되도록 하는, 플로우 프로세싱 유닛.
The method of claim 1,
The descriptor is,
And, when processing the signal for the output packet of the flow to which the input packet belongs, the processor to obtain the descriptive information from the designated buffer.
플로우 프로세싱 유닛에 의해 구현되는 플로우 프로세싱 유닛 제어 방법에 있어서,
상기 플로우 프로세싱 유닛에서, 입력 패킷과, 상기 입력 패킷에 상응하는 출력 패킷을 단일의 플로우로 결정하는 단계;
상기 플로우 프로세싱 유닛에서, 상기 결정된 플로우에 대해 세션을 부여하는 단계;
상기 플로우 프로세싱 유닛에서, 상기 세션에 할당되는 코어에서 상기 플로우에 대해 신호 처리하는 단계; 및
상기 플로우 프로세싱 유닛에서, 제1 포트를 경유하는 입력 패킷에 관한 디스크립트 정보를 보관되는 코어 내 버퍼를 지정하는 단계
를 포함하는 플로우 프로세싱 유닛 제어 방법.
A flow processing unit control method implemented by a flow processing unit,
Determining, at the flow processing unit, an input packet and an output packet corresponding to the input packet as a single flow;
At the flow processing unit, assigning a session to the determined flow;
At the flow processing unit, signal processing for the flow at a core assigned to the session; And
In the flow processing unit, specifying a buffer in the core that holds descriptive information about an input packet via a first port
Flow processing unit control method comprising a.
제6항에 있어서,
상기 플로우에 대해 신호 처리하는 단계는,
복수의 코어 중에서, 세션에 기할당되지 않은 코어, 또는 가장 적은 사용량을 갖는 코어를, 상기 세션에 할당하는 단계
를 포함하는, 플로우 프로세싱 유닛 제어 방법.
The method of claim 6,
Signal processing for the flow,
Assigning, among the plurality of cores, a core not assigned to the session, or a core having the least usage, to the session
Comprising a flow processing unit control method.
제6항에 있어서,
상기 플로우 프로세싱 유닛에서, 플로우 별 부여되는 세션과, 상기 코어에 관한 코어정보를 대응시켜 데이터베이스에 기록하는 단계
를 더 포함하고,
상기 결정된 플로우에 대해 세션을 부여하는 단계는,
제1 포트를 경유하는 입력 패킷으로부터 코어정보를 획득하는 단계;
상기 획득한 코어정보와 대응하여 기록된 세션을 상기 데이터베이스에서 검색하는 단계; 및
상기 검색된 세션을 상기 입력 패킷이 속하는 플로우에 부여하는 단계
를 포함하는, 플로우 프로세싱 유닛 제어 방법.
The method of claim 6,
In the flow processing unit, correlating a session granted for each flow with core information about the core and recording the same in a database;
Further comprising:
Granting a session for the determined flow,
Obtaining core information from an input packet via the first port;
Retrieving the recorded session from the database corresponding to the acquired core information; And
Assigning the retrieved session to a flow to which the input packet belongs
Comprising a flow processing unit control method.
삭제delete 제6항에 있어서,
상기 플로우 프로세싱 유닛에서, 상기 입력 패킷이 속하는 플로우의 출력 패킷에 대한 신호 처리시, 상기 지정된 버퍼로부터 상기 디스크립트 정보가 획득되도록 하는 단계
를 더 포함하는, 플로우 프로세싱 유닛 제어 방법.
The method of claim 6,
In the flow processing unit, causing the descriptive information to be obtained from the designated buffer when processing a signal for an output packet of a flow to which the input packet belongs;
Further comprising a flow processing unit control method.
KR1020100025325A 2010-03-22 2010-03-22 Flow processing unit and method for controlling flow processing unit KR101115098B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100025325A KR101115098B1 (en) 2010-03-22 2010-03-22 Flow processing unit and method for controlling flow processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100025325A KR101115098B1 (en) 2010-03-22 2010-03-22 Flow processing unit and method for controlling flow processing unit

Publications (2)

Publication Number Publication Date
KR20110106096A KR20110106096A (en) 2011-09-28
KR101115098B1 true KR101115098B1 (en) 2012-02-29

Family

ID=44956168

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100025325A KR101115098B1 (en) 2010-03-22 2010-03-22 Flow processing unit and method for controlling flow processing unit

Country Status (1)

Country Link
KR (1) KR101115098B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101424508B1 (en) * 2012-11-15 2014-08-01 주식회사 시큐아이 Encrypting/decrypting appratus for load balancing and method thereof
KR101635732B1 (en) * 2015-12-23 2016-07-04 주식회사 파이오링크 Method for processing fragment packets and nework device using the same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070053367A (en) * 2002-06-10 2007-05-23 아이피알 라이센싱, 인코포레이티드 Applying session services based on packet flows
US20090285228A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Multi-stage multi-core processing of network packets

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070053367A (en) * 2002-06-10 2007-05-23 아이피알 라이센싱, 인코포레이티드 Applying session services based on packet flows
US20090285228A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Multi-stage multi-core processing of network packets

Also Published As

Publication number Publication date
KR20110106096A (en) 2011-09-28

Similar Documents

Publication Publication Date Title
US11102117B2 (en) In NIC flow switching
US10789199B2 (en) Network traffic rate limiting in computing systems
US9356844B2 (en) Efficient application recognition in network traffic
US8059532B2 (en) Data and control plane architecture including server-side triggered flow policy mechanism
US8194667B2 (en) Method and system for inheritance of network interface card capabilities
US20090240874A1 (en) Framework for user-level packet processing
US10872056B2 (en) Remote memory access using memory mapped addressing among multiple compute nodes
US20150033222A1 (en) Network Interface Card with Virtual Switch and Traffic Flow Policy Enforcement
US10911405B1 (en) Secure environment on a server
US20160266925A1 (en) Data forwarding
US11907751B2 (en) Resource fairness enforcement in shared IO interfaces
Sadok et al. A case for spraying packets in software middleboxes
US11431677B2 (en) Mechanisms for layer 7 context accumulation for enforcing layer 4, layer 7 and verb-based rules
KR101115098B1 (en) Flow processing unit and method for controlling flow processing unit
US20180091447A1 (en) Technologies for dynamically transitioning network traffic host buffer queues
EP4199427A1 (en) Ai-supported network telemetry using data processing unit
US20230004395A1 (en) Methods and systems for distributing instructions amongst multiple processing units in a multistage processing pipeline
Bolla et al. OpenFlow in the small: A flexible and efficient network acceleration framework for multi-core systems
KR102078744B1 (en) Network interface card having hybrid architecture with multi-core processor and general purpose network controller
KR102016626B1 (en) Network interface apparatus using jumbo frame with high speed and low delay
US10536383B2 (en) Attribute enhancement for handling network packet traffic between micro segmented guests
US20240061796A1 (en) Multi-tenant aware data processing units
Park et al. HEX switch: Hardware-assisted security extensions of OpenFlow
KR101577034B1 (en) Multicore based toe system easy to add supplemental network functions with software and the control method therefor
US11876691B2 (en) End-to-end RDMA telemetry system

Legal Events

Date Code Title Description
A201 Request for examination
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: 20150204

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160203

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170206

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180117

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200204

Year of fee payment: 9