KR102184363B1 - 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터 - Google Patents

네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터 Download PDF

Info

Publication number
KR102184363B1
KR102184363B1 KR1020190088762A KR20190088762A KR102184363B1 KR 102184363 B1 KR102184363 B1 KR 102184363B1 KR 1020190088762 A KR1020190088762 A KR 1020190088762A KR 20190088762 A KR20190088762 A KR 20190088762A KR 102184363 B1 KR102184363 B1 KR 102184363B1
Authority
KR
South Korea
Prior art keywords
network connector
client
tcp connection
packet
host
Prior art date
Application number
KR1020190088762A
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 KR1020190088762A priority Critical patent/KR102184363B1/ko
Application granted granted Critical
Publication of KR102184363B1 publication Critical patent/KR102184363B1/ko

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
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • 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/35Flow control; Congestion control by embedding flow control information in regular packets, e.g. piggybacking
    • 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/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • 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/163In-band adaptation of TCP data exchange; In-band control procedures

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

본 발명의 실시예에 따른 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법은, TCP(Transmission Control Protocol) 연결 생성에 관련된 정보를 상기 호스트로부터 수신하는 단계, 상기 클라이언트로부터 TCP 연결 요청 패킷을 수신하는 단계, 상기 TCP 연결 생성에 관련된 정보를 참조하여 상기 TCP 연결 요청 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 생성하는 단계, 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하는 단계, 상기 네트워크 커넥터의 수신 확인 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하는 단계 및 상기 네트워크 커넥터의 수신 확인 패킷 정보와 상기 클라이언트의 수신 확인 패킷 정보를 참조하여 상기 TCP 연결의 생성을 상기 호스트에 통지하는 단계를 포함할 수 있다.

Description

