KR102536942B1 - Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법 - Google Patents

Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법 Download PDF

Info

Publication number
KR102536942B1
KR102536942B1 KR1020230001424A KR20230001424A KR102536942B1 KR 102536942 B1 KR102536942 B1 KR 102536942B1 KR 1020230001424 A KR1020230001424 A KR 1020230001424A KR 20230001424 A KR20230001424 A KR 20230001424A KR 102536942 B1 KR102536942 B1 KR 102536942B1
Authority
KR
South Korea
Prior art keywords
tcp
memory
connection information
network interface
ict
Prior art date
Application number
KR1020230001424A
Other languages
English (en)
Inventor
부준혁
김장우
Original Assignee
주식회사 망고부스트
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 망고부스트, 서울대학교산학협력단 filed Critical 주식회사 망고부스트
Priority to KR1020230001424A priority Critical patent/KR102536942B1/ko
Application granted granted Critical
Publication of KR102536942B1 publication Critical patent/KR102536942B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor

Landscapes

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

Abstract

TOE 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법이 개시된다. 본 발명의 실시예에 따른 네트워크 인터페이스 카드는 TOE(TCP/IP Offload Engine) 기반으로 동작하고, 요청되는 이벤트(event)의 연결 정보에 대한 연산 동작을 수행하여 포함하는 TCP 컨트롤러의 제1 메모리(memory)에 저장하는 네트워크 인터페이스 모듈(network interface module); 및 제1 제어 신호에 응답하여, 상기 제1 메모리에 저장된 연결 정보를 포함하는 제2 메모리로 이동시키는 메모리 제어 모듈(memory control module);을 포함한다.

Description

