KR101435500B1 - 프록시 장치를 제어하는 방법 및 프록시 장치 - Google Patents

프록시 장치를 제어하는 방법 및 프록시 장치 Download PDF

Info

Publication number
KR101435500B1
KR101435500B1 KR1020120111765A KR20120111765A KR101435500B1 KR 101435500 B1 KR101435500 B1 KR 101435500B1 KR 1020120111765 A KR1020120111765 A KR 1020120111765A KR 20120111765 A KR20120111765 A KR 20120111765A KR 101435500 B1 KR101435500 B1 KR 101435500B1
Authority
KR
South Korea
Prior art keywords
packet
information
area
processor
input
Prior art date
Application number
KR1020120111765A
Other languages
English (en)
Other versions
KR20140046628A (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 KR1020120111765A priority Critical patent/KR101435500B1/ko
Publication of KR20140046628A publication Critical patent/KR20140046628A/ko
Application granted granted Critical
Publication of KR101435500B1 publication Critical patent/KR101435500B1/ko

Links

Images

Classifications

    • 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/468Specific access rights for resources, e.g. using capability register
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

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

Abstract

본 발명은 멀티 프로세서 시스템을 위한 프록시 장치 및 방법에 관한 것으로서, 상기 멀티 프로세서 별로 서로 상이한 포트 번호를 설정하고, 상기 멀티 프로세서 각각을 구성하는 복수의 스레드를 제1 영역 및 제2 영역으로 분리하고, 상기 프록시 장치와 연결된 디바이스를 통하여 패킷이 입력되면 패킷이 입력되는 프로세서 정보 및 기 생성된 엔트리 정보를 기반으로 패킷의 정보를 변경하며, 상기 변경된 패킷 정보에 따라 멀티 프로세서 중 하나의 프로세서에 패킷을 할당하여 패킷의 처리를 수행하도록 동작하도록 함으로써 멀티 프로세서 간 락 경쟁을 최소화하고 효율을 증대시킬 수 있다.

Description

프록시 장치를 제어하는 방법 및 프록시 장치{METHOD FOR CONTROLLING PROXY DEVICE AND PROXY DEVICE THEREOF}
본발명은 프록시 장치를 제어하는 방법 및 프록시 장치에 관한 것으로서, 특히, 멀티 프로세서 시스템에서 멀티 프로세서 간 락(lock) 경쟁을 최소화하기 위해 동일한 세션에 대해서는 동일한 프로세서에서 처리하도록 하는 프록시 장치를 제어하는 방법 및 프록시 장치에 관한 것이다
멀티 프로세서 시스템이 일반화되고 고속의 데이터 처리가 요구되고 있는 컴퓨터 환경 하에서 멀티 프로세서 간의 공유 자원의 경쟁이 높아지고 있다. 예컨대, 데이터 송수신 시에 TCP/IP 네트워크 스택에서 커널(kernel) 영역의 TCP 스택과 사용자 영역의 시스템 콜 모두 소켓이라는 공유 자원을 보호하기 위해 락을 사용할 수 있다. 이 경우 소켓이 범용적으로 설계, 프로그래밍되어도 소켓에 대한 접근을 락 없이 개발하는 것은 어려우며, 락 경쟁을 최소화하는 방안이 최선이 된다.
한편, 락 경쟁을 최소화하기 위한 일 방법은 동일 소켓 또는 동일한 세션 처리는 동일한 CPU에서 하도록 하면 된다. 이 경우 락 경쟁 자체가 없어지므로 구현 방법도 간단하고, 동일 소켓 처리를 동일 CPU가 처리하도록 하면 캐시 효율성이 증대해서 멀티 프로세서의 성능을 극대화할 수 있다.
한편, 네트워크 스택에는 사용자 영역, 커널 영역 및 하드웨어 영역으로 구별될 수 있고, 사용자 영역과 커널 영역에서의 작업은 CPU가 수행한다. 이 사용자 영역과 커널 영역은 하드웨어 영역과 구별되어 호스트라고 불리울 수 있다. 하드웨어 영역은 네트워크 인터페이스 카드(Network Interface Card) 일 수 있다.
프록시 처리는 일반적으로 사용자 영역의 프로세서가 소켓 프로그래밍을 실행하여 동작된다. 구체적으로, 중간의 소켓을 기점으로 커널 영역에서는 패킷에 대해 동기화(Synchronous) 처리되고, 사용자 영역에서는 프록시 어플리케이션이 패킷에 대해 비동기(Asynchronous) 처리를 한다. 동기화 처리를 하는 커널 영역에서는, 네트워크 인터페이스 카드의 세션 분산에 의해 동일 세션에 대한 패킷을 동일 프로세서(CPU)에서 처리하기가 용이하다. 그러나, 비동기 처리를 하는 사용자 영역에서는, 해당하는 어플리케이션은 실행되는 프로세스가 고정되지 않고, 스케줄러에 의해 설정되기 때문에 로드가 적은 프로세서로 이동되는 현상이 자주 생긴다. 물론 해당하는 프로세스에 CPU Affinity를 할당하면 고정을 할 수 있지만 해당 세션이 어떤 커널에서 동작하고 있는지 네트워크 스택에서 알 수가 없다. 이렇게 커널 영역과 사용자 영역에서의 프록시 처리를 원활히 하기 위하여 RPS(Receive Packet Steering) 또는 RFS(Receive Flow Steering) 기술이 있다. RFS는 해당하는 어플리케이션이 동작하는 프로세서로 패킷을 전달(steer)하기 위한 보다 진보된 기술로서 이를 수행하기 위해서는 RPS의 사용이 수반된다. 최근에는 네트워크 인터페이스 카드에서 상당히 유연하게 패킷 분산을 해주므로 RPS 자체는 크게 효용성이 없으나 패킷 분산을 지원하지 않는 네트워크 인터페이스 카드나 사용자가 원하는 방식으로 패킷을 분산하기 위해서는 RPS를 사용한다. 즉, RPS는 소프트웨어 영역에서의 패킷 분산 엔진이다.
그러나, RFS는 Connection Setup 또는 Connection Teardown이 빈번하여 CPS(Connection Per Second)가 과도한 네트워크에서는 효율적이지 않다. 왜냐하면 설계상 RFS 의 동작을 위해서는 기 송수신한 패킷의 처리 결과가 필요한데 Connection 확립이 이루어지기 전에는 패킷 steering 을 위한 학습을 할 수 없기 때문이다.
본 발명은 상술한 문제점을 해결하기 위하여 기 처리된 적이 없는 패킷에 대해서도 적절한 프록시 처리를 수행하여 어플리케이션이 패킷을 효율적으로 처리할 수 있도록 하는 프록시 장치를 제공하도록 한다.
본 발명은 멀티 프로세서 각각에 대해 패킷의 커넥션 및 어플리케이션 처리를 수행하는 스레드를 분리함으로써 패킷 처리 효율을 높일 수 있는 프록시 장치 등을 제공하도록 한다.
본 발명은, 멀티 프로세서 각각에서 동작하고 해당 프로세서에서 패킷이 수신될 때마다 기 처리된 패킷에 관한 엔트리 정보를 활용하여 프록시 처리를 수행할 수 있는 프록시 장치 및 방법을 제공하도록 한다.
본 발명의 일 실시예에 따른 멀티 프로세서 시스템을 위한 프록시 장치를 제어하기 위한 방법은, 상기 멀티 프로세서 별로 서로 상이한 포트 번호를 설정하는 단계; 상기 멀티 프로세서 각각을 구성하는 복수의 스레드를 제1 영역 및 제2 영역으로 분리하는 단계; 상기 프록시 장치와 연결된 디바이스를 통하여 패킷이 입력되면 패킷이 입력되는 프로세서 정보 및 기 저장된 엔트리 정보를 기반으로 패킷의 정보를 변경하는 단계; 및 상기 변경된 패킷 정보에 따라 멀티 프로세서 중 하나의 프로세서에 패킷을 할당하여 패킷의 처리를 수행하도록 하는 단계를 포함한다.
본 발명의 일 실시예에 따른 멀티 프로세서 시스템을 위한 프록시 장치는, 상기 멀티 프로세서 별로 서로 상이한 포트 번호를 설정하고, 상기 멀티 프로세서 각각을 구성하는 복수의 스레드를 제1 영역 및 제2 영역으로 분리하고, 상기 프록시 장치와 연결된 디바이스를 통하여 패킷이 입력되면 패킷이 입력되는 프로세서 정보 및 기 생성된 엔트리 정보를 기반으로 패킷의 정보를 변경하며, 상기 변경된 패킷 정보에 따라 멀티 프로세서 중 하나의 프로세서에 패킷을 할당하여 패킷의 처리를 수행하도록 동작한다.
본 발명에 따르면 멀티 프로세서 시스템에서 효율적인 프록시 처리를 가능하도록 한다.
본 발명에 따르면 패킷의 송수신에 의한 학습에 의하지 않고도 멀티프로세서에서의 효율적인 패킷 스티어링이 가능하도록 한다.
도 1은 본 발명의 일 실시예에 따른 프록시 장치의 네트워크 스택에서의 동작을 도식화한 도이다.
도 2는 본 발명의 일 실시예에 따라 패킷의 프록시 처리에서 참조되는 엔트리 정보의 일례를 나타낸다.
도 3은 본 발명의 일 실시예에 따라 사용자 영역에서의 프로세서 구조를 도식화한 도이다.
도 4는 본 발명의 일 실시예에 따른 프록시 장치의 제어 방법에 관한 순서도를 나타낸다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
한편, 본 발명의 프록시 장치는 네트워크 인터페이스 카드와 연결되는 호스트일 수 있고, 호스트에 탑재된 드라이버 등으로 구현될 수 있는 등 이에 대해 제한은 없으며, 본 명세서에서는 프록시 장치가 호스트로 설명되고 있다. 또한, 본 발명의 프록시 장치 제어 방법은 호스트에서 실행될 수 있고, 전자적 기록 코드로 컴퓨터 판독 가능한 기록 매체에 저장될 수 있으며 본 발명의 범위는 그 기록 매체에 대해서도 포함될 수 있다.
도 1은 본 발명의 일 실시예에 따른 프록시 장치의 네트워크 스택에서의 동작을 도식화한 도이다. 도 1에서는 예전에 수신된 바가 없는 패킷, 즉, 패킷의 공급원 및 도착지 정보가 새로운 패킷이 수신되어 처리되고 있는 일례를 도시하고 있다. 도 1을 참조하면, 네트워크 스택은, 패킷이 실질적으로 수신되거나 전송되는 하드웨어 영역과, 패킷의 프록시 처리 및 어플리케이션에 의한 패킷 처리가 수행되는 소프트웨어 영역(호스트 영역)으로 구별될 수 있다. 소프트웨어 영역은 다시 커널 영역과 사용자 영역으로 분리될 수 있다. 커널 영역은 프로토콜의 특성에 따라 복수의 레이어로 구별될 수 있으나 본 명세서에서는 편의상 이에 대한 설명 및 도시를 생략한다. 커널 영역 및 사용자 영역에는 프로세서들(100, 101, 102, 103, 200, 201, 202, 203,…)이 그 개수에 따라 각각 존재하는 것으로 도시되어 있다. 커널 영역으로 입력된 패킷은 커널 영역의 프로세서(102)를 거쳐서 소켓(300)에 임시적으로 저장되었다가 패킷을 처리하기에 적합한 사용자 영역의 특정 프로세서로 전달될 수 있다.
본 발명에서는 멀티 프로세서 별로 서로 상이한 포트 번호가 미리 설정될 수 있다. 예컨대, 프로세서(100, 200)에 8000번 포트 번호가, 프로세서(101, 201)에 8001 포트 번호가, 프로세서(102, 202)에 8002 포트 번호가, 프로세서(103, 203)에 8004 포트 번호가 미리 설정될 수 있다. 즉, 커널 영역 및 사용자 영역상에서 동작하는 각 프로세서에 대해 포트 번호를 일치시켜 제어할 수 있다.
또한 커널 영역의 각 프로세서에서는 입력된 패킷의 연결 정보를 변경하도록 커널 레벨 프록시 모듈(1021, Kernel Level Proxy Module)이 각각 동작할 수 있다. 커널 레벨 프록시 모듈은 하드웨어를 통하여 패킷이 입력된 프로세서에서 해당 패킷의 연결 정보를 변경할 수 있다. 패킷의 연결 정보는 패킷의 공급원의 IP, 공급원의 포트 번호, 패킷의 도착지의 IP, 패킷의 도착지의 포트 번호 또는 프로토콜 정보 등을 포함할 수 있다. 커널 레벨 프록시 모듈은 패킷의 연결 정보를 변경하는데 있어서, 패킷이 입력된 커널 영역의 프로세서(102), 즉, 모듈이 동작하는 프로세서의 정보 및 기 저장된 엔트리 정보를 참조할 수 있다. 기 저장된 엔트리 정보에 대해서 도 2와 함께 설명한다.
도 2는 본 발명의 일 실시예에 따라 패킷의 프록시 처리에서 참조되는 엔트리 정보의 일례를 나타낸다. 도 2를 참조하면 엔트리 정보는 테이블 형태로 구성될 수 있고, 패킷의 연결 정보 및 변경된 연결 정보의 집합으로 구성될 수 있다. 도 2에서는 3개의 패킷에 대한 연결 정보들이 도시되어 있다. 구체적으로 0번 인덱스 번호를 가진 패킷의 연결 정보는, 변경 전 연결 정보로서 변경전 공급원 IP, 변경전 도착지 IP, 변경전 공급원 포트 및 변경전 도착지 포트 정보가, 144.100.10.2, 169.144.10.100, 12223 및 80으로 구성될 수 있다. 또한, 변경 후 연결 정보로서 변경후 공급원 IP, 변경후 도착지 IP, 변경후 공급원 포트 및 변경후 도착지 포트가 144.100.10.2, 127.0.0.1, 12223 및 8003 일 수 있다. 즉, 커널 레벨 프록시 모듈은 입력된 패킷의 도착지 IP 및 도착지 포트번호를 변경시킴으로써 해당 패킷이 사용자 영역에서 처리되기에 적합한 프로세서로 할당되도록 할 수 있다. 여기서 변환된 도착지의 IP 는 디바이스의 IP 이고 변환된 포트 번호는 패킷이 전달될 프로세서의 포트번호일 수 있다. 이렇게 변경하게 되면, 예컨대, 입력된 패킷의 도착지 연결 정보가 네트워크를 거쳐서 존재하는 경우 해당 패킷이 실질적으로 처리되는 디바이스 및 프로세서로 local terminating되도록 프록시 처리가 된다. 또한, 도착지 포트 번호의 변경에 의해 특정 프로세서에서 기다리고 있는 패킷을 기다리던 프록시 어플리케이션에게 패킷이 도착하도록 해준다. 본 명세서에서는, 디바이스를 통하여 패킷이 수신된 프로세서의 번호에 8000 값을 붙인 포트 번호로 변경되도록 예시되고 있지만 포트 번호의 변경 방법에는 제한이 없다.
한편, 인덱스 1 및 2에 해당하는 엔트리 정보들 역시 도 2에 예시되어 있다. 도 2에서 예시되는 엔트리 내 패킷의 정보는 기 송수신된 적이 있는 패킷에 대한 변경 전 및 변경 후의 연결 정보의 집합이다. 예컨대, 클라이언트 장치 A 에서 서버a 로 접속을 요청하는 패킷이 호스트로 최초로 수신되었다고 가정한다. 본 발명의 커널 레벨 프록시 모듈은 해당 패킷의 연결 정보를 변경하고 적합한 프로세서로 할당되도록 할 것이며, 이 변경된 정보를 도 2의 엔트리 정보로서 저장할 것이다. 차회에 클라이언트 장치 A 및 서버 a 간의 패킷이 송신 또는 수신된 경우에는 해당 패킷을 처리한 바 있는 어플리케이션이 동작하는 프로세서로 패킷이 전달되는 것이 바람직하며, 이 때 엔트리 정보가 참조될 수 있다. 한편, 도 1은 상술한 바와 같이 엔트리 정보에 없는 패킷이 최초로 수신된 경우로서 이에 대해 이하에서 구체적으로 설명한다.
도 1에서는, 예전에 수신된 바가 없는 패킷, 즉, 패킷의 공급원 및 도착지 정보가 새로운 패킷이 수신되고 있다. 패킷이 입력된 프로세서(102)에서는 커널 레벨 프록시 모듈(1021)이 기 저장된 엔트리 정보 및 입력된 패킷의 연결 정보를 비교할 수 있다. 입력된 패킷의 연결 정보는 엔트리 정보 내 테이블에 존재하지 않을 것이며 즉, 엔트리 정보 및 입력된 패킷의 연결 정보는 매칭되는 부분이 없을 것이다. 즉, 새로운 연결 정보를 포함한 패킷이 수신된 경우에는 해당 패킷이 입력된 프로세서(102)의 정보를 기반으로 패킷의 연결 정보를 변경할 수 있다. 구체적으로, 패킷이 수신된 프로세서(102)를 참조하여 도착지의 프로세서 포트 번호를 8002로 변경하고 사용자 영역 내 프로세서(202)로 전달하도록 함으로써, 최초 수신된 패킷에 대해서는 디바이스로부터 패킷을 수신한 프로세서(102)에서 모든 처리를 수행할 수 있도록 할 수 있다. 또한, 커널 레벨 프록시 모듈(1021)은, 새로운 패킷에 대해 엔트리 정보가 생성되었으므로, 엔트리 정보를 포함한 테이블에 해당 패킷에 대한 변경 전 후의 연결 정보를 새로 기록할 수 있다.
한편, 커널 레벨 프록시 모듈에 의해 연결 정보가 변경된 패킷은 소켓(300)에 임시적으로 저장되었다가 변경된 연결 정보에 따라 프로세서(102)에 할당되어 사용자 영역에서의 패킷 처리가 수행되도록 한다.
도 1을 참조하면, 하드웨어, 예컨대, 네트워크 인터페이스 카드로부터 수신된 패킷이 커널 영역의 프로세서(102)에 입력되고 있다. 네트워크 인터페이스 카드로부터 커널 영역의 특정 프로세서로의 패킷 분산은 네트워크 인터페이스 카드 또는 드라이버의 설정에 따라 다양할 수 있다. 또한, 도 1에서는 커널 레벨 프록시 모듈(1021)이 프로세서(102)에서만 동작하는 것으로 도시되어 있지만, 모든 커널 영역 상의 프로세서(100, 101, 103,…) 에서도 독립적으로 동작할 수 있다.
요즈음 대부분의 네트워크 인터페이스 카드는 세션 분산을 지원하므로 향후 동일 세션 정보를 가진 패킷은 동일 CPU에 도착하는 것이 보장되므로, 커널 처리는 네트워크 인터페이스 카드의 세션 분산 기능으로 인해 동일 CPU에서 처리되는 것이 보장된다. 그리고 커널 레벨 프록시 모듈이 동일 세션에 대해서는 동일 목적지 포트로 변환해서 네트워크 스택으로 보내주므로, 동일 세션에 대해서 사용자 영역의 프로세스 또한 동일 CPU에서 처리가 보장이 된다.
도 3은 본 발명의 일 실시예에 따라 사용자 영역에서의 프로세서 구조를 도식화한 도이다. 도 3을 참조하면 프로세서(202)는 복수의 스레드로 구성될 수 있고, 그 기능에 따라 억셉트 스레드(10, accept thread) 및 복수의 워커 스레드(21, 22, 23, …, worker thread)로 구별될 수 있다. 억셉트 스레드는 본발명의 제1 영역의 스레드로서 예시되고, 워커 스레드는 본발명의 제2 영역의 스레드로 예시될 수 있다.
억셉트 스레드(10)는 입력된 패킷 및 프로세서(202) 간의 커넥션을 담당할 수 있다. 커널 레벨 프록시 모듈은 자신이 처리한 CPU에 상응하는 포트 변호로 변경해서 보내주고 있다. 또한 억셉트 스레드(10)를 모든 CPU마다 별도로 하나씩 운영하고, 각 억셉트 스레드(10)는 해당 CPU에 해당하는 자신만의 포트 번호를 바인딩(Binding)하여 특정 포트로 유입되는 세션을 기다리고 있다. 그러므로 커널 구간에서의 처리 CPU와 사용자 영역에서의 처리 CPU를 동일하게 유지할 수 있다. 예를 들어 커널 레벨 프록시 모듈이 CPU 2번에서 패킷을 수신하고 사용자 영역으로 올려주기 전에 목적지 포트를 8002번으로 보내 준다. 또 억셉트 쓰레드(10)를 미리 CPU 2번에 CPU Affinity를 지정해서 항상 CPU 2번에서 동작하도록 하고, 목적지 포트 8002으로 소켓 Binding을 해서 해당 목적지 포트로 유입되는 패킷의 경우는 자신이 처리하도록 해놓으면 해당 세션의 경우 커널 영역 및 사용자 영역 모두에서 항상 CPU 2번에서 처리가 될 수 있을 것이다. 그리고 CPU 마다 별도로 만들어 놓은 워커 스레드(21) 에게 해당 세션을 이양해서 이후 트래픽에 대한 처리를 워커 스레드(21)가 처리하도록 할 수 있다.
도 4는 본 발명의 일 실시예에 따른 프록시 장치의 제어 방법에 관한 순서도를 나타낸다.
단계(S11)에서 네트워크 인터페이스 카드와 같은 하드웨어를 통하여 호스트 영역 내로 패킷이 입력된다. 패킷은 커널 영역 상의 복수의 프로세서 중 하나의 프로세서로 입력될 수 있다.
단계(S12)에서 패킷이 입력된 프로세서상에서는 패킷이 기 저장된 엔트리와 매칭되는 지를 판단한다. 구체적으로 패킷 내 연결 정보가 엔트리상의 변경 전 연결 정보와 매칭되는 패킷이 존재하는 지를 판단한다.
단계(S13)에서 엔트리 상에 입력된 패킷에 대한 연결정보와 매칭된 바가 없는 경우 새로운 패킷인 경우이므로, 해당 패킷이 입력된 프로세서의 정보를 기반으로 패킷 정보를 변경한다. 이 경우, 해당 프로세서의 포트 번호로 패킷의 도착지의 포트 번호를 변경할 수 있다.
단계(S14)에서 변경된 패킷에 대한 정보를 엔트리에 저장한다
단계(S15)에서 패킷이 사용자 영역 상에서 처리될 수 있도록 변경된 연결 정보에 따라 사용자 영역의 프로세서로 패킷을 전달한다. 이 전에 소켓에 패킷이 임시적으로 저장될 수 있다.
한편, 단계(S12)에서 입력된 패킷의 연결 정보가 엔트리에 포함되어 있는 경우에는 해당 패킷을 처리하였던 프로세서가 처리할 수 있도록 엔트리의 변경 후 연결 정보에 따라 패킷을 변경시킨다(S16). 패킷은 변경된 연결 정보에 따라 적합한 프로세서로 할당될 수 있고 사용자 영역에서의 패킷 처리가 수행될 수 있다(S15).
위 순서도에는 나와 있지 않지만 사용자 영역에서는 초기화 과정 중에 미리 전체 CPU 개수 만큼의 억셉트 스레드를 생성시키고, 각 억셉트 스레드를 CPU 마다 하나씩 CPU Affinity를 지정하고, 또 해당 CPU 상응하는 포트에 대해 소켓 Binding을 하는 과정을 먼저 수행해서 커널 레벨 프록시 처리시 미리 준비된 억셉트 스레드가 처리하는 준비 과정이 있을 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 설명하였다. 그러나, 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것으로, 본 발명의 범위가 상기의 실시예에 한정되는 것은 아니며, 여러 가지 다른 형태로 변형이 가능함은 물론이다.

Claims (10)

  1. 멀티 프로세서 시스템을 위한 프록시 장치를 제어하기 위한 방법에 있어서,
    상기 멀티 프로세서 별로 서로 상이한 포트 번호를 설정하는 단계;
    상기 멀티 프로세서 각각을 구성하는 복수의 스레드를 제1 영역 및 제2 영역으로 분리하는 단계;
    상기 프록시 장치와 연결된 디바이스를 통하여 패킷이 입력되면 상기 패킷을 수신하는 프로세서 정보 및 기 저장된 엔트리 정보를 기반으로 패킷의 정보를 변경하는 단계; 및
    상기 변경된 패킷 정보에 따라 멀티 프로세서 중 하나의 프로세서에 패킷을 할당하여 패킷의 처리를 수행하도록 하는 단계를 포함하는 멀티 프로세서 관리 방법.
  2. 제1항에 있어서,
    상기 제1 영역은 입력된 패킷 및 프로세서 간의 커넥션을 담당하고 상기 제2 영역은 입력된 패킷의 사용자 영역에서의 처리를 담당하는 방법.
  3. 제1항에 있어서,
    상기 기 저장된 엔트리 정보는 테이블 형태로 구성되고, 기 입력된 패킷의 연결 정보 및 연결 정보의 변경 정보의 집합으로 구성되는 방법.
  4. 제3항에 있어서,
    상기 기 저장된 엔트리 정보 및 입력된 패킷의 정보를 비교하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 입력된 패킷의 연결 정보가 상기 기 저장된 엔트리 정보의 일부와 매칭되는 경우 상기 입력된 패킷의 연결 정보를 상기 기 저장된 엔트리 정보를 기반으로 변경하고,
    상기 입력된 패킷의 정보 중 일부가 상기 기 저장된 엔트리 정보와 상이한 경우 상기 패킷을 수신하는 프로세서 정보를 기반으로 상기 입력된 패킷의 연결 정보를 변경하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 패킷을 수신하는 프로세서 정보는 프로세서에 기 설정된 포트 번호를 포함하는 방법.
  7. 제5항에 있어서,
    상기 입력된 패킷의 정보 중 일부가 상기 기 생성된 엔트리 정보와 상이한 경우 상기 변경된 패킷의 연결 정보를 엔트리 정보에 기록하는 단계를 더 포함하는 방법.
  8. 멀티 프로세서 시스템을 위한 프록시 장치에 있어서,
    상기 멀티 프로세서 별로 서로 상이한 포트 번호를 설정하고,
    상기 멀티 프로세서 각각을 구성하는 복수의 스레드를 제1 영역 및 제2 영역으로 분리하고,
    상기 프록시 장치와 연결된 디바이스를 통하여 패킷이 입력되면 상기 패킷을 수신하는 프로세서 정보 및 기 생성된 엔트리 정보를 기반으로 패킷의 정보를 변경하며,
    상기 변경된 패킷 정보에 따라 멀티 프로세서 중 하나의 프로세서에 패킷을 할당하여 패킷의 처리를 수행하도록 동작하는 프록시 장치.
  9. 제8항에 있어서,
    상기 변경된 패킷 정보에 따른 패킷을 저장하는 소켓을 더 포함하는 프록시 장치.
  10. 제8항에 있어서,
    상기 입력된 패킷을 수신하여 전달하는 드라이버를 더 포함하는 프록시 장치.
KR1020120111765A 2012-10-09 2012-10-09 프록시 장치를 제어하는 방법 및 프록시 장치 KR101435500B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120111765A KR101435500B1 (ko) 2012-10-09 2012-10-09 프록시 장치를 제어하는 방법 및 프록시 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120111765A KR101435500B1 (ko) 2012-10-09 2012-10-09 프록시 장치를 제어하는 방법 및 프록시 장치

Publications (2)

Publication Number Publication Date
KR20140046628A KR20140046628A (ko) 2014-04-21
KR101435500B1 true KR101435500B1 (ko) 2014-09-11

Family

ID=50653507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120111765A KR101435500B1 (ko) 2012-10-09 2012-10-09 프록시 장치를 제어하는 방법 및 프록시 장치

Country Status (1)

Country Link
KR (1) KR101435500B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000101640A (ja) 1998-09-18 2000-04-07 Mitsubishi Electric Corp クライアント/サーバシステム
JP2008129767A (ja) 2006-11-20 2008-06-05 Mitsubishi Electric Corp ネットワーク装置
WO2011096307A1 (ja) 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
KR20120019711A (ko) * 2010-08-26 2012-03-07 한국과학기술원 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000101640A (ja) 1998-09-18 2000-04-07 Mitsubishi Electric Corp クライアント/サーバシステム
JP2008129767A (ja) 2006-11-20 2008-06-05 Mitsubishi Electric Corp ネットワーク装置
WO2011096307A1 (ja) 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
KR20120019711A (ko) * 2010-08-26 2012-03-07 한국과학기술원 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법

Also Published As

Publication number Publication date
KR20140046628A (ko) 2014-04-21

Similar Documents

Publication Publication Date Title
CN107612840B (zh) 一种四层负载均衡设备的数据处理方法及装置
EP3206339B1 (en) Network card configuration method and resource management center
US6976174B2 (en) Secure multiprotocol interface
US9854045B2 (en) Generic cloud enabling of stateful applications
US20100036903A1 (en) Distributed load balancer
US8788668B2 (en) Information processing apparatus, information processing system, setting program transmission method and server setting program
US8446824B2 (en) NUMA-aware scaling for network devices
US20020199000A1 (en) Method and system for managing parallel data transfer through multiple sockets to provide scalability to a computer network
WO2018166111A1 (zh) 基于集中控制器及dci设备的负载均衡的方法、系统、电子装置及计算机可读存储介质
JP6920472B2 (ja) Cgnの転送・制御分離
CN103238301A (zh) 用于在路由器处管理话务的技术
US8539089B2 (en) System and method for vertical perimeter protection
US8566833B1 (en) Combined network and application processing in a multiprocessing environment
US10353857B2 (en) Parallel processing apparatus and method for controlling communication
US8639655B2 (en) Dedicating threads to classes of LDAP service
US7697434B1 (en) Method and apparatus for enforcing resource utilization of a container
US8442939B2 (en) File sharing method, computer system, and job scheduler
CN107493574B (zh) 无线控制器设备、并行认证处理方法、系统、组网装置
CN111131081B (zh) 一种支持多进程的高性能单向传输的方法和装置
KR101435500B1 (ko) 프록시 장치를 제어하는 방법 및 프록시 장치
US20160261526A1 (en) Communication apparatus and processor allocation method for the same
US20130297796A1 (en) System and method for enabling demand-based pooling of endpoint resources in a multi-application environment
CN106790632B (zh) 一种流数据的并发传输方法和装置
US10791088B1 (en) Methods for disaggregating subscribers via DHCP address translation and devices thereof
CA2576800C (en) Accelerated data switching on symmetric multiprocessor systems using port affinity

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
FPAY Annual fee payment

Payment date: 20180802

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190801

Year of fee payment: 6