네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터{COMMUNICATING METHOD BETWEEN HOST AND CLIENT WITH NETWORK CONNECTOR, AND NETWORK CONNECTOR PROCEEDING THE SAME}
본 발명은 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터에 관한 것으로, 보다 구체적으로 호스트가 수행하던 TCP 연결 생성 및/또는 TCP 연결 종료를 네트워크 커넥터로 오프로딩하는 방법을 제공하기 위한, 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터에 관한 것이다.
TCP (Transmission Control Protocol) 는 오늘날의 네트워크에서 가장 널리 사용되는 전송 계층 프로토콜이다. TCP는 두 종단 간 신뢰성 있는 연결을 보장하며 네트워크 링크와 호스트의 트래픽 처리를 위한 연산 자원 등이 부족해지는 상황을 방지하도록 혼잡 제어 및 흐름 제어를 지원한다. TCP는 IP (Internet Protocol) 가 동작하는 어떤 네트워크 호스트에서도 동작 가능하며 네트워크 경로 내에 존재하는 네트워크 노드에서도 IP 기반 라우팅 이외의 어떤 특별한 추가적인 기능도 필요 없다는 장점이 있다.
이러한 이유로 TCP는 WAN 및 데이터센터 네트워크 등에서 양 종단 간 신뢰성 있는 데이터 전송을 위해 널리 사용되어 왔다. 실제로 최근 연구에 따르면 TCP 트래픽은 셀룰러 네트워크를 통해 전송되는 트래픽의 95% 이상을, 그리고 데이터센터 네트워크를 통해 전송되는 트래픽의 절반 이상을 차지하는 것으로 나타났다.
한편 도 5에 도시한 바와 같이, 최근 네트워크에서 모바일 트래픽을 포함한 사용자 트래픽이 급증함에 따라 이를 처리하기 위한 네트워크 트래픽 처리 성능 또한 중요한 문제로 대두되었다.
특히 최근 데이터 센터 및 WAN 네트워크에서는 짧은 TCP 연결의 수가 많은 형태의 트래픽이 흔하게 발생하며, 따라서 TCP 기반 애플리케이션에 대해 짧은 길이의 연결들을 효율적으로 처리하는 것이 중요한 문제가 되었다.
구체적으로, 기존 TCP 서버 애플리케이션들의 경우, (1) TCP 스택 연산에 많은 CPU cycle을 소모하고 (2) 네트워크 커넥터(200) - 호스트 간 메모리 복사를 위해 많은 비용을 요구했다. 이로 인해 많은 수의 TCP 연결들이 동시에 생성되고 종료되는 경우 TCP 서버 애플리케이션 성능이 크게 저하되는 문제가 발생했다. 그리고 당연하게도 이러한 TCP 연결 생성 및 종료 처리 비용은 TCP 연결들의 길이가 짧을수록 더 큰 문제가 된다.
본 발명에서는 TCP 애플리케이션들이 TCP 연결 생성 및 종료를 처리하는 과정에서 발생하는 비싼 TCP 연산 비용으로 인해 발생하는 연결 처리 성능 한계 문제를 해결하고자 한다.
또한, 본 발명에서는 TCP 연결의 생성과 종료 과정을 네트워크 커넥터(200)에서 처리하는 디자인을 제안하여 많은 수의 연결들의 동시 처리 시 TCP 서버 성능을 크게 개선하고자 한다. 그리고, 이를 이용하여 특히 짧은 TCP 연결 생성 및 종료와 같은 반복적인 연산들로 인해 CPU 자원들이 낭비되고 TCP 서버의 성능이 저하되는 문제를 해결하고자 한다.
실시예에 따른 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법은, TCP(Transmission Control Protocol) 연결 생성에 관련된 정보를 상기 호스트로부터 수신하는 단계, 상기 클라이언트로부터 TCP 연결 요청 패킷을 수신하는 단계, 상기 TCP 연결 생성에 관련된 정보를 참조하여 상기 TCP 연결 요청 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 생성하는 단계, 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하는 단계, 상기 네트워크 커넥터의 수신 확인 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하는 단계 및 상기 네트워크 커넥터의 수신 확인 패킷 정보와 상기 클라이언트의 수신 확인 패킷 정보를 참조하여 상기 TCP 연결의 생성을 상기 호스트에 통지하는 단계를 포함할 수 있다.
상기 TCP(Transmission Control Protocol) 연결 생성에 관련된 정보는 IP(Internet Protocol) 주소 정보 및 TCP 포트 정보를 포함할 수 있다.
상기 네트워크 커넥터의 수신 확인 패킷 정보는 순서 번호(Sequence Number)를 포함하고 상기 클라이언트의 수신 확인 패킷 정보는 응답 번호(Acknowledgement Number)를 포함하며, 상기 순서 번호(Sequence Number)와 상기 응답 번호(Acknowledgement Number)를 서로 비교하여 상기 TCP 연결의 생성을 상기 호스트에 통지할 수 있다.
상기 TCP 연결의 생성을 상기 호스트에 통지하는 단계는 피기 배킹(Piggybacking) 프로토콜 방식을 이용하여 수행될 수 있다.
실시예에 따른 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법은, TCP(Transmission Control Protocol) 연결 종료에 관련된 정보를 포함하는 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 단계, 상기 TCP 연결 종료 패킷을 상기 클라이언트로 전송하는 단계, 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하는 단계 및 상기 클라이언트의 수신 확인 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하여 상기 TCP 연결의 종료를 상기 클라이언트에 통지하는 단계를 포함할 수 있다.
상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 단계는, 상기 클라이언트로 전송되지 않은 데이터 및 상기 클라이언트로부터 수신이 확인되지 않은 데이터 중 적어도 하나가 존재하는 지 여부에 따라 해당 데이터가 포함된 상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신할 수 있다.
상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 단계는, 상기 호스트에서 상기 해당 데이터의 송신을 제어하기 위한 혼잡 제어 윈도우(congestion control window) 및 TCP 세그먼트의 최대 바이트 수인 최대 세그먼트 크기(Maximum Segment Size) 중 적어도 하나와 상기 해당 데이터의 크기가 비교되어 상기 비교 결과에 따라 상기 TCP 연결 종료 패킷의 상기 호스트로부터의 수신이 상이하게 수행될 수 있다.
상기 TCP 연결 종료에 관련된 정보는 IP주소, TCP 연결 상태, 순서 번호(Sequence Number), 응답 번호(Acknowledgement Number), 재전송 시간 초과(Retransmission Timeout, RTO) 등을 포함할 수 있다.
상기 재전송 시간 초과(Retransmission Timeout, RTO)까지 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인이 이루어지지 않은 경우 해당 TCP 연결 종료 패킷를 재전송하는 단계를 더 포함할 수 있다.
상기 TCP 연결의 종료를 상기 클라이언트에 통지하고 소정의 대기 시간이 경과하면 상기 네트워크 커넥터에 미리 저장된 상기 TCP 연결 생성에 관련된 정보를 삭제하는 단계를 더 포함할 수 있다.
상기 재전송 시간 초과(Retransmission Timeout, RTO) 및 상기 소정의 대기 시간 중 적어도 하나는 상기 네트워크 커넥터에 저장된 모든 TCP 연결 정보를 포함하는 비트맵들이 순차적으로 스캔되도록 구현된 타이머 구조체를 기초로 판단될 수 있다.
호스트 및 클라이언트와 통신하는 네트워크 커넥터는, TCP(Transmission Control Protocol) 연결 생성에 관련된 정보를 상기 호스트로부터 수신하는 호스트 인터페이스부, 상기 클라이언트로부터 TCP 연결 요청 패킷을 수신하는 포트부 및
상기 TCP 연결 생성에 관련된 정보를 참조하여 상기 TCP 연결 요청 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 생성하고, 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하며, 상기 네트워크 커넥터의 수신 확인 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하고, 상기 네트워크 커넥터의 수신 확인 패킷 정보와 상기 클라이언트의 수신 확인 패킷 정보를 참조하여 상기 TCP 연결의 생성을 상기 호스트에 통지하도록 제어하는 프로세서를 포함할 수 있다.
실시예에 따른 호스트 및 클라이언트와 통신하는 네트워크 커넥터는 TCP(Transmission Control Protocol) 연결 종료에 관련된 정보를 포함하는 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 호스트 인터페이스부 및 상기 TCP 연결 종료 패킷을 상기 클라이언트로 전송하고, 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하며, 상기 클라이언트의 수신 확인 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하여 상기 TCP 연결의 종료를 상기 클라이언트에 통지하도록 제어하는 프로세서를 포함할 수 있다.
본 발명에서는 TCP 애플리케이션들이 TCP 연결 생성 및 종료를 처리하는 과정에서 발생하는 비싼 TCP 연산 비용으로 인해 발생하는 연결 처리 성능 한계 문제를 해결할 수 있게 된다.
또한, 본 발명에서는 TCP 연결의 생성과 종료 과정을 네트워크 커넥터(200)에서 처리하는 디자인을 제안하여 많은 수의 연결들의 동시 처리 시 TCP 서버 성능을 크게 개선할 수 있게 된다. 그리고, 이를 이용하여 특히 짧은 TCP 연결 생성 및 종료와 같은 반복적인 연산들로 인해 CPU 자원들이 낭비되고 TCP 서버의 성능이 저하되는 문제를 해결할 수 있다.
도 1은 실시예에 따라 TCP 연결 생성 및 종료를 수행하기 위한 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법을 설명하기 위해 참조되는 시스템도
도 2는 실시예에 따른 TCP 연결 생성 기능의 네트워크 커넥터로의 오프로딩과 관련된 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법을 기술하기 위해 참조되는 순서도
도 3은 실시예에 따른 TCP 연결 종료 기능의 네트워크 커넥터로의 오프로딩과 관련된 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법을 기술하기 위해 참조되는 순서도
도 4는 실시예에 따른 TCP 연결 종료 기능과 관련된 시간 필드들을 관리하는 타이머 구조체를 설명하기 위해 참조되는 도면
도 5는 종래 기술에 따른 호스트에서의 TCP 연결 생성 및 종료의 경우 성능 한계를 설명하기 위해 참조되는 도면
도 6 및 도 7은 도 5의 종래 기술과 비교하여 본 발명의 실시예에 따른 네트워크 커넥터로의 TCP 연결 생성 및 종료 기능을 이양한 경우의 성능 향상을 설명하기 위해 참조되는 그래프
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
도 1은 실시예에 따라 TCP 연결 생성 및 종료를 수행하기 위한 네트워크 커넥터(200)의 호스트(300) 및 클라이언트(100)와의 통신 방법을 설명하기 위해 참조되는 시스템도이다.
네트워크 커넥터(200)는 호스트(300) 및 클라이언트(100) 사이에서의 데이터 송수신을 중개한다.
네트워크 커넥터(200)는 TCP 연결 생성 및 TCP 연결 종료 기능을 수행할 수 있으며, 포트부(210), 프로세서(220), 호스트 인터페이스부(230) 및 메모리부(240)를 포함할 수 있다.
포트부(210)는 클라이언트(100)를 포함한 외부 디바이스와 네트워크 커넥터(200) 사이의 데이터 송수신을 중개한다.
포트부(210)는 네트워크 케이블을 통해 외부 네트워크와 연결 가능하며, 유/무선 통신을 수행할 수 있다.
프로세서(220)는 네트워크 커넥터(200)의 각 구성요소들 사이에서의 데이터 처리를 전반적으로 제어할 수 있다.
프로세서(220)는 네트워크 커넥터(200)의 클라이언트(100) 및/또는 호스트(300)와의 데이터 송수신과 관련된 패킷들을 생성, 전송, 수신할 수 있다.
프로세서(220)는 호스트 인터페이스부(230)로부터 TCP 연결 종료 패킷을 전송받아 처리할 수 있다.
프로세서(220)는 포트부(210)로부터 TCP 연결 요청 패킷을 전송받아 처리할 수 있다.
프로세서(220)는 포트부(210) 및/또는 호스트 인터페이스부(230)와의 데이터 송수신, 데이터 처리 등에 대한 정보를 메모리부(240)로 저장할 수 있고, 메모리부(240)에 기 저장된 정보를 독출할 수도 있다.
호스트 인터페이스부(230)는 호스트(300)와의 통신을 위한 인터페이스로 PCI(peripheral component interconnect)등을 포함하여 유/무선 통신을 수행할 수 있다.
메모리부(240)는 프로세서(220)의 데이터 처리 결과를 저장할 수 있다.
메모리부(240)는 포트부(210)를 통해 프로세서(220)에 도착한 패킷 정보들을 저장하거나, 패킷 처리 및/또는 TCP 연산 처리 과정에서 필요한 메타데이터들을 저장할 수 있으며, SRAM 및/또는 DRAM을 포함할 수 있다.
본 발명에서 네트워크 커넥터(200)는 네트워크 어댑터 또는 네트워크 인터페이스 카드일 수 있다. 특히, 물리적인 네트워크 인터페이스 카드에 소프트웨어 어플리케이션이 결합된 프로그래머블 네트워크 어댑터(스마트 네트워크 카드, smart NIC)일 수 있다.
또한, 도 1에서는 호스트(300)와 네트워크 커넥터(200)가 별개의 구성요소인 것으로 도시하였으나, 이는 일 예이며, 다른 실시예에 따라 네트워크 커넥터(200)가 호스트(300)에 포함될 수 있다. 즉, 호스트(300)는 네트워크 커넥터(200)를 포함하는 PC 등의 서버일 수 있다.
도 2는 실시예에 따른 TCP 연결 생성 기능의 네트워크 커넥터로의 오프로딩과 관련된 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법을 기술하기 위해 참조되는 순서도이다.
도 2에 도시한 바와 같이, 호스트(300)의 애플리케이션이 TCP TCP(Transmission Control Protocol)/IP(Internet Protocol) 를 통해 특정 주소 및/또는 포트로 도착하는 연결을 처리하고자 할 때 (e.g., listen() 함수 호출), 호스트(300)는 TCP(Transmission Control Protocol) 연결 생성에 관련된 정보를 네트워크 커넥터(200)에 전송할 수 있다. TCP(Transmission Control Protocol, 이하 TCP로 약칭한다) 연결 생성에 관련된 정보는 해당 IP 주소, TCP 포트 정보, 및 기타 연결 생성에 필요한 부가 정보 등을 포함할 수 있다. 참고로, 기타 연결 생성에 필요한 부가 정보는 TCP 연결을 생성할 때 클라이언트(100)와 호스트(300) 사이에서 서로 교환이 필요한 TCP 옵션들을 포함하며 호스트(300) 및/또는 애플리케이션의 설정 옵션에 따라 달라질 수 있다. 대표적인 예로 TCP 최대 세그먼트 크기 (Maximum Segment Size, MSS), 수신 윈도우 scaling factor, selective ACK 사용 여부 등을 포함할 수 있다.
네트워크 커넥터(200)의 호스트 인터페이스부(230)는 TCP 연결 생성에 관련된 정보를 호스트(300)로부터 수신할 수 있다.
프로세서(220)는 호스트 인터페이스부(230)로부터 수신한 TCP 연결 생성에 관련된 정보를 메모리부(240)에 저장할 수 있다(S210).
포트부(210)는 클라이언트(100)로부터 TCP 연결 요청 패킷을 수신할 수 있다(S220).
프로세서(220)는 메모리부(240)에 기 저장된 TCP 연결 생성에 관련된 정보를 참조하여 상기 클라이언트(100)의 TCP 연결 요청 패킷(예>SYN 패킷)에 대한 상기 네트워크 커넥터(200)의 수신 확인 패킷(SYN-ACK 패킷, SYN 쿠키)을 생성할 수 있다(S230). 구체적으로, 프로세서(220)는 새로운 TCP 연결 요청 패킷이 도착할 때마다 메모리부(240)에 기 저장된 IP 주소 및/또는 TCP 포트 정보와 TCP 연결 요청 패킷의 헤더 필드의 정보를 비교하여 서로 일치하는 경우에 수신 확인 패킷을 생성할 수 있다. 그리고, 프로세서(220)는 네트워크 커넥터(200)의 수신 확인 패킷을 포트부(210)를 통해 클라이언트(100)로 전송할 수 있다(S240). 실시예에 따라 프로세서(220)는 네트워크 커넥터(200)의 수신 확인 패킷을 클라이언트(100)로 전송한 이후에 해당 연결에 대한 어떠한 정보도 메모리부(240)에 저장하지 않을 수 있다.
만일, 메모리부(240)에 기 저장된 IP 주소 및/또는 TCP 포트 정보와 TCP 연결 요청 패킷의 헤더 필드의 정보가 서로 일치하지 않으면 네트워크 커넥터(200)는 TCP 연결 요청 패킷을 호스트로 전달하고, 호스트(300)에서 기존의 일반적인 방식으로 해당 TCP 연결 요청 패킷을 처리하여 호스트(300)와 클라이언트(100) 간에 새로운 연결을 생성할 수 있다.
클라이언트(100)는 네트워크 커넥터(200)의 수신 확인 패킷을 수신하여 해당 패킷에 대한 클라이언트(100)의 수신 확인 패킷(ACK)을 생성할 수 있다.
클라이언트(100)는 수신 확인 패킷(ACK)을 네트워크 커넥터(200)로 전송할 수 있다.
프로세서(220)는 포트부(210)를 통해 클라이언트(100)로부터 수신 확인 패킷(ACK)을 수신할 수 있다(S250).
프로세서(220)는 네트워크 커넥터의 수신 확인 패킷(SYN-ACK 패킷) 정보와 상기 클라이언트의 수신 확인 패킷(ACK) 정보를 참조하여 상기 TCP 연결의 생성을 상기 호스트에 통지하도록 제어할 수 있다(S260, S270).
즉, 상기 네트워크 커넥터의 수신 확인 패킷 정보는 순서 번호(Sequence Number)를 포함하고 상기 클라이언트의 수신 확인 패킷 정보는 응답 번호(Acknowledgement Number)를 포함하며, 상기 순서 번호(Sequence Number)와 상기 응답 번호(Acknowledgement Number)를 서로 비교하여 상기 TCP 연결의 생성을 상기 호스트에 통지할 수 있다. 구체적으로, 순서 번호(Sequence Number) + 1의 결과값과 응답 번호(Acknowledgement Number)이 동일한지 여부를 판단하여 S230단계에서 생성한 SYN 쿠키의 유효함을 검증할 수 있다(S260).
참고로, 순서 번호(Sequence Number)는 TCP 헤더에 정의된 필더의 하나로, 송신자(예, 네트워크 커넥터)가 지정하는 순서번호이다. 순서 번호(Sequence Number)는 세그먼트 전송 과정에서 전송되는 바이트 수를 기준으로 증가할 수 있고, 1씩 증가할 수 있다.
또한, 네트워크 커넥터의 수신 확인 패킷(SYN-ACK 패킷)에 포함된 순서 번호(Sequence Number)는 총 32-bit으로 다음과 같은 방식으로 생성될 수 있다.
1) 최상위 24-bit: 해당 TCP 연결의 양쪽 호스트의 IP 주소, 포트 번호, 그리고 연결 시간 동안 동일하게 유지되는 무작위로 생성된 상수 값을 모두 포함해 해시 함수를 적용한 값
2) 중간 3-bit: TCP 연결의 최대 세그먼트 사이즈 (MSS) 값을 대표하는 값
3) 최하위 5-bit: 시간에 따라 변하는 무작위 상수 값
응답 번호(Acknowledgement Number)는 TCP 헤더에 정의된 필더의 하나로, 수신자(예, 클라이언트)가 정상적으로 수신한 바이트의 수를 응답하기 위해 사용된다.
만약 두 값이 일치하는 경우, 정상적인 TCP 연결 생성이 완료되어, 네트워크 커넥터(200)는 호스트 인터페이스부(230)를 통해 호스트(300)에 해당 연결이 생성되었음을 통지할 수 있다(S270). 그러나, 만약 두 값이 서로 다른 경우, 비정상적인 연결이므로 반대편 TCP 호스트에게 RST 패킷 (연결 초기화 패킷) 을 전송할 수 있다.
S270 단계에서 호스트(300)에 해당 연결이 생성되었음을 통지하는 방식은 실시예에 따라 고정된 송수신 호스트 구분 없이 양방향으로 동시에 정보 프레임과 응답 프레임을 교차하여 전송하는 피기 배킹(Piggybacking) 프로토콜 방식을 이용하여 수행될 수 있다. 이로서, 정보 프레임을 전송하면서 응답 기능까지 함께 수행할 수 있게 되어 응답 프레임의 전송 횟수를 줄이게 되므로 전송 효율을 높일 수 있게 된다.
도 3은 실시예에 따른 TCP 연결 종료 기능의 네트워크 커넥터로의 오프로딩과 관련된 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법을 기술하기 위해 참조되는 순서도이다.
도 3에 도시한 바와 같이, 호스트(300)는 TCP 연결을 종료하고자 하는 경우, TCP 연결 종료에 관련된 정보를 포함하는 TCP 연결 종료 패킷(예>FIN 패킷)을 생성하여 네트워크 커넥터(200)로 전송할 수 있다.
실시예에 따라, TCP 연결 종료 과정의 네트워크 커넥터(200)로의 오프로딩 여부는 호스트(300)에 의해 판단될 수 있다. 예를 들어, 애플리케이션이 TCP 연결 종료 전에 모든 전송 데이터가 클라이언트(100) 쪽에 전달되는 것을 확인할 때까지 기다리고자 하는 경우, TCP 연결 종료 과정을 네트워크 커넥터(200)에서 처리하는 것이 불가능 하므로, 이러한 경우 호스트(300)은 TCP 연결 종료 과정을 네트워크 커넥터(200)로 이양하지 않을 수 있다. 또는, 네트워크 커넥터(200)의 메모리부(240) 내에 저장된 연결 정보의 총 크기를 미리 체크하여, 만약 해당 하드웨어의 최대 메모리 크기를 초과할 경우 호스트(300)는 TCP 연결 종료 과정을 네트워크 커넥터(200)로 이양하지 않고 자체적으로 처리할 수 있다.
네트워크 커넥터(200)는 호스트 인터페이스부(230)를 통해 호스트(300)로부터 TCP 연결 종료에 관련된 정보를 포함하는 TCP 연결 종료 패킷을 수신할 수 있다. 그리고, 메모리부(240)에 TCP 연결 종료에 관련된 정보를 저장할 수 있다(S310). 실시예에 따라 TCP 연결 종료 패킷(예>FIN 패킷)의 헤더에 포함되는 연결 정보는 IP주소, TCP 연결 상태, 순서 번호(Sequence Number), 응답 번호(Acknowledgement Number), 재전송 시간 초과(Retransmission Timeout, RTO) 등을 포함할 수 있다.
참고로, 순서 번호(Sequence Number)는 송신자(예, 호스트)가 지정하는 순서번호로 세그먼트 전송 과정에서 전송되는 바이트 수를 기준으로 1씩 증가할 수 있다. 응답 번호(Acknowledgement Number)는 수신자(예, 네트워크 커넥터)가 정상적으로 수신한 바이트의 수를 응답하기 위해 사용될 수 있다. 재전송 시간 초과(Retransmission Timeout, RTO)는 데이터를 재전송할 수 있는 시간의 한계값으로 정의될 수 있다.
네트워크 커넥터(200)는 TCP 연결 종료 패킷(FIN 패킷)을 호스트(300)로부터 수신 시, 상기 클라이언트(100)로 전송되지 않은 데이터(A) 및 상기 클라이언트(100)로부터 수신이 확인되지 않은 데이터(B) 중 적어도 하나가 존재하는 지 여부에 따라 해당 데이터((A)및/또는(B))가 포함된 상기 TCP 연결 종료 패킷(FIN 패킷)을 상기 호스트(300)로부터 수신할 수 있다.
구체적으로, 상기 (A)(B) 중 적어도 하나의 잔여 데이터가 존재하는 경우, 호스트(300)는 해당 데이터를 TCP 연결 종료 패킷(FIN 패킷)에 포함시켜 전송할 수 있다. 반면, 상기 (A)(B) 중 적어도 하나의 잔여 데이터가 존재하지 않는 경우, 호스트(300)는 해당 데이터가 없는 상태의 TCP 연결 종료 패킷(FIN 패킷)을 네트워크 커넥터(200)로 전송할 수 있다.
또 한편, 호스트(300)가 해당 잔여 데이터((A)및/또는(B))를 TCP 연결 종료 패킷(FIN 패킷)에 포함시켜 전송할 때, 상기 호스트(300)에서 상기 해당 잔여 데이터의 송신을 제어하기 위한 혼잡 제어 윈도우(congestion control window) 및 TCP 세그먼트의 최대 바이트 수인 최대 세그먼트 크기(Maximum Segment Size) 중 적어도 하나와 상기 해당 잔여 데이터의 크기를 비교하여 상기 비교 결과에 따라 상기 TCP 연결 종료 패킷의 상기 네트워크 커넥터(200)로의 전송을 상이하게 수행할 수 있다.
구체적으로, 1) 해당 잔여 데이터가 최대 세그먼트 크기(Maximum Segment Size) 의 크기보다 작은 경우, 호스트(300)는 해당 잔여 데이터를 TCP 연결 종료 패킷(FIN 패킷)에 포함시켜 네트워크 커넥터(200)로 전송할 수 있다. 네트워크 커넥터(200)는 IP 주소, TCP 포트, TCP 연결 상태, 순서 번호(sequence number), 응답 번호(acknowledgement number)를 빠른 접근 속도를 가지는 SRAM(메모리부의 일부분)에 저장하고, 해당 잔여 데이터를 포함하는 FIN 패킷의 경우 DRAM(메모리부의 다른 부분)에 저장할 수 있다. 반면, 2) 해당 잔여 데이터가 최대 세그먼트 크기(Maximum Segment Size)의 크기 이상이고 혼잡 제어 윈도우(congestion control window)의 크기보다 작은 경우, TCP 연결 종료 패킷(FIN 패킷)에 대한 TCP segmentation(데이터를 TCP 최대 세그먼트 크기(Maximum Segment Size) 이하의 작은 패킷들로 분할)을 수행하여, 네트워크 커넥터(200)는 IP 주소, TCP 포트, TCP 연결 상태, 순서 번호(sequence number), 응답 번호(acknowledgement number)를 빠른 접근 속도를 가지는 SRAM(메모리부의 일부분)에 저장하고, TCP segmentation 수행 결과 분할된 잔여 데이터를 포함하는 FIN 패킷의 경우 DRAM(메모리부의 다른 부분)에 저장할 수 있다.
또 한편, 3) 해당 잔여 데이터가 혼잡 제어 윈도우(congestion control window)의 크기 이상인 경우, TCP 연결 종료 기능을 네트워크 커넥터(200)로 오프로딩하지 않고 호스트(300)에서 처리하는 원 방식으로 회귀할 수 있다.
네트워크 커넥터(200)의 프로세서(220)는 TCP 연결 종료 패킷을 포트부(210)를 통해 상기 클라이언트(100)로 전송할 수 있다(S320). 만일, 재전송 시간 초과(Retransmission Timeout, RTO)까지 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트(100)의 수신 확인이 이루어지지 않은 경우 해당 TCP 연결 종료 패킷를 계속 재전송할 수 있다.
클라이언트(100)의 수신 확인이 이루어진 경우, 프로세서(220)는 TCP 연결 종료 패킷(FIN패킷)에 대한 클라이언트의 수신 확인 패킷(FIN-ACK패킷)을 클라이언트(100)로부터 수신할 수 있다(S330).
프로세서(220)는 클라이언트(100)의 수신 확인 패킷(FIN-ACK패킷)에 대한 네트워크 커넥터(200)의 수신 확인 패킷(ACK패킷)을 생성하여, 해당 수신 확인 패킷(ACK패킷)을 클라이언트(100)로 전송할 수 있다.(S340, S350)
클라이언트(100)로 ACK 패킷을 전송하여 TCP 연결의 종료를 통지하고 소정의 대기 시간(TIME_WAIT)이 경과하면, 프로세서(220)는 네트워크 커넥터(200)에 미리 저장된 TCP 연결 생성에 관련된 정보(도 2의 S210)를 삭제할 수 있다.(S360)
실시예에 따라 상기 재전송 시간 초과(Retransmission Timeout, RTO) 및 상기 소정의 대기 시간(TIME_WAIT) 중 적어도 하나는 상기 네트워크 커넥터에 저장된 모든 TCP 연결 정보를 포함하는 비트맵들이 순차적으로 스캔되도록 구현된 타이머 구조체를 기초로 판단될 수 있다.
구체적으로, 재전송 시간 초과(Retransmission Timeout, RTO) 및 상기 소정의 대기 시간(TIME_WAIT) 중 적어도 하나를 체크하기 위하여 네트워크 커넥터(200)는 다음과 같은 효율적인 타이머 메커니즘을 동작시킬 수 있다.
대부분의 매니 코어 (수십 ~ 수백 개 단위의 패킷 처리 프로세서 코어를 가지는) 프로그래머블 네트워크 커넥터(200)들은 네트워크 포트에 도착한 패킷들을 빠른 속도로 처리하기 위해 어떤 TCP 연결인지 (즉, 어떤 source - destination IP 주소 및 포트를 가지는지) 상관 없이 패킷들을 처리하는 방식으로 동작한다. 이러한 구조에서 같은 TCP 연결에 속하는 패킷들이라도 서로 다른 패킷 처리 프로세서 코어에서 처리될 가능성이 존재하게 된다. 따라서 이와 같은 구조에서 각 TCP 연결의 타이머를 시작하거나 중단하는 연산을 처리하려면 패킷 처리 프로세서 코어들은 하나의 타이머 구조체를 공유하게 한다. 그러나 이러한 패킷 처리 프로세서 코어들은 동시에 동작하게 되므로 프로세서 코어 간 일관성을 맞추기 위해 필연적으로 해당 타이머 구조체에 대한 접근 권한을 강제해야 한다. 즉, 한번에 하나의 프로세서 코어만이 타이머 구조체를 업데이트 할 수 있도록 해야 한다. 하지만 위와 같은 방식의 구현은 프로그래머블 네트워크 커넥터(200)와 같이 많은 수의 코어들이 존재하는 상황에서 매우 비효율적으로 동작하게 된다.
따라서 본 발명의 실시예에 따르면, 이러한 문제를 해결하고자 TCP 연결 종료 과정의 특성을 고려해 다음처럼 타이머 구조체를 효율적으로 동작시킬 수 있다.
프로세서(220)는 우선 현재 네트워크 커넥터(200)에서 보유한 TCP 연결
정보를 모두 포함할 수 있는 크기의 비트맵들이 순차적으로 스캔되도록 타이머 구조체를 구현할 수 있다. 도 4에 도시한 바와 같이, 타이머 구조체는 n개의 타이머 비트맵들을 포함할 수 있고, 각 타이머 비트맵은 각각의 구분되는 재전송 시간 초과(Retransmission Timeout, RTO)을 보유할 수 있다. 각 비트맵은 일정 시간 (예> 0.2ms) 단위로 스캔이 이루어지게 된다. 즉, 각 비트맵 사이의 시간 간격은 0.2ms일 수 있다. TCP 연결이 종료되는 과정에서 네트워크 커넥터(200)에 TCP 연결의 종료가 이양되는 경우, 앞서 말한 비트맵 중 남은 타임아웃 시간(예>0.1ms)에 따라 TCP 연결의 종료 정보를 포함하는 비트맵(B1)에 대해서 해당 비트를 1로 세팅할 수 있다. 그리고, 해당 타임아웃 시간이 지나면(0.1ms가 경과) 비트맵 회전은 시계 방향으로 수행되어 앞서 말한 비트맵(B1)이 스캔 되며, 해당 비트맵(B1)에 저장된 정보인 TCP 연결에 대해서 필요한 타이머 이벤트(재전송 시간 초과(Retransmission Timeout, RTO), 상기 소정의 대기 시간(TIME_WAIT) 등)를 처리하게 되는 것이다. 그리고, B1의 RTO는 0ms에서 다시 리셋되어 2ms로 변경될 수 있다.
도 5는 종래 기술에 따른 호스트(300)에서의 TCP 연결 생성 및 종료의 경우 성능 한계를 설명하기 위해 참조되는 도면이다.
실제로 본 발명에 따르면, 현존하는 가장 높은 성능을 보여주는 TCP 스택 중 하나인 mTCP에서 다음과 같이 많은 수의 짧은 연결들을 동시에 처리하는 경우 TCP 연결 생성 및 종료로 인한 성능 한계를 보이고자 다음 조건에서 실험을 진행하였다.
- mTCP 기반의 서버가 16,000개의 동시 연결을 처리
- 각 연결은 64B 패킷을 주고 받는 transaction 연산을 수행
- 매 transaction 마다 TCP 연결 생성/종료를 수행하는 경우 (Non-persistent) 와 TCP 연결을 맺은 상태에서 계속 transaction 을 수행하는 경우 (persistent) 비교
이 때, 도 5a에서 보여지는 바와 같이, 각 transaction 마다 TCP 연결을 생성/종료 하는 경우와 TCP 연결을 맺은 상태에서 계속적으로 통신하는 경우를 비교했을 때 약 2.6배 에서 3.2배 가량의 성능 차이가 나타남을 확인하였다. 즉, 짧은 TCP 연결에서는 TCP 연결 생성/종료 과정에서 발생하는 컨트롤 패킷 처리와 기타 TCP 연산으로 인해 성능 상의 오버헤드가 발생함을 확인할 수 있었다.
이러한 문제를 정확하게 분석하고자 매 transaction 마다 TCP 연결 생성/종료를 수행하는 경우 (Non-persistent)에 대해서 해당 TCP 서버에서 CPU 자원을 어떤 연산에 소모하는지 확인하였다.
도 5b에서 보여지는 바와 같이 짧은 TCP 연결들을 처리하는 경우 데이터를 주고받기 위한 패킷 이외에도 연결 생성 과정과 종료 과정에서 발생하는 컨트롤 패킷 처리와 TCP 연결 상태 업데이트 등의 연산에 대부분 (60% 이상) 의 CPU cycle을 소모하는 것을 확인할 수 있었다. 그리고 이로 인해 많은 수의 TCP 연결들이 동시에 생성되고 종료되는 경우 TCP 서버 애플리케이션 성능이 크게 저하되는 문제가 발생하는 것을 알 수 있었다.
도 6 및 도 7은 도 5의 종래 기술과 비교하여 본 발명의 실시예에 따른 네트워크 커넥터(200)로의 TCP 연결 생성 및 종료 기능을 이양한 경우의 성능 향상을 설명하기 위해 참조되는 그래프이다.
도 6에 도시한 바와 같이, 본 발명의 실시예(AccelTCP)에 따르면, 종래 기술(mTCP)에 비해 호스트(300)의 성능이 대략 2배에서 3.8배 가까운 성능이 향상된 것을 알 수 있다.
도 7에 도시한 바와 같이, 본 발명의 실시예(AccelTCP)에 따르면, 종래 기술(mTCP)에 비해 호스트(300)에서 TCP/IP의 연산에 사용하는 CPU 소모량을 약 1/5 수준으로 감축하였음을 알 수 있다.
이상에서 실시예들에 설명된 특징, 구조, 효과 등은 본 발명의 하나의 실시예에 포함되며, 반드시 하나의 실시예에만 한정되는 것은 아니다. 나아가, 각 실시예에서 예시된 특징, 구조, 효과 등은 실시예들이 속하는 분야의 통상의 지식을 가지는 자에 의해 다른 실시예들에 대해서도 조합 또는 변형되어 실시 가능하다. 따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
또한, 이상에서 실시예를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시예에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (22)

  1. 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법에 있어서,
    TCP(Transmission Control Protocol) 연결 생성에 관련된 정보를 상기 호스트로부터 수신하는 단계;
    상기 클라이언트로부터 TCP 연결 요청 패킷을 수신하는 단계;
    상기 TCP 연결 생성에 관련된 정보를 참조하여 상기 TCP 연결 요청 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 생성하는 단계;
    상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하는 단계;
    상기 네트워크 커넥터의 수신 확인 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하는 단계; 및
    상기 네트워크 커넥터의 수신 확인 패킷 정보와 상기 클라이언트의 수신 확인 패킷 정보를 참조하여 상기 네트워크 커넥터가 상기 TCP 연결의 생성을 상기 호스트에 통지하는 단계;를 포함하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  2. 제 1항에 있어서,
    상기 TCP(Transmission Control Protocol) 연결 생성에 관련된 정보는 IP(Internet Protocol) 주소 정보 및 TCP 포트 정보를 포함하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  3. 제 1항에 있어서,
    상기 네트워크 커넥터의 수신 확인 패킷 정보는 순서 번호(Sequence Number)를 포함하고 상기 클라이언트의 수신 확인 패킷 정보는 응답 번호(Acknowledgement Number)를 포함하며,
    상기 순서 번호(Sequence Number)와 상기 응답 번호(Acknowledgement Number)를 서로 비교하여 상기 TCP 연결의 생성을 상기 호스트에 통지하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  4. 제 1항에 있어서,
    상기 TCP 연결의 생성을 상기 호스트에 통지하는 단계는 피기 배킹(Piggybacking) 프로토콜 방식을 이용하여 수행되는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  5. 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법에 있어서,
    TCP(Transmission Control Protocol) 연결 종료에 관련된 정보를 포함하는 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 단계;
    상기 TCP 연결 종료 패킷을 상기 클라이언트로 전송하는 단계;
    상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하는 단계; 및
    상기 클라이언트의 수신 확인 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하여 상기 TCP 연결의 종료를 상기 클라이언트에 통지하는 단계;를 포함하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  6. 제 5항에 있어서,
    상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 단계는,
    상기 클라이언트로 전송되지 않은 데이터 및 상기 클라이언트로부터 수신이 확인되지 않은 데이터 중 적어도 하나가 존재하는 지 여부에 따라 해당 데이터가 포함된 상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  7. 제 6항에 있어서,
    상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 단계는,
    상기 호스트에서 상기 해당 데이터의 송신을 제어하기 위한 혼잡 제어 윈도우(congestion control window) 및 TCP 세그먼트의 최대 바이트 수인 최대 세그먼트 크기(Maximum Segment Size) 중 적어도 하나와 상기 해당 데이터의 크기가 비교되어 상기 비교 결과에 따라 상기 TCP 연결 종료 패킷의 상기 호스트로부터의 수신이 상이하게 수행되는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  8. 제 5항에 있어서,
    상기 TCP 연결 종료에 관련된 정보는 IP주소, TCP 연결 상태, 순서 번호(Sequence Number), 응답 번호(Acknowledgement Number), 재전송 시간 초과(Retransmission Timeout, RTO) 등을 포함하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  9. 제 8항에 있어서,
    상기 재전송 시간 초과(Retransmission Timeout, RTO)까지 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인이 이루어지지 않은 경우 해당 TCP 연결 종료 패킷를 재전송하는 단계;를 더 포함하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  10. 제 5항에 있어서,
    상기 TCP 연결의 종료를 상기 클라이언트에 통지하고 소정의 대기 시간이 경과하면 상기 네트워크 커넥터에 미리 저장된 TCP 연결 생성에 관련된 정보를 삭제하는 단계;를 더 포함하는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  11. 제 9항에 있어서,
    상기 재전송 시간 초과(Retransmission Timeout, RTO)는 상기 네트워크 커넥터에 저장된 모든 TCP 연결 정보를 포함하는 비트맵들이 순차적으로 스캔되도록 구현된 타이머 구조체를 기초로 판단되는,
    네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법.
  12. 호스트 및 클라이언트와 통신하는 네트워크 커넥터에 있어서,
    TCP(Transmission Control Protocol) 연결 생성에 관련된 정보를 상기 호스트로부터 수신하는 호스트 인터페이스부;
    상기 클라이언트로부터 TCP 연결 요청 패킷을 수신하는 포트부; 및
    상기 TCP 연결 생성에 관련된 정보를 참조하여 상기 TCP 연결 요청 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 생성하고, 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하며, 상기 네트워크 커넥터의 수신 확인 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하고, 상기 네트워크 커넥터의 수신 확인 패킷 정보와 상기 클라이언트의 수신 확인 패킷 정보를 참조하여 상기 네트워크 커넥터가 상기 TCP 연결의 생성을 상기 호스트에 통지하도록 제어하는 프로세서;를 포함하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  13. 제 12항에 있어서,
    상기 TCP(Transmission Control Protocol) 연결 생성에 관련된 정보는 IP(Internet Protocol) 주소 정보 및 TCP 포트 정보를 포함하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  14. 제 12항에 있어서,
    상기 네트워크 커넥터의 수신 확인 패킷 정보는 순서 번호(Sequence Number)를 포함하고 상기 클라이언트의 수신 확인 패킷 정보는 응답 번호(Acknowledgement Number)를 포함하며,
    상기 프로세서는 상기 순서 번호(Sequence Number)와 상기 응답 번호(Acknowledgement Number)를 서로 비교하여 상기 TCP 연결의 생성을 상기 호스트에 통지하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  15. 제 12항에 있어서,
    상기 프로세서는 상기 TCP 연결의 생성을 피기 배킹(Piggybacking) 프로토콜 방식을 이용하여 상기 호스트에 통지하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  16. 호스트 및 클라이언트와 통신하는 네트워크 커넥터에 있어서,
    TCP(Transmission Control Protocol) 연결 종료에 관련된 정보를 포함하는 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는 호스트 인터페이스부; 및
    상기 TCP 연결 종료 패킷을 상기 클라이언트로 전송하고, 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인 패킷을 상기 클라이언트로부터 수신하며, 상기 클라이언트의 수신 확인 패킷에 대한 상기 네트워크 커넥터의 수신 확인 패킷을 상기 클라이언트로 전송하여 상기 TCP 연결의 종료를 상기 클라이언트에 통지하도록 제어하는 프로세서;를 포함하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  17. 제 16항에 있어서,
    상기 프로세서는 상기 클라이언트로 전송되지 않은 데이터 및 상기 클라이언트로부터 수신이 확인되지 않은 데이터 중 적어도 하나가 존재하는 지 여부에 따라 해당 데이터가 포함된 상기 TCP 연결 종료 패킷을 상기 호스트로부터 수신하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  18. 제 17항에 있어서,
    상기 프로세서는 상기 호스트에서 상기 해당 데이터의 송신을 제어하기 위한 혼잡 제어 윈도우(congestion control window) 및 TCP 세그먼트의 최대 바이트 수인 최대 세그먼트 크기(Maximum Segment Size) 중 적어도 하나와 상기 해당 데이터의 크기가 비교되어 상기 비교 결과에 따라 상기 TCP 연결 종료 패킷의 상기 호스트로부터의 수신을 상이하게 수행하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  19. 제 16항에 있어서,
    상기 TCP 연결 종료에 관련된 정보는 IP주소, TCP 연결 상태, 순서 번호(Sequence Number), 응답 번호(Acknowledgement Number), 재전송 시간 초과(Retransmission Timeout, RTO) 등을 포함하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  20. 제 19항에 있어서,
    상기 프로세서는 상기 재전송 시간 초과(Retransmission Timeout, RTO)까지 상기 TCP 연결 종료 패킷에 대한 상기 클라이언트의 수신 확인이 이루어지지 않은 경우 해당 TCP 연결 종료 패킷을 재전송하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  21. 제 16항에 있어서,
    상기 프로세서는 상기 TCP 연결의 종료를 상기 클라이언트에 통지하고 소정의 대기 시간이 경과하면 상기 네트워크 커넥터에 미리 저장된 TCP 연결 생성에 관련된 정보를 삭제하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
  22. 제 20항에 있어서,
    상기 프로세서는 상기 재전송 시간 초과(Retransmission Timeout, RTO)를 상기 네트워크 커넥터에 저장된 모든 TCP 연결 정보를 포함하는 비트맵들이 순차적으로 스캔되도록 구현된 타이머 구조체를 기초로 판단하는,
    호스트 및 클라이언트와 통신하는 네트워크 커넥터.