TOE 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법 {TOE-Based Network Interface Card And Network Interface Method}
본 발명은 네트워크 인터페이스에 관한 것으로, 특히 TOE(TCP/IP Offload Engine) 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법에 관한 것이다.
빅데이터 또는 인공지능이 적용되는 분야가 확대되고 OTT(Over-The-Top) 서비스 이용이 일상화되고 있다. 이에, 사용자 단말, 웹 서버(web server), 웹 어플리케이션 서버(Web Application Server: WAS), 스토리지 서버(storage server), 데이터베이스 서버(database server) 등 네트워크를 통해 연결되는 다양한 장치에서 대해, 요구되는 데이터의 처리 양이 급증하고 처리 속도 또한 빨라지고 있다.
이에, 수 내지 수십 또는 수백 Gbps(Gigabits per second) 이상의 초고속 네트워크 환경에서 TCP/IP 프로토콜(Transmission Control Protocol/Internet Protocol) 기반으로 데이터 통신을 수행하는 경우, 막대한 시스템 자원이 요구될 수 있다. 예를 들어, 웹 서버가 네트워크를 통해 사용자 단말과 데이터 통신을 수행하는 경우, 웹 서버의 중앙 처리 장치, 즉 호스트 CPU(Central Processing Unit)가 TCP/IP 연산을 함에 있어 상당한 부하가 야기될 수 있다.
이 경우, 웹 서버 전체에 대한 성능 저하가 야기될 수 있다. 또한 웹 서버를 통해 수행되는 네트워크 통신의 처리가 지연될 수 있다.
본 발명은 상술한 과제를 해결하기 위한 것으로서, 호스트 CPU의 부하를 줄이고 초고속 네트워크에서의 데이터 처리를 가속시킬 수 있는 TOE 기반의 카드 및 네트워크 인터페이스 방법을 제공하고자 한다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 네트워크 인터페이스 카드는 TOE(TCP/IP Offload Engine) 기반으로 동작하고, 요청되는 이벤트(event)의 연결 정보에 대한 연산 동작을 수행하여 포함하는 TCP 컨트롤러의 제1 메모리(memory)에 저장하는 네트워크 인터페이스 모듈(network interface module); 및 제1 제어 신호에 응답하여, 상기 제1 메모리에 저장된 연결 정보를 포함하는 제2 메모리로 이동시키는 메모리 제어 모듈(memory control module);을 포함한다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 네트워크 인터페이스 방법은 TOE 기반의 네트워크 인터페이스 방법으로, 네트워크 인터페이스 모듈에 의해, 요청되는 이벤트의 연결 정보에 대한 연산 동작을 수행하여, 상기 네트워크 인터페이스 모듈에 포함되는 TCP 컨트롤러의 제1 메모리에 저장하는 단계; 및 메모리 제어 모듈에 의해, 상기 연결 정보에 대응되는 이벤트가 제1 시간 동안 발생하지 아니하는 경우, 상기 제1 메모리에 저장된 연결 정보를 상기 메모리 제어 모듈에 포함되는 제2 메모리로 이동시키는 단계;를 포함한다.
본 발명의 실시예에 따른 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법에 의하면, 네트워크 어댑터(network adapter)에서 TCP/IP 처리를 수행하여 호스트 CPU의 부하를 줄이면서, 요청되는 이벤트에 대한 연결 정보를 제1 메모리 및 제2 메모리 중 하나에 저장하고 최적화된 스케줄링을 수행함으로써, 초고속 네트워크에서의 데이터 처리가 가속될 수 있다.
또는, 본 발명의 실시예에 따른 카드 및 네트워크 인터페이스 방법에 의하면, 네트워크 어댑터에서 TCP/IP 처리를 수행하여 호스트 CPU의 부하를 줄이면서, 요청되는 이벤트가 TCP 컨트롤러들에 분산되어 병렬적으로 처리됨으로써, 초고속 네트워크에서의 데이터 처리가 가속될 수 있다.
도 1은 본 발명의 실시예에 따른 네트워크 인터페이스 장치를 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 네트워크 인터페이스 장치에서 처리하는 데이터 패킷을 나타내는 도면이다.
도 3 내지 도 5는 각각, 본 발명의 실시예에 따른 메모리 제어 로직을 나타내는 도면이다.
도 6 및 도 7은 각각 본 발명의 실시예에 따른 TOE(TCP/IP Offload Engine) 기반의 네트워크 인터페이스 장치를 나타내는 도면이다.
도 8A 내지 도 8C는 각각, 본 발명의 실시예에 따른 TCP 컨트롤러와 TCP 연산 로직과의 관계를 나타내는 도면이다.
도 9는 본 발명의 실시예에 따른 네트워크 인터페이스 장치의 동작 방법을 나타내는 순서도이다.
도 10은 도 9의 동작 방법으로 동작하는 네트워크 인터페이스 장치를 나타내는 도면이다.
도 11A 및 도 11B는 각각, 도 9의 네트워크 인터페이스 장치의 동작 방법을 더 자세히 나타내는 도면이다.
도 12A 및 도 12B는 각각 본 발명의 실시예에 따른 연결 정보를 제1 메모리로 재전송하는 동작을 설명하기 위한 도면이다.
도 13은 본 발명의 실시예에 따른 네트워크 인터페이스 장치를 나타내는 도면이다.
도 14는 본 발명의 실시예에 따른 서버 장치를 나타내는 도면이다.
도 15는 본 발명의 실시예에 따른 네트워크 인터페이스 카드를 나타내는 도면이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)를 나타내는 도면이고, 도 2는 본 발명의 실시예에 따른 네트워크 인터페이스 장치에서 처리하는 데이터 패킷(DPK)을 나타내는 도면이다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 이벤트 스케줄러(120), TCP 컨트롤러(140) 및 메모리 제어 로직(160)을 포함하여, 초고속 네트워크에서의 데이터 처리를 효율적으로 가속시킬 수 있다.
이벤트 스케줄러(120)는 요청되는 이벤트(EVT)에 대한 연결 정보(ICT)를 생성하고, 연결 정보(ICT)에 대한 스케줄링을 수행하여 제1 제어 신호(XCT1)를 출력한다. 이벤트(EVT)는 예를 들어, 네트워크로부터 데이터 패킷(DPK)이 수신되거나 어플리케이션으로부터 데이터에 대한 전송 요청이 전달되는 것을 의미할 수 있다. 또는, TCP 컨트롤러(140) 등의 동작에 타임아웃(timeout)이 발생한 경우에도 이벤트(EVT)로 처리될 수 있다.
TCP 컨트롤러(140)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)를 포함할 수 있다. 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)는 각각, 이벤트 스케줄러(120)로부터 연결 정보(ICT)를 수신하고, 연결 정보(ICT)에 대한 연산 동작을 제어하는 연산 동작을 제어한다.
연결 정보(ICT)는 통신하고자 하는 로컬 노드(local node) 및 원격 노드(remote node)의 두 개의 엔드-포인트(end-point) 사이에 연결을 설정하는데 사용되는 정보를 포함할 수 있다. 연결 정보(ICT)는 예를 들어, 로컬 노드 및 원격 노드의 IP 주소 및 포트(port) 번호에 대한 연결 식별자에 대한 사항을 포함할 수 있다. 이러한 연결 정보(ICT)는 TCP/IP 스택(TCP/IP stack)의 각 계층에 대한 헤더(header)를 생성하거나 처리하는데 사용될 수 있다. TCP/IP 스택의 각 계층 중 대응되는 계층에 대해, TCP 헤더를 포함하는 TCP 패킷, IP 헤더를 IP 패킷 및 MAC 헤더를 MAC 패킷이 생성될 수 있다. 예를 들어, TCP 패킷의 헤더에는 출발지 어드레스(source address)와 목적지 어드레스(destination address), 시퀀스 번호(sequence number) 및 승인 번호(acknowledgement number) 등의 메타 데이터가 포함될 수 있다.
이벤트 스케줄러(120)는 연결 정보(ICT)에 대응되는 이벤트 정보(IEV) 또한 생성할 수 있다. 이벤트 정보(IEV)는 연결 정보(ICT)가 나타내는 로컬 노드와 원격 노드 사이에 발생하는 이벤트(EVT)의 유형에 대한 정보일 수 있다. 전술된 예에 대해, 이벤트 정보(IEV)는 대응되는 연결 정보(ICT)로 식별되는 원격 노드로부터의 데이터 패킷(DPK) 수신, 로컬 노드의 데이터 전송 요청 또는 이벤트(EVT)의 타임아웃 등에 대한 정보를 포함할 수 있다.
한 쌍의 로컬 노드 및 원격 노드에 대한 연결 정보(ICT)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144) 중 하나로 전달될 수 있다. 예를 들어, 제1 쌍의 로컬 노드 및 원격 노드에 대한 연결 정보(ICT)는 제1 TCP 컨트롤러(142)로 전달되고, 제2 쌍의 로컬 노드 및 원격 노드에 대한 연결 정보(ICT)는 제2 TCP 컨트롤러(144)로 전달될 수 있다. 또한, 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)에는 다수의 연결 정보(ICT)가 저장될 수 있다. 예를 들어, 제1 TCP 컨트롤러(142)로 x개의 연결 정보(ICT)가 전달되고, 제2 TCP 컨트롤러(144)로 y개의 연결 정보(ICT)가 전달될 수 있다. 이벤트 정보(IEV)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144) 중 대응되는 연결 정보(ICT)가 전달되는 TCP 컨트롤러로 전달될 수 있다.
메모리 제어 로직(160)은 제1 제어 신호(XCT1)에 응답하여, 연결 정보(ICT)를 제1 메모리(MEM1)로 이동시키거나 제2 메모리(MEM2)에 저장한다. 메모리 제어 로직(160)은 연결 정보(ICT)의 저장 위치 또는 스케줄링과 관련하여 수행한 동작에 대한 결과로서 제2 제어 신호(XCT2)를 이벤트 스케줄러(120)로 전달할 수 있다.
제1 메모리(MEM1)는 SRAM(Static Random Access Memory)일 수 있다. 제1 메모리(MEM1)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)에 포함될 수 있다. 제2 메모리(MEM2)는 DRAM(Dynamic Random Access Memory)일 수 있다. 그러나, 제1 메모리(MEM1) 및 제2 메모리(MEM2)의 종류가 제한되는 것은 아니다.
제1 메모리(MEM1)에 저장된 연결 정보(ICT)에 대응되는 이벤트 정보(IEV)가 제1 시간 동안 업데이트 되지 아니하면, 예를 들어 제1 메모리(MEM1)에 저장된 연결 정보(ICT)로 식별되는 로컬 노드와 원격 노드 사이의 통신이 일정 시간 발생하지 아니하는 경우, 제1 제어 신호(XCT1)에 응답하여 제1 메모리(MEM1)에 저장된 연결 정보(ICT)가 제2 메모리(MEM2)에 저장될 수 있다.
이렇듯, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)가 각각 별도의 연결 정보(ICT)에 대한 동작을 독립적으로 수행함으로써, 고속의 이벤트 처리가 가능할 수 있다. 또한, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 이벤트 발생의 대기 시간이 일정 시간 이상 지속되는 연결에 대한 연결 정보(ICT)를 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)의 제1 메모리(MEM1)가 아닌 제2 메모리(MEM2)에 저장하여, 제1 TCP 컨트롤러(142) 또는 제2 TCP 컨트롤러(144)가 새로운 연결 정보(ICT)에 대응되는 동작의 제어를 수행함으로써, 고속의 이벤트 처리가 가능할 수 있다.
도 3 내지 도 5는 각각, 본 발명의 실시예에 따른 메모리 제어 로직(160)을 나타내는 도면이다.
먼저 도 3을 참조하면, 본 발명의 실시예에 따른 제2 메모리(MEM2)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)가 구비되는 제1 칩(CH1)의 외부에 위치할 수 있다. 제2 메모리(MEM2)는 적어도 둘 이상으로 구비될 수 있다. 이때 메모리 제어 로직(160)은 제1 칩(CH1) 및 제2 메모리(MEM2)와 별개의 칩으로 구비될 수 있다. 예를 들어, 메모리 제어 로직(160)은 제1 칩(CH1) 및 제2 메모리(MEM2)이 장착되는 보드 상에 코어 칩인 제1 칩(CH1)과는 다른 FPGA(Field Programmable Gate Array) 칩으로 구비될 수 있다. 이벤트 스케줄러(120)는 제1 칩(CH1)의 외부에 위치하는 것으로 도시하였으나, 이는 이벤트 스케줄러(120)가 다양하게 위치될 수 있음을 의미할 뿐, 이벤트 스케줄러(120)는 제1 칩(CH1)에 포함되는 것을 배제하는 의미는 아니다.
다음으로 도 4를 참조하면, 본 발명의 실시예에 따른 메모리 제어 로직(160)은 제2 메모리(MEM2)가 함께, 제1 칩(CH1)과 별개의 제2 칩(CH2)으로 구비될 수 있다. 예를 들어, 제2 칩(CH2)은 DPU(Data Process Unit) 칩으로 구비될 수 있다. 제1 칩(CH1)과 제2 칩(CH2)은 일관성 인터커넥트(coherent interconnect)를 통해 정보 및 신호를 송수신할 수 있다. 도 3의 제1 칩(CH1)과 메모리 제어 로직(160) 또한 일관성 인터커넥트를 통해 정보 및 신호를 송수신할 수 있다.
또는 도 5에 도시되는 바와 같이, 본 발명의 실시예에 따른 메모리 제어 로직(160)은 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)가 포함되는 제1 칩(CH1)에 구비될 수도 있다. 이때, 메모리 제어 로직(160)은 제2 메모리(MEM2)와 일관성 인터커넥트를 통해 정보 및 신호를 송수신할 수 있다.
전술된 바와 같이, 연결 정보(ICT)의 상태에 근거하여 연결 정보(ICT)는 제1 메모리(MEM1) 및 제2 메모리(MEM2) 중 하나에 저장될 수 있다. 이때, 본 발명의 실시예에 따른 메모리 제어 로직(160)는 제1 제어 신호(XCT1)에 응답하여, 제2 메모리(MEM2)에 저장된 연결 정보(ICT)를 제1 메모리(MEM1)로 전송할지 여부에 대한 의사결정을 수행할 수 있다. 메모리 제어 로직(160)의 동작에 대한 더 자세한 설명은 후술된다.
이렇듯, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 메모리 제어 로직(160)에 의해 연결 정보(ICT)의 저장 위치를 최적화함으로써 데이터 처리 성능을 향상시킬 수 있다. 나아가, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 요구되는 리소스(resource) 제한과 성능 기준에 최적화되도록 메모리 제어 로직(160)을 구비함으로써, 초고속 네트워크 환경에서 최적화된 동작을 수행할 수 있다.
도 6 및 도 7은 각각 본 발명의 실시예에 따른 TOE(TCP/IP Offload Engine) 기반의 네트워크 인터페이스 장치(100)를 나타내는 도면이다.
먼저 도 6을 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 자체적으로 인터넷표준 프로토콜 TCP/IP의 처리를 수행하는 NIC((Network Interface Controller), 네트워크 어댑터, Smart NIC 등일 수 있다. 즉, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 TOE 프로토콜 기반의 네트워크 인터페이스 장치일 수 있다. TOE 프로토콜은 TCP/IP 연산을 호스트 CPU의 운영체제가 아닌 네트워크 인터페이스 장치(100)에서 수행함으로써, 서버 장치의 부하를 줄이고 데이터 처리 속도를 향상시키는 일종의 네트워크 가속 기술이다. 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 TOE 프로토콜 기반으로 구비됨으로써, 초고속 네트워크 환경을 지원할 수 있다.
이를 위해 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)와 함께, 제1 TCP 연산 로직(182) 및 제2 TCP 연산 로직(184)을 더 포함할 수 있다. 제1 TCP 연산 로직(182) 및 제2 TCP 연산 로직(184)은 각각, 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144) 중 대응되는 TCP 컨트롤러로부터 제1 메모리(MEM1)에 저장되는 연결 정보(ICT) 및 이벤트 정보(IEV)를 수신하여 TCP/IP 연산을 수행할 수 있다.
예를 들어, 제1 TCP 연산 로직(182) 및 제2 TCP 연산 로직(184)은 수신되는 연결 정보(ICT) 및 이벤트 정보(IEV)에 대해 혼잡 윈도우(congestion window) 제어, 흐름 제어, 재전송 등, 각 계층의 헤더를 처리하는데 요구되는 연산 동작을 수행할 수 있다. 제1 TCP 연산 로직(182) 및 제2 TCP 연산 로직(184)은 연산 동작의 수행 결과를 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)에 전송할 수 있다.
다음으로 도 2 및 도 7을 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 또한, 네트워크 인터페이스(110), 수신 처리 모듈(130), 호스트 인터페이스(150) 및 송신 처리 모듈(170)을 더 포함할 수 있다.
네트워크 인터페이스(110)는 기가빗 이더넷 컨트롤러(Gigabit Ethernet controller)를 포함하여, Gb 이더넷 MAC/PHY 칩과의 인터페이스를 담당하여 이더넷 패킷의 송수신을 처리할 수 있다. 수신 처리 모듈(130)은 네트워크 인터페이스(110)를 통해 수신되는 데이터 패킷(DPK)을 유저 데이터와 메타 데이터로 파싱(parsing)할 수 있다. 데이터 패킷(DPK)의 유저 데이터는 호스트 인터페이스(150)를 통해 호스트 모듈(host module)로 전달될 수 있다. 호스트 인터페이스(150)는 예를 들어 PCIe 컨트롤러(Peripheral Component Interconnect express controller)를 포함하여, 호스트 모듈과의 인터페이스를 수행할 수 있다.
수신 처리 모듈(130)은 데이터 패킷(DPK)의 메타 데이터를 이벤트 스케줄러(120)로 전송할 수 있다. 이벤트 스케줄러(120)는 수신 처리 모듈(130)로부터 수신되는 메타 데이터를 이벤트(EVT)로 처리할 수 있다. 수신 처리 모듈(130)로부터 전달되는 메타 데이터가 새로운 연결 정보(ICT)를 나타내는 경우, 이벤트 스케줄러(120)는 새로운 연결 정보(ICT)를 생성할 수 있다. 수신 처리 모듈(130)로부터 전달되는 메타 데이터가 제1 메모리(MEM1) 또는 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)와 관련된 경우, 해당 연결 정보(ICT)를 업데이트할 수 있다.
송신 처리 모듈(170)은 호스트 인터페이스(150)를 통해 수신되는 데이터 전송 요청에 응답하여 데이터 패킷(DPK)을 출력할 수 있다. 데이터 전송 요청은 호스트 모듈에서 동작하는 어플리케이션으로부터 전송될 수 있다. 데이터 전송 요청은 호스트 운영체제의 TCP/IP 프로토콜 스택을 거치지 아니하고 호스트 인터페이스(150)로 직접 전달될 수 있다. 이는 어플리케이션의 send() 와 recv() 등 소켓 API(socket Application Programming Interface)에 대한 API 후킹(hooking) 동작을 통해 수행될 수 있다.
송신 처리 모듈(170)은 데이터 전송 요청에 대응되는 TCP 헤더, IP 헤더 및 MAC 헤더를 원격 노드로 전송할 데이타(DTA)에 결합하는 동작을 수행할 수 있다. TCP 헤더, IP 헤더 및 MAC 헤더는 제1 TCP 컨트롤러(142) 및 제1 TCP 연산 로직(182), 또는 제2 TCP 컨트롤러(144) 및 제2 TCP 연산 로직(184)에 의해 생성될 수 있다. 원격 노드로 전송할 데이타(DTA)는 호스트 모듈의 메인 메모리에서 독출할 수 있다.
제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144) 중 데이터 전송 요청에 대응되는 연결 정보(ICT)를 처리하는 TCP 컨트롤러의 전송 명령에 따라, 데이터 패킷(DPK)은 송신 처리 모듈(170)로부터 네트워크 인터페이스(110)로 전송되어 출력될 수 있다.
도 7에 도시되지는 아니하였으나, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 수신 처리 모듈(130)이 처리하고자 하는 데이터 패킷(DPK) 또는 송신 처리 모듈(170)에 의해 처리된 데이터 패킷(DPK)을 일시적으로 저장하거나, 수신 처리 모듈(130)에 의해 처리되어 호스트 인터페이스(150)를 통해 출력하고자 하는 유저 데이터 또는 데이터 전송 요청에 대응되어 호스트 인터페이스(150)를 통해 수신된 유저 데이터를 일시적으로 저장하는 TCP 버퍼가 더 포함될 수 있다. 또는, 이러한 TCP 버퍼의 전부 또는 일부는 제2 메모리(MEM2)의 전부 또는 일부로 구비될 수 있다.
이렇듯, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 도 6 또는 도 7와 같이 동작함으로써, TCP/IP 연산을 자체적으로 수행함으로써, 데이터 처리 속도를 향상시킬 수 있다. 이때, 연결 정보(ICT)가 제2 메모리(MEM2)에 저장되어 있는 경우, 연결 정보(ICT)가 제2 메모리(MEM2)로부터 제1 메모리(MEM1)로 전달된 후 상기의 동작들이 수행될 수 있다. 즉, 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)에 의해 보다 많은 로컬 노드와 원격 노드 사이의 연결을 제어하면서도, 이벤트(EVT)의 발생에 적응적으로 동작할 수 있다. 따라서, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)에 의하면, 초고속 네트워킹을 효율적으로 지원할 수 있다.
도 6 및 도 7에서는 제1 TCP 연산 로직(182) 및 제2 TCP 연산 로직(184)이 제1 TCP 컨트롤러(142) 및 제2 TCP 컨트롤러(144)에 일대일 대응되는 예를 도시한다. 즉, 제1 TCP 연산 로직(182)은 제1 TCP 컨트롤러(142)의 연결 정보(ICT)와 이벤트 정보(IEV)를 처리하고, 제2 TCP 연산 로직(184)은 제2 TCP 컨트롤러(144)의 연결 정보(ICT)와 이벤트 정보(IEV)를 처리할 수 있다. 다만, 이에 한정되는 것은 아니다.
도 8A 내지 도 8C는 각각, 본 발명의 실시예에 따른 TCP 컨트롤러(140)와 TCP 연산 로직(180)과의 관계를 나타내는 도면이다.
먼저 도 1 및 도 8A를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 n개의 TCP 컨트롤러(140) 및 m개의 TCP 연산 로직(180)을 포함할 수 있다. n개의 TCP 컨트롤러(140)는 각각, 제1 제어 신호(XCT1)에 응답하여 연결 정보(ICT) 및 이벤트 정보(IEV)에 대한 연산 동작을 제어할 수 있다. m개의 TCP 연산 로직(180)은 n개의 TCP 컨트롤러(140) 중 대응되는 TCP 컨트롤러로부터 수신되는 연결 정보(ICT) 및 이벤트 정보(IEV)에 근거하여 TCP/IP 연산 동작을 수행할 수 있다.
연결 정보(ICT) 및 이벤트 정보(IEV)는 제1 메모리(MEM1)로부터 TCP 연산 로직(180)으로 전달될 수 있다. 연결 정보(ICT)가 제2 메모리(MEM2)에 저장되어 있는 경우, 제1 제어 신호(XCT1)에 응답하여 제2 메모리(MEM2)로부터 제1 메모리(MEM1)로 옮겨진 후, TCP 연산 로직(180)으로 출력될 수 있다.
이때, n과 m은 같을 수 있다. 즉, TCP 컨트롤러(140)와 TCP 연산 로직(180)은 동일한 개수로 구비될 수 있다. 또한, TCP 컨트롤러(140)와 TCP 연산 로직(180)은 서로 일대일 대응될 수 있다. 예를 들어, 제1 TCP 컨트롤러(142)의 제어에 따라 제1 TCP 연산 로직(182)이 연산 동작이 수행되고, 제n TCP 컨트롤러(140n)의 제어에 따라 제m TCP 연산 로직(180m)이 연산 동작이 수행될 수 있다. 따라서, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 다른 리소스의 제한이 없는 상태에서, n개의 원격 노드와 로컬 로드의 연결에 대해 동시에 병렬 처리가 가능할 수 있다.
다음으로 도 1 및 도 8B를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 n개의 TCP 컨트롤러(140) 및 m개의 TCP 연산 로직(180)을 포함할 수 있다. 도 8A와 마찬가지로, n과 m은 같을 수 있다. 즉, TCP 컨트롤러(140)와 TCP 연산 로직(180)은 동일한 개수로 구비될 수 있다. 다만, 도 8B의 n개의 TCP 컨트롤러(140)는 m개의 TCP 연산 로직(180)을 공유할 수 있다.
예를 들어, 제1 TCP 컨트롤러(142)의 제어에 따라 제1 TCP 연산 로직(182) 내지 제m TCP 연산 로직(180m) 중 하나의 TCP 연산 로직에서 연산 동작이 수행되고, 제n TCP 컨트롤러(140n)의 제어에 따라 제1 TCP 연산 로직(182) 내지 제m TCP 연산 로직(180m) 중 하나의 TCP 연산 로직에서 연산 동작이 수행될 수 있다. 다만, 이에 한정되는 것은 아니다. n개의 TCP 컨트롤러(140) 중 일부가 m개의 TCP 연산 로직(180) 중 일부를 공유하고, n개의 TCP 컨트롤러(140) 중 나머지가 m개의 TCP 연산 로직(180) 중 나머지를 공유할 수도 있다.
본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 도 8B와 같이 구비됨으로써, 최적의 스케줄링이 수행되는 상태에서, n개의 원격 노드와 로컬 로드의 연결에 대해 동시에 병렬 처리가 가능할 뿐 아니라, m개의 TCP 연산 로직(180) 중 연산 동작의 수행이 완료된 연산 로직을 통해 새로운 이벤트(EVT)를 처리할 수 있다. 따라서, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)의 처리 성능이 향상될 수 있다.
다음으로 도 1 및 도 8C를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 n개의 TCP 컨트롤러(140) 및 m개의 TCP 연산 로직(180)을 포함할 수 있다. 이때, n과 m은 다를 수 있다. 즉, TCP 컨트롤러(140)와 TCP 연산 로직(180)은 서로 다른 개수로 구비될 수 있다. 이때, n개의 TCP 컨트롤러(140) 중 적어도 하나 이상의 TCP 컨트롤러가 m개의 TCP 연산 로직(180) 중 적어도 둘 이상의 TCP 연산 로직에 공유되거나, n개의 TCP 컨트롤러(140) 중 적어도 두 개의 TCP 컨트롤러가 m개의 TCP 연산 로직(180) 중 적어도 하나 이상의 TCP 연산 로직을 공유할 수 있다.
도 8C는 일 예로, 제1 TCP 컨트롤러(142)의 제어에 따라 제1 TCP 연산 로직(182) 및 제2 TCP 연산 로직(184)에서 연산 동작이 수행되고, 제n-1 TCP 컨트롤러(140n-1) 및 제n TCP 컨트롤러(140n)의 제어에 따라 제m TCP 연산 로직(180m)에서 연산 동작이 수행되는 예를 도시한다. 따라서, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 리소스의 제약하에 최적화된 스케줄링을 수행하여, 그 처리 성능을 향상시킬 수 있다.
도 8A 내지 도 8C에서는 TCP 컨트롤러(140)와 TCP 연산 로직(180)의 개수가 동일한지 여부에 대해 전제하였으나, TCP 컨트롤러(140)와 TCP 연산 로직(180)은 그 개수의 동일성과 무관하게 도 8A 내지 도 8C 또는 그밖의 다른 연결 관계로 설정될 수 있을 것이다.
도 9는 본 발명의 실시예에 따른 네트워크 인터페이스 장치의 동작 방법(900)을 나타내는 순서도이고, 도 10은 도 9의 동작 방법(900)으로 동작하는 네트워크 인터페이스 장치(100)를 나타내는 도면이다.
도 9 및 도 10을 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)의 동작 방법(900)은, 연결 정보(ICT)를 TCP 컨트롤러(140)의 제1 메모리(MEM1)에 저장하는 단계(S920), 제1 메모리(MEM1)에 저장된 연결 정보(ICT)에 대응되는 이벤트(EVT)의 발생을 체크하는 단계(S940) 및 연결 정보(ICT)에 대응되는 이벤트(EVT)가 제1 시간 동안 발생하지 아니하는 경우 제1 메모리(MEM1)에 저장된 연결 정보(ICT)를 제2 메모리(MEM2)로 이동시키는 단계(S960)를 포함하여, 초고속 네트워크에서의 데이터 처리를 가속시킬 수 있다.
전술된 바와 같이, 연결 정보(ICT)는 이벤트 스케줄러(120)가 수신되는 이벤트(EVT)에 대해 생성하는 정보이다. 제1 메모리(MEM1)는 TCP 컨트롤러(140)의 SRAM일 수 있다. 연결 정보(ICT)를 제2 메모리(MEM2)에 기입하는 동작은 메모리 제어 로직(160)에 의해 수행될 수 있다. 제2 메모리(MEM2)는 TCP 컨트롤러(140)가 구비되는 칩의 외부에 위치하는 DRAM일 수 있다. 제2 메모리(MEM2)는 다수로 구비되고, 다수의 제2 메모리(MEM2) 중 메모리 제어 로직(160)에 의해 연결 정보(ICT)를 기입하고자 하는 메모리가 선택될 수 있다.
따라서, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100) 및 이의 동작 방법(900)은 한정된 TCP 컨트롤러(140)가 더 많은 로컬 노드와 원격 노드 사이의 연결을 제어할 수 있어, 그 성능이 향상될 수 있다.
도 11A 및 도 11B는 각각, 도 9의 네트워크 인터페이스 장치의 동작 방법(900)을 더 자세히 나타내는 도면이다.
먼저 도 10 및 도 11A를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)의 동작 방법(900)은, 이벤트 스케줄러(120)가 이벤트(EVT)를 수신하면(S912), 이벤트(EVT)에 대응되는 연결 정보(ICT)를 생성하거나 기 생성된 연결 정보(ICT)를 업데이트할 수 있다(S914). 이벤트 스케줄러(120)는 연결 정보(ICT)의 저장 위치를 저장하는 맵핑 테이블(MTB)을 포함할 수 있다.
새로이 생성되는 연결 정보(ICT)에 관한 사항이 맵핑 테이블(MTB)에 존재하지 아니하는 경우, 이벤트 스케줄러(120)는 맵핑 테이블(MTB)을 업데이트하고(S916), 연결 정보(ICT)를 TCP 컨트롤러(140)에 전달할 수 있다(S918). TCP 컨트롤러(140)는 연결 정보(ICT)를 제1 메모리(MEM1)에 저장할 수 있다(S920).
이벤트 스케줄러(120)는 주기적으로 연결 정보(ICT)에 대응되는 이벤트(EVT)의 발생을 체크할 수 있다(S940). 쌍을 이루는 원격 노드와 로컬 노드 사이의 연결에 대한 식별자인 연결 정보(ICT)에 대해 연속 또는 불연속적으로 다수의 이벤트(EVT)가 발생할 수 있다. 연결 정보(ICT)에 대응되는 이벤트(EVT)가 제1 시간(t1) 동안 발생하지 아니하는 경우, 이벤트 스케줄러(120)는 제1 제어 신호(XCT1)를 연결 정보(ICT)과 관련된 동작을 제어하고 있는 TCP 컨트롤러(140) 및 메모리 제어 로직(160)에 전달할 수 있다(S942).
TCP 컨트롤러(140)는 제1 제어 신호(XCT1)에 응답하여 제1 메모리(MEM1)에 저장된 연결 정보(ICT)를 메모리 제어 로직(160)에 전달할 수 있다(S944). 메모리 제어 로직(160)은 제1 제어 신호(XCT1)에 응답하여 TCP 컨트롤러(140)로부터 수신되는 연결 정보(ICT)를 제2 메모리(MEM2)에 기입할 수 있다(S960).
메모리 제어 로직(160)은 연결 정보(ICT)가 제2 메모리(MEM2)에 저장되었음을 나타내는 제2 제어 신호(XCT2)를 이벤트 스케줄러(120)로 전달할 수 있다(S962). 이벤트 스케줄러(120)는 제2 제어 신호(XCT2)에 응답하여, 맵핑 테이블(MTB)을 업데이트할 수 있다(S964).
다음으로 도 1 및 도 11B를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)의 동작 방법(900)은, TCP 컨트롤러(142, 144)가 둘 이상으로 구비되는 경우, 이벤트 스케줄러(120)가 연결 정보(ICT)를 전송하기 전에, 다수의 TCP 컨트롤러(142, 144) 중 어느 TCP 컨트롤러에 연결 정보(ICT)를 전송할지를 선택할 있다(S915). 이벤트 스케줄러(120)는 다수의 TCP 컨트롤러(142, 144) 각각이 제어하는 연결 정보(ICT)의 개수에 근거하여 TCP 컨트롤러를 선택할 수 있다. 예를 들어, 제1 TCP 컨트롤러(142)가 2개의 연결 정보(ICT)를 저장하고 있고 제2 TCP 컨트롤러(144)가 5개의 연결 정보(ICT)를 저장하고 있다면, 이벤트 스케줄러(120)는 새롭게 생성되는 연결 정보(ICT)를 제1 TCP 컨트롤러(142)로 전송할 수 있다(S918).
도 12A 및 도 12B는 각각 본 발명의 실시예에 따른 연결 정보(ICT)를 제1 메모리(MEM1)로 재전송하는 동작을 설명하기 위한 도면이다.
먼저 도 10 및 도 12A를 참조하면, 이벤트(EVT)가 이벤트 스케줄러(120)로 수신되면(S912), 이벤트 스케줄러(120)가 맵핑 테이블(MTB)을 검색할 수 있다(S913). 그 결과 해당 이벤트(EVT)가 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)에 대응되는 경우, 이벤트 스케줄러(120)는 메모리 제어 로직(160)으로 제1 제어 신호(XCT1)를 전송할 수 있다(S915). 도 12A(및 도 12B)의 제1 제어 신호(XCT1)는 도 11A(및 도 11B)의 제1 제어 신호(XCT1)와 논리 레벨이 상이하는 등 그 신호 값이 상이할 수 있다.
메모리 제어 로직(160)은 제1 제어 신호(XCT1)에 응답하여, 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)를 제1 메모리(MEM1)로 전송할지 여부를 판단할 수 있다(S970). 예를 들어, 메모리 제어 로직(160)은 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)에 대한 이벤트(EVT)가 제2 시간 내에 수행될 확률이 일정 값 이하인 경우, 메모리 제어 로직(160)은 제1 메모리(MEM1)로 전송하지 아니하고 대기 상태를 유지할 수 있다. 반면, 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)에 대한 이벤트(EVT)가 제2 시간 내에 수행될 확률이 일정 값보다 높은 경우, 메모리 제어 로직(160)은 연결 정보(ICT)를 제1 메모리(MEM1)로 이동시킬 수 있다(S980).
메모리 제어 로직(160)은 연결 정보(ICT)를 제1 메모리(MEM1)로 이동시켰는지 여부를 나타내는 제2 제어 신호(XCT2)를 이벤트 스케줄러(120)에 전달할 수 있다(S982). 이벤트 스케줄러(120)는 제2 제어 신호(XCT2)에 응답하여, 연결 정보(ICT)를 맵핑 테이블(MTB)을 업데이트할 수 있다(S984).
다음으로 도 1 및 도 12B를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)의 동작 방법(900)은, TCP 컨트롤러(142, 144)가 둘 이상으로 구비되는 경우, 도 12A와 같이 메모리 제어 로직(160)이 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)를 제1 메모리(MEM1)로 전송(S980)하기 전에, 이벤트 스케줄러(120)는 다수의 제1 메모리(MEM1) 중 어느 TCP 컨트롤러(142, 144)의 제1 메모리로 연결 정보(ICT)를 재이동시킬지를 결정할 수 있다(S990).
구체적으로, 메모리 제어 로직(160)이 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)를 제1 메모리(MEM1)로 전송할지 여부를 판단(S970)한 결과를 이벤트 스케줄러(120)에 제2 제어 신호(XCT2)로 전달할 수 있다(S982). 제2 제어 신호(XCT2)가 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)를 제1 메모리(MEM1)로 전송하는 것을 나타내는 때에, 이벤트 스케줄러(120)는 TCP 컨트롤러(142, 144) 중 맵핑 테이블(MTB)을 검색하여 제1 메모리(MEM1)에 연결 정보(ICT)를 저장할 수 있는 TCP 컨트롤러, 예를 들어 제1 TCP 컨트롤러(142)를 선택할 수 있다(S990). 이하에서는 제1 TCP 컨트롤러(142)가 선택된 경우를 전제한다.
이때, 모든 있는 TCP 컨트롤러(142, 144)의 제1 메모리(MEM1)가 연결 정보(ICT)를 저장할 수 없는 경우, 이벤트 스케줄러(120)는 다수의 TCP 컨트롤러(142, 144) 중 하나의 제1 TCP 컨트롤러(142)를 선택할 수 있다. 이벤트 스케줄러(120)는 LRU(Least Recently Used) 전략 등에 근거하여 TCP 컨트롤러를 선택할 수 있다. 이벤트 스케줄러(120)는 선택된 제1 TCP 컨트롤러(142)로 제1 제어 신호(XCT1)를 전송할 수 있다(S992).
제1 제어 신호(XCT1)를 수신하는 제1 TCP 컨트롤러(142)는 포함하는 제1 메모리(MEM1)에 저장되어 있는 연결 정보(ICT) 중 하나를 제2 메모리(MEM2)로 전달할 수 있다(S994). 제1 TCP 컨트롤러(142)는 저장하고 있는 연결 정보(ICT) 중 LRU 전략 등을 기준으로 제2 메모리(MEM2)에 전달되는 연결 정보(ICT)를 선택할 수 있다.
메모리 제어 로직(160)은 제1 메모리(MEM1)에 저장되어 있는 연결 정보(ICT)를 전달한 제1 TCP 컨트롤러(142)로, 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)를 전달할 수 있다(S996). 메모리 제어 로직(160)은 제2 메모리(MEM2)에 저장되어 있던 연결 정보(ICT)가 제1 메모리(MEM1)에 저장되었음을 나타내는 제2 제어 신호(XCT2)를 이벤트 스케줄러(120)로 전송하고(S998), 이벤트 스케줄러(120)는 제2 제어 신호(XCT2)에 응답하여 맵핑 테이블(MTB)을 업데이트할 수 있다(S999).
이렇듯, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100) 및 이의 동작 방법(900)에 의하면, 이벤트 스케줄러(120)와 메모리 제어 로직(160)의 스케줄링을 통하여 연결 정보(ICT)의 저장 위치를 최적화함과 동시에 효율적으로 제1 메모리(MEM1)로 재이동시킴으로써, 데이터 처리 성능을 향상시킬 수 있다.
도 13은 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)를 나타내는 도면이다.
도 13을 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)는 이상에서 설명된 실시예의 경우와 달리, 이벤트 스케줄러(120)가 연결 정보(ICT)를 메모리 제어 로직(160)으로 전달할 수 있다. 예를 들어, 원격 노드 및 로컬 노드에 대한 다수의 연결 쌍이 동시 또는 근접한 시간 내에 생성되는 경우, 이벤트 스케줄러(120)는 우선 연결 정보(ICT)가 제2 메모리(MEM2)에 저장되도록 메모리 제어 로직(160)에 전달할 수 있다.
이 경우, 도 12A 또는 도 12B의 동작에 따라, 제2 메모리(MEM2)에 저장되어 있는 연결 정보(ICT)가 처리될 수 있다. 이렇듯, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100)에 의하면, 일정한 리소스를 기준으로 최대한 많은 연결을 처리할 수 있다.
도 14는 본 발명의 실시예에 따른 서버 장치(1400)를 나타내는 도면이다.
*도 14를 참조하면, 본 발명의 실시예에 따른 서버 장치(1400)는 네트워크 인터페이스 모듈(1420) 및 호스트 모듈(1440)을 포함한다. 본 발명의 실시예에 따른 서버 장치(1400)는 비동기식 웹 서버, 스레드(thread) 기반 웹 서버, 포워드 프록시(forward proxy) 또는 리버스 프록시(reverse proxy) 기반 웹 서버 등 다양한 유형의 웹 서버 중 하나일 수 있다. 또는 본 발명의 실시예에 따른 서버 장치(1400)는 웹 어플리케이션 서버(Web Application Server: WAS), 스토리지 서버(storage server), 데이터베이스 서버(database server) 등 다양한 유형의 서버 중 하나일 수 있다.
네트워크 인터페이스 모듈(1420)은 데이터 패킷(DPK)에 대한 TCP/IP 연산을 수행하는 TCP/IP 하드웨어 스택(1422) 및 TCP/IP 소프트웨어 스택(1424)을 포함한다. TCP/IP 하드웨어 스택(1422)은 도 1 또는 도 10 등의 네트워크 인터페이스 장치(100)를 포함할 수 있다.
TCP/IP 소프트웨어 스택(1424)은 도 1 등에 명시되지는 아니하였으나, 도 7에서 설명된 바와 같이 호스트 모듈(1440)의 운영체제의 TCP/IP 프로토콜 스택을 거치지 아니하고 네트워크 인터페이스 모듈(1420)에서 TCP/IP 연산을 수행하기 위한 TCP/IP 하드웨어 스택(1422)과 호스트 모듈(1440) 사이의 통신을 수행할 수 있다. 예를 들어, TCP/IP 소프트웨어 스택(1444)은 호스트 모듈(1440)이 데이터 전송 요청을 생성한 경우, 호스트 모듈(1440)의 어플리케이션의 send() 와 recv() 등 소켓 API에 대한 API 후킹 동작을 수행할 수 있다.
도 14의 네트워크 인터페이스 모듈(1420)에 대해 전술된 네트워크 인터페이스 장치(100)에 대한 다양한 실시예가 적용될 수 있다. 예를 들어, 네트워크 인터페이스 모듈(1420)은 도 1에 도시된 바와 같이 적어도 둘 이상의 TCP 컨트롤러(142, 144)를 포함할 수 있다. 또는, 네트워크 인터페이스 모듈(1420)은 도 4에 도시된 바와 같이 제2 메모리(MEM2)와 함께 DPU 칩으로 구비될 수 있다.
본 발명의 실시예에 따른 서버 장치(1400)에 의하면, 네트워크 인터페이스 모듈(1420)에서 TCP/IP 연산을 수행하여 호스트 모듈(1440)의 CPU의 부하를 줄이면서, 요청되는 이벤트에 대한 연결 정보를 제1 메모리(MEM1) 및 제2 메모리 중 하나에 저장하고 최적화된 스케줄링을 수행함으로써, 초고속 네트워크에서의 데이터 처리가 가속될 수 있다. 또한, 본 발명의 실시예에 따른 서버 장치(1440)에 의하면, 다수의 TCP 컨트롤러를 포함하여, 원격 노드와 로컬 로드의 연결 쌍에 대한 처리를 병렬적으로 수행할 수 있어, 서버 장치(1440)의 데이터 처리 성능을 향상시킬 수 있다.
도 15는 본 발명의 실시예에 따른 네트워크 인터페이스 카드(1500)를 나타내는 도면이다.
도 15를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 카드(network interface card, 1500)는 TOE(TCP/IP Offload Engine) 기반의 네트워크 인터페이스 카드로, 네트워크 인터페이스 모듈(1520) 및 메모리 제어 모듈(memory control module, 1540)을 포함할 수 있다.
네트워크 인터페이스 모듈(1520)은 요청되는 이벤트(EVT)의 연결 정보(ICT)에 대한 연산 동작을 수행하여 포함하는 TCP 컨트롤러(140)의 제1 메모리(MEM1)에 저장할 수 있다. 메모리 제어 모듈(1540)은 제1 제어 신호(XCON1)에 응답하여, 제1 메모리(MEM1)에 저장된 연결 정보(ICT)를 포함하는 제2 메모리(MEM2)로 이동시킬 수 있다. TCP 컨트롤러(140)은 도 1 등과 같이 2개 또는 그 이상으로 구비될 수 있다. 네트워크 인터페이스 모듈(1520)은 도 14의 네트워크 인터페이스 모듈(1420)에서 도 1의 메모리 제어 로직(160) 및 제2 메모리(MEM2)가 생략되어 구비될 수 있다. 메모리 제어 모듈(1540)은 전술된 메모리 제어 로직(160)의 동작과 함께, 캐시 메모리의 제어, DMA(Direct Memory Access) 동작 등, 본 발명의 실시예에 따른 네트워크 인터페이스 카드(1500)에서 수행되는 다른 메모리 제어 동작을 수행할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 예를 들어, 기술되지는 아니하였으나, 본 발명의 실시예에 따른 네트워크 인터페이스 장치(100) 및 서버 장치(1400)는 TCP/IP 외의 ICMP(Internet Control Message Protocol), ARP(Address Resolution Protocol) 등 다른 네트워크 프로토콜을 지원하기 위한 별도의 모듈을 더 포함할 수 있고, 해당 처리 모듈을 통해 연결 계층 라우팅(link layer routing) 등을 수행할 수 있다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 네트워크 인터페이스 장치
120: 이벤트 스케줄러
140: TCP 컨트롤러
160: 메모리 제어 로직
MEM1: 제1 메모리
MEM2: 제2 메모리

