프로그래머블 NIC를 활용한 HTTP/2 기반 L7 로드 밸런서의 리퀘스트 처리 이양방법 및 이를 이용한 L7 로드 밸런서
METHOD FOR OFFLOADING REQUEST PROCESS OF HTTP/2 BASED L7 LOAD BALANCER USING PROGRAMMABLE NETWORK INTERFACE CARD AND L7 LOAD BALANCER
특허 요약
본 발명에 따른 로드 밸런서의 리퀘스트 처리 이양방법은, 호스트 스택이 클라이언트 TCP 커넥션을 통해 유저 리퀘스트를 수신하는 단계, 상기 호스트 스택이 상기 유저 리퀘스트에 기초하여 백엔드 서버를 선택하는 단계, 상기 호스트 스택이 포워딩 룰(forwarding rule)을 NIC 스택으로 인스톨하고, 상기 유저 리퀘스트를 상기 백엔드 서버로 전달하는 단계, 상기 NIC 스택이 상기 백엔드 서버로부터의 응답을 수신하는 단계, 및 상기 NIC 스택이 상기 응답을 상기 클라이언트 TCP 커넥션으로 전달하고, 사용된 TCP 시퀀스 넘버의 매핑 정보를 상기 호스트 스택으로 전달하는 단계를 포함한다. 이에 의하면, 하나의 클라이언트 TCP 커넥션과 여러 백엔드 서버 TCP 커넥션 사이에서 여러 요청 및 응답들을 다중화할 수 있으며, 여러 백엔드 서버에서 도착한 응답들을 하나의 클라이언트로 다중화하는 과정에서 발생하는 오버헤드를 최소화하기 위해 HTTP/2 프로토콜의 특성을 활용해서 추가적으로 메모리 복사 오버헤드를 줄여 더욱 더 성능을 높일 수 있다는 기술적 효과를 갖는다.
청구항
번호청구항
1

컴퓨터에 의하여 수행되는 로드 밸런서의 리퀘스트 처리 이양방법에 있어서,호스트 스택이 클라이언트 TCP 커넥션을 통해 하나의 클라이언트로부터 복수의 유저 리퀘스트를 수신하는 단계;상기 호스트 스택이 상기 유저 리퀘스트에 기초하여 서로 상이한 복수의 백엔드 서버를 선택하는 단계;상기 호스트 스택이 포워딩 룰(forwarding rule)을 NIC 스택으로 인스톨하고, 상기 하나의 클라이언트로부터 수신된 상기 복수의 유저 리퀘스트를 서로 상이한 상기 복수의 백엔드 서버로 전달하는 단계;상기 NIC 스택이 상기 백엔드 서버로부터의 응답을 수신하는 단계; 및상기 NIC 스택이 상기 응답을 상기 클라이언트 TCP 커넥션으로 전달하고, 사용된 TCP 시퀀스 넘버의 매핑 정보를 상기 호스트 스택으로 전달하는 단계;를 포함하고,상기 포워딩 룰은 클라이언트/백엔드 서버의 4-튜플(tuple) 정보, TCP sequence/ack number 및 HTTP/2 스트림 식별자 매핑 정보를 포함하고,상기 NIC 스택은 서로 상이한 상기 복수의 백엔드 서버로부터 수신한 응답들을 HTTP/2 프레임 단위로 인터리빙(interleaving)하여 상기 하나의 클라이언트 TCP 커넥션으로 전달하는, 로드 밸런서의 리퀘스트 처리 이양방법.

2

제1항에 있어서,상기 NIC 스택은 HTTP/2 프레임 헤더에 있는 길이 필드의 정보에 기초하여 서로 상이한 복수의 백엔드 서버로부터 수신한 응답들을 상기 하나의 클라이언트 TCP 커넥션으로 전달하는, 로드 밸런서의 리퀘스트 처리 이양방법.

3

제2항에 있어서,상기 NIC 스택은 HTTP/2 프레임 헤더에 있는 길이 필드의 정보를 이용하여 다음 프레임이 사용할 TCP 시퀀스 넘버를 미리 예측하는, 로드 밸런서의 리퀘스트 처리 이양방법.

