| 번호 | 청구항 |
|---|---|
| 5 | 제1항에 있어서,상기 데이터 플레인 연산은 콘텐츠 가져오기, 데이터 버퍼 관리, 데이터 패킷 분할, 데이터 패킷 생성 및 전송 중 적어도 하나의 연산을 포함하고, 상기 컨트롤 플레인 연산은 QUIC 프로토콜의 연결 관리, 데이터 전송의 안정성 관리, 데이터 전송의 혼잡 관리, 흐름 제어 및 에러 제어 중 적어도 하나의 연산을 포함하는, I/O 연산 오프로딩 방법. |
| 6 | 삭제 |
| 7 | 제1항에 있어서,상기 SEND 명령은 오프셋(offset)과 길이(length)에 의해 특정되는 데이터의 일부를 QUIC 패킷으로 전송하도록 하는 명령을 포함하는, I/O 연산 오프로딩 방법. |
| 8 | 삭제 |
| 9 | 삭제 |
| 1 | QUIC (Quick UDP Internet Connection) 프로토콜 기반의 콘텐트 전송 서버의 CPU (Central Processing Unit) 및 연산 기능을 갖는 NIC (Network Interface Card)에서의 클라이언트에 대한 데이터 전송과 연관된 네트워크 및 데이터 입출력(I/O) 연산 오프로딩 방법에 있어서, 클라이언트에 대한 데이터 전송과 연관된 연산들 중 상기 네트워크 및 데이터 입출력 연산을 포함하는 데이터 플레인(data plane) 연산을 상기 NIC에 오프로드(offload)하는 단계; 및상기 NIC에서 상기 데이터 플레인 연산을 수행하고, 상기 CPU에서 상기 연산들 중 상기 데이터 플레인 연산을 제외한 연산들을 포함하는 컨트롤 플레인(control plane) 연산을 수행하는 단계를 포함하고,상기 오프로드하는 단계는,상기 CPU가 상기 콘텐트 전송 서버의 응용 프로그램으로부터 호출된 offload_open() 명령에 대응하는 명령을 상기 NIC에 전달하는 단계;상기 NIC가 NIC 스택에서 데이터를 열고 결과를 상기 CPU에 회신하는 단계; 및상기 CPU가 상기 응용 프로그램으로부터 호출된 offload_write() 명령에 대응하는 명령으로서 SEND 명령을 포함하는 명령 패킷을, 상기 CPU의 호스트 스택으로부터 상기 NIC의 NIC 스택으로, 전달하는 단계를 포함하고,상기 수행하는 단계는, 상기 CPU로부터의 명령에 기반하여, 상기 NIC에서 상기 데이터 플레인 연산으로서 상기 클라이언트로 전송할 데이터를 복수의 QUIC 패킷들로 분할하는 패킷 분할을 수행하는 단계를 포함하고,상기 명령 패킷을 전달하는 단계는,상기 패킷 분할에 의해 생성될 상기 QUIC 패킷들의 각각의 헤더 정보를 생성하는 단계; 상기 QUIC 패킷들의 각각의 헤더 정보와 상기 SEND 명령을 포함하는 하나의 통합 패킷으로서 상기 명령 패킷을 생성하는 단계; 및상기 명령 패킷을 NIC에 전달하는 단계를 포함하는, I/O 연산 오프로딩 방법. |
| 2 | 제1항에 있어서,상기 클라이언트와 상기 콘텐트 전송 서버 간에 핸드셰이크를 수행하는 단계; 및상기 핸드셰이크 후, 상기 클라이언트로 전송되는 데이터를 암호화하기 위한 키 정보를 업데이트하는 단계를 더 포함하고,상기 키 정보는 상기 클라이언트와 상기 콘텐트 전송 서버 간의 연결이 갱신될 때마다 갱신되고,상기 키 정보는 상기 CPU의 호스트 스택으로부터 상기 NIC의 NIC 스택으로 전달되어, 상기 NIC가 상기 SEND 명령을 포함하는 상기 명령 패킷을 전달 받은 후, 상기 NIC에 의해 상기 NIC로부터 상기 클라이언트로 전송할 데이터를 암호화하기 위해 사용되는, I/O 연산 오프로딩 방법. |
| 3 | 제2항에 있어서,상기 핸드셰이크를 수행하는 단계는, i) 상기 클라이언트와 상기 콘텐트 전송 서버가 최초로 연결되거나, 상기 클라이언트와 상기 콘텐트 전송 서버 간의 이전 연결이 종료된 후 소정의 시간이 경과한 경우, 상기 클라이언트로부터 CHLO (Client hello) 패킷을 수신하는 단계;상기 클라이언트로 상기 콘텐트 전송 서버의 인증을 위한 데이터를 포함하는 REJ (Rejection) 패킷을 전송하는 단계; 상기 클라이언트로부터 상기 콘텐트 전송 서버의 인증을 위한 데이터에 기반한 완료 CHLO (Complete CHLO) 패킷을 수신하는 단계; 및상기 클라이언트로 SHLO (Server hello) 패킷을 전송하는 단계를 포함하고, ii) 상기 이전 연결이 종료된 후 소정의 시간이 경과되지 않은 경우, 상기 클라이언트로부터 상기 이전 연결에서의 상기 콘텐트 전송 서버의 인증을 위한 데이터에 기반한 완료 CHLO을 수신하는 단계; 및 상기 클라이언트로 SHLO 패킷을 전송하는 단계를 포함하는, I/O 연산 오프로딩 방법. |
| 4 | 제2항에 있어서,상기 클라이언트와 상기 콘텐트 전송 서버 간의 연결이 종료(teardown)되면, 상기 클라이언트와 상기 콘텐트 전송 서버 간의 연결에 관한 정보를 삭제하는 단계를 더 포함하고, 상기 삭제하는 단계는,상기 호스트 스택으로부터 상기 NIC 스택으로 상기 NIC 스택이 저장하고 있는 상기 연결에 관한 정보를 삭제하기 위한 명령을 전송하는 단계; 및상기 연결에 관한 정보를 삭제하기 위한 명령에 기반하여, 상기 NIC 스택에서 상기 연결에 관한 정보를 삭제하는 단계를 포함하는, I/O 연산 오프로딩 방법. |
| 10 | 제1항에 있어서,상기 패킷 분할을 수행하는 단계는, 상기 NIC가 상기 명령 패킷을 해석하여 상기 각각의 헤더 정보에 기반한 상기 QUIC 패킷들을 생성함으로써 상기 패킷 분할을 수행하는, I/O 연산 오프로딩 방법. |
| 11 | 제1항에 있어서,상기 NIC는 상기 CPU로부터 상기 명령 패킷을 수신한 후 상기 클라이언트로 전송할 데이터에 해당하는 패킷을 암호화하는 단계; 및상기 NIC는, 상기 패킷의 암호화 후 또는 상기 암호화된 패킷을 상기 클라이언트로 전송한 후 패킷 전송 시간을 갱신하는 에코 패킷을 상기 CPU로 전송하는 단계를 더 포함하는, I/O 연산 오프로딩 방법. |
| 12 | 제11항에 있어서,상기 CPU는 상기 에코 패킷을 수신할 때까지 재전송 타이머의 전송을 소정 시간동안 수행하지 않는, I/O 연산 오프로딩 방법. |
| 13 | 제12항에 있어서,상기 소정 시간은 상기 NIC에서의 패킷처리 지연시간과 상기 에코 패킷의 단방향 처리시간에 의해 결정되는, I/O 연산 오프로딩 방법. |
| 14 | 제1항에 있어서,상기 CPU는 상기 SEND 명령을 통해 상기 데이터 플레인 연산을 상기 NIC로 오프로드하고, 상기 클라이언트로부터 수신되는 패킷을 직접 처리하도록 구성되는, I/O 연산 오프로딩 방법. |
| 15 | 제1항에 있어서,상기 CPU가, 상기 NIC를 통해 전송된 데이터를 수신한 상기 클라이언트로부터 수신되는 ACK 패킷을 확인하면, 상기 NIC에 ACKD 명령을 전달하는 단계를 더 포함하는, I/O 연산 오프로딩 방법. |
| 16 | 클라이언트에 대한 데이터 전송과 연관된 네트워크 및 데이터 입출력(I/O) 연산을 오프로딩하는 QUIC (Quick UDP Internet Connection) 프로토콜 기반의 콘텐트 전송 서버에 있어서,CPU (Central Processing Unit) 및 연산 기능을 갖는 NIC (Network Interface Card)를 포함하고, 상기 CPU가 클라이언트에 대한 데이터 전송과 연관된 연산들 중 상기 네트워크 및 데이터 입출력 연산을 포함하는 데이터 플레인(data plane) 연산을 상기 NIC에 오프로드(offload)하고, 상기 NIC가 상기 데이터 플레인 연산을 수행하고, 상기 CPU가 상기 연산들 중 상기 데이터 플레인 연산을 제외한 연산들을 포함하는 컨트롤 플레인(control plane) 연산을 수행하고,상기 CPU가 상기 콘텐트 전송 서버의 응용 프로그램으로부터 호출된 offload_open() 명령에 대응하는 명령을 상기 NIC에 전달하고, 상기 NIC가 NIC 스택에서 데이터를 열고 결과를 상기 CPU에 회신하고, 상기 CPU가 상기 응용 프로그램으로부터 호출된 offload_write() 명령에 대응하는 명령으로서 SEND 명령을 포함하는 명령 패킷을, 상기 CPU의 호스트 스택으로부터 상기 NIC의 NIC 스택으로, 전달하고,상기 NIC는, 상기 CPU로부터의 명령에 기반하여, 상기 데이터 플레인 연산으로서 상기 클라이언트로 전송할 데이터를 복수의 QUIC 패킷들로 분할하는 패킷 분할을 수행하고, 상기 CPU는, 상기 명령 패킷을 상기 NIC의 NIC 스택으로 전달함에 있어서, 상기 패킷 분할에 의해 생성될 상기 QUIC 패킷들의 각각의 헤더 정보를 생성하고, 상기 QUIC 패킷들의 각각의 헤더 정보와 상기 SEND 명령을 포함하는 하나의 통합 패킷으로서 상기 명령 패킷을 생성하고, 상기 명령 패킷을 NIC에 전달하는, 콘텐트 전송 서버. |
| 17 | 제16항에 있어서,상기 클라이언트와 상기 콘텐트 전송 서버 간에 핸드셰이크를 수행하고, 상기 핸드셰이크 후, 상기 클라이언트로 전송되는 데이터를 암호화하기 위한 키 정보를 업데이트하고,상기 키 정보는 상기 클라이언트와 상기 콘텐트 전송 서버 간의 연결이 갱신될 때마다 갱신되고,상기 키 정보는 상기 CPU의 호스트 스택으로부터 상기 NIC의 NIC 스택으로 전달되어, 상기 NIC가 상기 SEND 명령을 포함하는 상기 명령 패킷을 전달 받은 후, 상기 NIC에 의해 상기 NIC로부터 상기 클라이언트로 전송할 데이터를 암호화하기 위해 사용되는, 콘텐트 전송 서버. |
| 18 | 삭제 |
| 19 | 제16항에 있어서,상기 SEND 명령은 오프셋(offset)과 길이(length)에 의해 특정되는 데이터의 일부를 QUIC 패킷으로 전송하도록 하는 명령을 포함하는, 콘텐트 전송 서버. |
| 20 | 클라이언트에 대한 데이터 전송과 연관된 네트워크 및 데이터 입출력(I/O) 연산을 오프로딩하는 QUIC (Quick UDP Internet Connection) 프로토콜 기반의 콘텐트 전송 서버를 포함하는 컴퓨터 시스템에 있어서,상기 콘텐트 전송 서버는,CPU (Central Processing Unit)를 포함하고, 상기 CPU가 클라이언트에 대한 데이터 전송과 연관된 연산들 중 상기 네트워크 및 데이터 입출력 연산을 포함하는 데이터 플레인(data plane) 연산을 연산 기능을 갖는 NIC (Network Interface Card)에 오프로드(offload)하고, 상기 데이터 플레인 연산은 상기 NIC에서 수행되고, 상기 CPU가 상기 연산들 중 상기 데이터 플레인 연산을 제외한 연산들을 포함하는 컨트롤 플레인(control plane) 연산을 수행하고,상기 CPU가 상기 콘텐트 전송 서버의 응용 프로그램으로부터 호출된 offload_open() 명령에 대응하는 명령을 상기 NIC에 전달하고, 상기 NIC가 NIC 스택에서 데이터를 열고 결과를 상기 CPU에 회신하고, 상기 CPU가 상기 응용 프로그램으로부터 호출된 offload_write() 명령에 대응하는 명령으로서 SEND 명령을 포함하는 명령 패킷을, 상기 CPU의 호스트 스택으로부터 상기 NIC의 NIC 스택으로, 전달하고,상기 NIC는, 상기 CPU로부터의 명령에 기반하여, 상기 데이터 플레인 연산으로서 상기 클라이언트로 전송할 데이터를 복수의 QUIC 패킷들로 분할하는 패킷 분할을 수행하고, 상기 CPU는, 상기 명령 패킷을 상기 NIC의 NIC 스택으로 전달함에 있어서, 상기 패킷 분할에 의해 생성될 상기 QUIC 패킷들의 각각의 헤더 정보를 생성하고, 상기 QUIC 패킷들의 각각의 헤더 정보와 상기 SEND 명령을 포함하는 하나의 통합 패킷으로서 상기 명령 패킷을 생성하고, 상기 명령 패킷을 NIC에 전달하는, 컴퓨터 시스템. |