Claims (5)

  1. TOE(TCP/IP Offload Engine) 기반의 네트워크 인터페이스 카드(network interface card)에 있어서,
    각각 이벤트 스케줄러로부터 연결 정보 중 서로 다른 연결 정보를 수신하고 수신된 상기 연결 정보가 저장되는 제1 메모리를 구비하는 n개의 TCP 컨트롤러, 및 상기 제1 메모리에 저장되는 상기 연결 정보 및 상기 연결 정보에 대응되는 이벤트 정보를 수신하여 TCP/IP 연산을 수행하는 m개의 TCP 연산 로직을 포함하는 네트워크 인터페이스 모듈(network interface module); 및
    상기 제1 메모리에 저장된 상기 연결 정보에 대응되는 이벤트가 제1 시간 동안 업데이트되지 아니하는 경우, 제1 제어 신호에 응답하여 상기 제1 메모리에 저장된 상기 연결 정보를 상기 n개의 TCP 컨트롤러의 외부에 위치하는 제2 메모리로 이동시키는 메모리 제어 모듈(memory control module);을 포함하는 네트워크 인터페이스 카드.
  2. 청구항 1에 있어서,
    상기 n과 상기 m은 상이한 네트워크 인터페이스 카드.
  3. 청구항 1에 있어서,
    상기 네트워크 인터페이스 모듈은,
    요청되는 이벤트에 대한 상기 연결 정보를 생성하고 상기 연결 정보에 대한 스케줄링을 수행하여 상기 제1 제어 신호를 생성하는 이벤트 스케줄러;를 더 포함하는 네트워크 인터페이스 카드.
  4. 청구항 1에 있어서,
    상기 메모리 제어 모듈은,
    상기 제2 메모리에 저장된 상기 연결 정보에 대응되는 이벤트가 발생하는 경우, 상기 제2 메모리에 저장된 상기 연결 정보를 상기 n개의 TCP 컨트롤러 중 하나의 TCP 컨트롤러의 상기 제1 메모리로 재전송하는 네트워크 인터페이스 카드.
  5. 삭제