KR1020190088762A 2019-07-23 2019-07-23 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터 KR102184363B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190088762A KR102184363B1 (ko) 2019-07-23 2019-07-23 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190088762A KR102184363B1 (ko) 2019-07-23 2019-07-23 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터

Publications (1)

Publication Number Publication Date
KR102184363B1 true KR102184363B1 (ko) 2020-11-30

Family

ID=73642027

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190088762A KR102184363B1 (ko) 2019-07-23 2019-07-23 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터

Country Status (1)

Country Link
KR (1) KR102184363B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010025830A (ko) * 1999-09-01 2001-04-06 김한규 삼자간 비대칭 TCP(Asymmetric 3 way TCP:ATCP) 기반의 서버 시스템의 통신 방법 및 후위 서버 장치
JP2002312261A (ja) * 2001-04-09 2002-10-25 Nippon Telegr & Teleph Corp <Ntt> ネットワークサービス中継方法及び中継装置
JP2007267137A (ja) * 2006-03-29 2007-10-11 Murata Mach Ltd 中継装置および通信システム
KR20130038656A (ko) * 2011-10-10 2013-04-18 고려대학교 산학협력단 Tcp통신을 이용한 정보 저장방법 및 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010025830A (ko) * 1999-09-01 2001-04-06 김한규 삼자간 비대칭 TCP(Asymmetric 3 way TCP:ATCP) 기반의 서버 시스템의 통신 방법 및 후위 서버 장치
JP2002312261A (ja) * 2001-04-09 2002-10-25 Nippon Telegr & Teleph Corp <Ntt> ネットワークサービス中継方法及び中継装置
JP2007267137A (ja) * 2006-03-29 2007-10-11 Murata Mach Ltd 中継装置および通信システム
KR20130038656A (ko) * 2011-10-10 2013-04-18 고려대학교 산학협력단 Tcp통신을 이용한 정보 저장방법 및 시스템