4

제1항에 있어서,상기 호스트 스택은 상기 클라이언트 TCP 커넥션을 통해 수신한 ACK 및 SACK 패킷을 번역하여 상기 백엔드 서버로 ACK를 전송하는, 로드 밸런서의 리퀘스트 처리 이양방법.

5

제4항에 있어서,상기 NIC 스택은 상기 백엔드 서버에서 수신한 HTTP/2 프레임을 전달할 때 사용한 클라이언트 TCP 커넥션의 시퀀스 넘버, 백엔드 TCP 커넥션의 시퀀스 넘버 및 프레임 길이 중 적어도 하나의 정보를 패킷으로 상기 호스트 스택에 전달하는, 로드 밸런서의 리퀘스트 처리 이양방법.

6

호스트 스택 및 NIC 스택을 포함하는 L7 로드 밸런서 장치로서,상기 호스트 스택은 클라이언트 TCP 커넥션을 통해 하나의 클라이언트로부터 수신한 복수의 유저 리퀘스트에 기초하여 서로 상이한 복수의 백엔드 서버를 선택하고, 포워딩 룰(forwarding rule)을 NIC 스택으로 인스톨하고, 상기 복수의 유저 리퀘스트를 서로 상이한 상기 복수의 백엔드 서버로 전달하며,상기 NIC 스택은 상기 백엔드 서버로부터 응답을 수신한 뒤 클라이언트 TCP 커넥션으로 전달하고, 사용된 TCP 시퀀스 넘버의 매핑 정보를 상기 호스트 스택으로 전달하고,상기 포워딩 룰은 클라이언트/백엔드 서버의 4-튜플(tuple) 정보, TCP sequence/ack number 및 HTTP/2 스트림 식별자 매핑 정보를 포함하고,상기 NIC 스택은 서로 상이한 상기 복수의 백엔드 서버로부터 수신한 응답들을 HTTP/2 프레임 단위로 인터리빙(interleaving)하여 상기 하나의 클라이언트 TCP 커넥션으로 전달하는, L7 로드 밸런서 장치.

7

제6항에 있어서,상기 NIC 스택은 HTTP/2 프레임 헤더에 있는 길이 필드의 정보에 기초하여 서로 상이한 복수의 백엔드 서버로부터 수신한 응답들을 상기 하나의 클라이언트 TCP 커넥션으로 전달하는, L7 로드 밸런서 장치.

8

제7항에 있어서,상기 NIC 스택은 HTTP/2 프레임 헤더에 있는 길이 필드의 정보를 이용하여 다음 프레임이 사용할 TCP 시퀀스 넘버를 미리 예측하는, L7 로드 밸런서 장치.

9

제6항에 있어서,상기 호스트 스택은 상기 클라이언트 TCP 커넥션을 통해 수신한 ACK 및 SACK 패킷을 번역하여 상기 백엔드 서버로 ACK를 전송하는, L7 로드 밸런서 장치.

10

제9항에 있어서,상기 NIC 스택은 상기 백엔드 서버에서 수신한 HTTP/2 프레임을 전달할 때 사용한 클라이언트 TCP 커넥션의 시퀀스 넘버, 백엔드 TCP 커넥션의 시퀀스 넘버 및 프레임 길이 중 적어도 하나의 정보를 패킷으로 상기 호스트 스택에 전달하는, L7 로드 밸런서 장치.

11

제1항 내지 제5항 중 어느 한 항에 기재된 로드 밸런서의 리퀘스트 처리 이양방법을 수행하기 위한 프로그램을 기록한 컴퓨터 판독가능한 기록매체.

12

제1항 내지 제5항 중 어느 한 항에 기재된 로드 밸런서의 리퀘스트 처리 이양방법을 컴퓨터에서 실행시키기 위하여 기록매체에 저장된 컴퓨터 프로그램.

13

삭제

14

삭제

15

삭제

16

삭제