KR1020230001424A 2022-10-20 2023-01-04 Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법 KR102536942B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230001424A KR102536942B1 (ko) 2022-10-20 2023-01-04 Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220135961A KR102535531B1 (ko) 2022-10-20 2022-10-20 Toe 기반 네트워크 인터페이스 장치, 이의 동작 방법 및 이를 포함하는 서버 장치
KR1020230001424A KR102536942B1 (ko) 2022-10-20 2023-01-04 Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020220135961A Division KR102535531B1 (ko) 2022-10-20 2022-10-20 Toe 기반 네트워크 인터페이스 장치, 이의 동작 방법 및 이를 포함하는 서버 장치

Publications (1)

Publication Number Publication Date
KR102536942B1 true KR102536942B1 (ko) 2023-05-30

Family

ID=86529659

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020220135961A KR102535531B1 (ko) 2022-10-20 2022-10-20 Toe 기반 네트워크 인터페이스 장치, 이의 동작 방법 및 이를 포함하는 서버 장치
KR1020230001424A KR102536942B1 (ko) 2022-10-20 2023-01-04 Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020220135961A KR102535531B1 (ko) 2022-10-20 2022-10-20 Toe 기반 네트워크 인터페이스 장치, 이의 동작 방법 및 이를 포함하는 서버 장치