Similar Documents

Publication Publication Date Title
US11934340B2 (en) Multi-path RDMA transmission
US10237153B2 (en) Packet retransmission method and apparatus
US8553572B2 (en) Internet protocol optimizer
US10430374B2 (en) Selective acknowledgement of RDMA packets
US7471681B2 (en) Determining network path transmission unit
WO2017050216A1 (zh) 一种报文传输方法及用户设备
US20060031518A1 (en) Method and apparatus for transparent negotiations
US9577791B2 (en) Notification by network element of packet drops
US10530644B2 (en) Techniques for establishing a communication connection between two network entities via different network flows
US10020918B2 (en) Fast coupled retransmission for multipath communications
JP5185955B2 (ja) 物理伝送媒体が中断した場合のtcpデータ伝送プロセスを改善する方法
EP2741463A1 (en) Data packet transmission method
EP3525421B1 (en) Data transmission method and apparatus
US20230246973A1 (en) System and method for reducing bandwidth usage of a network
US20240187482A1 (en) Device and method for remote direct memory access
JP2018196053A (ja) 通信装置、通信方法、およびプログラム
EP3319297A1 (en) Network interface device and host processing device
US10461892B2 (en) Low latency communications
KR102184363B1 (ko) 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터
JP4506430B2 (ja) アプリケーションモニタ装置
CN111274195B (zh) Rdma网络流控方法、装置及计算机可读存储介质
JPWO2018142866A1 (ja) 転送装置、転送方法及びプログラム
CN111314447B (zh) 代理服务器及其处理访问请求的方法
US8676993B1 (en) Bundled transmission control protocol connections
WO2024060915A1 (zh) 核心网数据传输方法、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
GRNT Written decision to grant