Country Status (2)

Country Link
US (1) US20240236211A9 (ko)
KR (2) KR102535531B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100101996A (ko) * 2009-03-10 2010-09-20 엘에스산전 주식회사 서버의 tcp 접속 제어 장치 및 그 방법
JP2015019232A (ja) * 2013-07-10 2015-01-29 キヤノン株式会社 通信装置、通信装置の制御方法およびプログラム
US20200274827A1 (en) * 2017-12-19 2020-08-27 Xilinx, Inc. Network Interface Device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100101996A (ko) * 2009-03-10 2010-09-20 엘에스산전 주식회사 서버의 tcp 접속 제어 장치 및 그 방법
JP2015019232A (ja) * 2013-07-10 2015-01-29 キヤノン株式会社 通信装置、通信装置の制御方法およびプログラム
US20200274827A1 (en) * 2017-12-19 2020-08-27 Xilinx, Inc. Network Interface Device

Also Published As

Publication number Publication date
US20240137429A1 (en) 2024-04-25
US20240236211A9 (en) 2024-07-11
KR102535531B1 (ko) 2023-05-30

Similar Documents

Publication Publication Date Title
US10204070B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
US6836808B2 (en) Pipelined packet processing
US7996583B2 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US20180375928A1 (en) Distributed load balancer
US7865633B2 (en) Multiple context single logic virtual host channel adapter
US7315896B2 (en) Server network controller including packet forwarding and method therefor
US9774651B2 (en) Method and apparatus for rapid data distribution
US20080059686A1 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
CN113490927A (zh) 具有硬件集成和乱序放置的rdma输送
US8539089B2 (en) System and method for vertical perimeter protection
CN103312807A (zh) 数据传输方法、装置及系统
US20120221669A1 (en) Communication method for parallel computing, information processing apparatus and computer readable recording medium
US20030229713A1 (en) Server network controller including server-directed packet forwarding and method therefor
JP2019106697A (ja) 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス
CN114024910B (zh) 一种用于金融交易系统的极低延时可靠通讯系统及方法
US20050074010A1 (en) Method and apparatus for exchanging routing information in distributed router system
CN109120556B (zh) 一种云主机访问对象存储服务器的方法及系统
CN111541624B (zh) 空间以太网缓存处理方法
KR102536942B1 (ko) Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법
CN109040323B (zh) 负载均衡装置
CN106372013B (zh) 远程内存访问方法、装置和系统
US20190391856A1 (en) Synchronization of multiple queues
US7290055B2 (en) Multi-threaded accept mechanism in a vertical perimeter communication environment
WO2024085281A1 (ko) 네트워크 인터페이스 장치, 이의 동작 방법 및 이를 포함하는 서버 장치
US11336592B2 (en) Flexible link level retry for shared memory switches

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant